Navigator Menuleri
Header, footer, mobil menu ve benzeri navigasyon agaclarinin yonetimi. Menu item'lari sonsuz kirilim destekler ve link alanlari dil bazli tutulur.
Base URL: /api/tenant/navigator/menus
Yetkilendirme: Bearer Token + X-Api-Key
Modul: navigator modulu musteriye atanmis olmalidir.
Headers:
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
X-Api-Key: customer-api-key
Veri Modeli Notlari
- Her menu icin benzersiz bir
codekullanilir. Ornek:header,footer,mobile itemsalani recursive agac yapisindadirtranslations[].linkdil bazlidir- Bir item hem
linksahibi olabilir hem de alt kirilimlara sahip olabilir PUTislemi agaci tam senkronize ederPUTrequest'inde gonderilmeyen mevcut node'lar soft delete olarak isaretlenir
GET /
Tenant'a ait tum navigator menulerini listeler.
Response - 200 OK:
{
"success": true,
"data": [
{
"id": "menu-id",
"code": "header",
"name": "Header Menu",
"isActive": true,
"createdAt": "2026-03-28T10:00:00Z"
},
{
"id": "menu-id-2",
"code": "footer",
"name": "Footer Menu",
"isActive": true,
"createdAt": "2026-03-28T10:05:00Z"
}
]
}
GET /{id}
Belirli bir menuyu tum agac yapisiyla getirir.
Response - 200 OK:
{
"success": true,
"data": {
"id": "menu-id",
"code": "header",
"name": "Header Menu",
"isActive": true,
"createdAt": "2026-03-28T10:00:00Z",
"items": [
{
"id": "item-id",
"parentId": null,
"sortOrder": 1,
"isActive": true,
"openInNewTab": false,
"translations": [
{
"languageId": "tr-language-id",
"languageCode": "tr",
"title": "Urunler",
"subtitle": "Tum urunlerimiz",
"link": "/urunler"
},
{
"languageId": "en-language-id",
"languageCode": "en",
"title": "Products",
"subtitle": "All products",
"link": "/en/products"
}
],
"children": [
{
"id": "child-item-id",
"parentId": "item-id",
"sortOrder": 1,
"isActive": true,
"openInNewTab": false,
"translations": [
{
"languageId": "tr-language-id",
"languageCode": "tr",
"title": "Yazilim",
"subtitle": null,
"link": "/urunler/yazilim"
}
],
"children": []
}
]
}
]
}
}
POST /
Yeni navigator menusu olusturur.
Request Body:
{
"code": "header",
"name": "Header Menu",
"isActive": true,
"items": [
{
"sortOrder": 1,
"isActive": true,
"openInNewTab": false,
"translations": [
{
"languageId": "tr-language-id",
"title": "Kurumsal",
"subtitle": "Hakkimizda ve ekibimiz",
"link": "/kurumsal"
},
{
"languageId": "en-language-id",
"title": "Corporate",
"subtitle": "About us and team",
"link": "/en/corporate"
}
],
"children": [
{
"sortOrder": 1,
"isActive": true,
"openInNewTab": false,
"translations": [
{
"languageId": "tr-language-id",
"title": "Hakkimizda",
"subtitle": null,
"link": "/kurumsal/hakkimizda"
},
{
"languageId": "en-language-id",
"title": "About Us",
"subtitle": null,
"link": "/en/corporate/about"
}
],
"children": []
}
]
}
]
}
Alanlar
| Alan | Tip | Zorunlu | Aciklama |
|---|---|---|---|
code | string | Evet | Tenant icinde benzersiz menu kodu |
name | string | Evet | Menu adi |
isActive | boolean | Evet | Menu aktiflik durumu |
items | NavigatorMenuItemRequest[] | Evet | Kok seviye item listesi |
NavigatorMenuItemRequest
| Alan | Tip | Zorunlu | Aciklama |
|---|---|---|---|
id | Guid? | Hayir | Sadece update senaryosunda mevcut node'u korumak icin kullanilir |
sortOrder | int | Evet | Ayni parent altindaki siralama |
isActive | boolean | Evet | Item aktiflik durumu |
openInNewTab | boolean | Evet | Frontend icin hedef bilgisi |
translations | NavigatorMenuItemTranslationRequest[] | Evet | Coklu dil icerigi |
children | NavigatorMenuItemRequest[] | Evet | Alt item listesi |
NavigatorMenuItemTranslationRequest
| Alan | Tip | Zorunlu | Aciklama |
|---|---|---|---|
languageId | Guid | Evet | Dil ID |
title | string | Evet | Item basligi |
subtitle | string? | Hayir | Istege bagli alt baslik |
link | string? | Hayir | Dil bazli URL. Bos ise item container olarak kullanilabilir |
Response - 201 Created: GET /{id} ile ayni yapida NavigatorMenuDetailResponse doner.
PUT /{id}
Mevcut menuyu ve tum agacini gunceller.
Request Body: POST / ile ayni yapidadir.
Bu endpoint agaci tam senkronize eder. Mevcut bir item'i korumak istiyorsaniz request icinde o item'in id alanini gondermeniz gerekir. Gonderilmeyen item'lar soft delete olarak isaretlenir.
Response - 200 OK: NavigatorMenuDetailResponse
DELETE /{id}
Menuyu ve altindaki tum item'lari soft delete ile siler.
Response - 204 No Content
Olası Hatalar
| Kod | Durum |
|---|---|
401 | Token eksik veya gecersiz |
403 | Tenant kullanicisi yetkisi yok veya navigator modulu atanmamis |
404 | Menu bulunamadi |
409 | code alani ayni tenant icinde zaten kullanimda |
400 | Varsayilan dil cevirisi eksik, item tekrarli gonderilmis veya request body gecersiz |