Loyetta

Ürünler

Ürünler, katalogdaki gerçek ürünleri temsil eder. Kullanıcılar ürünlere göz atabilir, detaylarını görüntüleyebilir, beğenebilir/beğenmekten vazgeçebilir ve paylaşım işlemlerini kaydedebilir. Listeleme endpoint'i ayrıca filtre arayüzleri oluşturmak için kullanılabilecek kategoriler, markalar ve özellikler gibi ekstra veriler döndürür.

Ürünler, kategoriler, markalar ve özellikler Loyetta Dashboard üzerinden yönetilir. Bu API endpoint'leri ile entegrasyona başlamadan önce, ürün katalogunuzu dashboard üzerinden oluşturun ve düzenleyin.


Ürünleri Listele

Kategori, marka, özellik, başlık veya beğeni durumuna göre opsiyonel filtreleme ile sayfalanmış ürün listesini alın.

GET/v1/products

Query Parametreleri

ParametreTürAçıklama
page[number]integerSayfa numarası (varsayılan: 1)
filter[categories]stringKategori ID'sine göre filtrele
filter[title]stringBaşlığa göre ürün ara
filter[liked]booleanSadece mevcut kullanıcının beğendiği ürünleri getir
filter[brand]stringMarka ID'sine göre filtrele
filter[attributes]stringÖzellik ID'sine göre filtrele

Örnek İstek

bash
curl -X GET "https://marka.prod.loyetta.com/api/v1/products?filter[categories]=1&filter[brand]=2&page[number]=1" \
  -H "Authorization: Bearer {musteri-tokeni}" \
  -H "Accept: application/json"

Yanıt

json
{
  "data": [
    {
      "id": "abc123",
      "title": "Premium Un",
      "description": "Fırıncılık için yüksek kaliteli un.",
      "sku": "FLR-001",
      "points": 500,
      "meta": {
        "use_description": "Kullanıma hazır bir karışımdır. %100 kullanılması önerilir.",
        "packing_description": "25 kg'lık kraft torba.",
        "datasheet": "https://example.com/datasheet.pdf",
        "storage_conditions_description": "Serin ve kuru yerde muhafaza ediniz."
      },
      "share_text": "Bu harika ürüne göz atın!",
      "image": {
        "url": "https://example.com/images/product-thumbnail.png",
        "sizes": {
          "full": "https://example.com/images/product.webp",
          "large": "https://example.com/images/product-large.webp",
          "thumbnail": "https://example.com/images/product-thumb.webp"
        }
      },
      "active_campaign": null,
      "eligible_to_review": true,
      "review_criteria": [
        {
          "key": "quality",
          "show_stars": true,
          "show_user_input": true
        }
      ],
      "is_parent": false,
      "children": []
    }
  ],
  "links": {
    "first": "https://marka.prod.loyetta.com/api/v1/products?page[number]=1",
    "last": "https://marka.prod.loyetta.com/api/v1/products?page[number]=3",
    "prev": null,
    "next": "https://marka.prod.loyetta.com/api/v1/products?page[number]=2"
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 3,
    "path": "https://marka.prod.loyetta.com/api/v1/products",
    "per_page": 15,
    "to": 15,
    "total": 42
  },
  "extra": {
    "category_banner": "https://example.com/storage/category-banner.jpg",
    "categories": [
      { "id": "cat1", "label": "Fırıncılık Ürünleri", "thumbnail": "https://example.com/cat1.jpg" }
    ],
    "brands": [
      { "id": "brand1", "label": "Premium Markalar", "thumbnail": "https://example.com/brand1.jpg" }
    ],
    "attributes": [
      { "id": "attr1", "label": "Organik" }
    ]
  }
}

Listeleme yanıtındaki extra nesnesi, frontend'inizde filtre ve navigasyon arayüzleri oluşturmak için kullanılabilecek kategoriler, markalar ve özellikler sağlar. category_banner alanı, kategori filtresi uygulanmadığında null döner.

Ürün Nesnesi

AlanTürAçıklama
idstringBenzersiz ürün tanımlayıcısı
titlestringÜrün adı
descriptionstringÜrün açıklaması
skustringStok takip kodu
pointsintegerÜrünün puan değeri
metaobjectEk ürün meta verileri (kullanım, paketleme, veri sayfası, saklama koşulları)
share_textstringÜrün paylaşımı için önceden tanımlanmış metin
imageobjecturl ve sizes içeren görsel nesnesi (aşağıdaki Görsel Nesnesi bölümüne bakın)
active_campaignobject | nullÜrünle ilişkili aktif kampanya
eligible_to_reviewbooleanKullanıcının bu ürün için değerlendirme yapıp yapamayacağı
review_criteriaarrayMevcut değerlendirme kriterleri (key, show_stars, show_user_input alanları ile)
is_parentbooleanÜrünün görünür alt ürünlere sahip olup olmadığı
childrenarrayAlt ürün listesi (Ürün Nesnesi ile aynı yapıda)

Ekstra Veri Nesneleri

