Nesneler

Nesneler

Özellik türleri, yayınlama, adresler, medya, sections değerleri ve yerelleştirme dahil olmak üzere Objects modülünün arkasındaki genel içerik modeli.

Markdown olarak görüntüle

Objects modülü, platformun genel içerik modelidir. Satıcı, client dashboard'da nesne türleri ("SSS", "Sayfa" veya "Mağaza lokasyonu" gibi içerik türleri) tanımlar; her türün sıralı ve tipli bir özellik listesi vardır. İçerik editörleri daha sonra bu türlerde kayıtlar (girdiler) oluşturur. Storefront'unuz her ikisini de public API üzerinden okur: tür tanımları hangi şekli beklemeniz gerektiğini söyler, kayıtlar içeriği taşır.

Bu, modülü LLM tabanlı ve headless storefront'lar için doğal bir seçim yapar: şemayı öğrenmek için /v1/api/objects/types endpoint'ini bir kez çağırın, ardından kayıtları genel bir şekilde render edin.

Dört endpoint'in tümü /v1/api/objects altında yer alır, salt okunurdur, API anahtarınızda objects:read scope'unu ve objects modülünün etkin olmasını gerektirir (aksi halde 403 {"error":"Module not enabled: objects"}).

Nesne türleri ve özellikler

