API & Webhook
Organizatör panelinden (Geliştirici → API anahtarları) anahtar oluştur. Tüm tutarlar kuruş cinsindendir. OpenAPI 3.1 şeması
Kimlik doğrulama
curl https://masabasi.vip/api/v1/events \ -H "Authorization: Bearer mb_live_xxxxxxxx"
Liste uçları page ve per_page (≤100) alır; yanıt { data, meta: { page, per_page, total } } biçimindedir. Hatalar { error } döner.
Uç noktalar
GET
/me— API anahtarının bağlı olduğu organizatörGET
/events— Etkinlikleri listelestatus DRAFT|LIVE|PAUSED|ARCHIVEDpage sayfaper_page 1-100GET
/events/{id}— Etkinlik detayı (tarihlerle birlikte)GET
/events/{id}/products— Biletler, eklentiler ve masa koltuklarıGET
/events/{id}/availability— Kalan kapasiteleroccurrence_id tarih (boş = ilk aktif tarih)GET
/events/{id}/orders— Siparişlerstatus COMPLETED vb.updated_since ISO tarihpage per_page GET
/orders/{id}— Sipariş (id veya MB-XXXX)POST
/orders/{id}/mark-paid— Havale/EFT siparişini ödendi olarak işaretlePOST
/orders/{id}/cancel— Siparişi iptal etnotify booleanGET
/events/{id}/attendees— Katılımcılarsearch ad/e-posta/kodoccurrence_id page per_page POST
/events/{id}/attendees— Manuel katılımcı ekleprice_id string*first_name string*last_name string*email string*quantity intoccurrence_id stringamount int (kuruş)send_email booleanignore_capacity booleanGET
/attendees/{id}— Katılımcı (id veya bilet kodu)PATCH
/attendees/{id}— Katılımcı güncellefirst_name last_name email phone notes POST
/attendees/{id}/check-in— Giriş yapcheck_in_list_id string (boş = ilk liste)DELETE
/attendees/{id}/check-in— Girişi geri alcheck_in_list_id string*GET
/events/{id}/check-in-lists— Giriş listeleri ve canlı sayılarGET
/events/{id}/tables— Masa oyunu masaları ve oyuncularPOST
/events/{id}/tables/auto-assign— Tercihlere göre otomatik yerleştiroccurrence_id round_id fill booleanPOST
/tables/{id}/assignments— Oyuncuyu masaya ataattendee_id string*force booleanDELETE
/assignments/{id}— Masa atamasını kaldırGET
/webhook-events— Webhook olay türleri (kimlik doğrulamasız)Webhooklar
Her olay için endpoint'ine POST gönderilir. 2xx dışı yanıtlar üstel geri çekilmeyle (1dk, 5dk, 30dk, 2sa, 6sa, 12sa) 7 kez yeniden denenir. Gönderim geçmişi ve manuel tekrar panelde.
Başlıklar
- X-Masabasi-Event: order.completed
- X-Masabasi-Delivery: <teslimat id>
- X-Masabasi-Timestamp: 1767225600
- X-Masabasi-Signature: sha256=<hex hmac>
İmza doğrulama (Node.js)
import crypto from "node:crypto";
function verify(req, rawBody, secret) {
const ts = req.headers["x-masabasi-timestamp"];
const sig = req.headers["x-masabasi-signature"];
const expected = "sha256=" + crypto.createHmac("sha256", secret).update(ts + "." + rawBody).digest("hex");
const fresh = Math.abs(Date.now() / 1000 - Number(ts)) < 300; // 5 dk tekrar saldırısı koruması
return fresh && crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected));
}Gövde
{
"id": "6f1c…",
"type": "order.completed",
"created_at": "2026-11-02T18:00:00.000Z",
"organizer_id": "…",
"event_id": "…",
"data": { "public_id": "MB-7XK2P9Q", "status": "COMPLETED", "total": 45000, "attendees": [ … ] }
}order.createdSipariş oluşturuldu (ödeme öncesi bilgiler girildi)order.completedSipariş tamamlandı / ödendiorder.cancelledSipariş iptal edildiorder.refundedSipariş iade edildi (kısmi/tam)attendee.createdKatılımcı oluşturulduattendee.updatedKatılımcı güncellendiattendee.cancelledKatılımcı iptal edildiattendee.checked_inKatılımcı giriş yaptıattendee.check_in_revertedGiriş geri alındıtable.assignedMasa ataması yapıldıtable.unassignedMasa ataması kaldırıldıtable.preferences_submittedMasa tercihleri gönderildiwaitlist.joinedBekleme listesine katılımevent.updatedEtkinlik güncellendiproduct.updatedBilet/ürün oluşturuldu veya güncellendi