# 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