{ "openapi": "3.0.0", "info": { "title": "Boğaziçi Denizcilik API", "description": "Boğaziçi Denizcilik eğitim platformu backend API dokümantasyonu. Public (v1) ve Admin endpointlerini içerir.", "contact": { "name": "Boğaziçi Denizcilik", "email": "admin@bogazicidenizcilik.com.tr" }, "version": "1.0.0" }, "servers": [ { "url": "http://bogazici-api.test", "description": "API Server" } ], "paths": { "/api/admin/announcements": { "get": { "tags": [ "Admin - Announcements" ], "summary": "Duyuruları listele (Admin)", "operationId": "f3617068759bd67fa6783413d808c902", "parameters": [ { "name": "category", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "featured", "in": "query", "required": false, "schema": { "type": "boolean" } }, { "name": "search", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "sort", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer", "default": 15 } } ], "responses": { "200": { "description": "Duyuru listesi" } }, "security": [ { "sanctum": [] } ] }, "post": { "tags": [ "Admin - Announcements" ], "summary": "Yeni duyuru oluştur", "operationId": "85a7409f3448b7110dffac8f3eb40924", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "title", "slug", "category", "content" ], "properties": { "title": { "type": "string" }, "slug": { "type": "string" }, "category": { "type": "string" }, "content": { "type": "string" }, "excerpt": { "type": "string" }, "image": { "type": "string" }, "is_featured": { "type": "boolean" }, "is_active": { "type": "boolean" }, "published_at": { "type": "string", "format": "date-time" }, "meta_title": { "type": "string" }, "meta_description": { "type": "string" } }, "type": "object" } } } }, "responses": { "201": { "description": "Duyuru oluşturuldu" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/announcements/{announcement}": { "get": { "tags": [ "Admin - Announcements" ], "summary": "Duyuru detayı (Admin)", "operationId": "4126902637ec62ab270e6ed7a72d06fc", "parameters": [ { "name": "announcement", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Duyuru detayı" } }, "security": [ { "sanctum": [] } ] }, "put": { "tags": [ "Admin - Announcements" ], "summary": "Duyuru güncelle", "operationId": "d1da9f72269f1f615a2a90a20abe0cb0", "parameters": [ { "name": "announcement", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { "title": { "type": "string" }, "slug": { "type": "string" }, "category": { "type": "string" }, "content": { "type": "string" }, "excerpt": { "type": "string" }, "image": { "type": "string" }, "is_featured": { "type": "boolean" }, "is_active": { "type": "boolean" } }, "type": "object" } } } }, "responses": { "200": { "description": "Duyuru güncellendi" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] }, "delete": { "tags": [ "Admin - Announcements" ], "summary": "Duyuru sil", "operationId": "a29ec5c7d7b631f9488df7dc49c44ed3", "parameters": [ { "name": "announcement", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Duyuru silindi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/login": { "post": { "tags": [ "Auth" ], "summary": "Admin girişi", "description": "E-posta ve şifre ile giriş yaparak Sanctum token alır.", "operationId": "c28cad2ba36fd99ebc986e26c83542ce", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "email", "password" ], "properties": { "email": { "type": "string", "format": "email", "example": "admin@bogazicidenizcilik.com.tr" }, "password": { "type": "string", "format": "password", "example": "password" } }, "type": "object" } } } }, "responses": { "200": { "description": "Başarılı giriş", "content": { "application/json": { "schema": { "properties": { "data": { "properties": { "token": { "type": "string" }, "user": { "type": "object" } }, "type": "object" } }, "type": "object" } } } }, "401": { "description": "Geçersiz kimlik bilgileri" }, "422": { "description": "Validasyon hatası" } } } }, "/api/admin/me": { "get": { "tags": [ "Auth" ], "summary": "Mevcut kullanıcı bilgileri", "description": "Oturum açmış kullanıcının bilgilerini, rollerini ve izinlerini döndürür.", "operationId": "452e4a67283093daf1203e5a7671bbc3", "responses": { "200": { "description": "Kullanıcı bilgileri" }, "401": { "description": "Yetkisiz erişim" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/logout": { "post": { "tags": [ "Auth" ], "summary": "Çıkış yap", "description": "Mevcut token'ı iptal eder.", "operationId": "38d6a10488d12f5b9e6a50710eb07908", "responses": { "200": { "description": "Başarıyla çıkış yapıldı" }, "401": { "description": "Yetkisiz erişim" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/pages/{page}/blocks": { "get": { "tags": [ "Admin - Page Blocks" ], "summary": "Sayfa bloklarını listele", "operationId": "87d7b552e8588279378e8927d932eef7", "parameters": [ { "name": "page", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Blok listesi" } }, "security": [ { "sanctum": [] } ] }, "post": { "tags": [ "Admin - Page Blocks" ], "summary": "Yeni blok oluştur", "operationId": "bc3d4e6cb14bb865b7d00f8b294ba128", "parameters": [ { "name": "page", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "type", "content" ], "properties": { "type": { "type": "string" }, "content": { "type": "object" }, "order_index": { "type": "integer" }, "is_active": { "type": "boolean" } }, "type": "object" } } } }, "responses": { "201": { "description": "Blok oluşturuldu" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/pages/{page}/blocks/{block}": { "get": { "tags": [ "Admin - Page Blocks" ], "summary": "Blok detayı", "operationId": "e35a33d8e7c0999b957b081781d2bf44", "parameters": [ { "name": "page", "in": "path", "required": true, "schema": { "type": "integer" } }, { "name": "block", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Blok detayı" } }, "security": [ { "sanctum": [] } ] }, "put": { "tags": [ "Admin - Page Blocks" ], "summary": "Blok güncelle", "operationId": "729948978fc96a90a84dc594d2d50d62", "parameters": [ { "name": "page", "in": "path", "required": true, "schema": { "type": "integer" } }, { "name": "block", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { "type": { "type": "string" }, "content": { "type": "object" }, "order_index": { "type": "integer" }, "is_active": { "type": "boolean" } }, "type": "object" } } } }, "responses": { "200": { "description": "Blok güncellendi" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] }, "delete": { "tags": [ "Admin - Page Blocks" ], "summary": "Blok sil", "operationId": "5c5f35cb571ba89b8510845fdd5b3e8a", "parameters": [ { "name": "page", "in": "path", "required": true, "schema": { "type": "integer" } }, { "name": "block", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Blok silindi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/pages/{page}/blocks/reorder": { "post": { "tags": [ "Admin - Page Blocks" ], "summary": "Blok sıralamasını güncelle", "operationId": "c7a50e47ad18557f92332f771dc72770", "parameters": [ { "name": "page", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "items" ], "properties": { "items": { "type": "array", "items": { "properties": { "id": { "type": "integer" }, "order_index": { "type": "integer" } }, "type": "object" } } }, "type": "object" } } } }, "responses": { "200": { "description": "Sıralama güncellendi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/categories": { "get": { "tags": [ "Admin - Categories" ], "summary": "Kategorileri listele (Admin)", "operationId": "71fce704423c89eab31adce4a23df70b", "parameters": [ { "name": "search", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer", "default": 15 } } ], "responses": { "200": { "description": "Kategori listesi" } }, "security": [ { "sanctum": [] } ] }, "post": { "tags": [ "Admin - Categories" ], "summary": "Yeni kategori oluştur", "operationId": "810e8b9fee1619d4229208cb942c486a", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "name" ], "properties": { "name": { "type": "string" }, "slug": { "type": "string" }, "description": { "type": "string" }, "image": { "type": "string" }, "icon": { "type": "string" }, "is_active": { "type": "boolean" }, "sort_order": { "type": "integer" }, "meta_title": { "type": "string" }, "meta_description": { "type": "string" } }, "type": "object" } } } }, "responses": { "201": { "description": "Kategori oluşturuldu" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/categories/{category}": { "get": { "tags": [ "Admin - Categories" ], "summary": "Kategori detayı (Admin)", "operationId": "11a8aaa127a831f1b2178b277adfce70", "parameters": [ { "name": "category", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Kategori detayı" }, "404": { "description": "Bulunamadı" } }, "security": [ { "sanctum": [] } ] }, "put": { "tags": [ "Admin - Categories" ], "summary": "Kategori güncelle", "operationId": "ebbab81f1604d13a6519ce9ac4bec3ff", "parameters": [ { "name": "category", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { "name": { "type": "string" }, "slug": { "type": "string" }, "description": { "type": "string" }, "image": { "type": "string" }, "icon": { "type": "string" }, "is_active": { "type": "boolean" }, "sort_order": { "type": "integer" }, "meta_title": { "type": "string" }, "meta_description": { "type": "string" } }, "type": "object" } } } }, "responses": { "200": { "description": "Kategori güncellendi" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] }, "delete": { "tags": [ "Admin - Categories" ], "summary": "Kategori sil", "operationId": "1c50d201211dea34943f752a3cbb8e87", "parameters": [ { "name": "category", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Kategori silindi" }, "404": { "description": "Bulunamadı" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/comments": { "get": { "tags": [ "Admin - Comments" ], "summary": "Yorumları listele (Admin)", "operationId": "3138d6fb10e4082144e13e4978483c8b", "parameters": [ { "name": "is_approved", "in": "query", "required": false, "schema": { "type": "boolean" } }, { "name": "commentable_type", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "search", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer", "default": 15 } } ], "responses": { "200": { "description": "Yorum listesi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/comments/{comment}": { "get": { "tags": [ "Admin - Comments" ], "summary": "Yorum detayı", "operationId": "ee77a7e44028293130b414507c92dc2a", "parameters": [ { "name": "comment", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Yorum detayı" } }, "security": [ { "sanctum": [] } ] }, "put": { "tags": [ "Admin - Comments" ], "summary": "Yorum güncelle (onayla/reddet)", "operationId": "a63d783f762e0a28ff7acd242a1ac285", "parameters": [ { "name": "comment", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { "is_approved": { "type": "boolean" } }, "type": "object" } } } }, "responses": { "200": { "description": "Yorum güncellendi" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] }, "delete": { "tags": [ "Admin - Comments" ], "summary": "Yorum sil", "operationId": "50c1bd338ad18caccb118f3c63007957", "parameters": [ { "name": "comment", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Yorum silindi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/courses/{course}/blocks": { "get": { "tags": [ "Admin - Course Blocks" ], "summary": "Eğitim bloklarını listele", "operationId": "6d3a342af704898e684b3501943ee624", "parameters": [ { "name": "course", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Blok listesi" } }, "security": [ { "sanctum": [] } ] }, "post": { "tags": [ "Admin - Course Blocks" ], "summary": "Yeni eğitim bloğu oluştur", "operationId": "8a900a262d0f470d312948af1f8c8040", "parameters": [ { "name": "course", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "type", "content" ], "properties": { "type": { "type": "string" }, "content": { "type": "object" }, "order_index": { "type": "integer" }, "is_active": { "type": "boolean" } }, "type": "object" } } } }, "responses": { "201": { "description": "Blok oluşturuldu" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/courses/{course}/blocks/{block}": { "get": { "tags": [ "Admin - Course Blocks" ], "summary": "Eğitim blok detayı", "operationId": "d3c004034d8cbc8800d54e3e45f99ac4", "parameters": [ { "name": "course", "in": "path", "required": true, "schema": { "type": "integer" } }, { "name": "block", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Blok detayı" } }, "security": [ { "sanctum": [] } ] }, "put": { "tags": [ "Admin - Course Blocks" ], "summary": "Eğitim bloğu güncelle", "operationId": "c1c619935e771839be6cdd65548a8a92", "parameters": [ { "name": "course", "in": "path", "required": true, "schema": { "type": "integer" } }, { "name": "block", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { "type": { "type": "string" }, "content": { "type": "object" }, "order_index": { "type": "integer" }, "is_active": { "type": "boolean" } }, "type": "object" } } } }, "responses": { "200": { "description": "Blok güncellendi" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] }, "delete": { "tags": [ "Admin - Course Blocks" ], "summary": "Eğitim bloğu sil", "operationId": "034d36af32cde487ae3339366523c6e3", "parameters": [ { "name": "course", "in": "path", "required": true, "schema": { "type": "integer" } }, { "name": "block", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Blok silindi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/courses/{course}/blocks/reorder": { "post": { "tags": [ "Admin - Course Blocks" ], "summary": "Eğitim blok sıralamasını güncelle", "operationId": "1ba704c8c6b9525abb14dce15ab1d303", "parameters": [ { "name": "course", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "items" ], "properties": { "items": { "type": "array", "items": { "properties": { "id": { "type": "integer" }, "order_index": { "type": "integer" } }, "type": "object" } } }, "type": "object" } } } }, "responses": { "200": { "description": "Sıralama güncellendi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/courses": { "get": { "tags": [ "Admin - Courses" ], "summary": "Eğitimleri listele (Admin)", "operationId": "03c545540d1fbeac47fda1522a6dfbd8", "parameters": [ { "name": "category", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "search", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "sort", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer", "default": 15 } } ], "responses": { "200": { "description": "Eğitim listesi" } }, "security": [ { "sanctum": [] } ] }, "post": { "tags": [ "Admin - Courses" ], "summary": "Yeni eğitim oluştur", "operationId": "165267692fcffb498f7dfac3da765f42", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "category_id", "title", "slug", "desc", "long_desc", "duration" ], "properties": { "category_id": { "description": "Kategori ID", "type": "integer" }, "slug": { "description": "URL slug (unique)", "type": "string" }, "title": { "description": "Eğitim başlığı", "type": "string" }, "sub": { "description": "Alt başlık. Örn: STCW II/1", "type": "string", "nullable": true }, "desc": { "description": "Kısa açıklama", "type": "string" }, "long_desc": { "description": "Detaylı açıklama", "type": "string" }, "duration": { "description": "Süre. Örn: 5 Gün", "type": "string" }, "students": { "description": "Öğrenci sayısı", "type": "integer" }, "rating": { "description": "Puan (0-5)", "type": "number", "format": "float" }, "badge": { "description": "Rozet. Örn: Simülatör", "type": "string", "nullable": true }, "image": { "description": "Görsel path", "type": "string", "nullable": true }, "price": { "description": "Fiyat. Örn: 5.000 TL", "type": "string", "nullable": true }, "includes": { "description": "Fiyata dahil olanlar", "type": "array", "items": { "type": "string" }, "nullable": true }, "requirements": { "description": "Katılım koşulları", "type": "array", "items": { "type": "string" }, "nullable": true }, "meta_title": { "description": "SEO Title", "type": "string", "nullable": true }, "meta_description": { "description": "SEO Description", "type": "string", "nullable": true }, "scope": { "description": "Eğitim kapsamı konu başlıkları", "type": "array", "items": { "type": "string" }, "nullable": true }, "standard": { "description": "Uyum standardı. Örn: STCW / IMO Uyumlu", "type": "string", "nullable": true }, "language": { "description": "Eğitim dili. Varsayılan: Türkçe", "type": "string", "nullable": true }, "location": { "description": "Varsayılan lokasyon. Örn: Kadıköy, İstanbul", "type": "string", "nullable": true } }, "type": "object" } } } }, "responses": { "201": { "description": "Eğitim oluşturuldu" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/courses/{course}": { "get": { "tags": [ "Admin - Courses" ], "summary": "Eğitim detayı (Admin)", "operationId": "8b2fa41090fe1e98c5be4e876fc943e7", "parameters": [ { "name": "course", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Eğitim detayı" } }, "security": [ { "sanctum": [] } ] }, "put": { "tags": [ "Admin - Courses" ], "summary": "Eğitim güncelle", "operationId": "8eb9e6e8b13f04cbd656cd66c1e735ca", "parameters": [ { "name": "course", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "category_id", "title", "slug", "desc", "long_desc", "duration" ], "properties": { "category_id": { "description": "Kategori ID", "type": "integer" }, "slug": { "description": "URL slug (unique)", "type": "string" }, "title": { "description": "Eğitim başlığı", "type": "string" }, "sub": { "description": "Alt başlık", "type": "string", "nullable": true }, "desc": { "description": "Kısa açıklama", "type": "string" }, "long_desc": { "description": "Detaylı açıklama", "type": "string" }, "duration": { "description": "Süre. Örn: 5 Gün", "type": "string" }, "students": { "description": "Öğrenci sayısı", "type": "integer" }, "rating": { "description": "Puan (0-5)", "type": "number", "format": "float" }, "badge": { "description": "Rozet", "type": "string", "nullable": true }, "image": { "description": "Görsel path", "type": "string", "nullable": true }, "price": { "description": "Fiyat", "type": "string", "nullable": true }, "includes": { "description": "Fiyata dahil olanlar", "type": "array", "items": { "type": "string" }, "nullable": true }, "requirements": { "description": "Katılım koşulları", "type": "array", "items": { "type": "string" }, "nullable": true }, "meta_title": { "description": "SEO Title", "type": "string", "nullable": true }, "meta_description": { "description": "SEO Description", "type": "string", "nullable": true }, "scope": { "description": "Eğitim kapsamı konu başlıkları", "type": "array", "items": { "type": "string" }, "nullable": true }, "standard": { "description": "Uyum standardı", "type": "string", "nullable": true }, "language": { "description": "Eğitim dili", "type": "string", "nullable": true }, "location": { "description": "Varsayılan lokasyon", "type": "string", "nullable": true } }, "type": "object" } } } }, "responses": { "200": { "description": "Eğitim güncellendi" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] }, "delete": { "tags": [ "Admin - Courses" ], "summary": "Eğitim sil", "operationId": "b3917ad34b239f50321b1c6ae08369ea", "parameters": [ { "name": "course", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Eğitim silindi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/faqs": { "get": { "tags": [ "Admin - FAQs" ], "summary": "SSS listele (Admin)", "operationId": "cfcbab32cd67a2325651757c22ae2249", "parameters": [ { "name": "category", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer", "default": 50 } } ], "responses": { "200": { "description": "SSS listesi" } }, "security": [ { "sanctum": [] } ] }, "post": { "tags": [ "Admin - FAQs" ], "summary": "Yeni SSS oluştur", "operationId": "4dde384948a53bb96a395331cd2dd860", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "question", "answer", "category" ], "properties": { "question": { "type": "string" }, "answer": { "type": "string" }, "category": { "type": "string" }, "is_active": { "type": "boolean" }, "sort_order": { "type": "integer" } }, "type": "object" } } } }, "responses": { "201": { "description": "SSS oluşturuldu" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/faqs/{faq}": { "get": { "tags": [ "Admin - FAQs" ], "summary": "SSS detayı", "operationId": "bd10c420fa3b37cff311a1a56792da2f", "parameters": [ { "name": "faq", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "SSS detayı" } }, "security": [ { "sanctum": [] } ] }, "put": { "tags": [ "Admin - FAQs" ], "summary": "SSS güncelle", "operationId": "c4aaf3285962d8632f1270dd73b0376b", "parameters": [ { "name": "faq", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { "question": { "type": "string" }, "answer": { "type": "string" }, "category": { "type": "string" }, "is_active": { "type": "boolean" }, "sort_order": { "type": "integer" } }, "type": "object" } } } }, "responses": { "200": { "description": "SSS güncellendi" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] }, "delete": { "tags": [ "Admin - FAQs" ], "summary": "SSS sil", "operationId": "badcf7d381999eeed6e23da702440e01", "parameters": [ { "name": "faq", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "SSS silindi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/guide-cards": { "get": { "tags": [ "Admin - Guide Cards" ], "summary": "Rehber kartları listele (Admin)", "operationId": "51d9063154fe9126d50b76cc7eeb3752", "parameters": [ { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer", "default": 15 } } ], "responses": { "200": { "description": "Kart listesi" } }, "security": [ { "sanctum": [] } ] }, "post": { "tags": [ "Admin - Guide Cards" ], "summary": "Yeni rehber kartı oluştur", "operationId": "2d85417066d0a2e349522754d48329b4", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "title", "description", "icon" ], "properties": { "title": { "type": "string" }, "description": { "type": "string" }, "icon": { "type": "string" }, "url": { "type": "string" }, "is_active": { "type": "boolean" }, "sort_order": { "type": "integer" } }, "type": "object" } } } }, "responses": { "201": { "description": "Kart oluşturuldu" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/guide-cards/{guideCard}": { "get": { "tags": [ "Admin - Guide Cards" ], "summary": "Rehber kart detayı", "operationId": "642a326579cc87be64e374a693a33e09", "parameters": [ { "name": "guideCard", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Kart detayı" } }, "security": [ { "sanctum": [] } ] }, "put": { "tags": [ "Admin - Guide Cards" ], "summary": "Rehber kart güncelle", "operationId": "b266ff3b70d4f14f8e8149ee919faba9", "parameters": [ { "name": "guideCard", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { "title": { "type": "string" }, "description": { "type": "string" }, "icon": { "type": "string" }, "url": { "type": "string" }, "is_active": { "type": "boolean" }, "sort_order": { "type": "integer" } }, "type": "object" } } } }, "responses": { "200": { "description": "Kart güncellendi" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] }, "delete": { "tags": [ "Admin - Guide Cards" ], "summary": "Rehber kart sil", "operationId": "4d1c6ada41a9c957af8e265938d20dea", "parameters": [ { "name": "guideCard", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Kart silindi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/hero-slides": { "get": { "tags": [ "Admin - Hero Slides" ], "summary": "Hero slide listele (Admin)", "operationId": "a3e0d5d84108d5fd855b0a8df4e85da6", "parameters": [ { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer", "default": 15 } } ], "responses": { "200": { "description": "Slide listesi" } }, "security": [ { "sanctum": [] } ] }, "post": { "tags": [ "Admin - Hero Slides" ], "summary": "Yeni hero slide oluştur", "operationId": "64cbfa2112a5a9517f12703119ab7ef7", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "title", "image" ], "properties": { "title": { "type": "string" }, "subtitle": { "type": "string" }, "image": { "type": "string" }, "mobile_image": { "type": "string" }, "button_text": { "type": "string" }, "button_url": { "type": "string" }, "is_active": { "type": "boolean" }, "sort_order": { "type": "integer" } }, "type": "object" } } } }, "responses": { "201": { "description": "Slide oluşturuldu" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/hero-slides/{heroSlide}": { "get": { "tags": [ "Admin - Hero Slides" ], "summary": "Hero slide detayı", "operationId": "b5b214351cfc14fd3a36ba729ace670c", "parameters": [ { "name": "heroSlide", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Slide detayı" } }, "security": [ { "sanctum": [] } ] }, "put": { "tags": [ "Admin - Hero Slides" ], "summary": "Hero slide güncelle", "operationId": "21d85e8f11e916a240db9a1b60345d53", "parameters": [ { "name": "heroSlide", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { "title": { "type": "string" }, "subtitle": { "type": "string" }, "image": { "type": "string" }, "button_text": { "type": "string" }, "button_url": { "type": "string" }, "is_active": { "type": "boolean" }, "sort_order": { "type": "integer" } }, "type": "object" } } } }, "responses": { "200": { "description": "Slide güncellendi" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] }, "delete": { "tags": [ "Admin - Hero Slides" ], "summary": "Hero slide sil", "operationId": "45c99667452ac71a547dd6480e5820cf", "parameters": [ { "name": "heroSlide", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Slide silindi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/leads": { "get": { "tags": [ "Admin - Leads" ], "summary": "Başvuruları listele (Admin)", "operationId": "827e2e9631a50f75cd643e3645316baa", "parameters": [ { "name": "status", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "source", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "is_read", "in": "query", "required": false, "schema": { "type": "boolean" } }, { "name": "search", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer", "default": 15 } } ], "responses": { "200": { "description": "Başvuru listesi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/leads/{lead}": { "get": { "tags": [ "Admin - Leads" ], "summary": "Başvuru detayı", "operationId": "597e6322ffcc1e2206e5af28e04a15a2", "parameters": [ { "name": "lead", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Başvuru detayı" } }, "security": [ { "sanctum": [] } ] }, "put": { "tags": [ "Admin - Leads" ], "summary": "Başvuru güncelle", "operationId": "51715f9de41445aa43c258202d7fb6f9", "parameters": [ { "name": "lead", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { "status": { "type": "string" }, "is_read": { "type": "boolean" }, "admin_notes": { "type": "string" } }, "type": "object" } } } }, "responses": { "200": { "description": "Başvuru güncellendi" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] }, "delete": { "tags": [ "Admin - Leads" ], "summary": "Başvuru sil", "operationId": "da72ee6606e0c76de6b0934663c03b7f", "parameters": [ { "name": "lead", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Başvuru silindi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/menus": { "get": { "tags": [ "Admin - Menus" ], "summary": "Menü öğelerini listele (Admin)", "operationId": "ac6c1d11b28a3955647836d63fd140e3", "parameters": [ { "name": "location", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer", "default": 50 } } ], "responses": { "200": { "description": "Menü listesi" } }, "security": [ { "sanctum": [] } ] }, "post": { "tags": [ "Admin - Menus" ], "summary": "Yeni menü öğesi oluştur", "operationId": "f181e73829920464aabe98bb936e0c78", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "title", "url", "location" ], "properties": { "title": { "type": "string" }, "url": { "type": "string" }, "location": { "type": "string" }, "parent_id": { "type": "integer" }, "target": { "type": "string" }, "icon": { "type": "string" }, "is_active": { "type": "boolean" }, "sort_order": { "type": "integer" } }, "type": "object" } } } }, "responses": { "201": { "description": "Menü oluşturuldu" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/menus/{menu}": { "get": { "tags": [ "Admin - Menus" ], "summary": "Menü detayı", "operationId": "229c92e3fdead223600091d8eabcdfb7", "parameters": [ { "name": "menu", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Menü detayı" } }, "security": [ { "sanctum": [] } ] }, "put": { "tags": [ "Admin - Menus" ], "summary": "Menü güncelle", "operationId": "50dd0234dbe115bfc11b018c5f8e3251", "parameters": [ { "name": "menu", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { "title": { "type": "string" }, "url": { "type": "string" }, "location": { "type": "string" }, "parent_id": { "type": "integer" }, "is_active": { "type": "boolean" }, "sort_order": { "type": "integer" } }, "type": "object" } } } }, "responses": { "200": { "description": "Menü güncellendi" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] }, "delete": { "tags": [ "Admin - Menus" ], "summary": "Menü sil", "operationId": "fcac0f8f4dd79fd8c5d0b9663721af69", "parameters": [ { "name": "menu", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Menü silindi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/menus/reorder": { "post": { "tags": [ "Admin - Menus" ], "summary": "Menü sıralamasını güncelle", "operationId": "fdaadcc88ca8129597fa65cf506c96c3", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "items" ], "properties": { "items": { "type": "array", "items": { "properties": { "id": { "type": "integer" }, "order_index": { "type": "integer" }, "parent_id": { "type": "integer", "nullable": true } }, "type": "object" } } }, "type": "object" } } } }, "responses": { "200": { "description": "Sıralama güncellendi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/pages": { "get": { "tags": [ "Admin - Pages" ], "summary": "Sayfaları listele (Admin)", "operationId": "6cbf05aab452d1f00614d2ba44d0ce8d", "parameters": [ { "name": "search", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer", "default": 15 } } ], "responses": { "200": { "description": "Sayfa listesi" } }, "security": [ { "sanctum": [] } ] }, "post": { "tags": [ "Admin - Pages" ], "summary": "Yeni sayfa oluştur", "operationId": "df071dd3329cc4093f01363e0efc9d8f", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "title", "slug" ], "properties": { "title": { "type": "string" }, "slug": { "type": "string" }, "content": { "type": "string" }, "template": { "type": "string" }, "is_active": { "type": "boolean" }, "meta_title": { "type": "string" }, "meta_description": { "type": "string" }, "blocks": { "type": "array", "items": { "properties": { "type": { "type": "string" }, "content": { "type": "object" }, "order_index": { "type": "integer" } }, "type": "object" } } }, "type": "object" } } } }, "responses": { "201": { "description": "Sayfa oluşturuldu" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/pages/{page}": { "get": { "tags": [ "Admin - Pages" ], "summary": "Sayfa detayı (Admin)", "operationId": "62879d1ca7493adadc725e80809529ad", "parameters": [ { "name": "page", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Sayfa detayı" } }, "security": [ { "sanctum": [] } ] }, "put": { "tags": [ "Admin - Pages" ], "summary": "Sayfa güncelle", "operationId": "de6b56fb2cbe5f27878237a572f75afe", "parameters": [ { "name": "page", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { "title": { "type": "string" }, "slug": { "type": "string" }, "content": { "type": "string" }, "template": { "type": "string" }, "is_active": { "type": "boolean" }, "meta_title": { "type": "string" }, "meta_description": { "type": "string" }, "blocks": { "type": "array", "items": { "properties": { "type": { "type": "string" }, "content": { "type": "object" }, "order_index": { "type": "integer" } }, "type": "object" } } }, "type": "object" } } } }, "responses": { "200": { "description": "Sayfa güncellendi" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] }, "delete": { "tags": [ "Admin - Pages" ], "summary": "Sayfa sil", "operationId": "a4bfb73ac56742e57f69c3ea34c3f996", "parameters": [ { "name": "page", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Sayfa silindi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/preview": { "post": { "tags": [ "Admin - Preview" ], "summary": "Önizleme oluştur", "operationId": "352e61ce8571f2f8b9a66d09cfef54e9", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "page_id", "blocks" ], "properties": { "page_id": { "type": "integer" }, "blocks": { "type": "array", "items": { "properties": { "type": { "type": "string" }, "content": { "type": "object" }, "order_index": { "type": "integer" } }, "type": "object" } } }, "type": "object" } } } }, "responses": { "201": { "description": "Önizleme oluşturuldu" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/preview/{token}": { "delete": { "tags": [ "Admin - Preview" ], "summary": "Önizlemeyi sil", "operationId": "f91275d50a610caf6b38b3fc4fa17d35", "parameters": [ { "name": "token", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Önizleme silindi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/roles": { "get": { "tags": [ "Admin - Roles" ], "summary": "Rolleri listele", "operationId": "2af0a74e89a916dd65550cb1ff927c18", "responses": { "200": { "description": "Rol listesi" } }, "security": [ { "sanctum": [] } ] }, "post": { "tags": [ "Admin - Roles" ], "summary": "Yeni rol oluştur", "operationId": "811df9a4fd01b110d9ae33803b064cd3", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "name", "permissions" ], "properties": { "name": { "type": "string", "example": "moderator" }, "permissions": { "type": "array", "items": { "type": "string" }, "example": [ "view-category", "view-course" ] } }, "type": "object" } } } }, "responses": { "201": { "description": "Rol oluşturuldu" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/roles/{role}": { "get": { "tags": [ "Admin - Roles" ], "summary": "Rol detayı", "operationId": "98421a56365abe98dcc00ef4976daf31", "parameters": [ { "name": "role", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Rol detayı" }, "404": { "description": "Bulunamadı" } }, "security": [ { "sanctum": [] } ] }, "put": { "tags": [ "Admin - Roles" ], "summary": "Rol güncelle", "operationId": "22546d4b6474363c99fd89c71da7d97e", "parameters": [ { "name": "role", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { "name": { "type": "string", "example": "moderator" }, "permissions": { "type": "array", "items": { "type": "string" } } }, "type": "object" } } } }, "responses": { "200": { "description": "Rol güncellendi" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] }, "delete": { "tags": [ "Admin - Roles" ], "summary": "Rol sil", "operationId": "4bac991cae74b1814ee2c4c1e2178027", "parameters": [ { "name": "role", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Rol silindi" }, "403": { "description": "Varsayılan roller silinemez" }, "404": { "description": "Bulunamadı" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/permissions": { "get": { "tags": [ "Admin - Roles" ], "summary": "Tüm yetkileri listele", "description": "Rol oluştururken/düzenlerken kullanılacak tüm mevcut yetkileri modül bazlı gruplandırarak döner.", "operationId": "905006cd4f639a04a7ca71a360d4c0f7", "responses": { "200": { "description": "Yetki listesi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/schedules": { "get": { "tags": [ "Admin - Schedules" ], "summary": "Takvimleri listele (Admin)", "operationId": "591c4d96ba4ec32146e1c754a4f1252b", "parameters": [ { "name": "course_id", "in": "query", "required": false, "schema": { "type": "integer" } }, { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer", "default": 15 } } ], "responses": { "200": { "description": "Takvim listesi" } }, "security": [ { "sanctum": [] } ] }, "post": { "tags": [ "Admin - Schedules" ], "summary": "Yeni takvim oluştur", "operationId": "62a6df7810cffbe6c03bd5ddc144b3f4", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "course_id", "start_date", "location", "quota" ], "properties": { "course_id": { "type": "integer" }, "start_date": { "type": "string", "format": "date" }, "end_date": { "type": "string", "format": "date" }, "location": { "type": "string" }, "instructor": { "type": "string" }, "quota": { "type": "integer" }, "enrolled_count": { "type": "integer" }, "price_override": { "type": "number" }, "status": { "type": "string" }, "notes": { "type": "string" } }, "type": "object" } } } }, "responses": { "201": { "description": "Takvim oluşturuldu" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/schedules/{schedule}": { "get": { "tags": [ "Admin - Schedules" ], "summary": "Takvim detayı (Admin)", "operationId": "fdc2f99f80d245a81512f696e7761d7c", "parameters": [ { "name": "schedule", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Takvim detayı" } }, "security": [ { "sanctum": [] } ] }, "put": { "tags": [ "Admin - Schedules" ], "summary": "Takvim güncelle", "operationId": "4b90fc065b0499df369ff76a3185a18d", "parameters": [ { "name": "schedule", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { "course_id": { "type": "integer" }, "start_date": { "type": "string", "format": "date" }, "end_date": { "type": "string", "format": "date" }, "location": { "type": "string" }, "instructor": { "type": "string" }, "quota": { "type": "integer" }, "status": { "type": "string" } }, "type": "object" } } } }, "responses": { "200": { "description": "Takvim güncellendi" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] }, "delete": { "tags": [ "Admin - Schedules" ], "summary": "Takvim sil", "operationId": "2dc9aa3b201dab8a2ca77e77e6850a55", "parameters": [ { "name": "schedule", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Takvim silindi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/settings": { "get": { "tags": [ "Admin - Settings" ], "summary": "Tüm ayarları listele (Admin)", "operationId": "524af03e15d7bc3114502504f91c58b7", "responses": { "200": { "description": "Ayar listesi" } }, "security": [ { "sanctum": [] } ] }, "put": { "tags": [ "Admin - Settings" ], "summary": "Ayarları toplu güncelle (dot notation: general.site_name)", "operationId": "0c3c6eb6e7c69fedcf19f55431d16373", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "settings" ], "properties": { "settings": { "type": "object", "example": "{\"general.site_name\": \"Yeni Ad\", \"contact.phone_primary\": \"+90 ...\"}" } }, "type": "object" } } } }, "responses": { "200": { "description": "Ayarlar güncellendi" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/settings/group/{group}": { "get": { "tags": [ "Admin - Settings" ], "summary": "Gruba göre ayarları getir", "operationId": "2e6dba09714d593f90a2158962ec1d6b", "parameters": [ { "name": "group", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Grup ayarları" }, "404": { "description": "Grup bulunamadı" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/settings/clear-cache": { "post": { "tags": [ "Admin - Settings" ], "summary": "Ayar cache temizle", "operationId": "b25d78ed8e45e6f6e1b571da66d24d94", "responses": { "200": { "description": "Cache temizlendi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/stories": { "get": { "tags": [ "Admin - Stories" ], "summary": "Tüm hikayeleri listele (Admin)", "operationId": "963feaad34eefefc11f693e40eb3a503", "responses": { "200": { "description": "Hikaye listesi" } }, "security": [ { "sanctum": [] } ] }, "post": { "tags": [ "Admin - Stories" ], "summary": "Yeni hikaye oluştur", "operationId": "ee03fccfd0c46ec5a37ad30f0c6a0344", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "title", "content" ], "properties": { "title": { "type": "string" }, "badge": { "type": "string", "nullable": true }, "content": { "type": "string" }, "image": { "type": "string", "nullable": true }, "cta_text": { "type": "string", "nullable": true }, "cta_url": { "type": "string", "nullable": true }, "order_index": { "type": "integer" }, "is_active": { "type": "boolean" } }, "type": "object" } } } }, "responses": { "201": { "description": "Hikaye oluşturuldu" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/stories/{story}": { "get": { "tags": [ "Admin - Stories" ], "summary": "Hikaye detayı", "operationId": "52c22f0b12abc32d30baf1e4417d7734", "parameters": [ { "name": "story", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Hikaye detayı" } }, "security": [ { "sanctum": [] } ] }, "put": { "tags": [ "Admin - Stories" ], "summary": "Hikaye güncelle", "operationId": "1b271c0cccf472dfeb3f5b506326c876", "parameters": [ { "name": "story", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { "title": { "type": "string" }, "badge": { "type": "string", "nullable": true }, "content": { "type": "string" }, "image": { "type": "string", "nullable": true }, "cta_text": { "type": "string", "nullable": true }, "cta_url": { "type": "string", "nullable": true }, "order_index": { "type": "integer" }, "is_active": { "type": "boolean" } }, "type": "object" } } } }, "responses": { "200": { "description": "Hikaye güncellendi" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] }, "delete": { "tags": [ "Admin - Stories" ], "summary": "Hikaye sil", "operationId": "cfec8b5ddc812c696206ddd2b5965634", "parameters": [ { "name": "story", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Hikaye silindi" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/upload": { "post": { "tags": [ "Upload" ], "summary": "Dosya yükle", "description": "Görsel dosyası yükler (max 5MB). Desteklenen formatlar: jpg, png, gif, svg, webp.", "operationId": "0bf4da1d564a9ea318a38e3d53742ce0", "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "required": [ "file" ], "properties": { "file": { "description": "Görsel dosyası", "type": "string", "format": "binary" } }, "type": "object" } } } }, "responses": { "201": { "description": "Dosya yüklendi", "content": { "application/json": { "schema": { "properties": { "data": { "properties": { "path": { "type": "string" }, "url": { "type": "string" } }, "type": "object" } }, "type": "object" } } } }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/users": { "get": { "tags": [ "Admin - Users" ], "summary": "Admin kullanıcılarını listele", "operationId": "9ded17315e13756cd593b5840cd39a26", "parameters": [ { "name": "search", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "role", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer", "default": 15 } } ], "responses": { "200": { "description": "Kullanıcı listesi" } }, "security": [ { "sanctum": [] } ] }, "post": { "tags": [ "Admin - Users" ], "summary": "Yeni admin kullanıcı oluştur", "operationId": "f6f90d5fbbe24f66eb2b43901e0d3f38", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "name", "email", "password", "password_confirmation", "role" ], "properties": { "name": { "type": "string", "example": "Editör Kullanıcı" }, "email": { "type": "string", "format": "email", "example": "editor@bogazici.com" }, "password": { "type": "string", "format": "password", "example": "password123" }, "password_confirmation": { "type": "string", "format": "password", "example": "password123" }, "role": { "type": "string", "example": "editor" } }, "type": "object" } } } }, "responses": { "201": { "description": "Kullanıcı oluşturuldu" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] } }, "/api/admin/users/{user}": { "get": { "tags": [ "Admin - Users" ], "summary": "Kullanıcı detayı", "operationId": "1755e6ac1393c92a407ec78308857c0e", "parameters": [ { "name": "user", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Kullanıcı detayı" }, "404": { "description": "Bulunamadı" } }, "security": [ { "sanctum": [] } ] }, "put": { "tags": [ "Admin - Users" ], "summary": "Kullanıcı güncelle", "operationId": "ad842a2d4b0e2fdf3756da07e54b10b0", "parameters": [ { "name": "user", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { "name": { "type": "string" }, "email": { "type": "string", "format": "email" }, "password": { "type": "string", "format": "password" }, "password_confirmation": { "type": "string", "format": "password" }, "role": { "type": "string", "example": "editor" } }, "type": "object" } } } }, "responses": { "200": { "description": "Kullanıcı güncellendi" }, "422": { "description": "Validasyon hatası" } }, "security": [ { "sanctum": [] } ] }, "delete": { "tags": [ "Admin - Users" ], "summary": "Kullanıcı sil (soft delete)", "operationId": "30b96bca56895875c78781639320f633", "parameters": [ { "name": "user", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Kullanıcı silindi" }, "403": { "description": "Kendini silemezsin" }, "404": { "description": "Bulunamadı" } }, "security": [ { "sanctum": [] } ] } }, "/api/v1/announcements": { "get": { "tags": [ "Announcements" ], "summary": "Duyuruları listele", "operationId": "b02afaa4b0757c9fe2cb79bfdc60749e", "parameters": [ { "name": "category", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "featured", "in": "query", "required": false, "schema": { "type": "boolean" } }, { "name": "search", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "sort", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer", "default": 15 } } ], "responses": { "200": { "description": "Duyuru listesi" } } } }, "/api/v1/announcements/{slug}": { "get": { "tags": [ "Announcements" ], "summary": "Duyuru detayı", "operationId": "49b63b73657841b8f3d036d0869ba58c", "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Duyuru detayı" }, "404": { "description": "Duyuru bulunamadı" } } } }, "/api/v1/categories": { "get": { "tags": [ "Categories" ], "summary": "Kategorileri listele", "description": "Tüm aktif kategorileri sayfalanmış olarak döndürür.", "operationId": "e225c2b7eb5daf7fb16e00f4f07ff030", "parameters": [ { "name": "search", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer", "default": 15 } } ], "responses": { "200": { "description": "Kategori listesi" } } } }, "/api/v1/categories/{slug}": { "get": { "tags": [ "Categories" ], "summary": "Kategori detayı", "description": "Slug ile kategori detayını döndürür.", "operationId": "6b5e99ab9669011f1260b2a8fb93392e", "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Kategori detayı" }, "404": { "description": "Kategori bulunamadı" } } } }, "/api/v1/comments/{type}/{id}": { "get": { "tags": [ "Comments" ], "summary": "Onaylı yorumları getir", "operationId": "1380d7b194b8901c7885e2ec68047603", "parameters": [ { "name": "type", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "course", "category", "announcement" ] } }, { "name": "id", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Onaylı yorum listesi" }, "404": { "description": "Geçersiz yorum tipi" } } } }, "/api/v1/comments": { "post": { "tags": [ "Comments" ], "summary": "Yorum gönder", "operationId": "51f741718cabbf7ddf0e49b69f645dbe", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "body", "author_name", "author_email", "commentable_type", "commentable_id" ], "properties": { "body": { "type": "string" }, "author_name": { "type": "string" }, "author_email": { "type": "string", "format": "email" }, "commentable_type": { "type": "string", "enum": [ "course", "category", "announcement" ] }, "commentable_id": { "type": "integer" }, "rating": { "type": "integer", "maximum": 5, "minimum": 1 } }, "type": "object" } } } }, "responses": { "201": { "description": "Yorum gönderildi" }, "422": { "description": "Validasyon hatası" } } } }, "/api/v1/courses": { "get": { "tags": [ "Courses" ], "summary": "Eğitimleri listele", "description": "Tüm eğitimleri sayfalanmış olarak döndürür. Kategori, arama ve sıralama filtresi destekler.", "operationId": "3522f88b734e2061541a8dbd0b6be53c", "parameters": [ { "name": "category", "in": "query", "description": "Kategori slug filtresi", "required": false, "schema": { "type": "string" } }, { "name": "search", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "Örn: -created_at, title", "required": false, "schema": { "type": "string" } }, { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer", "default": 15 } } ], "responses": { "200": { "description": "Eğitim listesi" } } } }, "/api/v1/courses/{slug}": { "get": { "tags": [ "Courses" ], "summary": "Eğitim detayı", "description": "Slug ile eğitim detayını döndürür.", "operationId": "0c45ecab08c0edb745cbb12ced0b8e90", "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Eğitim detayı" }, "404": { "description": "Eğitim bulunamadı" } } } }, "/api/v1/faqs/{category?}": { "get": { "tags": [ "FAQs" ], "summary": "SSS listesi", "description": "Tüm veya kategoriye göre filtrelenmiş SSS listesi döndürür. ?limit=6 ile anasayfa için sınırlanabilir.", "operationId": "05fc6955e10e515e3c0f8a9f8692a5aa", "parameters": [ { "name": "category", "in": "path", "description": "FAQ kategori filtresi", "required": false, "schema": { "type": "string" } }, { "name": "limit", "in": "query", "description": "Dönen SSS sayısını sınırla (anasayfa için)", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "SSS listesi" }, "404": { "description": "Kategori bulunamadı" } } } }, "/api/v1/guide-cards": { "get": { "tags": [ "Guide Cards" ], "summary": "Rehber kartlarını listele", "operationId": "9697e98cfcef9c2f7c09bf2fb461ffc6", "responses": { "200": { "description": "Rehber kart listesi" } } } }, "/api/v1/hero-slides": { "get": { "tags": [ "Hero Slides" ], "summary": "Aktif hero slide listesi", "operationId": "8f881c6b634a6034a79601e3798fc08a", "responses": { "200": { "description": "Aktif hero slide listesi" } } } }, "/api/v1/leads": { "post": { "tags": [ "Leads" ], "summary": "Yeni başvuru/talep oluştur", "operationId": "816520615fff48e26eb49ca76b38a78c", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ "name", "phone", "source", "kvkk_consent" ], "properties": { "name": { "description": "Ad Soyad", "type": "string" }, "phone": { "description": "Telefon", "type": "string" }, "email": { "type": "string", "format": "email", "nullable": true }, "source": { "description": "kurs_kayit, danismanlik, duyuru, iletisim", "type": "string" }, "target_course": { "description": "Kurs slug", "type": "string", "nullable": true }, "education_level": { "type": "string", "nullable": true }, "subject": { "type": "string", "nullable": true }, "message": { "type": "string", "nullable": true }, "kvkk_consent": { "description": "KVKK onayı (zorunlu, true olmalı)", "type": "boolean" }, "marketing_consent": { "type": "boolean", "nullable": true }, "utm_source": { "type": "string", "nullable": true }, "utm_medium": { "type": "string", "nullable": true }, "utm_campaign": { "type": "string", "nullable": true } }, "type": "object" } } } }, "responses": { "201": { "description": "Başvuru alındı" }, "422": { "description": "Validasyon hatası" } } } }, "/api/v1/menus/{location}": { "get": { "tags": [ "Menus" ], "summary": "Konuma göre menü öğelerini getir", "operationId": "6559dfcc3a286a1014a87ae84ab032fc", "parameters": [ { "name": "location", "in": "path", "description": "header, footer, mobile", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Menü listesi" }, "404": { "description": "Menü konumu bulunamadı" } } } }, "/api/v1/pages/{slug}": { "get": { "tags": [ "Pages" ], "summary": "Sayfa detayı", "operationId": "13c3c0449d274e4f6966bc57a6dc6087", "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Sayfa detayı" }, "404": { "description": "Sayfa bulunamadı" } } } }, "/api/v1/preview/{token}": { "get": { "tags": [ "Preview" ], "summary": "Önizleme verisini getir (public)", "operationId": "2fe9d63e5f07638af5ef70940378cd3f", "parameters": [ { "name": "token", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Önizleme verisi" }, "404": { "description": "Önizleme bulunamadı veya süresi dolmuş" } } } }, "/api/v1/schedules": { "get": { "tags": [ "Schedules" ], "summary": "Eğitim takvimini listele", "operationId": "b1c4b2b699913ab9a2a9755e851a4a48", "parameters": [ { "name": "course_id", "in": "query", "required": false, "schema": { "type": "integer" } }, { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer", "default": 15 } } ], "responses": { "200": { "description": "Takvim listesi" } } } }, "/api/v1/schedules/upcoming": { "get": { "tags": [ "Schedules" ], "summary": "Yaklaşan eğitimleri listele", "operationId": "08cb28c6491a171608bbd02de0aa7025", "responses": { "200": { "description": "Yaklaşan eğitimler" } } } }, "/api/v1/schedules/{id}": { "get": { "tags": [ "Schedules" ], "summary": "Takvim detayı", "operationId": "799eca0d264ba539216a4dd07cd8447b", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Takvim detayı" }, "404": { "description": "Takvim bulunamadı" } } } }, "/api/v1/settings": { "get": { "tags": [ "Settings" ], "summary": "Tüm site ayarlarını getir (group bazlı nested)", "description": "Return all public settings grouped by group name.", "operationId": "0dd8f3513d25a61df64210ec5b698722", "responses": { "200": { "description": "Ayarlar listesi" } } } }, "/api/v1/settings/{group}": { "get": { "tags": [ "Settings" ], "summary": "Tek grup ayarlarını getir", "description": "Return public settings for a single group.", "operationId": "f7dd44d43bc4b684e67b3905a81fd6e1", "parameters": [ { "name": "group", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Grup ayarları" }, "404": { "description": "Grup bulunamadı" } } } }, "/api/v1/sitemap-data": { "get": { "tags": [ "Sitemap" ], "summary": "SEO sitemap verisi", "description": "Yayındaki tüm kurs, duyuru ve sayfa slug+updated_at bilgilerini döner.", "operationId": "0bf0e832809b20c97cede40aa1be8e76", "responses": { "200": { "description": "Sitemap verisi" } } } }, "/api/v1/stories": { "get": { "tags": [ "Stories" ], "summary": "Aktif hikayeleri listele", "operationId": "c3b775e95dc619bc709034aa863d2a47", "responses": { "200": { "description": "Hikaye listesi" } } } } }, "components": { "securitySchemes": { "sanctum": { "type": "apiKey", "description": "Enter token in format (Bearer )", "name": "Authorization", "in": "header" } } }, "tags": [ { "name": "Auth", "description": "Kimlik doğrulama işlemleri" }, { "name": "Upload", "description": "Dosya yükleme" }, { "name": "Categories", "description": "Kategori işlemleri" }, { "name": "Courses", "description": "Eğitim işlemleri" }, { "name": "Schedules", "description": "Eğitim takvimi" }, { "name": "Announcements", "description": "Duyuru ve haberler" }, { "name": "Hero Slides", "description": "Ana sayfa slider" }, { "name": "Leads", "description": "İletişim talepleri" }, { "name": "Menus", "description": "Menü yönetimi" }, { "name": "Comments", "description": "Yorum yönetimi" }, { "name": "FAQs", "description": "Sıkça sorulan sorular" }, { "name": "Guide Cards", "description": "Rehber kartları" }, { "name": "Settings", "description": "Site ayarları" }, { "name": "Pages", "description": "Sayfa yönetimi" }, { "name": "Admin - Categories", "description": "Admin: Kategori CRUD" }, { "name": "Admin - Courses", "description": "Admin: Eğitim CRUD" }, { "name": "Admin - Schedules", "description": "Admin: Takvim CRUD" }, { "name": "Admin - Announcements", "description": "Admin: Duyuru CRUD" }, { "name": "Admin - Hero Slides", "description": "Admin: Hero Slide CRUD" }, { "name": "Admin - Leads", "description": "Admin: Başvuru yönetimi" }, { "name": "Admin - Menus", "description": "Admin: Menü CRUD" }, { "name": "Admin - Comments", "description": "Admin: Yorum yönetimi" }, { "name": "Admin - FAQs", "description": "Admin: SSS CRUD" }, { "name": "Admin - Guide Cards", "description": "Admin: Rehber kartları CRUD" }, { "name": "Admin - Settings", "description": "Admin: Ayar yönetimi" }, { "name": "Admin - Pages", "description": "Admin: Sayfa CRUD" }, { "name": "Admin - Page Blocks", "description": "Admin - Page Blocks" }, { "name": "Admin - Course Blocks", "description": "Admin - Course Blocks" }, { "name": "Admin - Preview", "description": "Admin - Preview" }, { "name": "Admin - Roles", "description": "Admin - Roles" }, { "name": "Admin - Stories", "description": "Admin - Stories" }, { "name": "Admin - Users", "description": "Admin - Users" }, { "name": "Preview", "description": "Preview" }, { "name": "Sitemap", "description": "Sitemap" }, { "name": "Stories", "description": "Stories" } ] }