CRM

files

4 uç · /api/crm/v1/files

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

POST/api/crm/v1/files

Ek-dosya upload başlat: metadata kaydı + upload yönergesi (S3 presign PUT / local direct).

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

Ek-dosya indir: tenant-scoped (cross-tenant → 404). local → byte stream;

OturumYol parametresi: id

S3 → presigned GET redirect (app byte proxy'lemez, replica'lar stateless).

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

Local backend byte upload (S3'te presign kullanılır; bu uç yalnız local-fs içindir).

OturumYol parametresi: id
İstek
curl -X PUT "https://{slug}.crm.blesyum.app/api/crm/v1/files/<id>/content" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/crm/v1/files/{id}/serve

`GET /api/crm/v1/files/{id}/serve?s=<imza>` — **PUBLIC** önizleme/indirme.

Herkese açıkYol parametresi: id

`<img src>` ve `<a href>` hiçbir başlık taşımaz; ek dosyaların authed uçtan açılması mümkün değildir (her görsel 401 alırdı). Adres bu yüzden kendi yetkisini taşır: imza kiracıya + dosyaya bağlıdır (`files::serve_path`). Kiracı HOST'tan çözülür (`require_crm_public`), yani başka kiracının dosyasına doğru imzayla bile ulaşılamaz.

İstek
curl -X GET "https://{slug}.crm.blesyum.app/api/crm/v1/files/<id>/serve" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
Bu sayfa işine yaradı mı?