{
  "info": {
    "_postman_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "name": "NonVoIP User API v2",
    "description": "NonVoIP 2.0 User API — Bearer API key. Same catalog and order flow as the web app. User endpoints only.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{api_token}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    { "key": "base_url", "value": "https://nonvoip.com" },
    { "key": "api_token", "value": "nv_live_your_api_key" },
    { "key": "order_id", "value": "707" },
    { "key": "service_id", "value": "svc:whatsapp:short_term" },
    { "key": "offer_id", "value": "off_abc123" },
    { "key": "idempotency_key", "value": "order-create-{{$guid}}" }
  ],
  "item": [
    {
      "name": "Account",
      "item": [
        {
          "name": "Get Account",
          "request": {
            "method": "GET",
            "header": [],
            "url": "{{base_url}}/api/v1/account"
          }
        }
      ]
    },
    {
      "name": "Catalog",
      "item": [
        {
          "name": "List Products (STR)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/v1/products?type=short-term",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "products"],
              "query": [{ "key": "type", "value": "short-term" }]
            }
          }
        },
        {
          "name": "List Products (LTR)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/v1/products?type=long-term",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "products"],
              "query": [{ "key": "type", "value": "long-term" }]
            }
          }
        },
        {
          "name": "List Products (Dedicated)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/v1/products?type=dedicated&country=US",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "products"],
              "query": [
                { "key": "type", "value": "dedicated" },
                { "key": "country", "value": "US" }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Orders — Short Term",
      "item": [
        {
          "name": "Create Order (STR)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Idempotency-Key", "value": "{{idempotency_key}}" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"type\": \"short-term\",\n  \"service_id\": \"{{service_id}}\",\n  \"offer_id\": \"{{offer_id}}\",\n  \"quoted_price\": \"0.31\"\n}"
            },
            "url": "{{base_url}}/api/v1/orders"
          }
        },
        {
          "name": "List Orders (STR)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/v1/orders?type=short-term&scope=active",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "orders"],
              "query": [
                { "key": "type", "value": "short-term" },
                { "key": "scope", "value": "active" }
              ]
            }
          }
        },
        {
          "name": "Get Order",
          "request": {
            "method": "GET",
            "header": [],
            "url": "{{base_url}}/api/v1/orders/{{order_id}}"
          }
        },
        {
          "name": "Get Order Messages (sync=0)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/v1/orders/{{order_id}}/messages?sync=0",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "orders", "{{order_id}}", "messages"],
              "query": [{ "key": "sync", "value": "0" }]
            }
          }
        },
        {
          "name": "Batch Messages",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/v1/orders/messages?order_ids=707,708&sync=0",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "orders", "messages"],
              "query": [
                { "key": "order_ids", "value": "707,708" },
                { "key": "sync", "value": "0" }
              ]
            }
          }
        },
        {
          "name": "Refund Request",
          "request": {
            "method": "POST",
            "header": [],
            "description": "STR/LTR: no min-wait. Dedicated: ≥5 minutes after allocation. Returns 202 when accepted; 422 ORDER_CANCEL_NOT_AVAILABLE if dedicated too early.",
            "url": "{{base_url}}/api/v1/orders/{{order_id}}/refund-request"
          }
        },
        {
          "name": "Cancel Pending Order",
          "request": {
            "method": "POST",
            "header": [],
            "url": "{{base_url}}/api/v1/orders/{{order_id}}/cancel"
          }
        }
      ]
    },
    {
      "name": "Orders — Long Term",
      "item": [
        {
          "name": "Create Order (LTR)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Idempotency-Key", "value": "{{idempotency_key}}" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"type\": \"long-term\",\n  \"service_id\": \"svc:whatsapp:long_term\",\n  \"offer_id\": \"{{offer_id}}\",\n  \"quoted_price\": \"6.00\"\n}"
            },
            "url": "{{base_url}}/api/v1/orders"
          }
        },
        {
          "name": "List Orders (LTR)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/v1/orders?type=long-term&scope=active",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "orders"],
              "query": [
                { "key": "type", "value": "long-term" },
                { "key": "scope", "value": "active" }
              ]
            }
          }
        },
        {
          "name": "Renew Order",
          "request": {
            "method": "POST",
            "header": [],
            "url": "{{base_url}}/api/v1/orders/{{order_id}}/renew"
          }
        },
        {
          "name": "Reuse Session",
          "request": {
            "method": "POST",
            "header": [],
            "description": "STR Reuse session (Renew). Call when can_reuse_session or can_extend_session is true. Creates a new ~10-minute order. First renew charges 50% of the original customer price; already-renewed orders charge full price.",
            "url": "{{base_url}}/api/v1/orders/{{order_id}}/reuse"
          }
        },
        {
          "name": "Extend Session (compatibility)",
          "request": {
            "method": "POST",
            "header": [],
            "description": "Compatibility alias. Prefer POST /orders/:id/reuse for Renew / Reuse session.",
            "url": "{{base_url}}/api/v1/orders/{{order_id}}/extend-session"
          }
        },
        {
          "name": "Go Online",
          "request": {
            "method": "POST",
            "header": [],
            "url": "{{base_url}}/api/v1/orders/{{order_id}}/go-online"
          }
        },
        {
          "name": "Auto-Renew Toggle",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"enabled\": true\n}"
            },
            "url": "{{base_url}}/api/v1/orders/{{order_id}}/auto-renew"
          }
        }
      ]
    },
    {
      "name": "Orders - Dedicated",
      "item": [
        {
          "name": "Create Order (Dedicated)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Idempotency-Key", "value": "{{idempotency_key}}" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"type\": \"dedicated\",\n  \"service_id\": \"svc:dedicated-number:dedicated_lt\",\n  \"offer_id\": \"42\",\n  \"quoted_price\": \"14.50\",\n  \"country\": \"US\"\n}"
            },
            "url": "{{base_url}}/api/v1/orders"
          }
        },
        {
          "name": "List Orders (Dedicated)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/v1/orders?type=dedicated&scope=all",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "orders"],
              "query": [
                { "key": "type", "value": "dedicated" },
                { "key": "scope", "value": "all" }
              ]
            }
          }
        },
        {
          "name": "Renew Order",
          "request": {
            "method": "POST",
            "header": [],
            "url": "{{base_url}}/api/v1/orders/{{order_id}}/renew"
          }
        },
        {
          "name": "Refund Request",
          "request": {
            "method": "POST",
            "header": [],
            "description": "STR/LTR: no min-wait. Dedicated: ≥5 minutes after allocation. Returns 202 when accepted; 422 ORDER_CANCEL_NOT_AVAILABLE if dedicated too early.",
            "url": "{{base_url}}/api/v1/orders/{{order_id}}/refund-request"
          }
        }
      ]
    }
  ]
}
