{
  "info": {
    "name": "UnblockGlobal API (v1)",
    "description": "API de compra de cripto (on-ramp via Pix) da UnblockGlobal.\n\nFluxo (handshake): **Quote** trava o preço e devolve um `quote_id` (válido ~5 min) → **Create Order** cria o Pix passando só o `quote_id` → **Get Status** acompanha.\n\n## Como usar\n1. Em **Variables**, preencha `secret_key` com sua chave do painel (Desenvolvedores → Chave de API).\n2. Ajuste `asset`, `network`, `amount_brl` e `wallet_address`.\n3. Rode **1. Quote** (salva o `quote_id`) → **2. Create Order** (salva o `order_uuid`) → **3. Get Order Status**.\n\nAuth: todas as chamadas usam `Authorization: Bearer {{secret_key}}` (herdado da collection).",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [{ "key": "token", "value": "{{secret_key}}", "type": "string" }]
  },
  "variable": [
    { "key": "base_url", "value": "https://api.unblockglobal.com/api/v1" },
    { "key": "secret_key", "value": "sk_live_xxxxxxxxxxxxxxxxxxxx" },
    { "key": "asset", "value": "USDT" },
    { "key": "network", "value": "polygon" },
    { "key": "amount_brl", "value": "200" },
    { "key": "wallet_address", "value": "0x0000000000000000000000000000000000000000" },
    { "key": "quote_id", "value": "" },
    { "key": "external_id", "value": "pedido-loja-123" },
    { "key": "order_uuid", "value": "" },
    { "key": "docs_email", "value": "voce@empresa.com" },
    { "key": "docs_code", "value": "" }
  ],
  "item": [
    {
      "name": "Compra (on-ramp)",
      "item": [
        {
          "name": "1. Quote — trava o preço (retorna quote_id)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "if (pm.response.code === 200) {",
                  "  const d = pm.response.json();",
                  "  if (d && d.quote_id) { pm.collectionVariables.set('quote_id', d.quote_id); }",
                  "  pm.test('quote_id recebido', () => pm.expect(d).to.have.property('quote_id'));",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "url": { "raw": "{{base_url}}/quotes", "host": ["{{base_url}}"], "path": ["quotes"] },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount_brl\": {{amount_brl}},\n  \"asset\": \"{{asset}}\",\n  \"network\": \"{{network}}\",\n  \"wallet_address\": \"{{wallet_address}}\"\n}"
            },
            "description": "Informe `amount_brl` (quanto pagar) OU `crypto_receive` (quanto receber), `asset`, `network` e `wallet_address` (que vai receber a cripto). Retorna o `quote_id` (válido ~5 min) com a cotação travada. Salva o `quote_id` na collection automaticamente."
          }
        },
        {
          "name": "2. Create Order — gera o Pix (só quote_id)",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "if (pm.response.code === 201) {",
                  "  const d = pm.response.json().data;",
                  "  if (d && d.uuid) { pm.collectionVariables.set('order_uuid', d.uuid); }",
                  "  pm.test('order criada', () => pm.expect(d).to.have.property('uuid'));",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "url": { "raw": "{{base_url}}/orders", "host": ["{{base_url}}"], "path": ["orders"] },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"quote_id\": \"{{quote_id}}\",\n  \"external_id\": \"{{external_id}}\"\n}"
            },
            "description": "Cria o pedido a partir do `quote_id` travado (preço já definido na cotação). `external_id` é opcional (seu identificador, ex.: nº do pedido na loja) e permite consultar depois pelo seu próprio ID. Retorna `pix_copy_paste` (use p/ gerar o QR), valores e `expires_at`. Salva o `order_uuid` automaticamente."
          }
        },
        {
          "name": "Listar pedidos (filtros)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/orders?status=completed&from=2026-06-01&limit=20&page=1",
              "host": ["{{base_url}}"],
              "path": ["orders"],
              "query": [
                { "key": "status", "value": "completed", "description": "completed | pending | expired | failed" },
                { "key": "from", "value": "2026-06-01", "description": "data inicial (YYYY-MM-DD)" },
                { "key": "to", "value": "", "description": "data final (YYYY-MM-DD)", "disabled": true },
                { "key": "limit", "value": "20" },
                { "key": "page", "value": "1" }
              ]
            },
            "description": "Lista os pedidos da conta com filtros (status, período) e paginação. Retorna `data[]` + `meta` (page, per_page, total, last_page)."
          }
        },
        {
          "name": "3. Get Order Status",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{base_url}}/orders/{{order_uuid}}", "host": ["{{base_url}}"], "path": ["orders", "{{order_uuid}}"] },
            "description": "Status do pedido. Aceita o nosso `uuid` OU o seu `external_id` no lugar do {{order_uuid}}. `display_status`: awaiting_payment, processing, completed, expired, failed."
          }
        },
        {
          "name": "Validate Wallet",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "url": { "raw": "{{base_url}}/wallets/validate", "host": ["{{base_url}}"], "path": ["wallets", "validate"] },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"address\": \"{{wallet_address}}\",\n  \"network\": \"{{network}}\"\n}"
            },
            "description": "Valida um endereço numa rede antes de criar o pedido."
          }
        }
      ]
    },
    {
      "name": "Documentação (gate por e-mail)",
      "item": [
        {
          "name": "Request Access — envia código",
          "request": {
            "auth": { "type": "noauth" },
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "url": { "raw": "{{base_url}}/docs/request-access", "host": ["{{base_url}}"], "path": ["docs", "request-access"] },
            "body": { "mode": "raw", "raw": "{\n  \"email\": \"{{docs_email}}\"\n}" },
            "description": "Envia um código por e-mail se a conta estiver habilitada (resposta neutra)."
          }
        },
        {
          "name": "Verify — confere o código",
          "request": {
            "auth": { "type": "noauth" },
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "url": { "raw": "{{base_url}}/docs/verify", "host": ["{{base_url}}"], "path": ["docs", "verify"] },
            "body": { "mode": "raw", "raw": "{\n  \"email\": \"{{docs_email}}\",\n  \"code\": \"{{docs_code}}\"\n}" }
          }
        }
      ]
    }
  ]
}