Bir nesne türünün bir key değeri (URL'lerde kullanılan benzersiz bir slug; types, records, properties ve bulk değerleri rezervedir ve asla görünmez), tekil bir name değeri, bir plural_name değeri ve kayıtlarının yayınlanıp yayınlanmadığını ve nasıl adreslendiğini söyleyen settings değeri vardır. Her tür otomatik olarak zorunlu bir name metin özelliği taşır; kalanını satıcılar ekler.

Türün settings nesnesi:

AlanTürAçıklama
publishablebooleanBu türün kayıtları taslak olarak başlayıp yayınlanması gerekiyorsa true (bkz. Yayınlama ve görünürlük). Taslak adımı olmayan türler için false.
slugobjectYalnızca tür kayıtlarına adres veriyorsa bulunur: {source, prefixes}. source, adresin türetildiği metin özelliğinin anahtarıdır. prefixes, bir dil etiketini o dilin adres önekine eşler, örneğin {"en": "/services", "tr": "/hizmetler"}; boş string önek yok demektir. Türün adresi yoksa bulunmaz.

Bir özellik tanımı şunları içerir:

AlanTürAçıklama
keystring/^[a-z][a-z0-9_]*$/ desenine uyan makine anahtarı. Kayıtların values alanında kullanılan anahtar budur.
labelstringİnsan tarafından okunan etiket.
typestringAşağıdaki özellik türlerinden biri.
optionsarray of string or nullselect ve token_variant özellikleri için izin verilen değerler; diğer tüm türler için null.
localizedbooleanDeğer her içerik dili için ayrı saklanıyorsa true (bkz. Yerelleştirilmiş değerler).
configobject or nullTüre özgü yapılandırma: repeater için {fields, item_label_field}, record_ref ve record_ref_list için {object_type_keys}. Diğer türler için null.
is_requiredbooleanÖzelliğin bir değere sahip olmasının zorunlu olup olmadığı. Yerelleştirilmiş bir özellik için bu, varsayılan dilde bir değer demektir.
positionintegerTür içindeki sıralama pozisyonu, 0 tabanlı.

Özellik türleri ve her birinin values içinde ürettiği değer. Aynı türler section ve repeater satırlarındaki alanlar için de kullanılabilir.

Türvalues içindeki değerKısıtlamalar
textstringEn fazla 255 karakter.
textareastringEn fazla 10000 karakter.
richtextstring (HTML)En fazla 50000 karakter. Sunucu tarafında p, br, strong, em, ul, ol, li, a[href], img[src, alt], h2, h3, h4 olacak şekilde temizlenir. Temizlemeden yalnızca https://, http://, kök göreli /, mailto: ve tel: href'leri sağ çıkar. Bir img yalnızca src ve alt özelliklerini korur; src https:// veya kök göreli / değilse kaldırılır.
numbernumberTamsayı veya ondalıklı.
moneyintegerNegatif olmayan, cent cinsinden. 15900, mağaza para biriminde 159,00 anlamına gelir.
booleanboolean
selectstringÖzelliğin options değerlerinden biri.
datestringYYYY-MM-DD.
datetimestringOffset içeren ISO 8601, örneğin 2026-10-12T10:00:00+02:00.
customerstring (uuid)Bir müşteri id'si.
mediaobject or nullHerkese açık bir medya kütüphanesi öğesinin {id, url, alt, width, height, mime_type} değeri; bkz. Medya değerleri.
media_listarray of objectEn fazla 50 medya nesnesi, her biri fazladan bir caption ile; bkz. Medya değerleri.
linkobject {url, label}url zorunlu, en fazla 2000 karakter, richtext href'leriyle aynı şema izin listesi; label isteğe bağlı, en fazla 200 karakter.
iconstring/^[a-z][a-z0-9-]{0,39}$/ desenine uyan ikon adı.
token_variantstringÖzelliğin options değerlerinden biri.
colorstring#RRGGBB, örneğin #1A2B3C.
emailstringGeçerli bir e-posta adresi, en fazla 255 karakter.
phonestring5 ile 30 karakter: rakamlar, boşluklar, ()-., başta isteğe bağlı bir +.
tagsarray of string1 ile 60 karakter arası en fazla 50 etiket, tekrarlar kaldırılır.
record_refstring (uuid)Özelliğin config.object_type_keys türlerinden birindeki başka bir kaydın id'si. GET /v1/api/objects/records/{id} ile getirin.
record_ref_listarray of string (uuid)Diğer kayıtlara referanslar; en fazla 24 öğe.
repeaterarray of row objectsHer satır {"_key": "row_{24 hex}", ...alanlar} şeklindedir; alanlar özelliğin config.fields değerinde tanımlıdır. En fazla 50 satır. Bir satır, satırları repeater içermeyen bir repeater daha tutabilir ve bir repeater'da en fazla 40 alan bulunur. Repeater'ın kendisi yerelleştirilemez, alanları yerelleştirilebilir.
sectionsarrayYapılandırılmış sayfa oluşturucu (page-builder) içeriği; aşağıya bakın.

Özellikler dashboard'da arşivlenebilir. Arşivlenmiş özellikler public API'da görünmez: türün özellik listesinden çıkarılır ve anahtarları kayıtların values alanından temizlenir.

Kayıtlar

Bir kayıt {id, values, published_at, created_at} yapısındadır; türün adresleri varsa ayrıca slugs içerir. values, özellik anahtarıyla anahtarlanmış bir JSON nesnesidir. Değeri olmayan özellikler values içinde hiç bulunmaz (null değerler kaydetme sırasında atılır), bu yüzden eksik anahtarları her zaman "değer yok" olarak ele alın. Tek istisna, eksik veya özel bir öğeyi gösteren media değeridir: bu anahtar null değeriyle bulunur. published_at ve created_at ISO 8601 zaman damgalarıdır; published_at, kaydın yayına girdiği andır (yayınlanabilir olmayan bir tür için oluşturulma zamanıdır).

slugs, bir dil etiketini kaydın o dildeki adresine eşler, örneğin {"en": "kitchen-fitting", "tr": "mutfak-montaji"}. Slug, yolun son bölümüdür: storefront'unuzdaki tam yol, türün o dil için öneki (settings.slug.prefixes içinden) artı / artı slug'dır. Yalnızca etkin içerik dilleri görünür. Bir kaydı adresiyle GET /v1/api/objects/types/{key}/records/by-slug/{slug} ile arayın (bkz. Kayıtlar).

Yayınlama ve görünürlük

Public API yalnızca satıcının yayınladığı içeriği sunar.

  • settings.publishable: true olan bir türde, bir kayıt yayınlanmış ve published_at değeri şimdi veya geçmişteyse görünürdür. Taslaklar ve gelecekteki bir published_at için zamanlanmış kayıtlar listeden çıkarılır ve tek kayıt endpoint'lerinin ikisinde de 404 döndürür. Zamanlanmış bir kayıt zamanı geldiğinde kendiliğinden görünür; o anda hiçbir webhook gönderilmez.
  • Yayınlanabilir olmayan bir türde kayıtların taslak adımı yoktur ve oluşturulduğu anda görünürdür. (Yayınlama kapatılmadan önce kalmış taslaklar gizli kalır.)
  • Görünürlük her endpoint'te aynıdır. filter[status] public API'da kullanılamaz (422 döndürür), çünkü okuyabildiğiniz her kayıt zaten yayınlanmıştır.

Yerelleştirilmiş değerler

localized olarak işaretlenen bir özellik veya section alanı, her içerik dili için ayrı bir değer saklar. values içindeki değeri, dil etiketinden değere bir haritadır: {"en": "Hello", "tr": "Merhaba"}; etiketler /^[a-z]{2}(-[A-Z]{2})?$/ desenine uyar. API haritayı mağaza için o anda etkin olan dillere indirger; böylece satıcının sonradan kapattığı bir dil asla sızmaz. Satıcının boş bıraktığı bir dil haritada hiç bulunmaz: mağazanın varsayılan diline dönün; bu dil her zaman ilk etkin dildir ve özellik zorunluysa her zaman doludur. Zorunlu olmayan bir değerin varsayılan dil için girdisi olmayabilir, örneğin varsayılan dili en olan bir mağazada {"nl": "Hallo"}; map içinde etkin dil kalmazsa değer null olur.

localized olmayan bir özellik, türü ne olursa olsun her zaman düz bir değer döndürür. Number, money, boolean, date, datetime, customer, color, media_list, kayıt referansları, repeater ve sections özellikleri yerelleştirilemez (bir repeater satırındaki veya bir section içindeki alanlar yerelleştirilebilir). Aynı tür için iki şekli de işleyin, çünkü satıcı bir özelliği sonradan yerelleştirebilir.

Medya değerleri

media ve media_list değerleri sizin için çözümlenir; böylece storefront'un ikinci bir isteğe ihtiyacı olmaz:

media value
{
  "id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
  "url": "https://cdn.borkol.com/t/abc/hero.webp",
  "alt": "Oak table in a sunny room",
  "width": 1600,
  "height": 900,
  "mime_type": "image/webp"
}
AlanTürAçıklama
idstring (uuid)Medya kütüphanesi id'si.
urlstringDosyanın herkese açık URL'si.
altstring or nullMedya kütüphanesindeki alternatif metin.
width, heightinteger or nullPiksel boyutu; bilinmiyorsa null (örneğin görsel olmayan dosyalar için).
mime_typestringÖrneğin image/webp.

Bir media değeri bu nesnedir; öğe artık yoksa veya özelse null olur. Bir media_list değeri bu nesnelerin listesidir, her biri fazladan bir caption taşır (string, bir locale haritası veya null); bir öğe, kütüphanedeki alt metnin yerine geçen kendi alt değerini taşıyabilir (bir string veya locale haritası). Eksik veya özel öğeler listeden çıkarılır, bu yüzden liste satıcının seçtiğinden kısa olabilir. Yalnızca herkese açık medya sunulur; özel dosyalar asla görünmez.

Sections değerleri

sections türündeki bir özellik sayfa oluşturucu içeriği tutar: değeri bir section örneği listesidir. Boş olarak saklanmış bir sections değeri [] döndürür. Her örnek şu şekildedir:

Section instance
{
  "_key": "sec_a1b2c3d4e5f60718293a4b5c",
  "type": "hero",
  "look": "default",
  "v": 1,
  "visible": true,
  "data": { "title": { "en": "Welcome" }, "cta": { "url": "/products", "label": "Shop now" } }
}
AlanTürAçıklama
_keystringKararlı örnek anahtarı, sec_ artı 24 hex karakter.
typestringClient dashboard'da mağaza bazında tanımlanan section türü anahtarı.
lookstringO section türünün görsel varyant (look) anahtarı.
vintegerKaydetme anındaki section türünün şema sürümü.
visiblebooleanEditörler bir section'ı silmeden gizleyebilir. Render ederken visible: false olan örnekleri atlayın.
dataobjectSection türünün alan anahtarlarıyla anahtarlanmış alan değerleri.

Section örnekleri, yazma sırasında mağazanın section türü tanımlarına (anahtar, ad, ikon, look'lar, şema sürümü, alanlar, öğe etiket alanı) göre doğrulanır; bu tanımlar client dashboard'da yönetilir. Public API section türü tanımlarını sunmaz; storefront'unuz ve satıcı, section sözlüğü üzerinde harici olarak anlaşır.

Yukarıdaki özellik tablosundaki her alan türü, aynı değer şekli ve aynı public serileştirmeyle data içinde görünebilir: media ve media_list değerleri medya nesneleridir, yerelleştirilmiş alanlar etkin dillere indirgenmiş locale haritalarıdır ve repeater satırları _key değerlerini korur. Türü artık mağazada bulunmayan bir section listeden çıkarılır. visible: false olan section'lar yine de döndürülür; render ederken atlayın.

Limitler. Bir section en fazla 40 alan içerir. Bir sections özelliği en fazla 100 section (veya özelliğin yapılandırılmış maksimumu) ve en fazla 256KB JSON tutar.

Kurallar

  • Tüm id'ler UUID'dir. Tüm veriler, API anahtarı üzerinden örtük olarak mağazanıza kapsamlanır.
  • Para her zaman tamsayı cent'tir. date alanlarındaki ve aralık filtrelerindeki tarihler YYYY-MM-DD metinleridir. created_at ve published_at zaman damgaları ISO 8601'dir.
  • Yalnızca kayıt listeleme endpoint'i sayfalanır; tür listesi düz bir data dizisi döndürür.

Endpoint'ler

EndpointAmaç
GET /v1/api/objects/typesÖzellik tanımlarıyla birlikte tüm nesne türlerini listeler. Bkz. Türler.
GET /v1/api/objects/types/{key}/recordsBir tür için sayfalanmış, filtrelenebilir kayıt listesi. Bkz. Kayıtlar.
GET /v1/api/objects/types/{key}/records/by-slug/{slug}Tek bir kaydı, bir dildeki adresiyle getirir. Bkz. Kayıtlar.
GET /v1/api/objects/records/{id}Tek bir kaydı id ile getirir. Bkz. Kayıtlar.