Өткізілгенін алу

Жазылымдар. Вебхук тіркелгеннен кейін кілттің әр желісіне жазылым пайда болады. 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 мәні.