Müşavir

sinerji

3 uç · /api/musavir/v1/sinerji

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

GET/api/musavir/v1/sinerji/grantlar

Müşavire (consumer) verilmiş grant'lar — kendi tarafından görünür (RLS: consumer=current).

Oturum

## BLE-9063 kararı: bu uç BÜRO-GENELİDİR, `data_scope` süzgeci UYGULANMAZ Denetim burayı da kapsamlamayı önerdi (`data_source_links` üzerinden çift `exists`). Uygulanmadı, gerekçe yazılı olsun: 1. `core.data_sharing_grants` bir **tenant-arası rıza** kaydıdır; `mukellef_ref` kolonu YOKTUR. Dönen alanlar (`source_tenant_id`, `scope`, `status`, tarihler) hiçbir müvekkil verisi taşımaz — unvan, VKN, tutar yok; yalnız opak tenant uuid'leri. 2. Kapsam ancak `data_source_links` JOIN'iyle kurulabilirdi, ama grant **link'ten ÖNCE** var olur (onboarding sırası: önce rıza verilir, sonra müvekkile bağlanır). JOIN'li süzgeç, henüz bağlanmamış grant'ları şube personelinden gizler ve **onboarding'i kırardı** — kapatılmamış bir sızıntı için çalışan bir akışı bozmak. 3. `scope` alanındaki `'cari'|'fatura'|…` değerleri bu modülde "kapsam" denen DÖRDÜNCÜ kavramdır (veri SINIFI + cross-tenant rıza); `data_scope` ile ilgisi yoktur. ⚠️ Kabul edilen artık risk: kapsam dışı bir personel büronun ENTEGRASYON SAYISINI ve karşı tenant uuid'lerini görür. Bunu müvekkile bağlamak için `data_source_links` gerekir; o eşleme yalnız `staging_h` üzerinden ve artık kapsamlı olarak veriliyor.

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

Müşavirin iş listesi: bekleyen/çakışan import taslakları. **Kapsam süzgeci zorunlu**

Oturum

(BLE-9063). 🔴 Fiilen bir TOPLU DIŞA AKTARIMDI: tek istekte 500 satır `mukellef_ref` + `tutar_minor` (kuruş) + `kaynak_tenant_id`. Süzgeç yoktu, izin `on_muhasebe.view` — yani `readonly` dâhil her personel büronun bekleyen tüm ön-muhasebe hareketlerini tutarlarıyla okuyabiliyordu. ⚠️ `gate(...)` YUKARIDA bir kapsam kapısı DEĞİL: o `entitlement::middleware::gate`, yani "büro bu modülü satın aldı mı" (tenant düzeyi capability). Kullanıcı düzeyinde hiçbir şey süzmez; varlığı bu dosyada uzun süre kapsam kapısı izlenimi verdi.

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

🔴 Taslak kararı. Muhasebeleştirmeden ÖNCE revoke kontrolü GERÇEKTEN çağrılır — bu, adversaryel

OturumYol parametresi: id

denetimin işaret ettiği "rıza kapısı üretim yolundan çağrılmalı" gereğinin karşılandığı yer.

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