Entegratör kontrol listesi
Aşağıdaki sıra bir yazılımın Restroid’e bağlanması için yeterlidir. Eksik kalan her satır 401/403/400 üretir.
Başvuru e-posta iledir: Entegrasyon başvurusu. Anahtar gelmeden API çalışmaz.
Canlıya çıkmadan güvenlik maddelerini uygulayın: anahtar sunucuda, webhook HMAC + 5 dk pencere, HTTPS, 429/409/202 duplicate.
Sıra
- Başvuru — info@restroid.com. Restoranlar, menü modeli (Restroid’den çek / kendi listenizi yaz), satış ve webhook ihtiyacı.
- Süper admin ortak kaydı, kapsamlar, restoran bağları, durum = active, Api-Key.
- GET /me ve GET /restaurants — anahtar ve restaurantId doğrulama.
- Menü: GET /products veya POST /hooks/product-upsert. Dönen
id= satıştaki productId,plu= satıştaki plu. Alan sözlüğü ürün sayfasındadır. - POST /hooks/sale-created — fiş kapanınca bir kez. İptal: sale-cancelled.
- POST /hooks/z-report-created — kasiyer Z alınca / günü kapatınca bir kez. X (ara rapor) gitmez.
- Çekmece / vardiya / gider (hepsi kasa sayfasında): para koyunca
cash-in, alıncacash-out, öğle teslimdecash-shift-closed, giderdeexpense-created. - İsteğe bağlı HTTPS webhook + HMAC: Webhook (stok, muhasebe, cash.shift_closed).
Süper adminin açması gerekenler
| Ne | Neden |
|---|---|
| status = active | draft/suspended 403. |
| Restoran bağları | Bağlanmayan id 403. Varsayılan «tümü» yok. |
| sales_inbound | Fiş ve iptal yazmak için. |
| products | Restroid menüsünü çekmek için. |
| products_inbound | Kendi menünüzü Cloud’a yazmak için. |
| stock | Satışta stok düşümü / iptalde iade. |
| accounting veya cash | Satışta ödeme türüne göre POS_SALE. İptalde aynı grup silinir (CASH_OUT atılmaz). |
| cash (Z, vardiya, çekmece) | POST z-report-created, cash-in, cash-out, cash-shift-closed; GET …/cash, …/z-reports, …/cash-shifts. sales_inbound bunları yazmaz. |
| accounting (gider) | POST /hooks/expense-created. Kategori adı paneldekiyle eşleşmezse yalnız açıklamada kalır. |
| personnel / webhooks | Liste okuma ve size olay gelmesi (webhook URL de açık). |
Sizin yazılımınızda olması gerekenler
- Api-Key yalnız sunucuda; query string ve istemci yok.
- Kendi şube kodu ↔ Restroid restaurantId eşlemesi.
- Kendi ürün kodu ↔ GET /products id (productId) ve plu. price metin, priceAmount sayıdır.
- Fiş kapanınca sale-created; kayıt Finans → Siparişler’e düşer. Aynı externalId tekrarında 202 duplicate başarıdır.
- Kart / nakit / havale kırılımını payments[] ile gönderin; toplam ilk nakite yazılmaz.
- İptal / iade olursa sale-cancelled.
- Gün sonunda z-report-created; externalId sizin Z numaranız (fiş no değil).
- Çekmece giriş/çıkış, öğle vardiya ve gideri kendi uçlarına atın — Z veya sale-created değil.
- total / totalSales sayı (185.5), items[].name dolu.
- Webhook varsa ham gövde + HMAC (timingSafeEqual) + 5 dk timestamp; aynı delivery id’yi iki kez işlemeyin.
Ne yazılmaz
- Personel oluşturma / PIN.
- Kasa hesabı açma veya bakiye düzeltme (GET ile okunur).
- X (ara) raporu inbound — yazıcınızda kalır. Öğle vardiya cash-shift-closed iledir, Z değildir.
- Kısmi iade (yalnız tüm fiş iptali).
- Yazarkasa kâğıdını Restroid’in çekmesi — Z’yi sizin sunucunuz POST eder.
- Fiyat dışı ürün görseli, alerjen, menü grubu — bunlar Cloud panelinde kalır.
