Агуулгыг алгасах

Хөгжүүлэгчийн консол — sandbox ба статистик

Хүн, оператор, бодит мөнгө оролцуулахгүйгээр mini app-аа турших хэрэгслүүд. Бүгд workspace route (/api/v1/miniapp/dev/…): Gerege App-д нэвтэрсэн, тухайн апп-ыг эзэмшдэг байгууллагын гишүүн, унших нь miniapp.read, өөрчлөх нь miniapp.manage эрхтэй. Апп өөр байгууллагынх бол 404. Консолын дэлгэцүүд цөмийн shell-д нэмэгдэж байгаа тул доорх API нь эх сурвалж.

1. Webhook хүргэлтүүд

Method Зам
GET /dev/apps/{id}/webhook/deliveries?status=&environment=&limit=&cursor= Outbox, шинэ нь эхэнд
POST /dev/apps/{id}/webhook/deliveries/{event_id}/retry «Дахин илгээх» → 202
POST /dev/apps/{id}/webhook/test Гарын үсэгтэй webhook.test-ийг одоо илгээж, үр дүнг хариулна
  • Жагсаалт: status ∈ pending, delivered, failed, skipped; environment ∈ test, live; limit 1–100 (анхдагч 50); дараагийн хуудас cursor=<next_cursor>. Хариу {items, next_cursor?}, мөр бүр:
{ "id": "evt_…", "type": "payment_intent.succeeded", "environment": "live", "livemode": true,
  "object_id": "pi_…", "status": "failed", "attempts": 8, "next_attempt_at": null,
  "last_status_code": 500, "last_error": "HTTP 500", "delivered_at": null,
  "created_at": "2026-10-22T09:00:00Z", "payload": { "id": "evt_…", "type": "…", "data": { "object": {} } } }
  • Дахин илгээх нь event-ийг одоо илгээх ээлжинд оруулж, retry-н хуваарийг шинээр эхлүүлнэ (минутын дотор илгээгдэнэ). Body нь анхных — гарын үсэг нь шинэ t-тэй.
  • Тест илгээлт нь жирийн outbox event: бодит event-ийн адил signer, secret-ээр гарын үсэг зурагдаж, жагсаалтад орж, амжилтгүй бол ижил хуваариар retry хийгдэнэ — тест амжилттай бол бодит замын тест амжилттай. Хариу: {event_id, ok, status_code, error, duration_ms, delivery}. Минутад 20 удаа.
  • Webhook URL тохируулаагүй бол 409 no_webhook.

webhook.test-ийн body (livemode үргэлж false):

{ "id": "evt_…", "type": "webhook.test", "created_at": "…", "livemode": false, "app": "esim",
  "data": { "object": { "message": "Gerege App webhook test", "object": "webhook_test" } } }

2. Тест хэрэглэгч

Апп draft / in_review байхад бүртгэсэн гишүүнээс гадна нээж болох хүмүүс.

Method Зам
GET /dev/apps/{id}/test-users {items: [{user_id, note, added_by, created_at, name?, email?}], limit: 50}
POST /dev/apps/{id}/test-users {"user_id"} эсвэл {"email"}, note? (≤ 120) → 201 (шинэ) / 200 (аль хэдийн)
DELETE /dev/apps/{id}/test-users/{user_id} 204
  • Тест хэрэглэгч нь таны байгууллагын идэвхтэй гишүүн байх ЗААВАЛ — user id-аар ч, имэйлээр ч. Тест хэрэглэгч хянагдаагүй апп-ыг launcher-тээ батлагдсан апп шиг харна; тиймээс танихгүй хүнийг нэмэх боломжгүй (404 user_not_found). Платформ гадны хүнийг имэйлээр хайх боломж өгөхгүй.
  • Нэг апп-д ≤ 50 (409 too_many_test_users). Түдгэлзүүлсэн апп-д нэмэхгүй (409 suspended).
  • Тест хэрэглэгчийн нээлтийн код нь tester код — test credential (mapp_test_…) солино; мөнгө хөдлөхгүй.

3. Тест төлбөр

Хэн ч апп-ыг нээлгүйгээр test горимын intent үүсгэж, host-ийн баталгаажуулалтыг консолоос тоглуулна.

Method Зам
GET /dev/apps/{id}/test-intents?cursor= Test intent-үүд, шинэ нь эхэнд, 20-оор ({items, next_cursor?})
POST /dev/apps/{id}/test-intents Body нь payments API-ийнх (payments.md §2); Idempotency-Key сонголттой
POST /dev/apps/{id}/test-intents/{pi}/confirm Host-ийн «Төлөх»-ийг тоглуулна → intent

Баталгаажуулалт нь хүний баталгаажуулалттай ижил дүрмээр — дүн шийднэ: …01 → failed (test_declined), …02 → canceled, manual → requires_capture, бусад → succeeded — тохирох webhook outbox-д орно. Буцаан ирсэн intent-ийг таны backend payments API-аар (capture, cancel, refunds) test credential-ээр үргэлжлүүлнэ. Intent нь хөгжүүлэгчийнх (таны өөрийн user_ref).

4. Статистик

Method Зам
GET /dev/analytics?from=&to=&environment= Байгууллагын апп бүрийн нийлбэр
GET /dev/apps/{id}/analytics?from=&to=&environment= Нэг апп, өдөр бүрээр
  • from, to — Улаанбаатарын огноо (YYYY-MM-DD), анхдагч сүүлийн 30 хоног, ≤ 366 хоног. environment — live (анхдагч, олон нийтийн) эсвэл test (таны болон тест хэрэглэгчдийн).
  • Өдрийн мөр / нийлбэр: launches, unique_persons, consents_granted, consents_revoked, payments (төлөв → тоо), captured_amount, refunded_amount (MNT). Өдрүүдийг Asia/Ulaanbaatar-аар хуваана.
  • Зөвхөн тоо гарна — хэн нь ч, user_ref нь ч биш.
  • Launch бүрийг 400 хоног хадгална (хамгийн урт 366 хоногийн хугацааг бүтнээр нь хамарна); түүнээс өмнөх өдрүүдэд launches, unique_persons нь 0.
  • Consent нь хүн бүрийн хамгийн сүүлийн төлөвөөр тоологдоно (үйл явдлын лог биш). Payments нь тухайн хугацаанд үүссэн intent-ээр.
{ "app_id": "…", "slug": "esim", "from": "2026-09-23", "to": "2026-10-22", "timezone": "Asia/Ulaanbaatar",
  "environment": "live", "currency": "MNT",
  "totals": { "launches": 1204, "unique_persons": 388, "consents_granted": 41, "consents_revoked": 3,
              "payments": { "succeeded": 97, "canceled": 12 }, "captured_amount": 4365000, "refunded_amount": 45000 },
  "days": [ { "date": "2026-10-22", "launches": 51, "…": "…" } ] }