{
  "info": {
    "name": "VPS Ray Provider API",
    "description": "One URL, one API key. Keep api_key in your private Postman environment. Amounts use integer cents. Wallet payment requires explicit wallet:pay authorization.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{api_key}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "base_url",
      "value": "https://vpsray.com/api/reseller/v1"
    },
    {
      "key": "api_key",
      "value": ""
    },
    {
      "key": "plan_id",
      "value": ""
    },
    {
      "key": "service_id",
      "value": ""
    },
    {
      "key": "invoice_id",
      "value": ""
    },
    {
      "key": "order_key",
      "value": ""
    }
  ],
  "item": [
    {
      "name": "Verify connection",
      "request": {
        "method": "GET",
        "url": "{{base_url}}/account",
        "description": "Account-scoped VPS Ray API request."
      }
    },
    {
      "name": "Catalog",
      "request": {
        "method": "GET",
        "url": "{{base_url}}/catalog?limit=50&offset=0",
        "description": "Account-scoped VPS Ray API request."
      }
    },
    {
      "name": "Quote",
      "request": {
        "method": "GET",
        "url": "{{base_url}}/quotes/{{plan_id}}",
        "description": "Account-scoped VPS Ray API request."
      }
    },
    {
      "name": "Domain availability",
      "request": {
        "method": "GET",
        "url": "{{base_url}}/domains/check?domain=example.com",
        "description": "Read-only availability lookup for a published extension; order creation checks again."
      }
    },
    {
      "name": "Wallet balance",
      "request": {
        "method": "GET",
        "url": "{{base_url}}/balance",
        "description": "Account-scoped VPS Ray API request."
      }
    },
    {
      "name": "Your services",
      "request": {
        "method": "GET",
        "url": "{{base_url}}/services",
        "description": "Account-scoped VPS Ray API request."
      }
    },
    {
      "name": "Service status",
      "request": {
        "method": "GET",
        "url": "{{base_url}}/services/{{service_id}}",
        "description": "Account-scoped VPS Ray API request."
      }
    },
    {
      "name": "Invoice status",
      "request": {
        "method": "GET",
        "url": "{{base_url}}/invoices/{{invoice_id}}",
        "description": "Account-scoped VPS Ray API request."
      }
    },
    {
      "name": "Pay invoice from prepaid wallet",
      "request": {
        "method": "POST",
        "url": "{{base_url}}/invoices/{{invoice_id}}/pay",
        "description": "Wallet payment requires wallet:pay permission and debits the existing invoice once."
      }
    },
    {
      "name": "Create unpaid order",
      "request": {
        "method": "POST",
        "url": "{{base_url}}/orders",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{order_key}}"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"planId\": \"{{plan_id}}\",\n  \"cycle\": \"monthly\",\n  \"location\": \"COPY_EXACT_QUOTE_LOCATION\",\n  \"os\": \"COPY_EXACT_QUOTE_OS\",\n  \"hostname\": \"my-server\",\n  \"provider\": \"wallet\",\n  \"walletCurrency\": \"USD\",\n  \"expectedAmount\": 1200,\n  \"billing\": {\n    \"firstName\": \"Alex\",\n    \"lastName\": \"Example\",\n    \"address\": \"100 Example Street\",\n    \"city\": \"Example City\",\n    \"state\": \"CA\",\n    \"postcode\": \"90000\",\n    \"country\": \"US\",\n    \"phone\": \"+1.5555550100\"\n  }\n}"
        },
        "description": "Replace 1200 with your current quote total. Save one unique order_key per order and reuse it after a timeout. This endpoint does not debit funds; pay the returned invoice separately."
      }
    }
  ]
}
