Өткізілгенін алу
Жазылымдар. Вебхук тіркелгеннен кейін кілттің әр желісіне жазылым пайда болады. GET /subscriptions/ оларды көрсетеді: subscription_id, channel_id, state (active, paused, revoked) және watermark — осы жазылымдағы соңғы оқиға нөмірі. Әр жеткізілім X-Wahub-Subscription-ID және X-Wahub-Sequence тақырыптарымен келеді: әр жазылым бойынша соңғы өңделген sequence мәнін сақтаңыз.
Өткізілгенін қуып жету. Сервис қайталау мерзімінен ұзақ істемей тұрса немесе sequence ішінде олқылық тапсаңыз, GET /subscriptions/<subscription_id>/events/?after_sequence=<соңғы өңделген>&limit=100 оқыңыз (limit 500-ге дейін). Жауаптағы deliveries sequence өсуі бойынша: delivery_id, event_id, sequence және body — вебхукқа келген сол JSON. has_more false болғанша next_cursor мәнін after_sequence ретінде беріңіз. Оқу жеткізілімді растамайды және қайталауды тоқтатпайды.
curl "https://dialogs.tehprof.kz/api/v1/gw/subscriptions/0b6f…/events/?after_sequence=120&limit=100" \
-H "Authorization: Bearer gw_xxx"
200 {
"subscription_id": "0b6f…", "channel_id": "32",
"state": "active", "ack_mode": "legacy_2xx", "watermark": 124,
"deliveries": [
{ "delivery_id": "9c1e…", "event_id": "5a7d…", "sequence": 121,
"body": { "messages": [ { "event": "message.created", "message_id": "8841" } ] },
"acked_at": null, "stop_reason": "" }
],
"next_cursor": 124,
"has_more": false
}Жеткізілімді қайталау. POST /deliveries/<delivery_id>/replay/ сәтсіз жеткізілімді сол delivery_id мәнімен қайта жібереді — телнұсқадан қорғанысыңыз әдеттегідей жұмыс істейді. Жауап 202. Жеткізілім «сәтсіз» күйде болмаса немесе желіге қолжетімділік жоқ болса — 409 replay_unavailable.
Кідірту және өшіру. PATCH /subscriptions/<subscription_id>/ сұрауы { "state": "paused" } мәнімен желі бойынша жеткізуді тоқтата тұрады: оқиғалар жиналып, { "state": "active" } кейін жіберіледі. { "state": "revoked" } жазылымды біржола өшіреді; желі оқиғаларын қайта алу үшін жаңасын жасаңыз: POST /subscriptions/grant/, { "channel_id": 32 }. ack_mode: legacy_2xx — жеткізілім кез келген 2xx жауабымен қабылданады; receipt_v1 — тек { "delivery_id": …, "body_sha256": … } JSON бар 200 жауабымен, мұндағы body_sha256 — бастапқы дененің hex түріндегі sha256 мәні.