Ürün listesi ve ayarlar
Restoran ayarı Cloud panelindedir. Entegre yazılım ya Restroid menüsünü çeker ya da kendi menüsünü Restroid’e yazar. Satış bunların ardından gider.
Restoran ayarını yazılım nasıl alır
Partner yazılım Cloud paneline girmez. Bağlı restoran için GET atar. Kapsam veya restoran bağı yoksa 403.
| Ne | İstek | Kapsam |
|---|---|---|
| Restoran kimliği | GET /restaurants ve GET /restaurants/{id} | — |
| Ürün / menü + fiyat | GET /restaurants/{id}/products | products |
| Kategoriler | GET /restaurants/{id}/categories | products |
| Stok bakiyesi | GET /restaurants/{id}/stock | stock |
| Personel | GET /restaurants/{id}/personnel | personnel |
| Kasa | GET /restaurants/{id}/cash | cash |
| Z raporları | GET /restaurants/{id}/z-reports | cash |
| Muhasebe | GET /restaurants/{id}/accounting | accounting |
Listeler ?limit= (1–200, varsayılan 50) ve ?offset= kabul eder. Ürün yanıtında total vardır; 50’den fazla kart için offset ile devam edin.
GET /restaurants alanları
| Alan | Ne işe yarar |
|---|---|
| id | Restroid restoran UUID. Satış ve ürün isteklerinde restaurantId budur. Sizin şube kodunuz değil. |
| name | İşletme adı (paneldeki unvan). |
| code | Restroid restoran kodu (ör. BSK). Bilgi amaçlı; satışta id kullanın. |
1. Restroid menüsünü çekmek
curl -sS "https://cloud.restroid.com/api/public/partner/v1/restaurants/RESTORAN_UUID/products?limit=200&offset=0" \
-H "Api-Key: rkp_..." -H "Accept: application/json"{
"restaurantId": "3f2a1c0e-1111-4222-a333-444455556666",
"total": 86,
"limit": 200,
"offset": 0,
"products": [
{
"id": "a1b2c3d4-0000-4000-8000-000000000001",
"branchId": "b7e1c2d0-4000-8000-9000-000000000010",
"plu": "101",
"name": "Adana",
"categoryId": "cat-izgara",
"categoryName": "Izgara",
"status": "Aktif",
"isHidden": false,
"productType": "item",
"sortOrder": 1,
"price": "185,50",
"priceAmount": 185.5,
"barcode": "8690123456789",
"updatedAt": "2026-08-28T08:00:00.000Z"
}
]
}Kök alanlar
| Alan | Tip | Ne işe yarar |
|---|---|---|
| restaurantId | UUID | Bu listenin restoranı. Satış ve upsert gövdesinde aynı değeri gönderin. |
| total | sayı | Sayfalama öncesi toplam kart. 86 ise ve limit 50 ise ikinci sayfa offset=50. |
| limit | sayı | Bu yanıtta en fazla kaç satır olduğu (istekteki limit). |
| offset | sayı | Atlanan satır sayısı. İlk sayfa 0. |
| products | dizi | Ürün kartları. Boş dizi menünün boş olduğu anlamına gelir. |
products[] — her kart
Restroid menüsünü kendi yazılımınıza yazarken aşağıdaki alanlar gelir. Görsel, alerjen, KDV etiketi ve porsiyon satırı bu listede yoktur; onlar Cloud panelinde kalır.
| Alan | Tip | Ne işe yarar |
|---|---|---|
| id | UUID | Restroid ürün kimliği. Satışta items[].productId budur. Sizin iç stok/ürün kodunuz değildir; kalıcı eşleme anahtarı olarak saklayın. |
| plu | metin | Restroid ürün kodu (PLU). Satışta items[].plu. Stok hareketinde de bu kod yazılır. Boş olabilir; o zaman id kullanın. |
| name | metin | Paneldeki ürün adı. Misafire/kasiyere göstermek ve satışta items[].name için. |
| price | metin | Gösterim fiyatı, TR biçimi ("185,50"). Hesap veya karşılaştırma için kullanmayın. |
| priceAmount | sayı | Aynı fiyatın sayı hali (185.5). Kendi listenize yazın, yuvarlayın, karşılaştırın. |
| barcode | metin | Barkod / sku. Boş olabilir. Sizin ürün kodunuzla eşlemek için kullanın; satışta zorunlu değildir. |
| categoryId | metin | Kategori kimliği. GET /categories içindeki id ile aynıdır. Ağaç ve filtre için. |
| categoryName | metin | Kategori adı (ör. Izgara). Yalnız etiket; aynı isim iki kategoride olabilir, id’ye bakın. |
| status | metin | Aktif, Pasif veya Gizli. Satılabilir kart: Aktif. Pasif satışa kapalıdır. Gizli menüde görünmez. |
| isHidden | boolean | true ise QR / menüde gizlidir. status = Gizli iken genelde true gelir. Satış ekranından eleyin. |
| productType | metin | item = tek ürün, menu = menü/paket. İkisini de sale-created ile gönderebilirsiniz; Restroid porsiyon açmaz. |
| sortOrder | sayı | Panel sırası. Listenizi aynı sırada göstermek için. Küçük sayı önce. |
| branchId | UUID | Kartın şubesi (tenant). Çoğu ortak için restaurantId yeter; çok şubede ayırt etmek içindir. Satış gövdesine konmaz. |
| updatedAt | ISO-8601 | Kartın son değişim anı. product.updated sonrası hangi satırın yenilendiğini anlamak / cache için. |
Satışta hangi alanı kullanırsınız
| GET /products | sale-created | Neden |
|---|---|---|
| id | items[].productId | Restroid kartını tanır; stoğu doğru üründen düşer. |
| plu | items[].plu | Stok satırının item_code değeri. plu yoksa productId, o da yoksa name. |
| name | items[].name | Zorunlu. Boş satır atlanır. |
| priceAmount | items[].amount (isteğe bağlı) | Satır tutarı. Fiş toplamı yine total’den alınır. |
Kendi kodunuz ↔ id / plu eşlemesini bir kez kaydedin. Panelde kart değişince product.updated gelir; liste olayda yoktur, bu GET’i tekrar atın.
Kategori alanları
GET /restaurants/{id}/categories — kapsam products. Ürün kartındaki categoryId buradaki id ile eşleşir.
| Alan | Tip | Ne işe yarar |
|---|---|---|
| id | metin | Kategori kimliği. products[].categoryId budur. |
| parentId | metin veya null | Üst kategori. null ise kök (ör. Izgara). Ağaç kurmak için. |
| name | metin | Görünen ad. |
| sortOrder | sayı | Sıralama. Küçük sayı önce. |
2. Kendi menünüzü Restroid’e yazmak
Kapsam products_inbound açık olmalı. Restroid kartı oluşturur veya PLU / ürün id / sku ile mevcut kartı günceller. En fazla 40 satır / istek.
curl -sS -X POST https://cloud.restroid.com/api/public/partner/v1/hooks/product-upsert \
-H "Api-Key: rkp_..." -H "Content-Type: application/json" \
-d '{
"restaurantId": "3f2a1c0e-1111-4222-a333-444455556666",
"items": [
{
"name": "Adana",
"plu": "101",
"sku": "ADANA-101",
"categoryName": "Izgara",
"price": 185.5,
"status": "Aktif"
}
]
}'| Alan | Zorunlu | Anlamı |
|---|---|---|
| restaurantId | Evet | GET /restaurants id’si. |
| items[].name | Evet | Ürün adı. Boş satır atlanır. |
| items[].plu | Hayır | Yalnız rakam (en fazla 12). Yoksa Restroid numara üretir. |
| items[].sku / barcode / externalId | Hayır | Sizin kodunuz. barcode olarak saklanır; sonraki upsert eşler. |
| items[].productId | Hayır | Daha önce dönen Restroid UUID. Varsa o kart güncellenir. |
| items[].categoryName | Hayır | Yoksa «Entegrasyon». Aynı adda kategori yoksa oluşturulur. |
| items[].price | Hayır | Sayı. 185.5. Yoksa mevcut fiyat korunur / 0. |
| items[].status | Hayır | Aktif, Pasif, Gizli (veya active / hidden). |
202 yanıt
{
"accepted": true,
"event": "product.upsert",
"restaurantId": "…",
"upserted": [
{ "productId": "a1b2c3d4-…", "plu": "101", "name": "Adana", "created": true }
]
}Dönen productId / plu değerini satışta kullanın. Kart Cloud panelinde, QR menüde ve stok kodunda görünür.
| upserted[] | Ne işe yarar |
|---|---|
| productId | Oluşan veya güncellenen Restroid UUID. Bundan sonra GET /products id ve satış productId. |
| plu | Kesinleşen Restroid kodu. Siz plu göndermediyseniz Restroid üretmiş olabilir. |
| name | Kaydedilen ad. |
| created | true = yeni kart, false = mevcut kart güncellendi. |
Diğer ayarlar
Stok bakiyesi (GET …/stock) ürün listesi değildir; depo adedidir. itemCode çoğu zaman ürün plu ile aynıdır.
| Alan | Ne işe yarar |
|---|---|
| warehouseId | Depo UUID. |
| itemCode | Stok kalem kodu. Satışta gönderdiğiniz plu / productId / name ile eşlenir. |
| itemName | Stok satırının adı. |
| quantity | Metin bakiye (ör. "42"). Giriş − çıkış toplamı. |
- Personel / kasa / muhasebe: ilgili GET. PIN, IBAN, telefon, e-posta dönmez. Z listesi: GET …/z-reports (cash).
- Gün sonu Z GET ile alınmaz; kasiyer Z alınca POST /hooks/z-report-created. Anlatım kasa sayfasında.
- Değişiklik haberi: webhook product.updated, stock.changed, personnel.updated, cash.shift_closed, accounting.posted. product.updated içinde liste yoktur; GET /products tekrar alınır.
