Ü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.
/v1/productsQuery Parametreleri
| Parametre | Tür | Açıklama |
|---|---|---|
page[number] | integer | Sayfa numarası (varsayılan: 1) |
filter[categories] | string | Kategori ID'sine göre filtrele |
filter[title] | string | Başlığa göre ürün ara |
filter[liked] | boolean | Sadece mevcut kullanıcının beğendiği ürünleri getir |
filter[brand] | string | Marka ID'sine göre filtrele |
filter[attributes] | string | Özellik ID'sine göre filtrele |
Örnek İstek
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
{
"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
| Alan | Tür | Açıklama |
|---|---|---|
id | string | Benzersiz ürün tanımlayıcısı |
title | string | Ürün adı |
description | string | Ürün açıklaması |
sku | string | Stok takip kodu |
points | integer | Ürünün puan değeri |
meta | object | Ek ürün meta verileri (kullanım, paketleme, veri sayfası, saklama koşulları) |
share_text | string | Ürün paylaşımı için önceden tanımlanmış metin |
image | object | url ve sizes içeren görsel nesnesi (aşağıdaki Görsel Nesnesi bölümüne bakın) |
active_campaign | object | null | Ürünle ilişkili aktif kampanya |
eligible_to_review | boolean | Kullanıcının bu ürün için değerlendirme yapıp yapamayacağı |
review_criteria | array | Mevcut değerlendirme kriterleri (key, show_stars, show_user_input alanları ile) |
is_parent | boolean | Ürünün görünür alt ürünlere sahip olup olmadığı |
children | array | Alt ürün listesi (Ürün Nesnesi ile aynı yapıda) |
Ekstra Veri Nesneleri
| Alan | Tür | Açıklama |
|---|---|---|
extra.category_banner | string | null | Kategori banner görseli URL'i |
extra.categories[] | array | Mevcut kategoriler (id, label ve thumbnail ile) |
extra.brands[] | array | Mevcut markalar (id, label ve thumbnail ile) |
extra.attributes[] | array | Mevcut özellikler (id ve label ile) |
Görsel Nesnesi
| Alan | Tür | Açıklama |
|---|---|---|
url | string | Ham görsel URL'i, her zaman mevcuttur |
sizes.full | string | null | WebP formatında orijinal boyutlar |
sizes.large | string | null | WebP formatında maks. 1920px genişlik |
sizes.thumbnail | string | null | WebP 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.
/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
| Parametre | Tür | Zorunlu | Açıklama |
|---|---|---|---|
product | string | Evet | Getirilecek ürünün ID'si |
Örnek İstek
curl -X GET "https://marka.prod.loyetta.com/api/v1/products/abc123" \
-H "Authorization: Bearer {musteri-tokeni}" \
-H "Accept: application/json"Yanıt
{
"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)
{
"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.
/v1/products/{product}/likePath Parametreleri
| Parametre | Tür | Zorunlu | Açıklama |
|---|---|---|---|
product | string | Evet | Beğenilecek ürünün ID'si |
Örnek İstek
curl -X POST "https://marka.prod.loyetta.com/api/v1/products/abc123/like" \
-H "Authorization: Bearer {musteri-tokeni}" \
-H "Accept: application/json"Yanıt
{
"success": true
}Hata Yanıtı (404)
{
"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.
/v1/products/{product}/unlikePath Parametreleri
| Parametre | Tür | Zorunlu | Açıklama |
|---|---|---|---|
product | string | Evet | Beğenisi kaldırılacak ürünün ID'si |
Örnek İstek
curl -X POST "https://marka.prod.loyetta.com/api/v1/products/abc123/unlike" \
-H "Authorization: Bearer {musteri-tokeni}" \
-H "Accept: application/json"Yanıt
{
"success": true
}Hata Yanıtı (404)
{
"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.
/v1/products/{product}/sharePath Parametreleri
| Parametre | Tür | Zorunlu | Açıklama |
|---|---|---|---|
product | string | Evet | Paylaşımı kaydedilecek ürünün ID'si |
Örnek İstek
curl -X POST "https://marka.prod.loyetta.com/api/v1/products/abc123/share" \
-H "Authorization: Bearer {musteri-tokeni}" \
-H "Accept: application/json"Yanıt
{
"success": true
}Hata Yanıtı (404)
{
"success": false,
"message": "Product not found"
}