{
  "id": "0eba7e5b-bbb8-428b-ac33-afe6be494649",
  "issuer": "bajaj",
  "journey": "ntb",
  "startedAt": "2026-06-23T11:11:52.058Z",
  "endedAt": "2026-06-23T11:13:15.036Z",
  "durationMs": 44384,
  "summary": {
    "total": 562,
    "passed": 560,
    "failed": 0,
    "skipped": 2,
    "running": 0,
    "pending": 0,
    "durationMs": 44384
  },
  "steps": [
    {
      "stepId": "step-01-login",
      "stepName": "Login",
      "cases": [
        {
          "caseId": "BAJ_LOGIN_001",
          "caseName": "Send OTP to Bajaj 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:12:30.593Z",
          "endedAt": "2026-06-23T11:12:30.697Z",
          "durationMs": 104,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:30 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2997",
            "x-ratelimit-reset": "60",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "101",
            "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": "BAJ_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:12:30.697Z",
          "endedAt": "2026-06-23T11:12:30.820Z",
          "durationMs": 123,
          "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:12:30 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2996",
            "x-ratelimit-reset": "60",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "120",
            "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": "BAJ_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:12:30.820Z",
          "endedAt": "2026-06-23T11:12:30.906Z",
          "durationMs": 86,
          "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:12:30 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2995",
            "x-ratelimit-reset": "60",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "83",
            "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": "BAJ_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:12:30.906Z",
          "endedAt": "2026-06-23T11:12:31.009Z",
          "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:12:31 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2994",
            "x-ratelimit-reset": "60",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "99",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response 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": "BAJ_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:12:31.009Z",
          "endedAt": "2026-06-23T11:12:31.121Z",
          "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:12:31 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2993",
            "x-ratelimit-reset": "60",
            "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": "Payload object should exist",
              "passed": true,
              "message": "payload present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:12:31.121Z",
          "endedAt": "2026-06-23T11:12:31.233Z",
          "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:12:31 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2992",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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": "payload.attemptsUsed should be 0",
              "passed": true,
              "message": "attemptsUsed=0"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:12:31.233Z",
          "endedAt": "2026-06-23T11:12:31.329Z",
          "durationMs": 96,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:31 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2991",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "93",
            "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": "BAJ_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:12:31.329Z",
          "endedAt": "2026-06-23T11:12:31.442Z",
          "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:12:31 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2990",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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": "Success response schema should match contract",
              "passed": true,
              "message": "Success schema valid"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:12:31.442Z",
          "endedAt": "2026-06-23T11:12:31.528Z",
          "durationMs": 86,
          "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:12:31 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2989",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "82",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response time should be within 2000ms",
              "passed": true,
              "message": "duration=86ms"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:12:31.528Z",
          "endedAt": "2026-06-23T11:12:31.625Z",
          "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:12:31 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2988",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "94",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:12:31.625Z",
          "endedAt": "2026-06-23T11:12:31.730Z",
          "durationMs": 105,
          "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:12:31 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2987",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "102",
            "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": "BAJ_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:12:31.730Z",
          "endedAt": "2026-06-23T11:12:31.746Z",
          "durationMs": 16,
          "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:12:31 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2986",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "12",
            "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": "BAJ_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:12:31.746Z",
          "endedAt": "2026-06-23T11:12:31.753Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": ""
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "310",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:31 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2985",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "5",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response body should be Bad Request envelope",
              "passed": true,
              "message": "Bad Request envelope present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208",
            "FIXUSER1003"
          ]
        },
        {
          "caseId": "BAJ_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:12:31.754Z",
          "endedAt": "2026-06-23T11:12:31.767Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": null
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:31 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2984",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":null}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate validation failure",
              "passed": true,
              "message": "Validation error envelope present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:12:31.767Z",
          "endedAt": "2026-06-23T11:12:31.774Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "9876543210"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "210",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:31 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2983",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9876543210\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain invalid-phone error code",
              "passed": true,
              "message": "Invalid-phone code present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [
            "FIXUSER1003",
            "FIXUSER1208"
          ],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "BAJ_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:12:31.774Z",
          "endedAt": "2026-06-23T11:12:31.833Z",
          "durationMs": 59,
          "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:12:31 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2982",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "55",
            "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": "BAJ_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:12:31.833Z",
          "endedAt": "2026-06-23T11:12:31.840Z",
          "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:12:31 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2981",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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": "BAJ_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:12:31.840Z",
          "endedAt": "2026-06-23T11:12:31.848Z",
          "durationMs": 8,
          "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:12:31 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2980",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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\":\"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": "BAJ_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:12:31.848Z",
          "endedAt": "2026-06-23T11:12:31.855Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "91@#$%^1234"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "310",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:31 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2979",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "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": "BAJ_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:12:31.855Z",
          "endedAt": "2026-06-23T11:12:31.866Z",
          "durationMs": 11,
          "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:12:31 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2978",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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": "BAJ_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:12:31.866Z",
          "endedAt": "2026-06-23T11:12:31.927Z",
          "durationMs": 61,
          "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:12:31 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2977",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "58",
            "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": "BAJ_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:12:31.927Z",
          "endedAt": "2026-06-23T11:12:31.937Z",
          "durationMs": 10,
          "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:12:31 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2976",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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\":\"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": "BAJ_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:12:31.937Z",
          "endedAt": "2026-06-23T11:12:31.945Z",
          "durationMs": 8,
          "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:12:31 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2975",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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\":\"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": "BAJ_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:12:31.945Z",
          "endedAt": "2026-06-23T11:12:31.952Z",
          "durationMs": 7,
          "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:12:31 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2974",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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\":\"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": "BAJ_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:12:31.952Z",
          "endedAt": "2026-06-23T11:12:31.959Z",
          "durationMs": 7,
          "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:12:31 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2973",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629.5\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain invalid-phone error code",
              "passed": true,
              "message": "Invalid-phone code present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [
            "FIXUSER1003",
            "FIXUSER1208"
          ],
          "actualErrorCodes": [
            "FIXUSER1208",
            "FIXUSER1003"
          ]
        },
        {
          "caseId": "BAJ_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:12:31.959Z",
          "endedAt": "2026-06-23T11:12:31.967Z",
          "durationMs": 8,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "९१८६६८३३६६२९"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "310",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:31 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2972",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"९१८६६८३३६६२९\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain invalid-phone error code",
              "passed": true,
              "message": "Invalid-phone code present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [
            "FIXUSER1003",
            "FIXUSER1208"
          ],
          "actualErrorCodes": [
            "FIXUSER1208",
            "FIXUSER1003"
          ]
        },
        {
          "caseId": "BAJ_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:12:31.967Z",
          "endedAt": "2026-06-23T11:12:32.027Z",
          "durationMs": 60,
          "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:12:31 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2971",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "56",
            "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": "BAJ_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:12:32.027Z",
          "endedAt": "2026-06-23T11:12:32.037Z",
          "durationMs": 10,
          "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:12:32 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2970",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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\":\"<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": "BAJ_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:12:32.037Z",
          "endedAt": "2026-06-23T11:12:32.048Z",
          "durationMs": 11,
          "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:12:32 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2969",
            "x-ratelimit-reset": "59",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1003",
                "error": "Invalid phone number"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"<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": "BAJ_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:12:32.048Z",
          "endedAt": "2026-06-23T11:12:32.152Z",
          "durationMs": 104,
          "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:12:32 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2968",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "101",
            "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": "BAJ_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:12:32.152Z",
          "endedAt": "2026-06-23T11:12:32.236Z",
          "durationMs": 84,
          "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:12:32 GMT",
            "etag": "W/\"136-V9TtE3DuDamKo6e11Yk6QQ0cAE4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2967",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "81",
            "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": "BAJ_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:12:32.236Z",
          "endedAt": "2026-06-23T11:12:32.242Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": "{\"phone\":",
          "requestQuery": {},
          "responseHeaders": {
            "content-length": "246",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:32 GMT",
            "etag": "W/\"f6-ySe3EJgjQXC755DXBtbxRm0LZnc\"",
            "vary": "Origin",
            "x-powered-by": "Express",
            "x-envoy-upstream-service-time": "3",
            "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": "BAJ_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:12:32.243Z",
          "endedAt": "2026-06-23T11:12:32.255Z",
          "durationMs": 12,
          "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:12:32 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2966",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should indicate validation failure",
              "passed": true,
              "message": "Empty body rejected"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:12:32.255Z",
          "endedAt": "2026-06-23T11:12:32.394Z",
          "durationMs": 139,
          "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:12:32 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2965",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "135",
            "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": "BAJ_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:12:32.394Z",
          "endedAt": "2026-06-23T11:12:32.409Z",
          "durationMs": 15,
          "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:12:32 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2964",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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: 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": "BAJ_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:12:32.409Z",
          "endedAt": "2026-06-23T11:12:32.417Z",
          "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:12:32 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2963",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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": "BAJ_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:12:32.417Z",
          "endedAt": "2026-06-23T11:12:32.424Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "9876543210"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "210",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:32 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2962",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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": "Body statusCode should be 400",
              "passed": true,
              "message": "statusCode=400"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "BAJ_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:12:32.424Z",
          "endedAt": "2026-06-23T11:12:32.432Z",
          "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:12:32 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2961",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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 message should be \"Bad request\"",
              "passed": true,
              "message": "message=\"Bad request\""
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "BAJ_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:12:32.433Z",
          "endedAt": "2026-06-23T11:12:32.440Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "9876543210"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "210",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:32 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2960",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9876543210\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Payload object should be present in error response",
              "passed": true,
              "message": "payload object present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "BAJ_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:12:32.440Z",
          "endedAt": "2026-06-23T11:12:32.448Z",
          "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:12:32 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2959",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9876543210\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Error array should exist",
              "passed": true,
              "message": "error array present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "BAJ_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:12:32.448Z",
          "endedAt": "2026-06-23T11:12:32.455Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "9876543210"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "210",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:32 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2958",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9876543210\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Response should contain FIXUSER1208",
              "passed": true,
              "message": "FIXUSER1208 present"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [
            "FIXUSER1208"
          ],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "BAJ_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:12:32.455Z",
          "endedAt": "2026-06-23T11:12:32.465Z",
          "durationMs": 10,
          "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:12:32 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2957",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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)"
              }
            ]
          },
          "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": "BAJ_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:12:32.465Z",
          "endedAt": "2026-06-23T11:12:32.536Z",
          "durationMs": 71,
          "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:12:32 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2956",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "65",
            "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": "BAJ_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:12:32.536Z",
          "endedAt": "2026-06-23T11:12:32.544Z",
          "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:12:32 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2955",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1208",
                "error": "Please enter a valid mobile number (Ex. 918898989887)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"9876543210\"}'",
          "validations": [
            {
              "description": "Response status should be 400 Bad Request",
              "passed": true,
              "message": "Status 400 OK"
            },
            {
              "description": "Error response schema should match contract",
              "passed": true,
              "message": "Error schema valid"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1208"
          ]
        },
        {
          "caseId": "BAJ_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:12:32.544Z",
          "endedAt": "2026-06-23T11:12:32.552Z",
          "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:12:32 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2954",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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": "BAJ_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:12:32.552Z",
          "endedAt": "2026-06-23T11:12:32.647Z",
          "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:12:32 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2953",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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": "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": "BAJ_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:12:32.647Z",
          "endedAt": "2026-06-23T11:12:32.757Z",
          "durationMs": 110,
          "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:12:32 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2952",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "106",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "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": "BAJ_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:12:32.757Z",
          "endedAt": "2026-06-23T11:12:32.866Z",
          "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:12:32 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2951",
            "x-ratelimit-reset": "58",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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 success flag should be 1",
              "passed": true,
              "message": "success=1"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:12:32.866Z",
          "endedAt": "2026-06-23T11:12:33.298Z",
          "durationMs": 432,
          "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:12:33 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2947",
            "x-ratelimit-reset": "57",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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": "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 108ms across 4 requests"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:12:33.298Z",
          "endedAt": "2026-06-23T11:12:33.763Z",
          "durationMs": 465,
          "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:12:33 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2942",
            "x-ratelimit-reset": "57",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "89",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "No request in the burst should return a 5xx or network error",
              "passed": true,
              "message": "All 5 requests completed without 5xx/network errors"
            },
            {
              "description": "API should either enforce rate limiting (HTTP 429) or remain stable under burst traffic",
              "passed": true,
              "message": "No rate limiting enforced — all 5 requests succeeded with HTTP 200/201/400"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:12:33.763Z",
          "endedAt": "2026-06-23T11:12:34.091Z",
          "durationMs": 328,
          "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:12:34 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2939",
            "x-ratelimit-reset": "57",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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 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": "BAJ_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:12:34.091Z",
          "endedAt": "2026-06-23T11:12:34.181Z",
          "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:12:34 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2938",
            "x-ratelimit-reset": "56",
            "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 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": "BAJ_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:12:34.181Z",
          "endedAt": "2026-06-23T11:12:34.277Z",
          "durationMs": 96,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:34 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2937",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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 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": "BAJ_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:12:34.278Z",
          "endedAt": "2026-06-23T11:12:34.362Z",
          "durationMs": 84,
          "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:12:34 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2936",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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": "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": "BAJ_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:12:34.362Z",
          "endedAt": "2026-06-23T11:12:34.456Z",
          "durationMs": 94,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:34 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2935",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "91",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Response time should be within 5000ms",
              "passed": true,
              "message": "duration=94ms"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:12:34.456Z",
          "endedAt": "2026-06-23T11:12:34.552Z",
          "durationMs": 96,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:34 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2934",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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": "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": "BAJ_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:12:34.552Z",
          "endedAt": "2026-06-23T11:12:34.646Z",
          "durationMs": 94,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "94",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:34 GMT",
            "etag": "W/\"5e-u9pgAiC6r/+M8iGDbF15OUTKebo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2933",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "91",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "OTP sent successfully.",
            "payload": {
              "attemptsUsed": 0
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/auth/register' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"phone\":\"918668336629\"}'",
          "validations": [
            {
              "description": "Response status should be 201 or 200",
              "passed": true,
              "message": "Status 201 OK"
            },
            {
              "description": "Configured valid phone should remain exactly 12 digits",
              "passed": true,
              "message": "max boundary phone=918668336629"
            }
          ],
          "docsFile": "user-services/API_QA_POST_AUTH_REGISTER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_LOGIN_002",
          "caseName": "Verify OTP and extract auth tokens (Bajaj 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:12:34.647Z",
          "endedAt": "2026-06-23T11:12:34.688Z",
          "durationMs": 41,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "phone": "918668336629",
            "otp": "123456",
            "partner_url": "https://tradingquants.dev.fixerra.in",
            "consent": false,
            "issuer_code": "BAJAJ"
          },
          "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:12:34 GMT",
            "etag": "W/\"3ea-X7+mXKQAKzVcEO47uMpXv6PmOb4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2997",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "37",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "User already exists.",
            "payload": {
              "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw",
              "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJyZWZyZXNoIiwiZl91c2VyX2lkIjoiZTUyM2MxZTUtMDIyOS00NjM3LTk4M2MtMDVlOWFmYjg3YjljIiwiZl9wYXJ0bmVyX3VzZXJfaWQiOiJkMjBlNWViYS0wZGFiLTQ3NDMtOTU3ZS03MTUzYTkzOTViYjciLCJmX3BhcnRuZXJfaWQiOiI2OGJkY2Y4OS04NDY0LTRmODUtODk4Ny1hYTI4OTA4ZTIxYWQiLCJwYXJ0bmVyX3VybCI6Imh0dHBzOi8vdHJhZGluZ3F1YW50cy5kZXYuZml4ZXJyYS5pbiIsImlhdCI6MTc4MjIxMzE1NCwiZXhwIjoxNzgyODE3OTU0fQ.WKa67tEroLQxTn4JUD8TsmF905ZkbmufACnOrapaxZk"
            }
          },
          "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\":\"BAJAJ\"}'",
          "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": "BAJ_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:12:34.688Z",
          "endedAt": "2026-06-23T11:12:34.735Z",
          "durationMs": 47,
          "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:12:34 GMT",
            "etag": "W/\"60-hfBiNy6xWaduSHI0F+WME7SvnL8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2996",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "44",
            "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": "BAJ_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:12:34.735Z",
          "endedAt": "2026-06-23T11:12:34.743Z",
          "durationMs": 8,
          "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:12:34 GMT",
            "etag": "W/\"127-cTEsrvO0GcCv4Fg2XlcWjrb7cKg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2995",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "5",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1010",
                "error": "OTP must be 6 characters long,"
              },
              {
                "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": "BAJ_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:12:34.743Z",
          "endedAt": "2026-06-23T11:12:34.781Z",
          "durationMs": 38,
          "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:12:34 GMT",
            "etag": "W/\"b9-mN40uxs9gfZuKrp6tgl4TLhROd8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2994",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "4",
            "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": "BAJ_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:12:34.782Z",
          "endedAt": "2026-06-23T11:12:34.789Z",
          "durationMs": 7,
          "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:12:34 GMT",
            "etag": "W/\"bb-/V7uRMXgpDZS/f6s/2qoS8g/w0I\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2993",
            "x-ratelimit-reset": "56",
            "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": "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": "BAJ_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:12:34.789Z",
          "endedAt": "2026-06-23T11:12:34.831Z",
          "durationMs": 42,
          "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:12:34 GMT",
            "etag": "W/\"bb-/V7uRMXgpDZS/f6s/2qoS8g/w0I\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2992",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "38",
            "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": "BAJ_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:12:34.831Z",
          "endedAt": "2026-06-23T11:12:35.126Z",
          "durationMs": 295,
          "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:12:35 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2991",
            "x-ratelimit-reset": "56",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "292",
            "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": "BAJ_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:12:35.126Z",
          "endedAt": "2026-06-23T11:12:35.344Z",
          "durationMs": 218,
          "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:12:35 GMT",
            "etag": "W/\"d2-feFZaS8+X3jZ9MGovDAtYeX921U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2990",
            "x-ratelimit-reset": "55",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "197",
            "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": "BAJ_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:12:35.344Z",
          "endedAt": "2026-06-23T11:12:35.363Z",
          "durationMs": 19,
          "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:12:35 GMT",
            "etag": "W/\"bb-5jureKlmL3WjRkBq8FblwYNw8fQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-ratelimit-limit": "3000",
            "x-ratelimit-remaining": "2989",
            "x-ratelimit-reset": "55",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "15",
            "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": 4764
      }
    },
    {
      "stepId": "step-02-fd-detail",
      "stepName": "FD Detail",
      "cases": [
        {
          "caseId": "BAJ_FD_DETAIL_001",
          "caseName": "Get Bajaj Finance issuer detail",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/detail/1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.363Z",
          "endedAt": "2026-06-23T11:12:35.394Z",
          "durationMs": 31,
          "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": "78067",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"130f3-UCoqlVzMNy7bFPU0JfAH7uyJoCY\"",
            "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": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "issuerData": {
                "id": 2,
                "name": "Bajaj Finance Ltd",
                "description": "Bajaj Finance Ltd (BFL) is a registered deposit-taking NBFC with the RBI. Established in 1926, it operates with assets under management (AUM) exceeding ₹2.7 lakh crores and serves over 7.6 crore customers across 300+ branches.",
                "f_code": "BAJ",
                "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                "url": "https://images.dev.fixerra.in/logos/bajaj/Bajaj+Finance_Logo_Primary1.png",
                "sub_logo": "https://images.dev.fixerra.in/logos/bajaj/Bajaj+Finance_Logo_Reverse2.png",
                "compounding_freq": "Yearly",
                "issuer_type": "NBFC",
                "crisil_rating": "AAA/Stable",
                "icra_rating": "AAA(Stable)",
                "trusted_users": "6.9CR+ Since 1987",
                "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": 2,
                "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.35,
                "minTenure": 365,
                "maxTenure": 1825
              },
              "vehiclesPayload": [
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "e0a51128-37d4-4822-8938-36bc0b36f3c0",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "fc13b99a-7191-45c1-801d-e748650b1f1f",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": 9,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.29"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "b7868371-b244-4aef-8646-2d839b596100",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.76"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "6eb72253-e205-4d51-a3ad-c426b7374a0a",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.76"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "dfa5e8a7-d1f1-4092-8b31-268716549434",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.76"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "c8371de7-b9ea-44ed-8ecf-f006b638995e",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.76"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "32bd1ca2-13d5-4b71-be7d-6fb1c84d3a11",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.37"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "dbf40596-f27c-4503-b074-2e28dd32b886",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "ab25f6cd-3899-488b-a55f-20e8cfa34ae1",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "291842f4-5ba3-4d74-8243-67eff5dd528b",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "2cda8d64-9cb1-4f94-9559-9fadaabb3cc8",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "9f63c80c-aa48-4265-8e58-5c8bca4972a0",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.53"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "c5252c7f-9d73-4378-8933-9eb948fd079e",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "8eeab912-f831-4b39-afc3-5931461c1349",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "c0d148ed-ae54-451e-b8e1-6870e93be351",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "e6ec7719-474e-4b95-8bc5-5e1c1bfcfb01",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "cbef0660-542d-4514-b877-f147707cc13c",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "ef4df069-d66d-4d47-9470-29f7a677f026",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "f0a1590e-3ccb-43f2-a236-6aed11a865ba",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "9.05"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "34c0b443-c9ce-4a4e-bb92-7134586547ab",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.76"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "dc4f91be-7ad0-47f3-afdb-fbcaa71419f7",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.76"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "63a688f1-eb8d-4a53-8cde-71b6a2541a14",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.76"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "58d02901-8540-459e-b37a-1fdad8c80ea8",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.76"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "26cf3cf5-67ad-4f43-a67f-53c6d9d14a39",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.59"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "16f3fb3f-1e37-4be0-8fc4-f6fbbc02a2da",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "9b2728e8-6f90-433c-b8e3-269781984f16",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "b8f9f81e-954a-49de-ac68-675681771795",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "0528940d-84dc-4fff-af51-36546330df52",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.16"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "aa3cae60-a8e3-4d71-b7f1-3c45bf382832",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "6fdfc9bd-6b64-448e-8073-e56735ecc74c",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "a236c23a-201f-4c61-974a-6800d09558b0",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "7cd766a9-6d71-4631-859f-0d96db3bc54f",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "d33b8cf6-69f6-4c1a-940a-8349c8cab510",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.99"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "d9f49909-bc4c-40b6-aaf6-d06a42371bb2",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "b6a00d37-0178-41e3-8618-1eb996b32219",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.78"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "6bbf5ddd-9376-4540-a659-63c5446d8b36",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.83"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "f32cf394-a68f-41ef-aa19-e79d7ebdd188",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "4b0e3065-f372-492f-a4af-a054aee8131f",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "823d5416-f823-4bc0-b82c-3983d4778d13",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "2d20202e-1c91-4266-adf6-2ab3efee8229",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": 2,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.89"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "3c58f41a-5e5b-41e9-a0e2-009a8d652deb",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "c9f5a7f0-bea0-4f10-945f-5dfd7cb83272",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "a42e62c8-4eb7-4b51-bd53-6c25e57a71c4",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "49317d75-9176-4ee7-8328-a01a34200198",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "466232a1-4cb3-4502-bd18-6f506ace1747",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.96"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "66cb7c2b-0bcc-405a-8ad8-e5b775995c53",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "fa9e3b89-dddc-4ba7-932e-917a4545a4a1",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "1d3c9a4d-7459-4e80-95a1-1b32a80de225",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "c3c20fa6-20b4-4b76-a622-c4ce923978ab",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "20cdd02c-ff2e-498f-9185-cb57f8161c01",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.11"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "679d101b-0774-4d17-99fc-1963504c68e3",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.42"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "b9ce1e8f-f148-403c-82e8-9cbdceca85ae",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.21"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "7837ae9a-8cff-4465-a422-72c79cdd15c2",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.21"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "faec33d5-fa11-4ed5-9d72-1f307847f4b6",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.21"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "11436981-9e81-46d2-9dc0-039e171cc1de",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.21"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "2d46c4f7-2408-47dd-bf9a-1770ae7a71c4",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.34"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "08495b58-ecc8-469a-bf08-51d48964cf4a",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.23"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "72b736c9-4aa4-4a25-b130-21aff74c10ac",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.23"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "97b473a6-7c44-45e6-b045-b730efa2f4e7",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.23"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "588fdb7d-f25a-4d09-bc91-a65d7da35a0b",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.23"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "72a57e04-5225-403d-8b69-c33d08cc2ad0",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.46"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "41bbfe66-5ade-49a8-b167-49d03f9d6176",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.20"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "118969ea-7885-48c0-a7ac-156f426d5a6b",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.20"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "dac0c029-5287-46c5-b101-1885913809fc",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.20"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "5c28fb30-e893-47c8-8913-5367b01c89fd",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.20"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "f450856d-c2f8-4f64-a577-70a3730bb3e0",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "0fe1d1c2-3e21-4940-a4d6-0c0934c51e92",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "dd41523f-20f1-4ff6-9284-4eff9dbf814d",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "a730d894-3fab-48eb-b932-6ede31b2b3fe",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "550ca26d-1163-40e0-9eda-ff522a688e50",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "e43dac96-3ef0-4dd0-aba0-75f99730f403",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "40545c0a-6e4d-4ecb-81f0-e5d387e86b91",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.01"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "6c763d12-3359-42c0-9758-e45fde226ca1",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "4048fd69-ff51-4356-8733-79b93fab12c6",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "1b202078-77d7-4ae5-b517-1147c466d0dc",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "10eb4efc-6806-4e7d-8170-ee2cd50a8a1a",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.88"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "b82b2ae5-3166-4d7f-a9df-50cde57b2950",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.97"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "02b4c582-f698-4a50-8559-834daa725b73",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.86"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "45c7b771-aa01-419f-a202-486da254d580",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.86"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "d3924942-49ab-417b-9754-fa4a2d463ac4",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.86"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "08e50851-aa84-4e69-bfbe-8bed1943baa8",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.86"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "c1ed946f-07c4-4eeb-8a06-b12c81bc4db8",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.05"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "de026fc9-0dd2-4715-97b9-034f888ee819",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.88"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "53add7b7-d2a1-4eab-912c-58e67ba400f8",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.88"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "0830ade7-180b-438c-9801-be8979c144ab",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.19"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "e4a16a8a-3a1b-40cd-81fb-355d8777e353",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.74"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "e43bab4d-8e1d-4e61-9bbf-4567b922be3c",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.78"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "2e149d3a-840b-4186-a297-c788f299cebb",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.83"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "1ebe7bc2-43b6-45ca-9c0a-1ee0c9074200",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.85"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "cc3b354e-4ad1-4a8c-a422-bc9db35e410f",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.88"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "6b53e620-750e-42ef-ab87-808922fc0d73",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "99769377-4d18-42ff-b654-91edf37d963c",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.44"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "f680774c-5572-4505-912a-4bc34f0eaf10",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.49"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "78708d93-86c7-4276-be5a-c48315c0b48b",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "b0319fca-624b-487d-a11d-e5000c82f83a",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.66"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "7f6b187d-a6e7-4559-aad2-89e5c3e6941e",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "c11770d1-5209-4979-93f5-e41bd2e32e6e",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "0fda16a3-b094-4e0a-9e35-48f5d872e95a",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "8539448a-df3c-4cd1-9950-d14128e54ef2",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60"
                }
              ],
              "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": "1926"
                },
                {
                  "key": "Customers Served",
                  "value": "8 Cr+"
                },
                {
                  "key": "Number of Branches",
                  "value": "300+"
                },
                {
                  "key": "CRISIL Rating",
                  "value": "AAA Stable"
                },
                {
                  "key": "Assets Under Management",
                  "value": "₹2.7 lakh Cr+"
                }
              ],
              "distinctMinTenureValues": [
                {
                  "value": 1003
                },
                {
                  "value": 1095
                },
                {
                  "value": 1277
                },
                {
                  "value": 1338
                },
                {
                  "value": 1825
                },
                {
                  "value": 365
                },
                {
                  "value": 456
                },
                {
                  "value": 547
                },
                {
                  "value": 669
                },
                {
                  "value": 730
                }
              ],
              "interestPayouts": [
                "Yearly",
                "Maturity",
                "Monthly",
                "Quarterly",
                "HalfYearly"
              ]
            }
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/detail/1b5b4acb-14a8-4a26-ac73-1e042ef67d48' \\\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=BAJ, f_issuer_id=1b5b4acb-14a8-4a26-ac73-1e042ef67d48)"
            }
          ],
          "docsFile": "master-services/API_QA_GET_DETAIL_ISSUER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_FD_DETAIL_002",
          "caseName": "Get Bajaj maturity quote and capture investment vehicle id",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.394Z",
          "endedAt": "2026-06-23T11:12:35.407Z",
          "durationMs": 13,
          "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": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-DUVgEPKqWolVVbpXuDEmyqaydRM\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 53300
                  }
                ]
              }
            ],
            "maturity_amount": 53300
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=50000&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 (1b7f705e-0c25-4172-b38f-60d9eaf235ff)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_MAT_AUTH_001",
          "caseName": "BAJ maturity should reject missing auth",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:12:35.407Z",
          "endedAt": "2026-06-23T11:12:35.411Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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:12:35 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/BAJ?tenure=365&investment_amount=15000&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": "BAJ_MAT_FREQ001",
          "caseName": "BAJ Maturity payout success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.412Z",
          "endedAt": "2026-06-23T11:12:35.422Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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": "BAJ_MAT_FREQ002",
          "caseName": "BAJ Monthly payout success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.422Z",
          "endedAt": "2026-06-23T11:12:35.452Z",
          "durationMs": 30,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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": "932",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"3a4-ug6xgkFyJ0ezDjtDIvKTUaPoNng\"",
            "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.60",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "6b53e620-750e-42ef-ab87-808922fc0d73",
            "average_yield": "6.41",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 18.44
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 80.13
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 80.13
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 80.13
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 80.13
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 80.13
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 80.13
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 80.13
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 80.13
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 80.13
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 80.13
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 80.13
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 61.74
                  }
                ]
              }
            ],
            "payout_amount": 80.13,
            "total_payout": 961.5
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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": "BAJ_MAT_FREQ003",
          "caseName": "BAJ Quarterly payout success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.452Z",
          "endedAt": "2026-06-23T11:12:35.469Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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": "637",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"27d-of8Tdnvt/tT28fUlMp7XdhMkBR8\"",
            "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.60",
            "payout_frequency": "Quarterly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "99769377-4d18-42ff-b654-91edf37d963c",
            "average_yield": "6.44",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 18.53
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 241.5
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 241.5
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 241.5
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 223.14
                  }
                ]
              }
            ],
            "payout_amount": 241.5,
            "total_payout": 966
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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": "BAJ_MAT_FREQ004",
          "caseName": "BAJ HalfYearly payout success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.469Z",
          "endedAt": "2026-06-23T11:12:35.486Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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": "569",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"239-u6J7R4T5WkWg3E1MB/lo2lTdYuM\"",
            "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.60",
            "payout_frequency": "HalfYearly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "f680774c-5572-4505-912a-4bc34f0eaf10",
            "average_yield": "6.49",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-09-30",
                    "amount": 264.05
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 486.75
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 223.04
                  }
                ]
              }
            ],
            "payout_amount": 486.75,
            "total_payout": 973.5
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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": "BAJ_MAT_FREQ005",
          "caseName": "BAJ Yearly payout success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.486Z",
          "endedAt": "2026-06-23T11:12:35.500Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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": "499",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1f3-e7v5SKwNwY0a1NQ3Vn+81sT2EIU\"",
            "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": "Yearly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "78708d93-86c7-4276-be5a-c48315c0b48b",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 762.16
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 228.51
                  }
                ]
              }
            ],
            "payout_amount": 990,
            "total_payout": 990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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": "BAJ_MAT_BOUND_001",
          "caseName": "BAJ min amount boundary success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.500Z",
          "endedAt": "2026-06-23T11:12:35.512Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "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": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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": "BAJ_MAT_BOUND_002",
          "caseName": "BAJ max amount boundary success",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.512Z",
          "endedAt": "2026-06-23T11:12:35.522Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "1825",
            "investment_amount": "30000000",
            "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": "461",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1cd-LiLEEw4CrURGRCUr1eo/DLeZJok\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "7.40",
            "payout_frequency": "Maturity",
            "maturity_date": "2031-06-22",
            "maturity_date_ist": "2031-06-22",
            "f_investment_vehicle_id": "d33b8cf6-69f6-4c1a-940a-8349c8cab510",
            "average_yield": "7.99",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 1825,
            "product_max_tenure": 1825,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2031,
                "data": [
                  {
                    "date": "2031-06-22",
                    "amount": 42868931.76
                  }
                ]
              }
            ],
            "maturity_amount": 42868931.76
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=1825&investment_amount=30000000&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": "BAJ_MAT_BOUND_003",
          "caseName": "BAJ amount below min should fail",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.522Z",
          "endedAt": "2026-06-23T11:12:35.532Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "14000",
            "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:12:35 GMT",
            "etag": "W/\"d6-01ft2Fyu7FRTRYdxlqCDAqs14Lw\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS092",
                "error": "The entered Investment Amount is not accepted by the issuer"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=14000&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": "BAJ_MAT_BOUND_004",
          "caseName": "BAJ tenure below min should fail",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.532Z",
          "endedAt": "2026-06-23T11:12:35.542Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "364",
            "investment_amount": "15000",
            "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:12:35 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": "7",
            "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/BAJ?tenure=364&investment_amount=15000&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": "BAJ_MAT_NBFC_001",
          "caseName": "BAJ non-multiple amount should fail FIXMAS091",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.542Z",
          "endedAt": "2026-06-23T11:12:35.548Z",
          "durationMs": 6,
          "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:12:35 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": "3",
            "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/BAJ?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": "BAJ_MAT_WOMEN_001",
          "caseName": "BAJ women_citizen=true should fail",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.548Z",
          "endedAt": "2026-06-23T11:12:35.558Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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:12:35 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": "7",
            "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/BAJ?tenure=365&investment_amount=15000&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": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.558Z",
          "endedAt": "2026-06-23T11:12:35.568Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.568Z",
          "endedAt": "2026-06-23T11:12:35.578Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.578Z",
          "endedAt": "2026-06-23T11:12:35.592Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "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": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.593Z",
          "endedAt": "2026-06-23T11:12:35.602Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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=\"1b7f705e-0c25-4172-b38f-60d9eaf235ff\""
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_MAT_009",
          "caseName": "Verify minimum investment amount returned (15000)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.602Z",
          "endedAt": "2026-06-23T11:12:35.612Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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 15000",
              "passed": true,
              "message": "product_min_investment=15000"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_MAT_010",
          "caseName": "Verify maximum investment amount returned (30000000)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.612Z",
          "endedAt": "2026-06-23T11:12:35.622Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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 30000000",
              "passed": true,
              "message": "product_max_investment=30000000"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.622Z",
          "endedAt": "2026-06-23T11:12:35.633Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "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": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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=15990 > principal=15000"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.633Z",
          "endedAt": "2026-06-23T11:12:35.649Z",
          "durationMs": 16,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "120000",
            "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": "909",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"38d-Gw7YTrrQB5OvO6jGvJ4kjuOPVJM\"",
            "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": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "6b53e620-750e-42ef-ab87-808922fc0d73",
            "average_yield": "6.41",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 147.52
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 641
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 641
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 641
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 641
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 641
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 493.92
                  }
                ]
              }
            ],
            "payout_amount": 641,
            "total_payout": 7692
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=120000&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=7692"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.649Z",
          "endedAt": "2026-06-23T11:12:35.664Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "120000",
            "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": "909",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"38d-Gw7YTrrQB5OvO6jGvJ4kjuOPVJM\"",
            "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": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "6b53e620-750e-42ef-ab87-808922fc0d73",
            "average_yield": "6.41",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 147.52
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 641
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 641
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 641
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 641
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 641
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 493.92
                  }
                ]
              }
            ],
            "payout_amount": 641,
            "total_payout": 7692
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=120000&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=641"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.664Z",
          "endedAt": "2026-06-23T11:12:35.679Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "120000",
            "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": "909",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"38d-Gw7YTrrQB5OvO6jGvJ4kjuOPVJM\"",
            "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": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "6b53e620-750e-42ef-ab87-808922fc0d73",
            "average_yield": "6.41",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 147.52
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 641
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 641
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 641
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 641
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 641
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 493.92
                  }
                ]
              }
            ],
            "payout_amount": 641,
            "total_payout": 7692
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=120000&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": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.680Z",
          "endedAt": "2026-06-23T11:12:35.693Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "120000",
            "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": "909",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"38d-Gw7YTrrQB5OvO6jGvJ4kjuOPVJM\"",
            "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": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "6b53e620-750e-42ef-ab87-808922fc0d73",
            "average_yield": "6.41",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 147.52
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 641
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 641
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 641
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 641
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 641
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 493.92
                  }
                ]
              }
            ],
            "payout_amount": 641,
            "total_payout": 7692
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=120000&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": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.694Z",
          "endedAt": "2026-06-23T11:12:35.698Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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:12:35 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/BAJ?tenure=365&investment_amount=15000&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": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:12:35.698Z",
          "endedAt": "2026-06-23T11:12:35.703Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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:12:35 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/BAJ?tenure=365&investment_amount=15000&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": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.703Z",
          "endedAt": "2026-06-23T11:12:35.712Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "in****yz"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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": "BAJ_MAT_061",
          "caseName": "Verify an expired/stale-looking 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/BAJ",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.713Z",
          "endedAt": "2026-06-23T11:12:35.722Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "ex****00"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: ex****00'",
          "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": "BAJ_MAT_062",
          "caseName": "Verify a malformed API key token 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/BAJ",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.722Z",
          "endedAt": "2026-06-23T11:12:35.731Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "Be****wt"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: Be****wt'",
          "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": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:12:35.732Z",
          "endedAt": "2026-06-23T11:12:35.735Z",
          "durationMs": 3,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "****"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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:12:35 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/BAJ?tenure=365&investment_amount=15000&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": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.735Z",
          "endedAt": "2026-06-23T11:12:35.745Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.745Z",
          "endedAt": "2026-06-23T11:12:35.754Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=FD' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "HTTP 200"
            },
            {
              "description": "Response should complete within 2000ms",
              "passed": true,
              "message": "duration=9ms"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_MAT_069",
          "caseName": "Verify SQL injection payload in investment_amount is safely ignored (leading numeric value '15000' is parsed, no injection)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.754Z",
          "endedAt": "2026-06-23T11:12:35.764Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000' 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": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000%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=15990"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.764Z",
          "endedAt": "2026-06-23T11:12:35.768Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365' OR '1'='1",
            "investment_amount": "15000",
            "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:12:35 GMT",
            "etag": "W/\"c6-lkpf0VVnOHYlWmFGhvoeDBviVY8\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS067",
                "error": "Invalid tenure. Please enter a valid tenure"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365%27+OR+%271%27%3D%271&investment_amount=15000&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": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.768Z",
          "endedAt": "2026-06-23T11:12:35.774Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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:12:35 GMT",
            "etag": "W/\"da-GsGPQpwhN6hvx2akpkhgtc/Orb8\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS071",
                "error": "Invalid payout_frequency. Please enter a valid payout_frequency"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.774Z",
          "endedAt": "2026-06-23T11:12:35.778Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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:12:35 GMT",
            "etag": "W/\"da-GsGPQpwhN6hvx2akpkhgtc/Orb8\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS071",
                "error": "Invalid payout_frequency. Please enter a valid payout_frequency"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.778Z",
          "endedAt": "2026-06-23T11:12:35.783Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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:12:35 GMT",
            "etag": "W/\"ce-kpE6H4BBNmqZLTyXPl9iXasRADM\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS107",
                "error": "The product type must be one of the allowed values."
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.783Z",
          "endedAt": "2026-06-23T11:12:35.904Z",
          "durationMs": 121,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "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": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.904Z",
          "endedAt": "2026-06-23T11:12:35.914Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.914Z",
          "endedAt": "2026-06-23T11:12:35.929Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "120000",
            "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": "909",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"38d-Gw7YTrrQB5OvO6jGvJ4kjuOPVJM\"",
            "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": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "6b53e620-750e-42ef-ab87-808922fc0d73",
            "average_yield": "6.41",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 147.52
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 641
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 641
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 641
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 641
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 641
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 493.92
                  }
                ]
              }
            ],
            "payout_amount": 641,
            "total_payout": 7692
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=120000&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": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.929Z",
          "endedAt": "2026-06-23T11:12:35.940Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "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": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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": "BAJ_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/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.940Z",
          "endedAt": "2026-06-23T11:12:35.949Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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=425"
            }
          ],
          "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/1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.950Z",
          "endedAt": "2026-06-23T11:12:35.969Z",
          "durationMs": 19,
          "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": "78067",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"130f3-UCoqlVzMNy7bFPU0JfAH7uyJoCY\"",
            "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": "15",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "issuerData": {
                "id": 2,
                "name": "Bajaj Finance Ltd",
                "description": "Bajaj Finance Ltd (BFL) is a registered deposit-taking NBFC with the RBI. Established in 1926, it operates with assets under management (AUM) exceeding ₹2.7 lakh crores and serves over 7.6 crore customers across 300+ branches.",
                "f_code": "BAJ",
                "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                "url": "https://images.dev.fixerra.in/logos/bajaj/Bajaj+Finance_Logo_Primary1.png",
                "sub_logo": "https://images.dev.fixerra.in/logos/bajaj/Bajaj+Finance_Logo_Reverse2.png",
                "compounding_freq": "Yearly",
                "issuer_type": "NBFC",
                "crisil_rating": "AAA/Stable",
                "icra_rating": "AAA(Stable)",
                "trusted_users": "6.9CR+ Since 1987",
                "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": 2,
                "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.35,
                "minTenure": 365,
                "maxTenure": 1825
              },
              "vehiclesPayload": [
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "e0a51128-37d4-4822-8938-36bc0b36f3c0",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "fc13b99a-7191-45c1-801d-e748650b1f1f",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": 9,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.29"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "b7868371-b244-4aef-8646-2d839b596100",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.76"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "6eb72253-e205-4d51-a3ad-c426b7374a0a",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.76"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "dfa5e8a7-d1f1-4092-8b31-268716549434",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.76"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "c8371de7-b9ea-44ed-8ecf-f006b638995e",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.76"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "32bd1ca2-13d5-4b71-be7d-6fb1c84d3a11",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.37"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "dbf40596-f27c-4503-b074-2e28dd32b886",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "ab25f6cd-3899-488b-a55f-20e8cfa34ae1",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "291842f4-5ba3-4d74-8243-67eff5dd528b",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "2cda8d64-9cb1-4f94-9559-9fadaabb3cc8",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "9f63c80c-aa48-4265-8e58-5c8bca4972a0",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.53"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "c5252c7f-9d73-4378-8933-9eb948fd079e",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "8eeab912-f831-4b39-afc3-5931461c1349",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "c0d148ed-ae54-451e-b8e1-6870e93be351",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "e6ec7719-474e-4b95-8bc5-5e1c1bfcfb01",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "cbef0660-542d-4514-b877-f147707cc13c",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "ef4df069-d66d-4d47-9470-29f7a677f026",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "f0a1590e-3ccb-43f2-a236-6aed11a865ba",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "9.05"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "34c0b443-c9ce-4a4e-bb92-7134586547ab",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.76"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "dc4f91be-7ad0-47f3-afdb-fbcaa71419f7",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.76"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "63a688f1-eb8d-4a53-8cde-71b6a2541a14",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.76"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "58d02901-8540-459e-b37a-1fdad8c80ea8",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.76"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "26cf3cf5-67ad-4f43-a67f-53c6d9d14a39",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.59"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "16f3fb3f-1e37-4be0-8fc4-f6fbbc02a2da",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.75",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.75"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "9b2728e8-6f90-433c-b8e3-269781984f16",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "b8f9f81e-954a-49de-ac68-675681771795",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "0528940d-84dc-4fff-af51-36546330df52",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.16"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "aa3cae60-a8e3-4d71-b7f1-3c45bf382832",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "6fdfc9bd-6b64-448e-8073-e56735ecc74c",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "a236c23a-201f-4c61-974a-6800d09558b0",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "7cd766a9-6d71-4631-859f-0d96db3bc54f",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1338,
                  "product_max_tenure": 1338,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "d33b8cf6-69f6-4c1a-940a-8349c8cab510",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.99"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "d9f49909-bc4c-40b6-aaf6-d06a42371bb2",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "b6a00d37-0178-41e3-8618-1eb996b32219",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.78"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "6bbf5ddd-9376-4540-a659-63c5446d8b36",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.83"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "f32cf394-a68f-41ef-aa19-e79d7ebdd188",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1825,
                  "product_max_tenure": 1825,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "4b0e3065-f372-492f-a4af-a054aee8131f",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "823d5416-f823-4bc0-b82c-3983d4778d13",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "2d20202e-1c91-4266-adf6-2ab3efee8229",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": 2,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.89"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "3c58f41a-5e5b-41e9-a0e2-009a8d652deb",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "c9f5a7f0-bea0-4f10-945f-5dfd7cb83272",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "a42e62c8-4eb7-4b51-bd53-6c25e57a71c4",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "49317d75-9176-4ee7-8328-a01a34200198",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1003,
                  "product_max_tenure": 1003,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "466232a1-4cb3-4502-bd18-6f506ace1747",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.96"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "66cb7c2b-0bcc-405a-8ad8-e5b775995c53",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "fa9e3b89-dddc-4ba7-932e-917a4545a4a1",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "1d3c9a4d-7459-4e80-95a1-1b32a80de225",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "c3c20fa6-20b4-4b76-a622-c4ce923978ab",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1095,
                  "product_max_tenure": 1276,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.40"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "20cdd02c-ff2e-498f-9185-cb57f8161c01",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 1277,
                  "product_max_tenure": 1277,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.40",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "8.11"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "679d101b-0774-4d17-99fc-1963504c68e3",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.42"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "b9ce1e8f-f148-403c-82e8-9cbdceca85ae",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.21"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "7837ae9a-8cff-4465-a422-72c79cdd15c2",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.21"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "faec33d5-fa11-4ed5-9d72-1f307847f4b6",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.21"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "11436981-9e81-46d2-9dc0-039e171cc1de",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.21"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "2d46c4f7-2408-47dd-bf9a-1770ae7a71c4",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.34"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "08495b58-ecc8-469a-bf08-51d48964cf4a",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.23"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "72b736c9-4aa4-4a25-b130-21aff74c10ac",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.23"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "97b473a6-7c44-45e6-b045-b730efa2f4e7",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.23"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "588fdb7d-f25a-4d09-bc91-a65d7da35a0b",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.23"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "72a57e04-5225-403d-8b69-c33d08cc2ad0",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.46"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "41bbfe66-5ade-49a8-b167-49d03f9d6176",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.20"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "118969ea-7885-48c0-a7ac-156f426d5a6b",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.20"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "dac0c029-5287-46c5-b101-1885913809fc",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.20"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "5c28fb30-e893-47c8-8913-5367b01c89fd",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "7.20",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.20"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "f450856d-c2f8-4f64-a577-70a3730bb3e0",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "0fe1d1c2-3e21-4940-a4d6-0c0934c51e92",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "dd41523f-20f1-4ff6-9284-4eff9dbf814d",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "a730d894-3fab-48eb-b932-6ede31b2b3fe",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "550ca26d-1163-40e0-9eda-ff522a688e50",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "e43dac96-3ef0-4dd0-aba0-75f99730f403",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "40545c0a-6e4d-4ecb-81f0-e5d387e86b91",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.01"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "6c763d12-3359-42c0-9758-e45fde226ca1",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "4048fd69-ff51-4356-8733-79b93fab12c6",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "1b202078-77d7-4ae5-b517-1147c466d0dc",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": true,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.95",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.95"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "10eb4efc-6806-4e7d-8170-ee2cd50a8a1a",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.88"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "b82b2ae5-3166-4d7f-a9df-50cde57b2950",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.97"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "02b4c582-f698-4a50-8559-834daa725b73",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.86"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "45c7b771-aa01-419f-a202-486da254d580",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.86"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "d3924942-49ab-417b-9754-fa4a2d463ac4",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.86"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "08e50851-aa84-4e69-bfbe-8bed1943baa8",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 547,
                  "product_max_tenure": 547,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.86"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "c1ed946f-07c4-4eeb-8a06-b12c81bc4db8",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.05"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "de026fc9-0dd2-4715-97b9-034f888ee819",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.88"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "53add7b7-d2a1-4eab-912c-58e67ba400f8",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.88"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "0830ade7-180b-438c-9801-be8979c144ab",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "7.19"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "e4a16a8a-3a1b-40cd-81fb-355d8777e353",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.74"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "e43bab4d-8e1d-4e61-9bbf-4567b922be3c",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.78"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "2e149d3a-840b-4186-a297-c788f299cebb",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.83"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "1ebe7bc2-43b6-45ca-9c0a-1ee0c9074200",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 730,
                  "product_max_tenure": 1002,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.85"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "cc3b354e-4ad1-4a8c-a422-bc9db35e410f",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 669,
                  "product_max_tenure": 669,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.85",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.88"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "6b53e620-750e-42ef-ab87-808922fc0d73",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.41"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "99769377-4d18-42ff-b654-91edf37d963c",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.44"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "f680774c-5572-4505-912a-4bc34f0eaf10",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.49"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "78708d93-86c7-4276-be5a-c48315c0b48b",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "b0319fca-624b-487d-a11d-e5000c82f83a",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.66"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "7f6b187d-a6e7-4559-aad2-89e5c3e6941e",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Monthly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "c11770d1-5209-4979-93f5-e41bd2e32e6e",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Quarterly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "0fda16a3-b094-4e0a-9e35-48f5d872e95a",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "HalfYearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "8539448a-df3c-4cd1-9950-d14128e54ef2",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 456,
                  "product_max_tenure": 546,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "NC",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60"
                },
                {
                  "f_product_id": "",
                  "f_issuer_id": "1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
                  "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
                  "product_details": "NULL",
                  "product_type": "FD",
                  "product_rank": null,
                  "product_min_tenure": 365,
                  "product_max_tenure": 425,
                  "product_min_investment": 15000,
                  "product_max_investment": 30000000,
                  "product_senior_citizen": false,
                  "product_effective_date": "2026-04-30T11:00:00.000Z",
                  "product_tax_saver": false,
                  "product_issuer_commision": "NULL",
                  "product_self_commision": "NULL",
                  "product_women": false,
                  "product_early_withdrawal": false,
                  "product_payout_term": "C",
                  "product_loc_in_period": "3",
                  "product_interest_freq": "Yearly",
                  "product_interest": "6.60",
                  "product_ineffective_date": null,
                  "product_min_tenure_label": "",
                  "is_visible": true,
                  "yield": "6.60"
                }
              ],
              "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": "1926"
                },
                {
                  "key": "Customers Served",
                  "value": "8 Cr+"
                },
                {
                  "key": "Number of Branches",
                  "value": "300+"
                },
                {
                  "key": "CRISIL Rating",
                  "value": "AAA Stable"
                },
                {
                  "key": "Assets Under Management",
                  "value": "₹2.7 lakh Cr+"
                }
              ],
              "distinctMinTenureValues": [
                {
                  "value": 1003
                },
                {
                  "value": 1095
                },
                {
                  "value": 1277
                },
                {
                  "value": 1338
                },
                {
                  "value": 1825
                },
                {
                  "value": 365
                },
                {
                  "value": 456
                },
                {
                  "value": 547
                },
                {
                  "value": 669
                },
                {
                  "value": 730
                }
              ],
              "interestPayouts": [
                "Yearly",
                "Maturity",
                "Monthly",
                "Quarterly",
                "HalfYearly"
              ]
            }
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/detail/1b5b4acb-14a8-4a26-ac73-1e042ef67d48' \\\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/1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:12:35.969Z",
          "endedAt": "2026-06-23T11:12:35.973Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {},
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "57",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 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/1b5b4acb-14a8-4a26-ac73-1e042ef67d48' \\\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/1b5b4acb-14a8-4a26-ac73-1e042ef67d48",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.973Z",
          "endedAt": "2026-06-23T11:12:35.978Z",
          "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:12:35 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/1b5b4acb-14a8-4a26-ac73-1e042ef67d48?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-BAJ-001_0",
          "caseName": "[POSITIVE] `BAJ`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.978Z",
          "endedAt": "2026-06-23T11:12:35.988Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "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": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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-BAJ-002_1",
          "caseName": "[POSITIVE] `BAJ`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:35.988Z",
          "endedAt": "2026-06-23T11:12:36.003Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "120000",
            "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": "909",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:35 GMT",
            "etag": "W/\"38d-Gw7YTrrQB5OvO6jGvJ4kjuOPVJM\"",
            "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": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "6b53e620-750e-42ef-ab87-808922fc0d73",
            "average_yield": "6.41",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 147.52
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 641
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 641
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 641
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 641
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 641
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 493.92
                  }
                ]
              }
            ],
            "payout_amount": 641,
            "total_payout": 7692
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=120000&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-BAJ-003_2",
          "caseName": "[POSITIVE] `BAJ`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.003Z",
          "endedAt": "2026-06-23T11:12:36.017Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "120000",
            "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": "636",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"27c-+VSfinI4Al/RLNvXY0YveC36uAI\"",
            "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": "Quarterly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "99769377-4d18-42ff-b654-91edf37d963c",
            "average_yield": "6.44",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 148.21
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 1932
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 1932
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 1932
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 1785.12
                  }
                ]
              }
            ],
            "payout_amount": 1932,
            "total_payout": 7728
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=120000&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-BAJ-004_3",
          "caseName": "[POSITIVE] `BAJ`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.017Z",
          "endedAt": "2026-06-23T11:12:36.033Z",
          "durationMs": 16,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "730",
            "investment_amount": "120000",
            "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": "663",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"297-v7yzhRQk4IEOB8k7BCcGMAWjCRE\"",
            "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.85",
            "payout_frequency": "HalfYearly",
            "maturity_date": "2028-06-22",
            "maturity_date_ist": "2028-06-22",
            "f_investment_vehicle_id": "2e149d3a-840b-4186-a297-c788f299cebb",
            "average_yield": "6.83",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 730,
            "product_max_tenure": 1002,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-09-30",
                    "amount": 2219.98
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 4098
                  },
                  {
                    "date": "2027-09-30",
                    "amount": 4098
                  }
                ]
              },
              {
                "year": 2028,
                "data": [
                  {
                    "date": "2028-03-31",
                    "amount": 4098
                  },
                  {
                    "date": "2028-06-22",
                    "amount": 1875.21
                  }
                ]
              }
            ],
            "payout_amount": 4098,
            "total_payout": 16392
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=730&investment_amount=120000&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-BAJ-005_4",
          "caseName": "[POSITIVE] `BAJ`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.033Z",
          "endedAt": "2026-06-23T11:12:36.048Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "730",
            "investment_amount": "100000",
            "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": "564",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"234-NKf6K3Zqaq0Vqg+DqTyxXpFYPq0\"",
            "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.85",
            "payout_frequency": "Yearly",
            "maturity_date": "2028-06-22",
            "maturity_date_ist": "2028-06-22",
            "f_investment_vehicle_id": "1ebe7bc2-43b6-45ca-9c0a-1ee0c9074200",
            "average_yield": "6.85",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 730,
            "product_max_tenure": 1002,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 5266.35
                  }
                ]
              },
              {
                "year": 2028,
                "data": [
                  {
                    "date": "2028-03-31",
                    "amount": 6850
                  },
                  {
                    "date": "2028-06-22",
                    "amount": 1578.97
                  }
                ]
              }
            ],
            "payout_amount": 6850,
            "total_payout": 13700
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=730&investment_amount=100000&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-001_5",
          "caseName": "[POSITIVE] BAJ valid, cumulative with minimum amount",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.048Z",
          "endedAt": "2026-06-23T11:12:36.060Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "FD"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "447",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"1bf-CDHCb2o9/i3VdZTUBOIjTUV3fVY\"",
            "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": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 15990
                  }
                ]
              }
            ],
            "maturity_amount": 15990
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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": "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-002_6",
          "caseName": "[POSITIVE] BAJ valid, maximum boundary",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.060Z",
          "endedAt": "2026-06-23T11:12:36.070Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "1825",
            "investment_amount": "30000000",
            "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": "461",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"1cd-LiLEEw4CrURGRCUr1eo/DLeZJok\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "7.40",
            "payout_frequency": "Maturity",
            "maturity_date": "2031-06-22",
            "maturity_date_ist": "2031-06-22",
            "f_investment_vehicle_id": "d33b8cf6-69f6-4c1a-940a-8349c8cab510",
            "average_yield": "7.99",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 1825,
            "product_max_tenure": 1825,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2031,
                "data": [
                  {
                    "date": "2031-06-22",
                    "amount": 42868931.76
                  }
                ]
              }
            ],
            "maturity_amount": 42868931.76
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=1825&investment_amount=30000000&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-007_7",
          "caseName": "[POSITIVE] Non-cumulative yearly payout",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.070Z",
          "endedAt": "2026-06-23T11:12:36.083Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "730",
            "investment_amount": "100000",
            "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": "564",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"234-NKf6K3Zqaq0Vqg+DqTyxXpFYPq0\"",
            "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.85",
            "payout_frequency": "Yearly",
            "maturity_date": "2028-06-22",
            "maturity_date_ist": "2028-06-22",
            "f_investment_vehicle_id": "1ebe7bc2-43b6-45ca-9c0a-1ee0c9074200",
            "average_yield": "6.85",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 730,
            "product_max_tenure": 1002,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 5266.35
                  }
                ]
              },
              {
                "year": 2028,
                "data": [
                  {
                    "date": "2028-03-31",
                    "amount": 6850
                  },
                  {
                    "date": "2028-06-22",
                    "amount": 1578.97
                  }
                ]
              }
            ],
            "payout_amount": 6850,
            "total_payout": 13700
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=730&investment_amount=100000&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-008_8",
          "caseName": "[POSITIVE] Non-cumulative monthly payout",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.084Z",
          "endedAt": "2026-06-23T11:12:36.097Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "120000",
            "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": "909",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"38d-Gw7YTrrQB5OvO6jGvJ4kjuOPVJM\"",
            "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": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "6b53e620-750e-42ef-ab87-808922fc0d73",
            "average_yield": "6.41",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 147.52
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 641
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 641
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 641
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 641
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 641
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 641
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 641
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 493.92
                  }
                ]
              }
            ],
            "payout_amount": 641,
            "total_payout": 7692
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=120000&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-009_9",
          "caseName": "[POSITIVE] Non-cumulative quarterly payout",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.097Z",
          "endedAt": "2026-06-23T11:12:36.112Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "120000",
            "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": "636",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"27c-+VSfinI4Al/RLNvXY0YveC36uAI\"",
            "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": "Quarterly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "99769377-4d18-42ff-b654-91edf37d963c",
            "average_yield": "6.44",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 148.21
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 1932
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 1932
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 1932
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 1785.12
                  }
                ]
              }
            ],
            "payout_amount": 1932,
            "total_payout": 7728
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=120000&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-POS-010_10",
          "caseName": "[POSITIVE] Non-cumulative half-yearly payout",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.112Z",
          "endedAt": "2026-06-23T11:12:36.126Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "730",
            "investment_amount": "120000",
            "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": "663",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"297-v7yzhRQk4IEOB8k7BCcGMAWjCRE\"",
            "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.85",
            "payout_frequency": "HalfYearly",
            "maturity_date": "2028-06-22",
            "maturity_date_ist": "2028-06-22",
            "f_investment_vehicle_id": "2e149d3a-840b-4186-a297-c788f299cebb",
            "average_yield": "6.83",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 730,
            "product_max_tenure": 1002,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-09-30",
                    "amount": 2219.98
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-03-31",
                    "amount": 4098
                  },
                  {
                    "date": "2027-09-30",
                    "amount": 4098
                  }
                ]
              },
              {
                "year": 2028,
                "data": [
                  {
                    "date": "2028-03-31",
                    "amount": 4098
                  },
                  {
                    "date": "2028-06-22",
                    "amount": 1875.21
                  }
                ]
              }
            ],
            "payout_amount": 4098,
            "total_payout": 16392
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=730&investment_amount=120000&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-NEG-002_11",
          "caseName": "[NEGATIVE] Missing `tenure`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.126Z",
          "endedAt": "2026-06-23T11:12:36.132Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-NEG-002"
          },
          "requestQuery": {
            "investment_amount": "100000",
            "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": "195",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"c3-acSi0+V+oPy4lxbKkFByzOOgc8g\"",
            "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": "FIXMAS066",
                "error": "tenure is required. Please enter tenure."
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?investment_amount=100000&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-NEG-002\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXMAS066",
              "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": [
            "FIXMAS066"
          ],
          "actualErrorCodes": [
            "FIXMAS066"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-NEG-003_12",
          "caseName": "[NEGATIVE] Missing `investment_amount`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.132Z",
          "endedAt": "2026-06-23T11:12:36.136Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-NEG-003"
          },
          "requestQuery": {
            "tenure": "365",
            "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": "217",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"d9-CE+h1K1rRFckkSI3gVMMxarn2ik\"",
            "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": "FIXMAS068",
                "error": "investment_amount is required. Please enter investment_amount."
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&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-NEG-003\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXMAS068",
              "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": [
            "FIXMAS068"
          ],
          "actualErrorCodes": [
            "FIXMAS068"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-NEG-004_13",
          "caseName": "[NEGATIVE] Missing `payout_frequency`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.136Z",
          "endedAt": "2026-06-23T11:12:36.140Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-NEG-004"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "100000",
            "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": "497",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"1f1-yqNl2onv8Bwsk/1wOO1oLhF1rt4\"",
            "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": "FIXMAS070",
                "error": "payout_frequency is required. Please enter payout_frequency."
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS071",
                "error": "Invalid payout_frequency. Please enter a valid payout_frequency"
              },
              {
                "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/BAJ?tenure=365&investment_amount=100000&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-NEG-004\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXMAS071",
              "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": [
            "FIXMAS071"
          ],
          "actualErrorCodes": [
            "FIXMAS070",
            "FIXMAS071",
            "FIXMAS071"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-NEG-005_14",
          "caseName": "[NEGATIVE] `tenure` invalid type (`abc`)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.140Z",
          "endedAt": "2026-06-23T11:12:36.145Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-NEG-005"
          },
          "requestQuery": {
            "tenure": "abc",
            "investment_amount": "100000",
            "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": "198",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"c6-lkpf0VVnOHYlWmFGhvoeDBviVY8\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS067",
                "error": "Invalid tenure. Please enter a valid tenure"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=abc&investment_amount=100000&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-NEG-005\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXMAS067",
              "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": [
            "FIXMAS067"
          ],
          "actualErrorCodes": [
            "FIXMAS067"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-NEG-006_15",
          "caseName": "[NEGATIVE] `investment_amount` invalid type (`tenK`)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.145Z",
          "endedAt": "2026-06-23T11:12:36.148Z",
          "durationMs": 3,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-NEG-006"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "tenK",
            "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": "220",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"dc-jzj9O7Y3H5RGJCjRKHi0D657RvI\"",
            "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": "FIXMAS069",
                "error": "Invalid investment_amount. Please enter a valid investment_amount"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=tenK&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-NEG-006\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXMAS069",
              "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": [
            "FIXMAS069"
          ],
          "actualErrorCodes": [
            "FIXMAS069"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-NEG-007_16",
          "caseName": "[NEGATIVE] `tenure=0` invalid",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.149Z",
          "endedAt": "2026-06-23T11:12:36.153Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-NEG-007"
          },
          "requestQuery": {
            "tenure": "0",
            "investment_amount": "100000",
            "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": "198",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 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/BAJ?tenure=0&investment_amount=100000&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-NEG-007\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXMAS067",
              "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": [
            "FIXMAS067"
          ],
          "actualErrorCodes": [
            "FIXMAS067"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-NEG-008_17",
          "caseName": "[NEGATIVE] `investment_amount<=0` invalid",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.153Z",
          "endedAt": "2026-06-23T11:12:36.157Z",
          "durationMs": 3,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-NEG-008"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "0",
            "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": "220",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"dc-jzj9O7Y3H5RGJCjRKHi0D657RvI\"",
            "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": "FIXMAS069",
                "error": "Invalid investment_amount. Please enter a valid investment_amount"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=0&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-NEG-008\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXMAS069",
              "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": [
            "FIXMAS069"
          ],
          "actualErrorCodes": [
            "FIXMAS069"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-NEG-009_18",
          "caseName": "[NEGATIVE] Invalid `payout_frequency` value",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.157Z",
          "endedAt": "2026-06-23T11:12:36.161Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-NEG-009"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "100000",
            "payout_frequency": "Weekly",
            "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": "218",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 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/BAJ?tenure=365&investment_amount=100000&payout_frequency=Weekly&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-NEG-009\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXMAS071",
              "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": [
            "FIXMAS071"
          ],
          "actualErrorCodes": [
            "FIXMAS071"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-NEG-010_19",
          "caseName": "[NEGATIVE] `investment_amount` not multiple of 1000",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.161Z",
          "endedAt": "2026-06-23T11:12:36.165Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-NEG-010"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "100500",
            "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": "201",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 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": "2",
            "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/BAJ?tenure=365&investment_amount=100500&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-NEG-010\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXMAS091",
              "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": [
            "FIXMAS091"
          ],
          "actualErrorCodes": [
            "FIXMAS091"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-NEG-011_20",
          "caseName": "[NEGATIVE] Invalid `senior_citizen` type",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.165Z",
          "endedAt": "2026-06-23T11:12:36.170Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-NEG-011"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "100000",
            "payout_frequency": "Maturity",
            "senior_citizen": "yes",
            "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:12:36 GMT",
            "etag": "W/\"d6-lQ785TfGm2j1X+Qeq5odMdVH2LY\"",
            "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": "FIXMAS072",
                "error": "Invalid senior_citizen. Please enter a valid senior_citizen"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=100000&payout_frequency=Maturity&senior_citizen=yes&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-NEG-011\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXMAS072",
              "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": [
            "FIXMAS072"
          ],
          "actualErrorCodes": [
            "FIXMAS072"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-NEG-012_21",
          "caseName": "[NEGATIVE] Invalid `women_citizen` type",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.170Z",
          "endedAt": "2026-06-23T11:12:36.175Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-NEG-012"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "100000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "1",
            "tax_saver": "false"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "212",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"d4-r79aiDB1H3CwzBvxjvbFVYX8TlM\"",
            "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": "FIXMAS073",
                "error": "Invalid women_citizen. Please enter a valid women_citizen"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=100000&payout_frequency=Maturity&senior_citizen=false&women_citizen=1&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"_qa_negative_test\":true,\"_tc_id\":\"TC-MAT-NEG-012\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXMAS073",
              "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": [
            "FIXMAS073"
          ],
          "actualErrorCodes": [
            "FIXMAS073"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-NEG-013_22",
          "caseName": "[NEGATIVE] Invalid `tax_saver` type",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.175Z",
          "endedAt": "2026-06-23T11:12:36.179Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-NEG-013"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "100000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "0"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "208",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"d0-Ymg6YAV+YSIhuQoV/epuFfdu1Bw\"",
            "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": "FIXMAS074",
                "error": "Invalid tax_saver. Please enter a valid boolean value"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=100000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=0' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"_qa_negative_test\":true,\"_tc_id\":\"TC-MAT-NEG-013\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXMAS074",
              "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": [
            "FIXMAS074"
          ],
          "actualErrorCodes": [
            "FIXMAS074"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-NEG-014_23",
          "caseName": "[NEGATIVE] Unsupported `product_type`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.179Z",
          "endedAt": "2026-06-23T11:12:36.184Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-NEG-014"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "100000",
            "payout_frequency": "Maturity",
            "senior_citizen": "false",
            "women_citizen": "false",
            "tax_saver": "false",
            "product_type": "ABC"
          },
          "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:12:36 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/BAJ?tenure=365&investment_amount=100000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&product_type=ABC' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"_qa_negative_test\":true,\"_tc_id\":\"TC-MAT-NEG-014\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXMAS107",
              "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": [
            "FIXMAS107"
          ],
          "actualErrorCodes": [
            "FIXMAS107"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-NEG-015_24",
          "caseName": "[NEGATIVE] Missing partner headers",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:12:36.184Z",
          "endedAt": "2026-06-23T11:12:36.188Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-NEG-015"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "100000",
            "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": "79",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 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/BAJ?tenure=365&investment_amount=100000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"_qa_negative_test\":true,\"_tc_id\":\"TC-MAT-NEG-015\"}'",
          "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_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-LIMIT-BAJ-001_25",
          "caseName": "[EDGE] `BAJ`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.188Z",
          "endedAt": "2026-06-23T11:12:36.197Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-LIMIT-BAJ-001"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "14000",
            "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:12:36 GMT",
            "etag": "W/\"d6-01ft2Fyu7FRTRYdxlqCDAqs14Lw\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS092",
                "error": "The entered Investment Amount is not accepted by the issuer"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=14000&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-BAJ-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-BAJ-002_26",
          "caseName": "[EDGE] `BAJ`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.198Z",
          "endedAt": "2026-06-23T11:12:36.208Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-LIMIT-BAJ-002"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "40000000",
            "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:12:36 GMT",
            "etag": "W/\"d6-01ft2Fyu7FRTRYdxlqCDAqs14Lw\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXMAS092",
                "error": "The entered Investment Amount is not accepted by the issuer"
              }
            ]
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=40000000&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-BAJ-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-BAJ-001_27",
          "caseName": "[POSITIVE] `BAJ`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.208Z",
          "endedAt": "2026-06-23T11:12:36.218Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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:12:36 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": "7",
            "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/BAJ?tenure=365&investment_amount=15000&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-BAJ-001_28",
          "caseName": "[POSITIVE] `BAJ`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.218Z",
          "endedAt": "2026-06-23T11:12:36.228Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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:12:36 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": "7",
            "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/BAJ?tenure=365&investment_amount=15000&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-BAJ-001_29",
          "caseName": "[POSITIVE] `BAJ`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.228Z",
          "endedAt": "2026-06-23T11:12:36.238Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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": "451",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"1c3-WvDp+4DinJ+jo+cSsUFd1E7r7hU\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.95",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "f450856d-c2f8-4f64-a577-70a3730bb3e0",
            "average_yield": "6.95",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 16042.5
                  }
                ]
              }
            ],
            "maturity_amount": 16042.5
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&payout_frequency=Maturity&senior_citizen=true&women_citizen=false&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            },
            {
              "description": "Response should indicate success (no error envelope)",
              "passed": true,
              "message": "No error envelope detected"
            },
            {
              "description": "Response should contain maturity or payout amount fields",
              "passed": true,
              "message": "Maturity/payout fields present"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-EDG-006_30",
          "caseName": "[EDGE] Conflicting filters all true (unsupported flags for BAJ)",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.238Z",
          "endedAt": "2026-06-23T11:12:36.248Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-EDG-006"
          },
          "requestQuery": {
            "tenure": "1095",
            "investment_amount": "300000",
            "payout_frequency": "Quarterly",
            "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:12:36 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": "7",
            "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/BAJ?tenure=1095&investment_amount=300000&payout_frequency=Quarterly&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\":\"TC-MAT-EDG-006\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=400)"
            },
            {
              "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_TC-MAT-EDG-007_31",
          "caseName": "[EDGE] Decimal amount valid multiple-of-1000 string",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.248Z",
          "endedAt": "2026-06-23T11:12:36.258Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-EDG-007"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "100000.00",
            "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": "449",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"1c1-mtcyAbr1PEtYlyIl7CXh/l7TarM\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 106600
                  }
                ]
              }
            ],
            "maturity_amount": 106600
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=100000.00&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-EDG-007\"}'",
          "validations": [
            {
              "description": "HTTP status should be 200",
              "passed": true,
              "message": "Got 200"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-EDG-008_32",
          "caseName": "[EDGE] Decimal amount not valid step",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.258Z",
          "endedAt": "2026-06-23T11:12:36.263Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "TC-MAT-EDG-008"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "100000.5",
            "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": "201",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 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": "2",
            "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/BAJ?tenure=365&investment_amount=100000.5&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-EDG-008\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXMAS091",
              "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": [
            "FIXMAS091"
          ],
          "actualErrorCodes": [
            "FIXMAS091"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-BIZ-006_33",
          "caseName": "[POSITIVE] BAJ below issuer min",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.263Z",
          "endedAt": "2026-06-23T11:12:36.274Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "14000",
            "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:12:36 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/BAJ?tenure=365&investment_amount=14000&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 200, body.statusCode=400)"
            }
          ],
          "docsFile": "master-services/API_QA_GET_ESTIMATED_MATURITY_PAYOUT.md",
          "apiMeta": {
            "endpoint": "/api/v1/detail/maturity-amount/{f_code}",
            "method": "GET",
            "authHint": "**Auth:** Partner headers required",
            "summary": "- **API Name:** Get Estimated Maturity Payout"
          },
          "expectedErrorCodes": [
            "FIXMAS092"
          ],
          "actualErrorCodes": [
            "FIXMAS092"
          ]
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_TC-MAT-BIZ-010_34",
          "caseName": "[POSITIVE] Amount non-multiple with internal bypass `job=true`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.274Z",
          "endedAt": "2026-06-23T11:12:36.284Z",
          "durationMs": 10,
          "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",
            "job": "true"
          },
          "responseHeaders": {
            "access-control-allow-origin": "*",
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "449",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"1c1-Nj1WplL3cxKLK9pgqegaVFWhvNQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "product_interest": "6.60",
            "payout_frequency": "Maturity",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "1b7f705e-0c25-4172-b38f-60d9eaf235ff",
            "average_yield": "6.60",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-06-23",
                    "amount": 107133
                  }
                ]
              }
            ],
            "maturity_amount": 107133
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=100500&payout_frequency=Maturity&senior_citizen=false&women_citizen=false&tax_saver=false&job=true' \\\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": [
            "FIXMAS005"
          ],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_GET_ESTIMATED_MATURITY_PAYOUT_FLAG-001_35",
          "caseName": "[POSITIVE] `BAJ`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.284Z",
          "endedAt": "2026-06-23T11:12:36.299Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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": "932",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"3a4-ug6xgkFyJ0ezDjtDIvKTUaPoNng\"",
            "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": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "6b53e620-750e-42ef-ab87-808922fc0d73",
            "average_yield": "6.41",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 18.44
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 80.13
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 80.13
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 80.13
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 80.13
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 80.13
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 80.13
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 80.13
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 80.13
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 80.13
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 80.13
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 80.13
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 61.74
                  }
                ]
              }
            ],
            "payout_amount": 80.13,
            "total_payout": 961.5
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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_36",
          "caseName": "[POSITIVE] `BAJ`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.299Z",
          "endedAt": "2026-06-23T11:12:36.315Z",
          "durationMs": 16,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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": "933",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:36 GMT",
            "etag": "W/\"3a5-maS+6h95iHubSmIW5chSaURDJME\"",
            "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.95",
            "payout_frequency": "Monthly",
            "maturity_date": "2027-06-23",
            "maturity_date_ist": "2027-06-23",
            "f_investment_vehicle_id": "0fe1d1c2-3e21-4940-a4d6-0c0934c51e92",
            "average_yield": "6.95",
            "product_min_investment": 15000,
            "product_max_investment": 30000000,
            "product_min_tenure": 365,
            "product_max_tenure": 425,
            "product_min_tenure_label": "",
            "payout": [
              {
                "year": 2026,
                "data": [
                  {
                    "date": "2026-06-30",
                    "amount": 19.99
                  },
                  {
                    "date": "2026-07-31",
                    "amount": 86.88
                  },
                  {
                    "date": "2026-08-31",
                    "amount": 86.88
                  },
                  {
                    "date": "2026-09-30",
                    "amount": 86.88
                  },
                  {
                    "date": "2026-10-31",
                    "amount": 86.88
                  },
                  {
                    "date": "2026-11-30",
                    "amount": 86.88
                  },
                  {
                    "date": "2026-12-31",
                    "amount": 86.88
                  }
                ]
              },
              {
                "year": 2027,
                "data": [
                  {
                    "date": "2027-01-31",
                    "amount": 86.88
                  },
                  {
                    "date": "2027-02-28",
                    "amount": 86.88
                  },
                  {
                    "date": "2027-03-31",
                    "amount": 86.88
                  },
                  {
                    "date": "2027-04-30",
                    "amount": 86.88
                  },
                  {
                    "date": "2027-05-31",
                    "amount": 86.88
                  },
                  {
                    "date": "2027-06-23",
                    "amount": 66.94
                  }
                ]
              }
            ],
            "payout_amount": 86.88,
            "total_payout": 1042.5
          },
          "curl": "curl -X GET 'https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ?tenure=365&investment_amount=15000&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_37",
          "caseName": "[EDGE] `BAJ`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.315Z",
          "endedAt": "2026-06-23T11:12:36.326Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "FLAG-003"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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:12:36 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/BAJ?tenure=365&investment_amount=15000&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_38",
          "caseName": "[EDGE] `BAJ`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.326Z",
          "endedAt": "2026-06-23T11:12:36.336Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "FLAG-004"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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:12:36 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": "7",
            "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/BAJ?tenure=365&investment_amount=15000&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_39",
          "caseName": "[EDGE] `BAJ`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.336Z",
          "endedAt": "2026-06-23T11:12:36.347Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "FLAG-005"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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:12:36 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": "7",
            "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/BAJ?tenure=365&investment_amount=15000&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_40",
          "caseName": "[EDGE] `BAJ`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.347Z",
          "endedAt": "2026-06-23T11:12:36.357Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "FLAG-006"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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:12:36 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": "7",
            "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/BAJ?tenure=365&investment_amount=15000&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_41",
          "caseName": "[EDGE] `BAJ`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.357Z",
          "endedAt": "2026-06-23T11:12:36.378Z",
          "durationMs": 21,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "FLAG-007"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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:12:36 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/BAJ?tenure=365&investment_amount=15000&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_42",
          "caseName": "[EDGE] `BAJ`",
          "service": "master-services",
          "method": "GET",
          "url": "https://master-api.dev.fixerra.in/api/v1/detail/maturity-amount/BAJ",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 400,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:36.378Z",
          "endedAt": "2026-06-23T11:12:36.388Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "_qa_negative_test": true,
            "_tc_id": "FLAG-008"
          },
          "requestQuery": {
            "tenure": "365",
            "investment_amount": "15000",
            "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:12:36 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": "7",
            "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/BAJ?tenure=365&investment_amount=15000&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": 89,
        "passed": 89,
        "failed": 0,
        "skipped": 0,
        "running": 0,
        "pending": 0,
        "durationMs": 1014
      }
    },
    {
      "stepId": "step-04-pan-verification",
      "stepName": "PAN Verification",
      "cases": [
        {
          "caseId": "BAJ_PAN_001",
          "caseName": "Get user profile before PAN entry (Bajaj 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:12:36.388Z",
          "endedAt": "2026-06-23T11:12:36.440Z",
          "durationMs": 52,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:36 GMT",
            "etag": "W/\"573-ZYGjJFdQZl/+cPSTSCfvBQZ8Vuc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 200,
            "message": "SUCCESS",
            "payload": {
              "createdAt": "2026-06-23T11:12:30.000Z",
              "isActive": true,
              "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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:12:30.545Z",
              "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:42:30.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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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": "BAJ_PAN_002",
          "caseName": "Track insights event for PAN verification step (Bajaj 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:12:36.440Z",
          "endedAt": "2026-06-23T11:12:36.489Z",
          "durationMs": 49,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "state": "KYC_VERIFICATION",
            "sub_state": "PAN_VERIFICATION",
            "status": "SUCCESS",
            "issuer_code": "BAJ",
            "fd_info": {
              "amount": 50000,
              "tenure": 12,
              "payout_frequency": "maturity",
              "issuer_code": "BAJ"
            },
            "d1": "{\"event_id\":\"53de4500-2c2e-4175-8ca1-d3440a55ae95\"}",
            "data": "{\"issuer_code\":\"BAJ\",\"fd_info\":{\"amount\":50000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"BAJ\"}}"
          },
          "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:12:36 GMT",
            "etag": "W/\"41-J+FZcECpT5a5qPPJ1pYNrWZwv1o\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": {
            "event_id": "53de4500-2c2e-4175-8ca1-d3440a55ae95-1782213156448"
          },
          "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"state\":\"KYC_VERIFICATION\",\"sub_state\":\"PAN_VERIFICATION\",\"status\":\"SUCCESS\",\"issuer_code\":\"BAJ\",\"fd_info\":{\"amount\":50000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"BAJ\"},\"d1\":\"{\\\"event_id\\\":\\\"53de4500-2c2e-4175-8ca1-d3440a55ae95\\\"}\",\"data\":\"{\\\"issuer_code\\\":\\\"BAJ\\\",\\\"fd_info\\\":{\\\"amount\\\":50000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"BAJ\\\"}}\"}'",
          "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": "BAJ_PAN_003",
          "caseName": "Verify PAN for Bajaj 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:12:36.489Z",
          "endedAt": "2026-06-23T11:12:37.070Z",
          "durationMs": 581,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "BAJ",
            "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:12: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": "578",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:37.070Z",
          "endedAt": "2026-06-23T11:12:37.512Z",
          "durationMs": 442,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "BAJ",
            "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:12: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": "438",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:37.512Z",
          "endedAt": "2026-06-23T11:12:37.969Z",
          "durationMs": 457,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "BAJ",
            "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:12: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": "453",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:37.969Z",
          "endedAt": "2026-06-23T11:12:38.373Z",
          "durationMs": 404,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "BAJ",
            "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:12:38 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": "401",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:38.373Z",
          "endedAt": "2026-06-23T11:12:38.771Z",
          "durationMs": 398,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "BAJ",
            "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:12:38 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": "394",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"BAJ\",\"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=398ms"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:12:38.771Z",
          "endedAt": "2026-06-23T11:12:39.145Z",
          "durationMs": 374,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "BAJ",
            "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:12: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": "371",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.145Z",
          "endedAt": "2026-06-23T11:12:39.160Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "",
            "issuer_code": "BAJ",
            "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:12:39 GMT",
            "etag": "W/\"133-qUvnp6YJVYDF+eWnnFEL7DIUbRU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1022",
                "error": "PAN number is required"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.160Z",
          "endedAt": "2026-06-23T11:12:39.170Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": null,
            "issuer_code": "BAJ",
            "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:12:39 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": "6",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              },
              {
                "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":null,\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.170Z",
          "endedAt": "2026-06-23T11:12:39.236Z",
          "durationMs": 66,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "issuer_code": "BAJ",
            "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:12:39 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": "62",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.236Z",
          "endedAt": "2026-06-23T11:12:39.245Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "BLXPR343",
            "issuer_code": "BAJ",
            "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:12:39 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"BLXPR343\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.245Z",
          "endedAt": "2026-06-23T11:12:39.258Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "BLXPR3438LL",
            "issuer_code": "BAJ",
            "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:12:39 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"BLXPR3438LL\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.258Z",
          "endedAt": "2026-06-23T11:12:39.336Z",
          "durationMs": 78,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "blxpr3438l",
            "issuer_code": "BAJ",
            "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:12:39 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": "75",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"blxpr3438l\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.336Z",
          "endedAt": "2026-06-23T11:12:39.347Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "BLXP@3438L",
            "issuer_code": "BAJ",
            "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:12:39 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"BLXP@3438L\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.347Z",
          "endedAt": "2026-06-23T11:12:39.392Z",
          "durationMs": 45,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "BLXP R3438L",
            "issuer_code": "BAJ",
            "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:12:39 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"BLXP R3438L\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.392Z",
          "endedAt": "2026-06-23T11:12:39.436Z",
          "durationMs": 44,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "1234567890",
            "issuer_code": "BAJ",
            "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:12:39 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": "38",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"1234567890\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.436Z",
          "endedAt": "2026-06-23T11:12:39.445Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "ABCDEFGHIJ",
            "issuer_code": "BAJ",
            "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:12:39 GMT",
            "etag": "W/\"cd-OjxyzMqS9QwMcdco9amWUl3CdMw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "6",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"ABCDEFGHIJ\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.445Z",
          "endedAt": "2026-06-23T11:12:39.455Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "AB123456CD",
            "issuer_code": "BAJ",
            "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:12:39 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"AB123456CD\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.455Z",
          "endedAt": "2026-06-23T11:12:39.466Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "' OR 1=1 --",
            "issuer_code": "BAJ",
            "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:12:39 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"'\\'' OR 1=1 --\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.467Z",
          "endedAt": "2026-06-23T11:12:39.527Z",
          "durationMs": 60,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "<script>alert(1)</script>",
            "issuer_code": "BAJ",
            "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:12:39 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": "58",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"<script>alert(1)</script>\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.527Z",
          "endedAt": "2026-06-23T11:12:39.534Z",
          "durationMs": 7,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": "{\"number\":",
          "requestQuery": {},
          "responseHeaders": {
            "content-length": "248",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:39 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:39.535Z",
          "endedAt": "2026-06-23T11:12:39.548Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:39 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": "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)"
              },
              {
                "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:39.548Z",
          "endedAt": "2026-06-23T11:12:39.559Z",
          "durationMs": 11,
          "requestHeaders": {
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": "{\"number\":\"BLXPR3438L\",\"issuer_code\":\"BAJ\",\"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:12:39 GMT",
            "etag": "W/\"133-qUvnp6YJVYDF+eWnnFEL7DIUbRU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1001",
                "error": "Please enter a valid PAN number (Ex. AAAPZ1234L)"
              },
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1022",
                "error": "PAN number is required"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/pan-verification' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.559Z",
          "endedAt": "2026-06-23T11:12:39.627Z",
          "durationMs": 68,
          "requestHeaders": {
            "Content-Type": "text/plain",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": "{\"number\":\"BLXPR3438L\",\"issuer_code\":\"BAJ\",\"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:12:39 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": "65",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.627Z",
          "endedAt": "2026-06-23T11:12:39.639Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "1234567890",
            "issuer_code": "BAJ",
            "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:12:39 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"1234567890\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.639Z",
          "endedAt": "2026-06-23T11:12:39.654Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "1234567890",
            "issuer_code": "BAJ",
            "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:12:39 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"1234567890\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.654Z",
          "endedAt": "2026-06-23T11:12:39.664Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "1234567890",
            "issuer_code": "BAJ",
            "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:12:39 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"1234567890\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.664Z",
          "endedAt": "2026-06-23T11:12:39.727Z",
          "durationMs": 63,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "1234567890",
            "issuer_code": "BAJ",
            "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:12:39 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": "59",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"1234567890\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:39.727Z",
          "endedAt": "2026-06-23T11:12:40.149Z",
          "durationMs": 422,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "BAJ",
            "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:12: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": "419",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:40.149Z",
          "endedAt": "2026-06-23T11:12:40.491Z",
          "durationMs": 342,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "BAJ",
            "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:12: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": "339",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:40.491Z",
          "endedAt": "2026-06-23T11:12:41.127Z",
          "durationMs": 636,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "BAJ",
            "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:12: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": "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:41.127Z",
          "endedAt": "2026-06-23T11:12:42.235Z",
          "durationMs": 1108,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "BAJ",
            "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:12:42 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": "469",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"BAJ\",\"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 495ms across 3 requests"
            }
          ],
          "docsFile": "user-services/API_QA_PAN_VERIFICATION.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:12:42.235Z",
          "endedAt": "2026-06-23T11:12:44.502Z",
          "durationMs": 2267,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "BAJ",
            "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:12:44 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": "1754",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:44.503Z",
          "endedAt": "2026-06-23T11:12:45.203Z",
          "durationMs": 700,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "BAJ",
            "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:12:45 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": "698",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"BAJ\",\"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": "BAJ_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:12:45.203Z",
          "endedAt": "2026-06-23T11:12:45.592Z",
          "durationMs": 389,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "number": "BLXPR3438L",
            "issuer_code": "BAJ",
            "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:12:45 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": "385",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"number\":\"BLXPR3438L\",\"issuer_code\":\"BAJ\",\"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": "BAJ_PAN_950",
          "caseName": "Persist DOB for downstream eligibility (CKYC 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:12:45.592Z",
          "endedAt": "2026-06-23T11:12:45.651Z",
          "durationMs": 59,
          "requestHeaders": {
            "Content-Type": "application/json",
            "fuserid": "e523c1e5-0229-4637-983c-05e9afb87b9c",
            "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:12:45 GMT",
            "etag": "W/\"734-aw9Tnxf2PDz8M0D2D6btwNeJYew\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2026-06-23T11:12:30.000Z",
              "updatedAt": "2026-06-23T11:12:45.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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:12:30.545Z",
              "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:12:46.000Z",
              "user_nominee_update_date": null,
              "user_bank_account_update_date": null,
              "user_email_verification_date": null,
              "profile_updated_at": "2026-06-23T11:12:45.600Z",
              "mother_name": null,
              "education": null,
              "source_of_income": null,
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2026-06-23T16:42:30.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": "2026-06-23T16:42:45.000Z"
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user' \\\n  -H 'Content-Type: application/json' \\\n  -H 'fuserid: e523c1e5-0229-4637-983c-05e9afb87b9c' \\\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": 9260
      }
    },
    {
      "stepId": "step-05-personal-details-address",
      "stepName": "Email / Personal Details / Address",
      "cases": [
        {
          "caseId": "BAJ_EMAIL_001",
          "caseName": "Verify OTP sent to valid email (Bajaj 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:12:45.651Z",
          "endedAt": "2026-06-23T11:12:45.997Z",
          "durationMs": 346,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":50000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"BAJ\"}"
          },
          "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:12:45 GMT",
            "etag": "W/\"b3-LQMfIH3fLDh6K7JjpxEfe8glYnY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "343",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Email sent successfully",
            "payload": {
              "startTime": 1782213165752,
              "endTime": 1782213165956,
              "durationMs": 204,
              "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":50000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"BAJ\\\"}\"}'",
          "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": "BAJ_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:12:45.997Z",
          "endedAt": "2026-06-23T11:12:46.016Z",
          "durationMs": 19,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":50000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"BAJ\"}"
          },
          "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:12:46 GMT",
            "etag": "W/\"e0-9I0dx43bP1vjARF5Tk4kiLEuIeE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "15",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":50000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"BAJ\\\"}\"}'",
          "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": "BAJ_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:12:46.016Z",
          "endedAt": "2026-06-23T11:12:46.029Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":50000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"BAJ\"}"
          },
          "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:12:46 GMT",
            "etag": "W/\"e0-9I0dx43bP1vjARF5Tk4kiLEuIeE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":50000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"BAJ\\\"}\"}'",
          "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": "BAJ_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:12:46.030Z",
          "endedAt": "2026-06-23T11:12:46.043Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":50000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"BAJ\"}"
          },
          "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:12:46 GMT",
            "etag": "W/\"e0-9I0dx43bP1vjARF5Tk4kiLEuIeE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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": 1,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":50000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"BAJ\\\"}\"}'",
          "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": "BAJ_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:12:46.043Z",
          "endedAt": "2026-06-23T11:12:46.055Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":50000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"BAJ\"}"
          },
          "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:12:46 GMT",
            "etag": "W/\"e0-9I0dx43bP1vjARF5Tk4kiLEuIeE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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": 1,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":50000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"BAJ\\\"}\"}'",
          "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": "BAJ_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:12:46.055Z",
          "endedAt": "2026-06-23T11:12:46.068Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":50000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"BAJ\"}"
          },
          "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:12:46 GMT",
            "etag": "W/\"e0-9I0dx43bP1vjARF5Tk4kiLEuIeE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "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": 1,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":50000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"BAJ\\\"}\"}'",
          "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": "BAJ_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:12:46.068Z",
          "endedAt": "2026-06-23T11:12:46.136Z",
          "durationMs": 68,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":50000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"BAJ\"}"
          },
          "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:12:46 GMT",
            "etag": "W/\"e0-9I0dx43bP1vjARF5Tk4kiLEuIeE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "65",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":50000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"BAJ\\\"}\"}'",
          "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": "BAJ_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:12:46.136Z",
          "endedAt": "2026-06-23T11:12:46.147Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":50000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"BAJ\"}"
          },
          "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:12:46 GMT",
            "etag": "W/\"e0-9I0dx43bP1vjARF5Tk4kiLEuIeE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":50000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"BAJ\\\"}\"}'",
          "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": "BAJ_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:12:46.147Z",
          "endedAt": "2026-06-23T11:12:46.158Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":50000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"BAJ\"}"
          },
          "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:12:46 GMT",
            "etag": "W/\"e0-9I0dx43bP1vjARF5Tk4kiLEuIeE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":50000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"BAJ\\\"}\"}'",
          "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": "BAJ_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:12:46.158Z",
          "endedAt": "2026-06-23T11:12:46.170Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":50000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"BAJ\"}"
          },
          "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:12:46 GMT",
            "etag": "W/\"e0-9I0dx43bP1vjARF5Tk4kiLEuIeE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":50000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"BAJ\\\"}\"}'",
          "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": "BAJ_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:12:46.170Z",
          "endedAt": "2026-06-23T11:12:46.230Z",
          "durationMs": 60,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"issuer\":{\"f_code\":\"BAJ\"}}"
          },
          "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:12:46 GMT",
            "etag": "W/\"e0-9I0dx43bP1vjARF5Tk4kiLEuIeE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "57",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"issuer\\\":{\\\"f_code\\\":\\\"BAJ\\\"}}\"}'",
          "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": "BAJ_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:12:46.230Z",
          "endedAt": "2026-06-23T11:12:46.241Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "224",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:46 GMT",
            "etag": "W/\"e0-9I0dx43bP1vjARF5Tk4kiLEuIeE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:46.241Z",
          "endedAt": "2026-06-23T11:12:46.253Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:46 GMT",
            "etag": "W/\"e0-9I0dx43bP1vjARF5Tk4kiLEuIeE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 1,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:46.253Z",
          "endedAt": "2026-06-23T11:12:46.431Z",
          "durationMs": 178,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn",
            "fd_info": "{\"amount\":50000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"BAJ\"}"
          },
          "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:12:46 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": "70",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"email\":\"dilip@fixerra.inn\",\"fd_info\":\"{\\\"amount\\\":50000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"BAJ\\\"}\"}'",
          "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": "BAJ_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:12:46.431Z",
          "endedAt": "2026-06-23T11:12:46.739Z",
          "durationMs": 308,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12: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 POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:46.740Z",
          "endedAt": "2026-06-23T11:12:47.039Z",
          "durationMs": 299,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12: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": "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.039Z",
          "endedAt": "2026-06-23T11:12:47.050Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12: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": "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.050Z",
          "endedAt": "2026-06-23T11:12:47.131Z",
          "durationMs": 81,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12: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 POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.131Z",
          "endedAt": "2026-06-23T11:12:47.142Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12: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": "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.142Z",
          "endedAt": "2026-06-23T11:12:47.153Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12: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": "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.153Z",
          "endedAt": "2026-06-23T11:12:47.231Z",
          "durationMs": 78,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12: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": "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.231Z",
          "endedAt": "2026-06-23T11:12:47.451Z",
          "durationMs": 220,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12: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": "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.452Z",
          "endedAt": "2026-06-23T11:12:47.463Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12: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": "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.463Z",
          "endedAt": "2026-06-23T11:12:47.477Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12: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": "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.477Z",
          "endedAt": "2026-06-23T11:12:47.488Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12: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": "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.488Z",
          "endedAt": "2026-06-23T11:12:47.527Z",
          "durationMs": 39,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12: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": "36",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.527Z",
          "endedAt": "2026-06-23T11:12:47.538Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12: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": "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.538Z",
          "endedAt": "2026-06-23T11:12:47.548Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12: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": "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.548Z",
          "endedAt": "2026-06-23T11:12:47.560Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12: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": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.561Z",
          "endedAt": "2026-06-23T11:12:47.779Z",
          "durationMs": 218,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "email": "DILIP@FIXERRA.INN"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "178",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:47 GMT",
            "etag": "W/\"b2-0vXXI+Oth1cgXPjEuTzDFuA0ZDw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "215",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Email sent successfully",
            "payload": {
              "startTime": 1782213167672,
              "endTime": 1782213167742,
              "durationMs": 70,
              "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.779Z",
          "endedAt": "2026-06-23T11:12:47.793Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:47 GMT",
            "etag": "W/\"e0-D0of8+xjimHJ8f1g7N1qJgxu0fs\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 2,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.793Z",
          "endedAt": "2026-06-23T11:12:47.805Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:47 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.805Z",
          "endedAt": "2026-06-23T11:12:47.829Z",
          "durationMs": 24,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12: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": "21",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.829Z",
          "endedAt": "2026-06-23T11:12:47.843Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12: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": "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.843Z",
          "endedAt": "2026-06-23T11:12:47.857Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:47 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": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.857Z",
          "endedAt": "2026-06-23T11:12:47.941Z",
          "durationMs": 84,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:47 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": "80",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.941Z",
          "endedAt": "2026-06-23T11:12:47.952Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:47 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:47.952Z",
          "endedAt": "2026-06-23T11:12:48.142Z",
          "durationMs": 190,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:48 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": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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 38ms across 5 requests"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:12:48.142Z",
          "endedAt": "2026-06-23T11:12:48.261Z",
          "durationMs": 119,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:48 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:48.261Z",
          "endedAt": "2026-06-23T11:12:48.431Z",
          "durationMs": 170,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:48 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": "33",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:48.431Z",
          "endedAt": "2026-06-23T11:12:48.443Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:48 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:48.443Z",
          "endedAt": "2026-06-23T11:12:48.452Z",
          "durationMs": 9,
          "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:12:48 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' \\\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": "BAJ_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:12:48.452Z",
          "endedAt": "2026-06-23T11:12:48.457Z",
          "durationMs": 5,
          "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:12:48 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer bad.jwt' \\\n  -d '{\"email\":\"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": "BAJ_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:12:48.457Z",
          "endedAt": "2026-06-23T11:12:48.462Z",
          "durationMs": 5,
          "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:12:48 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": "BAJ_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:12:48.462Z",
          "endedAt": "2026-06-23T11:12:48.467Z",
          "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:12:48 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer' \\\n  -d '{\"email\":\"qa@fixerra.in\"}'",
          "validations": [
            {
              "description": "Response status should be 401",
              "passed": true,
              "message": "Status 401 OK"
            },
            {
              "description": "Body statusCode should be 401",
              "passed": true,
              "message": "statusCode=401"
            },
            {
              "description": "Response success flag should be 0",
              "passed": true,
              "message": "success=0"
            },
            {
              "description": "Response message should be \"Access Denied.\"",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:12:48.468Z",
          "endedAt": "2026-06-23T11:12:48.537Z",
          "durationMs": 69,
          "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:12:48 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "67",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -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": "BAJ_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:12:48.538Z",
          "endedAt": "2026-06-23T11:12:48.626Z",
          "durationMs": 88,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:48 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": "86",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:48.626Z",
          "endedAt": "2026-06-23T11:12:48.637Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:48 GMT",
            "etag": "W/\"c4-1pnyYQVA1DJgxU5XrmQBbTOlYgk\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Rate limit exceeded. Please try again in 30 minute(s).",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 2,
              "retryAfter": "30 minute(s)",
              "retryAfterSeconds": 1797
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:48.637Z",
          "endedAt": "2026-06-23T11:12:48.650Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:48 GMT",
            "etag": "W/\"c4-1pnyYQVA1DJgxU5XrmQBbTOlYgk\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Rate limit exceeded. Please try again in 30 minute(s).",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 2,
              "retryAfter": "30 minute(s)",
              "retryAfterSeconds": 1797
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_EMAIL_900A",
          "caseName": "Verify email OTP (Bajaj 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:12:48.651Z",
          "endedAt": "2026-06-23T11:12:48.747Z",
          "durationMs": 96,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "otp": "123456",
            "fd_info": "{\"amount\":50000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"BAJ\"}"
          },
          "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:12:48 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": "93",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"otp\":\"123456\",\"fd_info\":\"{\\\"amount\\\":50000,\\\"tenure\\\":12,\\\"payout_frequency\\\":\\\"maturity\\\",\\\"issuer_code\\\":\\\"BAJ\\\"}\"}'",
          "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": "BAJ_EMAIL_900",
          "caseName": "Save email to user profile (Bajaj 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:12:48.747Z",
          "endedAt": "2026-06-23T11:12:48.776Z",
          "durationMs": 29,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "email": "dilip@fixerra.inn"
          },
          "requestQuery": {
            "issuer_code": "BAJ",
            "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:12:48 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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_EMAIL_901",
          "caseName": "Get user to confirm email state (Bajaj 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:12:48.776Z",
          "endedAt": "2026-06-23T11:12:48.856Z",
          "durationMs": 80,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:48 GMT",
            "etag": "W/\"665-X5g7mwL6rQFwXqiidmP8nIzMRh8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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:12:30.000Z",
              "isActive": true,
              "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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:12:30.545Z",
              "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:12:46.000Z",
              "user_nominee_update_date": null,
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-23T11:12:49.000Z",
              "profile_updated_at": "2026-06-23T11:12:46.000Z",
              "mother_name": null,
              "education": null,
              "source_of_income": null,
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2026-06-23T16:42:30.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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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": "BAJ_PI_001",
          "caseName": "Get dropdown options for personal info form (Bajaj 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:12:48.856Z",
          "endedAt": "2026-06-23T11:12:48.861Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "526",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:48 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": "BAJ_PI_002",
          "caseName": "Save personal details for Bajaj 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:12:48.862Z",
          "endedAt": "2026-06-23T11:12:48.946Z",
          "durationMs": 84,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:48 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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:48.946Z",
          "endedAt": "2026-06-23T11:12:49.026Z",
          "durationMs": 80,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:48 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": "77",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.026Z",
          "endedAt": "2026-06-23T11:12:49.055Z",
          "durationMs": 29,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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=29ms"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:12:49.055Z",
          "endedAt": "2026-06-23T11:12:49.114Z",
          "durationMs": 59,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.115Z",
          "endedAt": "2026-06-23T11:12:49.145Z",
          "durationMs": 30,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.145Z",
          "endedAt": "2026-06-23T11:12:49.158Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.158Z",
          "endedAt": "2026-06-23T11:12:49.172Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.172Z",
          "endedAt": "2026-06-23T11:12:49.227Z",
          "durationMs": 55,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.227Z",
          "endedAt": "2026-06-23T11:12:49.244Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "13",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.244Z",
          "endedAt": "2026-06-23T11:12:49.327Z",
          "durationMs": 83,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.327Z",
          "endedAt": "2026-06-23T11:12:49.362Z",
          "durationMs": 35,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 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": "31",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.362Z",
          "endedAt": "2026-06-23T11:12:49.375Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.376Z",
          "endedAt": "2026-06-23T11:12:49.445Z",
          "durationMs": 69,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 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": "66",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.445Z",
          "endedAt": "2026-06-23T11:12:49.535Z",
          "durationMs": 90,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 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": "87",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.535Z",
          "endedAt": "2026-06-23T11:12:49.547Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.547Z",
          "endedAt": "2026-06-23T11:12:49.559Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.559Z",
          "endedAt": "2026-06-23T11:12:49.578Z",
          "durationMs": 19,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.578Z",
          "endedAt": "2026-06-23T11:12:49.637Z",
          "durationMs": 59,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "56",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.637Z",
          "endedAt": "2026-06-23T11:12:49.649Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.649Z",
          "endedAt": "2026-06-23T11:12:49.660Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.661Z",
          "endedAt": "2026-06-23T11:12:49.671Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 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": "7",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.671Z",
          "endedAt": "2026-06-23T11:12:49.772Z",
          "durationMs": 101,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 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": "66",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.772Z",
          "endedAt": "2026-06-23T11:12:49.787Z",
          "durationMs": 15,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.787Z",
          "endedAt": "2026-06-23T11:12:49.831Z",
          "durationMs": 44,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 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": "38",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.831Z",
          "endedAt": "2026-06-23T11:12:49.841Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.841Z",
          "endedAt": "2026-06-23T11:12:49.869Z",
          "durationMs": 28,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.869Z",
          "endedAt": "2026-06-23T11:12:49.927Z",
          "durationMs": 58,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 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": "54",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.927Z",
          "endedAt": "2026-06-23T11:12:49.955Z",
          "durationMs": 28,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.955Z",
          "endedAt": "2026-06-23T11:12:49.968Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 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": "10",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:49.969Z",
          "endedAt": "2026-06-23T11:12:50.028Z",
          "durationMs": 59,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:49 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": "55",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.028Z",
          "endedAt": "2026-06-23T11:12:50.045Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "13",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.045Z",
          "endedAt": "2026-06-23T11:12:50.057Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.057Z",
          "endedAt": "2026-06-23T11:12:50.134Z",
          "durationMs": 77,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "74",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.134Z",
          "endedAt": "2026-06-23T11:12:50.147Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:50 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": "9",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.147Z",
          "endedAt": "2026-06-23T11:12:50.175Z",
          "durationMs": 28,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "25",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.175Z",
          "endedAt": "2026-06-23T11:12:50.188Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:50 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": "9",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.188Z",
          "endedAt": "2026-06-23T11:12:50.258Z",
          "durationMs": 70,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "67",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.258Z",
          "endedAt": "2026-06-23T11:12:50.270Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:50 GMT",
            "etag": "W/\"c4-DFfsagkfP26qOQJeFRxFCh+YjvU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1264",
                "error": "mother name cant be just an empty space"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.271Z",
          "endedAt": "2026-06-23T11:12:50.353Z",
          "durationMs": 82,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "79",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.353Z",
          "endedAt": "2026-06-23T11:12:50.365Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:50 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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.365Z",
          "endedAt": "2026-06-23T11:12:50.435Z",
          "durationMs": 70,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:50 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": "66",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.435Z",
          "endedAt": "2026-06-23T11:12:50.469Z",
          "durationMs": 34,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "31",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.469Z",
          "endedAt": "2026-06-23T11:12:50.532Z",
          "durationMs": 63,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:50 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": "59",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.532Z",
          "endedAt": "2026-06-23T11:12:50.564Z",
          "durationMs": 32,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "29",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.564Z",
          "endedAt": "2026-06-23T11:12:50.614Z",
          "durationMs": 50,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:50 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": "9",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.614Z",
          "endedAt": "2026-06-23T11:12:50.636Z",
          "durationMs": 22,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:50 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": "19",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.636Z",
          "endedAt": "2026-06-23T11:12:50.648Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.648Z",
          "endedAt": "2026-06-23T11:12:50.659Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:50 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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.659Z",
          "endedAt": "2026-06-23T11:12:50.669Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.669Z",
          "endedAt": "2026-06-23T11:12:50.730Z",
          "durationMs": 61,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:50 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": "58",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.731Z",
          "endedAt": "2026-06-23T11:12:50.748Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:50 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": "14",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.748Z",
          "endedAt": "2026-06-23T11:12:50.759Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:50 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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.759Z",
          "endedAt": "2026-06-23T11:12:50.770Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:50 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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.770Z",
          "endedAt": "2026-06-23T11:12:50.834Z",
          "durationMs": 64,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:50 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": "60",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.834Z",
          "endedAt": "2026-06-23T11:12:50.851Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:50 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "13",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.851Z",
          "endedAt": "2026-06-23T11:12:50.868Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:50 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "13",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.868Z",
          "endedAt": "2026-06-23T11:12:50.945Z",
          "durationMs": 77,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "74",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.945Z",
          "endedAt": "2026-06-23T11:12:50.957Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:50 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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:50.957Z",
          "endedAt": "2026-06-23T11:12:51.034Z",
          "durationMs": 77,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "75",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.034Z",
          "endedAt": "2026-06-23T11:12:51.047Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "10",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.048Z",
          "endedAt": "2026-06-23T11:12:51.153Z",
          "durationMs": 105,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "102",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.153Z",
          "endedAt": "2026-06-23T11:12:51.228Z",
          "durationMs": 75,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:51 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": "72",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.228Z",
          "endedAt": "2026-06-23T11:12:51.258Z",
          "durationMs": 30,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.258Z",
          "endedAt": "2026-06-23T11:12:51.269Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:51 GMT",
            "etag": "W/\"fd-XGcJ4EjrKoiXsHBqhidiNxXTpVY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": " ",
                "f_error_message": " ",
                "errorCode": "FIXUSER1217",
                "error": "IInvalid source_of_income , possible values are Salary, Business, Investment, Dependent, Other"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.269Z",
          "endedAt": "2026-06-23T11:12:51.286Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "13",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.286Z",
          "endedAt": "2026-06-23T11:12:51.337Z",
          "durationMs": 51,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "47",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.337Z",
          "endedAt": "2026-06-23T11:12:51.348Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.348Z",
          "endedAt": "2026-06-23T11:12:51.365Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.365Z",
          "endedAt": "2026-06-23T11:12:51.438Z",
          "durationMs": 73,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "70",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.438Z",
          "endedAt": "2026-06-23T11:12:51.449Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:51 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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.449Z",
          "endedAt": "2026-06-23T11:12:51.467Z",
          "durationMs": 18,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "14",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.467Z",
          "endedAt": "2026-06-23T11:12:51.535Z",
          "durationMs": 68,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12:51 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": "64",
            "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.535Z",
          "endedAt": "2026-06-23T11:12:51.546Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.546Z",
          "endedAt": "2026-06-23T11:12:51.554Z",
          "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": "BAJ",
            "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:12:51 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 PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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": "BAJ_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:12:51.554Z",
          "endedAt": "2026-06-23T11:12:51.559Z",
          "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": "BAJ",
            "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:12:51 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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": "BAJ_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:12:51.559Z",
          "endedAt": "2026-06-23T11:12:51.566Z",
          "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": "BAJ",
            "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:12:51 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=BAJ&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": "BAJ_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:12:51.566Z",
          "endedAt": "2026-06-23T11:12:51.587Z",
          "durationMs": 21,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.587Z",
          "endedAt": "2026-06-23T11:12:51.647Z",
          "durationMs": 60,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "57",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.647Z",
          "endedAt": "2026-06-23T11:12:51.660Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.660Z",
          "endedAt": "2026-06-23T11:12:51.689Z",
          "durationMs": 29,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.689Z",
          "endedAt": "2026-06-23T11:12:51.754Z",
          "durationMs": 65,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "61",
            "server": "envoy"
          },
          "responseBody": "",
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.754Z",
          "endedAt": "2026-06-23T11:12:51.831Z",
          "durationMs": 77,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:12:51.831Z",
          "endedAt": "2026-06-23T11:12:51.843Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ",
            "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:12: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": "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=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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"
          ]
        },
        {
          "caseId": "BAJ_PI_990",
          "caseName": "Restore complete personal-details profile (pre-CKYC jump prerequisites)",
          "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:12:51.843Z",
          "endedAt": "2026-06-23T11:12:51.951Z",
          "durationMs": 108,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "occupation": "Public Sector",
            "education": "Graduate",
            "marital_status": "Unmarried",
            "source_of_income": "Salary",
            "annual_income": "Upto 5L Per Annum",
            "mother_name": "QA MOTHER",
            "father_name": "QA FATHER"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "1974",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:51 GMT",
            "etag": "W/\"7b6-4tAbYsQ4yFRDm2B6xMj8rTBTVfw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "105",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2026-06-23T11:12:30.000Z",
              "updatedAt": "2026-06-23T11:12:51.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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": "249a22814bf213a7ff2e68cfa58da9d3:db646d65909c524168c6990f0b3efbc5",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:ecfe610f12b665afad3545ca90ac0be2",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "",
              "user_activation_date": null,
              "user_registration_date": "2026-06-23T11:12:30.545Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "QA FATHER",
              "is_pan_verified": false,
              "manual_pan_verified": null,
              "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": "QA",
              "kin_middle_name": "",
              "kin_last_name": "FATHER",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": null,
              "user_pan_verification_date": "2026-06-23T11:12:46.000Z",
              "user_nominee_update_date": null,
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-23T11:12:49.000Z",
              "profile_updated_at": "2026-06-23T11:12:51.925Z",
              "mother_name": "QA MOTHER",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2026-06-23T16:42:30.000Z",
              "is_pan_consent_checked": false,
              "pan_consent_checked_date": "2026-06-23T16:42:45.000Z",
              "partner_url": "https://tradingquants.dev.fixerra.in"
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"occupation\":\"Public Sector\",\"education\":\"Graduate\",\"marital_status\":\"Unmarried\",\"source_of_income\":\"Salary\",\"annual_income\":\"Upto 5L Per Annum\",\"mother_name\":\"QA MOTHER\",\"father_name\":\"QA FATHER\"}'",
          "validations": [
            {
              "description": "Profile fields should persist (201 with updated user)",
              "passed": true,
              "message": "Profile persisted (HTTP 200, marital_status=Unmarried)"
            }
          ],
          "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:12:51.952Z",
          "endedAt": "2026-06-23T11:12:52.098Z",
          "durationMs": 146,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "email": "qa.user@fixerra.in"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "178",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:52 GMT",
            "etag": "W/\"b2-c78tRC9mj99iFzPh9u5zQXjCZNY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "Email sent successfully",
            "payload": {
              "startTime": 1782213171984,
              "endTime": 1782213172056,
              "durationMs": 72,
              "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.098Z",
          "endedAt": "2026-06-23T11:12:52.110Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 GMT",
            "etag": "W/\"e0-O8U4RFV/tsaa8lMiYsBAEUXG3Cg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 3,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.111Z",
          "endedAt": "2026-06-23T11:12:52.122Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.122Z",
          "endedAt": "2026-06-23T11:12:52.138Z",
          "durationMs": 16,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 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": "13",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.138Z",
          "endedAt": "2026-06-23T11:12:52.156Z",
          "durationMs": 18,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 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": "15",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.156Z",
          "endedAt": "2026-06-23T11:12:52.238Z",
          "durationMs": 82,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 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": "78",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.238Z",
          "endedAt": "2026-06-23T11:12:52.249Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.249Z",
          "endedAt": "2026-06-23T11:12:52.261Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.261Z",
          "endedAt": "2026-06-23T11:12:52.341Z",
          "durationMs": 80,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 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": "77",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.341Z",
          "endedAt": "2026-06-23T11:12:52.351Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.351Z",
          "endedAt": "2026-06-23T11:12:52.361Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.361Z",
          "endedAt": "2026-06-23T11:12:52.431Z",
          "durationMs": 70,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 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": "67",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.432Z",
          "endedAt": "2026-06-23T11:12:52.441Z",
          "durationMs": 9,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.441Z",
          "endedAt": "2026-06-23T11:12:52.451Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.451Z",
          "endedAt": "2026-06-23T11:12:52.463Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 GMT",
            "etag": "W/\"e0-O8U4RFV/tsaa8lMiYsBAEUXG3Cg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "9",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 429,
            "message": "Please wait a moment before requesting a new OTP. You can try again in a few seconds.",
            "payload": {
              "attemptsUsed": 0,
              "otpSentCount": 3,
              "retryAfter": "1 minute(s)",
              "retryAfterSeconds": 60
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.463Z",
          "endedAt": "2026-06-23T11:12:52.475Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.475Z",
          "endedAt": "2026-06-23T11:12:52.536Z",
          "durationMs": 61,
          "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:12:52 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": "57",
            "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:12:52.536Z",
          "endedAt": "2026-06-23T11:12:52.541Z",
          "durationMs": 5,
          "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:12:52 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:12:52.541Z",
          "endedAt": "2026-06-23T11:12:52.545Z",
          "durationMs": 4,
          "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:12:52 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer bad.jwt' \\\n  -d '{\"email\":\"dilip@fixerra.inn\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 401 or body statusCode=401)",
              "passed": true,
              "message": "Error confirmed (HTTP 401, body.statusCode=401)"
            }
          ],
          "docsFile": "user-services/API_QA_PI_POST_EMAIL.md",
          "apiMeta": {
            "endpoint": "/signzy/email",
            "method": "POST",
            "guards": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "authHint": "**Auth:** `UserJwtGuard` — `Authorization: Bearer <JWT>` required.",
            "summary": "- **API Name:** Send Email OTP (Email Validation)"
          },
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "API_QA_PI_POST_EMAIL_VERIFY_TC_EMAIL_VRF_001_0",
          "caseName": "[POSITIVE] Correct OTP verifies email",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/signzy/email/verify",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:12:52.545Z",
          "endedAt": "2026-06-23T11:12:52.600Z",
          "durationMs": 55,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.600Z",
          "endedAt": "2026-06-23T11:12:52.657Z",
          "durationMs": 57,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 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": "53",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.657Z",
          "endedAt": "2026-06-23T11:12:52.840Z",
          "durationMs": 183,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 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": "180",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.840Z",
          "endedAt": "2026-06-23T11:12:52.943Z",
          "durationMs": 103,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 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": "99",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.943Z",
          "endedAt": "2026-06-23T11:12:52.970Z",
          "durationMs": 27,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 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": "22",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:52.970Z",
          "endedAt": "2026-06-23T11:12:53.027Z",
          "durationMs": 57,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:52 GMT",
            "etag": "W/\"3e-cFo/YykBuHiYPK1rJwzypi+k9nY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "54",
            "server": "envoy"
          },
          "responseBody": {
            "errorCode": "FIXINSIGHT1352",
            "error": "Event id not provided"
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email/verify' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:53.027Z",
          "endedAt": "2026-06-23T11:12:53.048Z",
          "durationMs": 21,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:53 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": "17",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:53.048Z",
          "endedAt": "2026-06-23T11:12:53.142Z",
          "durationMs": 94,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:53 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": "90",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:53.142Z",
          "endedAt": "2026-06-23T11:12:53.173Z",
          "durationMs": 31,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:53 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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:53.174Z",
          "endedAt": "2026-06-23T11:12:53.253Z",
          "durationMs": 79,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:53 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": "76",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:53.253Z",
          "endedAt": "2026-06-23T11:12:53.272Z",
          "durationMs": 19,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:53 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "16",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad Request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/signzy/email/verify' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:53.272Z",
          "endedAt": "2026-06-23T11:12:53.341Z",
          "durationMs": 69,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:53 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": "66",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:53.341Z",
          "endedAt": "2026-06-23T11:12:53.346Z",
          "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:12: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": "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:12:53.346Z",
          "endedAt": "2026-06-23T11:12:53.351Z",
          "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:12: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": "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:12:53.351Z",
          "endedAt": "2026-06-23T11:12:53.363Z",
          "durationMs": 12,
          "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:12: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": "8",
            "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:12:53.363Z",
          "endedAt": "2026-06-23T11:12:53.393Z",
          "durationMs": 30,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:12:53 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": "27",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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:12:53.393Z",
          "endedAt": "2026-06-23T11:12:53.472Z",
          "durationMs": 79,
          "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:12:53 GMT",
            "etag": "W/\"1dec-O/moPcKmujG07pCoEWaRMH2VNx0\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:53.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:12:53.427Z",
              "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:12:53.472Z",
          "endedAt": "2026-06-23T11:12:53.486Z",
          "durationMs": 14,
          "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:12: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": "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&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:12:53.486Z",
          "endedAt": "2026-06-23T11:12:53.570Z",
          "durationMs": 84,
          "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:12:53 GMT",
            "etag": "W/\"1dec-JAKc4MNKVmZ6BDs2uOaTHJOG3TU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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:12:53.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:12:53.493Z",
              "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:12:53.570Z",
          "endedAt": "2026-06-23T11:12:53.677Z",
          "durationMs": 107,
          "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:12:53 GMT",
            "etag": "W/\"1dec-pmnId7L3OcO7E4KtbboeA2wduac\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:53.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:12:53.578Z",
              "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:12:53.678Z",
          "endedAt": "2026-06-23T11:12:53.747Z",
          "durationMs": 69,
          "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:12:53 GMT",
            "etag": "W/\"1dec-eNN+1DnG55HTAK4Hr2Sw4QKpm4A\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "66",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:53.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:12:53.685Z",
              "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:12:53.747Z",
          "endedAt": "2026-06-23T11:12:53.821Z",
          "durationMs": 74,
          "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:12:53 GMT",
            "etag": "W/\"1dec-4LwNyCvcatS0zYjI0fQ283fxfuc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "54",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:53.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:12:53.754Z",
              "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:12:53.821Z",
          "endedAt": "2026-06-23T11:12:53.829Z",
          "durationMs": 8,
          "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:12:53 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": "5",
            "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:12:53.829Z",
          "endedAt": "2026-06-23T11:12:53.838Z",
          "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:12: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": "5",
            "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:12:53.838Z",
          "endedAt": "2026-06-23T11:12:53.913Z",
          "durationMs": 75,
          "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:12:53 GMT",
            "etag": "W/\"1df6-WIw5A1PQePXRnVcBcC45ePY+YG4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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:12:53.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCADIAKADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDpKRhxS4obgVkSRjig9aUCgjvRcBppKKKQBS0mDRQA9eTTjwKRRilb1pgRGilNFIBKKcRxTaACiiimAlFJmjrikBNGflp2OOaZH05pzEAZBpCH4pD79KdSEZFWMZ04oPSjGOe1DdqQDCKTFPppOePSkMSjp1rF8ReJLbQYFBAmun+5CGwcf3j6D+Z/EjzvVPGGr38h23LQIekcPygfj1Pbr6dqaQHsG9QuSQB3J4FNE8My5ikRx/sHP8q8BmmmmlaWWRmkPBdiST+NREt6iqsFj6FCk+31oA56V8+28strKJreZoZR0eNirD8RXQaZ431rTSqvcfaogfu3GXPv82c5+uR7UrBZnsZGKjrmNI8faXqJWK7zZTnp5jZjPPZ+3bqB+NdQTnkUthCUhpaSgAxRiloHWkA9EDdTTjGKap9OtSjnkmkAtNJp1NIqhjSeOlHOOlFKfu0AMPFZkuuafDLND5skkkX3xFBJIE6/eZVIXoep7H0NGta1Bo1i9xJhnAykeeXPA/AcjJ968nl8VX8NmLa0lNspyZGjOHdj1Yt1z0GRzgDJOKErgRa9fi51e6lEnmbpCQ2chhng57jGMe2B0ArKMxA479TUtrbyX87MxJPUk81qDRQCMHj0puSRcYN7GJ53HTimmQ+lbbaSqnmmf2anoaXtEV7NmJvJ68Ck3gHvWs+ngDoKqyWgAoVRC5GiskvvXXeF/Gc+jyJa3jNNp7cerQ/7vt7fl6HjpIyhyKVHzx0FVuQ13PoSGaO4hSaGRZInAZHU5DA9CKk/GvN/hzrTJcyaTNIAjgvCG7MOoH1GT+Br0gmpJCnKOaZxT060DJApx3pM46gZ9xTxz3pr8mkIlpp6U8000xkZHNRXNzFaWs1zMSI4kLsR6CpWNZXiCNJdCulfJAUPgd9pDAfQ4wfahAeUa9rM+q3kk8xwucKinIAHQe/6euMkk883zMcVbum2pt/CqkYywxVoZ0miwBLcNjk1sDAGaraaoNug6cVak2KcMyg+ma527s6YqyIJgDzVc9OBV1gjrkMD+NQbFNIspSLx061VkXAxitFwuDnoKpzPGD96hEtGbNBuB4rNkjMTc1tmWHpmobyBJLYuhBx6VpFtbmUkmU7eZ4LiK4idkkRgykHBBHQivdLC7+26fbXRwDNErnHQZGa8FiYqcGva9DvRcaHYyZyTAgbjHIGD+tWzFmvvp6NVbzVp6SLmp0As7/Sk3UzeCcCngigC4elMI4p5HNMI5qrARNWV4gLf2FflCQwt3II7fKa1n4qrMA6spHBGMUwPBrobxwMEdRVaPgj3Namr2M1hqUsLowCsQrEfeHY1UtYDLewpjrIo/WmUdLDHKY0ijbYuOWHWoLq2tI1I8x2cDLYOePWtqS0Y25Efyn1rGk0hmglExViSNm5jge+Mck/UVzRep0taGV5yIwWKeTH1rXsPMlTO/cMVQh051V0K5DHqVxj6VtWNg8cOOgx6cmqm0EE2ZF7Iy7gGxWVv3HLB2ravoAZCKpLb4Rk6buvvRCSFUi7leOWLH+rIA74q9FDHKDs6MMECo47ZlhMQz5bHJHrViCExHgYFEmuhMU+pz7IYpmRuqnBr1bwqnk+HLRSTyC2M+pJrz6+tgL4uADuTdj36V3Phe9N5oyqQA0LeWQPTt/n2qnK6MpRa1OiDU5SfWoFJqZDUklhXIHWpBMarg07NAG6SBTGNKfrTX6VsIhc5qBxUrdaY4yKBnO+KtOhvNGuHaJWlUAq+ORg/4Z/OuDtrFLfULI5+8STn2FepXkAubSWEnG9SufTNebyRuup2+QfkJR/VTyKiTNqaTizcCeYAufwqOeN1Urt9vpRE+2TNWJJQUyc1z7M6UZ6qkQ3yfWp4i8pVguAemTgVTuA0zbF6Go5ftbTJum8qGMdFwdx9809x7EepwjeTuX86zAu19rd+h9adeF5QxaT5c/w8VDArnbubIHQmhRsRJpvQtKuDjtSs+3gUBucU12GaT3F0ILwgvEcdQRXVeD7cwabJKwx5z5X6Dj+ea5S5XeYwM969BtIfs9rFCvRFC/pWiMJvSxc6VIh7VCuT3qVQfWmZE4paaM4p2DQBuHrTXHAFTMKiNbCICMnpTWGFqYiomFAyuy1yGv6cY7trlMJHJgs3bOeldk9QkdaTVyoy5Xc4EsyhWHQjrT/OJTJ5FW9VgMOoyofut84+h/8Ar5rNyqNjP4VzyVmdcHdE6hUXe3X0rOuLsGUpFG1xIOSF6LUt1mYbFOAetQESW8Xl24Cj6Zpxtuxtu5UnE7HCWpUdxgD+tVPNMbbWyh9+hqw4vSSWcfTFVmyxw+D68VWhnLyJg+7kGng7jUEY28dqmjBMgwMk8VNhX0N3RdNinb7RKCwQ4Ve2a6cHIqtY2ZtLGKNvv4y31PWrIFOxg3dj1PNToarr1qwlBJKDT6jFPBpgdE/BAqFhzUz9aYRk81uBERUTjNWCvFREUAV3GRUOKskVUvbiKytJbqYkRxjLYGTSuBi+JLbfZrcKPmibB+h/+viuReX1rVuPGMOpiSxjs2RJD8srSc4Bz93Ht61iXHyMazlZu5vTbRJG6k4JqZ5oo0yBk1lmTHsaY07EYOfwqLGnOTzTkk+pqizgsc4pJJNw75qsWwT1Jp2Jci0XArovCemG8uzdyr+6hPy57t/9b/CuTUkn3re0XxHLpFwlttVraRsuCOQfXNNIzk20egyJxVYpg1dR0niWRDlWGRUbpQ1fUyIAuBUq5xSdOKerCkA8UoHtQDS5pgdIwpmKmIphFbgRkVC4qdiqKWYhVHcnAqm97bMSI5VkYdkOfbH6ipbS3ATBLAAZJ4rM12E3FpJaj7silR9a1Lm+stLgWe8uYoASQpkYDJAzgep+lYFz4j0W9g2Q3uZ9pZCIX454524rCpO+xpFWPL7RgLraYwjoTnnnIrVdwwwwyKueKdL+yXC30KbcYWVB2I4/+tWYHEkYYHrVJpq6KRXmjK8o1U2kkXquavPnnmq0iE9KY7FR5yf4TTMsxyeKldGB5phUijQVmOUhadbRNdalEACQOv0qLB711vhTRJJLVr11wHJ2Z7qOM/nmlJ2VxM6fSpjFbxKxO3bg1q/I4yCK5d9b0uyme2lnKNE20/u2Iz35Aq9DqMF1CZbK5WQKcMB2/CsITcdGtCWrmu0Q7GmeXg85rOivZwBvwwP8Q4qwl6C21sg1pzxYrMuBR2zSgfWmLIp7ipAatNEnQ3F0kC5PzH0FUZ7+Ty96kIM49ahjYTkhjw3Sq18pSxZO4bNZyqyZpyoS9vXmtVRjks/Ix2qDBtL0wxqoBIK5HHXNRRN5sYz1XFX9Qh3wx3CfeGM1m23qxmZcaINQ8RrNqFzLcRoP3cT4CL7ADj/Izmrt3oUUdmhs7dN9u5cRgY3q33lz79R7gelWgRMkNyo+YH5sVoxPlgexFMDAvFhu7ZGZFMLL98jGPZh2/wD1/jxup+Gp7IyS2GbiAEsY1BLIM/qP8+pr0O4tvstw00S5jc5kj9T6j3pqQRhBJbglP7g/h+n+FEW1sB5ECH7fhQIyDXpGq+G7HV0aZNsNyefNQfeP+0O/16/yrir3TrnTbn7PdptY8qw+6w9Qa0U7mkbMypEzyarSQk9BWq8Q7Vf03SEnAubnK2+flUcNKfRfbjr/APXwcxTjbcxLLRrq/JESqsYOHlkO1E+p/p1rsZr9giQ6WHitIVEce4DMmBgfhU5tnuykQQQ2sY4iXoP8f8k+92O0REDBQAOBWU5t6IybMAaLHKCJPmfadzHqSTkmpYdFjttssLFH27Wx3rbWLcCcdaV4trBPwrO7EVQuCPRuooMeZ0I7GrU0HluimpYLbcxYnAFAisAewqVXZOmaWE/M49DmpkRXkPHFCuthli2k+Veehq/exCazLAdRWVbZMZb3rYs2EsRjb0qxnOwny59p6VvW4E1psbnisS+j8q8YVqabKSoBpREQwE28zwt909KvhsAY+tR3lvu+dRyDUMEmSVbqKpAaU/zRBvWs/DQv5kf3T1FXYTvtmU9RVSJsOUNAEhjWbMsTBZOpB6N9f8apX9rBqFo9veRnaP4v4oz6j/OKt7CjZFPdtybmXkd6AOCTQZLa+ZLsiSBOY9hx5/p7qPX8h6jbjhQHLuu4DHyDhR2VR2HT/OKrmG5k1+dvKIgGVHzZXGBjA7H19SSa1IIFX5sd6TdxybY1FyAFXag6CiQFiFFTmkAAOaQhuwRqi9ycmmqu+6H1qTaWcGnKmyUE9cUWERXwywNTwjFuCe4qCcbyMVaJCwqpGDijqMyouLtlPcmrMJwz59KqMdmofU5qdzsLGpAn0r5ppYuoIyKuwM0cp55U1n6E+bjH+zitA/8AHwwHU1YFTWUH20sBw3NP07ipdVjJ8o/7A/lUNodgBPc4oW4M2Uw/ynvWdcw+VMxHrV9W2utJdxh8kVQFexlDFlNQz/u7g/WokbybjPqas3ozhx3FICRGBFLIhaJwOOM1XifKKfUVbiIfg0wMuCIGd8d0VvzAqaNS3mccg5+uec/nn8qS3UJOoJyxDKfqCcfoBT4vkvcZ4dSMfQ//AFzSEQSKVNIvTkVbukwpNVI/u56ipGOX/WAetSyqAQagkBG1x64pzvnBNMBjJhqdcMQAOMVKAHAqrc7ufakBm3RIuI3HODVy5GF/DNVJfmwPerN04Cx5PVcGp6AR6LMIdQ2t34Fbe3GoEMeGGaKKtbICS+TfbxkehrOJKxAejZoopvcGacTho0b25q5gOh6UUUxIx7pMOfrUzHzLMHuKKKQyGE/uselWbd8OPrRRQBDIghvJDnnzdxGegIAH8jTpMiaF14G4Z/UfzIoooETXKkpj2rOQ7SR2oopMZJsMiEBsYIPSkmUqMEflRRQxEEcxjIyeAakkYSZ560UUkBmTLtJIqG5mLwK3ocUUVKH1P//Z",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": "omvakhare150@gmail.com",
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:12:53.845Z",
              "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:12:53.913Z",
          "endedAt": "2026-06-23T11:12:53.986Z",
          "durationMs": 73,
          "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:12:53 GMT",
            "etag": "W/\"1de2-cfYkxBNiEvwE0a0Bz9ysqkuAZVk\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "70",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:53.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:12:53.933Z",
              "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:12:53.986Z",
          "endedAt": "2026-06-23T11:12:54.077Z",
          "durationMs": 91,
          "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:12:54 GMT",
            "etag": "W/\"1de2-yq6x3IvNAhEnf7rYNETqjic2ahI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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",
            "connection": "close"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:54.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:12:54.032Z",
              "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:12:54.077Z",
          "endedAt": "2026-06-23T11:12:54.402Z",
          "durationMs": 325,
          "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:12:54 GMT",
            "etag": "W/\"1de2-cSRf3S4RgWRxWBsYvL5IwIDypIU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "310",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:54.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:12:54.097Z",
              "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:12:54.402Z",
          "endedAt": "2026-06-23T11:12:54.449Z",
          "durationMs": 47,
          "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:12:54 GMT",
            "etag": "W/\"1de2-gatEilz6CWHlI9/XvLmBnnqDT6s\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:54.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:12:54.410Z",
              "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:12:54.449Z",
          "endedAt": "2026-06-23T11:12:54.506Z",
          "durationMs": 57,
          "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:12:54 GMT",
            "etag": "W/\"1de2-DOdeSPf6Zrh3DTiJuGflaj0Su64\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:54.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:12:54.456Z",
              "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:12:54.506Z",
          "endedAt": "2026-06-23T11:12:54.565Z",
          "durationMs": 59,
          "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:12:54 GMT",
            "etag": "W/\"1de2-2C2ZlJIqL6x0brEzL/MdeJB/7ns\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "56",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:54.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:12:54.513Z",
              "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:12:54.565Z",
          "endedAt": "2026-06-23T11:12:54.627Z",
          "durationMs": 62,
          "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:12:54 GMT",
            "etag": "W/\"1de2-q0ncZQW6jFpimN2KASsLQLHuz1s\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:54.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:12:54.573Z",
              "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:12:54.627Z",
          "endedAt": "2026-06-23T11:12:54.677Z",
          "durationMs": 50,
          "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:12:54 GMT",
            "etag": "W/\"1de2-TyRFF4lV8P6r0c/KhCuoUmwKheE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:54.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:12:54.634Z",
              "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:12:54.677Z",
          "endedAt": "2026-06-23T11:12:54.746Z",
          "durationMs": 69,
          "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:12:54 GMT",
            "etag": "W/\"1de2-YglQsSGebM8WZRBLq6udCf2ZN28\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:54.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:12:54.685Z",
              "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:12:54.746Z",
          "endedAt": "2026-06-23T11:12:54.801Z",
          "durationMs": 55,
          "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:12:54 GMT",
            "etag": "W/\"1de2-mnn6Gw7uqgyrmt4yTedmjvNRbmI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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:12:54.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:12:54.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 '{\"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:12:54.801Z",
          "endedAt": "2026-06-23T11:12:54.873Z",
          "durationMs": 72,
          "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:12:54 GMT",
            "etag": "W/\"1de2-LyvkotQXg8NPSJPr0N/4yLT+wZ8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:54.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:12:54.830Z",
              "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:12:54.873Z",
          "endedAt": "2026-06-23T11:12:54.888Z",
          "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:12:54 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:12:54.888Z",
          "endedAt": "2026-06-23T11:12:54.904Z",
          "durationMs": 16,
          "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:12:54 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "13",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"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:12:54.904Z",
          "endedAt": "2026-06-23T11:12:54.966Z",
          "durationMs": 62,
          "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:12:54 GMT",
            "etag": "W/\"1de2-xCAqb5XBi2RmEhCHNJjAjdvJ310\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "59",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:54.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:12:54.910Z",
              "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:12:54.966Z",
          "endedAt": "2026-06-23T11:12:55.046Z",
          "durationMs": 80,
          "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:12:55 GMT",
            "etag": "W/\"1de2-kDOMYr/gaFUaMU4q6nNPdVCcQ8k\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "76",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:54.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:12:54.973Z",
              "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:12:55.046Z",
          "endedAt": "2026-06-23T11:12:55.054Z",
          "durationMs": 8,
          "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:12:55 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:12:55.055Z",
          "endedAt": "2026-06-23T11:12:55.152Z",
          "durationMs": 97,
          "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:12:55 GMT",
            "etag": "W/\"1de2-yNXZa/ukq9fZkKT3UVGvgYSkcLo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:55.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:12:55.061Z",
              "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:12:55.152Z",
          "endedAt": "2026-06-23T11:12:55.161Z",
          "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:12:55 GMT",
            "etag": "W/\"bf-FS3gd/UzOASAPQHJPfmDw0bdyiw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "5",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1002",
                "error": "Please enter a valid email address"
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"email\":\"omgmail.com\"}'",
          "validations": [
            {
              "description": "Should indicate error (HTTP 400 or body statusCode=400)",
              "passed": true,
              "message": "Error confirmed (HTTP 400, body.statusCode=400)"
            },
            {
              "description": "Response should contain error code(s): FIXUSER1002",
              "passed": true,
              "message": "Found expected error code(s) in response"
            }
          ],
          "docsFile": "user-services/API_QA_PI_PUT_USER.md",
          "apiMeta": {
            "endpoint": "/user",
            "method": "PUT",
            "guards": "1) Auth (Actual Guards)",
            "authHint": "1) Auth (Actual Guards)"
          },
          "expectedErrorCodes": [
            "FIXUSER1002"
          ],
          "actualErrorCodes": [
            "FIXUSER1002"
          ]
        },
        {
          "caseId": "API_QA_PI_PUT_USER_TC_PUTUSER_NEG_002_InvalidPan_FIXUSER1001_27",
          "caseName": "[NEGATIVE] PAN bad format",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 400,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:12:55.161Z",
          "endedAt": "2026-06-23T11:12:55.168Z",
          "durationMs": 7,
          "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:12:55 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": "4",
            "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:12:55.168Z",
          "endedAt": "2026-06-23T11:12:55.176Z",
          "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:12:55 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": "4",
            "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:12:55.176Z",
          "endedAt": "2026-06-23T11:12:55.183Z",
          "durationMs": 7,
          "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:12:55 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": "3",
            "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:12:55.183Z",
          "endedAt": "2026-06-23T11:12:55.189Z",
          "durationMs": 6,
          "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:12:55 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": "3",
            "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:12:55.189Z",
          "endedAt": "2026-06-23T11:12:55.227Z",
          "durationMs": 38,
          "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:12:55 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": "35",
            "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:12:55.227Z",
          "endedAt": "2026-06-23T11:12:55.237Z",
          "durationMs": 10,
          "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:12:55 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:12:55.237Z",
          "endedAt": "2026-06-23T11:12:55.244Z",
          "durationMs": 7,
          "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:12:55 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": "3",
            "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:12:55.244Z",
          "endedAt": "2026-06-23T11:12:55.252Z",
          "durationMs": 8,
          "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:12:55 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": "4",
            "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:12:55.252Z",
          "endedAt": "2026-06-23T11:12:55.337Z",
          "durationMs": 85,
          "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:12:55 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": "82",
            "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:12:55.337Z",
          "endedAt": "2026-06-23T11:12:55.430Z",
          "durationMs": 93,
          "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:12:55 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": "90",
            "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:12:55.430Z",
          "endedAt": "2026-06-23T11:12:55.546Z",
          "durationMs": 116,
          "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:12:55 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": "112",
            "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:12:55.546Z",
          "endedAt": "2026-06-23T11:12:55.828Z",
          "durationMs": 282,
          "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:12:55 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": "278",
            "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:12:55.828Z",
          "endedAt": "2026-06-23T11:12:55.845Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "apikey": "d4****bb"
          },
          "requestPayload": {
            "unknown_field": 1
          },
          "requestQuery": {
            "issuer_code": "SSFB",
            "issuer_type": "BANK"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "78",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:55 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "13",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"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:12:55.845Z",
          "endedAt": "2026-06-23T11:12:55.859Z",
          "durationMs": 14,
          "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:12:55 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "11",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": []
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user?issuer_code=SSFB&issuer_type=BANK' \\\n  -H 'Content-Type: application/json' \\\n  -H 'apikey: d4****bb' \\\n  -d '{\"is_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:12:55.859Z",
          "endedAt": "2026-06-23T11:12:55.928Z",
          "durationMs": 69,
          "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:12:55 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": "65",
            "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:12:55.928Z",
          "endedAt": "2026-06-23T11:12:55.977Z",
          "durationMs": 49,
          "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:12:55 GMT",
            "etag": "W/\"1de2-6yNmK0ST2lH0L85dnGA4mbeM6yg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:55.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:12:55.935Z",
              "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:12:55.977Z",
          "endedAt": "2026-06-23T11:12:55.985Z",
          "durationMs": 8,
          "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:12:55 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\":\"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:12:55.985Z",
          "endedAt": "2026-06-23T11:12:56.044Z",
          "durationMs": 59,
          "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:12:56 GMT",
            "etag": "W/\"1df6-egi2mrX8XPBgxEutvatuQqlrDV8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "56",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:56.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCADIAKADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDpKRhxS4obgVkSRjig9aUCgjvRcBppKKKQBS0mDRQA9eTTjwKRRilb1pgRGilNFIBKKcRxTaACiiimAlFJmjrikBNGflp2OOaZH05pzEAZBpCH4pD79KdSEZFWMZ04oPSjGOe1DdqQDCKTFPppOePSkMSjp1rF8ReJLbQYFBAmun+5CGwcf3j6D+Z/EjzvVPGGr38h23LQIekcPygfj1Pbr6dqaQHsG9QuSQB3J4FNE8My5ikRx/sHP8q8BmmmmlaWWRmkPBdiST+NREt6iqsFj6FCk+31oA56V8+28strKJreZoZR0eNirD8RXQaZ431rTSqvcfaogfu3GXPv82c5+uR7UrBZnsZGKjrmNI8faXqJWK7zZTnp5jZjPPZ+3bqB+NdQTnkUthCUhpaSgAxRiloHWkA9EDdTTjGKap9OtSjnkmkAtNJp1NIqhjSeOlHOOlFKfu0AMPFZkuuafDLND5skkkX3xFBJIE6/eZVIXoep7H0NGta1Bo1i9xJhnAykeeXPA/AcjJ968nl8VX8NmLa0lNspyZGjOHdj1Yt1z0GRzgDJOKErgRa9fi51e6lEnmbpCQ2chhng57jGMe2B0ArKMxA479TUtrbyX87MxJPUk81qDRQCMHj0puSRcYN7GJ53HTimmQ+lbbaSqnmmf2anoaXtEV7NmJvJ68Ck3gHvWs+ngDoKqyWgAoVRC5GiskvvXXeF/Gc+jyJa3jNNp7cerQ/7vt7fl6HjpIyhyKVHzx0FVuQ13PoSGaO4hSaGRZInAZHU5DA9CKk/GvN/hzrTJcyaTNIAjgvCG7MOoH1GT+Br0gmpJCnKOaZxT060DJApx3pM46gZ9xTxz3pr8mkIlpp6U8000xkZHNRXNzFaWs1zMSI4kLsR6CpWNZXiCNJdCulfJAUPgd9pDAfQ4wfahAeUa9rM+q3kk8xwucKinIAHQe/6euMkk883zMcVbum2pt/CqkYywxVoZ0miwBLcNjk1sDAGaraaoNug6cVak2KcMyg+ma527s6YqyIJgDzVc9OBV1gjrkMD+NQbFNIspSLx061VkXAxitFwuDnoKpzPGD96hEtGbNBuB4rNkjMTc1tmWHpmobyBJLYuhBx6VpFtbmUkmU7eZ4LiK4idkkRgykHBBHQivdLC7+26fbXRwDNErnHQZGa8FiYqcGva9DvRcaHYyZyTAgbjHIGD+tWzFmvvp6NVbzVp6SLmp0As7/Sk3UzeCcCngigC4elMI4p5HNMI5qrARNWV4gLf2FflCQwt3II7fKa1n4qrMA6spHBGMUwPBrobxwMEdRVaPgj3Namr2M1hqUsLowCsQrEfeHY1UtYDLewpjrIo/WmUdLDHKY0ijbYuOWHWoLq2tI1I8x2cDLYOePWtqS0Y25Efyn1rGk0hmglExViSNm5jge+Mck/UVzRep0taGV5yIwWKeTH1rXsPMlTO/cMVQh051V0K5DHqVxj6VtWNg8cOOgx6cmqm0EE2ZF7Iy7gGxWVv3HLB2ravoAZCKpLb4Rk6buvvRCSFUi7leOWLH+rIA74q9FDHKDs6MMECo47ZlhMQz5bHJHrViCExHgYFEmuhMU+pz7IYpmRuqnBr1bwqnk+HLRSTyC2M+pJrz6+tgL4uADuTdj36V3Phe9N5oyqQA0LeWQPTt/n2qnK6MpRa1OiDU5SfWoFJqZDUklhXIHWpBMarg07NAG6SBTGNKfrTX6VsIhc5qBxUrdaY4yKBnO+KtOhvNGuHaJWlUAq+ORg/4Z/OuDtrFLfULI5+8STn2FepXkAubSWEnG9SufTNebyRuup2+QfkJR/VTyKiTNqaTizcCeYAufwqOeN1Urt9vpRE+2TNWJJQUyc1z7M6UZ6qkQ3yfWp4i8pVguAemTgVTuA0zbF6Go5ftbTJum8qGMdFwdx9809x7EepwjeTuX86zAu19rd+h9adeF5QxaT5c/w8VDArnbubIHQmhRsRJpvQtKuDjtSs+3gUBucU12GaT3F0ILwgvEcdQRXVeD7cwabJKwx5z5X6Dj+ea5S5XeYwM969BtIfs9rFCvRFC/pWiMJvSxc6VIh7VCuT3qVQfWmZE4paaM4p2DQBuHrTXHAFTMKiNbCICMnpTWGFqYiomFAyuy1yGv6cY7trlMJHJgs3bOeldk9QkdaTVyoy5Xc4EsyhWHQjrT/OJTJ5FW9VgMOoyofut84+h/8Ar5rNyqNjP4VzyVmdcHdE6hUXe3X0rOuLsGUpFG1xIOSF6LUt1mYbFOAetQESW8Xl24Cj6Zpxtuxtu5UnE7HCWpUdxgD+tVPNMbbWyh9+hqw4vSSWcfTFVmyxw+D68VWhnLyJg+7kGng7jUEY28dqmjBMgwMk8VNhX0N3RdNinb7RKCwQ4Ve2a6cHIqtY2ZtLGKNvv4y31PWrIFOxg3dj1PNToarr1qwlBJKDT6jFPBpgdE/BAqFhzUz9aYRk81uBERUTjNWCvFREUAV3GRUOKskVUvbiKytJbqYkRxjLYGTSuBi+JLbfZrcKPmibB+h/+viuReX1rVuPGMOpiSxjs2RJD8srSc4Bz93Ht61iXHyMazlZu5vTbRJG6k4JqZ5oo0yBk1lmTHsaY07EYOfwqLGnOTzTkk+pqizgsc4pJJNw75qsWwT1Jp2Jci0XArovCemG8uzdyr+6hPy57t/9b/CuTUkn3re0XxHLpFwlttVraRsuCOQfXNNIzk20egyJxVYpg1dR0niWRDlWGRUbpQ1fUyIAuBUq5xSdOKerCkA8UoHtQDS5pgdIwpmKmIphFbgRkVC4qdiqKWYhVHcnAqm97bMSI5VkYdkOfbH6ipbS3ATBLAAZJ4rM12E3FpJaj7silR9a1Lm+stLgWe8uYoASQpkYDJAzgep+lYFz4j0W9g2Q3uZ9pZCIX454524rCpO+xpFWPL7RgLraYwjoTnnnIrVdwwwwyKueKdL+yXC30KbcYWVB2I4/+tWYHEkYYHrVJpq6KRXmjK8o1U2kkXquavPnnmq0iE9KY7FR5yf4TTMsxyeKldGB5phUijQVmOUhadbRNdalEACQOv0qLB711vhTRJJLVr11wHJ2Z7qOM/nmlJ2VxM6fSpjFbxKxO3bg1q/I4yCK5d9b0uyme2lnKNE20/u2Iz35Aq9DqMF1CZbK5WQKcMB2/CsITcdGtCWrmu0Q7GmeXg85rOivZwBvwwP8Q4qwl6C21sg1pzxYrMuBR2zSgfWmLIp7ipAatNEnQ3F0kC5PzH0FUZ7+Ty96kIM49ahjYTkhjw3Sq18pSxZO4bNZyqyZpyoS9vXmtVRjks/Ix2qDBtL0wxqoBIK5HHXNRRN5sYz1XFX9Qh3wx3CfeGM1m23qxmZcaINQ8RrNqFzLcRoP3cT4CL7ADj/Izmrt3oUUdmhs7dN9u5cRgY3q33lz79R7gelWgRMkNyo+YH5sVoxPlgexFMDAvFhu7ZGZFMLL98jGPZh2/wD1/jxup+Gp7IyS2GbiAEsY1BLIM/qP8+pr0O4tvstw00S5jc5kj9T6j3pqQRhBJbglP7g/h+n+FEW1sB5ECH7fhQIyDXpGq+G7HV0aZNsNyefNQfeP+0O/16/yrir3TrnTbn7PdptY8qw+6w9Qa0U7mkbMypEzyarSQk9BWq8Q7Vf03SEnAubnK2+flUcNKfRfbjr/APXwcxTjbcxLLRrq/JESqsYOHlkO1E+p/p1rsZr9giQ6WHitIVEce4DMmBgfhU5tnuykQQQ2sY4iXoP8f8k+92O0REDBQAOBWU5t6IybMAaLHKCJPmfadzHqSTkmpYdFjttssLFH27Wx3rbWLcCcdaV4trBPwrO7EVQuCPRuooMeZ0I7GrU0HluimpYLbcxYnAFAisAewqVXZOmaWE/M49DmpkRXkPHFCuthli2k+Veehq/exCazLAdRWVbZMZb3rYs2EsRjb0qxnOwny59p6VvW4E1psbnisS+j8q8YVqabKSoBpREQwE28zwt909KvhsAY+tR3lvu+dRyDUMEmSVbqKpAaU/zRBvWs/DQv5kf3T1FXYTvtmU9RVSJsOUNAEhjWbMsTBZOpB6N9f8apX9rBqFo9veRnaP4v4oz6j/OKt7CjZFPdtybmXkd6AOCTQZLa+ZLsiSBOY9hx5/p7qPX8h6jbjhQHLuu4DHyDhR2VR2HT/OKrmG5k1+dvKIgGVHzZXGBjA7H19SSa1IIFX5sd6TdxybY1FyAFXag6CiQFiFFTmkAAOaQhuwRqi9ycmmqu+6H1qTaWcGnKmyUE9cUWERXwywNTwjFuCe4qCcbyMVaJCwqpGDijqMyouLtlPcmrMJwz59KqMdmofU5qdzsLGpAn0r5ppYuoIyKuwM0cp55U1n6E+bjH+zitA/8AHwwHU1YFTWUH20sBw3NP07ipdVjJ8o/7A/lUNodgBPc4oW4M2Uw/ynvWdcw+VMxHrV9W2utJdxh8kVQFexlDFlNQz/u7g/WokbybjPqas3ozhx3FICRGBFLIhaJwOOM1XifKKfUVbiIfg0wMuCIGd8d0VvzAqaNS3mccg5+uec/nn8qS3UJOoJyxDKfqCcfoBT4vkvcZ4dSMfQ//AFzSEQSKVNIvTkVbukwpNVI/u56ipGOX/WAetSyqAQagkBG1x64pzvnBNMBjJhqdcMQAOMVKAHAqrc7ufakBm3RIuI3HODVy5GF/DNVJfmwPerN04Cx5PVcGp6AR6LMIdQ2t34Fbe3GoEMeGGaKKtbICS+TfbxkehrOJKxAejZoopvcGacTho0b25q5gOh6UUUxIx7pMOfrUzHzLMHuKKKQyGE/uselWbd8OPrRRQBDIghvJDnnzdxGegIAH8jTpMiaF14G4Z/UfzIoooETXKkpj2rOQ7SR2oopMZJsMiEBsYIPSkmUqMEflRRQxEEcxjIyeAakkYSZ560UUkBmTLtJIqG5mLwK3ocUUVKH1P//Z",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": "omvakhare150@gmail.com",
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:12:55.991Z",
              "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:12:56.045Z",
          "endedAt": "2026-06-23T11:12:56.119Z",
          "durationMs": 74,
          "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:12:56 GMT",
            "etag": "W/\"1df4-1bWZ5Be1+a8tJ6ZBg43ZJjsOIaM\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "71",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:56.000Z",
              "deleted_at": null,
              "createdBy": null,
              "updatedBy": null,
              "deletedBy": null,
              "isActive": true,
              "f_user_id": "00024bba-cc1f-4ea4-b5bd-312b5d982b58",
              "profile_photo": "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",
              "profile_photo_file_name": "Photograph.jpg",
              "pan": null,
              "email": "duplicate@fixerra.in",
              "password": "",
              "sub_account": "",
              "gender": "M",
              "salutation": "MR",
              "first_name": "Arpan",
              "middle_name": "",
              "last_name": "Kayastha",
              "pan_first_name": null,
              "pan_middle_name": null,
              "pan_last_name": null,
              "phone": "249a22814bf213a7ff2e68cfa58da9d3:f20c3c0975ece5a088c861803901c0e1",
              "code": "91",
              "dob": "249a22814bf213a7ff2e68cfa58da9d3:0d54fbcbe634d0cf9ea40abe20b37b0f",
              "care_of": "",
              "referral_code": "",
              "masked_aadhaar": "XXXXXXXX7520",
              "user_activation_date": null,
              "user_registration_date": "2025-03-12T08:42:15.510Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "WAKHARE BABASAHEB CHANDRASHEKHAR",
              "is_pan_verified": true,
              "manual_pan_verified": null,
              "is_email_verified": true,
              "is_aadhaar_verified": true,
              "is_nominee_present": true,
              "is_ckyc_verified": false,
              "is_bank_present": false,
              "kin": "father",
              "kin_first_name": "ROBERT",
              "kin_middle_name": "BABASAHEB",
              "kin_last_name": "DOE",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": "2025-03-12T12:54:07.000Z",
              "user_pan_verification_date": null,
              "user_nominee_update_date": "2025-12-03T13:43:46.000Z",
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-22T14:21:19.000Z",
              "profile_updated_at": "2026-06-23T11:12:56.052Z",
              "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:12:56.119Z",
          "endedAt": "2026-06-23T11:12:56.251Z",
          "durationMs": 132,
          "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:12:56 GMT",
            "etag": "W/\"1dec-lrsiueXGVHmPgRX0i29UghNi56g\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "128",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "User Updated",
            "payload": {
              "createdAt": "2025-03-12T08:42:15.000Z",
              "updatedAt": "2026-06-23T11:12:56.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:12:56.126Z",
              "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:12:56.251Z",
          "endedAt": "2026-06-23T11:12:56.260Z",
          "durationMs": 9,
          "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:12:56 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": "6",
            "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:12:56.260Z",
          "endedAt": "2026-06-23T11:12:56.322Z",
          "durationMs": 62,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "1676",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:56 GMT",
            "etag": "W/\"68c-PEmpJjGQ8owZOTODm6kj1t6sEhI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": {
              "createdAt": "2026-06-23T11:12:30.000Z",
              "isActive": true,
              "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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:12:30.545Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "QA FATHER",
              "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": "QA",
              "kin_middle_name": "",
              "kin_last_name": "FATHER",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": null,
              "user_pan_verification_date": "2026-06-23T11:12:46.000Z",
              "user_nominee_update_date": null,
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-23T11:12:53.000Z",
              "profile_updated_at": "2026-06-23T11:12:52.000Z",
              "mother_name": "QA MOTHER",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2026-06-23T16:42:30.000Z",
              "decrypted_pan": "BLXPR3438L",
              "is_personal_details": {
                "BAJ": true,
                "MAH": true,
                "SHRI": true
              }
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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:12:56.322Z",
          "endedAt": "2026-06-23T11:12:56.360Z",
          "durationMs": 38,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "1676",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:56 GMT",
            "etag": "W/\"68c-PEmpJjGQ8owZOTODm6kj1t6sEhI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": {
              "createdAt": "2026-06-23T11:12:30.000Z",
              "isActive": true,
              "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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:12:30.545Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "QA FATHER",
              "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": "QA",
              "kin_middle_name": "",
              "kin_last_name": "FATHER",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": null,
              "user_pan_verification_date": "2026-06-23T11:12:46.000Z",
              "user_nominee_update_date": null,
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-23T11:12:53.000Z",
              "profile_updated_at": "2026-06-23T11:12:52.000Z",
              "mother_name": "QA MOTHER",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2026-06-23T16:42:30.000Z",
              "decrypted_pan": "BLXPR3438L",
              "is_personal_details": {
                "BAJ": true,
                "MAH": true,
                "SHRI": true
              }
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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:12:56.360Z",
          "endedAt": "2026-06-23T11:12:56.439Z",
          "durationMs": 78,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {
            "issuer_code": "SSFB"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "1676",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:56 GMT",
            "etag": "W/\"68c-PEmpJjGQ8owZOTODm6kj1t6sEhI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "createdAt": "2026-06-23T11:12:30.000Z",
              "isActive": true,
              "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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:12:30.545Z",
              "user_deactivation_date": "",
              "custodial_account": "",
              "occupation": "Public Sector",
              "annual_income": "Upto 5L Per Annum",
              "user_tax_status": "",
              "father_name": "QA FATHER",
              "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": "QA",
              "kin_middle_name": "",
              "kin_last_name": "FATHER",
              "marital_status": "Unmarried",
              "kapture_id": "",
              "user_aadhaar_verification_date": null,
              "user_pan_verification_date": "2026-06-23T11:12:46.000Z",
              "user_nominee_update_date": null,
              "user_bank_account_update_date": null,
              "user_email_verification_date": "2026-06-23T11:12:53.000Z",
              "profile_updated_at": "2026-06-23T11:12:52.000Z",
              "mother_name": "QA MOTHER",
              "education": "Graduate",
              "source_of_income": "Salary",
              "is_broker": false,
              "is_aadhaar_xml_present": false,
              "created_at_ist": "2026-06-23T16:42:30.000Z",
              "decrypted_pan": "BLXPR3438L",
              "is_personal_details": {
                "BAJ": true,
                "MAH": true,
                "SHRI": true
              }
            }
          },
          "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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:12:56.439Z",
          "endedAt": "2026-06-23T11:12:56.446Z",
          "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:12:56 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": 224,
        "passed": 224,
        "failed": 0,
        "skipped": 0,
        "running": 0,
        "pending": 0,
        "durationMs": 10772
      }
    },
    {
      "stepId": "step-06-ckyc-branch",
      "stepName": "CKYC Branch",
      "cases": [
        {
          "caseId": "BAJ_CKYC_001",
          "caseName": "Verify CKYC URL generation with valid token",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:56.446Z",
          "endedAt": "2026-06-23T11:12:57.823Z",
          "durationMs": 1377,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:57 GMT",
            "etag": "W/\"149-0/rzwP4H3tFWjRovQQ/b64KMLXs\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "1374",
            "server": "envoy",
            "connection": "close"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/uU3oTqbT0cBpuidsozyNq1frZ5nItJJxj2MjDGdIr70WQg~IVzkTEjs1NjrDaxTbwX7k7BTpyRPipi9_uIIlWJ6yyxozrpiMngLQvU4YLIyZ47dkLvjHgNH1AaIeEzkTDpHY9xeBP68jvjtZh6U83SvDIfFxyhueKMMXRQIB_cMtziq~VxskR4ti__BdK3ot?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 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 be present",
              "passed": true,
              "message": "payload object present"
            },
            {
              "description": "payload.url should be present and not null",
              "passed": true,
              "message": "payload.url present"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_002",
          "caseName": "Verify success flag",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:57.823Z",
          "endedAt": "2026-06-23T11:12:58.229Z",
          "durationMs": 406,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:58 GMT",
            "etag": "W/\"149-aPQvugEtwSzyeaQtyqb0MFK8jjA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "394",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/6Le4nUl4dYq2I7MEUfdssvqn5MqWgA~eUvuIoYqotJk3KW6M6KhJ8v3Xd8Auz5gtdQDy~odGBYl56Bv~NyTVLjYFFQGzv0_94kKv4_aPaW4VtlB8yDxQWU5majRFi8XUh3eb6XWfCEuAhH6GkKuxmwmAG~agqApa_uq9hz6PGVOUT8Ao3vPQ52OhWHZwH~tS?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_003",
          "caseName": "Verify statusCode field",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:58.230Z",
          "endedAt": "2026-06-23T11:12:58.570Z",
          "durationMs": 340,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:58 GMT",
            "etag": "W/\"149-HhxRXaHjhAyPyzDeE6SXnIyCtb0\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "337",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/HKAXyYesmwTMb~QHIecPa9nB3UsRA3~aD0g00QOaCHfJT50qDc6YxSZbqu3rehYZ2jeIL0bIYs7xxUjBifcua7cZfi8rZ7O7SUCaE~XFvIJp2J3To7LrSk7Qi5BSqBh1QsVv4p~GXi8mk3Xm5Q73olA9cE9yGzZkUhhM2ZoBo_lRnkU4gV7wfeZBdMrNSfa1?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Body statusCode should be 200",
              "passed": true,
              "message": "statusCode=200"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_004",
          "caseName": "Verify success message",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:58.570Z",
          "endedAt": "2026-06-23T11:12:58.948Z",
          "durationMs": 378,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:58 GMT",
            "etag": "W/\"149-oObQosZaeEudzEIVQ7+wA+EOtSs\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "375",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/0vM7FhscKfpMFkKBdlp0iZrRdzXRTzpcXf230WPoNKJ9EnXeZz3gZEKhVtu89U5m~9jOVWgNmT4Sqv4Pcs8WBWIvUA7xmAZEGzyRFjZ35drKjwsucgIas0lNHHszcFcKsr0SCNvEB~M83enVY5VLyViq7QScbkWbnMazm3zYqDyys13~icTYarR8E4GpDsQn?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Response message should be \"SUCCESS\"",
              "passed": true,
              "message": "message=\"SUCCESS\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_005",
          "caseName": "Verify payload object present",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:58.948Z",
          "endedAt": "2026-06-23T11:12:59.276Z",
          "durationMs": 328,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:59 GMT",
            "etag": "W/\"149-U7aq0HYwOzjju0i/AKozsmMo59I\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "325",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/cLtviJsQhSHmuOGObKf0_IpuO_zc785wSoIl73ZQYGbCIsMq1OsESQJx3TrioiP6TcFzICPk77Y0zhw8ZM2AGa56M~a1QXm3IsnCzIuL0GyDvJKqI53JD4uLMcxVWGFtAgeKM45km~AwSQFZsmPTC2ByapyplbgfIDDczncPatysFjHSXCu~a4OkNau8eoId?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Payload object should be present",
              "passed": true,
              "message": "payload object present"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_006",
          "caseName": "Verify URL field present",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:59.276Z",
          "endedAt": "2026-06-23T11:12:59.609Z",
          "durationMs": 333,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:59 GMT",
            "etag": "W/\"149-684v7RHGCftmDRasFBN0V22MF5k\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "330",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/tPLmmmrpr9wh7weQg54XhFv_Pu~cm3D3xC9QQzN_MZ_dgUvaZ9h5D4LFDmsXTEbmID_DKLGOrQMAOYnPU5ZWzrMulRW3C8HDeolKBwTZxU9gOpcr98oy_AvunF9hg6fwGSeaiq6sUIO2oliOJgkaOXzFRxgHjGmy5CvtTTBKkyz2NJkGR5SKYC1_vaW6fwnp?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "payload.url should be present and not null",
              "passed": true,
              "message": "payload.url present"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_007",
          "caseName": "Verify URL is not null",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:59.609Z",
          "endedAt": "2026-06-23T11:12:59.934Z",
          "durationMs": 325,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:12:59 GMT",
            "etag": "W/\"149-mntem1YJYx5g0eA1Z543rNLROfQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "322",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/FZEVFqb6WWZo2RpdQwG67vhRLeqmKzcero_sDWR2V62ba_CboY5a7ygPx5jyN2bJr~2hR4uGLctR74VDL3_Pdq1Ccr8iZK5eH8V_cWYZJtkZn9zT9PEqtd4iOPY~evTwHWkcMHE3Z_~_XUzjjzjZQZw5ivWw3ti6YuyDOJ0kbsELZ8s3GrAsnXMERGyrw2qL?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "payload.url should be present and not null",
              "passed": true,
              "message": "payload.url present"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_008",
          "caseName": "Verify URL is not empty",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:12:59.934Z",
          "endedAt": "2026-06-23T11:13:00.307Z",
          "durationMs": 373,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:00 GMT",
            "etag": "W/\"149-Hh9n2LE3xaTNRN89pFZmOZVUF/M\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "370",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/r4NST2ni0mM_1ET7DBZH9fft2cLwzhE0Wcn5AF_27TegniUng8Qj0xieSPakoaJnaiWPwi6cUo8GDpsSwV9F2gHIBnqXKoU0Yh7OMTPRe7Kv1wwp~7PduLARPav_DvhGuT3aEkAdczilLvVn~bAla9NKh2IefRyX9yGFOeCAw~oB_~ROs0FnEJkFC8Xyg3iC?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "payload.url should not be empty",
              "passed": true,
              "message": "url length=258"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_009",
          "caseName": "Verify URL starts with HTTPS",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:00.307Z",
          "endedAt": "2026-06-23T11:13:00.676Z",
          "durationMs": 369,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:00 GMT",
            "etag": "W/\"149-vwUbE+njHr2EnwmaI6028Ju/t3U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "366",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/IvWZ3uCxfesf9oPq6dYh~tsWYrLCKWS5HJHopuyOTw3lFz4rnG__QMopjmu4cNb_t2qb3iytuT02WMb7spj0vLqn5CU_xrDP_lJYGBjvBk3TvU4BcZhXJjXVNlH9AQTEXjdCQm6QKpCqyf4VnK9RGFcCPTcR9Dsmb4F~p1PLekZdHwbNwqYEU6R6EKo5Hiwl?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "payload.url should start with https://",
              "passed": true,
              "message": "URL starts with https://"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_010",
          "caseName": "Verify generated URL contains mode parameter",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:00.677Z",
          "endedAt": "2026-06-23T11:13:01.016Z",
          "durationMs": 339,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:01 GMT",
            "etag": "W/\"149-7KlkQPiPczBX1bBF7A1mwK2aNoQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "337",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/3QjMqeRnj_gVoVBlwhAADAHMRqpM6Wnr5NtovnuhP~vCILFWYLiZ06Pf1LUdsCcmt5esLm08YFB5nZ~kfulSXAhGynOf2ujbO7Yz79zqE62zWoAYiIKacrldm0B0CnF9jatZk90CkynFXRqAHrDyQ9JguEbkVU~ktBHTZv1xw7w17ta_gifkKRdUUDvUyTC9?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Generated URL should contain a mode parameter",
              "passed": true,
              "message": "mode parameter present in URL"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_011",
          "caseName": "Verify URL format validity",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:01.016Z",
          "endedAt": "2026-06-23T11:13:01.402Z",
          "durationMs": 386,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:01 GMT",
            "etag": "W/\"149-7gmBEUiulZvTdUR395c9aY0nzXg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "383",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/VaDHoMfyacj7QCw4M_Wmba0_FoU0IAQ1dsEWD7J_xi_G26TQelOC3vf7PVuWzP2WvSgCiGZDr4CaA64tDsiRk5QcmHuJ82Kl3g52oK8MLDeYY1lj~h2SOXAu46cEuldyivUECmN6Qyp22XIQvljw71EH35_uuLPDKcoDtJX8Kj0MSl8G2m1N_KqKSdt__fCt?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "payload.url should be a well-formed URL",
              "passed": true,
              "message": "URL is well-formed"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_012",
          "caseName": "Verify response content type",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:01.402Z",
          "endedAt": "2026-06-23T11:13:02.131Z",
          "durationMs": 728,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:02 GMT",
            "etag": "W/\"149-WQoTL6wkdMAVNtJ/noq4GuUB4kI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "688",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/98IKwbfILxRPgDYZFwPNg4vUX8OHKgBg7WQa9Je9lpwewBrXecq6ceWH_ebD8y8whYhZjdw0AKPALtgDbCWY431ov4FbJozjs44_Rp9iVr9lkqPnd2hZNIhkuRMdeBN0tS9O0o2hAS0IoBFObDu59AvDrv2scnhvM1zSbEN52vQKfLQFDQNceM5pZW_~1Dvl?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Response content type should be application/json",
              "passed": true,
              "message": "application/json response"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_013",
          "caseName": "Verify response schema",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:02.131Z",
          "endedAt": "2026-06-23T11:13:02.699Z",
          "durationMs": 568,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:02 GMT",
            "etag": "W/\"149-Axv7tPCObmEx1TY1uGnbV6Qv+Q4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "559",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/ch3YwxNXRm~fWC~_6b1nTtdH0e8AVWK84733uBrfv97s4f1JgTxlFCGV_nRM1XsETFnhZLMopClUAV0Jf_S316QCQUlyP28hxLzXCSlVkY2GzPPY1TenCOA0cvMEmanl_ss1FjgMjivlKGJX7AtXiZOYrKGNlNUWcZ4hod_sc29lYAa4~6NWOXeWGZwtEmQp?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Response schema should match contract (success/statusCode/message/payload.url)",
              "passed": true,
              "message": "Response schema valid"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_014",
          "caseName": "Verify response time",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:02.699Z",
          "endedAt": "2026-06-23T11:13:03.025Z",
          "durationMs": 326,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:03 GMT",
            "etag": "W/\"149-VnhwgPFkhnVIPVr1GJAGDThcFas\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "323",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/5FCGtvGCTfmb2AcE4p3vMBvFOpYoY_485QuCIshHQlzViZGaA2gdW1LuTOrxW6qQrGYVBuM97LVAgJicl9MgT1gD8vWbk50F88850ASqVeqtatR9q_5gvitj4VESIq6IF9_cTrK57JkUleXXBRnH_hOW1WmRJJMVVWD1bew4NdBLJyAS0QsvTowOLzjs2OEI?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Response should complete within 2000ms",
              "passed": true,
              "message": "duration=326ms"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_015",
          "caseName": "Verify URL length",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:03.025Z",
          "endedAt": "2026-06-23T11:13:03.361Z",
          "durationMs": 336,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:03 GMT",
            "etag": "W/\"149-DHLWyu0Njx0Qu4h7sRzdbLzg2EU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "333",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/fb5YP6rduKxQuPV6PN3YDJJjDXILr7KmZxFVdcO3dxbcrXjo2wec~IanmAN6F_IWGQvXz9AZcfD1jmgMNObV17HLbr4~tzIo97qh4QHpklf7LE7zUoaiQ8orwzZXX_v8UNExLHv9LhKqTtHVhYXufSfABAca0NLuupvKhOLEWTWpDPWg3s2CKqMsAjFdrHZf?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "payload.url length should be within 2048 characters",
              "passed": true,
              "message": "url length=258"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_016",
          "caseName": "Verify repeated API calls generate URL successfully",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:03.361Z",
          "endedAt": "2026-06-23T11:13:03.664Z",
          "durationMs": 303,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:03 GMT",
            "etag": "W/\"149-a167QCIuvWJhizmVF6gBoshDwpo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "300",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/FtYb0vEDWmPm6CCdUL~samUPHN7U1VGvhD0igCGyK1QVQwaPVYpeQrlo3d1w028Yuj7xoTqM2DtWnlDNPWhyH1xLhxv2Wx7b_rxat0_HMiFpGJvqHqLKscKU9PUl0kmQbROP3koCz08zs4sXL4FoIQ8aw22ABfTBi3A4IuiBRCqrlO7c~9iGIGQCOodLnDq~?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 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.url should be present and not null",
              "passed": true,
              "message": "payload.url present"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_018",
          "caseName": "Verify URL uniqueness per session",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:03.664Z",
          "endedAt": "2026-06-23T11:13:04.005Z",
          "durationMs": 341,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:04 GMT",
            "etag": "W/\"149-oS/pAEh6Os1sDvi5zSVSwGeCRqk\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "338",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/HfD8zRvamoTG~YlytLI~LMjCdj~h6y9u8iRZzu294XB~GxpwO1KqYZhueGnsPG5ABAMC4J~Q~Crqm0CSCXinZi917b8IEYkxb9QK4GMlezLHj1MIgcR4ycT34MFyug_iaI0Grnw7VWnHhCidYFlDJAp5j7WuiyjWLIl2xLG~j9NW7OVsPVR3ydYVRmC7eEM5?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "URL behavior across repeated calls should be valid (same or unique session URL)",
              "passed": true,
              "message": "Different URL returned across calls (per-call session)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_019",
          "caseName": "Verify Authorization header mandatory",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:04.005Z",
          "endedAt": "2026-06-23T11:13:04.030Z",
          "durationMs": 25,
          "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: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": "21",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "x-partner-key is required",
            "payload": {},
            "error": {
              "statusCode": 401,
              "message": "x-partner-key is required",
              "error": "Unauthorized"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json'",
          "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 an auth rejection",
              "passed": true,
              "message": "message=\"x-partner-key is required\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_020",
          "caseName": "Verify invalid JWT token",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:04.030Z",
          "endedAt": "2026-06-23T11:13:04.035Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer invalid.jwt.token"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13: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/v1/issuer-bajaj/ckyc-url' \\\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 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 an auth rejection",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_021",
          "caseName": "Verify expired JWT token",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:04.035Z",
          "endedAt": "2026-06-23T11:13:04.040Z",
          "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: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/v1/issuer-bajaj/ckyc-url' \\\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 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 an auth rejection",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_022",
          "caseName": "Verify malformed JWT token",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:04.040Z",
          "endedAt": "2026-06-23T11:13:04.044Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer corrupted-token-!!!"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13: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/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer corrupted-token-!!!'",
          "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 an auth rejection",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_023",
          "caseName": "Verify empty Authorization header",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:04.045Z",
          "endedAt": "2026-06-23T11:13:04.049Z",
          "durationMs": 4,
          "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: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": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "x-partner-key is required",
            "payload": {},
            "error": {
              "statusCode": 401,
              "message": "x-partner-key is required",
              "error": "Unauthorized"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json'",
          "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 an auth rejection",
              "passed": true,
              "message": "message=\"x-partner-key is required\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_025",
          "caseName": "Verify Bearer keyword missing",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:04.049Z",
          "endedAt": "2026-06-23T11:13:04.054Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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: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/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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 an auth rejection",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_026",
          "caseName": "Verify invalid Bearer format",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 401,
          "httpStatus": 401,
          "startedAt": "2026-06-23T11:13:04.054Z",
          "endedAt": "2026-06-23T11:13:04.131Z",
          "durationMs": 77,
          "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: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/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Basic dXNlcjpwYXNz'",
          "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 an auth rejection",
              "passed": true,
              "message": "message=\"Access Denied.\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_027",
          "caseName": "Verify request without Accept header",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:04.131Z",
          "endedAt": "2026-06-23T11:13:04.458Z",
          "durationMs": 327,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:04 GMT",
            "etag": "W/\"149-DeOdHNZGjFxaDVAMIBvKBeor4Bc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "325",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/sejGixYAwQVe~LVqMiCiUk4vUVg8vo8v6DQRkt9RvUj3MAIKrcUKmOUxd~kboNab9Ec5gRbriyrKv2pYQx7IHf27ymLo6n8e9kryJQWTI1GCl7YbtRMKuAN_08TNP6VbFi0l4jImeFxNjwClgKbR7oBjCI29Itl8Ry1SHyVw2HUqo~_RI35CeWYBYjpE1bQc?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Request without Accept header (acceptable per current API design)",
              "passed": true,
              "message": "Status 200 acceptable for Request without Accept header"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_028",
          "caseName": "Verify invalid Accept header",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:04.459Z",
          "endedAt": "2026-06-23T11:13:04.769Z",
          "durationMs": 310,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Accept": "application/x-invalid",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:04 GMT",
            "etag": "W/\"149-R0giDzbSZd1T6DTT0ztgVGULmYY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "307",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/gZ_K4i_RgD3yGmpqNFbalqnxsQcfivcOj9a0cN91047Et6cQHveHDwmGsij7z0Nq_nS3GrYtQZ4ZOSFE3ZaT4mrEVNm8~hk8GuU_5ALWc7~7NqpFWl3rAu~AUYzxOAzOh1jJDQhkUOD73h7tpJB8JKF1dYVMZhzUzN013QuyzKliSPjwG6BUldjN_42Xk9KG?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Accept: application/x-invalid' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Invalid Accept header (acceptable per current API design)",
              "passed": true,
              "message": "Status 200 acceptable for Invalid Accept header"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_029",
          "caseName": "Verify request from unsupported origin",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 400,
          "startedAt": "2026-06-23T11:13:04.769Z",
          "endedAt": "2026-06-23T11:13:04.774Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Origin": "https://malicious.example.com",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "content-length": "100",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:04 GMT",
            "etag": "W/\"64-unexnbgEYt5zAgSjb5Ia1Ano0Ug\"",
            "x-powered-by": "Express",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Not allowed by CORS",
            "payload": {},
            "error": "error occurred"
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Origin: https://malicious.example.com' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Unsupported Origin header (acceptable per current API design)",
              "passed": true,
              "message": "Status 400 acceptable for Unsupported Origin header"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_030",
          "caseName": "Verify invalid Referer header",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:04.774Z",
          "endedAt": "2026-06-23T11:13:05.100Z",
          "durationMs": 326,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Referer": "not-a-valid-referer",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:05 GMT",
            "etag": "W/\"149-y6n4jth6MnmmRhUzi71/4dgH9HE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "323",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/pC3Y29CugNzB77yWX3dYhHHiVwlFk8uYFaO9zdK0RLJazbVN6papDp~YBf5H8lrmHbT9VeGhy7ZT07oGne2u0zylBDsd6f~ImNPPWG0mlWF~LTNYmyDUcTSuR6A6D~d_J32M9oXUK4JClAgHfgmpq1h2UXXATiD82WspzwcV~UaUno~IcB5_8aqlo1ROyTyD?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Referer: not-a-valid-referer' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Invalid Referer header (acceptable per current API design)",
              "passed": true,
              "message": "Status 200 acceptable for Invalid Referer header"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_031",
          "caseName": "Verify HTTP method POST instead of GET",
          "service": "user-services",
          "method": "POST",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 405,
          "httpStatus": 404,
          "startedAt": "2026-06-23T11:13:05.100Z",
          "endedAt": "2026-06-23T11:13:05.106Z",
          "durationMs": 6,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:05 GMT",
            "etag": "W/\"be-SIVEc9jh1CA/c8JqxmMUFmrJ8vA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "3",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 404,
            "message": "Cannot POST /v1/issuer-bajaj/ckyc-url",
            "payload": {},
            "error": {
              "statusCode": 404,
              "message": "Cannot POST /v1/issuer-bajaj/ckyc-url",
              "error": "Not Found"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Unsupported HTTP method should be rejected",
              "passed": true,
              "message": "Method rejected with status 404"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_032",
          "caseName": "Verify HTTP method PUT",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 405,
          "httpStatus": 404,
          "startedAt": "2026-06-23T11:13:05.106Z",
          "endedAt": "2026-06-23T11:13:05.128Z",
          "durationMs": 22,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:05 GMT",
            "etag": "W/\"bc-ciSHun02okYgyjlHCjUbfaBNmFY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "19",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 404,
            "message": "Cannot PUT /v1/issuer-bajaj/ckyc-url",
            "payload": {},
            "error": {
              "statusCode": 404,
              "message": "Cannot PUT /v1/issuer-bajaj/ckyc-url",
              "error": "Not Found"
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Unsupported HTTP method should be rejected",
              "passed": true,
              "message": "Method rejected with status 404"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_033",
          "caseName": "Verify HTTP method DELETE",
          "service": "user-services",
          "method": "DELETE",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 405,
          "httpStatus": 404,
          "startedAt": "2026-06-23T11:13:05.129Z",
          "endedAt": "2026-06-23T11:13:05.133Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "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:05 GMT",
            "etag": "W/\"c2-AukO1N5EuQ1oEAs8vYKW5zlTMzs\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 404,
            "message": "Cannot DELETE /v1/issuer-bajaj/ckyc-url",
            "payload": {},
            "error": {
              "statusCode": 404,
              "message": "Cannot DELETE /v1/issuer-bajaj/ckyc-url",
              "error": "Not Found"
            }
          },
          "curl": "curl -X DELETE 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Unsupported HTTP method should be rejected",
              "passed": true,
              "message": "Method rejected with status 404"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_034",
          "caseName": "Verify HTTP method PATCH",
          "service": "user-services",
          "method": "PATCH",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "edge",
          "expectedStatus": 405,
          "httpStatus": 404,
          "startedAt": "2026-06-23T11:13:05.134Z",
          "endedAt": "2026-06-23T11:13:05.139Z",
          "durationMs": 5,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "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:13:05 GMT",
            "etag": "W/\"c0-TqxBAC6N+kutnsnyV6sTINCzIw0\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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 PATCH /v1/issuer-bajaj/ckyc-url",
            "payload": {},
            "error": {
              "statusCode": 404,
              "message": "Cannot PATCH /v1/issuer-bajaj/ckyc-url",
              "error": "Not Found"
            }
          },
          "curl": "curl -X PATCH 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Unsupported HTTP method should be rejected",
              "passed": true,
              "message": "Method rejected with status 404"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_035",
          "caseName": "Verify URL field datatype",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:05.139Z",
          "endedAt": "2026-06-23T11:13:05.441Z",
          "durationMs": 302,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:05 GMT",
            "etag": "W/\"149-VJWlrwuBy0YfhVSoySjFXhpS92A\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "300",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/CNnZzuRaNZOdOW_byjXllOnbC1xzQmozynjXtPdH1_QvpdUmIOQ8lK3qA5LFiMn5L5qu5PsjCWgNJPF8~S3OWW1gGZqkqDnH_cFC~VhXx1~WirmLLooc6LLXDF3jd_cER9DA_rVBxeE0OZ9xjLhq9o3yd6XUD~p88bO8lDi7Mwk_bdHXhHQk5X3yk~fTCJZw?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "payload.url should have the expected datatype",
              "passed": true,
              "message": "payload.url datatype OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_036",
          "caseName": "Verify payload datatype",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:05.442Z",
          "endedAt": "2026-06-23T11:13:05.758Z",
          "durationMs": 316,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:05 GMT",
            "etag": "W/\"149-Mk2OzWAfe7A33LGjfMQd7wpB43U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "314",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/lFTuuOVZKuPwO0907gRmuZlbFte62EnpGZJhUpHQFCnsj9NW7qIWzizjq7QoviTfKFgGZYzHbQgv_ZqCIoIbD0CqqhVBd7UePm6FS~VTrFx34DUeermwRvIFiHiZZkjxR2b5NFgfsdZ0oydMNnyVMp_pT_m1tiXKRKqT1nvVHVERAstKmtbKrzXsG1wDlCHr?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "payload should have the expected datatype",
              "passed": true,
              "message": "payload datatype OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_037",
          "caseName": "Verify success datatype",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:05.758Z",
          "endedAt": "2026-06-23T11:13:06.117Z",
          "durationMs": 359,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:06 GMT",
            "etag": "W/\"149-qYPKqvXnrFjikjEtaJlCBd1h4RU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "355",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/ltkRbo09Brv6FqHUbMzEtYtd3Ns6ROpbO8m0FX50Ji_xPt3BSImr2guDVbhqSe9H3X6MpwEkvAfo8zL49Smvbi6skHClIeDjtu_hiAO2lsctnY9kp155YD91itK9zvm2QUESyH1VewbVJ439pXaKwl2_~xve_iunHL_sG5fOezkScia3ajm_hMy_2h021Yy3?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "success should have the expected datatype",
              "passed": true,
              "message": "success datatype OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_038",
          "caseName": "Verify statusCode datatype",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:06.117Z",
          "endedAt": "2026-06-23T11:13:06.470Z",
          "durationMs": 353,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:06 GMT",
            "etag": "W/\"149-UStn+e3aEBgcrjjAr+pAKTKjblU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "350",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/tVa3wvVLcBb7YaCIja2KabTmZg5NYuG57r6kFt8FI8OUW3zWL6socPlfqcx9y7JMXH90nfG5FhFpWP1q1LgtgQrf9gl~jO2GfciL_6HiR8MyaIyKMq64hHzlv1XXuPTKGmbFMlmC~5wmsFWBiPo_4CE5H7Fh2T6T7yqUJv13FzVQLwJ~4USLznKq0FVXRjld?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "statusCode should have the expected datatype",
              "passed": true,
              "message": "statusCode datatype OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_039",
          "caseName": "Verify message datatype",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:06.470Z",
          "endedAt": "2026-06-23T11:13:06.947Z",
          "durationMs": 477,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:06 GMT",
            "etag": "W/\"149-qKfdXw/WRkzyq/g6Zlp4cyh5Zwo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "474",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/HN4J9_hPNLyI7GMWc~8HdITQ8FLMPp0KYP7G7~AdGspDmaAfPAPWjWLHbOvjrRZBRcFDxcFpxWwMP~q63EDGHGNT7_OXW7Ap7V7FlNK5E_aJnvqVX4JjRw~XAZLywr~8iWn~mPFIn4HS3CZhl5WV3NkIIxaRiwQmfX4N0yTEWhWdMuloZHi7OJE1szbR5Rdb?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "message should have the expected datatype",
              "passed": true,
              "message": "message datatype OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_040",
          "caseName": "Verify response contains no sensitive user information",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:06.947Z",
          "endedAt": "2026-06-23T11:13:07.414Z",
          "durationMs": 467,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:07 GMT",
            "etag": "W/\"149-UglIf3mvT+SCK0BSKT3Swz+lFTI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "464",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/Hr8VuCDrzq6Qt0zQ1kz9B610NHxSMmlW4oEeM~jqSSj0YEVPqrvEQNbxBo4VjHl3yjAmyJf0dPZgpZee4BkGDi4Yvz6KunhIbTyq_eMVih8GrcHICeeHBa~aAbHfUtGfaPq7EcnbmJysPEUGCWPyUln1jODV~EfyLm_ByaWuldpSiRsBu5U5D7VA_AJIjKBB?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Response should not expose PAN or mobile number",
              "passed": true,
              "message": "No PAN/mobile leakage in response body"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_041",
          "caseName": "Verify response does not expose JWT token",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:07.414Z",
          "endedAt": "2026-06-23T11:13:07.824Z",
          "durationMs": 410,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:07 GMT",
            "etag": "W/\"149-uXFThLMQaQIuznRAui5rTN/BuBY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "407",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/935ugIg2LygH7fibt4f9YOGpm~QC7Ka53hkiiOd2C6bCc1cnZMvQuwXeN4QFxKR13CUQ9VZHykYiTYz00ImsBHM5uaK19GyOgEmpqnIDppL0L7xHHUVIn7_pWnKz~Mb~T6q0FAVugkDabaqNLDH6UF1nOfqyBVc8qPXZwWeU7qwqoA0GwkQcxWpZr6WgVfMB?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Response should not expose the JWT access token",
              "passed": true,
              "message": "JWT token not present in response body"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_042",
          "caseName": "Verify URL contains encoded parameters",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:07.824Z",
          "endedAt": "2026-06-23T11:13:08.193Z",
          "durationMs": 369,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:08 GMT",
            "etag": "W/\"149-C3vtDkkaOeIT2+HQRH5VJYIOmdI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "365",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/45T4ia9F8QKmHpmRFkugUjYu7cFNOwW68unpPI5y7jIk5F6uceW1mVBqSYIpD4AzfSRYAw0ECEji2tila_5o3pDlLLFlhjMJtf6VuvgQubJ7RXpAx0Ofhqfaq5_~1Og0zs~wljzcIJGhuw9WYrkNBu679OHIv1RMeC7_hkvr6YRu94BeXak4LlPV_cDiq9I9?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Generated URL should contain query parameters",
              "passed": true,
              "message": "URL contains query parameters"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_043",
          "caseName": "Verify URL does not expose personal data in plain text",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:08.193Z",
          "endedAt": "2026-06-23T11:13:08.576Z",
          "durationMs": 383,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:08 GMT",
            "etag": "W/\"149-k5AXu8O3yXZBlVvM6rNRqZxyWZY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "380",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/aFltggQU2hDVmYCs2wx14oQbKAyGP0n3x9N75Y0tUzcOz0AL4P0fRzWCLfH~LzoEpR1D5Wfqq7x922Z5LwQ2hfB0LkU8w6IlONqy1b3Zf3qMOD0OADzNH46ACDhrUwUH1Y5IDZfZ1LBW~U6f0SFCet2HxGISZzPc2dXTkkaiLtnvyNrSEqf5wtANvqjT2j80?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Generated 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": "BAJ_CKYC_044",
          "caseName": "Verify SQL injection through headers",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:08.576Z",
          "endedAt": "2026-06-23T11:13:08.942Z",
          "durationMs": 366,
          "requestHeaders": {
            "Content-Type": "application/json",
            "X-QA-Test": "' OR '1'='1' --",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:08 GMT",
            "etag": "W/\"149-Fjf48d/jfVqOpL8hEENhOSGhgHo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "363",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/xHWvIlk16eRc6hXJAp_O2D6i2S77ljEEzraQaL_oS8e4BAuTSvypaZM9y84chouU4jSKXMwKJWtC4d2WlHrmcz3cUHIS8vHUXoQK7WgGLBYMuwIEztgiquqA9KCfz2AwaRPUcyfEiu4xQjmtDyI9QiBQtNhRXCkrURKhR9YQBAVya7fTFREqTr975fNXZaVK?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'X-QA-Test: '\\'' OR '\\''1'\\''='\\''1'\\'' --' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "SQL injection header should either be rejected or safely ignored",
              "passed": true,
              "message": "SQL injection header safely ignored by API"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_045",
          "caseName": "Verify XSS injection through headers",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:08.942Z",
          "endedAt": "2026-06-23T11:13:09.272Z",
          "durationMs": 330,
          "requestHeaders": {
            "Content-Type": "application/json",
            "X-QA-Test": "<script>alert(1)</script>",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:09 GMT",
            "etag": "W/\"149-Z+7dY4atZg0nDGbOkmqRjIvTFP8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "327",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/3kWOrKFgrbtC5FX71yC1t0VI7lIPws6KQN8K8BjmKw0nRlPhhsEFMCtUE6XJ9IDHYvzatyyhcQfCWCyqznyLKVjBk9MzxCA~ldUzkVSNlibJebkZwW4~g6RdHG7xByyKaYoBGI6lC9VtqdRb4EYt10dR93~h~3~wZYpg_p5YWmhIRr2q12Utm0iLoj65qjGk?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'X-QA-Test: <script>alert(1)</script>' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "XSS injection header should either be rejected or safely ignored",
              "passed": true,
              "message": "XSS injection header safely ignored by API"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_046",
          "caseName": "Verify HTML injection through headers",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:09.272Z",
          "endedAt": "2026-06-23T11:13:09.622Z",
          "durationMs": 350,
          "requestHeaders": {
            "Content-Type": "application/json",
            "X-QA-Test": "<img src=x onerror=alert(1)>",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:09 GMT",
            "etag": "W/\"149-sX2QqKMNzLfyQJgt20+D80DvC9U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "347",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/tKPuCAiYOhFE0f5FvXDjYKjHO5vhGI0TjkPwgN0TrVhMgF9hRibX9PRa5lxcGxEkqid1vkvNgGrDuXg9L91c1z2hSKsloqHPURwOk2UN6Hjsx62S~MqaCcXrLF4H5XtcFbfSwppqA6Fr_fY7R2BoO0V19lnjXFx~yWHOq7gN~LaoCDa1tajc3WZLtz93AqFh?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'X-QA-Test: <img src=x onerror=alert(1)>' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "HTML injection header should either be rejected or safely ignored",
              "passed": true,
              "message": "HTML injection header safely ignored by API"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_047",
          "caseName": "Verify header tampering attack",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "negative",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:09.622Z",
          "endedAt": "2026-06-23T11:13:09.970Z",
          "durationMs": 348,
          "requestHeaders": {
            "Content-Type": "application/json",
            "X-Forwarded-For": "127.0.0.1, malicious.example.com",
            "X-Forwarded-Host": "malicious.example.com",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:09 GMT",
            "etag": "W/\"149-DWfENJEZVCCWubAx6VJKp1KIX4U\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "345",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/65_FasT6BjD5TYQP39HGxS9ku8APWUPRMvh4h6CVBhzYGKjQedRBjbESfE5149i2IWtog3mVXDBLibMdRsnSLXorfVtGxsMWHTVnyLi2bAaoCx0V8RkVr6oBhtGkzivNJaz6NBsuzdfCF66LgMTPhXwXmKou2jJhVvgGnzW~d0cgMPpJmVe3tQmdpHKFzCVb?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Header tampering should either be rejected or safely ignored",
              "passed": true,
              "message": "Header tampering safely ignored by API"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_048",
          "caseName": "Verify response header validation",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:09.970Z",
          "endedAt": "2026-06-23T11:13:10.309Z",
          "durationMs": 339,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:10 GMT",
            "etag": "W/\"149-ULIL6iKt+J4XOAs6Q0/4VubqU6E\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/vHXyMP3saxy4xpxngs7tIiXWb450VFad4Eg56_8B74Ga0ZQa60LoOY6CD_a_dq4PynBU99PgHj6XuaLHdKELRucLxKmIMkMnF5iiW2Ap4oR0JW2hzD4nojNndGsT9imDu0pe1_8GscEns~hb6uX4_Uyi3W4OPJJRwbAt3wkK~aZNVoIR3QzxQq6btfg6b9dY?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Required response headers should be present",
              "passed": true,
              "message": "Required response headers present"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_051",
          "caseName": "Verify API availability",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:10.309Z",
          "endedAt": "2026-06-23T11:13:10.643Z",
          "durationMs": 334,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:10 GMT",
            "etag": "W/\"149-4Wd5luxFutHwHSha/FS/OzVNjVo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/EPsfizlk6Es5QpWs3wqXy3rh0P6aHiX8G9xZ2RauJWC0PnoPvMW9d9bgpmJxxtjj0bBCIbpzoJmVrQcyhUYbfCpqXSN_Y_TQQv_LwleYzDYj0_8E19xzMAcKw0igGeEXYGh2TjywrEg9D4N4TfVLVAjjuIoD2t_0O~TFuQZafd8dWhn4KabwH9In5F32fS5P?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            },
            {
              "description": "Body statusCode should be 200",
              "passed": true,
              "message": "statusCode=200"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_054",
          "caseName": "Verify repeated requests with same token",
          "service": "user-services",
          "method": "GET",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:10.643Z",
          "endedAt": "2026-06-23T11:13:10.967Z",
          "durationMs": 324,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "329",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:10 GMT",
            "etag": "W/\"149-rQ90vr9e9KubnKbN2LntTRyzQug\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "321",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "url": "https://pods-staging.bajajfinserv.in/kpod/uiv4/kyc/index/Oy1d9_aJhyWI1kTWFLDFQ5P4Y5MCprntvMXWrdRpznG0pyml1u6KzXSBJhdIq7pG0OZ3wUyYwmUxK4oYbNzKhtyBlI3tVSpHI4_vQVszWjLlkjTfNc2hpkACvs4JrSDIknq~rCSaS9nr1kxrbwV4PWMJGsbdC2IJSKYOoMPLrvJ20V8zLo6VdQQfuQpsVpHV?mode=URL"
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/ckyc-url' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            },
            {
              "description": "Response success flag should be 1",
              "passed": true,
              "message": "success=1"
            },
            {
              "description": "Body statusCode should be 200",
              "passed": true,
              "message": "statusCode=200"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_061",
          "caseName": "Save Bajaj address for issuer-side readiness",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/v1/issuer-bajaj/user/address",
          "status": "passed",
          "scenarioType": "static",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:10.967Z",
          "endedAt": "2026-06-23T11:13:11.071Z",
          "durationMs": 104,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "addressLine1": "QA Address Line 1",
            "addressLine2": "QA Address Line 2",
            "city": "Mumbai",
            "state": "Maharashtra",
            "pincode": "400001",
            "sub_district": "Mumbai",
            "street": "QA Street",
            "country": "India",
            "gender": "M",
            "fd_info": {
              "amount": 50000,
              "tenure": 12,
              "payout_frequency": "maturity",
              "issuer_code": "BAJ"
            }
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "2003",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:11 GMT",
            "etag": "W/\"7d3-uSlM8HnOAgFb5y82EfTvprXcQ5I\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": [
              {
                "success": 1,
                "statusCode": 201,
                "message": "User Updated",
                "payload": {
                  "createdAt": "2026-06-23T11:12:30.000Z",
                  "updatedAt": "2026-06-23T11:13:11.000Z",
                  "deleted_at": null,
                  "createdBy": null,
                  "updatedBy": null,
                  "deletedBy": null,
                  "isActive": true,
                  "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                  "profile_photo": null,
                  "profile_photo_file_name": null,
                  "pan": "249a22814bf213a7ff2e68cfa58da9d3:c7ffdd78ce0e0d9c1095a78979a7040d",
                  "email": "qa.user@fixerra.in",
                  "password": "",
                  "sub_account": "",
                  "gender": "M",
                  "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:12:30.545Z",
                  "user_deactivation_date": "",
                  "custodial_account": "",
                  "occupation": "Public Sector",
                  "annual_income": "Upto 5L Per Annum",
                  "user_tax_status": "",
                  "father_name": "QA FATHER",
                  "is_pan_verified": false,
                  "manual_pan_verified": null,
                  "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": "QA",
                  "kin_middle_name": "",
                  "kin_last_name": "FATHER",
                  "marital_status": "Unmarried",
                  "kapture_id": "",
                  "user_aadhaar_verification_date": null,
                  "user_pan_verification_date": "2026-06-23T11:12:46.000Z",
                  "user_nominee_update_date": null,
                  "user_bank_account_update_date": null,
                  "user_email_verification_date": "2026-06-23T11:12:53.000Z",
                  "profile_updated_at": "2026-06-23T11:13:11.040Z",
                  "mother_name": "QA MOTHER",
                  "education": "Graduate",
                  "source_of_income": "Salary",
                  "is_broker": false,
                  "is_aadhaar_xml_present": false,
                  "created_at_ist": "2026-06-23T16:42:30.000Z",
                  "is_pan_consent_checked": false,
                  "pan_consent_checked_date": "2026-06-23T16:42:45.000Z"
                }
              },
              {
                "success": true
              }
            ]
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/v1/issuer-bajaj/user/address' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"addressLine1\":\"QA Address Line 1\",\"addressLine2\":\"QA Address Line 2\",\"city\":\"Mumbai\",\"state\":\"Maharashtra\",\"pincode\":\"400001\",\"sub_district\":\"Mumbai\",\"street\":\"QA Street\",\"country\":\"India\",\"gender\":\"M\",\"fd_info\":{\"amount\":50000,\"tenure\":12,\"payout_frequency\":\"maturity\",\"issuer_code\":\"BAJ\"}}'",
          "validations": [
            {
              "description": "Response status should be 200 or 201",
              "passed": true,
              "message": "Status 200"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_062",
          "caseName": "Save verified bank account for fresh user (Bajaj)",
          "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:11.072Z",
          "endedAt": "2026-06-23T11:13:11.139Z",
          "durationMs": 67,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "account": "10076324285",
            "ifsc": "IDFB0040112",
            "account_holder_full_name": "QA Test User",
            "consent_checked": true,
            "fd_info": "{\"issuer\":{\"f_code\":\"BAJ\"}}"
          },
          "requestQuery": {
            "issuer_code": "BAJ",
            "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:11 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": "64",
            "server": "envoy"
          },
          "responseBody": {
            "verified": true
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/v2/signzy/bank?issuer_code=BAJ&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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"account\":\"10076324285\",\"ifsc\":\"IDFB0040112\",\"account_holder_full_name\":\"QA Test User\",\"consent_checked\":true,\"fd_info\":\"{\\\"issuer\\\":{\\\"f_code\\\":\\\"BAJ\\\"}}\"}'",
          "validations": [
            {
              "description": "Bank save should succeed (200/201, verified)",
              "passed": true,
              "message": "Bank saved (HTTP 201)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_CKYC_063",
          "caseName": "Get bank accounts for Bajaj 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:11.140Z",
          "endedAt": "2026-06-23T11:13:11.200Z",
          "durationMs": 60,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {
            "decrypt": "true",
            "page_name": "review_bank",
            "issuer_code": "BAJ"
          },
          "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:11 GMT",
            "etag": "W/\"1c9-sclSkpS90gATfW2xH4vFVR+f6dY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "56",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_bank_id": "9efbf426-4e1d-4e26-b129-aa2721ef9c61",
                "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=BAJ' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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:11.200Z",
          "endedAt": "2026-06-23T11:13:11.232Z",
          "durationMs": 32,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:11 GMT",
            "etag": "W/\"2d6-/dvX0RjN0RwiG2wsX8XQokER+40\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 70481,
                "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_bank_id": "9efbf426-4e1d-4e26-b129-aa2721ef9c61",
                "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:11.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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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:11.232Z",
          "endedAt": "2026-06-23T11:13:11.331Z",
          "durationMs": 99,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:11 GMT",
            "etag": "W/\"2d6-/dvX0RjN0RwiG2wsX8XQokER+40\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 70481,
                "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_bank_id": "9efbf426-4e1d-4e26-b129-aa2721ef9c61",
                "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:11.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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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:11.331Z",
          "endedAt": "2026-06-23T11:13:11.431Z",
          "durationMs": 100,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:11 GMT",
            "etag": "W/\"2d6-/dvX0RjN0RwiG2wsX8XQokER+40\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": [
              {
                "id": 70481,
                "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_bank_id": "9efbf426-4e1d-4e26-b129-aa2721ef9c61",
                "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:11.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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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:11.431Z",
          "endedAt": "2026-06-23T11:13:11.463Z",
          "durationMs": 32,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:11 GMT",
            "etag": "W/\"316-TC/ctJzY8c2zhKN79AhsldZ5tj0\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": [
              {
                "id": 70481,
                "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_bank_id": "9efbf426-4e1d-4e26-b129-aa2721ef9c61",
                "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:11.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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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:11.463Z",
          "endedAt": "2026-06-23T11:13:11.494Z",
          "durationMs": 31,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:11 GMT",
            "etag": "W/\"316-TC/ctJzY8c2zhKN79AhsldZ5tj0\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 70481,
                "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_bank_id": "9efbf426-4e1d-4e26-b129-aa2721ef9c61",
                "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:11.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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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:11.494Z",
          "endedAt": "2026-06-23T11:13:11.639Z",
          "durationMs": 145,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:11 GMT",
            "etag": "W/\"1cf-0oF+z9CvzDEnKb+nkRda+gRAygs\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": [
              {
                "f_user_bank_id": "9efbf426-4e1d-4e26-b129-aa2721ef9c61",
                "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": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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:11.640Z",
          "endedAt": "2026-06-23T11:13:11.681Z",
          "durationMs": 41,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:11 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' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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:11.681Z",
          "endedAt": "2026-06-23T11:13:11.805Z",
          "durationMs": 124,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:11 GMT",
            "etag": "W/\"1cf-0oF+z9CvzDEnKb+nkRda+gRAygs\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "121",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "f_user_bank_id": "9efbf426-4e1d-4e26-b129-aa2721ef9c61",
                "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": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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:11.805Z",
          "endedAt": "2026-06-23T11:13:11.859Z",
          "durationMs": 54,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:11 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": "50",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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:11.859Z",
          "endedAt": "2026-06-23T11:13:11.873Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:11 GMT",
            "etag": "W/\"2df-itMTJVkxxHsVL2TvzjHF6syk00E\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 70481,
                "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_bank_id": "9efbf426-4e1d-4e26-b129-aa2721ef9c61",
                "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:11.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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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:11.873Z",
          "endedAt": "2026-06-23T11:13:11.881Z",
          "durationMs": 8,
          "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:11 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'",
          "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:11.881Z",
          "endedAt": "2026-06-23T11:13:11.931Z",
          "durationMs": 50,
          "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:11 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 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:11.931Z",
          "endedAt": "2026-06-23T11:13:11.936Z",
          "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:11 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 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": 64,
        "passed": 64,
        "failed": 0,
        "skipped": 0,
        "running": 0,
        "pending": 0,
        "durationMs": 15479
      }
    },
    {
      "stepId": "step-08-nominee",
      "stepName": "Nominee",
      "cases": [
        {
          "caseId": "BAJ_NOMINEE_001",
          "caseName": "Get existing nominees (BAJ)",
          "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:13:11.936Z",
          "endedAt": "2026-06-23T11:13:12.030Z",
          "durationMs": 94,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:11 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": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": []
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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": "BAJ_NOMINEE_002",
          "caseName": "Create valid adult nominee (BAJ)",
          "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:13:12.031Z",
          "endedAt": "2026-06-23T11:13:12.066Z",
          "durationMs": 35,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:12 GMT",
            "etag": "W/\"206-OkUghLL5FSgXQPtspClhQagdJL0\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "32",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": true,
              "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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": 10786,
              "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
              "created_at": "2026-06-23T11:13:12.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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/3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:12.066Z",
          "endedAt": "2026-06-23T11:13:12.085Z",
          "durationMs": 19,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:12 GMT",
            "etag": "W/\"27c-vuxshYztw/PxYMp3Em2MjZIb5FY\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "User already exists.",
            "payload": {
              "is_default": true,
              "id": 10786,
              "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
              "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:13:12.000Z",
              "guardian_dob": "",
              "guardian_relation": "",
              "guardian_salutation": "",
              "guardian_pan": "",
              "deleted_at": null
            }
          },
          "curl": "curl -X GET 'https://users-api.dev.fixerra.in/user-nominee/3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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": "BAJ_NOMINEE_004",
          "caseName": "Update nominee relation by id",
          "service": "user-services",
          "method": "PUT",
          "url": "https://users-api.dev.fixerra.in/user-nominee/3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:12.085Z",
          "endedAt": "2026-06-23T11:13:12.149Z",
          "durationMs": 64,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "nominee_relation": "Mother",
            "nominee_salutation": "MRS"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:12 GMT",
            "etag": "W/\"270-6K+4MVHNWevzIJCsb1j1LPgyVW4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "SUCCESS",
            "payload": {
              "is_default": true,
              "id": 10786,
              "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
              "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:13:12.000Z",
              "guardian_dob": "",
              "guardian_relation": "",
              "guardian_salutation": "",
              "guardian_pan": "",
              "deleted_at": null
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user-nominee/3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:12.149Z",
          "endedAt": "2026-06-23T11:13:12.236Z",
          "durationMs": 87,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:12 GMT",
            "etag": "W/\"263-uZ2feiut9uejuuMXcuIszoCKQqQ\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "84",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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": 10787,
              "f_user_nominee_id": "48ecb476-9e8f-414e-8cfd-ef6d5a9ecc68",
              "created_at": "2026-06-23T11:13:12.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_NOMINEE_006",
          "caseName": "Delete nominee by id (cleanup minor nominee)",
          "service": "user-services",
          "method": "DELETE",
          "url": "https://users-api.dev.fixerra.in/user-nominee/48ecb476-9e8f-414e-8cfd-ef6d5a9ecc68",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:12.236Z",
          "endedAt": "2026-06-23T11:13:12.355Z",
          "durationMs": 119,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:12 GMT",
            "etag": "W/\"2ae-cmtGjOFjFGIbnyjXi4eSvN1co0w\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 200,
            "message": "SUCCESS",
            "payload": {
              "is_default": false,
              "id": 10787,
              "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "f_user_nominee_id": "48ecb476-9e8f-414e-8cfd-ef6d5a9ecc68",
              "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:13:12.000Z",
              "guardian_dob": "1990-04-15T00:00:00.000Z",
              "guardian_relation": "Father",
              "guardian_salutation": "MR",
              "guardian_pan": "",
              "deleted_at": "2026-06-23T11:13:12.343Z"
            }
          },
          "curl": "curl -X DELETE 'https://users-api.dev.fixerra.in/user-nominee/48ecb476-9e8f-414e-8cfd-ef6d5a9ecc68?f_code=BAJ' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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": "BAJ_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:13:12.355Z",
          "endedAt": "2026-06-23T11:13:12.368Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:13:12 GMT",
            "etag": "W/\"272-V3SyTmaLp4alTlCqEB4lMz+DDdM\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "is_default": true,
                "id": 10786,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
                "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:13:12.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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:13:12.368Z",
          "endedAt": "2026-06-23T11:13:12.384Z",
          "durationMs": 16,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:13:12 GMT",
            "etag": "W/\"272-V3SyTmaLp4alTlCqEB4lMz+DDdM\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "13",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "is_default": true,
                "id": 10786,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
                "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:13:12.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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Response status should be 200",
              "passed": true,
              "message": "Status 200 OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:13:12.384Z",
          "endedAt": "2026-06-23T11:13:12.449Z",
          "durationMs": 65,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:12 GMT",
            "etag": "W/\"208-LmR555svpYNstudTIqmsMmyMpho\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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": 10788,
              "f_user_nominee_id": "72ac0711-ee61-4b75-9ec8-ef06f5725da3",
              "created_at": "2026-06-23T11:13:12.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_NOMINEE_010",
          "caseName": "Delete legacy-route nominee (cleanup)",
          "service": "user-services",
          "method": "DELETE",
          "url": "https://users-api.dev.fixerra.in/user-nominee/72ac0711-ee61-4b75-9ec8-ef06f5725da3",
          "status": "passed",
          "scenarioType": "positive",
          "expectedStatus": 200,
          "httpStatus": 200,
          "startedAt": "2026-06-23T11:13:12.449Z",
          "endedAt": "2026-06-23T11:13:12.563Z",
          "durationMs": 114,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:12 GMT",
            "etag": "W/\"287-ZgvMKTCThq+FEsRw6YK2C5+xbTw\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "111",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": {
              "is_default": false,
              "id": 10788,
              "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "f_user_nominee_id": "72ac0711-ee61-4b75-9ec8-ef06f5725da3",
              "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:13:12.000Z",
              "guardian_dob": "",
              "guardian_relation": "",
              "guardian_salutation": "",
              "guardian_pan": "",
              "deleted_at": "2026-06-23T11:13:12.552Z"
            }
          },
          "curl": "curl -X DELETE 'https://users-api.dev.fixerra.in/user-nominee/72ac0711-ee61-4b75-9ec8-ef06f5725da3?f_code=BAJ' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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": "BAJ_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:13:12.563Z",
          "endedAt": "2026-06-23T11:13:12.588Z",
          "durationMs": 25,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:12 GMT",
            "etag": "W/\"208-OW4UrNI6nyt/d5k87fj7CZBxQ0g\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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": 10789,
              "f_user_nominee_id": "86f3b8b7-b43c-425e-86bd-81be81b87c4e",
              "created_at": "2026-06-23T11:13:12.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:12.588Z",
          "endedAt": "2026-06-23T11:13:12.638Z",
          "durationMs": 50,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:12 GMT",
            "etag": "W/\"207-6IsRMcIm3Bs6tx46kYkBRlFT01M\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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": 10790,
              "f_user_nominee_id": "e396bb1d-a58e-4def-b851-9b7e9e71283a",
              "created_at": "2026-06-23T11:13:12.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:12.638Z",
          "endedAt": "2026-06-23T11:13:12.734Z",
          "durationMs": 96,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:12 GMT",
            "etag": "W/\"208-3Sy8B22acLCv6h5jsAdfmIpU+s0\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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": 10791,
              "f_user_nominee_id": "6fcf0f42-a4c0-43b5-ab4b-ffadef6c4dae",
              "created_at": "2026-06-23T11:13:12.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:12.734Z",
          "endedAt": "2026-06-23T11:13:12.761Z",
          "durationMs": 27,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:12 GMT",
            "etag": "W/\"248-bAqMwLJ2XUTEgl9ex/eIUUVRwNI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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": 10792,
              "f_user_nominee_id": "30da0c7d-c55f-4ae6-8eb5-4679d80f588b",
              "created_at": "2026-06-23T11:13:12.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:12.761Z",
          "endedAt": "2026-06-23T11:13:12.827Z",
          "durationMs": 66,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:12 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": "63",
            "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:12.827Z",
          "endedAt": "2026-06-23T11:13:12.839Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:12 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 POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:12.839Z",
          "endedAt": "2026-06-23T11:13:12.850Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:12 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 POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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": "BAJ_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:13:12.850Z",
          "endedAt": "2026-06-23T11:13:12.861Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:12 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": "8",
            "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:12.861Z",
          "endedAt": "2026-06-23T11:13:12.927Z",
          "durationMs": 66,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:12 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": "62",
            "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:12.927Z",
          "endedAt": "2026-06-23T11:13:12.939Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:12 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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:12.939Z",
          "endedAt": "2026-06-23T11:13:12.950Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:12 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/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:12.950Z",
          "endedAt": "2026-06-23T11:13:12.961Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:12 GMT",
            "etag": "W/\"ca-eiW3jCKud9aQN9u5BBubRqxLIjc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1072",
                "error": "Please enter a valid nominee DOB (YYYY-MM-DD)"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:12.961Z",
          "endedAt": "2026-06-23T11:13:12.972Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:12 GMT",
            "etag": "W/\"c2-ue3VX43dASmbpm+YepGpr2KuIH4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1094",
                "error": "Date of birth cannot be in the future"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:12.972Z",
          "endedAt": "2026-06-23T11:13:13.036Z",
          "durationMs": 64,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13 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": "61",
            "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.036Z",
          "endedAt": "2026-06-23T11:13:13.049Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:13 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": "7",
            "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.049Z",
          "endedAt": "2026-06-23T11:13:13.061Z",
          "durationMs": 12,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {},
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:13 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": "9",
            "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{}'",
          "validations": [
            {
              "description": "Response status should be 400",
              "passed": true,
              "message": "Status 400 OK"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": [
            "FIXUSER1072",
            "FIXUSER1071",
            "FIXUSER1077"
          ]
        },
        {
          "caseId": "BAJ_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:13:13.061Z",
          "endedAt": "2026-06-23T11:13:13.127Z",
          "durationMs": 66,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:13 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": "62",
            "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 200 (no server error)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:13:13.127Z",
          "endedAt": "2026-06-23T11:13:13.150Z",
          "durationMs": 23,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "nominee_relation": "Mother"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "20",
            "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.150Z",
          "endedAt": "2026-06-23T11:13:13.201Z",
          "durationMs": 51,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13 GMT",
            "etag": "W/\"4e-jJoCB7/P3I7O4rrtna0ZK3HRrrc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "47",
            "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=BAJ' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "validations": [
            {
              "description": "Should not return a 5xx server error",
              "passed": true,
              "message": "HTTP 400 (no server error)"
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:13:13.201Z",
          "endedAt": "2026-06-23T11:13:13.207Z",
          "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:13:13 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-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": "BAJ_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:13:13.208Z",
          "endedAt": "2026-06-23T11:13:13.212Z",
          "durationMs": 4,
          "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:13:13 GMT",
            "etag": "W/\"a9-ra1+G8sgf4WPH3Nd3PzEHUQT2fc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "x-partner-key is required",
            "payload": {},
            "error": {
              "statusCode": 401,
              "message": "x-partner-key is required",
              "error": "Unauthorized"
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"first_name\":\"Ramesh\",\"middle_name\":\"\",\"last_name\":\"Kumar\",\"nominee_pan\":\"\",\"nominee_dob\":\"1990-04-15\",\"nominee_relation\":\"Father\",\"nominee_salutation\":\"MR\",\"is_default\":true}'",
          "validations": [
            {
              "description": "Should reject with 401 auth error",
              "passed": true,
              "message": "401 \"x-partner-key is required\""
            }
          ],
          "expectedErrorCodes": [],
          "actualErrorCodes": []
        },
        {
          "caseId": "BAJ_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:13:13.213Z",
          "endedAt": "2026-06-23T11:13:13.217Z",
          "durationMs": 4,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer invalid.jwt.token"
          },
          "requestQuery": {},
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "136",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:13 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "2",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 401,
            "message": "Access Denied.",
            "payload": {},
            "error": {
              "success": 0,
              "statusCode": 401,
              "message": "Access Denied."
            }
          },
          "curl": "curl -X 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": "BAJ_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:13:13.217Z",
          "endedAt": "2026-06-23T11:13:13.229Z",
          "durationMs": 12,
          "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:13 GMT",
            "etag": "W/\"88-8WLI+48VcsWgPO49PKC75cQhUwU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "8",
            "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": "BAJ_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:13:13.229Z",
          "endedAt": "2026-06-23T11:13:13.256Z",
          "durationMs": 27,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "full_name": "John A Doe",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:13 GMT",
            "etag": "W/\"206-OewFU8ibga8pFbojy0JwzlYeYb8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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": 10793,
              "f_user_nominee_id": "ab523580-b8d1-4426-9e49-d51d5f529b4c",
              "created_at": "2026-06-23T11:13:13.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.256Z",
          "endedAt": "2026-06-23T11:13:13.281Z",
          "durationMs": 25,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "full_name": "Madonna",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:13 GMT",
            "etag": "W/\"206-ZwRP7moqB+cdgNivgzFbXb0Q2Wg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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": 10794,
              "f_user_nominee_id": "6aab1e38-cc22-48aa-8768-3b3fb140b179",
              "created_at": "2026-06-23T11:13:13.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.281Z",
          "endedAt": "2026-06-23T11:13:13.334Z",
          "durationMs": 53,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "full_name": "John2 Doe",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:13 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": "49",
            "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.334Z",
          "endedAt": "2026-06-23T11:13:13.351Z",
          "durationMs": 17,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "full_name": ".",
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:13 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": "13",
            "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.351Z",
          "endedAt": "2026-06-23T11:13:13.441Z",
          "durationMs": 90,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "nominee_dob": "1990-04-15",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:13 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": "87",
            "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.441Z",
          "endedAt": "2026-06-23T11:13:13.454Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:13 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": "9",
            "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.454Z",
          "endedAt": "2026-06-23T11:13:13.464Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:13 GMT",
            "etag": "W/\"c3-X/VCKSzEyRS2kQq2r3JvtQMi7nA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1356",
                "error": "Please enter a valid nominee last name"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.465Z",
          "endedAt": "2026-06-23T11:13:13.535Z",
          "durationMs": 70,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:13 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": "67",
            "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.535Z",
          "endedAt": "2026-06-23T11:13:13.562Z",
          "durationMs": 27,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:13 GMT",
            "etag": "W/\"227-sCmzxBRMWUDAFbuZXeAtlU4/Xr4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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": 10795,
              "f_user_nominee_id": "ddcfd7fa-c2ee-402d-9e61-3b9687ea6165",
              "created_at": "2026-06-23T11:13:13.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.562Z",
          "endedAt": "2026-06-23T11:13:13.631Z",
          "durationMs": 69,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:13 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": "8",
            "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.631Z",
          "endedAt": "2026-06-23T11:13:13.665Z",
          "durationMs": 34,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:13 GMT",
            "etag": "W/\"233-OA2ReZyhFgxpfSVPHW2Bxq52YBc\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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": 10796,
              "f_user_nominee_id": "12536745-81e1-4068-a017-56b266b171ef",
              "created_at": "2026-06-23T11:13:13.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.665Z",
          "endedAt": "2026-06-23T11:13:13.728Z",
          "durationMs": 63,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13 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": "59",
            "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.728Z",
          "endedAt": "2026-06-23T11:13:13.738Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:13 GMT",
            "etag": "W/\"c0-4Kbf/SiUHV6/UZ/WEtYqXa6sxh4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "7",
            "server": "envoy"
          },
          "responseBody": {
            "success": 0,
            "statusCode": 400,
            "message": "Bad request",
            "payload": {},
            "error": [
              {
                "f_error_reason": "",
                "f_error_message": "",
                "errorCode": "FIXUSER1077",
                "error": "Nominee salutation should be string"
              }
            ]
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?f_code=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.738Z",
          "endedAt": "2026-06-23T11:13:13.754Z",
          "durationMs": 16,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "first_name": "Minor",
            "last_name": "Kumar",
            "nominee_dob": "2015-01-01",
            "nominee_relation": "Father",
            "nominee_salutation": "MR",
            "is_default": false
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:13 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": "13",
            "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.754Z",
          "endedAt": "2026-06-23T11:13:13.767Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:13 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": "9",
            "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.767Z",
          "endedAt": "2026-06-23T11:13:13.856Z",
          "durationMs": 89,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:13 GMT",
            "etag": "W/\"20a-N5kA5yV/YyW9shPfFRT9S4ehZrE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "87",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": true,
              "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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": 10797,
              "f_user_nominee_id": "a970a8dd-d1fd-4394-9669-50f1312e3ba9",
              "created_at": "2026-06-23T11:13:13.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.856Z",
          "endedAt": "2026-06-23T11:13:13.929Z",
          "durationMs": 73,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:13 GMT",
            "etag": "W/\"16ad-tLrTpSGq5StNTkWi2lhTiR1AAt8\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "is_default": false,
                "id": 10793,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "ab523580-b8d1-4426-9e49-d51d5f529b4c",
                "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:13:13.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10794,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "6aab1e38-cc22-48aa-8768-3b3fb140b179",
                "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:13:13.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10795,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "ddcfd7fa-c2ee-402d-9e61-3b9687ea6165",
                "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:13:13.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10796,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "12536745-81e1-4068-a017-56b266b171ef",
                "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:13:13.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": true,
                "id": 10797,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "a970a8dd-d1fd-4394-9669-50f1312e3ba9",
                "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:13:13.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10786,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
                "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:13:12.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10789,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "86f3b8b7-b43c-425e-86bd-81be81b87c4e",
                "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:13:12.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10790,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "e396bb1d-a58e-4def-b851-9b7e9e71283a",
                "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:13:12.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10791,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "6fcf0f42-a4c0-43b5-ab4b-ffadef6c4dae",
                "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:13:12.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10792,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "30da0c7d-c55f-4ae6-8eb5-4679d80f588b",
                "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:13:12.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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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": "BAJ_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:13:13.929Z",
          "endedAt": "2026-06-23T11:13:13.957Z",
          "durationMs": 28,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:13 GMT",
            "etag": "W/\"209-gIhAqwcl2w/FFsuQrARTfY8g3w4\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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": 10798,
              "f_user_nominee_id": "86d5143c-a23c-448e-b2bd-dd39390afa6e",
              "created_at": "2026-06-23T11:13:13.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:13.957Z",
          "endedAt": "2026-06-23T11:13:14.041Z",
          "durationMs": 84,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:14 GMT",
            "etag": "W/\"24a-qVnjRGwzbqT3dcmZdGCI0+Bgvfg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "80",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "Nominee created successfully",
            "payload": {
              "is_default": false,
              "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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": 10799,
              "f_user_nominee_id": "baaeff2b-74c0-437a-9324-d38b807b972e",
              "created_at": "2026-06-23T11:13:14.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:14.041Z",
          "endedAt": "2026-06-23T11:13:14.068Z",
          "durationMs": 27,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "BAJ"
          },
          "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:13:14 GMT",
            "etag": "W/\"20b-AkBcIxXiGz22y09LXaXzjbditlo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "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": 10800,
              "f_user_nominee_id": "a6936abe-5a77-498b-8779-e712c493a0ed",
              "created_at": "2026-06-23T11:13:14.000Z",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/api/v1/user-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:14.068Z",
          "endedAt": "2026-06-23T11:13:14.128Z",
          "durationMs": 60,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "responseHeaders": {
            "cache-control": "no-store, no-cache, max-age=604800, must-revalidate, private",
            "content-length": "5812",
            "content-security-policy": "default-src 'self'",
            "content-type": "application/json; charset=utf-8",
            "date": "Tue, 23 Jun 2026 11:13:14 GMT",
            "etag": "W/\"16b4-ZCd4ZkemHcNy4liha0H0EoAA0Yg\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "57",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "is_default": false,
                "id": 10800,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "a6936abe-5a77-498b-8779-e712c493a0ed",
                "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:13:14.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10799,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "baaeff2b-74c0-437a-9324-d38b807b972e",
                "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:13:14.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10793,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "ab523580-b8d1-4426-9e49-d51d5f529b4c",
                "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:13:13.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10794,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "6aab1e38-cc22-48aa-8768-3b3fb140b179",
                "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:13:13.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10795,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "ddcfd7fa-c2ee-402d-9e61-3b9687ea6165",
                "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:13:13.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10796,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "12536745-81e1-4068-a017-56b266b171ef",
                "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:13:13.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": true,
                "id": 10797,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "a970a8dd-d1fd-4394-9669-50f1312e3ba9",
                "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:13:13.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10798,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "86d5143c-a23c-448e-b2bd-dd39390afa6e",
                "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:13:13.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10786,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
                "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:13:12.000Z",
                "guardian_dob": "",
                "guardian_relation": "",
                "guardian_salutation": "",
                "guardian_pan": "",
                "deleted_at": null
              },
              {
                "is_default": false,
                "id": 10789,
                "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "86f3b8b7-b43c-425e-86bd-81be81b87c4e",
                "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:13:12.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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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": "BAJ_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:13:14.128Z",
          "endedAt": "2026-06-23T11:13:14.134Z",
          "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:14 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": "BAJ_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": "BAJ_NOMINEE_ADDR_001",
          "caseName": "Create address for nominee (BAJ)",
          "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:13:14.134Z",
          "endedAt": "2026-06-23T11:13:14.162Z",
          "durationMs": 28,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
            "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": "BAJ"
          },
          "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:13:14 GMT",
            "etag": "W/\"27c-6Mto8DiYnc5SBB72+9e2nSoz9MU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": "CREATED",
            "payload": {
              "is_default": false,
              "same_as_user": false,
              "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
              "line2": "Near Test Lane",
              "state": "MAHARASHTRA",
              "country": "INDIA",
              "address_type": "PERMANENT",
              "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "address_object": "249a22814bf213a7ff2e68cfa58da9d3:7d8f7e7d160711318ed98e9451a3396d1ea9dad6b6ab7c5edcb46bd350dd054cdc9ba7cd39664363c47a604e01361097c88203ec3381ed2955464f7d5d584325389d26ca93cc93cacfc91b26b10731ea13576e0f0f109583c9356d1b139de5c5",
              "id": 5134,
              "f_user_address_id": "3a6c2ef8-2fc3-4350-ac5d-b7e53ab2e6bc",
              "deleted_at": null
            }
          },
          "curl": "curl -X POST 'https://users-api.dev.fixerra.in/user-address/for-nominee?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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"f_user_nominee_id\":\"3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0\",\"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": "BAJ_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:13:14.162Z",
          "endedAt": "2026-06-23T11:13:14.231Z",
          "durationMs": 69,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {
            "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0"
          },
          "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:13:14 GMT",
            "etag": "W/\"30f-PcuuxMjrMbiIu6gbYr991rEp/og\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "id": 5134,
                "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_address_id": "3a6c2ef8-2fc3-4350-ac5d-b7e53ab2e6bc",
                "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
                "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=3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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": "BAJ_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:13:14.231Z",
          "endedAt": "2026-06-23T11:13:14.255Z",
          "durationMs": 24,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
            "same_as_user": true
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:14 GMT",
            "etag": "W/\"28e-2m766sWBPykXh+Zad1zMlzJJGmU\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 5134,
              "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "f_user_address_id": "3a6c2ef8-2fc3-4350-ac5d-b7e53ab2e6bc",
              "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
              "f_base_user_address_id": "3a6c2ef8-2fc3-4350-ac5d-b7e53ab2e6bc",
              "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"f_user_nominee_id\":\"3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0\",\"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": "BAJ_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:13:14.255Z",
          "endedAt": "2026-06-23T11:13:14.268Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:13:14 GMT",
            "etag": "W/\"331-wAsiJsVLtTuzteNmpJLcxlLBP6c\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 5134,
                "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_address_id": "3a6c2ef8-2fc3-4350-ac5d-b7e53ab2e6bc",
                "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
                "f_base_user_address_id": "3a6c2ef8-2fc3-4350-ac5d-b7e53ab2e6bc",
                "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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": "BAJ_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:13:14.268Z",
          "endedAt": "2026-06-23T11:13:14.278Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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:13:14 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": "7",
            "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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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": "BAJ_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:13:14.278Z",
          "endedAt": "2026-06-23T11:13:14.284Z",
          "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:13:14 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": "BAJ_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:13:14.284Z",
          "endedAt": "2026-06-23T11:13:14.328Z",
          "durationMs": 44,
          "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:14 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": "40",
            "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": "BAJ_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:13:14.328Z",
          "endedAt": "2026-06-23T11:13:14.342Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "same_as_user": true
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:14 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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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": "BAJ_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:13:14.342Z",
          "endedAt": "2026-06-23T11:13:14.426Z",
          "durationMs": 84,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
            "same_as_user": false,
            "line1": "Flat 1",
            "city": "Mumbai",
            "state": "MH",
            "country": "INDIA",
            "pincode": "ABC"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:14 GMT",
            "etag": "W/\"4e-e9sIpO7vvVjwlGKz5FTCW0Ki8oI\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "81",
            "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"f_user_nominee_id\":\"3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0\",\"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": "BAJ_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:13:14.426Z",
          "endedAt": "2026-06-23T11:13:14.450Z",
          "durationMs": 24,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
            "same_as_user": false,
            "line1": "Flat 1",
            "city": "Mumbai",
            "state": "maharashtra",
            "country": "INDIA",
            "pincode": "400001"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:14 GMT",
            "etag": "W/\"24e-dtYy58pNtAMGAku+WUzaNEOeUU0\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "21",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "CREATED",
            "payload": {
              "id": 5134,
              "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "f_user_address_id": "3a6c2ef8-2fc3-4350-ac5d-b7e53ab2e6bc",
              "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
              "f_base_user_address_id": "3a6c2ef8-2fc3-4350-ac5d-b7e53ab2e6bc",
              "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"f_user_nominee_id\":\"3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0\",\"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": "BAJ_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:13:14.450Z",
          "endedAt": "2026-06-23T11:13:14.473Z",
          "durationMs": 23,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
            "same_as_user": false,
            "line1": "Flat 1",
            "city": "Mumbai",
            "state": "MH",
            "pincode": "400001"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:14 GMT",
            "etag": "W/\"245-QFm5uaKLXQ7KXHVFsOla0fpib4k\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "20",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 201,
            "message": "CREATED",
            "payload": {
              "id": 5134,
              "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "f_user_address_id": "3a6c2ef8-2fc3-4350-ac5d-b7e53ab2e6bc",
              "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
              "f_base_user_address_id": "3a6c2ef8-2fc3-4350-ac5d-b7e53ab2e6bc",
              "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"f_user_nominee_id\":\"3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0\",\"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": "BAJ_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:13:14.473Z",
          "endedAt": "2026-06-23T11:13:14.536Z",
          "durationMs": 63,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestPayload": {
            "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
            "same_as_user": false,
            "line1": "Updated Address Line",
            "city": "Pune",
            "state": "MH",
            "country": "INDIA",
            "pincode": "411001"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:14 GMT",
            "etag": "W/\"265-6IXLnq2WIauiJsQ4GbsIUsvL2aE\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 5134,
              "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "f_user_address_id": "3a6c2ef8-2fc3-4350-ac5d-b7e53ab2e6bc",
              "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
              "f_base_user_address_id": "3a6c2ef8-2fc3-4350-ac5d-b7e53ab2e6bc",
              "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=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.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\n  -d '{\"f_user_nominee_id\":\"3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0\",\"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": "BAJ_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:13:14.536Z",
          "endedAt": "2026-06-23T11:13:14.549Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "x-partner-key": "38****ef",
            "x-partner-code": "tradingquants-dev",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "requestQuery": {
            "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0"
          },
          "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:13:14 GMT",
            "etag": "W/\"302-HOfamdYMUhMI32gxyUQPcx0ZF+s\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "10",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "SUCCESS",
            "payload": [
              {
                "id": 5134,
                "f_user_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_address_id": "3a6c2ef8-2fc3-4350-ac5d-b7e53ab2e6bc",
                "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
                "f_base_user_address_id": "3a6c2ef8-2fc3-4350-ac5d-b7e53ab2e6bc",
                "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=3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0' \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-partner-key: 38****ef' \\\n  -H 'x-partner-code: tradingquants-dev' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw'",
          "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": "BAJ_NOMINEE_V1UPD_001",
          "caseName": "Update nominee via v1/update (BAJ)",
          "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:13:14.549Z",
          "endedAt": "2026-06-23T11:13:14.577Z",
          "durationMs": 28,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:14 GMT",
            "etag": "W/\"283-fps8gNWcc9A8anw7vCNVEcwk7os\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Origin",
            "x-content-type-options": "nosniff",
            "x-powered-by": "Express",
            "x-xss-protection": "1; mode=block",
            "x-envoy-upstream-service-time": "25",
            "server": "envoy"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Nominee Data updated successfully",
            "payload": {
              "is_default": true,
              "id": 10786,
              "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
              "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:13:12.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=BAJ' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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\":\"3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0\"}'",
          "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": "BAJ_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:13:14.577Z",
          "endedAt": "2026-06-23T11:13:14.636Z",
          "durationMs": 59,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
            "nomineeAddress": {
              "same_as_user": false,
              "line1": "ADFJ",
              "street": "ASDFK",
              "pincode": "431122",
              "city": "BEED",
              "state": "MAHARASHTRA",
              "country": "INDIA"
            }
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:14 GMT",
            "etag": "W/\"436-bsW05SisK8tknc/+wEjnGj76Rzo\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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",
            "connection": "close"
          },
          "responseBody": {
            "success": 1,
            "statusCode": 200,
            "message": "Nominee Data updated successfully",
            "payload": {
              "is_default": true,
              "id": 10786,
              "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
              "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:13:12.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": "e523c1e5-0229-4637-983c-05e9afb87b9c",
                "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0"
              }
            }
          },
          "curl": "curl -X PUT 'https://users-api.dev.fixerra.in/user-nominee/v1/update?f_code=BAJ' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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\":\"3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0\",\"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": "BAJ_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:13:14.636Z",
          "endedAt": "2026-06-23T11:13:14.731Z",
          "durationMs": 95,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:14 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": "7",
            "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=BAJ' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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\":\"3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0\"}'",
          "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": "BAJ_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:13:14.731Z",
          "endedAt": "2026-06-23T11:13:14.742Z",
          "durationMs": 11,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:14 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=BAJ' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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\":\"3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0\"}'",
          "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": "BAJ_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:13:14.742Z",
          "endedAt": "2026-06-23T11:13:14.756Z",
          "durationMs": 14,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:14 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": "11",
            "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=BAJ' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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\":\"3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0\"}'",
          "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": "BAJ_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:13:14.756Z",
          "endedAt": "2026-06-23T11:13:14.848Z",
          "durationMs": 92,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:14 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": "89",
            "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=BAJ' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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\":\"3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0\"}'",
          "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": "BAJ_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:13:14.848Z",
          "endedAt": "2026-06-23T11:13:14.929Z",
          "durationMs": 81,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:14 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": "78",
            "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=BAJ' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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\":\"3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0\"}'",
          "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": "BAJ_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:13:14.930Z",
          "endedAt": "2026-06-23T11:13:14.943Z",
          "durationMs": 13,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:14 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 PUT 'https://users-api.dev.fixerra.in/user-nominee/v1/update?f_code=BAJ' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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\":\"3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0\"}'",
          "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": "BAJ_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:13:14.943Z",
          "endedAt": "2026-06-23T11:13:14.953Z",
          "durationMs": 10,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:14 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": "6",
            "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=BAJ' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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\":\"3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0\"}'",
          "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": "BAJ_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:13:14.953Z",
          "endedAt": "2026-06-23T11:13:14.978Z",
          "durationMs": 25,
          "requestHeaders": {
            "Content-Type": "application/json",
            "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw"
          },
          "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": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0"
          },
          "requestQuery": {
            "f_code": "BAJ"
          },
          "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:13:14 GMT",
            "etag": "W/\"2c4-fMYu+arSq6I/aDrtXIqwfWCTIpA\"",
            "referrer-policy": "origin-when-cross-origin",
            "strict-transport-security": "max-age=31536000; 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": 1,
            "statusCode": 200,
            "message": "Nominee Data updated successfully",
            "payload": {
              "is_default": true,
              "id": 10786,
              "f_user_ref_id": "e523c1e5-0229-4637-983c-05e9afb87b9c",
              "f_user_nominee_id": "3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0",
              "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:13:12.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=BAJ' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOiJhY2Nlc3MiLCJmX3VzZXJfaWQiOiJlNTIzYzFlNS0wMjI5LTQ2MzctOTgzYy0wNWU5YWZiODdiOWMiLCJmX3BhcnRuZXJfdXNlcl9pZCI6ImQyMGU1ZWJhLTBkYWItNDc0My05NTdlLTcxNTNhOTM5NWJiNyIsImZfcGFydG5lcl9pZCI6IjY4YmRjZjg5LTg0NjQtNGY4NS04OTg3LWFhMjg5MDhlMjFhZCIsInBhcnRuZXJfdXJsIjoiaHR0cHM6Ly90cmFkaW5ncXVhbnRzLmRldi5maXhlcnJhLmluIiwiaWF0IjoxNzgyMjEzMTU0LCJleHAiOjE3ODIyOTk1NTR9._6evOWcQkgMX9AF4siUCH2nWMmfseml431Jva8CzHOw' \\\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\":\"3bbc1ab3-a65f-4c24-a400-8ed4e163d3f0\"}'",
          "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": "BAJ_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:13:14.978Z",
          "endedAt": "2026-06-23T11:13:15.031Z",
          "durationMs": 53,
          "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:13:14 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": "49",
            "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": "BAJ_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:13:15.031Z",
          "endedAt": "2026-06-23T11:13:15.036Z",
          "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:13:15 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": 3095
      }
    }
  ]
}