B2B

portal-brand

6 uç · /api/b2b/v1/portal-brand

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

GET/api/b2b/v1/admin/portal-brand

Staff editör: portal + yayınlanan marka + bekleyen draft (birleşik). İzin `b2b.portal.view`.

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

POST /api/b2b/v1/admin/portal-brand/assets (StaffCtx `b2b.portal.manage`) — ENFORCED yükleme.

Oturum

Ham görüntü baytları (gövde; global 1 MiB limit + MAX_ASSET_BYTES). `asset_url` = mutlak public sunum URL'si (brand `logo_url`/`favicon_url`'e doğrudan konur; `is_safe_url` uyumlu).

İstek
curl -X POST "https://{slug}.b2b.blesyum.app/api/b2b/v1/admin/portal-brand/assets" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/b2b/v1/admin/portal-brand/assets/upload-url

POST /api/b2b/v1/admin/portal-brand/assets/upload-url (StaffCtx `b2b.portal.manage`) — yükleme

Oturum

PLANI: declared tip/boyut ön-doğrulama + backend abstraksiyonu (local proxy / s3 presigned PUT).

İstek
curl -X POST "https://{slug}.b2b.blesyum.app/api/b2b/v1/admin/portal-brand/assets/upload-url" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
PATCH/api/b2b/v1/admin/portal-brand/draft

Staff editör: draft patch merge (allowlist doğrulamalı). İzin `b2b.portal.manage`.

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

Staff editör (BLE-2029): canlı-host'ta draft önizleme için kısa-ömürlü imzalı token üretir.

Oturum

İzin `b2b.portal.manage` — önizleme linki, kimlik-doğrulaması OLMAYAN bir tarafa (link sahibine) draft-görünürlüğü DELEGE eder (yayına-yakın bir eylem); `.view` yeterli değil. Token RLS'i bypass ETMEZ (bkz. [`open_preview_token`]): yalnız host-çözümlü portalda yayınlanan→draft'a geçiş kapasitesidir, 15 dk. `preview_url` = portalın kendi host'u (varsa).

İstek
curl -X POST "https://{slug}.b2b.blesyum.app/api/b2b/v1/admin/portal-brand/preview-token" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/b2b/v1/admin/portal-brand/publish

Staff editör: draft'ı yayına al. İzin `b2b.portal.manage`.

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