{
  "id": "c82473b2-47ab-4f26-a1aa-72a3a561bcf6",
  "issuer": "mahindra",
  "journey": "ntb",
  "startedAt": "2026-06-23T11:11:52.134Z",
  "endedAt": "2026-06-23T11:14:06.241Z",
  "durationMs": 46517,
  "summary": {
    "total": 565,
    "passed": 562,
    "failed": 1,
    "skipped": 2,
    "running": 0,
    "pending": 0,
    "durationMs": 46517
  },
  "steps": [
    {
      "stepId": "step-01-login",
      "stepName": "Login",
      "cases": [
        {
          "caseId": "MAH_LOGIN_001",
          "caseName": "Send OTP to Mahindra 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:13:19.576Z",
          "endedAt": "2026-06-23T11:13:19.671Z",
          "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:13:19 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": "2930",
            "x-ratelimit-reset": "11",
            "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 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": "MAH_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:13:19.671Z",
          "endedAt": "2026-06-23T11:13:19.782Z",
          "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:13:19 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": "2929",
            "x-ratelimit-reset": "11",
            "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": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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:13:19.782Z",
          "endedAt": "2026-06-23T11:13:19.895Z",
          "durationMs": 113,
          "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:13:19 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": "2928",
            "x-ratelimit-reset": "11",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "110",
            "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": "MAH_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:13:19.895Z",
          "endedAt": "2026-06-23T11:13:20.002Z",
          "durationMs": 107,
          "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:13:19 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": "2927",
            "x-ratelimit-reset": "11",
            "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 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": "MAH_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:13:20.002Z",
          "endedAt": "2026-06-23T11:13:20.105Z",
          "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:13:20 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": "2926",
            "x-ratelimit-reset": "11",
            "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": "Payload object should exist",
              "passed": true,
              "message": "payload present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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:13:20.105Z",
          "endedAt": "2026-06-23T11:13:20.196Z",
          "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:13:20 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": "2925",
            "x-ratelimit-reset": "10",
            "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": "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": "MAH_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:13:20.197Z",
          "endedAt": "2026-06-23T11:13:20.331Z",
          "durationMs": 134,
          "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:13:20 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": "2924",
            "x-ratelimit-reset": "10",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "81",
            "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": "MAH_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:13:20.331Z",
          "endedAt": "2026-06-23T11:13:20.429Z",
          "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:13:20 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": "2923",
            "x-ratelimit-reset": "10",
            "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": "Success response schema should match contract",
              "passed": true,
              "message": "Success schema valid"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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:13:20.429Z",
          "endedAt": "2026-06-23T11:13:20.536Z",
          "durationMs": 107,
          "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:13:20 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": "2922",
            "x-ratelimit-reset": "10",
            "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=107ms"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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:13:20.536Z",
          "endedAt": "2026-06-23T11:13:20.623Z",
          "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:13:20 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": "2921",
            "x-ratelimit-reset": "10",
            "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": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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:13:20.623Z",
          "endedAt": "2026-06-23T11:13:20.716Z",
          "durationMs": 93,
          "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:13:20 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": "2920",
            "x-ratelimit-reset": "10",
            "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": "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": "MAH_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:13:20.716Z",
          "endedAt": "2026-06-23T11:13:20.831Z",
          "durationMs": 115,
          "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:13:20 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": "2919",
            "x-ratelimit-reset": "10",
            "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": "MAH_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:13:20.831Z",
          "endedAt": "2026-06-23T11:13:20.844Z",
          "durationMs": 13,
          "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:13:20 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": "2918",
            "x-ratelimit-reset": "10",
            "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)"
              },
              {
                "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": "MAH_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:13:20.844Z",
          "endedAt": "2026-06-23T11:13:21.031Z",
          "durationMs": 187,
          "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:13:20 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": "2917",
            "x-ratelimit-reset": "10",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "20",
            "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": "MAH_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:13:21.031Z",
          "endedAt": "2026-06-23T11:13:21.131Z",
          "durationMs": 100,
          "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:13:21 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": "2916",
            "x-ratelimit-reset": "10",
            "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": "MAH_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:13:21.131Z",
          "endedAt": "2026-06-23T11:13:21.231Z",
          "durationMs": 100,
          "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:13:21 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": "2915",
            "x-ratelimit-reset": "9",
            "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\":\"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": "MAH_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:13:21.231Z",
          "endedAt": "2026-06-23T11:13:21.238Z",
          "durationMs": 7,
          "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:13:21 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": "2914",
            "x-ratelimit-reset": "9",
            "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\":\"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": "MAH_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:13:21.238Z",
          "endedAt": "2026-06-23T11:13:21.331Z",
          "durationMs": 93,
          "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:13:21 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": "2913",
            "x-ratelimit-reset": "9",
            "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\":\"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": "MAH_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:13:21.331Z",
          "endedAt": "2026-06-23T11:13:21.339Z",
          "durationMs": 8,
          "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:13:21 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": "2912",
            "x-ratelimit-reset": "9",
            "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": "MAH_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:13:21.339Z",
          "endedAt": "2026-06-23T11:13:21.349Z",
          "durationMs": 10,
          "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:13:21 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": "2911",
            "x-ratelimit-reset": "9",
            "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\":\"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": "MAH_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:13:21.350Z",
          "endedAt": "2026-06-23T11:13:21.357Z",
          "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:13:21 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": "2910",
            "x-ratelimit-reset": "9",
            "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": "MAH_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:13:21.357Z",
          "endedAt": "2026-06-23T11:13:21.364Z",
          "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:13:21 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": "2909",
            "x-ratelimit-reset": "9",
            "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": "MAH_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:13:21.364Z",
          "endedAt": "2026-06-23T11:13:21.431Z",
          "durationMs": 67,
          "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:13:21 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": "2908",
            "x-ratelimit-reset": "9",
            "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\":\"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": "MAH_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:13:21.431Z",
          "endedAt": "2026-06-23T11:13:21.441Z",
          "durationMs": 10,
          "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:13:21 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": "2907",
            "x-ratelimit-reset": "9",
            "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\":\"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": "MAH_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:13:21.441Z",
          "endedAt": "2026-06-23T11:13:21.449Z",
          "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:13:21 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": "2906",
            "x-ratelimit-reset": "9",
            "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\":\"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": "MAH_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:13:21.449Z",
          "endedAt": "2026-06-23T11:13:21.458Z",
          "durationMs": 9,
          "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:13:21 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": "2905",
            "x-ratelimit-reset": "9",
            "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": "MAH_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:13:21.458Z",
          "endedAt": "2026-06-23T11:13:21.531Z",
          "durationMs": 73,
          "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:13:21 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": "2904",
            "x-ratelimit-reset": "9",
            "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'\\'' 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": "MAH_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:13:21.531Z",
          "endedAt": "2026-06-23T11:13:21.538Z",
          "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:13:21 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": "2903",
            "x-ratelimit-reset": "9",
            "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": "MAH_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:13:21.538Z",
          "endedAt": "2026-06-23T11:13:21.546Z",
          "durationMs": 8,
          "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:13:21 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": "2902",
            "x-ratelimit-reset": "9",
            "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\":\"<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": "MAH_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:13:21.546Z",
          "endedAt": "2026-06-23T11:13:21.562Z",
          "durationMs": 16,
          "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:13:21 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": "2901",
            "x-ratelimit-reset": "9",
            "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 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": "MAH_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:13:21.562Z",
          "endedAt": "2026-06-23T11:13:21.637Z",
          "durationMs": 75,
          "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:13:21 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": "2900",
            "x-ratelimit-reset": "9",
            "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\":\"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": "MAH_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:13:21.637Z",
          "endedAt": "2026-06-23T11:13:21.731Z",
          "durationMs": 94,
          "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:13:21 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": "MAH_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:13:21.731Z",
          "endedAt": "2026-06-23T11:13:21.745Z",
          "durationMs": 14,
          "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:13:21 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": "2899",
            "x-ratelimit-reset": "9",
            "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'",
          "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": "MAH_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:13:21.745Z",
          "endedAt": "2026-06-23T11:13:21.831Z",
          "durationMs": 86,
          "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:13:21 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": "2898",
            "x-ratelimit-reset": "9",
            "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  -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": "MAH_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:13:21.831Z",
          "endedAt": "2026-06-23T11:13:21.847Z",
          "durationMs": 16,
          "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:13:21 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": "2897",
            "x-ratelimit-reset": "9",
            "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 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": "MAH_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:13:21.847Z",
          "endedAt": "2026-06-23T11:13:21.931Z",
          "durationMs": 84,
          "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:13:21 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": "2896",
            "x-ratelimit-reset": "9",
            "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": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "MAH_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:13:21.931Z",
          "endedAt": "2026-06-23T11:13:21.939Z",
          "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:13:21 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": "2895",
            "x-ratelimit-reset": "9",
            "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": "MAH_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:13:21.939Z",
          "endedAt": "2026-06-23T11:13:21.947Z",
          "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:13:21 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": "2894",
            "x-ratelimit-reset": "9",
            "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)"
              }
            ]
          },
          "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": "MAH_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:13:21.947Z",
          "endedAt": "2026-06-23T11:13:21.955Z",
          "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:13:21 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": "2893",
            "x-ratelimit-reset": "9",
            "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": "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": "MAH_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:13:21.955Z",
          "endedAt": "2026-06-23T11:13:22.031Z",
          "durationMs": 76,
          "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:13:21 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": "2892",
            "x-ratelimit-reset": "9",
            "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": "Error array should exist",
              "passed": true,
              "message": "error array present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "MAH_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:13:22.031Z",
          "endedAt": "2026-06-23T11:13:22.039Z",
          "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:13:22 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": "2891",
            "x-ratelimit-reset": "9",
            "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": "Response should contain FIXUSER1208",
              "passed": true,
              "message": "FIXUSER1208 present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [
            "FIXUSER1208"
          ],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "MAH_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:13:22.039Z",
          "endedAt": "2026-06-23T11:13:22.051Z",
          "durationMs": 12,
          "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:13:22 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": "2890",
            "x-ratelimit-reset": "9",
            "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": "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": "MAH_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:13:22.051Z",
          "endedAt": "2026-06-23T11:13:22.065Z",
          "durationMs": 14,
          "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:13:22 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": "2889",
            "x-ratelimit-reset": "9",
            "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": "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": "MAH_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:13:22.065Z",
          "endedAt": "2026-06-23T11:13:22.131Z",
          "durationMs": 66,
          "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:13:22 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": "2888",
            "x-ratelimit-reset": "8",
            "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": "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": "MAH_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:13:22.131Z",
          "endedAt": "2026-06-23T11:13:22.139Z",
          "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:13:22 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": "2887",
            "x-ratelimit-reset": "8",
            "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": "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": "MAH_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:13:22.139Z",
          "endedAt": "2026-06-23T11:13:22.254Z",
          "durationMs": 115,
          "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:13:22 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": "2886",
            "x-ratelimit-reset": "8",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "112",
            "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": "MAH_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:13:22.254Z",
          "endedAt": "2026-06-23T11:13:22.366Z",
          "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:13:22 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": "2885",
            "x-ratelimit-reset": "8",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "109",
            "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": "MAH_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:13:22.366Z",
          "endedAt": "2026-06-23T11:13:22.461Z",
          "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:13:22 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": "2884",
            "x-ratelimit-reset": "8",
            "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 success flag should be 1",
              "passed": true,
              "message": "success=1"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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:13:22.462Z",
          "endedAt": "2026-06-23T11:13:22.909Z",
          "durationMs": 447,
          "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:13:22 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": "2880",
            "x-ratelimit-reset": "8",
            "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": "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 112ms across 4 requests"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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:13:22.909Z",
          "endedAt": "2026-06-23T11:13:23.419Z",
          "durationMs": 510,
          "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:13:23 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": "2875",
            "x-ratelimit-reset": "7",
            "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": "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": "MAH_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:13:23.419Z",
          "endedAt": "2026-06-23T11:13:23.704Z",
          "durationMs": 285,
          "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:13:23 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": "2872",
            "x-ratelimit-reset": "7",
            "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": "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": "MAH_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:13:23.704Z",
          "endedAt": "2026-06-23T11:13:23.805Z",
          "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:13:23 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": "2871",
            "x-ratelimit-reset": "7",
            "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": "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": "MAH_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:13:23.805Z",
          "endedAt": "2026-06-23T11:13:23.914Z",
          "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:13:23 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": "2870",
            "x-ratelimit-reset": "7",
            "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 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": "MAH_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:13:23.914Z",
          "endedAt": "2026-06-23T11:13:23.997Z",
          "durationMs": 83,
          "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:13:23 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": "2869",
            "x-ratelimit-reset": "7",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "80",
            "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": "MAH_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:13:23.997Z",
          "endedAt": "2026-06-23T11:13:24.105Z",
          "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:13:24 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": "2868",
            "x-ratelimit-reset": "7",
            "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": "MAH_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:13:24.105Z",
          "endedAt": "2026-06-23T11:13:24.195Z",
          "durationMs": 90,
          "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:13:24 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": "2867",
            "x-ratelimit-reset": "6",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "87",
            "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": "MAH_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:13:24.196Z",
          "endedAt": "2026-06-23T11:13:24.293Z",
          "durationMs": 97,
          "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:13:24 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": "2866",
            "x-ratelimit-reset": "6",
            "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": "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": "MAH_LOGIN_002",
          "caseName": "Verify OTP and extract auth tokens (Mahindra 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:13:24.293Z",
          "endedAt": "2026-06-23T11:13:24.343Z",
          "durationMs": 50,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629",
            "otp": "123456",
            "partner_url": "https://tradingquants.dev.fixerra.in",
            "consent": false,
            "issuer_code": "MAHINDRA"
          },
          "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:13:24 GMT",
            "etag": "W/\"3ea-c8xrzRsJptnGflcSdQpWveRMT5M\"",
            "referrer-policy": "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": "6",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "47",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "User already exists.",
            "payload": {
              "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E",
              "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJyZWZyZXNoIiwiZl91c2VyX2lkIjoiNGU2OGMxZTQtYzQzYy00OGM1LWIyYTktMDhkN2Q2ZTQ5NTdlIiwiZl9wYXJ0bmVyX3VzZXJfaWQiOiJiOTA3NjdhNS01OWEzLTRlZTAtOWZiYy0yZGEzNjI4NWY0N2MiLCJmX3BhcnRuZXJfaWQiOiI2OGJkY2Y4OS04NDY0LTRmODUtODk4Ny1hYTI4OTA4ZTIxYWQiLCJwYXJ0bmVyX3VybCI6Imh0dHBzOi8vdHJhZGluZ3F1YW50cy5kZXYuZml4ZXJyYS5pbiIsImlhdCI6MTc4MjIxMzIwNCwiZXhwIjoxNzgyODE4MDA0fQ.UKct5Aas1ToA29_TOP9mBE4N9RY_SFPM_r3_dE2I5Gk"
            }
          },
          "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\":\"MAHINDRA\"}'",
          "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": "MAH_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:13:24.343Z",
          "endedAt": "2026-06-23T11:13:24.360Z",
          "durationMs": 17,
          "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:13:24 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": "2985",
            "x-ratelimit-reset": "6",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "14",
            "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": "MAH_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:13:24.360Z",
          "endedAt": "2026-06-23T11:13:24.369Z",
          "durationMs": 9,
          "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:13:24 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": "2984",
            "x-ratelimit-reset": "6",
            "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": "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": "MAH_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:13:24.369Z",
          "endedAt": "2026-06-23T11:13:24.377Z",
          "durationMs": 8,
          "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:13:24 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": "2983",
            "x-ratelimit-reset": "6",
            "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": "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": "MAH_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:13:24.377Z",
          "endedAt": "2026-06-23T11:13:24.434Z",
          "durationMs": 57,
          "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:13:24 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": "2982",
            "x-ratelimit-reset": "6",
            "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": "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": "MAH_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:13:24.434Z",
          "endedAt": "2026-06-23T11:13:24.440Z",
          "durationMs": 6,
          "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:13:24 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": "2981",
            "x-ratelimit-reset": "6",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "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": "MAH_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:13:24.440Z",
          "endedAt": "2026-06-23T11:13:24.460Z",
          "durationMs": 20,
          "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:13:24 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": "2980",
            "x-ratelimit-reset": "6",
            "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/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": "MAH_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:13:24.460Z",
          "endedAt": "2026-06-23T11:13:24.526Z",
          "durationMs": 66,
          "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:13:24 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": "2979",
            "x-ratelimit-reset": "6",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "63",
            "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": "MAH_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:13:24.526Z",
          "endedAt": "2026-06-23T11:13:24.543Z",
          "durationMs": 17,
          "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:13:24 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": "2978",
            "x-ratelimit-reset": "6",
            "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": "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": 4963
      }
    },
    {
      "stepId": "step-02-fd-detail",
      "stepName": "FD Detail",
      "cases": [
        {
          "caseId": "MAH_FD_DETAIL_001",
          "caseName": "Get Mahindra Finance issuer detail",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/detail/57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:24.543Z",
          "endedAt": "2026-06-23T11:13:24.633Z",
          "durationMs": 90,
          "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": "89038",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:24 GMT",
            "etag": "W/\"15bce-ZMONtx9sDmORz3MiEC3RnHL6ZEs\"",
            "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": "18",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "issuerData": {
                "id": 3,
                "name": "Mahindra Finance Ltd",
                "description": "Mahindra Finance Ltd. has diversified into a financial services provider and is registered with the RBI as an asset finance, deposit-taking NBFC. It boasts a vast network of 1,300+ offices, reaching more than 380,000 villages, and manages assets exceeding ₹ 99,565 Crores.",
                "f_code": "MAH",
                "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                "url": "https://images.dev.fixerra.in/logos/mahindra/Mahindra.png",
                "sub_logo": "https://images.dev.fixerra.in/logos/mahindra/Mahindra_Logo.png",
                "compounding_freq": "Yearly",
                "issuer_type": "NBFC",
                "crisil_rating": "AAA/Stable",
                "icra_rating": "",
                "trusted_users": "1CR+ Since 1991",
                "hero_tag": null,
                "subtag_1": "AAA RATED BY CRISIL",
                "subtag_2": "Compounds Yearly",
                "is_range_required": true,
                "bank_disabled_at": null,
                "faq": null,
                "active_issuer_rank": 3,
                "baseline_issuer_rank": null,
                "deleted_at": null,
                "upcoming_bank": false,
                "upcoming_bank_date": null,
                "utm_url": null,
                "renewal_options": {
                  "Principal": true,
                  "No Renewal": true,
                  "Total Amount": true
                },
                "enable_our_pg": false,
                "enable_easy_split": false,
                "pg_setting": null,
                "is_nominee_required": false,
                "bank_type": "",
                "is_issuer_live": true,
                "women_benefit": 0,
                "senior_citizen_benefit": 0.25,
                "minTenure": 365,
                "maxTenure": 1825
              },
              "vehiclesPayload": [
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "b7a1931b-e88d-4251-a822-3d81329c88dd",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": 11,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.76",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "0e47b184-a51c-4d20-a4c0-7168878c0762",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.12",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "450fab26-9739-48f6-93dd-3e673e3113a4",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.76",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "682f3233-7644-4f6c-8981-a149ab27661f",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.12",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "a73de787-4cf7-4422-b961-e97f0a44aed8",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "df8ca871-e506-4922-b638-7c1c1562e331",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "1580393e-b00c-4f1c-89b4-e7d2695a1a63",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.76",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "549818ac-ddbf-419f-8095-898929e0aa4d",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.12",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "9e89e67d-d18d-440c-950a-473e2b0f6598",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "35228b39-fe37-4b30-9679-50000e7280d7",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.53",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "74644831-f344-4230-932b-dd51bf8f0dbf",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "d7a1dd7a-d7c6-465a-8b6d-27720e703646",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "68f83d87-ea51-41ae-8479-c949178ebee1",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "0697711b-0fd7-4a02-93a9-87ea214b0c21",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "2d87a875-22f7-499d-ad0a-f70bf7c229c5",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.53",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "4e2d06f8-c545-42b1-9d10-3bf786b33616",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.53",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "4e2bdc70-e643-47bd-9c1b-7ac78885466b",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.65",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.65",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "41575eae-6cbb-48c7-8fa6-a3de81e75de4",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.65",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.65",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "ea2189d1-f5ba-4c1a-9303-1697351f175e",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.60",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "966781d1-110b-407a-8775-16790e1e2b53",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.60",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "404abfc4-43b6-4917-80d4-ef63c8159322",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.60",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "3867f5af-2b39-4901-9eb8-08ebb6ab5f27",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.60",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "7316c78b-a8ca-4123-980d-901c8ff194e1",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.55",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "c0a581cc-b35b-4360-99cd-f8f19b48011e",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.55",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "4ee7e8c5-06fe-4431-af1d-0590f7a38b09",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.55",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "0e332dac-d47e-4318-99da-e5af7977375e",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.55",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "97719d8c-a627-414c-af66-ab0e39f3332c",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.50",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "481a5435-4b81-46ea-98fb-1ef004ea0d1f",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.50",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "43efbd46-dc76-4ee0-a9c8-bd34bcbc0e19",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": 4,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.32",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "f9f1b229-0a57-46c2-b05d-287733d2b6f0",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.65",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "fa01a749-dc91-4f8c-9a65-c6cd3fbceeb5",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.32",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "8b798fe2-5112-4cbe-8145-b4dd4c502310",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.65",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "ed7f8c30-0de3-4be9-9bc9-6548d8b56573",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.45",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "e6292d44-2e2e-4682-868f-83d85fe77c5b",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.45",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "e60c8270-f55d-416b-9731-a08100406304",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.32",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "cd1448ed-af12-45d4-9ddc-338b135f30d4",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.65",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "c0bd536e-d132-4459-898d-99c88f6a8703",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.96",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "3465f79a-e12b-4482-8023-33b12d748111",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.11",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "fee564f6-3c4c-4f30-9b92-72068cd069de",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.96",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "f87b87bd-875f-48f4-9188-02b0785c5765",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "5fe90e93-3a37-4648-85b8-f5b6d20c98f0",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "62cf4339-f8ca-4981-8b12-678b555c82bc",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.96",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "eba957cb-d5a4-47f6-93ca-b87971651796",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.11",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "ce242bff-bb4c-4478-a706-0fee710fdccc",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.11",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "8b2b4bca-8e52-4975-bb96-6d22c2dcb5ea",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.30",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "cbf112ca-6d4a-4247-a22e-2bd68dd2ca8a",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.30",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "05f7fe27-724c-478d-8dea-7af0c9220517",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.25",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "20e622d3-1d66-4f34-ba1d-b4975cfdeaec",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.25",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "eb7f865b-a1ed-47a9-bbed-e807138b098e",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.25",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "66ffbf08-1db9-4a2d-97fb-c44b04ed0575",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.25",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "57f6d2fd-753c-4207-b4e5-a2164a51166b",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.20",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "895acfcc-bd13-42e6-940a-1ec5b01b83a9",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.20",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "6c54c77c-9dfc-4811-8bfa-803d4d36c33a",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.20",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "a790e185-eb6b-4d62-a4f3-77af33f97201",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.20",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "eb8ea117-01fd-445f-af0a-67b1b5554008",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.15",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.15",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "61119961-10ad-45c4-8762-0eb56fc40ad5",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.15",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.15",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "8ed006df-c502-4e3c-9d2c-0e80366deb7f",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "eafd5fd9-a838-40c0-be23-2e1ace0db4ea",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.49",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "7c29f531-5685-42a0-8769-2a66b48a8fbd",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "46a33f27-e897-4595-9d3e-76d891dbde48",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "a1d0c3ec-be5c-49b5-9fe1-fc288d61c39c",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "a5e98ef1-7e81-4f1b-ac77-9325c8ec26ab",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "3dc073ef-c7d0-4dfe-a941-af11265effdf",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.49",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "57bf94bd-0180-4f1c-94c3-75ea57a8abbf",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.49",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "6f48159a-52be-4ba6-a45d-b0602f92094b",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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": "7.00",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "ec2bbfdb-d9ee-4260-baa6-58e8334c6aa9",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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": "7.00",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "a268bc58-4fa1-4917-842b-a4f57d45d617",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "08622691-71f1-4468-9179-8b16c225da97",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "277ae1d5-825d-4151-ba35-735603f52864",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.90",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.90",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "abb24a1f-7657-4c98-b0a2-8f70333ec658",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.90",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.90",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "18272491-9713-4506-bb1b-38c1a37fc406",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.85",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "346920e7-512e-463b-aa92-8d59d899045d",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.21",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "95304a59-3724-4688-8778-b4d6c4e53965",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.97",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "ac1e965e-edf4-43b3-9af7-6e0c1fba1634",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.08",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "771f3990-819f-4aff-949e-ec1b3a8a12b4",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.85",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "fc8c06ae-3cc1-4704-a109-a15cd1580923",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.85",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "8aded7a7-e616-4f8e-87f7-0a17344dc6f1",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.86",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "19b6028b-5b0c-4006-9cf2-63a1fc00a5eb",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.85",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "01051cbf-31c2-4d1c-b5c6-bbb7a22d1427",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.85",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "22014848-d53a-41f2-a4f0-93866401bcfb",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.08",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "be46e091-e5df-42ff-abb0-038b9aba3778",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.85",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "5167cab4-28a7-4d7d-8a5d-9bedebec646b",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.21",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "4f40df19-b9c3-45ec-ae1a-5a60e52f1fb2",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.97",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "56403167-af6c-4001-a0bf-685c8eee9e8e",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.21",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "59f65ddc-520b-477e-8f8c-c28e2ba944e4",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.97",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "6364398b-c38a-4555-aaa8-0404ac0514d5",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.08",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "d1c86cd8-81fd-4947-b7a0-1502486aeb76",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.75",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "3564039c-a276-4eb7-a7d1-34c903dd39c9",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.75",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "5fd84399-e906-41a1-bf67-28ed5b62c18d",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.76",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "ab9a1f84-2287-499c-93e4-bd1374a26a5e",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.75",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "78d5aa6e-2777-446d-8818-b9464ea05b0a",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.70",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.70",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "3bc02d61-3b22-401b-988c-abebe8ad5900",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.70",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.70",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "3b3e2ac3-697c-4a67-a61d-9d6aa04f0920",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.70",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.70",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "08326044-4d44-4a9a-8b00-bacd31b30674",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.70",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.71",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "85912e78-7a8d-4dc9-891f-6fc1382b98c8",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.65",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.65",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "ded8ddaf-ac2e-4827-a640-314aab84d47e",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.65",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.65",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "e32f3ca5-02ba-4cad-a156-8eb34673f268",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.65",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.65",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "46266dc0-72e2-4fb3-be6e-7cb1677bdd78",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.65",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.66",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "a925ff1b-2b8a-49f4-82a8-24a2e0047de8",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.71",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "05dda2c9-4039-445c-867c-5587cba71791",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.61",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "8f52adf2-c4fb-46da-8c5a-14f7f1d4a010",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "dd9d5f07-135f-4753-b6f5-9024001e237e",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "7974695c-9625-44e4-a7d0-855a56eab1d0",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "10712939-b8d7-4dad-9f0b-6a8b1b84c899",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.71",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "0eb69db0-acfc-4554-9036-92a1c0732636",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.71",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "82c2cd2f-944b-4166-b28e-63aac00bef9e",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.50",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.50",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "b36dbbe0-d5bc-42c0-b69a-21725568f432",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.50",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.51",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "7cec3cfe-6cd9-4c59-a2f5-5bdb1f6f8aca",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.45",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "d3a1be9a-0517-43bd-a8ac-11f26e251032",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.46",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "0bebf383-b67b-4097-b2b2-15c67bdbf40b",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.40",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "5d2f688e-ad35-4d96-bca5-097e8ea8a405",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.41",
                  "senior_citizen_benefit": 0.2
                }
              ],
              "highlights": [
                {
                  "title": "All investments are regulated by RBI",
                  "url": "https://images.dev.fixerra.in/illustrations/RBI@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.25% extra",
                  "url": "https://images.dev.fixerra.in/illustrations/Senior@3x.png"
                }
              ],
              "about": [
                {
                  "key": "Founded",
                  "value": "1991"
                },
                {
                  "key": "Customers Served",
                  "value": "1 Cr+"
                },
                {
                  "key": "Number of Branches",
                  "value": "1300+"
                },
                {
                  "key": "Reach",
                  "value": "380,000+ Villages"
                },
                {
                  "key": "CRISIL Rating",
                  "value": "AAA+ Stable"
                },
                {
                  "key": "Assets Under Management",
                  "value": "₹99,565 Cr+"
                }
              ],
              "distinctMinTenureValues": [
                {
                  "value": 1095
                },
                {
                  "value": 1277
                },
                {
                  "value": 1460
                },
                {
                  "value": 1825
                },
                {
                  "value": 365
                },
                {
                  "value": 547
                },
                {
                  "value": 730
                },
                {
                  "value": 912
                }
              ],
              "interestPayouts": [
                "Maturity",
                "Yearly",
                "HalfYearly",
                "Quarterly",
                "Monthly"
              ]
            }
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/detail/57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16' \\\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=MAH, f_issuer_id=57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16)"
            }
          ],
          "docsFile": "master-services/API_QA_GET_DETAIL_ISSUER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_FD_DETAIL_002",
          "caseName": "Get Mahindra maturity quote and capture investment vehicle id",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:24.633Z",
          "endedAt": "2026-06-23T11:13:24.667Z",
          "durationMs": 34,
          "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": "446",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:24 GMT",
            "etag": "W/\"1be-Rog+aJi6SpyNysBc8BwrqB/o+z8\"",
            "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": "30",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "dd9d5f07-135f-4753-b6f5-9024001e237e",
            "average_yield": "6.60",
            "product_min_investment": 10000,
            "product_max_investment": 9999999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 26650
                  }
                ]
              }
            ],
            "maturity_amount": 26650
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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 (dd9d5f07-135f-4753-b6f5-9024001e237e)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_MAT_AUTH_001",
          "caseName": "MAH maturity should reject missing auth",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:24.667Z",
          "endedAt": "2026-06-23T11:13:24.831Z",
          "durationMs": 164,
          "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:13:24 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/MAH?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": "MAH_MAT_FREQ001",
          "caseName": "MAH Maturity payout success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:24.831Z",
          "endedAt": "2026-06-23T11:13:24.866Z",
          "durationMs": 35,
          "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": "446",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:24 GMT",
            "etag": "W/\"1be-8QUSrGDTo2PLzwOl0nFlIz5FrAg\"",
            "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": "31",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "dd9d5f07-135f-4753-b6f5-9024001e237e",
            "average_yield": "6.60",
            "product_min_investment": 10000,
            "product_max_investment": 9999999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 10660
                  }
                ]
              }
            ],
            "maturity_amount": 10660
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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": "MAH_MAT_FREQ002",
          "caseName": "MAH Monthly payout success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:24.866Z",
          "endedAt": "2026-06-23T11:13:24.908Z",
          "durationMs": 42,
          "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": "941",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:24 GMT",
            "etag": "W/\"3ad-fGIYrBBl1V/4FNxudIHhu7rz1h0\"",
            "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": "37",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.40",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "0bebf383-b67b-4097-b2b2-15c67bdbf40b",
            "average_yield": "6.40",
            "product_min_investment": 50000,
            "product_max_investment": 50000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 61.37
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 266.67
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 205.48
                  }
                ]
              }
            ],
            "payout_amount": 266,
            "total_payout": 3200
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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": "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": "MAH_MAT_FREQ003",
          "caseName": "MAH Quarterly payout success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:24.908Z",
          "endedAt": "2026-06-23T11:13:24.934Z",
          "durationMs": 26,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "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": "639",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:24 GMT",
            "etag": "W/\"27f-ecnnA0kQw7t/pUOkxeoq+mv+LCo\"",
            "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": {
            "product_interest": "6.45",
            "payout_frequency": "Quarterly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "7cec3cfe-6cd9-4c59-a2f5-5bdb1f6f8aca",
            "average_yield": "6.45",
            "product_min_investment": 50000,
            "product_max_investment": 50000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 61.85
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 806.25
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 806.25
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 806.25
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 744.95
                  }
                ]
              }
            ],
            "payout_amount": 806,
            "total_payout": 3225
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?tenure=365&investment_amount=50000&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": "MAH_MAT_FREQ004",
          "caseName": "MAH HalfYearly payout success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:24.935Z",
          "endedAt": "2026-06-23T11:13:24.961Z",
          "durationMs": 26,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "25000",
            "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": "563",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:24 GMT",
            "etag": "W/\"233-fUwaeI9NKxaxP9OCCaI/mUlGzC8\"",
            "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": "24",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.50",
            "payout_frequency": "HalfYearly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "82c2cd2f-944b-4166-b28e-63aac00bef9e",
            "average_yield": "6.50",
            "product_min_investment": 25000,
            "product_max_investment": 50000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-09-30",
                    "amount": 440.75
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 812.5
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 372.3
                  }
                ]
              }
            ],
            "payout_amount": 812,
            "total_payout": 1625
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?tenure=365&investment_amount=25000&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": "MAH_MAT_FREQ005",
          "caseName": "MAH Yearly payout success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:24.961Z",
          "endedAt": "2026-06-23T11:13:24.988Z",
          "durationMs": 27,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "25000",
            "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": "502",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:24 GMT",
            "etag": "W/\"1f6-Nx+mbwk5/hjdKrxL0L+N20ZoIc4\"",
            "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": "24",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Yearly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "8f52adf2-c4fb-46da-8c5a-14f7f1d4a010",
            "average_yield": "6.60",
            "product_min_investment": 25000,
            "product_max_investment": 50000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 1270.27
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 380.86
                  }
                ]
              }
            ],
            "payout_amount": 1650,
            "total_payout": 1650
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?tenure=365&investment_amount=25000&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": "MAH_MAT_BOUND_001",
          "caseName": "MAH min amount boundary success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:24.988Z",
          "endedAt": "2026-06-23T11:13:25.039Z",
          "durationMs": 51,
          "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": "440",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:25 GMT",
            "etag": "W/\"1b8-pQkYxCsMn2FWA2ldXhkbZgqtVPU\"",
            "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": "48",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
            "average_yield": "6.60",
            "product_min_investment": 5000,
            "product_max_investment": 9999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5330
                  }
                ]
              }
            ],
            "maturity_amount": 5330
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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": "MAH_MAT_BOUND_002",
          "caseName": "MAH max amount boundary success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:25.039Z",
          "endedAt": "2026-06-23T11:13:25.087Z",
          "durationMs": 48,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "1825",
            "investment_amount": "50000000",
            "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": "464",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:25 GMT",
            "etag": "W/\"1d0-4lVrQi3gVEwIAKTJNlAH9O7GtR8\"",
            "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": "44",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "7.45",
            "payout_frequency": "Maturity",
            "maturity_date": "2031-06-22",
            "maturity_date_ist": "2031-06-22",
            "f_investment_vehicle_id": "f9f1b229-0a57-46c2-b05d-287733d2b6f0",
            "average_yield": "8.65",
            "product_min_investment": 10000000,
            "product_max_investment": 50000000,
            "product_min_tenure": 1825,
            "product_max_tenure": 1825,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2031,
                "data": [
                  {
                    "date": "2031-06-22",
                    "amount": 71614687.88
                  }
                ]
              }
            ],
            "maturity_amount": 71614687.88
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?tenure=1825&investment_amount=50000000&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": "MAH_MAT_BOUND_003",
          "caseName": "MAH amount below min should fail",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:25.087Z",
          "endedAt": "2026-06-23T11:13:25.101Z",
          "durationMs": 14,
          "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:13:25 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": "11",
            "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/MAH?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": "MAH_MAT_BOUND_004",
          "caseName": "MAH tenure below min should fail",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:25.101Z",
          "endedAt": "2026-06-23T11:13:25.149Z",
          "durationMs": 48,
          "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:13:25 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": "45",
            "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/MAH?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": "MAH_MAT_NBFC_001",
          "caseName": "MAH non-multiple amount should fail FIXMAS091",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:25.149Z",
          "endedAt": "2026-06-23T11:13:25.153Z",
          "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:13:25 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/MAH?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": "MAH_MAT_WOMEN_001",
          "caseName": "MAH women_citizen=true should fail",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:25.153Z",
          "endedAt": "2026-06-23T11:13:25.183Z",
          "durationMs": 30,
          "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": "537",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:25 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": "27",
            "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/MAH?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 Fixerra error with FIXMAS005",
              "passed": true,
              "message": "FIXMAS005 present"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXMAS005"
          ]
        },
        {
          "caseId": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:25.183Z",
          "endedAt": "2026-06-23T11:13:25.198Z",
          "durationMs": 15,
          "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": "440",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:25 GMT",
            "etag": "W/\"1b8-pQkYxCsMn2FWA2ldXhkbZgqtVPU\"",
            "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.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
            "average_yield": "6.60",
            "product_min_investment": 5000,
            "product_max_investment": 9999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5330
                  }
                ]
              }
            ],
            "maturity_amount": 5330
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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.60\""
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:25.198Z",
          "endedAt": "2026-06-23T11:13:25.212Z",
          "durationMs": 14,
          "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": "440",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:25 GMT",
            "etag": "W/\"1b8-pQkYxCsMn2FWA2ldXhkbZgqtVPU\"",
            "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.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
            "average_yield": "6.60",
            "product_min_investment": 5000,
            "product_max_investment": 9999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5330
                  }
                ]
              }
            ],
            "maturity_amount": 5330
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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.60\""
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:25.212Z",
          "endedAt": "2026-06-23T11:13:25.230Z",
          "durationMs": 18,
          "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": "440",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:25 GMT",
            "etag": "W/\"1b8-pQkYxCsMn2FWA2ldXhkbZgqtVPU\"",
            "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.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
            "average_yield": "6.60",
            "product_min_investment": 5000,
            "product_max_investment": 9999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5330
                  }
                ]
              }
            ],
            "maturity_amount": 5330
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:25.230Z",
          "endedAt": "2026-06-23T11:13:25.245Z",
          "durationMs": 15,
          "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": "440",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:25 GMT",
            "etag": "W/\"1b8-pQkYxCsMn2FWA2ldXhkbZgqtVPU\"",
            "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.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
            "average_yield": "6.60",
            "product_min_investment": 5000,
            "product_max_investment": 9999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5330
                  }
                ]
              }
            ],
            "maturity_amount": 5330
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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=\"29bd10ea-cbff-4894-b03b-1ccc64b1ce60\""
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:25.245Z",
          "endedAt": "2026-06-23T11:13:25.330Z",
          "durationMs": 85,
          "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": "440",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:25 GMT",
            "etag": "W/\"1b8-pQkYxCsMn2FWA2ldXhkbZgqtVPU\"",
            "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.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
            "average_yield": "6.60",
            "product_min_investment": 5000,
            "product_max_investment": 9999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5330
                  }
                ]
              }
            ],
            "maturity_amount": 5330
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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": "MAH_MAT_010",
          "caseName": "Verify maximum investment amount returned (50000000)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "failed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:25.331Z",
          "endedAt": "2026-06-23T11:13:25.342Z",
          "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": "440",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:25 GMT",
            "etag": "W/\"1b8-pQkYxCsMn2FWA2ldXhkbZgqtVPU\"",
            "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": "9",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
            "average_yield": "6.60",
            "product_min_investment": 5000,
            "product_max_investment": 9999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5330
                  }
                ]
              }
            ],
            "maturity_amount": 5330
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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 50000000",
              "passed": false,
              "message": "Expected 50000000, got 9999"
            }
          ],
          "failureReason": "Expected 50000000, got 9999",
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:25.343Z",
          "endedAt": "2026-06-23T11:13:25.430Z",
          "durationMs": 87,
          "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": "440",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:25 GMT",
            "etag": "W/\"1b8-pQkYxCsMn2FWA2ldXhkbZgqtVPU\"",
            "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.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
            "average_yield": "6.60",
            "product_min_investment": 5000,
            "product_max_investment": 9999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5330
                  }
                ]
              }
            ],
            "maturity_amount": 5330
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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=5330 > principal=5000"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:25.431Z",
          "endedAt": "2026-06-23T11:13:25.448Z",
          "durationMs": 17,
          "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": "941",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:25 GMT",
            "etag": "W/\"3ad-fGIYrBBl1V/4FNxudIHhu7rz1h0\"",
            "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.40",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "0bebf383-b67b-4097-b2b2-15c67bdbf40b",
            "average_yield": "6.40",
            "product_min_investment": 50000,
            "product_max_investment": 50000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 61.37
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 266.67
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 205.48
                  }
                ]
              }
            ],
            "payout_amount": 266,
            "total_payout": 3200
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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=3200"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:25.448Z",
          "endedAt": "2026-06-23T11:13:25.463Z",
          "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": "941",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:25 GMT",
            "etag": "W/\"3ad-fGIYrBBl1V/4FNxudIHhu7rz1h0\"",
            "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.40",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "0bebf383-b67b-4097-b2b2-15c67bdbf40b",
            "average_yield": "6.40",
            "product_min_investment": 50000,
            "product_max_investment": 50000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 61.37
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 266.67
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 205.48
                  }
                ]
              }
            ],
            "payout_amount": 266,
            "total_payout": 3200
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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=266"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:25.463Z",
          "endedAt": "2026-06-23T11:13:25.478Z",
          "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": "941",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:25 GMT",
            "etag": "W/\"3ad-fGIYrBBl1V/4FNxudIHhu7rz1h0\"",
            "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.40",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "0bebf383-b67b-4097-b2b2-15c67bdbf40b",
            "average_yield": "6.40",
            "product_min_investment": 50000,
            "product_max_investment": 50000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 61.37
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 266.67
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 205.48
                  }
                ]
              }
            ],
            "payout_amount": 266,
            "total_payout": 3200
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:25.478Z",
          "endedAt": "2026-06-23T11:13:25.530Z",
          "durationMs": 52,
          "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": "941",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:25 GMT",
            "etag": "W/\"3ad-fGIYrBBl1V/4FNxudIHhu7rz1h0\"",
            "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": "14",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.40",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "0bebf383-b67b-4097-b2b2-15c67bdbf40b",
            "average_yield": "6.40",
            "product_min_investment": 50000,
            "product_max_investment": 50000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 61.37
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 266.67
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 205.48
                  }
                ]
              }
            ],
            "payout_amount": 266,
            "total_payout": 3200
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:25.531Z",
          "endedAt": "2026-06-23T11:13:25.535Z",
          "durationMs": 4,
          "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:13:25 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/MAH?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": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:25.535Z",
          "endedAt": "2026-06-23T11:13:25.539Z",
          "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:13:25 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/MAH?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": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:25.539Z",
          "endedAt": "2026-06-23T11:13:25.551Z",
          "durationMs": 12,
          "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": "440",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:25 GMT",
            "etag": "W/\"1b8-pQkYxCsMn2FWA2ldXhkbZgqtVPU\"",
            "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.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
            "average_yield": "6.60",
            "product_min_investment": 5000,
            "product_max_investment": 9999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5330
                  }
                ]
              }
            ],
            "maturity_amount": 5330
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:25.551Z",
          "endedAt": "2026-06-23T11:13:25.931Z",
          "durationMs": 380,
          "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:13:25 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/MAH?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": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:25.931Z",
          "endedAt": "2026-06-23T11:13:26.030Z",
          "durationMs": 99,
          "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": "440",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:25 GMT",
            "etag": "W/\"1b8-pQkYxCsMn2FWA2ldXhkbZgqtVPU\"",
            "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": "9",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
            "average_yield": "6.60",
            "product_min_investment": 5000,
            "product_max_investment": 9999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5330
                  }
                ]
              }
            ],
            "maturity_amount": 5330
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:26.031Z",
          "endedAt": "2026-06-23T11:13:26.045Z",
          "durationMs": 14,
          "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": "440",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:26 GMT",
            "etag": "W/\"1b8-pQkYxCsMn2FWA2ldXhkbZgqtVPU\"",
            "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.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
            "average_yield": "6.60",
            "product_min_investment": 5000,
            "product_max_investment": 9999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5330
                  }
                ]
              }
            ],
            "maturity_amount": 5330
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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=14ms"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:26.045Z",
          "endedAt": "2026-06-23T11:13:26.056Z",
          "durationMs": 11,
          "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": "440",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:26 GMT",
            "etag": "W/\"1b8-pQkYxCsMn2FWA2ldXhkbZgqtVPU\"",
            "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.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
            "average_yield": "6.60",
            "product_min_investment": 5000,
            "product_max_investment": 9999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5330
                  }
                ]
              }
            ],
            "maturity_amount": 5330
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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=5330"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:26.056Z",
          "endedAt": "2026-06-23T11:13:26.131Z",
          "durationMs": 75,
          "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:13:26 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": "1",
            "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/MAH?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": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:26.131Z",
          "endedAt": "2026-06-23T11:13:26.230Z",
          "durationMs": 99,
          "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:13:26 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/MAH?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": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:26.230Z",
          "endedAt": "2026-06-23T11:13:26.236Z",
          "durationMs": 6,
          "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:13:26 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/MAH?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": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:26.236Z",
          "endedAt": "2026-06-23T11:13:26.241Z",
          "durationMs": 5,
          "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:13:26 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": "2",
            "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/MAH?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": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:26.241Z",
          "endedAt": "2026-06-23T11:13:26.764Z",
          "durationMs": 523,
          "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": "440",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:26 GMT",
            "etag": "W/\"1b8-pQkYxCsMn2FWA2ldXhkbZgqtVPU\"",
            "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": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
            "average_yield": "6.60",
            "product_min_investment": 5000,
            "product_max_investment": 9999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5330
                  }
                ]
              }
            ],
            "maturity_amount": 5330
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:26.764Z",
          "endedAt": "2026-06-23T11:13:26.830Z",
          "durationMs": 66,
          "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": "440",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:26 GMT",
            "etag": "W/\"1b8-pQkYxCsMn2FWA2ldXhkbZgqtVPU\"",
            "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.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
            "average_yield": "6.60",
            "product_min_investment": 5000,
            "product_max_investment": 9999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5330
                  }
                ]
              }
            ],
            "maturity_amount": 5330
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:26.831Z",
          "endedAt": "2026-06-23T11:13:26.850Z",
          "durationMs": 19,
          "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": "941",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:26 GMT",
            "etag": "W/\"3ad-fGIYrBBl1V/4FNxudIHhu7rz1h0\"",
            "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.40",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "0bebf383-b67b-4097-b2b2-15c67bdbf40b",
            "average_yield": "6.40",
            "product_min_investment": 50000,
            "product_max_investment": 50000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 61.37
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 266.67
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 205.48
                  }
                ]
              }
            ],
            "payout_amount": 266,
            "total_payout": 3200
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:26.851Z",
          "endedAt": "2026-06-23T11:13:26.862Z",
          "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": "440",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:26 GMT",
            "etag": "W/\"1b8-pQkYxCsMn2FWA2ldXhkbZgqtVPU\"",
            "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.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
            "average_yield": "6.60",
            "product_min_investment": 5000,
            "product_max_investment": 9999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5330
                  }
                ]
              }
            ],
            "maturity_amount": 5330
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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": "MAH_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/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:26.862Z",
          "endedAt": "2026-06-23T11:13:26.875Z",
          "durationMs": 13,
          "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": "440",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:26 GMT",
            "etag": "W/\"1b8-pQkYxCsMn2FWA2ldXhkbZgqtVPU\"",
            "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": "9",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
            "average_yield": "6.60",
            "product_min_investment": 5000,
            "product_max_investment": 9999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5330
                  }
                ]
              }
            ],
            "maturity_amount": 5330
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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/57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:26.875Z",
          "endedAt": "2026-06-23T11:13:26.932Z",
          "durationMs": 57,
          "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": "89038",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:26 GMT",
            "etag": "W/\"15bce-ZMONtx9sDmORz3MiEC3RnHL6ZEs\"",
            "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": 3,
                "name": "Mahindra Finance Ltd",
                "description": "Mahindra Finance Ltd. has diversified into a financial services provider and is registered with the RBI as an asset finance, deposit-taking NBFC. It boasts a vast network of 1,300+ offices, reaching more than 380,000 villages, and manages assets exceeding ₹ 99,565 Crores.",
                "f_code": "MAH",
                "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                "url": "https://images.dev.fixerra.in/logos/mahindra/Mahindra.png",
                "sub_logo": "https://images.dev.fixerra.in/logos/mahindra/Mahindra_Logo.png",
                "compounding_freq": "Yearly",
                "issuer_type": "NBFC",
                "crisil_rating": "AAA/Stable",
                "icra_rating": "",
                "trusted_users": "1CR+ Since 1991",
                "hero_tag": null,
                "subtag_1": "AAA RATED BY CRISIL",
                "subtag_2": "Compounds Yearly",
                "is_range_required": true,
                "bank_disabled_at": null,
                "faq": null,
                "active_issuer_rank": 3,
                "baseline_issuer_rank": null,
                "deleted_at": null,
                "upcoming_bank": false,
                "upcoming_bank_date": null,
                "utm_url": null,
                "renewal_options": {
                  "Principal": true,
                  "No Renewal": true,
                  "Total Amount": true
                },
                "enable_our_pg": false,
                "enable_easy_split": false,
                "pg_setting": null,
                "is_nominee_required": false,
                "bank_type": "",
                "is_issuer_live": true,
                "women_benefit": 0,
                "senior_citizen_benefit": 0.25,
                "minTenure": 365,
                "maxTenure": 1825
              },
              "vehiclesPayload": [
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "b7a1931b-e88d-4251-a822-3d81329c88dd",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": 11,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.76",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "0e47b184-a51c-4d20-a4c0-7168878c0762",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.12",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "450fab26-9739-48f6-93dd-3e673e3113a4",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.76",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "682f3233-7644-4f6c-8981-a149ab27661f",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.12",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "a73de787-4cf7-4422-b961-e97f0a44aed8",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "df8ca871-e506-4922-b638-7c1c1562e331",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "1580393e-b00c-4f1c-89b4-e7d2695a1a63",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.76",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "549818ac-ddbf-419f-8095-898929e0aa4d",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.12",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "9e89e67d-d18d-440c-950a-473e2b0f6598",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "35228b39-fe37-4b30-9679-50000e7280d7",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.53",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "74644831-f344-4230-932b-dd51bf8f0dbf",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "d7a1dd7a-d7c6-465a-8b6d-27720e703646",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "68f83d87-ea51-41ae-8479-c949178ebee1",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "0697711b-0fd7-4a02-93a9-87ea214b0c21",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "2d87a875-22f7-499d-ad0a-f70bf7c229c5",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.53",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "4e2d06f8-c545-42b1-9d10-3bf786b33616",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.53",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "4e2bdc70-e643-47bd-9c1b-7ac78885466b",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.65",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.65",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "41575eae-6cbb-48c7-8fa6-a3de81e75de4",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.65",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.65",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "ea2189d1-f5ba-4c1a-9303-1697351f175e",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.60",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "966781d1-110b-407a-8775-16790e1e2b53",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.60",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "404abfc4-43b6-4917-80d4-ef63c8159322",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.60",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "3867f5af-2b39-4901-9eb8-08ebb6ab5f27",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.60",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "7316c78b-a8ca-4123-980d-901c8ff194e1",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.55",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "c0a581cc-b35b-4360-99cd-f8f19b48011e",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.55",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "4ee7e8c5-06fe-4431-af1d-0590f7a38b09",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.55",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "0e332dac-d47e-4318-99da-e5af7977375e",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.55",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "97719d8c-a627-414c-af66-ab0e39f3332c",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.50",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "481a5435-4b81-46ea-98fb-1ef004ea0d1f",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.50",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "43efbd46-dc76-4ee0-a9c8-bd34bcbc0e19",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": 4,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.32",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "f9f1b229-0a57-46c2-b05d-287733d2b6f0",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.65",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "fa01a749-dc91-4f8c-9a65-c6cd3fbceeb5",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.32",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "8b798fe2-5112-4cbe-8145-b4dd4c502310",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.65",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "ed7f8c30-0de3-4be9-9bc9-6548d8b56573",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.45",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "e6292d44-2e2e-4682-868f-83d85fe77c5b",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.45",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "e60c8270-f55d-416b-9731-a08100406304",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.32",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "cd1448ed-af12-45d4-9ddc-338b135f30d4",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.65",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "c0bd536e-d132-4459-898d-99c88f6a8703",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.96",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "3465f79a-e12b-4482-8023-33b12d748111",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.11",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "fee564f6-3c4c-4f30-9b92-72068cd069de",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.96",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "f87b87bd-875f-48f4-9188-02b0785c5765",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "5fe90e93-3a37-4648-85b8-f5b6d20c98f0",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "62cf4339-f8ca-4981-8b12-678b555c82bc",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.96",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "eba957cb-d5a4-47f6-93ca-b87971651796",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.11",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "ce242bff-bb4c-4478-a706-0fee710fdccc",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.11",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "8b2b4bca-8e52-4975-bb96-6d22c2dcb5ea",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.30",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "cbf112ca-6d4a-4247-a22e-2bd68dd2ca8a",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.30",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "05f7fe27-724c-478d-8dea-7af0c9220517",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.25",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "20e622d3-1d66-4f34-ba1d-b4975cfdeaec",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.25",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "eb7f865b-a1ed-47a9-bbed-e807138b098e",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.25",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "66ffbf08-1db9-4a2d-97fb-c44b04ed0575",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.25",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "57f6d2fd-753c-4207-b4e5-a2164a51166b",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.20",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "895acfcc-bd13-42e6-940a-1ec5b01b83a9",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1460,
                  "product_max_tenure": 1460,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.20",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "6c54c77c-9dfc-4811-8bfa-803d4d36c33a",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.20",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "a790e185-eb6b-4d62-a4f3-77af33f97201",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.20",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "eb8ea117-01fd-445f-af0a-67b1b5554008",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1095,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.15",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.15",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "61119961-10ad-45c4-8762-0eb56fc40ad5",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.15",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.15",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "8ed006df-c502-4e3c-9d2c-0e80366deb7f",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "eafd5fd9-a838-40c0-be23-2e1ace0db4ea",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.49",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "7c29f531-5685-42a0-8769-2a66b48a8fbd",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "46a33f27-e897-4595-9d3e-76d891dbde48",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "a1d0c3ec-be5c-49b5-9fe1-fc288d61c39c",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "a5e98ef1-7e81-4f1b-ac77-9325c8ec26ab",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "3dc073ef-c7d0-4dfe-a941-af11265effdf",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.49",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "57bf94bd-0180-4f1c-94c3-75ea57a8abbf",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "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.49",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "6f48159a-52be-4ba6-a45d-b0602f92094b",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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": "7.00",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "ec2bbfdb-d9ee-4260-baa6-58e8334c6aa9",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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": "7.00",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "a268bc58-4fa1-4917-842b-a4f57d45d617",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "08622691-71f1-4468-9179-8b16c225da97",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "277ae1d5-825d-4151-ba35-735603f52864",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.90",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.90",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "abb24a1f-7657-4c98-b0a2-8f70333ec658",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.90",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.90",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "18272491-9713-4506-bb1b-38c1a37fc406",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.85",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "346920e7-512e-463b-aa92-8d59d899045d",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.21",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "95304a59-3724-4688-8778-b4d6c4e53965",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.97",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "ac1e965e-edf4-43b3-9af7-6e0c1fba1634",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.08",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "771f3990-819f-4aff-949e-ec1b3a8a12b4",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.85",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "fc8c06ae-3cc1-4704-a109-a15cd1580923",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.85",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "8aded7a7-e616-4f8e-87f7-0a17344dc6f1",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.86",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "19b6028b-5b0c-4006-9cf2-63a1fc00a5eb",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.85",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "01051cbf-31c2-4d1c-b5c6-bbb7a22d1427",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.85",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "22014848-d53a-41f2-a4f0-93866401bcfb",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.08",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "be46e091-e5df-42ff-abb0-038b9aba3778",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.85",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "5167cab4-28a7-4d7d-8a5d-9bedebec646b",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.21",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "4f40df19-b9c3-45ec-ae1a-5a60e52f1fb2",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.97",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "56403167-af6c-4001-a0bf-685c8eee9e8e",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.21",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "59f65ddc-520b-477e-8f8c-c28e2ba944e4",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.97",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "6364398b-c38a-4555-aaa8-0404ac0514d5",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.08",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "d1c86cd8-81fd-4947-b7a0-1502486aeb76",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.75",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "3564039c-a276-4eb7-a7d1-34c903dd39c9",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.75",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "5fd84399-e906-41a1-bf67-28ed5b62c18d",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.76",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "ab9a1f84-2287-499c-93e4-bd1374a26a5e",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "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.75",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "78d5aa6e-2777-446d-8818-b9464ea05b0a",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.70",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.70",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "3bc02d61-3b22-401b-988c-abebe8ad5900",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.70",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.70",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "3b3e2ac3-697c-4a67-a61d-9d6aa04f0920",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.70",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.70",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "08326044-4d44-4a9a-8b00-bacd31b30674",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.70",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.71",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "85912e78-7a8d-4dc9-891f-6fc1382b98c8",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 730,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.65",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.65",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "ded8ddaf-ac2e-4827-a640-314aab84d47e",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.65",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.65",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "e32f3ca5-02ba-4cad-a156-8eb34673f268",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 912,
                  "product_max_tenure": 912,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.65",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.65",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "46266dc0-72e2-4fb3-be6e-7cb1677bdd78",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.65",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.66",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "a925ff1b-2b8a-49f4-82a8-24a2e0047de8",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.71",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "05dda2c9-4039-445c-867c-5587cba71791",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.61",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "8f52adf2-c4fb-46da-8c5a-14f7f1d4a010",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "dd9d5f07-135f-4753-b6f5-9024001e237e",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 10000,
                  "product_max_investment": 9999999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "7974695c-9625-44e4-a7d0-855a56eab1d0",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "10712939-b8d7-4dad-9f0b-6a8b1b84c899",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 5000,
                  "product_max_investment": 9999,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.71",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "0eb69db0-acfc-4554-9036-92a1c0732636",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 10000000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.71",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "82c2cd2f-944b-4166-b28e-63aac00bef9e",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.50",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.50",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "b36dbbe0-d5bc-42c0-b69a-21725568f432",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 25000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.50",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.51",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "7cec3cfe-6cd9-4c59-a2f5-5bdb1f6f8aca",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.45",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "d3a1be9a-0517-43bd-a8ac-11f26e251032",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.45",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.46",
                  "senior_citizen_benefit": 0.2
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "0bebf383-b67b-4097-b2b2-15c67bdbf40b",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 365,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.40",
                  "senior_citizen_benefit": 0.35
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
                  "f_investment_vehicle_id": "5d2f688e-ad35-4d96-bca5-097e8ea8a405",
                  "product_details": "",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 50000,
                  "product_max_investment": 50000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-05-20T00:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "",
                  "product_self_commision": "",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.41",
                  "senior_citizen_benefit": 0.2
                }
              ],
              "highlights": [
                {
                  "title": "All investments are regulated by RBI",
                  "url": "https://images.dev.fixerra.in/illustrations/RBI@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.25% extra",
                  "url": "https://images.dev.fixerra.in/illustrations/Senior@3x.png"
                }
              ],
              "about": [
                {
                  "key": "Founded",
                  "value": "1991"
                },
                {
                  "key": "Customers Served",
                  "value": "1 Cr+"
                },
                {
                  "key": "Number of Branches",
                  "value": "1300+"
                },
                {
                  "key": "Reach",
                  "value": "380,000+ Villages"
                },
                {
                  "key": "CRISIL Rating",
                  "value": "AAA+ Stable"
                },
                {
                  "key": "Assets Under Management",
                  "value": "₹99,565 Cr+"
                }
              ],
              "distinctMinTenureValues": [
                {
                  "value": 1095
                },
                {
                  "value": 1277
                },
                {
                  "value": 1460
                },
                {
                  "value": 1825
                },
                {
                  "value": 365
                },
                {
                  "value": 547
                },
                {
                  "value": 730
                },
                {
                  "value": 912
                }
              ],
              "interestPayouts": [
                "Maturity",
                "Yearly",
                "HalfYearly",
                "Quarterly",
                "Monthly"
              ]
            }
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/detail/57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16' \\\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/57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:26.932Z",
          "endedAt": "2026-06-23T11:13:26.945Z",
          "durationMs": 13,
          "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:13:26 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/57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16' \\\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/57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:26.945Z",
          "endedAt": "2026-06-23T11:13:26.950Z",
          "durationMs": 5,
          "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:13:26 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": "2",
            "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/57a9d4a2-bfbc-4ed2-965c-b8c4b7c95b16?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-MAH-001_0",
          "caseName": "[POSITIVE] `MAH`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:26.950Z",
          "endedAt": "2026-06-23T11:13:26.961Z",
          "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"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "440",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:26 GMT",
            "etag": "W/\"1b8-pQkYxCsMn2FWA2ldXhkbZgqtVPU\"",
            "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.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
            "average_yield": "6.60",
            "product_min_investment": 5000,
            "product_max_investment": 9999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5330
                  }
                ]
              }
            ],
            "maturity_amount": 5330
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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-MAH-002_1",
          "caseName": "[POSITIVE] `MAH`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:26.961Z",
          "endedAt": "2026-06-23T11:13:27.030Z",
          "durationMs": 69,
          "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"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "941",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:26 GMT",
            "etag": "W/\"3ad-fGIYrBBl1V/4FNxudIHhu7rz1h0\"",
            "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": "14",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.40",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "0bebf383-b67b-4097-b2b2-15c67bdbf40b",
            "average_yield": "6.40",
            "product_min_investment": 50000,
            "product_max_investment": 50000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 61.37
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 266.67
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 205.48
                  }
                ]
              }
            ],
            "payout_amount": 266,
            "total_payout": 3200
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?tenure=365&investment_amount=50000&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-MAH-003_2",
          "caseName": "[POSITIVE] `MAH`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.031Z",
          "endedAt": "2026-06-23T11:13:27.048Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "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": "639",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 GMT",
            "etag": "W/\"27f-ecnnA0kQw7t/pUOkxeoq+mv+LCo\"",
            "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": "14",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.45",
            "payout_frequency": "Quarterly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "7cec3cfe-6cd9-4c59-a2f5-5bdb1f6f8aca",
            "average_yield": "6.45",
            "product_min_investment": 50000,
            "product_max_investment": 50000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 61.85
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 806.25
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 806.25
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 806.25
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 744.95
                  }
                ]
              }
            ],
            "payout_amount": 806,
            "total_payout": 3225
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?tenure=365&investment_amount=50000&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-MAH-004_3",
          "caseName": "[POSITIVE] `MAH`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.048Z",
          "endedAt": "2026-06-23T11:13:27.065Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "25000",
            "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": "563",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 GMT",
            "etag": "W/\"233-fUwaeI9NKxaxP9OCCaI/mUlGzC8\"",
            "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.50",
            "payout_frequency": "HalfYearly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "82c2cd2f-944b-4166-b28e-63aac00bef9e",
            "average_yield": "6.50",
            "product_min_investment": 25000,
            "product_max_investment": 50000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-09-30",
                    "amount": 440.75
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 812.5
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 372.3
                  }
                ]
              }
            ],
            "payout_amount": 812,
            "total_payout": 1625
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?tenure=365&investment_amount=25000&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-MAH-005_4",
          "caseName": "[POSITIVE] `MAH`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.065Z",
          "endedAt": "2026-06-23T11:13:27.081Z",
          "durationMs": 16,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "25000",
            "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": "502",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 GMT",
            "etag": "W/\"1f6-Nx+mbwk5/hjdKrxL0L+N20ZoIc4\"",
            "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.60",
            "payout_frequency": "Yearly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "8f52adf2-c4fb-46da-8c5a-14f7f1d4a010",
            "average_yield": "6.60",
            "product_min_investment": 25000,
            "product_max_investment": 50000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 1270.27
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 380.86
                  }
                ]
              }
            ],
            "payout_amount": 1650,
            "total_payout": 1650
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?tenure=365&investment_amount=25000&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-005_5",
          "caseName": "[POSITIVE] MAH valid min boundary cumulative",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.081Z",
          "endedAt": "2026-06-23T11:13:27.141Z",
          "durationMs": 60,
          "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": "440",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 GMT",
            "etag": "W/\"1b8-pQkYxCsMn2FWA2ldXhkbZgqtVPU\"",
            "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": "9",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "29bd10ea-cbff-4894-b03b-1ccc64b1ce60",
            "average_yield": "6.60",
            "product_min_investment": 5000,
            "product_max_investment": 9999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 5330
                  }
                ]
              }
            ],
            "maturity_amount": 5330
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?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-011_6",
          "caseName": "[POSITIVE] Optional flags all false",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.141Z",
          "endedAt": "2026-06-23T11:13:27.157Z",
          "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"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "941",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 GMT",
            "etag": "W/\"3ad-fGIYrBBl1V/4FNxudIHhu7rz1h0\"",
            "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.40",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "0bebf383-b67b-4097-b2b2-15c67bdbf40b",
            "average_yield": "6.40",
            "product_min_investment": 50000,
            "product_max_investment": 50000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 61.37
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 266.67
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 205.48
                  }
                ]
              }
            ],
            "payout_amount": 266,
            "total_payout": 3200
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?tenure=365&investment_amount=50000&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-POS-012_7",
          "caseName": "[POSITIVE] Optional flags: senior only",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.158Z",
          "endedAt": "2026-06-23T11:13:27.183Z",
          "durationMs": 25,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "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": "941",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 GMT",
            "etag": "W/\"3ad-3SCkj9//dJmUF/awIRQvwrAVEtY\"",
            "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": "21",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.65",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "ded8ddaf-ac2e-4827-a640-314aab84d47e",
            "average_yield": "6.65",
            "product_min_investment": 50000,
            "product_max_investment": 50000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 63.77
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 277.08
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 277.08
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 277.08
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 277.08
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 277.08
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 277.08
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 277.08
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 277.08
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 277.08
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 277.08
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 277.08
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 213.51
                  }
                ]
              }
            ],
            "payout_amount": 277,
            "total_payout": 3325
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?tenure=365&investment_amount=50000&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_TC-MAT-POS-013_8",
          "caseName": "[POSITIVE] Flags: `women_citizen=true` (unsupported for MAH)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.183Z",
          "endedAt": "2026-06-23T11:13:27.200Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "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": "537",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 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": "12",
            "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/MAH?tenure=365&investment_amount=50000&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": "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": [
            "FIXMAS005"
          ],
          "actualErrorCodes": [
            "FIXMAS005"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-POS-014_9",
          "caseName": "[POSITIVE] Flags: `tax_saver=true` (unsupported for MAH)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.200Z",
          "endedAt": "2026-06-23T11:13:27.215Z",
          "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": "true"
          },
          "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:13:27 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": "12",
            "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/MAH?tenure=365&investment_amount=50000&payout_frequency=Monthly&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": [
            "FIXMAS005"
          ],
          "actualErrorCodes": [
            "FIXMAS005"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-POS-015_10",
          "caseName": "[POSITIVE] Flags: all true (unsupported for MAH)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.215Z",
          "endedAt": "2026-06-23T11:13:27.230Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "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": "537",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 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": "10",
            "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/MAH?tenure=365&investment_amount=50000&payout_frequency=Monthly&senior_citizen=true&women_citizen=true&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": [
            "FIXMAS005"
          ],
          "actualErrorCodes": [
            "FIXMAS005"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-LIMIT-MAH-001_11",
          "caseName": "[EDGE] `MAH`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.231Z",
          "endedAt": "2026-06-23T11:13:27.243Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-LIMIT-MAH-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:13:27 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/MAH?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-MAH-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-MAH-002_12",
          "caseName": "[EDGE] `MAH`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.243Z",
          "endedAt": "2026-06-23T11:13:27.255Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-LIMIT-MAH-002"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "60000000",
            "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:13:27 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": "9",
            "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/MAH?tenure=365&investment_amount=60000000&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-MAH-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-MAH-001_13",
          "caseName": "[POSITIVE] `MAH`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.255Z",
          "endedAt": "2026-06-23T11:13:27.275Z",
          "durationMs": 20,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "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": "537",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 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": "17",
            "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/MAH?tenure=365&investment_amount=50000&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": [
            "FIXMAS005"
          ],
          "actualErrorCodes": [
            "FIXMAS005"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-WOM-MAH-001_14",
          "caseName": "[POSITIVE] `MAH`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.276Z",
          "endedAt": "2026-06-23T11:13:27.331Z",
          "durationMs": 55,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "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": "537",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 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": "18",
            "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/MAH?tenure=365&investment_amount=50000&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": "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": [
            "FIXMAS005"
          ],
          "actualErrorCodes": [
            "FIXMAS005"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-SR-MAH-001_15",
          "caseName": "[POSITIVE] `MAH`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.331Z",
          "endedAt": "2026-06-23T11:13:27.361Z",
          "durationMs": 30,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "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": "446",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 GMT",
            "etag": "W/\"1be-Mtm18sTmkm1UHmvqYy6XPQ2ZBI0\"",
            "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": "27",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.85",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "be46e091-e5df-42ff-abb0-038b9aba3778",
            "average_yield": "6.85",
            "product_min_investment": 10000,
            "product_max_investment": 9999999,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 53425
                  }
                ]
              }
            ],
            "maturity_amount": 53425
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?tenure=365&investment_amount=50000&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-BIZ-001_16",
          "caseName": "[POSITIVE] MAH NC Monthly with amount 49,000 (below rule)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.361Z",
          "endedAt": "2026-06-23T11:13:27.430Z",
          "durationMs": 69,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "49000",
            "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": "537",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 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": "42",
            "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/MAH?tenure=365&investment_amount=49000&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": "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": [
            "FIXMAS005"
          ],
          "actualErrorCodes": [
            "FIXMAS005"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-BIZ-002_17",
          "caseName": "[POSITIVE] MAH NC Monthly with amount 50,000 (exact min)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.431Z",
          "endedAt": "2026-06-23T11:13:27.531Z",
          "durationMs": 100,
          "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"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "941",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 GMT",
            "etag": "W/\"3ad-fGIYrBBl1V/4FNxudIHhu7rz1h0\"",
            "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": "69",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.40",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "0bebf383-b67b-4097-b2b2-15c67bdbf40b",
            "average_yield": "6.40",
            "product_min_investment": 50000,
            "product_max_investment": 50000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 61.37
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 266.67
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 205.48
                  }
                ]
              }
            ],
            "payout_amount": 266,
            "total_payout": 3200
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?tenure=365&investment_amount=50000&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-BIZ-003_18",
          "caseName": "[POSITIVE] MAH NC Quarterly with amount 49,000 (below rule)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.531Z",
          "endedAt": "2026-06-23T11:13:27.552Z",
          "durationMs": 21,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "49000",
            "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": "537",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 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": "18",
            "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/MAH?tenure=365&investment_amount=49000&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": "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": [
            "FIXMAS005"
          ],
          "actualErrorCodes": [
            "FIXMAS005"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-BIZ-004_19",
          "caseName": "[POSITIVE] MAH NC HalfYearly with amount 24,000 (below rule)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.552Z",
          "endedAt": "2026-06-23T11:13:27.573Z",
          "durationMs": 21,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "24000",
            "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": "537",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 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": "18",
            "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/MAH?tenure=365&investment_amount=24000&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": "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": [
            "FIXMAS005"
          ],
          "actualErrorCodes": [
            "FIXMAS005"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-BIZ-005_20",
          "caseName": "[POSITIVE] MAH NC Yearly with amount 25,000 (exact min)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.573Z",
          "endedAt": "2026-06-23T11:13:27.589Z",
          "durationMs": 16,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "25000",
            "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": "502",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 GMT",
            "etag": "W/\"1f6-Nx+mbwk5/hjdKrxL0L+N20ZoIc4\"",
            "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.60",
            "payout_frequency": "Yearly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "8f52adf2-c4fb-46da-8c5a-14f7f1d4a010",
            "average_yield": "6.60",
            "product_min_investment": 25000,
            "product_max_investment": 50000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 1270.27
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 380.86
                  }
                ]
              }
            ],
            "payout_amount": 1650,
            "total_payout": 1650
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?tenure=365&investment_amount=25000&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_FLAG-001_21",
          "caseName": "[POSITIVE] `MAH`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.589Z",
          "endedAt": "2026-06-23T11:13:27.631Z",
          "durationMs": 42,
          "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"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "941",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 GMT",
            "etag": "W/\"3ad-fGIYrBBl1V/4FNxudIHhu7rz1h0\"",
            "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.40",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "0bebf383-b67b-4097-b2b2-15c67bdbf40b",
            "average_yield": "6.40",
            "product_min_investment": 50000,
            "product_max_investment": 50000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 61.37
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 266.67
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 266.67
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 205.48
                  }
                ]
              }
            ],
            "payout_amount": 266,
            "total_payout": 3200
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?tenure=365&investment_amount=50000&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_22",
          "caseName": "[POSITIVE] `MAH`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.631Z",
          "endedAt": "2026-06-23T11:13:27.645Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "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": "941",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 GMT",
            "etag": "W/\"3ad-3SCkj9//dJmUF/awIRQvwrAVEtY\"",
            "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.65",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "ded8ddaf-ac2e-4827-a640-314aab84d47e",
            "average_yield": "6.65",
            "product_min_investment": 50000,
            "product_max_investment": 50000000,
            "product_min_tenure": 365,
            "product_max_tenure": 365,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 63.77
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 277.08
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 277.08
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 277.08
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 277.08
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 277.08
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 277.08
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 277.08
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 277.08
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 277.08
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 277.08
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 277.08
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 213.51
                  }
                ]
              }
            ],
            "payout_amount": 277,
            "total_payout": 3325
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH?tenure=365&investment_amount=50000&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_23",
          "caseName": "[EDGE] `MAH`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.645Z",
          "endedAt": "2026-06-23T11:13:27.657Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "FLAG-003"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "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": "537",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 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": "9",
            "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/MAH?tenure=365&investment_amount=50000&payout_frequency=Monthly&senior_citizen=false&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\":\"FLAG-003\"}'",
          "validations": [
            {
              "description": "Response should contain error code(s): FIXMAS005",
              "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": [
            "FIXMAS005"
          ],
          "actualErrorCodes": [
            "FIXMAS005"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_FLAG-004_24",
          "caseName": "[EDGE] `MAH`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.657Z",
          "endedAt": "2026-06-23T11:13:27.669Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "FLAG-004"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "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": "537",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 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": "8",
            "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/MAH?tenure=365&investment_amount=50000&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): FIXMAS005",
              "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": [
            "FIXMAS005"
          ],
          "actualErrorCodes": [
            "FIXMAS005"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_FLAG-005_25",
          "caseName": "[EDGE] `MAH`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.669Z",
          "endedAt": "2026-06-23T11:13:27.684Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "FLAG-005"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "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": "537",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 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": "12",
            "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/MAH?tenure=365&investment_amount=50000&payout_frequency=Monthly&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\":\"FLAG-005\"}'",
          "validations": [
            {
              "description": "Response should contain error code(s): FIXMAS005",
              "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": [
            "FIXMAS005"
          ],
          "actualErrorCodes": [
            "FIXMAS005"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_FLAG-006_26",
          "caseName": "[EDGE] `MAH`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.684Z",
          "endedAt": "2026-06-23T11:13:27.730Z",
          "durationMs": 46,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "FLAG-006"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "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": "537",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 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": "12",
            "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/MAH?tenure=365&investment_amount=50000&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): FIXMAS005",
              "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": [
            "FIXMAS005"
          ],
          "actualErrorCodes": [
            "FIXMAS005"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_FLAG-007_27",
          "caseName": "[EDGE] `MAH`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.731Z",
          "endedAt": "2026-06-23T11:13:27.745Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "FLAG-007"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "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": "537",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 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": "11",
            "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/MAH?tenure=365&investment_amount=50000&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): FIXMAS005",
              "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": [
            "FIXMAS005"
          ],
          "actualErrorCodes": [
            "FIXMAS005"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_FLAG-008_28",
          "caseName": "[EDGE] `MAH`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/MAH",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:27.745Z",
          "endedAt": "2026-06-23T11:13:27.831Z",
          "durationMs": 86,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "FLAG-008"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "50000",
            "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": "537",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:27 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": "9",
            "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/MAH?tenure=365&investment_amount=50000&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): FIXMAS005",
              "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": [
            "FIXMAS005"
          ],
          "actualErrorCodes": [
            "FIXMAS005"
          ]
        }
      ],
      "summary": {
        "total": 73,
        "passed": 72,
        "failed": 1,
        "skipped": 0,
        "running": 0,
        "pending": 0,
        "durationMs": 3274
      }
    },
    {
      "stepId": "step-03-pan-verification",
      "stepName": "PAN Verification",
      "cases": [
        {
          "caseId": "MAH_PAN_001",
          "caseName": "Get user profile before PAN entry (Mahindra 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:13:27.831Z",
          "endedAt": "2026-06-23T11:13:28.072Z",
          "durationMs": 241,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:28 GMT",
            "etag": "W/\"573-fJWIb0wIdcGo+I6FN2wmqYNWgqY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "38",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "createdAt": "2026-06-23T11:13:19.000Z",
              "isActive": true,
              "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "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:13:19.534Z",
              "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:43:19.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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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": "MAH_PAN_002",
          "caseName": "Track insights event for PAN verification step (Mahindra Finance)",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/insights/event",
          "status": "passed",
          "scenarioType": "static",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:28.072Z",
          "endedAt": "2026-06-23T11:13:28.156Z",
          "durationMs": 84,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "state": "KYC_VERIFICATION",
            "sub_state": "PAN_VERIFICATION",
            "status": "SUCCESS",
            "issuer_code": "MAH",
            "fd_info": {
              "amount": 25000,
              "tenure": 12,
              "payout_frequency": "maturity",
              "issuer_code": "MAH"
            },
            "d1": "{\"event_id\":\"cc7942eb-33c2-4ecf-9f09-72daed8f9ac2\"}",
            "data": "{\"issuer_code\":\"MAH\",\"fd_info\":{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"MAH\"}}"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "65",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:28 GMT",
            "etag": "W/\"41-M+4hBsG0sVRjuFnaz2YPyfe+acA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": {
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/insights/event' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"state\":\"KYC_VERIFICATION\",\"sub_state\":\"PAN_VERIFICATION\",\"status\":\"SUCCESS\",\"issuer_code\":\"MAH\",\"fd_info\":{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"MAH\"},\"d1\":\"{\\\"event_id\\\":\\\"cc7942eb-33c2-4ecf-9f09-72daed8f9ac2\\\"}\",\"data\":\"{\\\"issuer_code\\\":\\\"MAH\\\",\\\"fd_info\\\":{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"MAH\\\"}}\"}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response should contain event_id",
              "passed": true,
              "message": "event_id present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_INSIGHTS_EVENT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_PAN_003",
          "caseName": "Verify PAN for Mahindra 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:13:28.156Z",
          "endedAt": "2026-06-23T11:13:28.571Z",
          "durationMs": 415,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "MAH",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "139",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:28 GMT",
            "etag": "W/\"8b-mkAMZeXWHfwsFaUd1YtotXtQUhY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "411",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "DILIP KALU RATHOD",
              "father_name": "KALU NATHU RATHOD"
            }
          },
          "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:28.571Z",
          "endedAt": "2026-06-23T11:13:29.505Z",
          "durationMs": 934,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "MAH",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "139",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:29 GMT",
            "etag": "W/\"8b-mkAMZeXWHfwsFaUd1YtotXtQUhY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "931",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "DILIP KALU RATHOD",
              "father_name": "KALU NATHU RATHOD"
            }
          },
          "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:29.505Z",
          "endedAt": "2026-06-23T11:13:29.871Z",
          "durationMs": 366,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "MAH",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "139",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:29 GMT",
            "etag": "W/\"8b-mkAMZeXWHfwsFaUd1YtotXtQUhY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "362",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "DILIP KALU RATHOD",
              "father_name": "KALU NATHU RATHOD"
            }
          },
          "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:29.871Z",
          "endedAt": "2026-06-23T11:13:30.977Z",
          "durationMs": 1106,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "MAH",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "139",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:30 GMT",
            "etag": "W/\"8b-mkAMZeXWHfwsFaUd1YtotXtQUhY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1103",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "DILIP KALU RATHOD",
              "father_name": "KALU NATHU RATHOD"
            }
          },
          "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:30.977Z",
          "endedAt": "2026-06-23T11:13:31.369Z",
          "durationMs": 392,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "MAH",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "139",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:31 GMT",
            "etag": "W/\"8b-mkAMZeXWHfwsFaUd1YtotXtQUhY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "389",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "DILIP KALU RATHOD",
              "father_name": "KALU NATHU RATHOD"
            }
          },
          "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"MAH\",\"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=392ms"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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:13:31.369Z",
          "endedAt": "2026-06-23T11:13:31.792Z",
          "durationMs": 423,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "MAH",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "139",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:31 GMT",
            "etag": "W/\"8b-mkAMZeXWHfwsFaUd1YtotXtQUhY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "420",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "DILIP KALU RATHOD",
              "father_name": "KALU NATHU RATHOD"
            }
          },
          "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:31.792Z",
          "endedAt": "2026-06-23T11:13:31.809Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "",
            "issuer_code": "MAH",
            "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:13:31 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": "14",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:31.809Z",
          "endedAt": "2026-06-23T11:13:31.835Z",
          "durationMs": 26,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": null,
            "issuer_code": "MAH",
            "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:13:31 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": "23",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":null,\"issuer_code\":\"MAH\",\"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": "MAH_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:13:31.835Z",
          "endedAt": "2026-06-23T11:13:31.852Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "issuer_code": "MAH",
            "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:13:31 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": "14",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"issuer_code\":\"MAH\",\"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": "MAH_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:13:31.852Z",
          "endedAt": "2026-06-23T11:13:31.863Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "BLXPR343",
            "issuer_code": "MAH",
            "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:13:31 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"BLXPR343\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:31.863Z",
          "endedAt": "2026-06-23T11:13:31.936Z",
          "durationMs": 73,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "BLXPR3438LL",
            "issuer_code": "MAH",
            "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:13:31 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": "70",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"BLXPR3438LL\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:31.936Z",
          "endedAt": "2026-06-23T11:13:31.946Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "blxpr3438l",
            "issuer_code": "MAH",
            "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:13:31 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"blxpr3438l\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:31.946Z",
          "endedAt": "2026-06-23T11:13:31.960Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "BLXP@3438L",
            "issuer_code": "MAH",
            "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:13:31 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 POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"BLXP@3438L\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:31.960Z",
          "endedAt": "2026-06-23T11:13:32.131Z",
          "durationMs": 171,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "BLXP R3438L",
            "issuer_code": "MAH",
            "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:13:31 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"BLXP R3438L\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:32.131Z",
          "endedAt": "2026-06-23T11:13:32.141Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "1234567890",
            "issuer_code": "MAH",
            "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:13:32 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"1234567890\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:32.141Z",
          "endedAt": "2026-06-23T11:13:32.156Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "ABCDEFGHIJ",
            "issuer_code": "MAH",
            "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:13:32 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 POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"ABCDEFGHIJ\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:32.156Z",
          "endedAt": "2026-06-23T11:13:32.167Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "AB123456CD",
            "issuer_code": "MAH",
            "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:13:32 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"AB123456CD\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:32.167Z",
          "endedAt": "2026-06-23T11:13:32.231Z",
          "durationMs": 64,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "' OR 1=1 --",
            "issuer_code": "MAH",
            "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:13:32 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"'\\'' OR 1=1 --\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:32.231Z",
          "endedAt": "2026-06-23T11:13:32.241Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "<script>alert(1)</script>",
            "issuer_code": "MAH",
            "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:13:32 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"<script>alert(1)</script>\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:32.241Z",
          "endedAt": "2026-06-23T11:13:32.248Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": "{\"number\":",
          "requestQuery": {},
          "responseHeaders": {
            "content-length": "248",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:32 GMT",
            "etag": "W/\"f8-ydQRwr2txlf09MfVIoTWDDYnXgw\"",
            "vary": "Origin",
            "x-powered-by": "Express",
            "x-envoy-upstream-service-time": "3",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:32.248Z",
          "endedAt": "2026-06-23T11:13:32.257Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:32 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:32.257Z",
          "endedAt": "2026-06-23T11:13:32.337Z",
          "durationMs": 80,
          "requestHeaders": {
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": "{\"number\":\"BLXPR3438L\",\"issuer_code\":\"MAH\",\"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:13:32 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": "76",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:32.337Z",
          "endedAt": "2026-06-23T11:13:32.349Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "text/plain",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": "{\"number\":\"BLXPR3438L\",\"issuer_code\":\"MAH\",\"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:13:32 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: text/plain' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:32.349Z",
          "endedAt": "2026-06-23T11:13:32.361Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "1234567890",
            "issuer_code": "MAH",
            "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:13:32 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"1234567890\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:32.361Z",
          "endedAt": "2026-06-23T11:13:32.431Z",
          "durationMs": 70,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "1234567890",
            "issuer_code": "MAH",
            "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:13:32 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": "68",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"1234567890\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:32.431Z",
          "endedAt": "2026-06-23T11:13:32.443Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "1234567890",
            "issuer_code": "MAH",
            "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:13:32 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"1234567890\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:32.443Z",
          "endedAt": "2026-06-23T11:13:32.461Z",
          "durationMs": 18,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "1234567890",
            "issuer_code": "MAH",
            "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:13:32 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"1234567890\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:32.461Z",
          "endedAt": "2026-06-23T11:13:32.916Z",
          "durationMs": 455,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "MAH",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "139",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:32 GMT",
            "etag": "W/\"8b-mkAMZeXWHfwsFaUd1YtotXtQUhY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "452",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "DILIP KALU RATHOD",
              "father_name": "KALU NATHU RATHOD"
            }
          },
          "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:32.916Z",
          "endedAt": "2026-06-23T11:13:36.215Z",
          "durationMs": 3299,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "MAH",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "139",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:36 GMT",
            "etag": "W/\"8b-mkAMZeXWHfwsFaUd1YtotXtQUhY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3296",
            "server": "envoy",
            "connection": "close"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "DILIP KALU RATHOD",
              "father_name": "KALU NATHU RATHOD"
            }
          },
          "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"MAH\",\"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": "MAH_PAN_032",
          "caseName": "Verify concurrent requests with same PAN",
          "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:13:36.215Z",
          "endedAt": "2026-06-23T11:13:36.721Z",
          "durationMs": 506,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "MAH",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "139",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:36 GMT",
            "etag": "W/\"8b-mkAMZeXWHfwsFaUd1YtotXtQUhY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "Verification Successful",
            "payload": {
              "name": "DILIP KALU RATHOD",
              "father_name": "KALU NATHU RATHOD"
            }
          },
          "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"MAH\",\"issuer_type\":\"NBFC\"}'",
          "validations": [
            {
              "description": "No request in the burst should return a 5xx or network error",
              "passed": true,
              "message": "All 2 requests completed without 5xx/network errors"
            },
            {
              "description": "Concurrent requests should return a consistent success/error shape",
              "passed": true,
              "message": "All 2 concurrent requests returned the same response shape (201:1:200)"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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:13:36.721Z",
          "endedAt": "2026-06-23T11:13:37.774Z",
          "durationMs": 1053,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "MAH",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "139",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:37 GMT",
            "etag": "W/\"8b-mkAMZeXWHfwsFaUd1YtotXtQUhY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "505",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "DILIP KALU RATHOD",
              "father_name": "KALU NATHU RATHOD"
            }
          },
          "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"MAH\",\"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 525ms across 3 requests"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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:13:37.774Z",
          "endedAt": "2026-06-23T11:13:39.600Z",
          "durationMs": 1826,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "MAH",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "139",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:39 GMT",
            "etag": "W/\"8b-mkAMZeXWHfwsFaUd1YtotXtQUhY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "331",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "DILIP KALU RATHOD",
              "father_name": "KALU NATHU RATHOD"
            }
          },
          "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"MAH\",\"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": "MAH_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:13:39.600Z",
          "endedAt": "2026-06-23T11:13:40.102Z",
          "durationMs": 502,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "MAH",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "139",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:40 GMT",
            "etag": "W/\"8b-mkAMZeXWHfwsFaUd1YtotXtQUhY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "498",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "DILIP KALU RATHOD",
              "father_name": "KALU NATHU RATHOD"
            }
          },
          "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"MAH\",\"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=\"DILIP KALU RATHOD\""
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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:13:40.102Z",
          "endedAt": "2026-06-23T11:13:40.421Z",
          "durationMs": 319,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "MAH",
            "issuer_type": "NBFC"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "139",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:40 GMT",
            "etag": "W/\"8b-mkAMZeXWHfwsFaUd1YtotXtQUhY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "315",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Verification Successful",
            "payload": {
              "name": "DILIP KALU RATHOD",
              "father_name": "KALU NATHU RATHOD"
            }
          },
          "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"MAH\",\"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=\"KALU NATHU RATHOD\""
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_PAN_950",
          "caseName": "Persist DOB for downstream eligibility (Digilocker/Aadhaar fallback)",
          "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:13:40.421Z",
          "endedAt": "2026-06-23T11:13:40.550Z",
          "durationMs": 129,
          "requestHeaders": {
            "Content-Type": "application/json",
            "fuserid": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "dob": "1992-04-30"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "1844",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:40 GMT",
            "etag": "W/\"734-UzB9Um8/5LS0fh9t9gWTVeVjC0E\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "126",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2026-06-23T11:13:19.000Z",
              "updatedAt": "2026-06-23T11:13:40.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "profile_photo": null,
              "profile_photo_file_name": null,
              "pan": "249a22814bf213a7ff2e68cfa58da9d3:c7ffdd78ce0e0d9c1095a78979a7040d",
              "email": null,
              "password": "",
              "sub_account": "",
              "gender": "",
              "salutation": "",
              "first_name": "DILIP",
              "middle_name": "KALU",
              "last_name": "RATHOD",
              "pan_first_name": "DILIP",
              "pan_middle_name": "KALU",
              "pan_last_name": "RATHOD",
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:db646d65909c524168c6990f0b3efbc5",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:ecfe610f12b665afad3545ca90ac0be2",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "",
              "user_activation_date": null,
              "user_registration_date": "2026-06-23T11:13:19.534Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "",
              "annual_income": "",
              "user_tax_status": "",
              "father_name": "KALU NATHU RATHOD",
              "is_pan_verified": false,
              "manual_pan_verified": null,
              "is_email_verified": false,
              "is_aadhaar_verified": false,
              "is_nominee_present": false,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "KALU",
              "kin_middle_name": "NATHU",
              "kin_last_name": "RATHOD",
              "marital_status": "",
              "kapture_id": "",
              "user_aadhaar_verification_date": null,
              "user_pan_verification_date": "2026-06-23T11:13:40.000Z",
              "user_nominee_update_date": null,
              "user_bank_account_update_date": null,
              "user_email_verification_date": null,
              "profile_updated_at": "2026-06-23T11:13:40.433Z",
              "mother_name": null,
              "education": null,
              "source_of_income": null,
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2026-06-23T16:43:19.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": "2026-06-23T16:43:40.000Z"
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user' \\\n  -H 'Content-Type: application/json' \\\n  -H 'fuserid: 4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"dob\":\"1992-04-30\"}'",
          "validations": [
            {
              "description": "DOB update should persist (201 with updated user)",
              "passed": true,
              "message": "DOB persisted (HTTP 200, dob=249a22814bf213a7ff2e68cfa58da9d3:ecfe610f12b665afad3545ca90ac0be2)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        }
      ],
      "summary": {
        "total": 37,
        "passed": 37,
        "failed": 0,
        "skipped": 0,
        "running": 0,
        "pending": 0,
        "durationMs": 12719
      }
    },
    {
      "stepId": "step-04-email-verification",
      "stepName": "Email Verification",
      "cases": [
        {
          "caseId": "MAH_EMAIL_001",
          "caseName": "Verify OTP sent to valid email (Mahindra 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:13:40.551Z",
          "endedAt": "2026-06-23T11:13:41.280Z",
          "durationMs": 729,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"MAH\"}"
          },
          "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:13:41 GMT",
            "etag": "W/\"b3-yLlZo/bTCNuQyXfu8QnwZU/z5TQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "Email sent successfully",
            "payload": {
              "startTime": 1782213220649,
              "endTime": 1782213221244,
              "durationMs": 595,
              "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"MAH\\\"}\"}'",
          "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": "MAH_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:13:41.280Z",
          "endedAt": "2026-06-23T11:13:41.297Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"MAH\"}"
          },
          "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:13:41 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"MAH\\\"}\"}'",
          "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": "MAH_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:13:41.297Z",
          "endedAt": "2026-06-23T11:13:41.331Z",
          "durationMs": 34,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"MAH\"}"
          },
          "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:13:41 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": "7",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"MAH\\\"}\"}'",
          "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": "MAH_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:13:41.331Z",
          "endedAt": "2026-06-23T11:13:41.341Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"MAH\"}"
          },
          "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:13:41 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"MAH\\\"}\"}'",
          "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": "MAH_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:13:41.341Z",
          "endedAt": "2026-06-23T11:13:41.353Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"MAH\"}"
          },
          "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:13:41 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"MAH\\\"}\"}'",
          "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": "MAH_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:13:41.353Z",
          "endedAt": "2026-06-23T11:13:41.364Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"MAH\"}"
          },
          "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:13:41 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"MAH\\\"}\"}'",
          "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": "MAH_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:13:41.364Z",
          "endedAt": "2026-06-23T11:13:41.375Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"MAH\"}"
          },
          "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:13:41 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"MAH\\\"}\"}'",
          "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": "MAH_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:13:41.376Z",
          "endedAt": "2026-06-23T11:13:41.430Z",
          "durationMs": 54,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"MAH\"}"
          },
          "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:13:41 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": "48",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"MAH\\\"}\"}'",
          "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": "MAH_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:13:41.431Z",
          "endedAt": "2026-06-23T11:13:41.441Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"MAH\"}"
          },
          "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:13:41 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": "7",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"MAH\\\"}\"}'",
          "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": "MAH_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:13:41.441Z",
          "endedAt": "2026-06-23T11:13:41.456Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"MAH\"}"
          },
          "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:13:41 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": "12",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"MAH\\\"}\"}'",
          "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": "MAH_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:13:41.456Z",
          "endedAt": "2026-06-23T11:13:41.466Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"issuer\":{\"f_code\":\"MAH\"}}"
          },
          "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:13:41 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": "7",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"issuer\\\":{\\\"f_code\\\":\\\"MAH\\\"}}\"}'",
          "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": "MAH_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:13:41.466Z",
          "endedAt": "2026-06-23T11:13:41.530Z",
          "durationMs": 64,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:41 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:41.530Z",
          "endedAt": "2026-06-23T11:13:41.541Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:41 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:41.541Z",
          "endedAt": "2026-06-23T11:13:41.552Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"MAH\"}"
          },
          "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:13:41 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": "7",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"MAH\\\"}\"}'",
          "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": "MAH_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:13:41.552Z",
          "endedAt": "2026-06-23T11:13:41.564Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:41 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:41.564Z",
          "endedAt": "2026-06-23T11:13:41.637Z",
          "durationMs": 73,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:41 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": "70",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:41.637Z",
          "endedAt": "2026-06-23T11:13:41.647Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:41 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:41.647Z",
          "endedAt": "2026-06-23T11:13:41.657Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:41 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:41.657Z",
          "endedAt": "2026-06-23T11:13:41.666Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:41 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:41.666Z",
          "endedAt": "2026-06-23T11:13:41.728Z",
          "durationMs": 62,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:41 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": "59",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:41.728Z",
          "endedAt": "2026-06-23T11:13:41.739Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:41 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:41.739Z",
          "endedAt": "2026-06-23T11:13:41.748Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:41 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:41.748Z",
          "endedAt": "2026-06-23T11:13:41.762Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:41 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 POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:41.762Z",
          "endedAt": "2026-06-23T11:13:41.835Z",
          "durationMs": 73,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:41 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": "69",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:41.836Z",
          "endedAt": "2026-06-23T11:13:42.031Z",
          "durationMs": 195,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:41 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:42.031Z",
          "endedAt": "2026-06-23T11:13:42.131Z",
          "durationMs": 100,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:42 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:42.131Z",
          "endedAt": "2026-06-23T11:13:42.141Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:42 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:42.141Z",
          "endedAt": "2026-06-23T11:13:42.231Z",
          "durationMs": 90,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:42 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:42.231Z",
          "endedAt": "2026-06-23T11:13:42.242Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:42 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:42.242Z",
          "endedAt": "2026-06-23T11:13:42.524Z",
          "durationMs": 282,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:42 GMT",
            "etag": "W/\"b3-1q631+/jCgQy19DWWm06wUQizBc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "279",
            "server": "envoy",
            "connection": "close"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Email sent successfully",
            "payload": {
              "startTime": 1782213222329,
              "endTime": 1782213222488,
              "durationMs": 159,
              "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:42.524Z",
          "endedAt": "2026-06-23T11:13:42.536Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:42 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:42.536Z",
          "endedAt": "2026-06-23T11:13:42.547Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:42 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:42.547Z",
          "endedAt": "2026-06-23T11:13:42.560Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:42 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:42.560Z",
          "endedAt": "2026-06-23T11:13:42.571Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:42 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:42.572Z",
          "endedAt": "2026-06-23T11:13:42.637Z",
          "durationMs": 65,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:42 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": "62",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:42.637Z",
          "endedAt": "2026-06-23T11:13:42.648Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:42 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:42.648Z",
          "endedAt": "2026-06-23T11:13:42.660Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:42 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:42.660Z",
          "endedAt": "2026-06-23T11:13:42.842Z",
          "durationMs": 182,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:42 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": "8",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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 36ms across 5 requests"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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:13:42.842Z",
          "endedAt": "2026-06-23T11:13:42.953Z",
          "durationMs": 111,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:42 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": "9",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:42.954Z",
          "endedAt": "2026-06-23T11:13:43.071Z",
          "durationMs": 117,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:43 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": "9",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:43.071Z",
          "endedAt": "2026-06-23T11:13:43.134Z",
          "durationMs": 63,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:43 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": "60",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:43.134Z",
          "endedAt": "2026-06-23T11:13:43.140Z",
          "durationMs": 6,
          "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:13:43 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  -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": "MAH_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:13:43.140Z",
          "endedAt": "2026-06-23T11:13:43.147Z",
          "durationMs": 7,
          "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:13:43 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": "MAH_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:13:43.147Z",
          "endedAt": "2026-06-23T11:13:43.151Z",
          "durationMs": 4,
          "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:13:43 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\":\"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": "MAH_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:13:43.151Z",
          "endedAt": "2026-06-23T11:13:43.156Z",
          "durationMs": 5,
          "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:13:43 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' \\\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": "MAH_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:13:43.156Z",
          "endedAt": "2026-06-23T11:13:43.160Z",
          "durationMs": 4,
          "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:13:43 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: 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": "MAH_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:13:43.160Z",
          "endedAt": "2026-06-23T11:13:43.236Z",
          "durationMs": 76,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:43 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": "74",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:43.236Z",
          "endedAt": "2026-06-23T11:13:43.247Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:43 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": "8",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:43.247Z",
          "endedAt": "2026-06-23T11:13:43.257Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:43 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": "8",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_EMAIL_900A",
          "caseName": "Verify email OTP (Mahindra 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:13:43.258Z",
          "endedAt": "2026-06-23T11:13:43.336Z",
          "durationMs": 78,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "otp": "123456",
            "fd_info": "{\"amount\":25000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"MAH\"}"
          },
          "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:13:43 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": "75",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"otp\":\"123456\",\"fd_info\":\"{\\\"amount\\\":25000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"MAH\\\"}\"}'",
          "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": "MAH_EMAIL_900",
          "caseName": "Save email to user profile (Mahindra 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:13:43.336Z",
          "endedAt": "2026-06-23T11:13:43.366Z",
          "durationMs": 30,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn"
          },
          "requestQuery": {
            "issuer_code": "MAH",
            "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:13:43 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_EMAIL_901",
          "caseName": "Get user to confirm email state (Mahindra 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:13:43.366Z",
          "endedAt": "2026-06-23T11:13:43.428Z",
          "durationMs": 62,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "1637",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:43 GMT",
            "etag": "W/\"665-673uw+VbMnuAFoQiaOuPZwd0C6o\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": {
              "createdAt": "2026-06-23T11:13:19.000Z",
              "isActive": true,
              "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "profile_photo": null,
              "profile_photo_file_name": null,
              "pan": "249a22814bf213a7ff2e68cfa58da9d3:c7ffdd78ce0e0d9c1095a78979a7040d",
              "email": "DILIP@FIXERRA.INN",
              "password": "",
              "sub_account": "",
              "gender": "",
              "salutation": "",
              "first_name": "DILIP",
              "middle_name": "KALU",
              "last_name": "RATHOD",
              "pan_first_name": "DILIP",
              "pan_middle_name": "KALU",
              "pan_last_name": "RATHOD",
              "phone": "918668336629",
              "code": "91",
              "dob": "1992-04-30",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "",
              "user_activation_date": null,
              "user_registration_date": "2026-06-23T11:13:19.534Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "",
              "annual_income": "",
              "user_tax_status": "",
              "father_name": "KALU NATHU RATHOD",
              "is_pan_verified": false,
              "is_email_verified": true,
              "is_aadhaar_verified": false,
              "is_nominee_present": false,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "KALU",
              "kin_middle_name": "NATHU",
              "kin_last_name": "RATHOD",
              "marital_status": "",
              "kapture_id": "",
              "user_aadhaar_verification_date": null,
              "user_pan_verification_date": "2026-06-23T11:13:40.000Z",
              "user_nominee_update_date": null,
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-23T11:13:43.000Z",
              "profile_updated_at": "2026-06-23T11:13:40.000Z",
              "mother_name": null,
              "education": null,
              "source_of_income": null,
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2026-06-23T16:43:19.000Z",
              "decrypted_pan": "BLXPR3438L",
              "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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:13:43.428Z",
          "endedAt": "2026-06-23T11:13:43.655Z",
          "durationMs": 227,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "email": "qa.user@fixerra.in"
          },
          "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:13:43 GMT",
            "etag": "W/\"b3-gDXCwdt8/4XRLsNNmSrpw8MfIMI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "223",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Email sent successfully",
            "payload": {
              "startTime": 1782213223464,
              "endTime": 1782213223618,
              "durationMs": 154,
              "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"email\":\"qa.user@fixerra.in\"}'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 201"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            }
          ],
          "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:13:43.655Z",
          "endedAt": "2026-06-23T11:13:43.667Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:43 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:43.667Z",
          "endedAt": "2026-06-23T11:13:43.678Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:43 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": "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": 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:43.678Z",
          "endedAt": "2026-06-23T11:13:43.689Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:43 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": "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": 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:43.689Z",
          "endedAt": "2026-06-23T11:13:43.698Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:43 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:43.698Z",
          "endedAt": "2026-06-23T11:13:43.733Z",
          "durationMs": 35,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:43 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": "32",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:43.733Z",
          "endedAt": "2026-06-23T11:13:43.745Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:43 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:43.745Z",
          "endedAt": "2026-06-23T11:13:43.756Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:43 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:43.756Z",
          "endedAt": "2026-06-23T11:13:43.766Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:43 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:43.766Z",
          "endedAt": "2026-06-23T11:13:43.829Z",
          "durationMs": 63,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:43 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": "60",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:43.829Z",
          "endedAt": "2026-06-23T11:13:43.839Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:43 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:43.839Z",
          "endedAt": "2026-06-23T11:13:43.933Z",
          "durationMs": 94,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:43 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:43.933Z",
          "endedAt": "2026-06-23T11:13:44.031Z",
          "durationMs": 98,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:43 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:44.031Z",
          "endedAt": "2026-06-23T11:13:44.131Z",
          "durationMs": 100,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:44 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:44.131Z",
          "endedAt": "2026-06-23T11:13:44.147Z",
          "durationMs": 16,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:44 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": "13",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:44.147Z",
          "endedAt": "2026-06-23T11:13:44.231Z",
          "durationMs": 84,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:44 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:44.231Z",
          "endedAt": "2026-06-23T11:13:44.237Z",
          "durationMs": 6,
          "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:13:44 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  -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:13:44.237Z",
          "endedAt": "2026-06-23T11:13:44.331Z",
          "durationMs": 94,
          "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:13:44 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:13:44.331Z",
          "endedAt": "2026-06-23T11:13:44.336Z",
          "durationMs": 5,
          "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:13:44 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 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:13:44.336Z",
          "endedAt": "2026-06-23T11:13:44.426Z",
          "durationMs": 90,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:44 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": "87",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:44.426Z",
          "endedAt": "2026-06-23T11:13:44.458Z",
          "durationMs": 32,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:44 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": "29",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:44.458Z",
          "endedAt": "2026-06-23T11:13:44.484Z",
          "durationMs": 26,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:44 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": "23",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:44.484Z",
          "endedAt": "2026-06-23T11:13:44.542Z",
          "durationMs": 58,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:44 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": "55",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:44.542Z",
          "endedAt": "2026-06-23T11:13:44.574Z",
          "durationMs": 32,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:44 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": "30",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:44.574Z",
          "endedAt": "2026-06-23T11:13:44.633Z",
          "durationMs": 59,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:44 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": "56",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:44.633Z",
          "endedAt": "2026-06-23T11:13:44.646Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:44 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": "10",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:44.646Z",
          "endedAt": "2026-06-23T11:13:44.656Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:44 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": "7",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:44.656Z",
          "endedAt": "2026-06-23T11:13:44.735Z",
          "durationMs": 79,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:44 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": "75",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:44.735Z",
          "endedAt": "2026-06-23T11:13:44.766Z",
          "durationMs": 31,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:44 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": "28",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:44.766Z",
          "endedAt": "2026-06-23T11:13:44.783Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:44 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": "14",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:44.783Z",
          "endedAt": "2026-06-23T11:13:44.849Z",
          "durationMs": 66,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:44 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": "64",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:44.849Z",
          "endedAt": "2026-06-23T11:13:44.854Z",
          "durationMs": 5,
          "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:13:44 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  -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:13:44.854Z",
          "endedAt": "2026-06-23T11:13:44.859Z",
          "durationMs": 5,
          "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:13:44 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 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:13:44.859Z",
          "endedAt": "2026-06-23T11:13:44.867Z",
          "durationMs": 8,
          "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:13:44 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": "5",
            "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:13:44.867Z",
          "endedAt": "2026-06-23T11:13:44.934Z",
          "durationMs": 67,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:44 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": "64",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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:13:44.934Z",
          "endedAt": "2026-06-23T11:13:45.028Z",
          "durationMs": 94,
          "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:13:44 GMT",
            "etag": "W/\"1dec-6L5HpDIk3r2sCYbyReIHmZ0mRLg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:13:44.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:13:44.942Z",
              "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:13:45.028Z",
          "endedAt": "2026-06-23T11:13:45.043Z",
          "durationMs": 15,
          "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:13:45 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": "12",
            "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:13:45.043Z",
          "endedAt": "2026-06-23T11:13:45.128Z",
          "durationMs": 85,
          "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:13:45 GMT",
            "etag": "W/\"1dec-7voPwZxVw+S6LMYe8B7x8mbNXD4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:13:45.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:13:45.051Z",
              "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:13:45.128Z",
          "endedAt": "2026-06-23T11:13:45.192Z",
          "durationMs": 64,
          "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:13:45 GMT",
            "etag": "W/\"1dec-08SSV0NrEacKzJQjz5gP7CvaEgg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:13:45.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:13:45.135Z",
              "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:13:45.192Z",
          "endedAt": "2026-06-23T11:13:45.276Z",
          "durationMs": 84,
          "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:13:45 GMT",
            "etag": "W/\"1dec-LNZY0rxRFovZ6ygONmaKwHKWRmE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:13:45.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": "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:13:45.198Z",
              "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:13:45.276Z",
          "endedAt": "2026-06-23T11:13:45.372Z",
          "durationMs": 96,
          "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:13:45 GMT",
            "etag": "W/\"1dec-KC/uq2D4eb6DirnzzIvLCLbdWvw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "93",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:13:45.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": "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:13:45.285Z",
              "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:13:45.372Z",
          "endedAt": "2026-06-23T11:13:45.382Z",
          "durationMs": 10,
          "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:13:45 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": "7",
            "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:13:45.382Z",
          "endedAt": "2026-06-23T11:13:45.391Z",
          "durationMs": 9,
          "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:13:45 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": "6",
            "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:13:45.391Z",
          "endedAt": "2026-06-23T11:13:45.489Z",
          "durationMs": 98,
          "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:13:45 GMT",
            "etag": "W/\"1df6-cxM7a+hw/xIeBRo50Aw9nv07bdA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:13:45.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:13:45.398Z",
              "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:13:45.489Z",
          "endedAt": "2026-06-23T11:13:45.555Z",
          "durationMs": 66,
          "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:13:45 GMT",
            "etag": "W/\"1de2-LqyYf/NWsP13iLkG6UDnVQ7dKuE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:13:45.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:13:45.495Z",
              "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:13:45.555Z",
          "endedAt": "2026-06-23T11:13:45.608Z",
          "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:13:45 GMT",
            "etag": "W/\"1de2-GT3Qcs+z193uHegKF5zIyng28o8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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:13:45.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:13:45.563Z",
              "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:13:45.609Z",
          "endedAt": "2026-06-23T11:13:45.671Z",
          "durationMs": 62,
          "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:13:45 GMT",
            "etag": "W/\"1de2-nemNby07I6wkMBdzF9X9XdO4dMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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",
            "connection": "close"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:13:45.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:13:45.616Z",
              "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:13:45.671Z",
          "endedAt": "2026-06-23T11:13:45.749Z",
          "durationMs": 78,
          "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:13:45 GMT",
            "etag": "W/\"1de2-nc7msRvup7i4aM6Qg8GvjACIoJE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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:13:45.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:13:45.691Z",
              "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:13:45.749Z",
          "endedAt": "2026-06-23T11:13:45.847Z",
          "durationMs": 98,
          "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:13:45 GMT",
            "etag": "W/\"1de2-PlBCBkAeqnpXi0AE8zgmLM6K93M\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:13:45.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:13:45.761Z",
              "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:13:45.847Z",
          "endedAt": "2026-06-23T11:13:45.945Z",
          "durationMs": 98,
          "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:13:45 GMT",
            "etag": "W/\"1de2-Fh0MjY+NmQY6g8vjmZ/x2J4mG5M\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:13:45.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:13:45.854Z",
              "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:13:45.945Z",
          "endedAt": "2026-06-23T11:13:45.998Z",
          "durationMs": 53,
          "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:13:45 GMT",
            "etag": "W/\"1de2-FGmS09gDjCL9YZ+RuXoMVp5d3n0\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "49",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:13:45.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:13:45.952Z",
              "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:13:45.998Z",
          "endedAt": "2026-06-23T11:13:46.073Z",
          "durationMs": 75,
          "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:13:46 GMT",
            "etag": "W/\"1de2-VHpddJ6yO1p0DhFUtV98yMHyC9g\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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:13:46.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:13:46.026Z",
              "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:13:46.073Z",
          "endedAt": "2026-06-23T11:13:46.166Z",
          "durationMs": 93,
          "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:13:46 GMT",
            "etag": "W/\"1de2-vVCCxJ+sQxM0E/5RlnfSFqRZWGw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:13:46.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:13:46.081Z",
              "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:13:46.166Z",
          "endedAt": "2026-06-23T11:13:46.216Z",
          "durationMs": 50,
          "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:13:46 GMT",
            "etag": "W/\"1de2-l3oSa+U3mZNBQdXEPZ8i1QS3Tzo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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:13:46.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:13:46.172Z",
              "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:13:46.216Z",
          "endedAt": "2026-06-23T11:13:46.270Z",
          "durationMs": 54,
          "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:13:46 GMT",
            "etag": "W/\"1de2-pycNwgnbg0Xwrm97VHUok8/Svh0\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:13:46.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:13:46.223Z",
              "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:13:46.270Z",
          "endedAt": "2026-06-23T11:13:46.285Z",
          "durationMs": 15,
          "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:13:46 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 '{\"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:13:46.285Z",
          "endedAt": "2026-06-23T11:13:46.329Z",
          "durationMs": 44,
          "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:13:46 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": "41",
            "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:13:46.329Z",
          "endedAt": "2026-06-23T11:13:46.385Z",
          "durationMs": 56,
          "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:13:46 GMT",
            "etag": "W/\"1de2-fQOyI1Y3l+dYJDD9C9I84bcbb8Q\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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:13:46.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:13:46.337Z",
              "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:13:46.385Z",
          "endedAt": "2026-06-23T11:13:46.468Z",
          "durationMs": 83,
          "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:13:46 GMT",
            "etag": "W/\"1de2-+MDrGDtrN+1nF0zp45DYgfYvJuk\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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",
            "connection": "close"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:13:46.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:13:46.426Z",
              "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:13:46.468Z",
          "endedAt": "2026-06-23T11:13:46.538Z",
          "durationMs": 70,
          "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:13:46 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": "5",
            "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:13:46.538Z",
          "endedAt": "2026-06-23T11:13:46.609Z",
          "durationMs": 71,
          "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:13:46 GMT",
            "etag": "W/\"1de2-gGKiFil4WVD0rNDnV3QW7g0k9GY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:13:46.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:13:46.548Z",
              "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:13:46.609Z",
          "endedAt": "2026-06-23T11:13:46.618Z",
          "durationMs": 9,
          "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:13:46 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 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:13:46.618Z",
          "endedAt": "2026-06-23T11:13:46.626Z",
          "durationMs": 8,
          "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:13:46 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": "5",
            "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:13:46.626Z",
          "endedAt": "2026-06-23T11:13:46.634Z",
          "durationMs": 8,
          "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:13:46 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": "5",
            "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:13:46.634Z",
          "endedAt": "2026-06-23T11:13:46.643Z",
          "durationMs": 9,
          "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:13:46 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": "5",
            "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:13:46.643Z",
          "endedAt": "2026-06-23T11:13:46.651Z",
          "durationMs": 8,
          "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:13:46 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": "5",
            "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:13:46.651Z",
          "endedAt": "2026-06-23T11:13:46.658Z",
          "durationMs": 7,
          "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:13:46 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": "4",
            "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:13:46.658Z",
          "endedAt": "2026-06-23T11:13:46.666Z",
          "durationMs": 8,
          "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:13:46 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": "5",
            "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:13:46.666Z",
          "endedAt": "2026-06-23T11:13:46.731Z",
          "durationMs": 65,
          "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:13:46 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": "60",
            "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:13:46.731Z",
          "endedAt": "2026-06-23T11:13:46.744Z",
          "durationMs": 13,
          "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:13:46 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": "10",
            "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:13:46.744Z",
          "endedAt": "2026-06-23T11:13:46.752Z",
          "durationMs": 8,
          "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:13:46 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": "5",
            "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:13:46.752Z",
          "endedAt": "2026-06-23T11:13:46.760Z",
          "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:13:46 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": "4",
            "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:13:46.760Z",
          "endedAt": "2026-06-23T11:13:46.840Z",
          "durationMs": 80,
          "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:13:46 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": "6",
            "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:13:46.840Z",
          "endedAt": "2026-06-23T11:13:46.847Z",
          "durationMs": 7,
          "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:13:46 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": "4",
            "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:13:46.847Z",
          "endedAt": "2026-06-23T11:13:46.865Z",
          "durationMs": 18,
          "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:13:46 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=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:13:46.865Z",
          "endedAt": "2026-06-23T11:13:46.949Z",
          "durationMs": 84,
          "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:13:46 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": "81",
            "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:13:46.950Z",
          "endedAt": "2026-06-23T11:13:46.964Z",
          "durationMs": 14,
          "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:13:46 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": "10",
            "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:13:46.964Z",
          "endedAt": "2026-06-23T11:13:47.048Z",
          "durationMs": 84,
          "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:13:47 GMT",
            "etag": "W/\"1de2-9xfiyPZVAPvrlRMARO5cbdS7g74\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:13:46.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:13:46.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 '{\"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:13:47.048Z",
          "endedAt": "2026-06-23T11:13:47.057Z",
          "durationMs": 9,
          "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:13:47 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": "6",
            "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:13:47.057Z",
          "endedAt": "2026-06-23T11:13:47.095Z",
          "durationMs": 38,
          "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:13:47 GMT",
            "etag": "W/\"1df6-RERIBkSIBVlSpavPwMUlcn0QgSM\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:13:47.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:13:47.065Z",
              "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:13:47.095Z",
          "endedAt": "2026-06-23T11:13:47.201Z",
          "durationMs": 106,
          "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:13:47 GMT",
            "etag": "W/\"1df4-G4nDJMO49mnmfBNuXq7+VjiS4iI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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:13:47.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": "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:13:47.131Z",
              "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:13:47.201Z",
          "endedAt": "2026-06-23T11:13:47.298Z",
          "durationMs": 97,
          "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:13:47 GMT",
            "etag": "W/\"1dec-GF6f5s7uw+1LhikAoGr3rPwDoOY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "94",
            "server": "envoy",
            "connection": "close"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:13:47.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:13:47.208Z",
              "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:13:47.298Z",
          "endedAt": "2026-06-23T11:13:47.331Z",
          "durationMs": 33,
          "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:13:47 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=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:13:47.331Z",
          "endedAt": "2026-06-23T11:13:47.369Z",
          "durationMs": 38,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "1638",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:47 GMT",
            "etag": "W/\"666-tpLEPUF2yQfb84Hsoa26quPwuJ8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": {
              "createdAt": "2026-06-23T11:13:19.000Z",
              "isActive": true,
              "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "profile_photo": null,
              "profile_photo_file_name": null,
              "pan": "249a22814bf213a7ff2e68cfa58da9d3:c7ffdd78ce0e0d9c1095a78979a7040d",
              "email": "qa.user@fixerra.in",
              "password": "",
              "sub_account": "",
              "gender": "",
              "salutation": "",
              "first_name": "DILIP",
              "middle_name": "KALU",
              "last_name": "RATHOD",
              "pan_first_name": "DILIP",
              "pan_middle_name": "KALU",
              "pan_last_name": "RATHOD",
              "phone": "918668336629",
              "code": "91",
              "dob": "1992-04-30",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "",
              "user_activation_date": null,
              "user_registration_date": "2026-06-23T11:13:19.534Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "",
              "annual_income": "",
              "user_tax_status": "",
              "father_name": "KALU NATHU RATHOD",
              "is_pan_verified": false,
              "is_email_verified": true,
              "is_aadhaar_verified": false,
              "is_nominee_present": false,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "KALU",
              "kin_middle_name": "NATHU",
              "kin_last_name": "RATHOD",
              "marital_status": "",
              "kapture_id": "",
              "user_aadhaar_verification_date": null,
              "user_pan_verification_date": "2026-06-23T11:13:40.000Z",
              "user_nominee_update_date": null,
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-23T11:13:45.000Z",
              "profile_updated_at": "2026-06-23T11:13:40.000Z",
              "mother_name": null,
              "education": null,
              "source_of_income": null,
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2026-06-23T16:43:19.000Z",
              "decrypted_pan": "BLXPR3438L",
              "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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:13:47.369Z",
          "endedAt": "2026-06-23T11:13:47.460Z",
          "durationMs": 91,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "1638",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:47 GMT",
            "etag": "W/\"666-tpLEPUF2yQfb84Hsoa26quPwuJ8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 200,
            "message": "SUCCESS",
            "payload": {
              "createdAt": "2026-06-23T11:13:19.000Z",
              "isActive": true,
              "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "profile_photo": null,
              "profile_photo_file_name": null,
              "pan": "249a22814bf213a7ff2e68cfa58da9d3:c7ffdd78ce0e0d9c1095a78979a7040d",
              "email": "qa.user@fixerra.in",
              "password": "",
              "sub_account": "",
              "gender": "",
              "salutation": "",
              "first_name": "DILIP",
              "middle_name": "KALU",
              "last_name": "RATHOD",
              "pan_first_name": "DILIP",
              "pan_middle_name": "KALU",
              "pan_last_name": "RATHOD",
              "phone": "918668336629",
              "code": "91",
              "dob": "1992-04-30",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "",
              "user_activation_date": null,
              "user_registration_date": "2026-06-23T11:13:19.534Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "",
              "annual_income": "",
              "user_tax_status": "",
              "father_name": "KALU NATHU RATHOD",
              "is_pan_verified": false,
              "is_email_verified": true,
              "is_aadhaar_verified": false,
              "is_nominee_present": false,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "KALU",
              "kin_middle_name": "NATHU",
              "kin_last_name": "RATHOD",
              "marital_status": "",
              "kapture_id": "",
              "user_aadhaar_verification_date": null,
              "user_pan_verification_date": "2026-06-23T11:13:40.000Z",
              "user_nominee_update_date": null,
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-23T11:13:45.000Z",
              "profile_updated_at": "2026-06-23T11:13:40.000Z",
              "mother_name": null,
              "education": null,
              "source_of_income": null,
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2026-06-23T16:43:19.000Z",
              "decrypted_pan": "BLXPR3438L",
              "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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:13:47.460Z",
          "endedAt": "2026-06-23T11:13:47.540Z",
          "durationMs": 80,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "issuer_code": "SSFB"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "1638",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:47 GMT",
            "etag": "W/\"666-tpLEPUF2yQfb84Hsoa26quPwuJ8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": {
              "createdAt": "2026-06-23T11:13:19.000Z",
              "isActive": true,
              "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "profile_photo": null,
              "profile_photo_file_name": null,
              "pan": "249a22814bf213a7ff2e68cfa58da9d3:c7ffdd78ce0e0d9c1095a78979a7040d",
              "email": "qa.user@fixerra.in",
              "password": "",
              "sub_account": "",
              "gender": "",
              "salutation": "",
              "first_name": "DILIP",
              "middle_name": "KALU",
              "last_name": "RATHOD",
              "pan_first_name": "DILIP",
              "pan_middle_name": "KALU",
              "pan_last_name": "RATHOD",
              "phone": "918668336629",
              "code": "91",
              "dob": "1992-04-30",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "",
              "user_activation_date": null,
              "user_registration_date": "2026-06-23T11:13:19.534Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "",
              "annual_income": "",
              "user_tax_status": "",
              "father_name": "KALU NATHU RATHOD",
              "is_pan_verified": false,
              "is_email_verified": true,
              "is_aadhaar_verified": false,
              "is_nominee_present": false,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "KALU",
              "kin_middle_name": "NATHU",
              "kin_last_name": "RATHOD",
              "marital_status": "",
              "kapture_id": "",
              "user_aadhaar_verification_date": null,
              "user_pan_verification_date": "2026-06-23T11:13:40.000Z",
              "user_nominee_update_date": null,
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-23T11:13:45.000Z",
              "profile_updated_at": "2026-06-23T11:13:40.000Z",
              "mother_name": null,
              "education": null,
              "source_of_income": null,
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2026-06-23T16:43:19.000Z",
              "decrypted_pan": "BLXPR3438L",
              "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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:13:47.540Z",
          "endedAt": "2026-06-23T11:13:47.547Z",
          "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:13:47 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/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": 6988
      }
    },
    {
      "stepId": "step-05-personal-details",
      "stepName": "Personal Details",
      "cases": [
        {
          "caseId": "MAH_PI_001",
          "caseName": "Get dropdown options for personal info form (Mahindra 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:13:47.547Z",
          "endedAt": "2026-06-23T11:13:47.551Z",
          "durationMs": 4,
          "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:13:47 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": "2",
            "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": "MAH_PI_002",
          "caseName": "Save personal details for Mahindra 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:13:47.551Z",
          "endedAt": "2026-06-23T11:13:47.626Z",
          "durationMs": 75,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:47 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:47.626Z",
          "endedAt": "2026-06-23T11:13:47.658Z",
          "durationMs": 32,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:47 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:47.658Z",
          "endedAt": "2026-06-23T11:13:47.686Z",
          "durationMs": 28,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:47 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": "22",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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=28ms"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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:13:47.686Z",
          "endedAt": "2026-06-23T11:13:47.751Z",
          "durationMs": 65,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:47 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": "62",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:47.751Z",
          "endedAt": "2026-06-23T11:13:47.780Z",
          "durationMs": 29,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:47 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:47.780Z",
          "endedAt": "2026-06-23T11:13:47.835Z",
          "durationMs": 55,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:47 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": "52",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:47.835Z",
          "endedAt": "2026-06-23T11:13:47.847Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:47 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 PUT 'https://users-api.dev.fixerra.in/user?issuer_code=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:47.847Z",
          "endedAt": "2026-06-23T11:13:47.860Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:47 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 PUT 'https://users-api.dev.fixerra.in/user?issuer_code=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:47.860Z",
          "endedAt": "2026-06-23T11:13:47.927Z",
          "durationMs": 67,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:47 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 PUT 'https://users-api.dev.fixerra.in/user?issuer_code=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:47.927Z",
          "endedAt": "2026-06-23T11:13:47.955Z",
          "durationMs": 28,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:47 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:47.955Z",
          "endedAt": "2026-06-23T11:13:47.981Z",
          "durationMs": 26,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:47 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": "23",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:47.981Z",
          "endedAt": "2026-06-23T11:13:48.029Z",
          "durationMs": 48,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:48 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": "45",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:48.029Z",
          "endedAt": "2026-06-23T11:13:48.133Z",
          "durationMs": 104,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:48 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:48.133Z",
          "endedAt": "2026-06-23T11:13:48.331Z",
          "durationMs": 198,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:48 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": "14",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:48.331Z",
          "endedAt": "2026-06-23T11:13:48.731Z",
          "durationMs": 400,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:48 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 PUT 'https://users-api.dev.fixerra.in/user?issuer_code=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:48.731Z",
          "endedAt": "2026-06-23T11:13:49.031Z",
          "durationMs": 300,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:48 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 PUT 'https://users-api.dev.fixerra.in/user?issuer_code=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:49.031Z",
          "endedAt": "2026-06-23T11:13:49.331Z",
          "durationMs": 300,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:49 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": "28",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:49.331Z",
          "endedAt": "2026-06-23T11:13:49.531Z",
          "durationMs": 200,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:49 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:49.531Z",
          "endedAt": "2026-06-23T11:13:49.833Z",
          "durationMs": 302,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:49 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": "7",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:49.833Z",
          "endedAt": "2026-06-23T11:13:50.331Z",
          "durationMs": 498,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:49 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": "7",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:50.331Z",
          "endedAt": "2026-06-23T11:13:50.531Z",
          "durationMs": 200,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:50 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": "8",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:50.531Z",
          "endedAt": "2026-06-23T11:13:50.541Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:50 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": "8",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:50.542Z",
          "endedAt": "2026-06-23T11:13:50.631Z",
          "durationMs": 89,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:50 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": "9",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:50.631Z",
          "endedAt": "2026-06-23T11:13:50.646Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:50 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": "13",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:50.646Z",
          "endedAt": "2026-06-23T11:13:50.661Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:50 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:50.661Z",
          "endedAt": "2026-06-23T11:13:50.754Z",
          "durationMs": 93,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:50 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:50.754Z",
          "endedAt": "2026-06-23T11:13:50.765Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:50 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": "9",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:50.765Z",
          "endedAt": "2026-06-23T11:13:50.841Z",
          "durationMs": 76,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:50 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:50.841Z",
          "endedAt": "2026-06-23T11:13:50.853Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:50 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": "9",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:50.853Z",
          "endedAt": "2026-06-23T11:13:50.946Z",
          "durationMs": 93,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:50 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": "91",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:50.946Z",
          "endedAt": "2026-06-23T11:13:50.958Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:50 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:50.958Z",
          "endedAt": "2026-06-23T11:13:51.026Z",
          "durationMs": 68,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:50 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": "65",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.027Z",
          "endedAt": "2026-06-23T11:13:51.054Z",
          "durationMs": 27,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.054Z",
          "endedAt": "2026-06-23T11:13:51.067Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.067Z",
          "endedAt": "2026-06-23T11:13:51.147Z",
          "durationMs": 80,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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": "78",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.148Z",
          "endedAt": "2026-06-23T11:13:51.165Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.165Z",
          "endedAt": "2026-06-23T11:13:51.235Z",
          "durationMs": 70,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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": "67",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.235Z",
          "endedAt": "2026-06-23T11:13:51.248Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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": "10",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.248Z",
          "endedAt": "2026-06-23T11:13:51.277Z",
          "durationMs": 29,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.277Z",
          "endedAt": "2026-06-23T11:13:51.327Z",
          "durationMs": 50,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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": "47",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.327Z",
          "endedAt": "2026-06-23T11:13:51.339Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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": "9",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.339Z",
          "endedAt": "2026-06-23T11:13:51.433Z",
          "durationMs": 94,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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": "92",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.433Z",
          "endedAt": "2026-06-23T11:13:51.445Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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": "9",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.445Z",
          "endedAt": "2026-06-23T11:13:51.473Z",
          "durationMs": 28,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.473Z",
          "endedAt": "2026-06-23T11:13:51.484Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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": "8",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.484Z",
          "endedAt": "2026-06-23T11:13:51.541Z",
          "durationMs": 57,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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": "53",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.541Z",
          "endedAt": "2026-06-23T11:13:51.551Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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": "7",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.551Z",
          "endedAt": "2026-06-23T11:13:51.628Z",
          "durationMs": 77,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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": "74",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.629Z",
          "endedAt": "2026-06-23T11:13:51.640Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.640Z",
          "endedAt": "2026-06-23T11:13:51.651Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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": "7",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.651Z",
          "endedAt": "2026-06-23T11:13:51.731Z",
          "durationMs": 80,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.731Z",
          "endedAt": "2026-06-23T11:13:51.745Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.745Z",
          "endedAt": "2026-06-23T11:13:51.756Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.756Z",
          "endedAt": "2026-06-23T11:13:51.767Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.768Z",
          "endedAt": "2026-06-23T11:13:51.784Z",
          "durationMs": 16,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.784Z",
          "endedAt": "2026-06-23T11:13:51.840Z",
          "durationMs": 56,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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": "53",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.840Z",
          "endedAt": "2026-06-23T11:13:51.944Z",
          "durationMs": 104,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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": "100",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.944Z",
          "endedAt": "2026-06-23T11:13:51.955Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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": "8",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.955Z",
          "endedAt": "2026-06-23T11:13:51.982Z",
          "durationMs": 27,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:51 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:51.982Z",
          "endedAt": "2026-06-23T11:13:52.143Z",
          "durationMs": 161,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:52 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": "158",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:52.143Z",
          "endedAt": "2026-06-23T11:13:52.250Z",
          "durationMs": 107,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:52 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": "104",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:52.250Z",
          "endedAt": "2026-06-23T11:13:52.262Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:52 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": "9",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:52.262Z",
          "endedAt": "2026-06-23T11:13:52.344Z",
          "durationMs": 82,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:52 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": "80",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:52.344Z",
          "endedAt": "2026-06-23T11:13:52.357Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:52 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": "10",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:52.357Z",
          "endedAt": "2026-06-23T11:13:52.377Z",
          "durationMs": 20,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:52 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:52.377Z",
          "endedAt": "2026-06-23T11:13:52.435Z",
          "durationMs": 58,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:52 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": "55",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:52.435Z",
          "endedAt": "2026-06-23T11:13:52.536Z",
          "durationMs": 101,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:52 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": "97",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:52.536Z",
          "endedAt": "2026-06-23T11:13:52.736Z",
          "durationMs": 200,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:52 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": "197",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:52.736Z",
          "endedAt": "2026-06-23T11:13:53.030Z",
          "durationMs": 294,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:52 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": "291",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:53.030Z",
          "endedAt": "2026-06-23T11:13:53.045Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:53 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": "12",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:53.045Z",
          "endedAt": "2026-06-23T11:13:53.056Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:53 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:53.056Z",
          "endedAt": "2026-06-23T11:13:53.075Z",
          "durationMs": 19,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:53 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": "15",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:53.075Z",
          "endedAt": "2026-06-23T11:13:53.130Z",
          "durationMs": 55,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:53 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": "51",
            "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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:53.130Z",
          "endedAt": "2026-06-23T11:13:53.138Z",
          "durationMs": 8,
          "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": "MAH",
            "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:13:53 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=MAH&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": "MAH_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:13:53.138Z",
          "endedAt": "2026-06-23T11:13:53.143Z",
          "durationMs": 5,
          "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": "MAH",
            "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:13:53 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=MAH&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": "MAH_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:13:53.143Z",
          "endedAt": "2026-06-23T11:13:53.150Z",
          "durationMs": 7,
          "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": "MAH",
            "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:13:53 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 PUT 'https://users-api.dev.fixerra.in/user?issuer_code=MAH&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": "MAH_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:13:53.151Z",
          "endedAt": "2026-06-23T11:13:53.170Z",
          "durationMs": 19,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:53 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:53.171Z",
          "endedAt": "2026-06-23T11:13:53.240Z",
          "durationMs": 69,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:53 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": "67",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:53.240Z",
          "endedAt": "2026-06-23T11:13:53.253Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:53 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:53.253Z",
          "endedAt": "2026-06-23T11:13:53.330Z",
          "durationMs": 77,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:53 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:53.331Z",
          "endedAt": "2026-06-23T11:13:53.430Z",
          "durationMs": 99,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:53 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:53.430Z",
          "endedAt": "2026-06-23T11:13:53.449Z",
          "durationMs": 18,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:53 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:13:53.449Z",
          "endedAt": "2026-06-23T11:13:53.462Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH",
            "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:13:53 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=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": 5906
      }
    },
    {
      "stepId": "step-06-aadhaar-kyc",
      "stepName": "Aadhaar KYC (Digilocker)",
      "cases": [
        {
          "caseId": "MAH_KYC_001",
          "caseName": "Mahindra Aadhaar gate: fresh user has is_aadhaar_xml_present falsy",
          "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:13:53.462Z",
          "endedAt": "2026-06-23T11:13:53.547Z",
          "durationMs": 85,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "1638",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:53 GMT",
            "etag": "W/\"666-tpLEPUF2yQfb84Hsoa26quPwuJ8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 200,
            "message": "SUCCESS",
            "payload": {
              "createdAt": "2026-06-23T11:13:19.000Z",
              "isActive": true,
              "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "profile_photo": null,
              "profile_photo_file_name": null,
              "pan": "249a22814bf213a7ff2e68cfa58da9d3:c7ffdd78ce0e0d9c1095a78979a7040d",
              "email": "qa.user@fixerra.in",
              "password": "",
              "sub_account": "",
              "gender": "",
              "salutation": "",
              "first_name": "DILIP",
              "middle_name": "KALU",
              "last_name": "RATHOD",
              "pan_first_name": "DILIP",
              "pan_middle_name": "KALU",
              "pan_last_name": "RATHOD",
              "phone": "918668336629",
              "code": "91",
              "dob": "1992-04-30",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "",
              "user_activation_date": null,
              "user_registration_date": "2026-06-23T11:13:19.534Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "",
              "annual_income": "",
              "user_tax_status": "",
              "father_name": "KALU NATHU RATHOD",
              "is_pan_verified": false,
              "is_email_verified": true,
              "is_aadhaar_verified": false,
              "is_nominee_present": false,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "KALU",
              "kin_middle_name": "NATHU",
              "kin_last_name": "RATHOD",
              "marital_status": "",
              "kapture_id": "",
              "user_aadhaar_verification_date": null,
              "user_pan_verification_date": "2026-06-23T11:13:40.000Z",
              "user_nominee_update_date": null,
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-23T11:13:45.000Z",
              "profile_updated_at": "2026-06-23T11:13:40.000Z",
              "mother_name": null,
              "education": null,
              "source_of_income": null,
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2026-06-23T16:43:19.000Z",
              "decrypted_pan": "BLXPR3438L",
              "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "is_aadhaar_xml_present should be falsy for a fresh NTB user (UI routes to Aadhaar screen)",
              "passed": true,
              "message": "is_aadhaar_xml_present=false — Aadhaar step correctly required"
            }
          ],
          "docsFile": "user-services/API_QA_PI_GET_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_002",
          "caseName": "Verify Digilocker URL generation with valid token",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:53.547Z",
          "endedAt": "2026-06-23T11:13:53.725Z",
          "durationMs": 178,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "421",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:53 GMT",
            "etag": "W/\"1a5-7OTfIf0R3eVXHmz+4+yH9TlBcWc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "176",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?client_id=7E5773C4&code_challenge=NCcTcyKUvQfM0m4_zHKgukRx5KRx_gZSTXJYGgjy4QE&code_challenge_method=S256&dl_flow=signup&pla&redirect_uri=https%3A%2F%2Fdigilocker-preproduction.signzy.tech%2Fdigilocker-auth-complete&req_doctype=PANCR%2CADHAR%2CDRVLC&response_type=code&state=6a3a6a71a2aed6dade6966b7"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "HTTP status should be 200/201 (contract status is body.statusCode)",
              "passed": true,
              "message": "HTTP 201"
            },
            {
              "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.url should be present and non-empty",
              "passed": true,
              "message": "url length=357"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_003",
          "caseName": "Verify Digilocker URL starts with HTTPS",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:53.726Z",
          "endedAt": "2026-06-23T11:13:53.884Z",
          "durationMs": 158,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "421",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:53 GMT",
            "etag": "W/\"1a5-dezfAobbtJV3AGuuTpDiD2OPqck\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "156",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?client_id=7E5773C4&code_challenge=bYOSgcJreUfMGwuswjgRPq_sqd7eqlz_3NpAx_M0wNk&code_challenge_method=S256&dl_flow=signup&pla&redirect_uri=https%3A%2F%2Fdigilocker-preproduction.signzy.tech%2Fdigilocker-auth-complete&req_doctype=PANCR%2CADHAR%2CDRVLC&response_type=code&state=6a3a6a71a2aed6dade6966bb"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "payload.url should start with https://",
              "passed": true,
              "message": "URL starts with https://"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_004",
          "caseName": "Verify Digilocker URL format validity",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:53.885Z",
          "endedAt": "2026-06-23T11:13:54.067Z",
          "durationMs": 182,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "421",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:54 GMT",
            "etag": "W/\"1a5-A0fXPXCSboWVVGkbA7AZKW+fr7E\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "179",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?client_id=7E5773C4&code_challenge=9bksjZXZlqiJih1R3zA-ugqztg_2QxTcTYUtLSKcRdo&code_challenge_method=S256&dl_flow=signup&pla&redirect_uri=https%3A%2F%2Fdigilocker-preproduction.signzy.tech%2Fdigilocker-auth-complete&req_doctype=PANCR%2CADHAR%2CDRVLC&response_type=code&state=6a3a6a71a2aed6dade6966bf"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "payload.url should be a well-formed URL",
              "passed": true,
              "message": "URL is well-formed"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_005",
          "caseName": "Verify response content type",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:54.067Z",
          "endedAt": "2026-06-23T11:13:54.225Z",
          "durationMs": 158,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "421",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:54 GMT",
            "etag": "W/\"1a5-GaZ0Oa0VL1JJZfwOjCWIVD8Nbyc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "155",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?client_id=7E5773C4&code_challenge=igEVFjq8pAAt-eU7BzFTVq4le1iUTPMIJOpF_RJ05Bo&code_challenge_method=S256&dl_flow=signup&pla&redirect_uri=https%3A%2F%2Fdigilocker-preproduction.signzy.tech%2Fdigilocker-auth-complete&req_doctype=PANCR%2CADHAR%2CDRVLC&response_type=code&state=6a3a6a72a2aed6dade6966c3"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Response content type should be application/json",
              "passed": true,
              "message": "application/json response"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_006",
          "caseName": "Verify response time (external Signzy session creation)",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:54.225Z",
          "endedAt": "2026-06-23T11:13:54.382Z",
          "durationMs": 157,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "421",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:54 GMT",
            "etag": "W/\"1a5-xnc/nWaqgC8bHxuLyh++vQN7ZcQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "155",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?client_id=7E5773C4&code_challenge=y8o4tPkV_1qJzSuq8yQaJFljbJh1YAKpq-8RDUVpVUA&code_challenge_method=S256&dl_flow=signup&pla&redirect_uri=https%3A%2F%2Fdigilocker-preproduction.signzy.tech%2Fdigilocker-auth-complete&req_doctype=PANCR%2CADHAR%2CDRVLC&response_type=code&state=6a3a6a72a2aed6dade6966c7"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Response should complete within 5000ms",
              "passed": true,
              "message": "duration=157ms"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_007",
          "caseName": "Verify URL does not expose personal data in plain text",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:54.382Z",
          "endedAt": "2026-06-23T11:13:54.543Z",
          "durationMs": 161,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "421",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:54 GMT",
            "etag": "W/\"1a5-J3NJItgH0pkWw1pvhIFO/CoYw3o\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 200,
            "message": "",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?client_id=7E5773C4&code_challenge=AxwmF_x4H1OWdkNy3W0Vl1EoheHvrLC0jpLTAPHBDIM&code_challenge_method=S256&dl_flow=signup&pla&redirect_uri=https%3A%2F%2Fdigilocker-preproduction.signzy.tech%2Fdigilocker-auth-complete&req_doctype=PANCR%2CADHAR%2CDRVLC&response_type=code&state=6a3a6a72a2aed6dade6966cb"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Digilocker URL should not contain PAN or mobile number in plain text",
              "passed": true,
              "message": "No PAN/mobile in plain text in URL"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_008",
          "caseName": "Verify response does not expose JWT token",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:54.544Z",
          "endedAt": "2026-06-23T11:13:54.690Z",
          "durationMs": 146,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "421",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:54 GMT",
            "etag": "W/\"1a5-Z39w2Y+qI/FHeVN87X2iIZQd8TA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "144",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?client_id=7E5773C4&code_challenge=lGgM5lz9SXYxHKPrEYvOSzPzQlPCSEgM1UzmhkE8hjE&code_challenge_method=S256&dl_flow=signup&pla&redirect_uri=https%3A%2F%2Fdigilocker-preproduction.signzy.tech%2Fdigilocker-auth-complete&req_doctype=PANCR%2CADHAR%2CDRVLC&response_type=code&state=6a3a6a72a2aed6dade6966cf"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Response should not expose the JWT access token",
              "passed": true,
              "message": "JWT token not present in response body"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_009",
          "caseName": "Verify repeated calls generate a Digilocker URL successfully",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:54.691Z",
          "endedAt": "2026-06-23T11:13:54.844Z",
          "durationMs": 153,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "421",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:54 GMT",
            "etag": "W/\"1a5-/VT2hI5+JvnPNRtlIsniettsmaE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "151",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?client_id=7E5773C4&code_challenge=Jxk3z2ANobzsUF53UNvbrKU6HFHcZ7nCzB022CKk748&code_challenge_method=S256&dl_flow=signup&pla&redirect_uri=https%3A%2F%2Fdigilocker-preproduction.signzy.tech%2Fdigilocker-auth-complete&req_doctype=PANCR%2CADHAR%2CDRVLC&response_type=code&state=6a3a6a72a2aed6dade6966d3"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "HTTP status should be 200/201 (contract status is body.statusCode)",
              "passed": true,
              "message": "HTTP 201"
            },
            {
              "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.url should be present and non-empty",
              "passed": true,
              "message": "url length=357"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_010",
          "caseName": "Verify missing source query is rejected with FIXUSER1091 (quirk: success stays 1)",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:54.844Z",
          "endedAt": "2026-06-23T11:13:54.872Z",
          "durationMs": 28,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "67",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:54 GMT",
            "etag": "W/\"43-ASewrGSLEbgCj0SGo97MalFtTDA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 400,
            "message": "",
            "payload": "FIXUSER1091"
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Body statusCode should be 400",
              "passed": true,
              "message": "statusCode=400"
            },
            {
              "description": "Error payload should carry FIXUSER1091 (URL creation failure code)",
              "passed": true,
              "message": "FIXUSER1091 present"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_011",
          "caseName": "Verify Authorization header mandatory",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:54.872Z",
          "endedAt": "2026-06-23T11:13:54.877Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "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:13:54 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/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "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 an auth rejection",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_012",
          "caseName": "Verify invalid JWT token",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:54.877Z",
          "endedAt": "2026-06-23T11:13:54.882Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer invalid.jwt.token"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "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:13:54 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/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\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": "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 an auth rejection",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_013",
          "caseName": "Verify expired JWT token",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:54.882Z",
          "endedAt": "2026-06-23T11:13:54.887Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer expired.jwt.token"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "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:13:54 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/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\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": "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 an auth rejection",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_014",
          "caseName": "Verify Bearer keyword missing",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:54.887Z",
          "endedAt": "2026-06-23T11:13:54.931Z",
          "durationMs": 44,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "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:13:54 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/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "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 an auth rejection",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_015",
          "caseName": "Verify invalid Bearer format (Basic scheme)",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:54.931Z",
          "endedAt": "2026-06-23T11:13:54.937Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Basic dXNlcjpwYXNz"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "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:13:54 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/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Basic dXNlcjpwYXNz'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "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 an auth rejection",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_020",
          "caseName": "Verify Digilocker status reflects initiated session",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker/status",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:54.937Z",
          "endedAt": "2026-06-23T11:13:54.989Z",
          "durationMs": 52,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "326",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:54 GMT",
            "etag": "W/\"146-r4QQ2JwIY0fsdv1xaCvHS63Zw4M\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": {
              "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "digilocker_initiated": true,
              "verified": false,
              "error": {
                "errorCode": "FIXUSER1500",
                "error": "DIGILOKER_TIMED_OUT",
                "f_error_message": "Digilocker initiated but not processed yet",
                "f_error_reason": "DIGILOKER_TIMED_OUT"
              }
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/api/v1/digilocker/status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "HTTP status should be 200/201 (contract status is body.statusCode)",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "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.digilocker_initiated should be true after URL creation",
              "passed": true,
              "message": "digilocker_initiated=true"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_021",
          "caseName": "Verify Digilocker status is unverified until external completion",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker/status",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:54.989Z",
          "endedAt": "2026-06-23T11:13:55.027Z",
          "durationMs": 38,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "326",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:55 GMT",
            "etag": "W/\"146-r4QQ2JwIY0fsdv1xaCvHS63Zw4M\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "digilocker_initiated": true,
              "verified": false,
              "error": {
                "errorCode": "FIXUSER1500",
                "error": "DIGILOKER_TIMED_OUT",
                "f_error_message": "Digilocker initiated but not processed yet",
                "f_error_reason": "DIGILOKER_TIMED_OUT"
              }
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/api/v1/digilocker/status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "payload.verified should be false with error context before webhook completion",
              "passed": true,
              "message": "verified=false with in-progress error context"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_022",
          "caseName": "Verify Digilocker status missing JWT",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker/status",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:55.028Z",
          "endedAt": "2026-06-23T11:13:55.035Z",
          "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:13:55 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/api/v1/digilocker/status' \\\n  -H 'Content-Type: application/json'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "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 an auth rejection",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_023",
          "caseName": "Verify Digilocker status invalid JWT",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker/status",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:55.035Z",
          "endedAt": "2026-06-23T11:13:55.040Z",
          "durationMs": 4,
          "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:13:55 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/api/v1/digilocker/status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer bad.jwt'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "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 an auth rejection",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_016",
          "caseName": "Verify Digilocker response envelope datatypes",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:55.040Z",
          "endedAt": "2026-06-23T11:13:55.186Z",
          "durationMs": 146,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "421",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:55 GMT",
            "etag": "W/\"1a5-k49WwD3+eqRNBlTpqyuC29JGOb4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "143",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?client_id=7E5773C4&code_challenge=aDZcYM9MZr0Rgqg0ka2lM_aVtFT-NByo_5wlpY1-Idk&code_challenge_method=S256&dl_flow=signup&pla&redirect_uri=https%3A%2F%2Fdigilocker-preproduction.signzy.tech%2Fdigilocker-auth-complete&req_doctype=PANCR%2CADHAR%2CDRVLC&response_type=code&state=6a3a6a73a2aed6dade6966d7"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "success should have the expected datatype",
              "passed": true,
              "message": "success datatype OK"
            },
            {
              "description": "statusCode should have the expected datatype",
              "passed": true,
              "message": "statusCode datatype OK"
            },
            {
              "description": "message should have the expected datatype",
              "passed": true,
              "message": "message datatype OK"
            },
            {
              "description": "payload.url should have the expected datatype",
              "passed": true,
              "message": "payload.url datatype OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_017",
          "caseName": "Verify Digilocker response does not leak PAN or mobile number",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:55.186Z",
          "endedAt": "2026-06-23T11:13:55.351Z",
          "durationMs": 165,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "421",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:55 GMT",
            "etag": "W/\"1a5-PQU4ja9EpVBHIIT/df3bHadDp3k\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "162",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?client_id=7E5773C4&code_challenge=d3jxM4kn69lXfIXcy2uIYJVVJ7P_c0A5csAiJ_sV64M&code_challenge_method=S256&dl_flow=signup&pla&redirect_uri=https%3A%2F%2Fdigilocker-preproduction.signzy.tech%2Fdigilocker-auth-complete&req_doctype=PANCR%2CADHAR%2CDRVLC&response_type=code&state=6a3a6a73a2aed6dade6966db"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Response should not expose PAN or mobile number",
              "passed": true,
              "message": "No PAN/mobile leakage in response body"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_018",
          "caseName": "Verify SQL injection through headers on Digilocker URL generation",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:55.351Z",
          "endedAt": "2026-06-23T11:13:55.496Z",
          "durationMs": 145,
          "requestHeaders": {
            "Content-Type": "application/json",
            "X-QA-Test": "' OR '1'='1' --",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "421",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:55 GMT",
            "etag": "W/\"1a5-wlWwZoIEE2uMm/a3Mlq4Tm4k/2A\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "143",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?client_id=7E5773C4&code_challenge=IYZtyno280o0NQKyMeN8U3VpRA-tfFVG_7mAyWbspsw&code_challenge_method=S256&dl_flow=signup&pla&redirect_uri=https%3A%2F%2Fdigilocker-preproduction.signzy.tech%2Fdigilocker-auth-complete&req_doctype=PANCR%2CADHAR%2CDRVLC&response_type=code&state=6a3a6a73a2aed6dade6966df"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'X-QA-Test: '\\'' OR '\\''1'\\''='\\''1'\\'' --' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "SQL injection header should either be rejected or safely ignored",
              "passed": true,
              "message": "SQL injection header safely ignored by API (status 201, success=1)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_019",
          "caseName": "Verify XSS injection through headers on Digilocker URL generation",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:55.497Z",
          "endedAt": "2026-06-23T11:13:55.645Z",
          "durationMs": 148,
          "requestHeaders": {
            "Content-Type": "application/json",
            "X-QA-Test": "<script>alert(1)</script>",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "421",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:55 GMT",
            "etag": "W/\"1a5-0VZq2lLN/9FfJAGhlFgAG1WnCgM\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "145",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?client_id=7E5773C4&code_challenge=g0whrCICl2-omPBsFiJUYGUDoQaKzWXnean9cf13MEs&code_challenge_method=S256&dl_flow=signup&pla&redirect_uri=https%3A%2F%2Fdigilocker-preproduction.signzy.tech%2Fdigilocker-auth-complete&req_doctype=PANCR%2CADHAR%2CDRVLC&response_type=code&state=6a3a6a73a2aed6dade6966e3"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'X-QA-Test: <script>alert(1)</script>' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "XSS injection header should either be rejected or safely ignored",
              "passed": true,
              "message": "XSS injection header safely ignored by API (status 201, success=1)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_024",
          "caseName": "Verify HTML injection through headers on Digilocker URL generation",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:55.645Z",
          "endedAt": "2026-06-23T11:13:55.795Z",
          "durationMs": 150,
          "requestHeaders": {
            "Content-Type": "application/json",
            "X-QA-Test": "<img src=x onerror=alert(1)>",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "421",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:55 GMT",
            "etag": "W/\"1a5-xTwTU1wlTvZgdOVy1ZY00Ip1Fck\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "147",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?client_id=7E5773C4&code_challenge=kk2vSOmvLOCH3lFex7kx1M96F3JawIn9kZC9HZ8FxVE&code_challenge_method=S256&dl_flow=signup&pla&redirect_uri=https%3A%2F%2Fdigilocker-preproduction.signzy.tech%2Fdigilocker-auth-complete&req_doctype=PANCR%2CADHAR%2CDRVLC&response_type=code&state=6a3a6a73a2aed6dade6966e7"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'X-QA-Test: <img src=x onerror=alert(1)>' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "HTML injection header should either be rejected or safely ignored",
              "passed": true,
              "message": "HTML injection header safely ignored by API (status 201, success=1)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_025",
          "caseName": "Verify header tampering (X-Forwarded-For / X-Forwarded-Host) on Digilocker URL generation",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:55.795Z",
          "endedAt": "2026-06-23T11:13:55.949Z",
          "durationMs": 154,
          "requestHeaders": {
            "Content-Type": "application/json",
            "X-Forwarded-For": "127.0.0.1, malicious.example.com",
            "X-Forwarded-Host": "malicious.example.com",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "421",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:55 GMT",
            "etag": "W/\"1a5-zZoJ8eMlu8RyArxRhFAwgLii7B4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "151",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?client_id=7E5773C4&code_challenge=_h-oUjCDYik3APcf7obaxa5gQEl_093p9fTFunzbLhg&code_challenge_method=S256&dl_flow=signup&pla&redirect_uri=https%3A%2F%2Fdigilocker-preproduction.signzy.tech%2Fdigilocker-auth-complete&req_doctype=PANCR%2CADHAR%2CDRVLC&response_type=code&state=6a3a6a73a2aed6dade6966eb"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'X-Forwarded-For: 127.0.0.1, malicious.example.com' \\\n  -H 'X-Forwarded-Host: malicious.example.com' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Header tampering should either be rejected or safely ignored",
              "passed": true,
              "message": "Header tampering safely ignored by API (status 201, success=1)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_026",
          "caseName": "Verify Digilocker URL generation behavior under burst traffic",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:55.949Z",
          "endedAt": "2026-06-23T11:13:56.570Z",
          "durationMs": 621,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "421",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:56 GMT",
            "etag": "W/\"1a5-x9Fi44LXU7e00xIIiqGDe0WP4/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": "331",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?client_id=7E5773C4&code_challenge=adTX_BrTcv7L9j3Eu1UMz3l6mbSz4d6p44kRMDwzhUg&code_challenge_method=S256&dl_flow=signup&pla&redirect_uri=https%3A%2F%2Fdigilocker-preproduction.signzy.tech%2Fdigilocker-auth-complete&req_doctype=PANCR%2CADHAR%2CDRVLC&response_type=code&state=6a3a6a74a2aed6dade6966fd"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_027",
          "caseName": "Verify HTTP method GET instead of POST for Digilocker URL generation",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 404,
          "httpStatus": 404,
          "startedAt": "2026-06-23T11:13:56.570Z",
          "endedAt": "2026-06-23T11:13:56.576Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "404",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:56 GMT",
            "etag": "W/\"194-sWc6t74C7BeqG0JqlOA0sPvrg6Y\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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 GET /api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079",
            "payload": {},
            "error": {
              "statusCode": 404,
              "message": "Cannot GET /api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079",
              "error": "Not Found"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Unsupported HTTP method should be rejected",
              "passed": true,
              "message": "Method rejected with status 404"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_028",
          "caseName": "Verify HTTP method PUT instead of POST for Digilocker URL generation",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 404,
          "httpStatus": 404,
          "startedAt": "2026-06-23T11:13:56.577Z",
          "endedAt": "2026-06-23T11:13:56.585Z",
          "durationMs": 8,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "404",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:56 GMT",
            "etag": "W/\"194-Fi0y/LG7Z/z4FKroLJrcccH+D0Q\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 404,
            "message": "Cannot PUT /api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079",
            "payload": {},
            "error": {
              "statusCode": 404,
              "message": "Cannot PUT /api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079",
              "error": "Not Found"
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Unsupported HTTP method should be rejected",
              "passed": true,
              "message": "Method rejected with status 404"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_029",
          "caseName": "Verify HTTP method DELETE instead of POST for Digilocker URL generation",
          "service": "user-services",
          "method": "DELETE",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 404,
          "httpStatus": 404,
          "startedAt": "2026-06-23T11:13:56.586Z",
          "endedAt": "2026-06-23T11:13:56.731Z",
          "durationMs": 145,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "410",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:56 GMT",
            "etag": "W/\"19a-22+eSzTtngemE9TRpZvzBtr7Ts8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "41",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 404,
            "message": "Cannot DELETE /api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079",
            "payload": {},
            "error": {
              "statusCode": 404,
              "message": "Cannot DELETE /api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079",
              "error": "Not Found"
            }
          },
          "curl": "curl -X DELETE 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Unsupported HTTP method should be rejected",
              "passed": true,
              "message": "Method rejected with status 404"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_032",
          "caseName": "Verify invalid digilocker query value is tolerated",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:56.731Z",
          "endedAt": "2026-06-23T11:13:56.873Z",
          "durationMs": 142,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "not-a-flag",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "421",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:56 GMT",
            "etag": "W/\"1a5-QUQ7jjTcTvpYOnginhoY1w1IazQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "139",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?client_id=7E5773C4&code_challenge=EB4qInY159hz1D39d_AlqVubAtV4LSGyeTt7eexls28&code_challenge_method=S256&dl_flow=signup&pla&redirect_uri=https%3A%2F%2Fdigilocker-preproduction.signzy.tech%2Fdigilocker-auth-complete&req_doctype=PANCR%2CADHAR%2CDRVLC&response_type=code&state=6a3a6a74a2aed6dade696703"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=not-a-flag&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Invalid digilocker query value (acceptable per current API design)",
              "passed": true,
              "message": "Status 201 acceptable for Invalid digilocker query value"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_033",
          "caseName": "Verify empty event_id query value is tolerated",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:56.873Z",
          "endedAt": "2026-06-23T11:13:57.008Z",
          "durationMs": 135,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": ""
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "421",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:57 GMT",
            "etag": "W/\"1a5-yQzzkF/q+TBj4ByMRrB4RbyTDlM\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "132",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?client_id=7E5773C4&code_challenge=kZXprfLkLLIiDb8RZx0H0mqCmOy3WWVwExeuAalvm5w&code_challenge_method=S256&dl_flow=signup&pla&redirect_uri=https%3A%2F%2Fdigilocker-preproduction.signzy.tech%2Fdigilocker-auth-complete&req_doctype=PANCR%2CADHAR%2CDRVLC&response_type=code&state=6a3a6a74a2aed6dade696707"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Empty event_id (acceptable per current API design)",
              "passed": true,
              "message": "Status 201 acceptable for Empty event_id"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_034",
          "caseName": "Verify SQL injection in source query param is handled gracefully",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:57.008Z",
          "endedAt": "2026-06-23T11:13:57.140Z",
          "durationMs": 132,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "' OR '1'='1' --",
            "digilocker": "1",
            "event_id": "cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "421",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:57 GMT",
            "etag": "W/\"1a5-UvUGNwgvGixxK/VNEI7N4DVzCJI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "129",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?client_id=7E5773C4&code_challenge=uOcdNTHINdMI2WQZqFfNWFeBnp6D3OidOlQPZtK5-vs&code_challenge_method=S256&dl_flow=signup&pla&redirect_uri=https%3A%2F%2Fdigilocker-preproduction.signzy.tech%2Fdigilocker-auth-complete&req_doctype=PANCR%2CADHAR%2CDRVLC&response_type=code&state=6a3a6a75a2aed6dade69670b"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%27+OR+%271%27%3D%271%27+--&digilocker=1&event_id=cc7942eb-33c2-4ecf-9f09-72daed8f9ac2-1782213208079' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "SQL injection in source query param should not cause an unhandled 5xx and should return a structured body",
              "passed": true,
              "message": "Handled gracefully (HTTP 201)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_035",
          "caseName": "Verify XSS payload in event_id query param is handled gracefully",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 201,
          "startedAt": "2026-06-23T11:13:57.140Z",
          "endedAt": "2026-06-23T11:13:57.263Z",
          "durationMs": 123,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "source": "/signUp?fdBookMaturity=false",
            "digilocker": "1",
            "event_id": "<script>alert(1)</script>"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "421",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:57 GMT",
            "etag": "W/\"1a5-XboZFyXeQWeloneaPsGN0a2vViI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "120",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "",
            "payload": {
              "url": "https://api.digitallocker.gov.in/public/oauth2/1/authorize?client_id=7E5773C4&code_challenge=JoX0aMGBmYptjDRPS03OlL3em3LR_bfVVqylQOZMIp0&code_challenge_method=S256&dl_flow=signup&pla&redirect_uri=https%3A%2F%2Fdigilocker-preproduction.signzy.tech%2Fdigilocker-auth-complete&req_doctype=PANCR%2CADHAR%2CDRVLC&response_type=code&state=6a3a6a75a2aed6dade69670f"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker?source=%2FsignUp%3FfdBookMaturity%3Dfalse&digilocker=1&event_id=%3Cscript%3Ealert%281%29%3C%2Fscript%3E' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "XSS payload in event_id query param should not cause an unhandled 5xx and should return a structured body",
              "passed": true,
              "message": "Handled gracefully (HTTP 201)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_040",
          "caseName": "Verify HTTP method POST instead of GET for Digilocker status",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker/status",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 404,
          "httpStatus": 404,
          "startedAt": "2026-06-23T11:13:57.263Z",
          "endedAt": "2026-06-23T11:13:57.331Z",
          "durationMs": 68,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "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:13:57 GMT",
            "etag": "W/\"be-rG6amwzoqNskzJmomszCA31fUp8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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 /api/v1/digilocker/status",
            "payload": {},
            "error": {
              "statusCode": 404,
              "message": "Cannot POST /api/v1/digilocker/status",
              "error": "Not Found"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/digilocker/status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Unsupported HTTP method should be rejected",
              "passed": true,
              "message": "Method rejected with status 404"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_041",
          "caseName": "Verify HTTP method PUT instead of GET for Digilocker status",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker/status",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 404,
          "httpStatus": 404,
          "startedAt": "2026-06-23T11:13:57.331Z",
          "endedAt": "2026-06-23T11:13:57.336Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "188",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:57 GMT",
            "etag": "W/\"bc-QIwhp4o/ze2u/EgrdrCgX/FecyE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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 /api/v1/digilocker/status",
            "payload": {},
            "error": {
              "statusCode": 404,
              "message": "Cannot PUT /api/v1/digilocker/status",
              "error": "Not Found"
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/api/v1/digilocker/status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Unsupported HTTP method should be rejected",
              "passed": true,
              "message": "Method rejected with status 404"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_042",
          "caseName": "Verify Digilocker status response envelope datatypes",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker/status",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:57.336Z",
          "endedAt": "2026-06-23T11:13:57.372Z",
          "durationMs": 36,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "326",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:57 GMT",
            "etag": "W/\"146-r4QQ2JwIY0fsdv1xaCvHS63Zw4M\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 200,
            "message": "SUCCESS",
            "payload": {
              "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "digilocker_initiated": true,
              "verified": false,
              "error": {
                "errorCode": "FIXUSER1500",
                "error": "DIGILOKER_TIMED_OUT",
                "f_error_message": "Digilocker initiated but not processed yet",
                "f_error_reason": "DIGILOKER_TIMED_OUT"
              }
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/api/v1/digilocker/status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "success should have the expected datatype",
              "passed": true,
              "message": "success datatype OK"
            },
            {
              "description": "statusCode should have the expected datatype",
              "passed": true,
              "message": "statusCode datatype OK"
            },
            {
              "description": "message should have the expected datatype",
              "passed": true,
              "message": "message datatype OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_043",
          "caseName": "Verify Digilocker status rejects when Bearer keyword is missing",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker/status",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:57.372Z",
          "endedAt": "2026-06-23T11:13:57.378Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:57 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/api/v1/digilocker/status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "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 an auth rejection",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_044",
          "caseName": "Verify Digilocker status rejects Basic auth scheme",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker/status",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:57.378Z",
          "endedAt": "2026-06-23T11:13:57.431Z",
          "durationMs": 53,
          "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:13:57 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": "1",
            "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/api/v1/digilocker/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": "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 an auth rejection",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_045",
          "caseName": "Verify Digilocker status response time",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker/status",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:57.431Z",
          "endedAt": "2026-06-23T11:13:57.475Z",
          "durationMs": 44,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "326",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:57 GMT",
            "etag": "W/\"146-r4QQ2JwIY0fsdv1xaCvHS63Zw4M\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "41",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "digilocker_initiated": true,
              "verified": false,
              "error": {
                "errorCode": "FIXUSER1500",
                "error": "DIGILOKER_TIMED_OUT",
                "f_error_message": "Digilocker initiated but not processed yet",
                "f_error_reason": "DIGILOKER_TIMED_OUT"
              }
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/api/v1/digilocker/status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Response should complete within 3000ms",
              "passed": true,
              "message": "duration=44ms"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_046",
          "caseName": "Verify Digilocker status behavior under burst traffic",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/api/v1/digilocker/status",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:57.475Z",
          "endedAt": "2026-06-23T11:13:57.661Z",
          "durationMs": 186,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "326",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:57 GMT",
            "etag": "W/\"146-r4QQ2JwIY0fsdv1xaCvHS63Zw4M\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "122",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "digilocker_initiated": true,
              "verified": false,
              "error": {
                "errorCode": "FIXUSER1500",
                "error": "DIGILOKER_TIMED_OUT",
                "f_error_message": "Digilocker initiated but not processed yet",
                "f_error_reason": "DIGILOKER_TIMED_OUT"
              }
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/api/v1/digilocker/status' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_061",
          "caseName": "Save verified bank account for fresh user (Mahindra)",
          "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:13:57.661Z",
          "endedAt": "2026-06-23T11:13:57.760Z",
          "durationMs": 99,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "account": "10076324285",
            "ifsc": "IDFB0040112",
            "account_holder_full_name": "QA Test User",
            "consent_checked": true,
            "fd_info": "{\"issuer\":{\"f_code\":\"MAH\"}}"
          },
          "requestQuery": {
            "issuer_code": "MAH",
            "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:13:57 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": "95",
            "server": "envoy"
          },
          "responseBody": {
            "verified": true
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/v2/signzy/bank?issuer_code=MAH&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"account\":\"10076324285\",\"ifsc\":\"IDFB0040112\",\"account_holder_full_name\":\"QA Test User\",\"consent_checked\":true,\"fd_info\":\"{\\\"issuer\\\":{\\\"f_code\\\":\\\"MAH\\\"}}\"}'",
          "validations": [
            {
              "description": "Bank save should succeed (200/201, verified)",
              "passed": true,
              "message": "Bank saved (HTTP 201)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_KYC_062",
          "caseName": "Get bank accounts for Mahindra 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:13:57.760Z",
          "endedAt": "2026-06-23T11:13:57.864Z",
          "durationMs": 104,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "decrypt": "true",
            "page_name": "review_bank",
            "issuer_code": "MAH"
          },
          "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:13:57 GMT",
            "etag": "W/\"1c9-p3TocaDtymjCK0Z1pNITM3Nbfnw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "101",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_bank_id": "17da5484-27af-4867-8f7c-3d8022f6051f",
                "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=MAH' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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:13:57.864Z",
          "endedAt": "2026-06-23T11:13:57.876Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:57 GMT",
            "etag": "W/\"2d6-y3J9XP1hkQNCugHtHx+fOzgKGnU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 70482,
                "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_bank_id": "17da5484-27af-4867-8f7c-3d8022f6051f",
                "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:13:58.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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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:13:57.876Z",
          "endedAt": "2026-06-23T11:13:57.888Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:57 GMT",
            "etag": "W/\"2d6-y3J9XP1hkQNCugHtHx+fOzgKGnU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "id": 70482,
                "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_bank_id": "17da5484-27af-4867-8f7c-3d8022f6051f",
                "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:13:58.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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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:13:57.888Z",
          "endedAt": "2026-06-23T11:13:57.899Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:57 GMT",
            "etag": "W/\"2d6-y3J9XP1hkQNCugHtHx+fOzgKGnU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "id": 70482,
                "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_bank_id": "17da5484-27af-4867-8f7c-3d8022f6051f",
                "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:13:58.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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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:13:57.899Z",
          "endedAt": "2026-06-23T11:13:57.954Z",
          "durationMs": 55,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:57 GMT",
            "etag": "W/\"316-oyOXv6jF8i7srIwPeU8aD5IIFFw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "id": 70482,
                "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_bank_id": "17da5484-27af-4867-8f7c-3d8022f6051f",
                "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:13:58.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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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:13:57.955Z",
          "endedAt": "2026-06-23T11:13:57.986Z",
          "durationMs": 31,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:57 GMT",
            "etag": "W/\"316-oyOXv6jF8i7srIwPeU8aD5IIFFw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "28",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "id": 70482,
                "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_bank_id": "17da5484-27af-4867-8f7c-3d8022f6051f",
                "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:13:58.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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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:13:57.986Z",
          "endedAt": "2026-06-23T11:13:58.324Z",
          "durationMs": 338,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:58 GMT",
            "etag": "W/\"1cf-ehAgeZxqI3dDyB5J4IrVnGwh4Ak\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "SUCCESS",
            "payload": [
              {
                "f_user_bank_id": "17da5484-27af-4867-8f7c-3d8022f6051f",
                "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": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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:13:58.324Z",
          "endedAt": "2026-06-23T11:13:58.365Z",
          "durationMs": 41,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:58 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": "38",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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:13:58.365Z",
          "endedAt": "2026-06-23T11:13:58.460Z",
          "durationMs": 95,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:58 GMT",
            "etag": "W/\"1cf-ehAgeZxqI3dDyB5J4IrVnGwh4Ak\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "f_user_bank_id": "17da5484-27af-4867-8f7c-3d8022f6051f",
                "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": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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:13:58.460Z",
          "endedAt": "2026-06-23T11:13:58.502Z",
          "durationMs": 42,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:58 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": "39",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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:13:58.502Z",
          "endedAt": "2026-06-23T11:13:58.516Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:13:58 GMT",
            "etag": "W/\"2df-E9QTZz0IfbZXfh9s+xAGWFjzThI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": [
              {
                "id": 70482,
                "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_bank_id": "17da5484-27af-4867-8f7c-3d8022f6051f",
                "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:13:58.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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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:13:58.516Z",
          "endedAt": "2026-06-23T11:13:58.526Z",
          "durationMs": 10,
          "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:13: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": "7",
            "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:13:58.526Z",
          "endedAt": "2026-06-23T11:13:58.531Z",
          "durationMs": 5,
          "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:13: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/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:13:58.531Z",
          "endedAt": "2026-06-23T11:13:58.537Z",
          "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:13: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/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": 55,
        "passed": 55,
        "failed": 0,
        "skipped": 0,
        "running": 0,
        "pending": 0,
        "durationMs": 5065
      }
    },
    {
      "stepId": "step-07-lead-phase",
      "stepName": "Mahindra Lead and KYC Context",
      "cases": [
        {
          "caseId": "MAH_LEAD_001",
          "caseName": "Create Mahindra lead and KYC context (Jump MAH/lead-and-kyc)",
          "service": "user-investment-services",
          "method": "POST",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:13:58.537Z",
          "endedAt": "2026-06-23T11:13:58.645Z",
          "durationMs": 108,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, 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:13:58 GMT",
            "etag": "W/\"bb-Lsyi1YkpCUt0mXNty1WEaLZZDjg\"",
            "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": "96",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": " ",
                "f_error_message": " ",
                "errorCode": "FIXINV051",
                "error": "Issuer not enabled for Partner"
              }
            ]
          },
          "curl": "curl -X POST 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Lead phase should succeed with f_user_transaction_id, or be blocked only at the Mahindra issuer boundary (surfaced FIX*/Jump error)",
              "passed": true,
              "message": "Platform checks passed; rejected at Mahindra issuer boundary (HTTP 400) — accepted"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXINV051"
          ]
        },
        {
          "caseId": "MAH_LEAD_002",
          "caseName": "Reject lead creation without JWT",
          "service": "user-investment-services",
          "method": "POST",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:58.645Z",
          "endedAt": "2026-06-23T11:13:58.649Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, must-revalidate, private",
            "content-length": "55",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:58 GMT",
            "etag": "W/\"37-Vpk+yZYTrfB878bqirsqLrIUy3Q\"",
            "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,
            "error": "Access Denied."
          },
          "curl": "curl -X POST 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\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=\"\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_LEAD_003",
          "caseName": "Reject lead creation with invalid JWT",
          "service": "user-investment-services",
          "method": "POST",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:58.649Z",
          "endedAt": "2026-06-23T11:13:58.652Z",
          "durationMs": 3,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer invalid.jwt.token"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, must-revalidate, private",
            "content-length": "55",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:58 GMT",
            "etag": "W/\"37-Vpk+yZYTrfB878bqirsqLrIUy3Q\"",
            "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,
            "error": "Access Denied."
          },
          "curl": "curl -X POST 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\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 an auth rejection",
              "passed": true,
              "message": "message=\"\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_LEAD_004",
          "caseName": "Reject lead creation with expired JWT",
          "service": "user-investment-services",
          "method": "POST",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:58.652Z",
          "endedAt": "2026-06-23T11:13:58.655Z",
          "durationMs": 3,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer expired.jwt.token"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, must-revalidate, private",
            "content-length": "55",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:58 GMT",
            "etag": "W/\"37-Vpk+yZYTrfB878bqirsqLrIUy3Q\"",
            "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,
            "error": "Access Denied."
          },
          "curl": "curl -X POST 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\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 an auth rejection",
              "passed": true,
              "message": "message=\"\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_LEAD_005",
          "caseName": "Reject lead creation with malformed/corrupted JWT",
          "service": "user-investment-services",
          "method": "POST",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:58.655Z",
          "endedAt": "2026-06-23T11:13:58.658Z",
          "durationMs": 3,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer corrupted-token-!!!"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, must-revalidate, private",
            "content-length": "55",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:58 GMT",
            "etag": "W/\"37-Vpk+yZYTrfB878bqirsqLrIUy3Q\"",
            "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,
            "error": "Access Denied."
          },
          "curl": "curl -X POST 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\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 an auth rejection",
              "passed": true,
              "message": "message=\"\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_LEAD_006",
          "caseName": "Reject lead creation when Bearer keyword is missing",
          "service": "user-investment-services",
          "method": "POST",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:58.658Z",
          "endedAt": "2026-06-23T11:13:58.661Z",
          "durationMs": 3,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, must-revalidate, private",
            "content-length": "55",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:58 GMT",
            "etag": "W/\"37-Vpk+yZYTrfB878bqirsqLrIUy3Q\"",
            "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,
            "error": "Access Denied."
          },
          "curl": "curl -X POST 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "description": "Response message should be an auth rejection",
              "passed": true,
              "message": "message=\"\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_LEAD_007",
          "caseName": "Reject lead creation with Basic auth scheme instead of Bearer",
          "service": "user-investment-services",
          "method": "POST",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:58.661Z",
          "endedAt": "2026-06-23T11:13:58.731Z",
          "durationMs": 70,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Basic dXNlcjpwYXNz"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, must-revalidate, private",
            "content-length": "55",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:58 GMT",
            "etag": "W/\"37-Vpk+yZYTrfB878bqirsqLrIUy3Q\"",
            "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,
            "error": "Access Denied."
          },
          "curl": "curl -X POST 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\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 an auth rejection",
              "passed": true,
              "message": "message=\"\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_LEAD_008",
          "caseName": "Reject lead creation with empty Authorization header",
          "service": "user-investment-services",
          "method": "POST",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:58.731Z",
          "endedAt": "2026-06-23T11:13:58.734Z",
          "durationMs": 3,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, must-revalidate, private",
            "content-length": "55",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:58 GMT",
            "etag": "W/\"37-Vpk+yZYTrfB878bqirsqLrIUy3Q\"",
            "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,
            "error": "Access Denied."
          },
          "curl": "curl -X POST 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\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=\"\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_LEAD_009",
          "caseName": "Verify HTTP method GET instead of POST for lead creation",
          "service": "user-investment-services",
          "method": "GET",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:13:58.734Z",
          "endedAt": "2026-06-23T11:13:58.813Z",
          "durationMs": 79,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, 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:13:58 GMT",
            "etag": "W/\"b9-+4m0EWMltfs3lRD/RZxC8FL4A/U\"",
            "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": "75",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXINV073",
                "error": "Invaild Parnter Transaction Id"
              }
            ]
          },
          "curl": "curl -X GET 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "GET on lead creation path should not cause an unhandled 5xx and should return a structured body",
              "passed": true,
              "message": "Handled gracefully (HTTP 400)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXINV073"
          ]
        },
        {
          "caseId": "MAH_LEAD_013",
          "caseName": "Verify HTTP method PUT instead of POST for lead creation",
          "service": "user-investment-services",
          "method": "PUT",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:58.813Z",
          "endedAt": "2026-06-23T11:13:58.881Z",
          "durationMs": 68,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, must-revalidate, private",
            "content-length": "1139",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:58 GMT",
            "etag": "W/\"473-go7RzTKybLmXtf3ULLqhkaj9ibQ\"",
            "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": "66",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "UPDATED",
            "payload": {
              "id": 48474,
              "f_user_transaction_id": "mahindra-kyc-and-lead",
              "f_partner_user_id": "",
              "fdr_number": "",
              "f_investment_vehicle_id": null,
              "investment_dt": "2026-06-12T17:54:09.535Z",
              "maturity_dt": null,
              "investment_amount": null,
              "expected_maturity_amount": null,
              "transaction_status": "failed",
              "holding_status": "Failed",
              "payment_id": "",
              "payment_dt": null,
              "payment_mode": "",
              "order_id": "",
              "issuer_transaction_id": "",
              "frequency": "",
              "expected_transaction_dt": null,
              "end_date": null,
              "last_transaction_dt": null,
              "f_user_bank_id": "",
              "auto_renewal": null,
              "renewal_preference": null,
              "deleted_at": null,
              "event_id": null,
              "f_partner_transaction_id": null,
              "autopay_mandate": false,
              "tenure": null,
              "refunded_dt": null,
              "maturity_instruction_updated_at": null,
              "f_user_nominee_id": null,
              "investment_dt_ist": null,
              "maturity_dt_ist": null,
              "payment_dt_ist": null,
              "marketing_campaign": null,
              "payment_gateway": null,
              "renewal_history_update": null,
              "total_gains": null,
              "payout_amount": null,
              "nominee_consent": null,
              "declares_indian_resident": null,
              "declares_pep": null,
              "declares_related_party": null,
              "bank_pan_consent": null,
              "product_type": null
            }
          },
          "curl": "curl -X PUT 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "PUT on lead creation path should not cause an unhandled 5xx and should return a structured body",
              "passed": true,
              "message": "Handled gracefully (HTTP 200)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_LEAD_014",
          "caseName": "Verify HTTP method DELETE instead of POST for lead creation",
          "service": "user-investment-services",
          "method": "DELETE",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:13:58.881Z",
          "endedAt": "2026-06-23T11:13:58.953Z",
          "durationMs": 72,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, 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:13:58 GMT",
            "etag": "W/\"b6-6O8cEv4hJqoslZd0sNBHYeytsiU\"",
            "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": "68",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXINV019",
                "error": "Transaction deletion failed"
              }
            ]
          },
          "curl": "curl -X DELETE 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "DELETE on lead creation path should not cause an unhandled 5xx and should return a structured body",
              "passed": true,
              "message": "Handled gracefully (HTTP 400)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXINV019"
          ]
        },
        {
          "caseId": "MAH_LEAD_015",
          "caseName": "Verify lead creation response envelope datatypes",
          "service": "user-investment-services",
          "method": "POST",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:13:58.953Z",
          "endedAt": "2026-06-23T11:13:59.031Z",
          "durationMs": 78,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, 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:13:59 GMT",
            "etag": "W/\"bb-Lsyi1YkpCUt0mXNty1WEaLZZDjg\"",
            "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": "76",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": " ",
                "f_error_message": " ",
                "errorCode": "FIXINV051",
                "error": "Issuer not enabled for Partner"
              }
            ]
          },
          "curl": "curl -X POST 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "success should have the expected datatype",
              "passed": true,
              "message": "success datatype OK"
            },
            {
              "description": "statusCode should have the expected datatype",
              "passed": true,
              "message": "statusCode datatype OK"
            },
            {
              "description": "message should have the expected datatype",
              "passed": true,
              "message": "message datatype OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXINV051"
          ]
        },
        {
          "caseId": "MAH_LEAD_016",
          "caseName": "Verify lead creation response time",
          "service": "user-investment-services",
          "method": "POST",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:13:59.031Z",
          "endedAt": "2026-06-23T11:13:59.132Z",
          "durationMs": 101,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, 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:13:59 GMT",
            "etag": "W/\"bb-Lsyi1YkpCUt0mXNty1WEaLZZDjg\"",
            "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": "98",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": " ",
                "f_error_message": " ",
                "errorCode": "FIXINV051",
                "error": "Issuer not enabled for Partner"
              }
            ]
          },
          "curl": "curl -X POST 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Response should complete within 8000ms",
              "passed": true,
              "message": "duration=101ms"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXINV051"
          ]
        },
        {
          "caseId": "MAH_LEAD_017",
          "caseName": "Verify lead creation response does not leak PAN or mobile number",
          "service": "user-investment-services",
          "method": "POST",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:13:59.132Z",
          "endedAt": "2026-06-23T11:13:59.286Z",
          "durationMs": 154,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, 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:13:59 GMT",
            "etag": "W/\"bb-Lsyi1YkpCUt0mXNty1WEaLZZDjg\"",
            "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": "151",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": " ",
                "f_error_message": " ",
                "errorCode": "FIXINV051",
                "error": "Issuer not enabled for Partner"
              }
            ]
          },
          "curl": "curl -X POST 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Response should not expose PAN or mobile number",
              "passed": true,
              "message": "No PAN/mobile leakage in response body"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXINV051"
          ]
        },
        {
          "caseId": "MAH_LEAD_018",
          "caseName": "Verify lead creation response does not expose JWT token",
          "service": "user-investment-services",
          "method": "POST",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:13:59.286Z",
          "endedAt": "2026-06-23T11:13:59.399Z",
          "durationMs": 113,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, 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:13:59 GMT",
            "etag": "W/\"bb-Lsyi1YkpCUt0mXNty1WEaLZZDjg\"",
            "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": "110",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": " ",
                "f_error_message": " ",
                "errorCode": "FIXINV051",
                "error": "Issuer not enabled for Partner"
              }
            ]
          },
          "curl": "curl -X POST 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Response should not expose the JWT access token",
              "passed": true,
              "message": "JWT token not present in response body"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXINV051"
          ]
        },
        {
          "caseId": "MAH_LEAD_019",
          "caseName": "Verify repeated lead creation calls do not error (idempotent / re-runnable)",
          "service": "user-investment-services",
          "method": "POST",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:13:59.399Z",
          "endedAt": "2026-06-23T11:13:59.480Z",
          "durationMs": 81,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, 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:13:59 GMT",
            "etag": "W/\"bb-Lsyi1YkpCUt0mXNty1WEaLZZDjg\"",
            "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": "78",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": " ",
                "f_error_message": " ",
                "errorCode": "FIXINV051",
                "error": "Issuer not enabled for Partner"
              }
            ]
          },
          "curl": "curl -X POST 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Lead phase should succeed with f_user_transaction_id, or be blocked only at the Mahindra issuer boundary (surfaced FIX*/Jump error)",
              "passed": true,
              "message": "Platform checks passed; rejected at Mahindra issuer boundary (HTTP 400) — accepted"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXINV051"
          ]
        },
        {
          "caseId": "MAH_LEAD_021",
          "caseName": "Verify SQL injection through headers on lead creation",
          "service": "user-investment-services",
          "method": "POST",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:13:59.480Z",
          "endedAt": "2026-06-23T11:13:59.565Z",
          "durationMs": 85,
          "requestHeaders": {
            "Content-Type": "application/json",
            "X-QA-Test": "' OR '1'='1' --",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, 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:13:59 GMT",
            "etag": "W/\"bb-Lsyi1YkpCUt0mXNty1WEaLZZDjg\"",
            "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": "81",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": " ",
                "f_error_message": " ",
                "errorCode": "FIXINV051",
                "error": "Issuer not enabled for Partner"
              }
            ]
          },
          "curl": "curl -X POST 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\n  -H 'Content-Type: application/json' \\\n  -H 'X-QA-Test: '\\'' OR '\\''1'\\''='\\''1'\\'' --' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "SQL injection header should either be rejected or safely ignored",
              "passed": true,
              "message": "SQL injection header rejected by API (status 400)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXINV051"
          ]
        },
        {
          "caseId": "MAH_LEAD_022",
          "caseName": "Verify XSS injection through headers on lead creation",
          "service": "user-investment-services",
          "method": "POST",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:13:59.565Z",
          "endedAt": "2026-06-23T11:13:59.650Z",
          "durationMs": 85,
          "requestHeaders": {
            "Content-Type": "application/json",
            "X-QA-Test": "<script>alert(1)</script>",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, 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:13:59 GMT",
            "etag": "W/\"bb-Lsyi1YkpCUt0mXNty1WEaLZZDjg\"",
            "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": "82",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": " ",
                "f_error_message": " ",
                "errorCode": "FIXINV051",
                "error": "Issuer not enabled for Partner"
              }
            ]
          },
          "curl": "curl -X POST 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\n  -H 'Content-Type: application/json' \\\n  -H 'X-QA-Test: <script>alert(1)</script>' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "XSS injection header should either be rejected or safely ignored",
              "passed": true,
              "message": "XSS injection header rejected by API (status 400)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXINV051"
          ]
        },
        {
          "caseId": "MAH_LEAD_023",
          "caseName": "Verify header tampering (X-Forwarded-For / X-Forwarded-Host) on lead creation",
          "service": "user-investment-services",
          "method": "POST",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:13:59.650Z",
          "endedAt": "2026-06-23T11:13:59.786Z",
          "durationMs": 136,
          "requestHeaders": {
            "Content-Type": "application/json",
            "X-Forwarded-For": "127.0.0.1, malicious.example.com",
            "X-Forwarded-Host": "malicious.example.com",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, 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:13:59 GMT",
            "etag": "W/\"bb-Lsyi1YkpCUt0mXNty1WEaLZZDjg\"",
            "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": "133",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": " ",
                "f_error_message": " ",
                "errorCode": "FIXINV051",
                "error": "Issuer not enabled for Partner"
              }
            ]
          },
          "curl": "curl -X POST 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\n  -H 'Content-Type: application/json' \\\n  -H 'X-Forwarded-For: 127.0.0.1, malicious.example.com' \\\n  -H 'X-Forwarded-Host: malicious.example.com' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Header tampering should either be rejected or safely ignored",
              "passed": true,
              "message": "Header tampering rejected by API (status 400)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXINV051"
          ]
        },
        {
          "caseId": "MAH_LEAD_024",
          "caseName": "Verify lead creation behavior under burst traffic",
          "service": "user-investment-services",
          "method": "POST",
          "url": "https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:13:59.786Z",
          "endedAt": "2026-06-23T11:14:00.847Z",
          "durationMs": 1061,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, 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:00 GMT",
            "etag": "W/\"bb-Lsyi1YkpCUt0mXNty1WEaLZZDjg\"",
            "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": "411",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": " ",
                "f_error_message": " ",
                "errorCode": "FIXINV051",
                "error": "Issuer not enabled for Partner"
              }
            ]
          },
          "curl": "curl -X POST 'https://investments-api.dev.fixerra.in/user-transaction/mahindra-kyc-and-lead' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXINV051"
          ]
        },
        {
          "caseId": "MAH_LEAD_011",
          "caseName": "Reject lead status check without JWT",
          "service": "user-investment-services",
          "method": "GET",
          "url": "https://investments-api.dev.fixerra.in/lead-transaction-status/00000000-0000-4000-8000-000000000000",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:00.847Z",
          "endedAt": "2026-06-23T11:14:00.850Z",
          "durationMs": 3,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, must-revalidate, private",
            "content-length": "55",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:00 GMT",
            "etag": "W/\"37-Vpk+yZYTrfB878bqirsqLrIUy3Q\"",
            "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,
            "error": "Access Denied."
          },
          "curl": "curl -X GET 'https://investments-api.dev.fixerra.in/lead-transaction-status/00000000-0000-4000-8000-000000000000' \\\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=\"\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_LEAD_025",
          "caseName": "Reject lead status check with expired JWT",
          "service": "user-investment-services",
          "method": "GET",
          "url": "https://investments-api.dev.fixerra.in/lead-transaction-status/00000000-0000-4000-8000-000000000000",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:00.850Z",
          "endedAt": "2026-06-23T11:14:00.853Z",
          "durationMs": 3,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer expired.jwt.token"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, must-revalidate, private",
            "content-length": "55",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:00 GMT",
            "etag": "W/\"37-Vpk+yZYTrfB878bqirsqLrIUy3Q\"",
            "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,
            "error": "Access Denied."
          },
          "curl": "curl -X GET 'https://investments-api.dev.fixerra.in/lead-transaction-status/00000000-0000-4000-8000-000000000000' \\\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 an auth rejection",
              "passed": true,
              "message": "message=\"\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_LEAD_026",
          "caseName": "Reject lead status check with malformed JWT",
          "service": "user-investment-services",
          "method": "GET",
          "url": "https://investments-api.dev.fixerra.in/lead-transaction-status/00000000-0000-4000-8000-000000000000",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:00.853Z",
          "endedAt": "2026-06-23T11:14:00.856Z",
          "durationMs": 3,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer corrupted-token-!!!"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, must-revalidate, private",
            "content-length": "55",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:00 GMT",
            "etag": "W/\"37-Vpk+yZYTrfB878bqirsqLrIUy3Q\"",
            "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,
            "error": "Access Denied."
          },
          "curl": "curl -X GET 'https://investments-api.dev.fixerra.in/lead-transaction-status/00000000-0000-4000-8000-000000000000' \\\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 an auth rejection",
              "passed": true,
              "message": "message=\"\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_LEAD_027",
          "caseName": "Reject lead status check when Bearer keyword is missing",
          "service": "user-investment-services",
          "method": "GET",
          "url": "https://investments-api.dev.fixerra.in/lead-transaction-status/00000000-0000-4000-8000-000000000000",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:14:00.856Z",
          "endedAt": "2026-06-23T11:14:00.860Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, must-revalidate, private",
            "content-length": "55",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:00 GMT",
            "etag": "W/\"37-Vpk+yZYTrfB878bqirsqLrIUy3Q\"",
            "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,
            "error": "Access Denied."
          },
          "curl": "curl -X GET 'https://investments-api.dev.fixerra.in/lead-transaction-status/00000000-0000-4000-8000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401"
            },
            {
              "description": "Response message should be an auth rejection",
              "passed": true,
              "message": "message=\"\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_LEAD_028",
          "caseName": "Verify HTTP method POST instead of GET for lead status check",
          "service": "user-investment-services",
          "method": "POST",
          "url": "https://investments-api.dev.fixerra.in/lead-transaction-status/00000000-0000-4000-8000-000000000000",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 404,
          "httpStatus": 404,
          "startedAt": "2026-06-23T11:14:00.860Z",
          "endedAt": "2026-06-23T11:14:00.863Z",
          "durationMs": 3,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, must-revalidate, private",
            "content-length": "124",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:00 GMT",
            "etag": "W/\"7c-/J2eJvNEcQh0f7bY4UkCTd68Hdg\"",
            "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": 404,
            "message": "Cannot POST /lead-transaction-status/00000000-0000-4000-8000-000000000000",
            "error": "Not Found"
          },
          "curl": "curl -X POST 'https://investments-api.dev.fixerra.in/lead-transaction-status/00000000-0000-4000-8000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Unsupported HTTP method should be rejected",
              "passed": true,
              "message": "Method rejected with status 404"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_LEAD_012",
          "caseName": "Lead status with malformed transaction id is handled gracefully",
          "service": "user-investment-services",
          "method": "GET",
          "url": "https://investments-api.dev.fixerra.in/lead-transaction-status/not-a-uuid",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:00.863Z",
          "endedAt": "2026-06-23T11:14:01.021Z",
          "durationMs": 158,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, must-revalidate, private",
            "content-length": "256",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:01 GMT",
            "etag": "W/\"100-xeXfV/Q+jg+Erm3NYCwRlLf3V+4\"",
            "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": "155",
            "server": "envoy"
          },
          "responseBody": {
            "statusCode": 200,
            "payload": {
              "transaction_id": "not-a-uuid",
              "lead_present": false,
              "save_transaction_present": false,
              "recommendation": "LEAD_NOT_FOUND",
              "message": "No lead found for this transaction_id. Create lead first, then you can create save transaction."
            }
          },
          "curl": "curl -X GET 'https://investments-api.dev.fixerra.in/lead-transaction-status/not-a-uuid' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Malformed id should not cause an unhandled 5xx and should return a structured body",
              "passed": true,
              "message": "Handled gracefully (HTTP 200)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_LEAD_029",
          "caseName": "Lead status with well-formed but non-existent transaction id is handled gracefully",
          "service": "user-investment-services",
          "method": "GET",
          "url": "https://investments-api.dev.fixerra.in/lead-transaction-status/00000000-0000-4000-8000-000000000000",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:01.021Z",
          "endedAt": "2026-06-23T11:14:01.132Z",
          "durationMs": 111,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, 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:14:01 GMT",
            "etag": "W/\"11a-Zig/N3TaC2h86wW3MLm3cWgeY1g\"",
            "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": "108",
            "server": "envoy"
          },
          "responseBody": {
            "statusCode": 200,
            "payload": {
              "transaction_id": "00000000-0000-4000-8000-000000000000",
              "lead_present": false,
              "save_transaction_present": false,
              "recommendation": "LEAD_NOT_FOUND",
              "message": "No lead found for this transaction_id. Create lead first, then you can create save transaction."
            }
          },
          "curl": "curl -X GET 'https://investments-api.dev.fixerra.in/lead-transaction-status/00000000-0000-4000-8000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Non-existent transaction id should not cause an unhandled 5xx and should return a structured body",
              "passed": true,
              "message": "Handled gracefully (HTTP 200)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_LEAD_030",
          "caseName": "Lead status with SQL injection in transaction id is handled gracefully",
          "service": "user-investment-services",
          "method": "GET",
          "url": "https://investments-api.dev.fixerra.in/lead-transaction-status/'%20OR%20'1'%3D'1'%20--",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:01.132Z",
          "endedAt": "2026-06-23T11:14:01.406Z",
          "durationMs": 274,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, must-revalidate, private",
            "content-length": "261",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:01 GMT",
            "etag": "W/\"105-pzDNxuP21wGlhLSta5Trii7oAoE\"",
            "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": "271",
            "server": "envoy"
          },
          "responseBody": {
            "statusCode": 200,
            "payload": {
              "transaction_id": "' OR '1'='1' --",
              "lead_present": false,
              "save_transaction_present": false,
              "recommendation": "LEAD_NOT_FOUND",
              "message": "No lead found for this transaction_id. Create lead first, then you can create save transaction."
            }
          },
          "curl": "curl -X GET 'https://investments-api.dev.fixerra.in/lead-transaction-status/'\\''%20OR%20'\\''1'\\''%3D'\\''1'\\''%20--' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "SQL injection in transaction id should not cause an unhandled 5xx and should return a structured body",
              "passed": true,
              "message": "Handled gracefully (HTTP 200)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_LEAD_031",
          "caseName": "Lead status with XSS payload in transaction id is handled gracefully",
          "service": "user-investment-services",
          "method": "GET",
          "url": "https://investments-api.dev.fixerra.in/lead-transaction-status/%3Cscript%3Ealert(1)%3C%2Fscript%3E",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:14:01.406Z",
          "endedAt": "2026-06-23T11:14:01.621Z",
          "durationMs": 215,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, must-revalidate, private",
            "content-length": "244",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:01 GMT",
            "etag": "W/\"f4-YkTfrn7a9jdqB/zyJ48LP1IpwYs\"",
            "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": "212",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 400,
              "message": "Bad Request",
              "payload": {},
              "error": {
                "errorCode": "FIXUSERDEFAULT",
                "error": [
                  "You"
                ],
                "f_error_reason": "",
                "f_error_message": [
                  "You"
                ]
              }
            }
          },
          "curl": "curl -X GET 'https://investments-api.dev.fixerra.in/lead-transaction-status/%3Cscript%3Ealert(1)%3C%2Fscript%3E' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "XSS payload in transaction id should not cause an unhandled 5xx and should return a structured body",
              "passed": true,
              "message": "Handled gracefully (HTTP 400)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        }
      ],
      "summary": {
        "total": 29,
        "passed": 29,
        "failed": 0,
        "skipped": 0,
        "running": 0,
        "pending": 0,
        "durationMs": 3084
      }
    },
    {
      "stepId": "step-09-nominee",
      "stepName": "Nominee",
      "cases": [
        {
          "caseId": "MAH_NOMINEE_001",
          "caseName": "Get existing nominees (MAH)",
          "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:14:01.621Z",
          "endedAt": "2026-06-23T11:14:01.813Z",
          "durationMs": 192,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:01 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": "187",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": []
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user-nominee?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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": "MAH_NOMINEE_002",
          "caseName": "Create valid adult nominee (MAH)",
          "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:14:01.813Z",
          "endedAt": "2026-06-23T11:14:02.009Z",
          "durationMs": 196,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:02 GMT",
            "etag": "W/\"206-qOPOXxrrhH2XUu69PKdSS4NW7B0\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": true,
              "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "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": 10801,
              "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
              "created_at": "2026-06-23T11:14:01.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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/726aaa4d-82eb-4a60-ab37-e46646e8afeb",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:02.009Z",
          "endedAt": "2026-06-23T11:14:02.120Z",
          "durationMs": 111,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:02 GMT",
            "etag": "W/\"27c-/a7bdHltjZQEYURhf3oOKXXxTI4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "106",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "User already exists.",
            "payload": {
              "is_default": true,
              "id": 10801,
              "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
              "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:14:01.000Z",
              "guardian_dob": "",
              "guardian_relation": "",
              "guardian_salutation": "",
              "guardian_pan": "",
              "deleted_at": null
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user-nominee/726aaa4d-82eb-4a60-ab37-e46646e8afeb?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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": "MAH_NOMINEE_004",
          "caseName": "Update nominee relation by id",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user-nominee/726aaa4d-82eb-4a60-ab37-e46646e8afeb",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:02.120Z",
          "endedAt": "2026-06-23T11:14:02.307Z",
          "durationMs": 187,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "nominee_relation": "Mother",
            "nominee_salutation": "MRS"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:02 GMT",
            "etag": "W/\"270-7nwdJR/iyEAW4SZaKIqUnEeWf10\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "184",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "SUCCESS",
            "payload": {
              "is_default": true,
              "id": 10801,
              "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
              "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:14:01.000Z",
              "guardian_dob": "",
              "guardian_relation": "",
              "guardian_salutation": "",
              "guardian_pan": "",
              "deleted_at": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user-nominee/726aaa4d-82eb-4a60-ab37-e46646e8afeb?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:02.307Z",
          "endedAt": "2026-06-23T11:14:02.512Z",
          "durationMs": 205,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:02 GMT",
            "etag": "W/\"263-i0ulX6SD3aI5boobY/hQpDSHEL4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "200",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "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": 10802,
              "f_user_nominee_id": "58100f30-1cd8-4c46-9072-fa0d8accf29f",
              "created_at": "2026-06-23T11:14:02.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_NOMINEE_006",
          "caseName": "Delete nominee by id (cleanup minor nominee)",
          "service": "user-services",
          "method": "DELETE",
          "url": "https://users-api.dev.fixerra.in/user-nominee/58100f30-1cd8-4c46-9072-fa0d8accf29f",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:02.512Z",
          "endedAt": "2026-06-23T11:14:02.731Z",
          "durationMs": 219,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:02 GMT",
            "etag": "W/\"2ae-CBfVaUwcIeRIHmPskyC+spUDg/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": "141",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "is_default": false,
              "id": 10802,
              "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "f_user_nominee_id": "58100f30-1cd8-4c46-9072-fa0d8accf29f",
              "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:14:02.000Z",
              "guardian_dob": "1990-04-15T00:00:00.000Z",
              "guardian_relation": "Father",
              "guardian_salutation": "MR",
              "guardian_pan": "",
              "deleted_at": "2026-06-23T11:14:02.629Z"
            }
          },
          "curl": "curl -X DELETE 'https://users-api.dev.fixerra.in/user-nominee/58100f30-1cd8-4c46-9072-fa0d8accf29f?f_code=MAH' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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": "MAH_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:14:02.731Z",
          "endedAt": "2026-06-23T11:14:02.831Z",
          "durationMs": 100,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:14:02 GMT",
            "etag": "W/\"272-oVb/qTunoO/ax1pSsoAPnJeXuRY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "is_default": true,
                "id": 10801,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
                "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:14:01.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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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:14:02.930Z",
          "endedAt": "2026-06-23T11:14:02.947Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:14:02 GMT",
            "etag": "W/\"272-oVb/qTunoO/ax1pSsoAPnJeXuRY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "is_default": true,
                "id": 10801,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
                "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:14:01.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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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:14:02.947Z",
          "endedAt": "2026-06-23T11:14:03.131Z",
          "durationMs": 184,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:03 GMT",
            "etag": "W/\"208-1bi+kmMobyCLoz7X+pMU0GocSM8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "93",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "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": 10803,
              "f_user_nominee_id": "241aa2a7-5ec6-40d5-85a2-7a6641796709",
              "created_at": "2026-06-23T11:14:03.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/user-nominee?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_NOMINEE_010",
          "caseName": "Delete legacy-route nominee (cleanup)",
          "service": "user-services",
          "method": "DELETE",
          "url": "https://users-api.dev.fixerra.in/user-nominee/241aa2a7-5ec6-40d5-85a2-7a6641796709",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:14:03.131Z",
          "endedAt": "2026-06-23T11:14:03.277Z",
          "durationMs": 146,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:03 GMT",
            "etag": "W/\"287-2Hu2p2GpHMwm4xSLsjV1kY7kLOQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 200,
            "message": "SUCCESS",
            "payload": {
              "is_default": false,
              "id": 10803,
              "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "f_user_nominee_id": "241aa2a7-5ec6-40d5-85a2-7a6641796709",
              "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:14:03.000Z",
              "guardian_dob": "",
              "guardian_relation": "",
              "guardian_salutation": "",
              "guardian_pan": "",
              "deleted_at": "2026-06-23T11:14:03.262Z"
            }
          },
          "curl": "curl -X DELETE 'https://users-api.dev.fixerra.in/user-nominee/241aa2a7-5ec6-40d5-85a2-7a6641796709?f_code=MAH' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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": "MAH_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:14:03.277Z",
          "endedAt": "2026-06-23T11:14:03.312Z",
          "durationMs": 35,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:03 GMT",
            "etag": "W/\"208-aDcaLVpw2tst7so1Q9SKNA9NDKQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "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": 10804,
              "f_user_nominee_id": "42304513-34d2-4f9b-af4c-02ee14c62e6a",
              "created_at": "2026-06-23T11:14:03.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:03.312Z",
          "endedAt": "2026-06-23T11:14:03.368Z",
          "durationMs": 56,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:03 GMT",
            "etag": "W/\"207-KKXcPT4jblmQWDowEOaCLmiBOjw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "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": 10805,
              "f_user_nominee_id": "8f700c8d-5590-4052-a349-0195d06a0268",
              "created_at": "2026-06-23T11:14:03.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:03.368Z",
          "endedAt": "2026-06-23T11:14:03.488Z",
          "durationMs": 120,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:03 GMT",
            "etag": "W/\"208-z60hYFmPdX9o4cjXwNchBLg/RkU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "116",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "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": 10806,
              "f_user_nominee_id": "4cee8c09-e776-46df-ba30-62fefc2bbcdb",
              "created_at": "2026-06-23T11:14:03.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:03.488Z",
          "endedAt": "2026-06-23T11:14:03.569Z",
          "durationMs": 81,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:03 GMT",
            "etag": "W/\"248-uSqqgRdk+VN6sEfAaHcWgHvdX1g\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "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": 10807,
              "f_user_nominee_id": "e2412a81-f15e-4298-9999-4dcb4625870b",
              "created_at": "2026-06-23T11:14:03.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:03.569Z",
          "endedAt": "2026-06-23T11:14:03.598Z",
          "durationMs": 29,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:03 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": "25",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:03.598Z",
          "endedAt": "2026-06-23T11:14:03.612Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:03 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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:03.612Z",
          "endedAt": "2026-06-23T11:14:03.625Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:03 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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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": "MAH_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:14:03.625Z",
          "endedAt": "2026-06-23T11:14:03.638Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:03 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": "10",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:03.638Z",
          "endedAt": "2026-06-23T11:14:03.652Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:03 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": "11",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:03.652Z",
          "endedAt": "2026-06-23T11:14:03.664Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:03 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": "8",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:03.664Z",
          "endedAt": "2026-06-23T11:14:03.677Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:03 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 POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:03.677Z",
          "endedAt": "2026-06-23T11:14:03.738Z",
          "durationMs": 61,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:03 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": "58",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:03.738Z",
          "endedAt": "2026-06-23T11:14:03.755Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:03 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": "14",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:03.755Z",
          "endedAt": "2026-06-23T11:14:03.849Z",
          "durationMs": 94,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:03 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": "91",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:03.849Z",
          "endedAt": "2026-06-23T11:14:03.929Z",
          "durationMs": 80,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:03 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": "76",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:03.929Z",
          "endedAt": "2026-06-23T11:14:03.940Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {},
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:03 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": "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)"
              },
              {
                "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1072",
            "FIXUSER1071",
            "FIXUSER1077"
          ]
        },
        {
          "caseId": "MAH_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:14:03.941Z",
          "endedAt": "2026-06-23T11:14:03.974Z",
          "durationMs": 33,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:03 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": "30",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 200 (no server error)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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:14:03.974Z",
          "endedAt": "2026-06-23T11:14:04.041Z",
          "durationMs": 67,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "nominee_relation": "Mother"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:04 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": "63",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:04.041Z",
          "endedAt": "2026-06-23T11:14:04.194Z",
          "durationMs": 153,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:04 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": "150",
            "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=MAH' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "validations": [
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 400 (no server error)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "MAH_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:14:04.194Z",
          "endedAt": "2026-06-23T11:14:04.202Z",
          "durationMs": 8,
          "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:04 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/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": "MAH_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:14:04.202Z",
          "endedAt": "2026-06-23T11:14:04.208Z",
          "durationMs": 6,
          "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:14:04 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 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": "MAH_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:14:04.208Z",
          "endedAt": "2026-06-23T11:14:04.231Z",
          "durationMs": 23,
          "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:04 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/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": "MAH_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:14:04.231Z",
          "endedAt": "2026-06-23T11:14:04.236Z",
          "durationMs": 5,
          "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:14:04 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 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": "MAH_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:14:04.236Z",
          "endedAt": "2026-06-23T11:14:04.270Z",
          "durationMs": 34,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "full_name": "John A Doe",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:04 GMT",
            "etag": "W/\"206-yLUcDogB94DKJP2fIvHxDgrcaFU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "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": 10808,
              "f_user_nominee_id": "68a5c05b-fe08-4490-961c-d4313f9a3f0d",
              "created_at": "2026-06-23T11:14:04.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:04.270Z",
          "endedAt": "2026-06-23T11:14:04.346Z",
          "durationMs": 76,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "full_name": "Madonna",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:04 GMT",
            "etag": "W/\"206-bKG+YyZeH8NRsfNreePTaHJ0EhM\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "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": 10809,
              "f_user_nominee_id": "7c4598b3-d271-4f98-9b8d-49099d879402",
              "created_at": "2026-06-23T11:14:04.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:04.346Z",
          "endedAt": "2026-06-23T11:14:04.361Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "full_name": "John2 Doe",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:04 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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:04.361Z",
          "endedAt": "2026-06-23T11:14:04.372Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "full_name": ".",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:04 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": "8",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:04.372Z",
          "endedAt": "2026-06-23T11:14:04.393Z",
          "durationMs": 21,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:04 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": "17",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:04.393Z",
          "endedAt": "2026-06-23T11:14:04.429Z",
          "durationMs": 36,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:04 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": "33",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:04.429Z",
          "endedAt": "2026-06-23T11:14:04.531Z",
          "durationMs": 102,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:04 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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:04.531Z",
          "endedAt": "2026-06-23T11:14:04.544Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:04 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": "9",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:04.544Z",
          "endedAt": "2026-06-23T11:14:04.630Z",
          "durationMs": 86,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:04 GMT",
            "etag": "W/\"227-O0obunwlLS3hn3+zSg0mczoN+qg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "34",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "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": 10810,
              "f_user_nominee_id": "6d44f129-5efe-4299-aec4-2896f96b51c4",
              "created_at": "2026-06-23T11:14:04.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:04.630Z",
          "endedAt": "2026-06-23T11:14:04.645Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:04 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": "11",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:04.645Z",
          "endedAt": "2026-06-23T11:14:04.683Z",
          "durationMs": 38,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:04 GMT",
            "etag": "W/\"233-Hi1Q/TDAB1GhjgCm0toEehWYo5k\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "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": 10811,
              "f_user_nominee_id": "c48b5128-9db4-484f-b827-e05f301f9c11",
              "created_at": "2026-06-23T11:14:04.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:04.683Z",
          "endedAt": "2026-06-23T11:14:04.696Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:04 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": "9",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:04.696Z",
          "endedAt": "2026-06-23T11:14:04.738Z",
          "durationMs": 42,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:04 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": "39",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:04.738Z",
          "endedAt": "2026-06-23T11:14:04.761Z",
          "durationMs": 23,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "first_name": "Minor",
            "last_name": "Kumar",
            "nominee_dob": "2015-01-01",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:04 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": "18",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:04.761Z",
          "endedAt": "2026-06-23T11:14:04.780Z",
          "durationMs": 19,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:04 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": "16",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:04.780Z",
          "endedAt": "2026-06-23T11:14:04.931Z",
          "durationMs": 151,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:04 GMT",
            "etag": "W/\"20a-2dd2a15x30uNcYedS7jrVAqOYFQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "97",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": true,
              "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "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": 10812,
              "f_user_nominee_id": "0429549f-169c-45cc-ae15-24ad47163db2",
              "created_at": "2026-06-23T11:14:04.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:04.931Z",
          "endedAt": "2026-06-23T11:14:04.947Z",
          "durationMs": 16,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:04 GMT",
            "etag": "W/\"16ad-ADHxxYkDUDHUCYWpnhcKcqZ+CYM\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "is_default": false,
                "id": 10808,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "68a5c05b-fe08-4490-961c-d4313f9a3f0d",
                "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:14:04.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10809,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "7c4598b3-d271-4f98-9b8d-49099d879402",
                "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:14:04.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10810,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "6d44f129-5efe-4299-aec4-2896f96b51c4",
                "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:14:04.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10811,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "c48b5128-9db4-484f-b827-e05f301f9c11",
                "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:14:04.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": true,
                "id": 10812,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "0429549f-169c-45cc-ae15-24ad47163db2",
                "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:14:04.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10804,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "42304513-34d2-4f9b-af4c-02ee14c62e6a",
                "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:14:03.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10805,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "8f700c8d-5590-4052-a349-0195d06a0268",
                "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:14:03.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10806,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "4cee8c09-e776-46df-ba30-62fefc2bbcdb",
                "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:14:03.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10807,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "e2412a81-f15e-4298-9999-4dcb4625870b",
                "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:14:03.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10801,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
                "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:14:01.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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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": "MAH_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:14:04.947Z",
          "endedAt": "2026-06-23T11:14:05.030Z",
          "durationMs": 83,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:04 GMT",
            "etag": "W/\"209-oZUy6fwDhKHt9DGrlePHWlM4/uU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "46",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "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": 10813,
              "f_user_nominee_id": "0a7d10c7-10ed-40c2-9ac1-5d627f787bad",
              "created_at": "2026-06-23T11:14:04.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:05.031Z",
          "endedAt": "2026-06-23T11:14:05.130Z",
          "durationMs": 99,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:05 GMT",
            "etag": "W/\"24a-wYeDZGsPh6mLFKZ+pGCV2hB2XDk\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "39",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "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": 10814,
              "f_user_nominee_id": "f070b8fe-efd2-42d8-978a-c6e24bb59039",
              "created_at": "2026-06-23T11:14:05.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:05.131Z",
          "endedAt": "2026-06-23T11:14:05.158Z",
          "durationMs": 27,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "MAH"
          },
          "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:14:05 GMT",
            "etag": "W/\"20b-mb0q9wfB7dxqDVC471JK8hfo9/0\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "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": 10815,
              "f_user_nominee_id": "79129658-7d19-4c9e-b170-0822e0f23c6a",
              "created_at": "2026-06-23T11:14:05.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:05.158Z",
          "endedAt": "2026-06-23T11:14:05.231Z",
          "durationMs": 73,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "5811",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:14:05 GMT",
            "etag": "W/\"16b3-Zh+1dclBdnR5TSKfDwONZXqERVM\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": [
              {
                "is_default": false,
                "id": 10814,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "f070b8fe-efd2-42d8-978a-c6e24bb59039",
                "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:14:05.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10815,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "79129658-7d19-4c9e-b170-0822e0f23c6a",
                "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:14:05.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10808,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "68a5c05b-fe08-4490-961c-d4313f9a3f0d",
                "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:14:04.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10809,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "7c4598b3-d271-4f98-9b8d-49099d879402",
                "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:14:04.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10810,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "6d44f129-5efe-4299-aec4-2896f96b51c4",
                "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:14:04.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10811,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "c48b5128-9db4-484f-b827-e05f301f9c11",
                "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:14:04.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": true,
                "id": 10812,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "0429549f-169c-45cc-ae15-24ad47163db2",
                "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:14:04.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10813,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "0a7d10c7-10ed-40c2-9ac1-5d627f787bad",
                "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:14:04.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10804,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "42304513-34d2-4f9b-af4c-02ee14c62e6a",
                "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:14:03.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10805,
                "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "8f700c8d-5590-4052-a349-0195d06a0268",
                "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:14:03.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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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": "MAH_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:14:05.231Z",
          "endedAt": "2026-06-23T11:14:05.236Z",
          "durationMs": 5,
          "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:05 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": "MAH_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": "MAH_NOMINEE_ADDR_001",
          "caseName": "Create address for nominee (MAH)",
          "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:14:05.236Z",
          "endedAt": "2026-06-23T11:14:05.268Z",
          "durationMs": 32,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
            "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": "MAH"
          },
          "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:14:05 GMT",
            "etag": "W/\"27c-PF8h8aJjYJqilwXtx2BIiZWJyZY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "CREATED",
            "payload": {
              "is_default": false,
              "same_as_user": false,
              "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
              "line2": "Near Test Lane",
              "state": "MAHARASHTRA",
              "country": "INDIA",
              "address_type": "PERMANENT",
              "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "address_object": "249a22814bf213a7ff2e68cfa58da9d3:7d8f7e7d160711318ed98e9451a3396d1ea9dad6b6ab7c5edcb46bd350dd054cdc9ba7cd39664363c47a604e01361097c88203ec3381ed2955464f7d5d584325389d26ca93cc93cacfc91b26b10731ea13576e0f0f109583c9356d1b139de5c5",
              "id": 5135,
              "f_user_address_id": "c84ac4e6-7ef5-4256-b7e4-50646b5ced5c",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/user-address/for-nominee?f_code=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"f_user_nominee_id\":\"726aaa4d-82eb-4a60-ab37-e46646e8afeb\",\"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": "MAH_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:14:05.268Z",
          "endedAt": "2026-06-23T11:14:05.282Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb"
          },
          "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:14:05 GMT",
            "etag": "W/\"30f-fWiVcTI2hCZKp9EvYgo1A8DOdWk\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 5135,
                "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_address_id": "c84ac4e6-7ef5-4256-b7e4-50646b5ced5c",
                "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
                "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=726aaa4d-82eb-4a60-ab37-e46646e8afeb' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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": "MAH_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:14:05.282Z",
          "endedAt": "2026-06-23T11:14:05.344Z",
          "durationMs": 62,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
            "same_as_user": true
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:05 GMT",
            "etag": "W/\"28e-ffCMpncEgirL7lC//BIZBHnVpZo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "CREATED",
            "payload": {
              "id": 5135,
              "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "f_user_address_id": "c84ac4e6-7ef5-4256-b7e4-50646b5ced5c",
              "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
              "f_base_user_address_id": "c84ac4e6-7ef5-4256-b7e4-50646b5ced5c",
              "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"f_user_nominee_id\":\"726aaa4d-82eb-4a60-ab37-e46646e8afeb\",\"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": "MAH_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:14:05.344Z",
          "endedAt": "2026-06-23T11:14:05.366Z",
          "durationMs": 22,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:14:05 GMT",
            "etag": "W/\"331-S9ScjpquwPMINx6Q9P9tN0ratCw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "id": 5135,
                "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_address_id": "c84ac4e6-7ef5-4256-b7e4-50646b5ced5c",
                "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
                "f_base_user_address_id": "c84ac4e6-7ef5-4256-b7e4-50646b5ced5c",
                "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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": "MAH_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:14:05.366Z",
          "endedAt": "2026-06-23T11:14:05.429Z",
          "durationMs": 63,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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:14:05 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-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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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": "MAH_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:14:05.429Z",
          "endedAt": "2026-06-23T11:14:05.435Z",
          "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:14:05 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": "MAH_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:14:05.435Z",
          "endedAt": "2026-06-23T11:14:05.441Z",
          "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:05 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": "MAH_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:14:05.441Z",
          "endedAt": "2026-06-23T11:14:05.454Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "same_as_user": true
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:05 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": "11",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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": "MAH_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:14:05.454Z",
          "endedAt": "2026-06-23T11:14:05.529Z",
          "durationMs": 75,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
            "same_as_user": false,
            "line1": "Flat 1",
            "city": "Mumbai",
            "state": "MH",
            "country": "INDIA",
            "pincode": "ABC"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:05 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": "71",
            "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"f_user_nominee_id\":\"726aaa4d-82eb-4a60-ab37-e46646e8afeb\",\"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": "MAH_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:14:05.529Z",
          "endedAt": "2026-06-23T11:14:05.561Z",
          "durationMs": 32,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
            "same_as_user": false,
            "line1": "Flat 1",
            "city": "Mumbai",
            "state": "maharashtra",
            "country": "INDIA",
            "pincode": "400001"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:05 GMT",
            "etag": "W/\"24e-NFdZSLMbYaUQfgiWHIr8N4lpJeg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "CREATED",
            "payload": {
              "id": 5135,
              "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "f_user_address_id": "c84ac4e6-7ef5-4256-b7e4-50646b5ced5c",
              "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
              "f_base_user_address_id": "c84ac4e6-7ef5-4256-b7e4-50646b5ced5c",
              "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"f_user_nominee_id\":\"726aaa4d-82eb-4a60-ab37-e46646e8afeb\",\"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": "MAH_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:14:05.561Z",
          "endedAt": "2026-06-23T11:14:05.645Z",
          "durationMs": 84,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
            "same_as_user": false,
            "line1": "Flat 1",
            "city": "Mumbai",
            "state": "MH",
            "pincode": "400001"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:05 GMT",
            "etag": "W/\"245-9/ZmxsEmbDxUjgPGX5RMoLeQDB4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": {
            "success": 1,
            "statusCode": 201,
            "message": "CREATED",
            "payload": {
              "id": 5135,
              "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "f_user_address_id": "c84ac4e6-7ef5-4256-b7e4-50646b5ced5c",
              "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
              "f_base_user_address_id": "c84ac4e6-7ef5-4256-b7e4-50646b5ced5c",
              "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"f_user_nominee_id\":\"726aaa4d-82eb-4a60-ab37-e46646e8afeb\",\"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": "MAH_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:14:05.645Z",
          "endedAt": "2026-06-23T11:14:05.671Z",
          "durationMs": 26,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestPayload": {
            "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
            "same_as_user": false,
            "line1": "Updated Address Line",
            "city": "Pune",
            "state": "MH",
            "country": "INDIA",
            "pincode": "411001"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:05 GMT",
            "etag": "W/\"265-KbTs1hkKYzA/EE3ZjIQQIUUnCHo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "CREATED",
            "payload": {
              "id": 5135,
              "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "f_user_address_id": "c84ac4e6-7ef5-4256-b7e4-50646b5ced5c",
              "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
              "f_base_user_address_id": "c84ac4e6-7ef5-4256-b7e4-50646b5ced5c",
              "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=MAH' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\n  -d '{\"f_user_nominee_id\":\"726aaa4d-82eb-4a60-ab37-e46646e8afeb\",\"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": "MAH_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:14:05.671Z",
          "endedAt": "2026-06-23T11:14:05.743Z",
          "durationMs": 72,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "requestQuery": {
            "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb"
          },
          "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:14:05 GMT",
            "etag": "W/\"302-eSG52gRByjK/XrvmNsoipaO8wVc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "id": 5135,
                "f_user_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_address_id": "c84ac4e6-7ef5-4256-b7e4-50646b5ced5c",
                "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
                "f_base_user_address_id": "c84ac4e6-7ef5-4256-b7e4-50646b5ced5c",
                "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=726aaa4d-82eb-4a60-ab37-e46646e8afeb' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E'",
          "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": "MAH_NOMINEE_V1UPD_001",
          "caseName": "Update nominee via v1/update (MAH)",
          "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:14:05.743Z",
          "endedAt": "2026-06-23T11:14:05.831Z",
          "durationMs": 88,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "726aaa4d-82eb-4a60-ab37-e46646e8afeb"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:05 GMT",
            "etag": "W/\"283-dNSndvm+YzZTupZ/iV29vy23PmY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 200,
            "message": "Nominee Data updated successfully",
            "payload": {
              "is_default": true,
              "id": 10801,
              "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
              "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:14:01.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=MAH' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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\":\"726aaa4d-82eb-4a60-ab37-e46646e8afeb\"}'",
          "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": "MAH_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:14:05.831Z",
          "endedAt": "2026-06-23T11:14:05.877Z",
          "durationMs": 46,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
            "nomineeAddress": {
              "same_as_user": false,
              "line1": "ADFJ",
              "street": "ASDFK",
              "pincode": "431122",
              "city": "BEED",
              "state": "MAHARASHTRA",
              "country": "INDIA"
            }
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:05 GMT",
            "etag": "W/\"436-ZhXEYTdzQeMvbnZbdQzDblbFgLA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "Nominee Data updated successfully",
            "payload": {
              "is_default": true,
              "id": 10801,
              "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
              "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:14:01.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": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
                "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb"
              }
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user-nominee/v1/update?f_code=MAH' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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\":\"726aaa4d-82eb-4a60-ab37-e46646e8afeb\",\"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": "MAH_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:14:05.877Z",
          "endedAt": "2026-06-23T11:14:05.931Z",
          "durationMs": 54,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "726aaa4d-82eb-4a60-ab37-e46646e8afeb"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:05 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=MAH' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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\":\"726aaa4d-82eb-4a60-ab37-e46646e8afeb\"}'",
          "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": "MAH_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:14:05.931Z",
          "endedAt": "2026-06-23T11:14:05.942Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "726aaa4d-82eb-4a60-ab37-e46646e8afeb"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:05 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": "8",
            "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=MAH' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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\":\"726aaa4d-82eb-4a60-ab37-e46646e8afeb\"}'",
          "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": "MAH_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:14:05.942Z",
          "endedAt": "2026-06-23T11:14:06.031Z",
          "durationMs": 89,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "726aaa4d-82eb-4a60-ab37-e46646e8afeb"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:05 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": "8",
            "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=MAH' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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\":\"726aaa4d-82eb-4a60-ab37-e46646e8afeb\"}'",
          "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": "MAH_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:14:06.031Z",
          "endedAt": "2026-06-23T11:14:06.041Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "726aaa4d-82eb-4a60-ab37-e46646e8afeb"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:06 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": "7",
            "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=MAH' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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\":\"726aaa4d-82eb-4a60-ab37-e46646e8afeb\"}'",
          "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": "MAH_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:14:06.041Z",
          "endedAt": "2026-06-23T11:14:06.052Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "726aaa4d-82eb-4a60-ab37-e46646e8afeb"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:06 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": "7",
            "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=MAH' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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\":\"726aaa4d-82eb-4a60-ab37-e46646e8afeb\"}'",
          "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": "MAH_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:14:06.052Z",
          "endedAt": "2026-06-23T11:14:06.062Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "726aaa4d-82eb-4a60-ab37-e46646e8afeb"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:06 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": "7",
            "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=MAH' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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\":\"726aaa4d-82eb-4a60-ab37-e46646e8afeb\"}'",
          "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": "MAH_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:14:06.062Z",
          "endedAt": "2026-06-23T11:14:06.131Z",
          "durationMs": 69,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "726aaa4d-82eb-4a60-ab37-e46646e8afeb"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:06 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": "8",
            "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=MAH' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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\":\"726aaa4d-82eb-4a60-ab37-e46646e8afeb\"}'",
          "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": "MAH_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:14:06.131Z",
          "endedAt": "2026-06-23T11:14:06.230Z",
          "durationMs": 99,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E"
          },
          "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": "726aaa4d-82eb-4a60-ab37-e46646e8afeb"
          },
          "requestQuery": {
            "f_code": "MAH"
          },
          "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:14:06 GMT",
            "etag": "W/\"2c4-7jCRLfeBFFrlTxbnM9UmW1Q+nLI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "34",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Nominee Data updated successfully",
            "payload": {
              "is_default": true,
              "id": 10801,
              "f_user_ref_id": "4e68c1e4-c43c-48c5-b2a9-08d7d6e4957e",
              "f_user_nominee_id": "726aaa4d-82eb-4a60-ab37-e46646e8afeb",
              "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:14:01.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=MAH' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiI0ZTY4YzFlNC1jNDNjLTQ4YzUtYjJhOS0wOGQ3ZDZlNDk1N2UiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImI5MDc2N2E1LTU5YTMtNGVlMC05ZmJjLTJkYTM2Mjg1ZjQ3YyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMjA0LCJleHAiOjE3ODIyOTk2MDR9.S6SAPL1GuZaikAnojgdwUMD1T4TY3UVyDyoBREqrQ5E' \\\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\":\"726aaa4d-82eb-4a60-ab37-e46646e8afeb\"}'",
          "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": "MAH_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:14:06.230Z",
          "endedAt": "2026-06-23T11:14:06.236Z",
          "durationMs": 6,
          "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:14:06 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-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": "MAH_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:14:06.236Z",
          "endedAt": "2026-06-23T11:14:06.241Z",
          "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:14:06 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": 4518
      }
    }
  ]
}