Ana içeriğe geç

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 code kullanilir. Ornek: header, footer, mobile
  • items alani recursive agac yapisindadir
  • translations[].link dil bazlidir
  • Bir item hem link sahibi olabilir hem de alt kirilimlara sahip olabilir
  • PUT islemi agaci tam senkronize eder
  • PUT request'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

AlanTipZorunluAciklama
codestringEvetTenant icinde benzersiz menu kodu
namestringEvetMenu adi
isActivebooleanEvetMenu aktiflik durumu
itemsNavigatorMenuItemRequest[]EvetKok seviye item listesi
AlanTipZorunluAciklama
idGuid?HayirSadece update senaryosunda mevcut node'u korumak icin kullanilir
sortOrderintEvetAyni parent altindaki siralama
isActivebooleanEvetItem aktiflik durumu
openInNewTabbooleanEvetFrontend icin hedef bilgisi
translationsNavigatorMenuItemTranslationRequest[]EvetCoklu dil icerigi
childrenNavigatorMenuItemRequest[]EvetAlt item listesi
AlanTipZorunluAciklama
languageIdGuidEvetDil ID
titlestringEvetItem basligi
subtitlestring?HayirIstege bagli alt baslik
linkstring?HayirDil 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.

uyarı

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

KodDurum
401Token eksik veya gecersiz
403Tenant kullanicisi yetkisi yok veya navigator modulu atanmamis
404Menu bulunamadi
409code alani ayni tenant icinde zaten kullanimda
400Varsayilan dil cevirisi eksik, item tekrarli gonderilmis veya request body gecersiz