AlanTürAçıklama
extra.category_bannerstring | nullKategori banner görseli URL'i
extra.categories[]arrayMevcut kategoriler (id, label ve thumbnail ile)
extra.brands[]arrayMevcut markalar (id, label ve thumbnail ile)
extra.attributes[]arrayMevcut özellikler (id ve label ile)

Görsel Nesnesi

AlanTürAçıklama
urlstringHam görsel URL'i, her zaman mevcuttur
sizes.fullstring | nullWebP formatında orijinal boyutlar
sizes.largestring | nullWebP formatında maks. 1920px genişlik
sizes.thumbnailstring | nullWebP formatında maks. 400px genişlik

image.url alanı her zaman mevcuttur. Ancak image.sizes değerleri, görseller işlenirken null olabilir. Her zaman bir fallback deseni kullanın: image.sizes.thumbnail ?? image.url veya image.sizes.large ?? image.url.


Ürün Detayı Getir

Belirli bir ürün hakkında detaylı bilgi alın.

GET/v1/products/{product}

Listeleme endpoint'i de içerik verilerini döndürse de, kullanıcı belirli bir içerikle etkileşime geçtiğinde bu detay endpoint'ini çağırmanız önerilir. Bu istek arka planda yapılabilir ve Loyetta'nın analitiği doğru şekilde takip etmesine yardımcı olur.

Path Parametreleri

ParametreTürZorunluAçıklama
productstringEvetGetirilecek ürünün ID'si

Örnek İstek

bash
curl -X GET "https://marka.prod.loyetta.com/api/v1/products/abc123" \
  -H "Authorization: Bearer {musteri-tokeni}" \
  -H "Accept: application/json"

Yanıt

json
{
  "success": true,
  "data": {
    "id": "abc123",
    "title": "Premium Un",
    "description": "Fırıncılık için yüksek kaliteli un.",
    "sku": "FLR-001",
    "points": 500,
    "meta": {
      "use_description": "Kullanıma hazır bir karışımdır. %100 kullanılması önerilir.",
      "packing_description": "25 kg'lık kraft torba.",
      "datasheet": "https://example.com/datasheet.pdf",
      "storage_conditions_description": "Serin ve kuru yerde muhafaza ediniz."
    },
    "share_text": "Bu harika ürüne göz atın!",
    "image": {
      "url": "https://example.com/images/product-thumbnail.png",
      "sizes": {
        "full": "https://example.com/images/product.webp",
        "large": "https://example.com/images/product-large.webp",
        "thumbnail": "https://example.com/images/product-thumb.webp"
      }
    },
    "active_campaign": null,
    "eligible_to_review": true,
    "review_criteria": [
      {
        "key": "quality",
        "show_stars": true,
        "show_user_input": true
      }
    ],
    "is_parent": false,
    "children": []
  }
}

Hata Yanıtı (404)

json
{
  "success": false,
  "message": "Product not found"
}

Ürünü Beğen

Bir ürünü kimliği doğrulanmış kullanıcının beğeni listesine ekleyin. Beğenilen ürünler daha sonra listeleme endpoint'inde filter[liked]=true ile filtrelenebilir.

POST/v1/products/{product}/like

Path Parametreleri

ParametreTürZorunluAçıklama
productstringEvetBeğenilecek ürünün ID'si

Örnek İstek

bash
curl -X POST "https://marka.prod.loyetta.com/api/v1/products/abc123/like" \
  -H "Authorization: Bearer {musteri-tokeni}" \
  -H "Accept: application/json"

Yanıt

json
{
  "success": true
}

Hata Yanıtı (404)

json
{
  "success": false,
  "message": "Post not found"
}

Ürün Beğenisini Kaldır

Bir ürünü kimliği doğrulanmış kullanıcının beğeni listesinden kaldırın.

POST/v1/products/{product}/unlike

Path Parametreleri

ParametreTürZorunluAçıklama
productstringEvetBeğenisi kaldırılacak ürünün ID'si

Örnek İstek

bash
curl -X POST "https://marka.prod.loyetta.com/api/v1/products/abc123/unlike" \
  -H "Authorization: Bearer {musteri-tokeni}" \
  -H "Accept: application/json"

Yanıt

json
{
  "success": true
}

Hata Yanıtı (404)

json
{
  "success": false,
  "message": "Post not found"
}

Ürünü Paylaş

Bir ürün için paylaşım işlemi kaydedin. Kullanıcı uygulamanız üzerinden bir ürünü paylaştığında etkileşimi takip etmek için bu endpoint'i çağırın.

POST/v1/products/{product}/share

Path Parametreleri

ParametreTürZorunluAçıklama
productstringEvetPaylaşımı kaydedilecek ürünün ID'si

Örnek İstek

bash
curl -X POST "https://marka.prod.loyetta.com/api/v1/products/abc123/share" \
  -H "Authorization: Bearer {musteri-tokeni}" \
  -H "Accept: application/json"

Yanıt

json
{
  "success": true
}

Hata Yanıtı (404)

json
{
  "success": false,
  "message": "Product not found"
}