{
  "info": {
    "_postman_id": "4b95f9bf-89bf-48de-88e9-lodinpreprod01",
    "name": "Lodin Platform - Preprod",
    "description": "Consolidated preprod collection for USER-SERVICE, PARTNERS-SERVICE, and MERCHANT-SERVICE login/onboarding/payment tests.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    { "key": "baseUrl", "value": "https://api-preprod.lodinpay.com" },
    { "key": "userServiceBase", "value": "{{baseUrl}}/user-service" },
    { "key": "partnersServiceBase", "value": "{{baseUrl}}/partners-service" },
    { "key": "merchantServiceBase", "value": "{{baseUrl}}/merchant-service" },
    { "key": "sharedEmail", "value": "multi.platform.demo@lodinpay.com" },
    { "key": "partnerEmail", "value": "{{sharedEmail}}" },
    { "key": "merchantEmail", "value": "{{sharedEmail}}" },
    { "key": "password", "value": "123456" },
    { "key": "phone", "value": "+212600000001" },
    { "key": "otpId", "value": "1" },
    { "key": "otpValue", "value": "987654" },
    { "key": "partnerToken", "value": "" },
    { "key": "merchantToken", "value": "" },
    { "key": "idUser", "value": "" },
    { "key": "partnerPublicId", "value": "" },
    { "key": "applicationPublicId", "value": "" },
    { "key": "applicationName", "value": "Demo Partner Application" },
    { "key": "clientId", "value": "replace-client-id" },
    { "key": "clientSecret", "value": "replace-client-secret" },
    { "key": "oauthAccessToken", "value": "" },
    { "key": "paymentRequestId", "value": "" },
    { "key": "paymentUrl", "value": "" },
    { "key": "stateId", "value": "STATE-123" },
    { "key": "payeeIban", "value": "FR7630006000011234567890189" },
    { "key": "payeeFullName", "value": "Demo Partner Payee" },
    { "key": "timestamp", "value": "" },
    { "key": "signature", "value": "replace-hmac-signature" },
    { "key": "merchantSiret", "value": "12345678901234" }
  ],
  "item": [
    {
      "name": "00 - Multi-Platform User Flow",
      "item": [
        {
          "name": "Send Partner OTP for Existing or New Email",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "const json = pm.response.json();",
                  "pm.collectionVariables.set('otpId', json.otpId || '');",
                  "pm.collectionVariables.set('emailExists', json.emailExists);",
                  "pm.collectionVariables.set('existsForPartner', json.existsForPartner);",
                  "pm.collectionVariables.set('existsForMerchant', json.existsForMerchant);",
                  "pm.collectionVariables.set('passwordRequired', json.passwordRequired);"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"mail\": \"{{sharedEmail}}\",\n  \"userType\": \"PARTNER\"\n}"
            },
            "url": "{{partnersServiceBase}}/partners/otp/register/send/mail"
          }
        },
        {
          "name": "Validate Partner OTP",
          "request": {
            "method": "GET",
            "url": "{{partnersServiceBase}}/partners/otp/validateMAIL/{{otpId}}/{{otpValue}}"
          }
        },
        {
          "name": "Create Partner With Shared Email",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"companyName\": \"Lodin Demo Partner\",\n  \"legalName\": \"Lodin Demo Partner SARL\",\n  \"email\": \"{{sharedEmail}}\",\n  \"firstName\": \"Demo\",\n  \"lastName\": \"Partner\",\n  \"acceptTerms\": true,\n  \"phone\": \"{{phone}}\",\n  \"country\": \"MA\",\n  \"taxId\": \"ICE-DEMO-001\",\n  \"website\": \"https://partner.example.com\"\n}"
            },
            "url": "{{partnersServiceBase}}/partners"
          }
        },
        {
          "name": "Login Shared Email Through Partner Console",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "const json = pm.response.json();",
                  "pm.collectionVariables.set('partnerToken', json.jwt || json.access_token || '');",
                  "pm.collectionVariables.set('idUser', json.id_user || json.idUser || '');",
                  "pm.collectionVariables.set('partnerPublicId', json.partnerPublicId || '');"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"login\": \"{{sharedEmail}}\",\n  \"password\": \"{{password}}\"\n}"
            },
            "url": "{{partnersServiceBase}}/partners/auth/login"
          }
        },
        {
          "name": "Send Merchant OTP With Same Email",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "const json = pm.response.json();",
                  "pm.collectionVariables.set('otpId', json.otpId || '');",
                  "pm.collectionVariables.set('emailExists', json.emailExists);",
                  "pm.collectionVariables.set('existsForPartner', json.existsForPartner);",
                  "pm.collectionVariables.set('existsForMerchant', json.existsForMerchant);",
                  "pm.collectionVariables.set('passwordRequired', json.passwordRequired);"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"mail\": \"{{sharedEmail}}\",\n  \"userType\": \"BASIC_MERCHANT\"\n}"
            },
            "url": "{{merchantServiceBase}}/merchant/otp/register/send/mail"
          }
        },
        {
          "name": "Validate Merchant OTP",
          "request": {
            "method": "GET",
            "url": "{{merchantServiceBase}}/merchant/otp/validateMAIL/{{otpId}}/{{otpValue}}"
          }
        },
        {
          "name": "Create Basic Merchant With Shared Email",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"email\": \"{{sharedEmail}}\",\n  \"password\": \"{{password}}\",\n  \"acceptTerms\": true,\n  \"phone\": \"{{phone}}\",\n  \"firstName\": \"Demo\",\n  \"lastName\": \"Merchant\",\n  \"merchantName\": \"Demo Merchant\",\n  \"description\": \"Demo merchant using shared email\"\n}"
            },
            "url": "{{merchantServiceBase}}/merchant/register/basic"
          }
        },
        {
          "name": "Login Shared Email Through User Auth",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "const json = pm.response.json();",
                  "pm.collectionVariables.set('merchantToken', json.jwt || '');",
                  "pm.collectionVariables.set('idUser', json.id_user || json.idUser || '');"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"login\": \"{{sharedEmail}}\",\n  \"password\": \"{{password}}\"\n}"
            },
            "url": "{{userServiceBase}}/auth/login"
          }
        }
      ]
    },
    {
      "name": "01 - USER-SERVICE",
      "item": [
        {
          "name": "Send Register OTP Mail - Partner",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "const json = pm.response.json();",
                  "pm.collectionVariables.set('otpId', json.otpId || '');"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"mail\": \"{{partnerEmail}}\",\n  \"userType\": \"PARTNER\"\n}" },
            "url": "{{userServiceBase}}/otp/register/send/mail"
          }
        },
        {
          "name": "Send Register OTP Mail - Basic Merchant",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "const json = pm.response.json();",
                  "pm.collectionVariables.set('otpId', json.otpId || '');"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"mail\": \"{{merchantEmail}}\",\n  \"userType\": \"BASIC_MERCHANT\"\n}" },
            "url": "{{userServiceBase}}/otp/register/send/mail"
          }
        },
        {
          "name": "Validate Register OTP Mail",
          "request": { "method": "GET", "url": "{{userServiceBase}}/otp/validateMAIL/{{otpId}}/{{otpValue}}" }
        },
        {
          "name": "Auth Login",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"login\": \"{{sharedEmail}}\",\n  \"password\": \"{{password}}\"\n}" },
            "url": "{{userServiceBase}}/auth/login"
          }
        },
        {
          "name": "Auth Subscription - Partner",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"email\": \"{{partnerEmail}}\",\n  \"password\": \"{{password}}\",\n  \"acceptTerms\": true,\n  \"phone\": \"{{phone}}\",\n  \"firstName\": \"Demo\",\n  \"lastName\": \"Partner\",\n  \"userType\": \"PARTNER\"\n}" },
            "url": "{{userServiceBase}}/auth/subscription"
          }
        },
        {
          "name": "Auth Subscription - Basic Merchant",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"email\": \"{{merchantEmail}}\",\n  \"password\": \"{{password}}\",\n  \"acceptTerms\": true,\n  \"phone\": \"{{phone}}\",\n  \"firstName\": \"Demo\",\n  \"lastName\": \"Merchant\",\n  \"userType\": \"BASIC_MERCHANT\"\n}" },
            "url": "{{userServiceBase}}/auth/subscription"
          }
        }
      ]
    },
    {
      "name": "02 - PARTNERS-SERVICE - Account",
      "item": [
        {
          "name": "Send Partner Registration OTP Mail",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "const json = pm.response.json();",
                  "pm.collectionVariables.set('otpId', json.otpId || '');"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"mail\": \"{{partnerEmail}}\",\n  \"userType\": \"PARTNER\"\n}" },
            "url": "{{partnersServiceBase}}/partners/otp/register/send/mail"
          }
        },
        {
          "name": "Validate Partner Registration OTP Mail",
          "request": { "method": "GET", "url": "{{partnersServiceBase}}/partners/otp/validateMAIL/{{otpId}}/{{otpValue}}" }
        },
        {
          "name": "Create Partner",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"companyName\": \"Lodin Demo Partner\",\n  \"legalName\": \"Lodin Demo Partner SARL\",\n  \"email\": \"{{partnerEmail}}\",\n  \"firstName\": \"Demo\",\n  \"lastName\": \"Partner\",\n  \"acceptTerms\": true,\n  \"phone\": \"{{phone}}\",\n  \"country\": \"MA\",\n  \"taxId\": \"ICE-DEMO-001\",\n  \"website\": \"https://partner.example.com\"\n}" },
            "url": "{{partnersServiceBase}}/partners"
          }
        },
        {
          "name": "Register Partner",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"companyName\": \"Lodin Demo Partner\",\n  \"legalName\": \"Lodin Demo Partner SARL\",\n  \"email\": \"{{partnerEmail}}\",\n  \"password\": \"{{password}}\",\n  \"firstName\": \"Demo\",\n  \"lastName\": \"Partner\",\n  \"acceptTerms\": true,\n  \"phone\": \"{{phone}}\",\n  \"country\": \"MA\",\n  \"taxId\": \"ICE-DEMO-001\",\n  \"website\": \"https://partner.example.com\"\n}" },
            "url": "{{partnersServiceBase}}/partners/register"
          }
        },
        {
          "name": "Partner Login",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "const json = pm.response.json();",
                  "pm.collectionVariables.set('partnerToken', json.jwt || '');",
                  "pm.collectionVariables.set('idUser', json.id_user || json.idUser || '');",
                  "pm.collectionVariables.set('partnerPublicId', json.partnerPublicId || '');"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"login\": \"{{partnerEmail}}\",\n  \"password\": \"{{password}}\"\n}" },
            "url": "{{partnersServiceBase}}/partners/auth/login"
          }
        },
        {
          "name": "Get Partner",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{partnerToken}}" }],
            "url": "{{partnersServiceBase}}/partners/{{partnerPublicId}}"
          }
        },
        {
          "name": "List Partners",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{partnerToken}}" }],
            "url": "{{partnersServiceBase}}/partners"
          }
        }
      ]
    },
    {
      "name": "03 - PARTNERS-SERVICE - Applications",
      "item": [
        {
          "name": "Create Application",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "const json = pm.response.json();",
                  "pm.collectionVariables.set('applicationPublicId', json.publicId || json.applicationPublicId || '');"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              { "key": "Authorization", "value": "Bearer {{partnerToken}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"{{applicationName}}\",\n  \"description\": \"Demo partner RTP application\",\n  \"logoUrl\": \"https://partner.example.com/logo.png\",\n  \"type\": \"SANDBOX\"\n}" },
            "url": "{{partnersServiceBase}}/partner-applications"
          }
        },
        {
          "name": "Get My Applications",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{partnerToken}}" }],
            "url": "{{partnersServiceBase}}/partner-applications/me"
          }
        },
        {
          "name": "Get Application",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{partnerToken}}" }],
            "url": "{{partnersServiceBase}}/partner-applications/{{applicationPublicId}}"
          }
        },
        {
          "name": "Activate Application",
          "request": {
            "method": "PATCH",
            "header": [{ "key": "Authorization", "value": "Bearer {{partnerToken}}" }],
            "url": "{{partnersServiceBase}}/partner-applications/{{applicationPublicId}}/status?status=ACTIVE&enabled=true"
          }
        },
        {
          "name": "Delete Application",
          "request": {
            "method": "DELETE",
            "header": [{ "key": "Authorization", "value": "Bearer {{partnerToken}}" }],
            "url": "{{partnersServiceBase}}/partner-applications/{{applicationPublicId}}"
          }
        }
      ]
    },
    {
      "name": "04 - PARTNERS-SERVICE - Credentials",
      "item": [
        {
          "name": "Generate Credentials",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "const json = pm.response.json();",
                  "pm.collectionVariables.set('clientId', json.clientId || '');",
                  "pm.collectionVariables.set('clientSecret', json.clientSecret || pm.collectionVariables.get('clientSecret'));"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [{ "key": "Authorization", "value": "Bearer {{partnerToken}}" }],
            "url": "{{partnersServiceBase}}/partner-credentials/application/{{applicationPublicId}}"
          }
        },
        {
          "name": "Get Credentials",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{partnerToken}}" }],
            "url": "{{partnersServiceBase}}/partner-credentials/application/{{applicationPublicId}}"
          }
        },
        {
          "name": "Rotate Secret",
          "request": {
            "method": "POST",
            "header": [{ "key": "Authorization", "value": "Bearer {{partnerToken}}" }],
            "url": "{{partnersServiceBase}}/partner-credentials/application/{{applicationPublicId}}/rotate-secret"
          }
        }
      ]
    },
    {
      "name": "05 - PARTNERS-SERVICE - OAuth Payments",
      "item": [
        {
          "name": "Get OAuth Token",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "const json = pm.response.json();",
                  "pm.collectionVariables.set('oauthAccessToken', json.access_token || '');"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/x-www-form-urlencoded" }],
            "body": {
              "mode": "urlencoded",
              "urlencoded": [
                { "key": "grant_type", "value": "client_credentials" },
                { "key": "client_id", "value": "{{clientId}}" },
                { "key": "client_secret", "value": "{{clientSecret}}" }
              ]
            },
            "url": "{{partnersServiceBase}}/partners/oauth/token"
          }
        },
        {
          "name": "Initiate Payment",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "const json = pm.response.json();",
                  "pm.collectionVariables.set('paymentRequestId', json.paymentRequestId || '');",
                  "pm.collectionVariables.set('paymentUrl', json.paymentUrl || '');"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              { "key": "Authorization", "value": "Bearer {{oauthAccessToken}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": { "mode": "raw", "raw": "{\n  \"amount\": 150.00,\n  \"currency\": \"EUR\",\n  \"externalReference\": \"ORDER-123\",\n  \"description\": \"Payment for order ORDER-123\",\n  \"callbackUri\": \"https://partner.example.com/callback\",\n  \"webhookUri\": \"https://partner.example.com/api/payment/webhook\",\n  \"customer\": {\n    \"name\": \"Client Name\",\n    \"email\": \"client@example.com\",\n    \"phone\": \"+212600000000\"\n  },\n  \"payee\": {\n    \"iban\": \"{{payeeIban}}\",\n    \"fullName\": \"{{payeeFullName}}\"\n  },\n  \"metadata\": {\n    \"stateId\": \"{{stateId}}\"\n  },\n  \"paymentType\": \"INST\"\n}" },
            "url": "{{partnersServiceBase}}/partners/payments"
          }
        },
        {
          "name": "Get Payment Details",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{oauthAccessToken}}" }],
            "url": "{{partnersServiceBase}}/partners/payments/{{paymentRequestId}}"
          }
        },
        {
          "name": "Internal Redirect Preview",
          "request": {
            "method": "GET",
            "url": "{{partnersServiceBase}}/partners/payments/{{paymentRequestId}}/redirect?bankStatus=Pending&paymentRequestId=provider-id"
          }
        },
        {
          "name": "Resolve Redirect Server-To-Server",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"status\": \"SUCCESS\",\n  \"transactionId\": \"TRX-123\",\n  \"errorCode\": null,\n  \"errorMessage\": null\n}" },
            "url": "{{partnersServiceBase}}/partners/payments/{{paymentRequestId}}/resolve-redirect"
          }
        }
      ]
    },
    {
      "name": "06 - PARTNERS-SERVICE - Reports",
      "item": [
        {
          "name": "My Payment Requests",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{partnerToken}}" }],
            "url": "{{partnersServiceBase}}/partners/payment-requests/me?page=0&size=20&includeLogs=true&logsLimit=5"
          }
        },
        {
          "name": "My Payment KPIs",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{partnerToken}}" }],
            "url": "{{partnersServiceBase}}/partners/payment-requests/me/kpis"
          }
        },
        {
          "name": "Admin Payment Requests",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{partnerToken}}" }],
            "url": "{{partnersServiceBase}}/partners/payment-requests?page=0&size=20&includeLogs=true&logsLimit=5"
          }
        }
      ]
    },
    {
      "name": "07 - PARTNERS-SERVICE - Old HMAC RTP",
      "item": [
        {
          "name": "Create RTP Request",
          "request": {
            "method": "POST",
            "header": [
              { "key": "X-Client-Id", "value": "{{clientId}}" },
              { "key": "X-Timestamp", "value": "{{timestamp}}" },
              { "key": "X-Signature", "value": "{{signature}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": { "mode": "raw", "raw": "{\n  \"externalReference\": \"EXT-001\",\n  \"amount\": 100.50,\n  \"currency\": \"EUR\",\n  \"description\": \"Partner RTP payment\",\n  \"returnUrl\": \"https://partner.example.com/callback\",\n  \"webhookUrl\": \"https://partner.example.com/webhook\",\n  \"customerName\": \"Demo Customer\",\n  \"customerEmail\": \"customer@example.com\",\n  \"customerPhone\": \"+212600000002\",\n  \"metadataJson\": \"{\\\"stateId\\\":\\\"{{stateId}}\\\"}\",\n  \"payeeIban\": \"{{payeeIban}}\",\n  \"payeeFullName\": \"{{payeeFullName}}\",\n  \"paymentType\": \"INST\"\n}" },
            "url": "{{partnersServiceBase}}/partners/rtp"
          }
        },
        {
          "name": "Get Application Logs",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{partnerToken}}" }],
            "url": "{{partnersServiceBase}}/partners/rtp/logs/application/{{applicationPublicId}}"
          }
        }
      ]
    },
    {
      "name": "08 - MERCHANT-SERVICE",
      "item": [
        {
          "name": "Send Merchant Registration OTP Mail",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "const json = pm.response.json();",
                  "pm.collectionVariables.set('otpId', json.otpId || '');",
                  "pm.collectionVariables.set('emailExists', json.emailExists);",
                  "pm.collectionVariables.set('existsForPartner', json.existsForPartner);",
                  "pm.collectionVariables.set('existsForMerchant', json.existsForMerchant);",
                  "pm.collectionVariables.set('passwordRequired', json.passwordRequired);"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"mail\": \"{{merchantEmail}}\",\n  \"userType\": \"BASIC_MERCHANT\"\n}" },
            "url": "{{merchantServiceBase}}/merchant/otp/register/send/mail"
          }
        },
        {
          "name": "Validate Merchant Registration OTP Mail",
          "request": {
            "method": "GET",
            "url": "{{merchantServiceBase}}/merchant/otp/validateMAIL/{{otpId}}/{{otpValue}}"
          }
        },
        {
          "name": "Register Basic Merchant",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"email\": \"{{merchantEmail}}\",\n  \"password\": \"{{password}}\",\n  \"acceptTerms\": true,\n  \"phone\": \"{{phone}}\",\n  \"firstName\": \"Demo\",\n  \"lastName\": \"Merchant\",\n  \"merchantName\": \"Demo Merchant\",\n  \"description\": \"Demo merchant using shared email\"\n}" },
            "url": "{{merchantServiceBase}}/merchant/register/basic"
          }
        },
        {
          "name": "Merchant Console Login",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "const json = pm.response.json();",
                  "const user = json.userJwtDTO || json;",
                  "pm.collectionVariables.set('merchantToken', user.jwt || '');",
                  "pm.collectionVariables.set('idUser', user.id_user || user.idUser || '');"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"login\": \"{{merchantEmail}}\",\n  \"password\": \"{{password}}\"\n}" },
            "url": "{{merchantServiceBase}}/merchant/auth/login"
          }
        },
        {
          "name": "Create Basic Merchant Directly",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"merchantName\": \"Demo Merchant\",\n  \"email\": \"{{merchantEmail}}\",\n  \"description\": \"Demo merchant\",\n  \"logo\": \"https://partner.example.com/logo.png\"\n}" },
            "url": "{{merchantServiceBase}}/become-marchant/basic"
          }
        },
        {
          "name": "Check If Merchant",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{merchantToken}}" }],
            "url": "{{merchantServiceBase}}/app-to-app/checkIfMerchant/{{idUser}}"
          }
        },
        {
          "name": "Get Merchant Detail",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{merchantToken}}" }],
            "url": "{{merchantServiceBase}}/app-to-app/marchant/{{idUser}}"
          }
        },
        {
          "name": "Merchant Credential",
          "request": {
            "method": "GET",
            "header": [{ "key": "Authorization", "value": "Bearer {{merchantToken}}" }],
            "url": "{{merchantServiceBase}}/dashboard/merchant/credential/{{idUser}}"
          }
        }
      ]
    }
  ]
}
