E-Ticaret

ai

21 uç · /api/shop/v1/ai

İstek örnekleri ucun GERÇEK metodu ve yolundan üretilir. 21 ucun elle doğrulanmış gövde örneği henüz yok; o uçlarda iskelet gövdesizdir — uydurma bir alan yazmıyoruz.

POST/api/shop/v1/admin/ai/assistant

Ask

Oturum
İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/assistant" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/shop/v1/admin/ai/assistant/proposals

Bekleyen öneriler (panel onay kuyruğu). Süresi geçmiş olanlar listede GÖRÜNMEZ —

Oturum

onaylanamayacak bir şeyi onay kuyruğunda göstermek kullanıcıyı yanıltır.

İstek
curl -X GET "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/assistant/proposals" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/admin/ai/assistant/proposals/{proposal_id}/approve

Öneriyi UYGULA. Üç adım: (1) atomik kilit, (2) asıl yazma, (3) sonucu işaretle.

OturumYol parametresi: proposal_id

⚠ Sıra önemli. Önce uygulayıp sonra damgalasaydık, çift tıklama fiyatı İKİ KEZ değiştirirdi. Kilit `decided_at is null` koşullu tek UPDATE'tir; ikinci onay o koşulu bulamaz.

İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/assistant/proposals/<proposal_id>/approve" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/admin/ai/assistant/proposals/{proposal_id}/reject

Öneriyi reddet (kuyruktan düşür). Yazma yok.

OturumYol parametresi: proposal_id
İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/assistant/proposals/<proposal_id>/reject" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/shop/v1/admin/ai/assistant/threads

Konu-listesi (en son güncellenen önce). Yalnız tenant'ın konuları (RLS).

Oturum
İstek
curl -X GET "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/assistant/threads" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/shop/v1/admin/ai/assistant/threads/{thread_id}

Bir konunun mesajları (kronolojik). Konu yoksa/başka tenant'ınsa → boş dizi (RLS).

OturumYol parametresi: thread_id
İstek
curl -X GET "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/assistant/threads/<thread_id>" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/shop/v1/admin/ai/assistant/tools

Araç kataloğu — panelin "asistan neler yapabilir" listesi.

Oturum
İstek
curl -X GET "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/assistant/tools" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/admin/ai/assistant/tools/propose

Yazma önerisi ÜRET — hiçbir şey uygulamaz. Dönen `summary`, panelde kullanıcıya okutulan

Oturum

cümledir ve uygulanacak yükle aynı yerden türer.

İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/assistant/tools/propose" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/admin/ai/assistant/tools/run

**Salt-okuma araç çalıştırma.** Yazma araçları buradan KOŞMAZ (409 döner).

Oturum

Yetki kapısı çağıranın kendi izniyle: asistan bir yetki yükseltme yolu değildir.

İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/assistant/tools/run" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/admin/ai/assistant/tools/suggest

Doğal dil → ÖNERİLEN araç. Hiçbir şey ÇALIŞTIRMAZ; yalnız niyeti söyler.

Oturum

Ayrı bir uç olmasının nedeni: panel önce "şunu yapacağım" diyebilsin. Kullanıcının göremediği bir eylem, onaylayamadığı eylemdir.

İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/assistant/tools/suggest" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
PUT/api/shop/v1/admin/ai/entitlements

Set ent

Oturum
İstek
curl -X PUT "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/entitlements" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/shop/v1/admin/ai/generations

Credential-listesi + kaldırma (müşteri-oturumu).

Oturum
İstek
curl -X GET "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/generations" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/admin/ai/generations

Üretim-işi gönder: kind doğrula → entitlement/kota guard (`consume`, maliyet=1) → pending job.

Oturum

Guard reddi: Disabled(tier)→403 ai_disabled; Blocked(kota)→403 quota_exceeded. Allow/Warn → 200.

İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/generations" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/shop/v1/admin/ai/generations/{id}

Admin: retention config oku (gün eşikleri; null = o tablo için kapalı).

OturumYol parametresi: id
İstek
curl -X GET "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/generations/<id>" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/admin/ai/generations/{id}/insert-section

done `theme_gen` job'ının `output.section`'ını temanın `layout.sections[]`'ına ekler.

OturumYol parametresi: id

Ekleme ÖNCESİ tema-içeriği theme_versions'a snapshot'lanır (is_published=false) → geri-al = mevcut `restore` ucu (versiyon/undo). Yeni layout section_schema'ya karşı doğrulanır (uymazsa rollback — güvenli-şablon dışına çıkılamaz). Job done/theme_gen değil → 409.

İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/generations/<id>/insert-section" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/admin/ai/generations/{id}/review

BLE-5506/6365/5636/5760 · önizle-sonrası insan-onayı: done-job approve edilirse görsel-türlerde

OturumYol parametresi: id

çıktı (`result_ref`) ürün-medya galerisine bağlanır (storage-key = stub-ref; canlı obje-storage TF21 aynı sözleşme); discard → çıktı yayınlanmadan kapanır. Geri-al: bağlanan medya mevcut media-delete ucuyla kaldırılır (media_id yanıtta). done-olmayan job → 409.

İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/generations/<id>/review" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/admin/ai/generations/batch

BLE-5506/6365 · toplu üretim: seçili girişler için job-başına kota-tüketimli pending-job'lar.

Oturum

Kota İLK girişte reddedilirse HİÇ iş açılmaz (403); ortada biterse o-ana-kadar açılanlar döner (`blocked` sayısıyla — sessiz-kırpma yok). Önizleme = done-job output'u; onay/red review ucundan (insan-onayı olmadan hiçbir çıktı üründe yayınlanmaz).

İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/generations/batch" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/admin/ai/generations/process

Vadesi-geleni işle (manuel/test tetik; prod'da crash-safe worker çağırır). now verilmezse now().

Oturum
İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/generations/process" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/shop/v1/admin/ai/model-pool

BLE-5734 · model-havuzu + stil-preset listesi (admin seçim yüzeyi).

Oturum
İstek
curl -X GET "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/model-pool" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/admin/ai/theme/palette

Deterministik palet-önerisi (canlı AI-önerisi TF21; sözleşme aynı): base + açık/koyu

Oturum

varyantlar; her renk için AA-uyumlu metin-rengi + kontrast-oranı raporlanır.

İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/theme/palette" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/shop/v1/admin/ai/usage

Usage

Oturum
İstek
curl -X GET "https://{slug}.shop.blesyum.app/api/shop/v1/admin/ai/usage" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
Bu sayfa işine yaradı mı?