API-пайплайн: применить купон
Цель: проверить код купона, добавить его в свой кошелёк, увидеть цену с ним и оплатить им Pro или план.
Шаги
1. Проверка (после входа).
GET /v0/graph/coupons/validate?code=SPRING25
→ {"valid": true, "message": "…", "terms": {"title": "…", "area": "PROMOTIONAL", "discount_type": "PERCENTAGE", "discount_value": 50.0, …}}
2. Добавить в кошелёк.
POST /v0/my/coupons/clip
{"code": "SPRING25"}
→ {"coupon": {"nonce": "<clip>", "code": "SPRING25", "area": "PROMOTIONAL", "clipped": {"remaining": …, "can_use": true, "valid_until": "…"}, …},
"already_clipped": false}
3. Ваш кошелёк. GET /v0/my/coupons?kind=clipped → ваши купоны с remaining, can_use, use_block_reason.
4. Расчёт цены.
GET /v0/my/coupons/quote?coupon=<clip>&target=pro&project=<project>
→ {"target": "pro", "clip": "<clip>", "list_usd": 18.0, "discount_usd": 9.0, "charged_usd": 9.0,
"wallet_left_usd": 0.0, "balance_usd": 31.0, "enough": true}
target: pro (один месяц на project) или monthly, yearly, lifetime.
5. Оплата. POST /v0/my/projects/<project>/pro {"coupon": "<clip>"} или POST /v0/my/plan {"kind": "yearly", "coupon": "<clip>"} → list_usd, discount_usd, charged_usd. API-пайплайн: подключить Pro для проекта API-пайплайн: купить план Pro до 10 проектов
Правила
- Скидку на Pro и планы дают только купоны, выпущенные Cabi.Chat в областях
SUBSCRIPTIONилиPROMOTIONAL; остальные отклоняются при расчёте и оплате. - Оплата купоном из кошелька: код, не добавленный в кошелёк → 400
no such coupon in your wallet: clip it first with POST /v0/my/coupons/clip. - Купон и списание проходят вместе или не проходят вовсе; скидка никогда не превышает цену. Полностью покрытое списание всё равно видно в ваших транзакциях, с суммой 0.
- Не хватает средств после купона → 400
insufficient funds: X USDT required after the coupon (balance Y). - Если купон нельзя добавить, ответ называет причину.
Поверхность API
| Эндпоинт | Назначение | FE | ИИ / оракул |
|---|---|---|---|
GET /v0/graph/coupons/validate |
Проверить код | нет | да |
POST /v0/my/coupons/clip |
Добавить в кошелёк | да | да |
GET /v0/my/coupons?kind=clipped |
Ваш кошелёк | да | да |
GET /v0/my/coupons/quote |
Цена с купоном | да | да |
POST /v0/my/projects/{nonce}/pro, POST /v0/my/plan |
Оплатить с coupon |
да | да |
Индекс: API-пайплайны — индекс