{
 "info": {
  "name": "minik — Click API",
  "description": "Публичная сторона API minik: программный клик, редиректы, постбэки, SDK. Ключ Click API (ak_…) подставьте в переменную {{token}}.",
  "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
 },
 "variable": [
  {
   "key": "base_url",
   "value": "http://localhost:8080",
   "type": "string"
  },
  {
   "key": "token",
   "value": "",
   "type": "string",
   "description": "Заполняется автоматически после POST /auth/login (см. тест-скрипт на этом запросе)."
  }
 ],
 "auth": {
  "type": "bearer",
  "bearer": [
   {
    "key": "token",
    "value": "{{token}}",
    "type": "string"
   }
  ]
 },
 "item": [
  {
   "name": "Click API",
   "item": [
    {
     "name": "POST /click-api/v3",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{base_url}}/click-api/v3",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "click-api",
        "v3"
       ]
      },
      "description": "Резолв клика по alias кампании",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"campaign\": \"abc123\",\n  \"ip\": \"203.0.113.10\",\n  \"user_agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64)\",\n  \"referrer\": \"https://example.com/\",\n  \"language\": \"en-US\",\n  \"country\": \"US\",\n  \"sub_ids\": {\n    \"sub_id_1\": \"creative_42\",\n    \"sub_id_2\": \"adset_7\"\n  },\n  \"parameters\": {\n    \"clickid\": \"fb.abc123\"\n  }\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    }
   ]
  },
  {
   "name": "Трекинг",
   "item": [
    {
     "name": "GET /r/{alias}",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/r/{alias}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "r",
        "{alias}"
       ]
      },
      "description": "Трекинговый редирект клика"
     }
    },
    {
     "name": "HEAD /r/{alias}",
     "request": {
      "method": "HEAD",
      "header": [],
      "url": {
       "raw": "{{base_url}}/r/{alias}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "r",
        "{alias}"
       ]
      },
      "description": "HEAD-проба трекинговой ссылки"
     }
    },
    {
     "name": "GET /click/{alias}",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/click/{alias}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "click",
        "{alias}"
       ]
      },
      "description": "Трекинговый редирект клика (второй путь)"
     }
    },
    {
     "name": "HEAD /click/{alias}",
     "request": {
      "method": "HEAD",
      "header": [],
      "url": {
       "raw": "{{base_url}}/click/{alias}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "click",
        "{alias}"
       ]
      },
      "description": "HEAD-проба трекинговой ссылки (второй путь)"
     }
    },
    {
     "name": "GET /p/{clickID}",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/p/{clickID}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "p",
        "{clickID}"
       ]
      },
      "description": "Прокладка с лендинга на оффер"
     }
    },
    {
     "name": "HEAD /p/{clickID}",
     "request": {
      "method": "HEAD",
      "header": [],
      "url": {
       "raw": "{{base_url}}/p/{clickID}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "p",
        "{clickID}"
       ]
      },
      "description": "HEAD-проба прокладки"
     }
    },
    {
     "name": "GET /p",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/p?",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "p"
       ],
       "query": [
        {
         "key": "_c",
         "value": "",
         "description": "click_id исходного клика (первый по приоритету).",
         "disabled": true
        },
        {
         "key": "subid",
         "value": "",
         "description": "Запасное имя параметра для click_id.",
         "disabled": true
        }
       ]
      },
      "description": "Прокладка на оффер с click_id в query"
     }
    },
    {
     "name": "HEAD /p",
     "request": {
      "method": "HEAD",
      "header": [],
      "url": {
       "raw": "{{base_url}}/p?",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "p"
       ],
       "query": [
        {
         "key": "_c",
         "value": "",
         "description": "",
         "disabled": true
        },
        {
         "key": "subid",
         "value": "",
         "description": "",
         "disabled": true
        }
       ]
      },
      "description": "HEAD-проба прокладки с click_id в query"
     }
    }
   ]
  },
  {
   "name": "Конверсии",
   "item": [
    {
     "name": "GET /{postback_key}/postback",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/{postback_key}/postback",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "{postback_key}",
        "postback"
       ]
      },
      "description": "Входящий S2S-постбэк (конверсия)"
     }
    },
    {
     "name": "POST /{postback_key}/postback",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{base_url}}/{postback_key}/postback",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "{postback_key}",
        "postback"
       ]
      },
      "description": "Входящий S2S-постбэк формой"
     }
    },
    {
     "name": "GET /postback",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/postback",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "postback"
       ]
      },
      "description": "Постбэк без ключа (устаревший путь)"
     }
    },
    {
     "name": "GET /lp-api/offer",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/lp-api/offer?",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "lp-api",
        "offer"
       ],
       "query": [
        {
         "key": "cid",
         "value": "",
         "description": "click_id. Синонимы (по убыванию приоритета) — `click_id`, `subid`.",
         "disabled": true
        },
        {
         "key": "click_id",
         "value": "",
         "description": "",
         "disabled": true
        },
        {
         "key": "subid",
         "value": "",
         "description": "",
         "disabled": true
        }
       ]
      },
      "description": "URL оффера для лендинга"
     }
    },
    {
     "name": "POST /action",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{base_url}}/action",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "action"
       ]
      },
      "description": "Браузерная конверсия (JSON)",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"click_id\": \"b6f1e2b0-8a3a-4c9e-9c9b-8f2e6a1d7c44\",\n  \"action\": \"sale\",\n  \"txid\": \"order-10025\",\n  \"t\": \"9c1f0a2b3c4d5e6f7a8b9c0d1e2f3a4b\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "OPTIONS /action",
     "request": {
      "method": "OPTIONS",
      "header": [],
      "url": {
       "raw": "{{base_url}}/action",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "action"
       ]
      },
      "description": "CORS-preflight"
     }
    },
    {
     "name": "GET /px.gif",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/px.gif?",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "px.gif"
       ],
       "query": [
        {
         "key": "cid",
         "value": "",
         "description": "click_id. Синонимы — `click_id`, `subid`.",
         "disabled": true
        },
        {
         "key": "action",
         "value": "",
         "description": "lead | sale | signup | custom. По умолчанию lead.",
         "disabled": true
        },
        {
         "key": "status",
         "value": "",
         "description": "Произвольный статус, когда `action=custom`.",
         "disabled": true
        },
        {
         "key": "payout",
         "value": "",
         "description": "Принимается, но игнорируется — сумма берётся из оффера.",
         "disabled": true
        },
        {
         "key": "currency",
         "value": "",
         "description": "Принимается, но игнорируется — валюта берётся из оффера.",
         "disabled": true
        },
        {
         "key": "txid",
         "value": "",
         "description": "Идентификатор транзакции, ключ антидубля.",
         "disabled": true
        },
        {
         "key": "t",
         "value": "",
         "description": "Пер-клик токен конверсии (то же, что поле `t` в /action).",
         "disabled": true
        }
       ]
      },
      "description": "Браузерная конверсия без JS (пиксель)"
     }
    }
   ]
  },
  {
   "name": "MClient",
   "item": [
    {
     "name": "POST /mclient/v1",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{base_url}}/mclient/v1",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "mclient",
        "v1"
       ]
      },
      "description": "Удалённое исполнение решения кампании",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"campaign\": \"abc123\",\n  \"token\": \"mct_9f2c…\",\n  \"channel\": \"mclient_php\",\n  \"ip\": \"203.0.113.10\",\n  \"user_agent\": \"Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X)\",\n  \"referrer\": \"https://news.example.com/article\",\n  \"language\": \"en-US\",\n  \"sub_ids\": {\n    \"sub_id_1\": \"creative_42\"\n  }\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "OPTIONS /mclient/v1",
     "request": {
      "method": "OPTIONS",
      "header": [],
      "url": {
       "raw": "{{base_url}}/mclient/v1",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "mclient",
        "v1"
       ]
      },
      "description": "CORS-preflight"
     }
    }
   ]
  },
  {
   "name": "SDK",
   "item": [
    {
     "name": "GET /sdk/minik.js",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/sdk/minik.js",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "sdk",
        "minik.js"
       ]
      },
      "description": "JS SDK лендинга"
     }
    },
    {
     "name": "GET /sdk/minik.php",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/sdk/minik.php",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "sdk",
        "minik.php"
       ]
      },
      "description": "PHP-хелпер лендинга"
     }
    },
    {
     "name": "GET /sdk/mclient.js",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/sdk/mclient.js",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "sdk",
        "mclient.js"
       ]
      },
      "description": "JS-клиент MClient"
     }
    },
    {
     "name": "GET /sdk/mclient.php",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/sdk/mclient.php",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "sdk",
        "mclient.php"
       ]
      },
      "description": "PHP-класс MClient"
     }
    }
   ]
  },
  {
   "name": "Служебные",
   "item": [
    {
     "name": "GET /healthz",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/healthz",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "healthz"
       ]
      },
      "description": "Health-check"
     }
    }
   ]
  }
 ]
}
