Müşavir

portal

20 uç · /api/musavir/v1/portal

İstek örnekleri ucun GERÇEK metodu ve yolundan üretilir. 20 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/portal/beklenen

Müvekkilin kendi beklenti listesi.

Oturum

🔴 Eksiklik yüklemi **personel ekranıyla AYNI sabitten** gelir ([`crate::beklenen::EKSIK_IFADESI`]). İkinci bir kopya yazsaydık portal "gönderdim" derken büro "gelmedi" görebilirdi — iki taraf aynı cümleyi okumak zorunda. Muaf tutulan beklenti listeye GİRMEZ: büro "bu dönem beklemiyoruz" dediyse müvekkile hâlâ istiyormuş gibi görünmek yanlış bilgidir.

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

🔴 Portal, **personelinkiyle AYNI** `belge::arsivle` yolunu kullanır — portala özel bir

Oturum

kısayol YOKTUR. O yol şunları zaten yapıyor: magic-byte doğrulaması (uzantı yalan söyler), içerik-adresli dedup (aynı belge iki kez kota tüketmez), kota kontrolü YAZMADAN ÖNCE. Portal için ayrı bir yol yazsaydık, bu korumaların hepsini yeniden — ve eksik — yazardık.

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

Müvekkilin kendi belgeleri + onay durumu.

Oturum

🔴 Onay GEÇMİŞİ dönmez (`belge_onay_gecmisi` portala kapalı): defter, kararı kimin verdiğini ve büro içindeki fikir değişikliklerini taşır. Müvekkilin görmesi gereken şey büronun iç muhakemesi değil, GÜNCEL karar ve gerekçesidir.

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

Beyannameler

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

⚠️ Sistemin **en hassas** okuması: çalışan maaşları.

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

Ekstre

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

🔴 Portal, **personelinkiyle AYNI** `satis_fatura::fatura_kes` yolunu kullanır. O yol:

Oturum

doğrula → (tx YOKKEN) numara al → yaz; senaryoyu GİB'e sorar ve cevap alamazsa fatura **kesilmez** (uydurmaz); onaylı faturanın içeriği donar. Portala özel bir kesme yolu yazmak, bu kuralların hepsini atlamanın en kolay yoluydu — ve mükellefin resmî fatura serisinde boşluk/mükerrerlik demekti.

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

Portal oku

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

Mükellef-portal düzleminin kanıt ucu (BLE-6927): portal kullanıcısının çözülmüş mükellef

Oturum

kimliğini döner. `mukellef_id` **client-input değildir** — sunucuda `portal_users` eşlemesinden türetilir; istemci onu seçemez. MÜF17 gerçek portal uçlarını bu düzleme ekler.

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

Mesaj gonder

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

Mesajlar

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

Portal (müvekkil) düzlemi: **yalnız kendi** satırı.

Oturum

🔴 `mukellef_id` OTURUMDAN gelir, gövdeden değil (portal.rs'in değişmezi) ve görünürlük [`Gorunurluk::tek_mukellef`] ile en dar hâline kilitlenir. Burada `buro_geneli()` kullanmak müvekkile bütün büronun kasasını açmak olurdu.

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

🔴 Portal ucu token'ı yol parametresinden alır ama kimliği DE doğrular: linki ele geçiren

OturumYol parametresi: token

biri, o faturanın müvekkili olarak oturum açmış olmadıkça özeti göremez. Token tek başına yeterli sayılsaydı, e-postası yönlendirilen bir müvekkilin ücreti üçüncü kişiye açılırdı.

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

Portal baslat

OturumYol parametresi: token
İstek
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/portal/odeme/<token>/baslat" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/musavir/v1/portal/onay

Onayla

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

Bir konunun onay durumu — **bayat onayı da söyler**.

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

Portal list

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

Portal list

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

Portal oku

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

BLE-7028 · Mükellefin BÜROYA olan ücret borcu (kendi satışları DEĞİL).

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