{
  "info": {
    "name": "ZYREX SHOP — OTP SERVER 1–5 & SMM",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "description": "Isi base_url dan api_key secara lokal. Mulai dengan Cek saldo. Set idempotency_key satu kali per pesanan; jangan ubah pada retry. Tidak ada pembelian otomatis saat impor. SERVER 2/4/5 memerlukan quote_id baru dari offer."
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{api_key}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "base_url",
      "value": "https://DOMAIN-KAMU/api/v1",
      "type": "string"
    },
    {
      "key": "api_key",
      "value": "",
      "type": "string"
    },
    {
      "key": "server",
      "value": "2",
      "type": "string"
    },
    {
      "key": "service_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "country_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "country_code",
      "value": "",
      "type": "string"
    },
    {
      "key": "provider",
      "value": "provider_1",
      "type": "string"
    },
    {
      "key": "number_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "product_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "quote_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "quoted_price",
      "value": "0",
      "type": "string"
    },
    {
      "key": "order_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "smm_service_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "target",
      "value": "",
      "type": "string"
    },
    {
      "key": "quantity",
      "value": "1000",
      "type": "string"
    },
    {
      "key": "idempotency_key",
      "value": "",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "01 · Koneksi dan katalog",
      "item": [
        {
          "name": "Cek saldo",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/balance",
            "description": "Semua ID harus diambil dari katalog server yang sama. Payload contoh belum siap dikirim sebelum variabel diisi."
          }
        },
        {
          "name": "Ringkasan lima server",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/services",
            "description": "Semua ID harus diambil dari katalog server yang sama. Payload contoh belum siap dikirim sebelum variabel diisi."
          }
        },
        {
          "name": "Layanan per server",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/services?server={{server}}&country_id={{country_id}}",
            "description": "Semua ID harus diambil dari katalog server yang sama. Payload contoh belum siap dikirim sebelum variabel diisi."
          }
        },
        {
          "name": "Negara",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/countries?server={{server}}&service_id={{service_id}}&provider={{provider}}",
            "description": "Semua ID harus diambil dari katalog server yang sama. Payload contoh belum siap dikirim sebelum variabel diisi."
          }
        },
        {
          "name": "Offer SERVER 1",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/offers?server=1&service_id={{service_id}}&country_code={{country_code}}&provider={{provider}}",
            "description": "Semua ID harus diambil dari katalog server yang sama. Payload contoh belum siap dikirim sebelum variabel diisi."
          }
        },
        {
          "name": "Offer SERVER 2–5",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/offers?server={{server}}&service_id={{service_id}}&country_id={{country_id}}",
            "description": "Semua ID harus diambil dari katalog server yang sama. Payload contoh belum siap dikirim sebelum variabel diisi."
          }
        }
      ]
    },
    {
      "name": "02 · Pembelian OTP (isi variabel dulu)",
      "item": [
        {
          "name": "Beli OTP SERVER 1",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{idempotency_key}}"
              }
            ],
            "url": "{{base_url}}/order",
            "description": "Semua ID harus diambil dari katalog server yang sama. Payload contoh belum siap dikirim sebelum variabel diisi.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"server\": 1,\n  \"service_id\": \"{{service_id}}\",\n  \"country_code\": \"{{country_code}}\",\n  \"provider\": \"{{provider}}\",\n  \"number_id\": \"{{number_id}}\",\n  \"quoted_price\": \"{{quoted_price}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Beli OTP SERVER 2",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{idempotency_key}}"
              }
            ],
            "url": "{{base_url}}/order",
            "description": "Semua ID harus diambil dari katalog server yang sama. Payload contoh belum siap dikirim sebelum variabel diisi.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"server\": 2,\n  \"service_id\": \"{{service_id}}\",\n  \"country_id\": \"{{country_id}}\",\n  \"quote_id\": \"{{quote_id}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Beli OTP SERVER 3",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{idempotency_key}}"
              }
            ],
            "url": "{{base_url}}/order",
            "description": "Semua ID harus diambil dari katalog server yang sama. Payload contoh belum siap dikirim sebelum variabel diisi.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"server\": 3,\n  \"service_id\": \"{{service_id}}\",\n  \"country_id\": \"{{country_id}}\",\n  \"product_id\": \"{{product_id}}\",\n  \"quoted_price\": \"{{quoted_price}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Beli OTP SERVER 4",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{idempotency_key}}"
              }
            ],
            "url": "{{base_url}}/order",
            "description": "Semua ID harus diambil dari katalog server yang sama. Payload contoh belum siap dikirim sebelum variabel diisi.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"server\": 4,\n  \"service_id\": \"{{service_id}}\",\n  \"country_id\": \"{{country_id}}\",\n  \"quote_id\": \"{{quote_id}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Beli OTP SERVER 5",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{idempotency_key}}"
              }
            ],
            "url": "{{base_url}}/order",
            "description": "Semua ID harus diambil dari katalog server yang sama. Payload contoh belum siap dikirim sebelum variabel diisi.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"server\": 5,\n  \"service_id\": \"{{service_id}}\",\n  \"country_id\": \"{{country_id}}\",\n  \"quote_id\": \"{{quote_id}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "03 · Pantau atau batalkan",
      "item": [
        {
          "name": "Status + OTP",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/order/{{order_id}}",
            "description": "Semua ID harus diambil dari katalog server yang sama. Payload contoh belum siap dikirim sebelum variabel diisi."
          }
        },
        {
          "name": "Batal OTP setelah 3 menit",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/order/{{order_id}}/cancel",
            "description": "Semua ID harus diambil dari katalog server yang sama. Payload contoh belum siap dikirim sebelum variabel diisi."
          }
        }
      ]
    },
    {
      "name": "04 · SMM",
      "item": [
        {
          "name": "Katalog SMM",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/smm/services",
            "description": "Semua ID harus diambil dari katalog server yang sama. Payload contoh belum siap dikirim sebelum variabel diisi."
          }
        },
        {
          "name": "Beli SMM",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{idempotency_key}}"
              }
            ],
            "url": "{{base_url}}/smm/order",
            "description": "Semua ID harus diambil dari katalog server yang sama. Payload contoh belum siap dikirim sebelum variabel diisi.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"service_id\": \"{{smm_service_id}}\",\n  \"target\": \"{{target}}\",\n  \"quantity\": \"{{quantity}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Status SMM",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/smm/order/{{order_id}}",
            "description": "Semua ID harus diambil dari katalog server yang sama. Payload contoh belum siap dikirim sebelum variabel diisi."
          }
        }
      ]
    }
  ]
}
