# SubmitCMS Full API & SDK Specification > Complete machine-readable reference for AI agents, LLM assistants, and code generators. > Source branch: test@502a041 > Total modules: 23 | Total methods: 227 --- ## 1. Executive Summary & Architecture SubmitCMS is an API-first multi-tenant headless CMS and e-commerce platform. The SDK provides 4 official language distributions: - **JavaScript / TypeScript**: `submitcms` (`npm i submitcms`) - **PHP**: `submitcms/sdk` (`composer require submitcms/sdk`) - **Swift (iOS / macOS)**: `SubmitCMS` (`https://github.com/Pariette-Inc/submit.sdk`) - **Kotlin (Android)**: `com.submitcms.sdk:submitcms-android:0.1.0` ### Public Delivery vs Management - Use `sdk.delivery` for public visitor-facing content (read-only, cached on CDN, no login required). - Use `sdk.records` and `sdk.contentTypes` for management console operations (write/update, authentication required). --- ## 2. Global Error Format All API endpoints return standard JSON error structures: ```json { "status": false, "error": { "code": "MODULE_DISABLED", "message": "The requested module is disabled for this tenant.", "status": 403, "errors": {} } } ``` --- ## 3. Complete SDK Module Reference ### Module: sdk.addresses Kullanıcı adresleri. `/api/user/addresses` ve `/api/shopping/addresses` aynı işi görür; SDK ilkini kullanır. #### Methods (4) ##### `sdk.addresses.list()` - **HTTP Method**: `GET` `/api/user/addresses` - **Auth**: envToken, jwt --- ##### `sdk.addresses.create(payload)` - **HTTP Method**: `POST` `/api/user/addresses` - **Auth**: envToken, jwt - **Parameters**: - `payload` (Omit) [required] --- ##### `sdk.addresses.update(id, payload)` - **HTTP Method**: `PUT` `/api/user/addresses/{id}` - **Auth**: envToken, jwt - **Parameters**: - `id` (number) [required] - `payload` (Partial
) [required] --- ##### `sdk.addresses.delete(id)` - **HTTP Method**: `DELETE` `/api/user/addresses/{id}` - **Auth**: envToken, jwt - **Parameters**: - `id` (number) [required] --- ### Module: sdk.ai Yapay zekâ kredileri. Her AI çağrısı (metin iyileştirme, çeviri, SEO, görsel üretimi) kredi harcar. Bakiye yetmezse ilgili uç 402 döner. #### Methods (6) ##### `sdk.ai.credits()` - **HTTP Method**: `GET` `/api/ai/credits` - **Summary**: Kalan kredi ve dönem bilgisi. - **Auth**: envToken, jwt, envMember --- ##### `sdk.ai.packages()` - **HTTP Method**: `GET` `/api/ai/credits/packages` - **Auth**: envToken, jwt, envMember --- ##### `sdk.ai.purchase(packageId, payload)` - **HTTP Method**: `POST` `/api/ai/credits/purchase` - **Auth**: envToken, jwt, envMember - **Parameters**: - `packageId` (number) [required] - `payload` (Record) [optional] (default: {}) --- ##### `sdk.ai.transactions(params)` - **HTTP Method**: `GET` `/api/ai/credits/transactions` - **Summary**: Harcama geçmişi — hangi işlem ne kadar kredi yaktı. - **Auth**: envToken, jwt, envMember - **Parameters**: - `params` (Record) [optional] (default: {}) --- ##### `sdk.ai.imageModels()` - **HTTP Method**: `GET` `/api/schema/ai/image-models` - **Summary**: Kullanılabilir görsel üretim modelleri ve kredi maliyetleri. - **Auth**: envToken, jwt, envMember --- ##### `sdk.ai.generateImage(payload)` - **HTTP Method**: `POST` `/api/schema/ai/image` - **Summary**: Görsel üretir ve site medyasına kaydeder. - **Auth**: envToken, jwt, envMember - **Parameters**: - `payload` ({ prompt: string; model?: string } & Record) [optional] --- ### Module: sdk.auth Kimlik doğrulama, hesap ve oturum işlemleri. Başarılı `login`/`register` sonrası JWT istemciye otomatik yazılır — ayrıca `setAuthToken` çağırmanız gerekmez. `logout` da temizler. #### Methods (26) ##### `sdk.auth.login(payload)` - **HTTP Method**: `POST` `/api/auth/login` - **Auth**: envToken - **Parameters**: - `payload` (LoginPayload) [required] --- ##### `sdk.auth.loginApp(payload)` - **HTTP Method**: `POST` `/api/auth/login-app` - **Auth**: envToken - **Parameters**: - `payload` (LoginPayload) [required] --- ##### `sdk.auth.console(payload)` - **HTTP Method**: `POST` `/api/auth/console` - **Auth**: envToken - **Parameters**: - `payload` (LoginPayload) [required] --- ##### `sdk.auth.register(payload)` - **HTTP Method**: `POST` `/api/auth/register` - **Summary**: Yeni hesap açar. - **Parameters**: - `payload` (RegisterPayload) [required] --- ##### `sdk.auth.registerAndCreateEnvironment(payload)` - **HTTP Method**: `POST` `/api/auth/registerAndCreateEnvironment` - **Summary**: Hesap açıp aynı istekte yeni bir site kurar (onboarding akışı). - **Parameters**: - `payload` (RegisterPayload & { site_title: string; site_type?: string }) [optional] --- ##### `sdk.auth.logout()` - **HTTP Method**: `POST` `/api/auth/logout` --- ##### `sdk.auth.me()` - **HTTP Method**: `GET` `/api/auth/me` - **Summary**: Oturum açmış kullanıcı. Yalnızca JWT ister, site token'ı gerekmez. - **Auth**: jwt --- ##### `sdk.auth.refresh()` - **HTTP Method**: `GET` `/api/auth/refresh` --- ##### `sdk.auth.myEnvironments()` - **HTTP Method**: `GET` `/api/my-environments` - **Summary**: Kullanıcının erişebildiği siteler — panelde site seçici bunu kullanır. - **Auth**: envToken, jwt --- ##### `sdk.auth.forgotPassword(email)` - **HTTP Method**: `POST` `/api/auth/forgot-password` - **Summary**: Sıfırlama bağlantısı gönderir. Rate limit: `throttle:forgot-password`. - **Parameters**: - `email` (string) [required] --- ##### `sdk.auth.resendForgotPasswordMail(email)` - **HTTP Method**: `POST` `/api/auth/resend-forgot-password-mail` - **Summary**: Sıfırlama e-postasını yeniden gönderir. - **Parameters**: - `email` (string) [required] --- ##### `sdk.auth.checkResetToken(token)` - **HTTP Method**: `GET` `/api/auth/check-reset-token` - **Summary**: Sıfırlama bağlantısındaki token hâlâ geçerli mi — formu göstermeden önce. - **Parameters**: - `token` (string) [required] --- ##### `sdk.auth.resetPassword(payload)` - **HTTP Method**: `POST` `/api/auth/reset-password` - **Parameters**: - `payload` ({ token: string email: string password: string password_confirmation: string }) [required] --- ##### `sdk.auth.updatePassword(payload)` - **HTTP Method**: `POST` `/api/auth/password/update` - **Summary**: Oturum içi parola değişimi — mevcut parola zorunlu. - **Auth**: envToken, jwt - **Parameters**: - `payload` ({ current_password: string password: string password_confirmation: string }) [required] --- ##### `sdk.auth.updateProfile(payload)` - **HTTP Method**: `POST` `/api/auth/profile/update` - **Auth**: envToken, jwt - **Parameters**: - `payload` (Partial> & Record) [required] --- ##### `sdk.auth.updateEmail(payload)` - **HTTP Method**: `POST` `/api/auth/email/update` - **Summary**: E-posta değişimi — yeni adrese doğrulama gider. - **Auth**: envToken, jwt - **Parameters**: - `payload` ({ email: string; password: string }) [required] --- ##### `sdk.auth.updateAuthMethod(payload)` - **HTTP Method**: `POST` `/api/auth/auth-method/update` - **Summary**: Giriş yöntemini değiştirir (parola / Google / 2FA zorunluluğu). - **Auth**: envToken, jwt - **Parameters**: - `payload` (Record) [required] --- ##### `sdk.auth.activateAccount(token)` - **HTTP Method**: `PUT` `/api/auth/account-activation/{token}` - **Summary**: E-posta ile gelen aktivasyon bağlantısını tamamlar. - **Parameters**: - `token` (string) [required] --- ##### `sdk.auth.invitation(token)` - **HTTP Method**: `GET` `/api/auth/invitation/{token}` - **Summary**: Davet bağlantısındaki bilgileri okur (kimin, hangi siteye davet ettiği). - **Parameters**: - `token` (string) [required] --- ##### `sdk.auth.completeInvitation(payload)` - **HTTP Method**: `POST` `/api/auth/complete-invitation` - **Summary**: Daveti kabul edip hesabı tamamlar. - **Parameters**: - `payload` ({ token: string name: string surname?: string password: string password_confirmation: string }) [optional] --- ##### `sdk.auth.twoFactor.setup()` - **HTTP Method**: `POST` `/api/auth/2fa/setup` - **Summary**: TOTP kurulumu başlatır — QR için `otpauth://` URI'si döner. - **Auth**: envToken, jwt --- ##### `sdk.auth.twoFactor.confirm(code)` - **HTTP Method**: `POST` `/api/auth/2fa/confirm` - **Summary**: Kurulumu ilk kodla onaylar. - **Auth**: envToken, jwt - **Parameters**: - `code` (string) [required] --- ##### `sdk.auth.twoFactor.verify(payload)` - **HTTP Method**: `POST` `/api/auth/2fa/verify` - **Summary**: Girişteki 2FA adımını tamamlar. `login` yanıtındaki `two_factor_token` ile birlikte gönderilir; başarılıysa JWT istemciye yazılır. - **Parameters**: - `payload` ({ token: string; code: string }) [required] --- ##### `sdk.auth.twoFactor.disable(password)` - **HTTP Method**: `POST` `/api/auth/2fa/disable` - **Auth**: envToken, jwt - **Parameters**: - `password` (string) [required] --- ##### `sdk.auth.device.register(payload)` - **HTTP Method**: `POST` `/api/auth/device/register` - **Summary**: Push token'ı kaydeder (Expo / FCM / APNs). - **Parameters**: - `payload` ({ token: string; platform?: 'ios' | 'android' | 'web' }) [optional] --- ##### `sdk.auth.device.remove(token)` - **HTTP Method**: `POST` `/api/auth/device/remove` - **Parameters**: - `token` (string) [required] --- ### Module: sdk.billing Abonelik ve fatura profilleri (SaaS tarafı). #### Methods (6) ##### `sdk.billing.subscriptions()` - **HTTP Method**: `GET` `/api/user/subscriptions` - **Auth**: envToken, jwt --- ##### `sdk.billing.calculatePricing(payload)` - **HTTP Method**: `POST` `/api/user/calculate-pricing` - **Summary**: Satın almadan önce vergi dahil tutarı hesaplatır. - **Auth**: envToken, jwt - **Parameters**: - `payload` (Record) [required] --- ##### `sdk.billing.subscribe(payload)` - **HTTP Method**: `POST` `/api/user/subscribe` - **Auth**: envToken, jwt - **Parameters**: - `payload` (Record) [required] --- ##### `sdk.billing.profiles.list()` - **HTTP Method**: `GET` `/api/user/billing-profiles` - **Auth**: envToken, jwt --- ##### `sdk.billing.profiles.create(payload)` - **HTTP Method**: `POST` `/api/user/billing-profiles` - **Auth**: envToken, jwt - **Parameters**: - `payload` (Record) [required] --- ##### `sdk.billing.profiles.update(id, payload)` - **HTTP Method**: `PUT` `/api/user/billing-profiles/{id}` - **Auth**: envToken, jwt - **Parameters**: - `id` (number) [required] - `payload` (Record) [required] --- ### Module: sdk.cart Ziyaretçi sepeti — mağaza önyüzü. Oturum gerekmez; misafir sepeti `X-Guest-Id` ile taşınır (`client.setGuestId(...)`). `ecommerce` modülü kapalıysa uçlar 403 döner. #### Methods (6) ##### `sdk.cart.get()` - **HTTP Method**: `GET` `/api/shop/cart` - **Auth**: envToken - **Required License Module**: `ecommerce` --- ##### `sdk.cart.add(payload)` - **HTTP Method**: `POST` `/api/shop/cart` - **Summary**: Ürün ekler. Aynı ürün tekrar eklenirse adet artar. - **Auth**: envToken - **Required License Module**: `ecommerce` - **Parameters**: - `payload` ({ record_id?: number; product_id?: number; quantity?: number } & Record) [optional] --- ##### `sdk.cart.updateItem(itemId, quantity)` - **HTTP Method**: `PUT` `/api/shop/cart/items/{itemId}` - **Summary**: Satır adedini değiştirir. `0` göndermek satırı silmez — `removeItem` kullanın. - **Auth**: envToken - **Required License Module**: `ecommerce` - **Parameters**: - `itemId` (number) [required] - `quantity` (number) [required] --- ##### `sdk.cart.removeItem(itemId)` - **HTTP Method**: `DELETE` `/api/shop/cart/items/{itemId}` - **Auth**: envToken - **Required License Module**: `ecommerce` - **Parameters**: - `itemId` (number) [required] --- ##### `sdk.cart.clear()` - **HTTP Method**: `DELETE` `/api/shop/cart` - **Summary**: Sepeti tamamen boşaltır. - **Auth**: envToken - **Required License Module**: `ecommerce` --- ##### `sdk.cart.checkout(payload)` - **HTTP Method**: `POST` `/api/shop/checkout` - **Summary**: Sepeti siparişe çevirir. Ödeme yönlendirmesi yanıtta döner. - **Auth**: envToken - **Required License Module**: `ecommerce` - **Parameters**: - `payload` (Record) [required] --- ### Module: sdk.categories Kayıt kategorileri — ağaç yapısını `parent_id` kurar. #### Methods (4) ##### `sdk.categories.list()` - **HTTP Method**: `GET` `/api/schema/categories` - **Auth**: envToken, jwt, envMember --- ##### `sdk.categories.create(payload)` - **HTTP Method**: `POST` `/api/schema/categories` - **Auth**: envToken, jwt, envMember - **Parameters**: - `payload` ({ name: string; slug?: string; parent_id?: number | null }) [optional] --- ##### `sdk.categories.update(id, payload)` - **HTTP Method**: `PUT` `/api/schema/categories/{id}` - **Auth**: envToken, jwt, envMember - **Parameters**: - `id` (number) [required] - `payload` (Partial<{ name: string; slug: string; parent_id: number | null }>) [required] --- ##### `sdk.categories.delete(id)` - **HTTP Method**: `DELETE` `/api/schema/categories/{id}` - **Auth**: envToken, jwt, envMember - **Parameters**: - `id` (number) [required] --- ### Module: sdk.contentTypes İçerik tipleri — sitenin veri şeması. Bir tip tanımlarsınız (örn. `blog`, alanları: başlık, görsel, içerik), sonra `sdk.records` ile o tipte kayıt açarsınız. Şema değişiklikleri sürümlenir; eski kayıtlar hangi sürümle yazıldıysa onu taşır. #### Methods (9) ##### `sdk.contentTypes.list()` - **HTTP Method**: `GET` `/api/schema/types` - **Auth**: envToken, jwt, envMember --- ##### `sdk.contentTypes.get(code)` - **HTTP Method**: `GET` `/api/schema/types/{code}` - **Auth**: envToken, jwt, envMember - **Parameters**: - `code` (string) [required] --- ##### `sdk.contentTypes.create(payload)` - **HTTP Method**: `POST` `/api/schema/types` - **Auth**: envToken, jwt, envMember - **Parameters**: - `payload` (ContentTypePayload) [required] --- ##### `sdk.contentTypes.update(code, payload)` - **HTTP Method**: `PUT` `/api/schema/types/{code}` - **Summary**: Tipi günceller ve sürümü artırır. - **Auth**: envToken, jwt, envMember - **Parameters**: - `code` (string) [required] - `payload` (Partial) [required] --- ##### `sdk.contentTypes.delete(code)` - **HTTP Method**: `DELETE` `/api/schema/types/{code}` - **Auth**: envToken, jwt, envMember - **Parameters**: - `code` (string) [required] --- ##### `sdk.contentTypes.form(code)` - **HTTP Method**: `GET` `/api/schema/types/{code}/form` - **Summary**: Tipin form tanımı — panelin kayıt formunu bu çıktıdan çizer. Kendi arayüzünüzü kuruyorsanız alan sırası ve doğrulama kuralları burada. - **Auth**: envToken, jwt, envMember - **Parameters**: - `code` (string) [required] --- ##### `sdk.contentTypes.revisions(code)` - **HTTP Method**: `GET` `/api/schema/types/{code}/revisions` - **Summary**: Şema sürüm geçmişi. - **Auth**: envToken, jwt, envMember - **Parameters**: - `code` (string) [required] --- ##### `sdk.contentTypes.integration(code)` - **HTTP Method**: `GET` `/api/schema/types/{code}/integration` - **Summary**: Bu tipe özel, siteye göre kişiselleştirilmiş entegrasyon örnekleri (cURL / SDK / fetch kod parçaları). - **Auth**: envToken, jwt, envMember - **Parameters**: - `code` (string) [required] --- ##### `sdk.contentTypes.aiGenerate(code, payload)` - **HTTP Method**: `POST` `/api/schema/types/{typeCode}/ai/generate` - **Summary**: Şemayı yapay zekâ ile üretir — doğal dille anlatın, alanları çıkarsın. - **Auth**: envToken, jwt, envMember - **Parameters**: - `code` (string) [required] - `payload` (Record) [required] --- ### Module: sdk.delivery Genel teslimat — sitenizin ziyaretçilere gösterdiği her şey. Bu modülün tamamı **yalnızca site token'ı** ister; oturum gerekmez. Sunucuda önbelleklenir ve **yalnızca yayımlanmış** içeriği döndürür. Bir sitenin önyüzünü kuruyorsanız neredeyse tek ihtiyacınız budur. #### Methods (32) ##### `sdk.delivery.records(typeCode, params)` - **HTTP Method**: `GET` `/api/public/records/{typeCode}` - **Summary**: Yayımlanmış kayıtları listeler. Filtre/sıralama seçenekleri panel tarafıyla aynıdır; `status` gönderilse bile taslak dönmez. - **Auth**: envToken - **Parameters**: - `typeCode` (string) [required] - `params` (Omit) [optional] (default: {}) --- ##### `sdk.delivery.record(typeCode, slug, params)` - **HTTP Method**: `GET` `/api/public/records/{typeCode}/item/{slug}` - **Summary**: Slug ile tek kayıt. Aynı slug birden çok dilde varsa `locale` verin. - **Auth**: envToken - **Parameters**: - `typeCode` (string) [required] - `slug` (string) [required] - `params` ({ locale?: string }) [optional] (default: {}) --- ##### `sdk.delivery.alsoRead(typeCode, slug)` - **HTTP Method**: `GET` `/api/public/records/{typeCode}/item/{slug}/also-read` - **Summary**: "Bunlar da ilginizi çekebilir" — aynı kategoriden ilgili kayıtlar. - **Auth**: envToken - **Parameters**: - `typeCode` (string) [required] - `slug` (string) [required] --- ##### `sdk.delivery.ping(typeCode, slug, duration)` - **HTTP Method**: `POST` `/api/public/records/{typeCode}/item/{slug}/ping` - **Summary**: Görüntülenme kaydeder. `duration` saniye cinsinden okuma süresidir. Sayfa kapanırken göndermek için `navigator.sendBeacon` da kullanılabilir. - **Auth**: envToken - **Parameters**: - `typeCode` (string) [required] - `slug` (string) [required] - `duration` (unknown) [optional] (default: 0) --- ##### `sdk.delivery.schema(typeCode)` - **HTTP Method**: `GET` `/api/public/records/{typeCode}/schema` - **Summary**: Tipin genel şeması — alan adları ve tipleri. Kendi arayüzünüzü kurarken. - **Auth**: envToken - **Parameters**: - `typeCode` (string) [required] --- ##### `sdk.delivery.categories()` - **HTTP Method**: `GET` `/api/public/categories` - **Auth**: envToken --- ##### `sdk.delivery.category(slug)` - **HTTP Method**: `GET` `/api/public/categories/{slug}` - **Auth**: envToken - **Parameters**: - `slug` (string) [required] --- ##### `sdk.delivery.menu(code)` - **HTTP Method**: `GET` `/api/public/menus/{code}` - **Summary**: Menüyü çözülmüş ağaç olarak döner — bağlantı hedefleri hesaplanmıştır. - **Auth**: envToken - **Parameters**: - `code` (string) [required] --- ##### `sdk.delivery.init()` - **HTTP Method**: `GET` `/api/public/init` - **Summary**: Önyüzün açılışta ihtiyaç duyduğu her şey tek istekte: site bilgileri, tasarım, diller, menüler. İlk yüklemede bunu çağırmak birkaç isteği birleştirir. - **Auth**: envToken --- ##### `sdk.delivery.environment(token)` - **HTTP Method**: `GET` `/api/public/environment/{token}` - **Auth**: envToken - **Parameters**: - `token` (string) [required] --- ##### `sdk.delivery.navigation(slug)` - **HTTP Method**: `GET` `/api/public/navigation/{slug}` - **Auth**: envToken - **Parameters**: - `slug` (string) [required] --- ##### `sdk.delivery.banners()` - **HTTP Method**: `GET` `/api/public/banners` - **Auth**: envToken --- ##### `sdk.delivery.gallery(slug)` - **HTTP Method**: `GET` `/api/public/gallery/{slug}` - **Auth**: envToken - **Parameters**: - `slug` (string) [required] --- ##### `sdk.delivery.products(params)` - **HTTP Method**: `GET` `/api/public/products` - **Auth**: envToken - **Parameters**: - `params` (Record) [optional] (default: {}) --- ##### `sdk.delivery.product(slug)` - **HTTP Method**: `GET` `/api/public/product/{slug}` - **Auth**: envToken - **Parameters**: - `slug` (string) [required] --- ##### `sdk.delivery.productCategory(slug)` - **HTTP Method**: `GET` `/api/public/product-categories/{slug}` - **Auth**: envToken - **Parameters**: - `slug` (string) [required] --- ##### `sdk.delivery.productCollection(id)` - **HTTP Method**: `GET` `/api/public/product-collection/{id}` - **Auth**: envToken - **Parameters**: - `id` (number | string) [required] --- ##### `sdk.delivery.canvas.list(params)` - **HTTP Method**: `GET` `/api/public/canvas` - **Auth**: envToken - **Parameters**: - `params` (Record) [optional] (default: {}) --- ##### `sdk.delivery.canvas.show(slug)` - **HTTP Method**: `GET` `/api/public/canvas/{slug}` - **Auth**: envToken - **Parameters**: - `slug` (string) [required] --- ##### `sdk.delivery.canvas.collection(id)` - **HTTP Method**: `GET` `/api/public/collection/{id}` - **Auth**: envToken - **Parameters**: - `id` (number | string) [required] --- ##### `sdk.delivery.ticketForm(payload)` - **HTTP Method**: `POST` `/api/public/ticket-content` - **Summary**: Mevcut bir ticket'a mesaj ekler. - **Auth**: envToken - **Parameters**: - `payload` (TicketMessagePayload) [required] ```json // cURL / Payload Example await sdk.delivery.ticketForm({ ticket: 42, message: 'Ek bilgi: uçuşum ertelendi.' }) ``` --- ##### `sdk.delivery.submitTicket(payload)` - **HTTP Method**: `POST` `/api/public/ticket-submit` - **Summary**: Yeni iletişim/destek talebi açar. - **Auth**: envToken - **Parameters**: - `payload` (TicketPayload) [required] ```json // cURL / Payload Example await sdk.delivery.submitTicket({ type: 'iletisim', subject: 'Ulaşım', message: 'Havalimanından transfer var mı?', user: 'guest', name: 'Deniz Aydın', email: 'deniz@example.com', gdpr: true, advertising: false, drp: true, }) ``` --- ##### `sdk.delivery.notifications(token)` - **HTTP Method**: `GET` `/api/public/notification/{token}` - **Auth**: envToken - **Parameters**: - `token` (string) [required] --- ##### `sdk.delivery.documents.list(params)` - **HTTP Method**: `GET` `/api/documents` - **Parameters**: - `params` (Record) [optional] (default: {}) --- ##### `sdk.delivery.documents.show(slug)` - **HTTP Method**: `GET` `/api/documents/{slug}` - **Parameters**: - `slug` (string) [required] --- ##### `sdk.delivery.documents.collection(id)` - **HTTP Method**: `GET` `/api/documents/collection/{id}` - **Parameters**: - `id` (number | string) [required] --- ##### `sdk.delivery.documents.products(params)` - **HTTP Method**: `GET` `/api/documents/{slug}` - **Parameters**: - `params` (Record) [optional] (default: {}) --- ##### `sdk.delivery.reservations.availability(typeCode, slug, params)` - **HTTP Method**: `GET` `/api/public/reservations/{typeCode}/{slug}/availability` - **Summary**: Bu tarihler müsait mi, kaça? `reason` reddin makine okunur gerekçesidir (`full`, `outside_season`, `too_soon`…), `message` gösterilecek metindir. - **Auth**: envToken - **Parameters**: - `typeCode` (string) [required] - `slug` (string) [required] - `params` ({ starts_at: string; ends_at: string; quantity?: number }) [optional] --- ##### `sdk.delivery.reservations.calendar(typeCode, slug, params)` - **HTTP Method**: `GET` `/api/public/reservations/{typeCode}/{slug}/calendar` - **Summary**: Takvim: hangi günler müsait ve o günün fiyatı. Kalan adet dönmez. - **Auth**: envToken - **Parameters**: - `typeCode` (string) [required] - `slug` (string) [required] - `params` ({ from: string; to: string }) [required] --- ##### `sdk.delivery.reservations.book(typeCode, slug, payload)` - **HTTP Method**: `POST` `/api/public/reservations/{typeCode}/{slug}` - **Summary**: Rezervasyon talebi. Yalnız YAYIMLANMIŞ kayıtlar için çalışır. - **Auth**: envToken - **Parameters**: - `typeCode` (string) [required] - `slug` (string) [required] - `payload` ({ starts_at: string ends_at: string guest_name: string guest_email: string quantity?: number guests?: number guest_phone?: string note?: string }) [optional] --- ##### `sdk.delivery.manifest()` - **HTTP Method**: `GET` `/api/public/manifest` - **Summary**: Siteye özel, her zaman güncel entegrasyon rehberi (insan okur). - **Auth**: envToken --- ##### `sdk.delivery.llmsTxt()` - **HTTP Method**: `GET` `/api/public/llms.txt` - **Summary**: `llms.txt` — yapay zekâ araçlarının siteyi anlaması için düz metin. JSON zarfına sarılmaz, string döner. - **Auth**: envToken --- ### Module: sdk.locales Sitenin dilleri. Bir dil burada tanımlı değilse o dilde kayıt yazılamaz (422) — bu, panelde hiç görünmeyen "hayalet" çevirileri engeller. #### Methods (3) ##### `sdk.locales.list()` - **HTTP Method**: `GET` `/api/schema/locales` - **Auth**: envToken, jwt, envMember --- ##### `sdk.locales.add(code, payload)` - **HTTP Method**: `POST` `/api/schema/locales` - **Auth**: envToken, jwt, envMember - **Parameters**: - `code` (string) [required] - `payload` (Record) [optional] --- ##### `sdk.locales.remove(code)` - **HTTP Method**: `DELETE` `/api/schema/locales/{code}` - **Auth**: envToken, jwt, envMember - **Parameters**: - `code` (string) [required] --- ### Module: sdk.menus Menüler — site gezinmesi. Ağaç `items` içinde iç içe tutulur. Panelde yazarsınız, ziyaretçiye `sdk.delivery.menu(code)` ile **çözülmüş** hâlini verirsiniz (bağlantı hedefleri hesaplanmış, yayımlanmamış kayıtlar ayıklanmış olarak). #### Methods (8) ##### `sdk.menus.list()` - **HTTP Method**: `GET` `/api/menus` - **Auth**: envToken, jwt, envMember --- ##### `sdk.menus.get(code)` - **HTTP Method**: `GET` `/api/menus/{code}` - **Auth**: envToken, jwt, envMember - **Parameters**: - `code` (string) [required] --- ##### `sdk.menus.create(payload)` - **HTTP Method**: `POST` `/api/menus` - **Auth**: envToken, jwt, envMember - **Parameters**: - `payload` ({ code: string; label: string; items?: MenuItem[] }) [optional] --- ##### `sdk.menus.update(code, payload)` - **HTTP Method**: `PUT` `/api/menus/{code}` - **Summary**: Menüyü günceller ve yeni bir sürüm yazar. - **Auth**: envToken, jwt, envMember - **Parameters**: - `code` (string) [required] - `payload` (Partial<{ label: string; items: MenuItem[] }>) [required] --- ##### `sdk.menus.delete(code)` - **HTTP Method**: `DELETE` `/api/menus/{code}` - **Auth**: envToken, jwt, envMember - **Parameters**: - `code` (string) [required] --- ##### `sdk.menus.preview(code)` - **HTTP Method**: `GET` `/api/menus/{code}/preview` - **Summary**: Ağacı kaydetmeden çözer — kırık bağlantıları ve geçersiz derinliği yayına almadan görmek için. - **Auth**: envToken, jwt, envMember - **Parameters**: - `code` (string) [required] --- ##### `sdk.menus.revisions(code)` - **HTTP Method**: `GET` `/api/menus/{code}/revisions` - **Auth**: envToken, jwt, envMember - **Parameters**: - `code` (string) [required] --- ##### `sdk.menus.restore(code, version)` - **HTTP Method**: `POST` `/api/menus/{code}/restore/{version}` - **Auth**: envToken, jwt, envMember - **Parameters**: - `code` (string) [required] - `version` (number) [required] --- ### Module: sdk.myOrders Müşterinin kendi siparişleri — son kullanıcı hesabı için. #### Methods (4) ##### `sdk.myOrders.list(params)` - **HTTP Method**: `GET` `/api/my-orders` - **Auth**: envToken, jwt - **Parameters**: - `params` (Record) [optional] (default: {}) --- ##### `sdk.myOrders.get(id)` - **HTTP Method**: `GET` `/api/my-orders/{id}` - **Auth**: envToken, jwt - **Parameters**: - `id` (number) [required] --- ##### `sdk.myOrders.cancel(id, payload)` - **HTTP Method**: `POST` `/api/my-orders/{id}/cancel` - **Auth**: envToken, jwt - **Parameters**: - `id` (number) [required] - `payload` (Record) [optional] (default: {}) --- ##### `sdk.myOrders.message(id, message)` - **HTTP Method**: `POST` `/api/my-orders/{id}/message` - **Summary**: Satıcıya sipariş üzerinden mesaj yazar. - **Auth**: envToken, jwt - **Parameters**: - `id` (number) [required] - `message` (string) [required] --- ### Module: sdk.orders Sipariş yönetimi (satıcı tarafı). `orders` modülü açık olmalıdır — kapalıysa 403. Oturum ve site üyeliği ister. #### Methods (10) ##### `sdk.orders.list(params)` - **HTTP Method**: `GET` `/api/commerce/orders` - **Auth**: envToken, jwt, envMember - **Required License Module**: `orders` - **Parameters**: - `params` (Record) [optional] (default: {}) --- ##### `sdk.orders.get(id)` - **HTTP Method**: `GET` `/api/commerce/orders/{id}` - **Auth**: envToken, jwt, envMember - **Required License Module**: `orders` - **Parameters**: - `id` (number) [required] --- ##### `sdk.orders.update(id, payload)` - **HTTP Method**: `PUT` `/api/commerce/orders/{id}` - **Auth**: envToken, jwt, envMember - **Required License Module**: `orders` - **Parameters**: - `id` (number) [required] - `payload` (Record) [required] --- ##### `sdk.orders.updateStatus(id, status, payload)` - **HTTP Method**: `PUT` `/api/commerce/orders/{id}/status` - **Summary**: Durum geçişi. Geçersiz geçişler 422 döner. - **Auth**: envToken, jwt, envMember - **Required License Module**: `orders` - **Parameters**: - `id` (number) [required] - `status` (string) [required] - `payload` (Record) [optional] (default: {}) --- ##### `sdk.orders.cancel(id, payload)` - **HTTP Method**: `POST` `/api/commerce/orders/{id}/cancel` - **Auth**: envToken, jwt, envMember - **Required License Module**: `orders` - **Parameters**: - `id` (number) [required] - `payload` (Record) [optional] (default: {}) --- ##### `sdk.orders.report(params)` - **HTTP Method**: `GET` `/api/commerce/orders/{id}` - **Summary**: Satış raporu — ciro, adet, dönem kırılımı. - **Auth**: envToken, jwt, envMember - **Required License Module**: `orders` - **Parameters**: - `params` (Record) [optional] (default: {}) --- ##### `sdk.orders.invoice.create(orderId, payload)` - **HTTP Method**: `POST` `/api/commerce/orders/{id}/invoice` - **Summary**: Faturayı üretir. - **Auth**: envToken, jwt, envMember - **Required License Module**: `orders` - **Parameters**: - `orderId` (number) [required] - `payload` (Record) [optional] (default: {}) --- ##### `sdk.orders.invoice.get(orderId)` - **HTTP Method**: `GET` `/api/commerce/orders/{id}/invoice` - **Auth**: envToken, jwt, envMember - **Required License Module**: `orders` - **Parameters**: - `orderId` (number) [required] --- ##### `sdk.orders.mailSettings.get()` - **HTTP Method**: `GET` `/api/commerce/orders/{id}` - **Auth**: envToken, jwt, envMember - **Required License Module**: `orders` --- ##### `sdk.orders.mailSettings.update(payload)` - **HTTP Method**: `PUT` `/api/commerce/orders/{id}` - **Auth**: envToken, jwt, envMember - **Required License Module**: `orders` - **Parameters**: - `payload` (Record) [required] --- ### Module: sdk.partner Partner paneli — bayi/ajans tarafı. Partner kendi müşterilerini, paketlerini ve tahsilatını yönetir. Bu uçlar partner rolündeki oturum ister. #### Methods (25) ##### `sdk.partner.dashboard()` - **HTTP Method**: `GET` `/api/platform/partner/dashboard` - **Auth**: jwt --- ##### `sdk.partner.settings()` - **HTTP Method**: `GET` `/api/platform/partner/settings` - **Auth**: jwt --- ##### `sdk.partner.updateSettings(payload)` - **HTTP Method**: `PUT` `/api/platform/partner/settings` - **Auth**: jwt - **Parameters**: - `payload` (Record) [required] --- ##### `sdk.partner.modules()` - **HTTP Method**: `GET` `/api/platform/partner/modules` - **Auth**: jwt --- ##### `sdk.partner.customers.list(params)` - **HTTP Method**: `GET` `/api/platform/partner/customers` - **Auth**: jwt - **Parameters**: - `params` (Record) [optional] (default: {}) --- ##### `sdk.partner.customers.get(id)` - **HTTP Method**: `GET` `/api/platform/partner/customers/{id}` - **Auth**: jwt - **Parameters**: - `id` (number) [required] --- ##### `sdk.partner.customers.setPrices(id, payload)` - **HTTP Method**: `POST` `/api/platform/partner/customers/{id}/prices` - **Summary**: Müşteriye özel fiyat tanımlar. - **Auth**: jwt - **Parameters**: - `id` (number) [required] - `payload` (Record) [required] --- ##### `sdk.partner.packages.list()` - **HTTP Method**: `GET` `/api/platform/partner/packages` - **Auth**: jwt --- ##### `sdk.partner.packages.create(payload)` - **HTTP Method**: `POST` `/api/platform/partner/packages` - **Auth**: jwt - **Parameters**: - `payload` (Record) [required] --- ##### `sdk.partner.packages.update(id, payload)` - **HTTP Method**: `PUT` `/api/platform/partner/packages/{id}` - **Auth**: jwt - **Parameters**: - `id` (number) [required] - `payload` (Record) [required] --- ##### `sdk.partner.packages.delete(id)` - **HTTP Method**: `DELETE` `/api/platform/partner/packages/{id}` - **Auth**: jwt - **Parameters**: - `id` (number) [required] --- ##### `sdk.partner.checkoutLinks.list()` - **HTTP Method**: `GET` `/api/platform/partner/checkout-links` - **Auth**: jwt --- ##### `sdk.partner.checkoutLinks.create(payload)` - **HTTP Method**: `POST` `/api/platform/partner/checkout-links` - **Auth**: jwt - **Parameters**: - `payload` (Record) [required] --- ##### `sdk.partner.checkoutLinks.send(id)` - **HTTP Method**: `POST` `/api/platform/partner/checkout-links/{id}/send` - **Summary**: Bağlantıyı müşteriye e-postayla yollar. - **Auth**: jwt - **Parameters**: - `id` (number) [required] --- ##### `sdk.partner.checkoutLinks.cancel(id)` - **HTTP Method**: `POST` `/api/platform/partner/checkout-links/{id}/cancel` - **Auth**: jwt - **Parameters**: - `id` (number) [required] --- ##### `sdk.partner.gateways.list()` - **HTTP Method**: `GET` `/api/platform/partner/gateways` - **Auth**: jwt --- ##### `sdk.partner.gateways.create(payload)` - **HTTP Method**: `POST` `/api/platform/partner/gateways` - **Auth**: jwt - **Parameters**: - `payload` (Record) [required] --- ##### `sdk.partner.gateways.update(id, payload)` - **HTTP Method**: `PUT` `/api/platform/partner/gateways/{id}` - **Auth**: jwt - **Parameters**: - `id` (number) [required] - `payload` (Record) [required] --- ##### `sdk.partner.gateways.delete(id)` - **HTTP Method**: `DELETE` `/api/platform/partner/gateways/{id}` - **Auth**: jwt - **Parameters**: - `id` (number) [required] --- ##### `sdk.partner.gateways.verify(id)` - **HTTP Method**: `POST` `/api/platform/partner/gateways/{id}/verify` - **Summary**: Anahtarları test eder — kaydetmeden önce doğrulama. - **Auth**: jwt - **Parameters**: - `id` (number) [required] --- ##### `sdk.partner.bankTransfers.list()` - **HTTP Method**: `GET` `/api/platform/partner/bank-transfers` - **Auth**: jwt --- ##### `sdk.partner.bankTransfers.review(id, payload)` - **HTTP Method**: `POST` `/api/platform/partner/bank-transfers/{id}/review` - **Summary**: Havale bildirimini onaylar ya da reddeder. - **Auth**: jwt - **Parameters**: - `id` (number) [required] - `payload` (Record) [required] --- ##### `sdk.partner.transfers.list()` - **HTTP Method**: `GET` `/api/platform/partner/transfers` - **Auth**: jwt --- ##### `sdk.partner.transfers.create(payload)` - **HTTP Method**: `POST` `/api/platform/partner/transfers` - **Auth**: jwt - **Parameters**: - `payload` (Record) [required] --- ##### `sdk.partner.transfers.respond(id, payload)` - **HTTP Method**: `POST` `/api/platform/partner/transfers/{id}/respond` - **Auth**: jwt - **Parameters**: - `id` (number) [required] - `payload` (Record) [required] --- ### Module: sdk.payments Ödemeler. Stripe/Tami webhook uçları sunucu-sunucu olduğu için SDK'da yoktur. #### Methods (4) ##### `sdk.payments.list(params)` - **HTTP Method**: `GET` `/api/payments` - **Auth**: envToken, jwt - **Parameters**: - `params` (Record) [optional] (default: {}) --- ##### `sdk.payments.get(id)` - **HTTP Method**: `GET` `/api/payments/{id}` - **Auth**: envToken, jwt - **Parameters**: - `id` (number) [required] --- ##### `sdk.payments.create(payload)` - **HTTP Method**: `POST` `/api/payments` - **Auth**: envToken, jwt - **Parameters**: - `payload` (Record) [required] --- ##### `sdk.payments.createStripeIntent(payload)` - **HTTP Method**: `POST` `/api/payments/stripe/create-intent` - **Summary**: Stripe PaymentIntent açar — `client_secret` ile Stripe.js'e devredin. - **Auth**: envToken, jwt - **Parameters**: - `payload` (Record) [required] --- ### Module: sdk.platform Müşterinin kendi sitesini yönettiği self-servis uçlar (`platform/my`). Site üyeliği zorunludur — başka bir sitenin verisine erişilemez. #### Methods (25) ##### `sdk.platform.overview()` - **HTTP Method**: `GET` `/api/platform/my/overview` - **Summary**: Plan, kota kullanımı ve site durumu tek bakışta. - **Auth**: envToken, jwt, envMember --- ##### `sdk.platform.analytics(params)` - **HTTP Method**: `GET` `/api/platform/my/analytics` - **Summary**: Trafik ve istek özeti (telemetriden). - **Auth**: envToken, jwt, envMember - **Parameters**: - `params` (Record) [optional] (default: {}) --- ##### `sdk.platform.payments(params)` - **HTTP Method**: `GET` `/api/platform/my/payments` - **Auth**: envToken, jwt, envMember - **Parameters**: - `params` (Record) [optional] (default: {}) --- ##### `sdk.platform.receipts.list()` - **HTTP Method**: `GET` `/api/platform/my/receipts` - **Auth**: envToken, jwt, envMember --- ##### `sdk.platform.subscription.renew(period)` - **HTTP Method**: `POST` `/api/platform/my/subscription/renew` - **Summary**: Uzatma ödemesi başlatır; yanıttaki `pay_url` ödeme ekranına götürür. - **Auth**: envToken, jwt, envMember - **Parameters**: - `period` ('monthly' | 'yearly') [required] --- ##### `sdk.platform.subscription.plans(params)` - **HTTP Method**: `GET` `/api/platform/my/subscription/plans` - **Summary**: Geçilebilecek planlar: her biri için şimdi ödenecek fark ve dönem fiyatı. - **Auth**: envToken, jwt, envMember - **Parameters**: - `params` (Record) [optional] (default: {}) --- ##### `sdk.platform.subscription.changePlan(packageId, period)` - **HTTP Method**: `POST` `/api/platform/my/subscription/change-plan` - **Auth**: envToken, jwt, envMember - **Parameters**: - `packageId` (number) [required] - `period` ('monthly' | 'yearly') [required] --- ##### `sdk.platform.subscription.cancelPendingChange()` - **HTTP Method**: `DELETE` `/api/platform/my/subscription/pending-change` - **Summary**: Dönem sonuna randevulanmış düşürmeyi iptal eder. - **Auth**: envToken, jwt, envMember --- ##### `sdk.platform.modules.list()` - **HTTP Method**: `GET` `/api/platform/my/modules` - **Auth**: envToken, jwt, envMember --- ##### `sdk.platform.modules.purchase(code, payload)` - **HTTP Method**: `POST` `/api/platform/my/modules/{code}/purchase` - **Summary**: Modülü satın alır — ödeme gerekiyorsa yanıtta yönlendirme döner. - **Auth**: envToken, jwt, envMember - **Parameters**: - `code` (string) [required] - `payload` (Record) [optional] (default: {}) --- ##### `sdk.platform.domains.list()` - **HTTP Method**: `GET` `/api/platform/my/domains` - **Auth**: envToken, jwt, envMember --- ##### `sdk.platform.domains.add(domain)` - **HTTP Method**: `POST` `/api/platform/my/domains` - **Auth**: envToken, jwt, envMember - **Parameters**: - `domain` (string) [required] --- ##### `sdk.platform.domains.verify(id)` - **HTTP Method**: `POST` `/api/platform/my/domains/{id}/verify` - **Auth**: envToken, jwt, envMember - **Parameters**: - `id` (number) [required] --- ##### `sdk.platform.domains.remove(id)` - **HTTP Method**: `DELETE` `/api/platform/my/domains/{id}` - **Auth**: envToken, jwt, envMember - **Parameters**: - `id` (number) [required] --- ##### `sdk.platform.team.list()` - **HTTP Method**: `GET` `/api/platform/my/team` - **Auth**: envToken, jwt, envMember --- ##### `sdk.platform.team.invite(payload)` - **HTTP Method**: `POST` `/api/platform/my/team/invite` - **Auth**: envToken, jwt, envMember - **Parameters**: - `payload` ({ email: string; role?: string }) [optional] --- ##### `sdk.platform.team.cancelInvitation(id)` - **HTTP Method**: `DELETE` `/api/platform/my/team/invitations/{id}` - **Auth**: envToken, jwt, envMember - **Parameters**: - `id` (number) [required] --- ##### `sdk.platform.team.removeMember(id)` - **HTTP Method**: `DELETE` `/api/platform/my/team/members/{id}` - **Auth**: envToken, jwt, envMember - **Parameters**: - `id` (number) [required] --- ##### `sdk.platform.plans()` - **HTTP Method**: `GET` `/api/platform/plans` - **Summary**: Herkese açık paket listesi — fiyatlandırma sayfası için. Oturum gerekmez. - **Auth**: envToken --- ##### `sdk.platform.plan(code, params)` - **HTTP Method**: `GET` `/api/platform/plans/{code}` - **Summary**: Tek planın dökümü: modüller, limitler, iki dönem fiyatı ve satılabildiği para birimleri. Ödeme ekranı satın alınacak planı BURADAN okur — istemcide taşınan fiyata ya da sepette kalmış eski kayda güvenilmez. - **Auth**: envToken - **Parameters**: - `code` (string) [required] - `params` (Record) [optional] (default: {}) --- ##### `sdk.platform.pay.get(token)` - **HTTP Method**: `GET` `/api/platform/pay/{token}` - **Parameters**: - `token` (string) [required] --- ##### `sdk.platform.pay.card(token, payload)` - **HTTP Method**: `POST` `/api/platform/pay/{token}/card` - **Parameters**: - `token` (string) [required] - `payload` (Record) [required] --- ##### `sdk.platform.pay.bankTransfer(token, payload)` - **HTTP Method**: `POST` `/api/platform/pay/{token}/bank-transfer` - **Parameters**: - `token` (string) [required] - `payload` (Record) [required] --- ##### `sdk.platform.site.get(slug)` - **HTTP Method**: `GET` `/api/platform/site/{slug}` - **Parameters**: - `slug` (string) [required] --- ##### `sdk.platform.site.buyPackage(slug, packageId, payload)` - **HTTP Method**: `POST` `/api/platform/site/{slug}/packages/{packageId}/buy` - **Parameters**: - `slug` (string) [required] - `packageId` (number) [required] - `payload` (Record) [optional] (default: {}) --- ### Module: sdk.records #### Methods (19) ##### `sdk.records.list(typeCode, params)` - **HTTP Method**: `GET` `/api/schema/records/{typeCode}` - **Summary**: Kayıtları listeler. Sayfalama bilgisi yanıtın `meta` alanındadır. - **Auth**: envToken, jwt, envMember - **Parameters**: - `typeCode` (string) [required] - `params` (RecordListParams) [optional] (default: {}) --- ##### `sdk.records.get(typeCode, id)` - **HTTP Method**: `GET` `/api/schema/records/{typeCode}/{id}` - **Summary**: Tek kayıt — ilişkili kategoriler ve galeri alanları dahil döner. - **Auth**: envToken, jwt, envMember - **Parameters**: - `typeCode` (string) [required] - `id` (number) [required] --- ##### `sdk.records.create(typeCode, payload)` - **HTTP Method**: `POST` `/api/schema/records/{typeCode}` - **Summary**: Yeni kayıt. - **Auth**: envToken, jwt, envMember - **Parameters**: - `typeCode` (string) [required] - `payload` (RecordPayload) [required] --- ##### `sdk.records.update(typeCode, id, payload)` - **HTTP Method**: `PUT` `/api/schema/records/{typeCode}/{id}` - **Summary**: Kısmi güncelleme — yalnızca gönderdiğiniz alanlar değişir. - **Auth**: envToken, jwt, envMember - **Parameters**: - `typeCode` (string) [required] - `id` (number) [required] - `payload` (RecordPayload) [required] --- ##### `sdk.records.delete(typeCode, id, options)` - **HTTP Method**: `DELETE` `/api/schema/records/{typeCode}/{id}` - **Summary**: Kaydı ÇÖP KUTUSUNA taşır (2026-08-13'ten beri iki aşamalı). - **Auth**: envToken, jwt, envMember - **Parameters**: - `typeCode` (string) [required] - `id` (number) [required] - `options` ({ force?: boolean }) [optional] (default: {}) --- ##### `sdk.records.trash(typeCode, params)` - **HTTP Method**: `GET` `/api/schema/records/{typeCode}/{id}` - **Summary**: Çöp kutusu: silinmiş ama henüz kalıcı silinmemiş kayıtlar. - **Auth**: envToken, jwt, envMember - **Parameters**: - `typeCode` (string) [required] - `params` ({ page?: number; per_page?: number }) [optional] (default: {}) --- ##### `sdk.records.restoreFromTrash(typeCode, id)` - **HTTP Method**: `POST` `/api/schema/records/{typeCode}/{id}/restore` - **Summary**: Kaydı çöp kutusundan geri getirir. - **Auth**: envToken, jwt, envMember - **Parameters**: - `typeCode` (string) [required] - `id` (number) [required] --- ##### `sdk.records.analytics(typeCode, id)` - **HTTP Method**: `GET` `/api/schema/records/{typeCode}/{id}/analytics` - **Summary**: Görüntülenme ve etkileşim özeti. - **Auth**: envToken, jwt, envMember - **Parameters**: - `typeCode` (string) [required] - `id` (number) [required] --- ##### `sdk.records.revisions.list(typeCode, id)` - **HTTP Method**: `GET` `/api/schema/records/{typeCode}/{id}/revisions` - **Auth**: envToken, jwt, envMember - **Parameters**: - `typeCode` (string) [required] - `id` (number) [required] --- ##### `sdk.records.revisions.get(typeCode, id, version)` - **HTTP Method**: `GET` `/api/schema/records/{typeCode}/{id}/revisions/{version}` - **Auth**: envToken, jwt, envMember - **Parameters**: - `typeCode` (string) [required] - `id` (number) [required] - `version` (number) [required] --- ##### `sdk.records.revisions.restore(typeCode, id, version)` - **HTTP Method**: `POST` `/api/schema/records/{typeCode}/{id}/revisions/{version}/restore` - **Summary**: Kaydı o sürüme döndürür. Mevcut hâl önce anlık görüntüye alınır. - **Auth**: envToken, jwt, envMember - **Parameters**: - `typeCode` (string) [required] - `id` (number) [required] - `version` (number) [required] --- ##### `sdk.records.gallery.list(typeCode, id, field)` - **HTTP Method**: `GET` `/api/schema/records/{typeCode}/{id}/gallery/{field}` - **Auth**: envToken, jwt, envMember - **Parameters**: - `typeCode` (string) [required] - `id` (number) [required] - `field` (string) [required] --- ##### `sdk.records.gallery.add(typeCode, id, field, payload)` - **HTTP Method**: `POST` `/api/schema/records/{typeCode}/{id}/gallery/{field}` - **Auth**: envToken, jwt, envMember - **Parameters**: - `typeCode` (string) [required] - `id` (number) [required] - `field` (string) [required] - `payload` (Record) [required] --- ##### `sdk.records.gallery.reorder(typeCode, id, field, order)` - **HTTP Method**: `PUT` `/api/schema/records/{typeCode}/{id}/gallery/{field}/{imageId}` - **Summary**: Görsel sırasını topluca günceller — verilen id dizisi yeni sıradır. - **Auth**: envToken, jwt, envMember - **Parameters**: - `typeCode` (string) [required] - `id` (number) [required] - `field` (string) [required] - `order` (number[]) [required] --- ##### `sdk.records.gallery.update(typeCode, id, field, imageId, payload)` - **HTTP Method**: `PUT` `/api/schema/records/{typeCode}/{id}/gallery/{field}/{imageId}` - **Summary**: Tek görselin başlık/alt metin gibi bilgilerini günceller. - **Auth**: envToken, jwt, envMember - **Parameters**: - `typeCode` (string) [required] - `id` (number) [required] - `field` (string) [required] - `imageId` (number) [required] - `payload` (Record) [required] --- ##### `sdk.records.gallery.remove(typeCode, id, field, imageId)` - **HTTP Method**: `DELETE` `/api/schema/records/{typeCode}/{id}/gallery/{field}/{imageId}` - **Auth**: envToken, jwt, envMember - **Parameters**: - `typeCode` (string) [required] - `id` (number) [required] - `field` (string) [required] - `imageId` (number) [required] --- ##### `sdk.records.ai.improve(typeCode, id, payload)` - **HTTP Method**: `POST` `/api/schema/records/{typeCode}/{id}/ai/improve` - **Summary**: Metni akıcılık/ton açısından iyileştirir. - **Auth**: envToken, jwt, envMember - **Parameters**: - `typeCode` (string) [required] - `id` (number) [required] - `payload` (Record) [optional] --- ##### `sdk.records.ai.seo(typeCode, id, payload)` - **HTTP Method**: `POST` `/api/schema/records/{typeCode}/{id}/ai/seo` - **Summary**: Meta başlık/açıklama ve anahtar kelime önerir. - **Auth**: envToken, jwt, envMember - **Parameters**: - `typeCode` (string) [required] - `id` (number) [required] - `payload` (Record) [optional] --- ##### `sdk.records.ai.translate(typeCode, id, payload)` - **HTTP Method**: `POST` `/api/schema/records/{typeCode}/{id}/ai/translate` - **Summary**: Kaydı hedef dile çevirip kardeş kayıt olarak bağlar. - **Auth**: envToken, jwt, envMember - **Parameters**: - `typeCode` (string) [required] - `id` (number) [required] - `payload` ({ locale: string } & Record) [required] --- ### Module: sdk.reservations Rezervasyon yönetimi (panel tarafı). **Oturum ister** ve `reservations` modülü açık olmalıdır. Ziyaretçi tarafı (müsaitlik sorgusu ve talep gönderme) oturumsuzdur ve `sdk.delivery.reservations` altındadır. Rezerve edilen şey bir KAYITTIR: otel odası, doktor, masa, tur — hepsi kendi içerik tipinde birer kayıt. Bir kaydı rezervasyona AÇAN şey `settings.save()` çağrısıdır; ayarı olmayan kayıtta müsaitlik `not_reservable` döner. #### Methods (15) ##### `sdk.reservations.list(params)` - **HTTP Method**: `GET` `/api/reservations` - **Summary**: Rezervasyon gelen kutusu. `meta.counts` durum başına sayaç taşır — sekmeleri bununla çizin. - **Auth**: envToken, jwt, envMember - **Required License Module**: `reservations` - **Parameters**: - `params` (ReservationListParams) [optional] (default: {}) --- ##### `sdk.reservations.get(id)` - **HTTP Method**: `GET` `/api/reservations/{id}` - **Auth**: envToken, jwt, envMember - **Required License Module**: `reservations` - **Parameters**: - `id` (number) [required] --- ##### `sdk.reservations.create(payload)` - **HTTP Method**: `POST` `/api/reservations` - **Summary**: Elle rezervasyon (telefonla gelen talep). - **Auth**: envToken, jwt, envMember - **Required License Module**: `reservations` - **Parameters**: - `payload` (ReservationPayload) [required] --- ##### `sdk.reservations.update(id, payload)` - **HTTP Method**: `PUT` `/api/reservations/{id}` - **Summary**: Durum değişikliği ve tarih taşıma. - **Auth**: envToken, jwt, envMember - **Required License Module**: `reservations` - **Parameters**: - `id` (number) [required] - `payload` (Partial & { status?: ReservationStatus }) [optional] --- ##### `sdk.reservations.delete(id)` - **HTTP Method**: `DELETE` `/api/reservations/{id}` - **Summary**: Rezervasyonu çöp kutusuna taşır (kayıtlarla aynı soft-delete kuralı). - **Auth**: envToken, jwt, envMember - **Required License Module**: `reservations` - **Parameters**: - `id` (number) [required] --- ##### `sdk.reservations.calendar(recordId, from, to)` - **HTTP Method**: `GET` `/api/reservations/{id}` - **Summary**: Doluluk takvimi — gün gün kalan kapasite ve o günün fiyatı. - **Auth**: envToken, jwt, envMember - **Required License Module**: `reservations` - **Parameters**: - `recordId` (number) [required] - `from` (string) [required] - `to` (string) [required] --- ##### `sdk.reservations.check(params)` - **HTTP Method**: `GET` `/api/reservations/{id}` - **Summary**: "Bu tarihlerde açık mı, kaça?" — yazmadan önce kontrol. - **Auth**: envToken, jwt, envMember - **Required License Module**: `reservations` - **Parameters**: - `params` ({ record_id: number starts_at: string ends_at: string quantity?: number }) [optional] --- ##### `sdk.reservations.settings.list()` - **HTTP Method**: `GET` `/api/reservations/{id}` - **Summary**: Sitedeki rezerve edilebilir kayıtlar. - **Auth**: envToken, jwt, envMember - **Required License Module**: `reservations` --- ##### `sdk.reservations.settings.get(recordId)` - **HTTP Method**: `GET` `/api/reservations/settings/{recordId}` - **Summary**: Kaydın ayarları + kapalı tarihleri + sezon fiyatları tek yanıtta. - **Auth**: envToken, jwt, envMember - **Required License Module**: `reservations` - **Parameters**: - `recordId` (number) [required] --- ##### `sdk.reservations.settings.save(recordId, payload)` - **HTTP Method**: `PUT` `/api/reservations/settings/{recordId}` - **Summary**: Kur ya da güncelle — kaydı rezervasyona AÇAN çağrı budur. - **Auth**: envToken, jwt, envMember - **Required License Module**: `reservations` - **Parameters**: - `recordId` (number) [required] - `payload` (ReservationSettingsPayload) [required] --- ##### `sdk.reservations.settings.close(recordId)` - **HTTP Method**: `DELETE` `/api/reservations/settings/{recordId}` - **Summary**: Rezervasyona kapatır: yeni talep alınmaz, geçmiş kayıtlar durur. - **Auth**: envToken, jwt, envMember - **Required License Module**: `reservations` - **Parameters**: - `recordId` (number) [required] --- ##### `sdk.reservations.blocks.add(recordId, payload)` - **HTTP Method**: `POST` `/api/reservations/settings/{recordId}/blocks` - **Auth**: envToken, jwt, envMember - **Required License Module**: `reservations` - **Parameters**: - `recordId` (number) [required] - `payload` ({ starts_at: string; ends_at: string; quantity?: number; reason?: string }) [optional] --- ##### `sdk.reservations.blocks.remove(recordId, blockId)` - **HTTP Method**: `DELETE` `/api/reservations/settings/{recordId}/blocks/{blockId}` - **Auth**: envToken, jwt, envMember - **Required License Module**: `reservations` - **Parameters**: - `recordId` (number) [required] - `blockId` (number) [required] --- ##### `sdk.reservations.rates.add(recordId, payload)` - **HTTP Method**: `POST` `/api/reservations/settings/{recordId}/rates` - **Auth**: envToken, jwt, envMember - **Required License Module**: `reservations` - **Parameters**: - `recordId` (number) [required] - `payload` ({ starts_on: string ends_on: string price: number name?: string min_units?: number priority?: number }) [optional] --- ##### `sdk.reservations.rates.remove(recordId, rateId)` - **HTTP Method**: `DELETE` `/api/reservations/settings/{recordId}/rates/{rateId}` - **Auth**: envToken, jwt, envMember - **Required License Module**: `reservations` - **Parameters**: - `recordId` (number) [required] - `rateId` (number) [required] --- ### Module: sdk.schema Şema sistemine dair yardımcı uçlar. #### Methods (4) ##### `sdk.schema.fieldTypes()` - **HTTP Method**: `GET` `/api/schema/field-types` - **Summary**: Desteklenen alan tipleri ve her birinin ayar şeması. - **Auth**: envToken, jwt, envMember --- ##### `sdk.schema.presets()` - **HTTP Method**: `GET` `/api/schema/presets` - **Summary**: Hazır şema şablonları (blog, ürün, portföy…) — tek tıkla tip kurmak için. - **Auth**: envToken, jwt, envMember --- ##### `sdk.schema.modules()` - **HTTP Method**: `GET` `/api/schema/modules` - **Summary**: Sitede hangi modüller açık — ticaret, sipariş, AI vb. - **Auth**: envToken, jwt, envMember --- ##### `sdk.schema.sitemap()` - **HTTP Method**: `GET` `/api/schema/sitemap` - **Summary**: Site haritası özeti: yayımlanmış içerik sayıları ve sitemap.xml adresi. Haritanın kendisi `sdk.delivery.sitemapUrl()` ile alınır. - **Auth**: envToken, jwt, envMember --- ### Module: sdk.shopping Eski sepet/checkout uçları (`/api/shopping/*`). Yeni entegrasyonlarda `sdk.cart` kullanın. Bunlar hâlen canlıdır ve eski mağazalar için ayaktadır; kupon ve kargo seçenekleri şu an yalnızca burada. #### Methods (9) ##### `sdk.shopping.cart()` - **HTTP Method**: `GET` `/api/shopping/cart` - **Auth**: envToken --- ##### `sdk.shopping.addToCart(payload)` - **HTTP Method**: `POST` `/api/shopping/cart` - **Auth**: envToken - **Parameters**: - `payload` (Record) [required] --- ##### `sdk.shopping.updateCartItem(itemId, payload)` - **HTTP Method**: `PUT` `/api/shopping/cart/{itemId}` - **Auth**: envToken - **Parameters**: - `itemId` (number) [required] - `payload` (Record) [required] --- ##### `sdk.shopping.removeCartItem(itemId)` - **HTTP Method**: `DELETE` `/api/shopping/cart/{itemId}` - **Auth**: envToken - **Parameters**: - `itemId` (number) [required] --- ##### `sdk.shopping.clearCart()` - **HTTP Method**: `DELETE` `/api/shopping/cart/{itemId}` - **Auth**: envToken --- ##### `sdk.shopping.checkout(payload)` - **HTTP Method**: `POST` `/api/shopping/checkout` - **Auth**: envToken - **Parameters**: - `payload` (Record) [required] --- ##### `sdk.shopping.checkoutOptions()` - **HTTP Method**: `GET` `/api/shopping/checkout/options` - **Summary**: Ödeme ve teslimat seçenekleri — checkout formunu doldurmadan önce. - **Auth**: envToken --- ##### `sdk.shopping.applyCoupon(code)` - **HTTP Method**: `POST` `/api/shopping/checkout/coupon` - **Summary**: Kupon uygular ve yeni toplamı döner. - **Auth**: envToken - **Parameters**: - `code` (string) [required] --- ##### `sdk.shopping.carriers()` - **HTTP Method**: `GET` `/api/shopping/carriers` - **Auth**: envToken --- ### Module: sdk.storage Dosya yükleme. `File`/`Blob` verirseniz SDK `multipart/form-data` kurar. Node tarafında `Buffer` yerine `Blob` ya da bir stream sarmalayıcı kullanın. #### Methods (2) ##### `sdk.storage.uploadImage(file, extra)` - **HTTP Method**: `POST` `/api/storage-image` - **Summary**: Tek görsel yükler. - **Auth**: envToken, jwt, envMember - **Parameters**: - `file` (File | Blob) [required] - `extra` (Record) [optional] (default: {}) --- ##### `sdk.storage.uploadImages(files, extra)` - **HTTP Method**: `POST` `/api/storage-images` - **Summary**: Birden çok görseli tek istekte yükler. - **Auth**: envToken, jwt, envMember - **Parameters**: - `files` (Array) [required] - `extra` (Record) [optional] (default: {}) --- ### Module: sdk.system Servis durumu. İzleme (uptime) kontrolleri için. #### Methods (1) ##### `sdk.system.health()` - **HTTP Method**: `GET` `/api/health` --- ### Module: sdk.tickets Destek talepleri gelen kutusu — sitenizin iletişim/destek formlarına düşenler. OKUMA tarafıdır ve **oturum ister** (panel yetkisi): site token'ı tek başına yetmez, kullanıcı o sitenin üyesi olmalı ve `tickets` modülü açık olmalıdır. Talebi OLUŞTURAN taraf ziyaretçidir ve oturumsuzdur — bunun için `sdk.delivery.submitTicket()` / `sdk.delivery.ticketForm()` kullanılır. #### Methods (3) ##### `sdk.tickets.list(params)` - **HTTP Method**: `GET` `/api/tickets` - **Summary**: Sayfalı gelen kutusu. Yanıt ayrıca `meta` (sayfalama) ve `stats` taşır. - **Auth**: envToken, jwt, envMember - **Required License Module**: `tickets` - **Parameters**: - `params` (TicketListParams) [optional] (default: {}) --- ##### `sdk.tickets.get(id)` - **HTTP Method**: `GET` `/api/tickets/{id}` - **Summary**: Tek talep: gövde + yazışma + onaylar (KVKK/ticari ileti/veri işleme) + IP. - **Auth**: envToken, jwt, envMember - **Required License Module**: `tickets` - **Parameters**: - `id` (number) [required] --- ##### `sdk.tickets.subjects()` - **HTTP Method**: `GET` `/api/tickets/{id}` - **Summary**: Filtre için talep türleri. Panelde tanımlı konular ile gelen kutusunda gerçekten geçen türlerin birleşimidir; gönderene giden otomatik yanıt şablonları (`...Return`) listede yer almaz. - **Auth**: envToken, jwt, envMember - **Required License Module**: `tickets` --- ### Module: sdk.tracking Ziyaretçi takibi ve hata bildirimi. Site token'ı yeter, oturum gerekmez. Yolculuk kayıtları panelde Admin → Site Hareketleri ekranında görünür. #### Methods (2) ##### `sdk.tracking.track(payload)` - **HTTP Method**: `POST` `/api/track` - **Summary**: Ziyaretçi hareketi kaydeder (sayfa görüntüleme, tıklama, sepete ekleme…). Sayfa kapanışında göndermek için `navigator.sendBeacon` tercih edin. - **Auth**: envToken - **Parameters**: - `payload` (Record) [required] --- ##### `sdk.tracking.reportError(payload)` - **HTTP Method**: `POST` `/api/public/client-error` - **Summary**: İstemci tarafı JS hatasını bildirir. - **Auth**: envToken - **Parameters**: - `payload` (Record) [required] --- ## 4. Machine-Readable Endpoints - Short LLM Summary: https://submitcms.com//llms.txt - Raw JSON Data: https://submitcms.com//api/llms - Documentation Hub: https://submitcms.com//Documents