Skip to main content
Bu sayfa, kliniğin ürün envanterini yöneten beş kaynağı anlatır: ürünler, ürün kategorileri, ürün markaları, salt okunur katalog ürünleri ve ürün setleri. Ürünler, stok ve satış tarafındaki kayıtlara kaynaklık eder. Stok bakiyeleri ve hareketleri için Depolar ve stok, satış kalemleri için Satışlar sayfasına bakın. Bu sayfadaki tüm endpoint’ler https://app.flextell.ai/api/v1 altındadır. Her istekte Authorization: Bearer <access_token> ve X-Tenant: <tenant_id> başlıkları gerekir (Klinikler ve X-Tenant). Listeler sayfalıdır; per_page 1–100 arasındadır, varsayılan 15’tir (Sayfalama).

Endpoint özeti

Başarılı yanıtlar {"success": true, "data": ...} zarfıyla gelir. Başka bir kliniğe ait kayıtlar 404 döner. İzin eksikse 403 FORBIDDEN alırsınız (İzinler ve görünürlük).

Ürün nesnesi

Ürün, kliniğe aittir. Ürün oluştururken product_type_id ve base_unit_code_id değerlerini GET /general/product-types ve GET /general/unit-codes arama listelerinden alın (Klinik ve genel). Ürün nesnesi stok bakiyesi içermez. Bakiye için Depolar ve stok sayfasındaki stok endpoint’lerini kullanın.

Stok takip modları

Ürün listeleme

GET /products için süzgeçler: Sıralama kuralları (Türkçe harf sıralaması, sort_order verilmediğinde yön) için Filtreleme ve sıralama sayfasına bakın.

Ürün oluşturma

POST /products gövdesinde yukarıdaki alanlara ek olarak initial_stock_quantity gönderebilirsiniz (0 ile 9999999999.9999 arası, en çok 4 ondalık).
  • initial_stock_quantity 0’dan büyükse Create:Product izninin yanında Create:StockMovement izni de gerekir. Ürün oluşurken kliniğin varsayılan deposuna bir başlangıç stoku hareketi yazılır. Varsayılan depo yoksa Ana Depo adıyla oluşturulur.
  • Güncellemede (PUT) alanların hepsi isteğe bağlıdır. Boşaltılabilir alanlara null göndererek değeri silebilirsiniz. initial_stock_quantity ve catalog_product_id güncellemede kabul edilmez.
  • Aynı barkodu ikinci kez kaydederseniz 422 döner: This barcode is already registered for the current tenant.

Kategoriler ve markalar

Kategoriler ve markalar kliniğe aittir. Ürünlere product_category_id ve product_brand_id ile bağlanır.

Kategori nesnesi

Liste süzgeçleri: search (ad ve açıklama), parent_id, is_active. Sıralama anahtarları: name, is_active, created_at, updated_at (varsayılan created_at, desc). Bir kategoriyi kendi üst kategorisi yaparsanız 422 döner: A category cannot be its own parent.

Marka nesnesi

Liste süzgeçleri: search (ad), is_active. Sıralama anahtarları: name, is_active, products_count, created_at, updated_at. Marka adını değiştirdiğinizde bu markadaki ürünlerin aramada bulunma bilgisi de güncellenir.

Katalog ürünleri

Katalog, tüm kliniklerin ortak kullandığı salt okunur bir ürün listesidir. API’den katalog kaydı eklenemez, değiştirilemez ve silinemez. Katalog erişimi products:read scope’u ve View:Product izniyle yapılır; ayrı bir katalog izni gerekmez. GET /catalog-products süzgeçleri: search (ad, marka adı, açıklama), product_type_id, is_active, created_at_from, created_at_to. is_active göndermezseniz yalnızca aktif kayıtlar gelir. Sıralama anahtarları: name, brand_name, created_at, updated_at (varsayılan name, asc). Pasif bir katalog kaydının detayı 404 döner.

Katalogdan ürün oluşturma

1

Katalog kaydını bulun

GET /catalog-products?search=serum ile arayın ve istediğiniz kaydın id değerini alın.
2

Taslağı alın

GET /catalog-products/{id} yanıtındaki product_prefill nesnesini okuyun. product_brand_id yalnızca aynı adlı bir marka klinikte zaten varsa gelir; detay endpoint’i marka oluşturmaz.
3

Ürünü oluşturun

POST /products gövdesine taslağı koyun, price, tax_rate ve is_active alanlarını ekleyin. Taslak fiyat, KDV oranı ve barkod taşımaz.
POST /products gövdesinde catalog_product_id gönderir ve product_brand_id göndermezseniz marka katalog kaydının brand_name değerinden çözülür: aynı adlı bir marka varsa o kullanılır, yoksa yeni ve aktif bir marka oluşturulur. Açıkça gönderdiğiniz product_brand_id her zaman önceliklidir. Katalogdan yalnızca bağlantı ve marka alınır; diğer alanları siz göndermelisiniz. Pasif veya silinmiş bir katalog kaydı 422 döner.

Ürün setleri

Ürün seti, ürün ve tedavilerden oluşan yeniden kullanılabilir bir pakettir. Set, satış oluştururken tek çağrıyla satış kalemlerine açılır. Setlerin kendi para birimi yoktur; yanıttaki currency_code kliniğin para birimidir. Her kalem (items[]) şu alanlara sahiptir: GET /product-sets süzgeçleri: search (ad ve açıklama), is_active, created_at_from, created_at_to. Sıralama anahtarları: created_at (varsayılan, desc), updated_at, name.
PUT /product-sets/{id} isteğinde items gönderirseniz mevcut kalemlerin hepsi bu listeyle değiştirilir. Kalemleri değiştirmeyecekseniz items alanını hiç göndermeyin.

Seti satış kalemlerine açma

GET /product-sets/{id}/sale-items, setin kalemlerini POST /sales gövdesindeki items[] biçiminde döndürür. Yanıtta product_set_id, name, items[] ve total_price bulunur. Her kalemde staff_id ve warehouse_id null gelir; staff_id satış oluştururken zorunlu olduğu için sizin doldurmanız gerekir. Miktar en az 1’e yükseltilir, indirimler 0’dır. Satış oluşturma ayrıntıları için Satışlar sayfasına bakın.

Kurallar

  • KDV oranları. tax_rate yalnızca 0, 1, 10, 20 olabilir. 8 ve 18 reddedilir.
  • Silme. Ürün, kategori ve marka silme geri alınabilir bir silmedir ve bağımlılık denetimi yapmaz: stoğu veya satış kalemi olan ürün, ürünleri olan marka ya da alt kategorisi olan kategori silinebilir. Silinen kayıtlar Geri Dönüşüm Kutusu’ndan geri yüklenemez. Silinen ürünün barkodu yeniden kullanılabilir. Genel kurallar için Silme yaşam döngüsü sayfasına bakın.
  • Set silme. DELETE /product-sets/{id} kalıcıdır; setin kalemleri de silinir.
  • Başka kliniğin kaydı. Başka bir kliniğe ait marka veya kategori kimliği göndermek 422 döner.
  • Arama. Ürün aramasında sonuçlar önce eşleşme ilgisine göre sıralanır. Açık bir sort_by verirseniz sıralamayı o belirler.

Hata kodları

Tüm hata biçimleri için Hata kodları sayfasına bakın. Bu kaynakları panelde nasıl yöneteceğiniz için Ürünler sayfasına bakın.