masabaşı.vip

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ör
GET/events— Etkinlikleri listele
status DRAFT|LIVE|PAUSED|ARCHIVED
page sayfa
per_page 1-100
GET/events/{id}— Etkinlik detayı (tarihlerle birlikte)
GET/events/{id}/products— Biletler, eklentiler ve masa koltukları
GET/events/{id}/availability— Kalan kapasiteler
occurrence_id tarih (boş = ilk aktif tarih)
GET/events/{id}/orders— Siparişler
status COMPLETED vb.
updated_since ISO tarih
page
per_page
GET/orders/{id}— Sipariş (id veya MB-XXXX)
POST/orders/{id}/mark-paid— Havale/EFT siparişini ödendi olarak işaretle
POST/orders/{id}/cancel— Siparişi iptal et
notify boolean
GET/events/{id}/attendees— Katılımcılar
search ad/e-posta/kod
occurrence_id
page
per_page
POST/events/{id}/attendees— Manuel katılımcı ekle
price_id string*
first_name string*
last_name string*
email string*
quantity int
occurrence_id string
amount int (kuruş)
send_email boolean
ignore_capacity boolean
GET/attendees/{id}— Katılımcı (id veya bilet kodu)
PATCH/attendees/{id}— Katılımcı güncelle
first_name
last_name
email
phone
notes
POST/attendees/{id}/check-in— Giriş yap
check_in_list_id string (boş = ilk liste)
DELETE/attendees/{id}/check-in— Girişi geri al
check_in_list_id string*
GET/events/{id}/check-in-lists— Giriş listeleri ve canlı sayılar
GET/events/{id}/tables— Masa oyunu masaları ve oyuncular
POST/events/{id}/tables/auto-assign— Tercihlere göre otomatik yerleştir
occurrence_id
round_id
fill boolean
POST/tables/{id}/assignments— Oyuncuyu masaya ata
attendee_id string*
force boolean
DELETE/assignments/{id}— Masa atamasını kaldır
GET/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ı / ödendi
order.cancelledSipariş iptal edildi
order.refundedSipariş iade edildi (kısmi/tam)
attendee.createdKatılımcı oluşturuldu
attendee.updatedKatılımcı güncellendi
attendee.cancelledKatılımcı iptal edildi
attendee.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önderildi
waitlist.joinedBekleme listesine katılım
event.updatedEtkinlik güncellendi
product.updatedBilet/ürün oluşturuldu veya güncellendi