{
  "info": {
    "name": "RamboCard Issuing API",
    "description": "Partner API examples for RamboCard card products, virtual card creation, API USD reserve funded card top-ups, card controls and transaction records. Use a sandbox key before the guarantee deposit is fully frozen; sandbox calls simulate responses only and never create live cards, move funds, consume quota or call the upstream issuer. Use a production key only after merchant approval and the configured guarantee deposit are complete.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    { "key": "baseUrl", "value": "https://openrambo.com/virtualcard/api/issuing/v1" },
    { "key": "apiKey", "value": "" },
    { "key": "cardId", "value": "" },
    { "key": "productId", "value": "wc-bin-49372410" }
  ],
  "auth": {
    "type": "apikey",
    "apikey": [
      { "key": "key", "value": "X-API-Key", "type": "string" },
      { "key": "value", "value": "{{apiKey}}", "type": "string" },
      { "key": "in", "value": "header", "type": "string" }
    ]
  },
  "item": [
    {
      "name": "Public docs",
      "request": {
        "description": "Public metadata for the RamboCard Issuing API. This endpoint does not require X-API-Key.",
        "method": "GET",
        "url": "{{baseUrl}}/docs"
      }
    },
    {
      "name": "OpenAPI JSON",
      "request": {
        "description": "Machine-readable OpenAPI JSON. This endpoint does not require X-API-Key.",
        "method": "GET",
        "url": "{{baseUrl}}/openapi.json"
      }
    },
    {
      "name": "List card products",
      "request": {
        "description": "List available card products, BIN metadata, country or region, currency, fees and availability. Sandbox keys return simulated products only.",
        "method": "GET",
        "url": "{{baseUrl}}/products"
      }
    },
    {
      "name": "List cards",
      "request": {
        "description": "List cards issued under the authenticated partner account.",
        "method": "GET",
        "url": "{{baseUrl}}/cards?page=1&page_size=20"
      }
    },
    {
      "name": "Apply virtual card",
      "request": {
        "description": "Create a virtual card with a production key. Fees and first top-up are deducted from the API USD reserve. Sandbox keys return a simulated card only and do not create live cards or deduct reserve/quota.",
        "method": "POST",
        "header": [
          { "key": "Idempotency-Key", "value": "create-{{$guid}}" },
          { "key": "Content-Type", "value": "application/json" }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"productId\": \"{{productId}}\",\n  \"cardLevel\": \"standard\",\n  \"firstRechargeAmount\": 10,\n  \"holder\": {\n    \"firstName\": \"RAMBO\",\n    \"lastName\": \"CARD\",\n    \"email\": \"user@example.com\",\n    \"phone\": \"+85200000000\"\n  }\n}"
        },
        "url": "{{baseUrl}}/cards"
      }
    },
    {
      "name": "Get card info",
      "request": {
        "description": "Get card status, BIN classification, cardholder profile, address, balances and fee snapshot.",
        "method": "GET",
        "url": "{{baseUrl}}/cards/{{cardId}}"
      }
    },
    {
      "name": "Create card top-up",
      "request": {
        "description": "Move funds from the API USD reserve to card balance with a production key. Sandbox keys simulate the top-up only.",
        "method": "POST",
        "header": [
          { "key": "Idempotency-Key", "value": "topup-{{$guid}}" },
          { "key": "Content-Type", "value": "application/json" }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"amount\": 10\n}"
        },
        "url": "{{baseUrl}}/cards/{{cardId}}/topup"
      }
    },
    {
      "name": "Freeze card",
      "request": {
        "method": "POST",
        "header": [{ "key": "Idempotency-Key", "value": "freeze-{{$guid}}" }],
        "url": "{{baseUrl}}/cards/{{cardId}}/freeze"
      }
    },
    {
      "name": "Unfreeze card",
      "request": {
        "method": "POST",
        "header": [{ "key": "Idempotency-Key", "value": "unfreeze-{{$guid}}" }],
        "url": "{{baseUrl}}/cards/{{cardId}}/unfreeze"
      }
    },
    {
      "name": "Close card",
      "request": {
        "method": "POST",
        "header": [{ "key": "Idempotency-Key", "value": "close-{{$guid}}" }],
        "url": "{{baseUrl}}/cards/{{cardId}}/close"
      }
    },
    {
      "name": "List card transactions",
      "request": {
        "description": "List card-side events including loads, authorizations, settlements, reversals, refunds, chargebacks and fees.",
        "method": "GET",
        "url": "{{baseUrl}}/cards/{{cardId}}/transactions?page=1&page_size=20"
      }
    },
    {
      "name": "Send test webhook event",
      "request": {
        "description": "Send a simulated webhook event to the merchant Webhook URL configured in the RamboCard merchant workspace. Use this with a sandbox key to test OTP, 3DS, transaction, decline, refund and chargeback callbacks before going live.",
        "method": "POST",
        "header": [
          { "key": "Content-Type", "value": "application/json" }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"eventType\": \"card.3ds.required\",\n  \"cardholderEmail\": \"user@example.com\",\n  \"cardBin\": \"49372410\",\n  \"last4\": \"8131\"\n}"
        },
        "url": "{{baseUrl}}/webhooks/test"
      }
    }
  ]
}
