@appaflytech/wappa-mcp
v0.0.32
Published
MCP Server for WAPPA (Content Management System & Web Site Tools) Admin API — Claude Code integration for component, page, widget, and site management
Readme
@appaflytech/wappa-mcp
WAPPA (Content Management System & Web Site Tools) Admin API için MCP (Model Context Protocol) Server.
Claude Code / Claude Desktop gibi MCP istemcilerine WAPPA Admin API üzerinde doğrudan işlem yapma yeteneği kazandırır: site, sayfa, layout, bileşen, entity (veritabanı tabloları), dinamik kayıtlar, query, workflow, menü, tema, dil, depolama, kullanıcı/rol, SaaS (organizasyon/plan/abonelik), push bildirim ve daha fazlası — hepsi doğal dille.
Doğal dille "bir blog tablosu oluştur, kategorilerle ilişkilendir, 3 örnek yazı ekle ve yayınla" gibi komutlar verebilirsiniz; MCP arka planda ilgili tool'ları sırayla çağırır.
İçindekiler
- Kurulum
- Yapılandırma
- Nasıl kullanılır — Prompt verme
- Rehberli İş Akışları (Prompts)
- Yetenekler (Tüm Tool'lar)
- Reçeteler ve Örnekler
- Kolon (Column) Tipleri
- Erişim Tipleri (accessType)
- Kimlik Doğrulama
- Lisans
Kurulum
npx ile (Kurulum Gerektirmez)
Doğrudan MCP yapılandırmasında kullanabilirsiniz — ayrıca npm install yapmanıza gerek yok:
{
"mcpServers": {
"wap": {
"command": "npx",
"args": ["-y", "@appaflytech/wappa-mcp@latest"],
"env": {
"WAP_ADMIN_API_URL": "https://your-wap-admin-api-url.com",
"WAP_SITE_KEY": "your-site-slug",
"WAP_EMAIL": "[email protected]",
"WAP_PASSWORD": "your-password",
"WAP_LANGUAGE": "tr"
}
}
}
}Global Kurulum
npm install -g @appaflytech/wappa-mcpProje İçi Kurulum
npm install @appaflytech/wappa-mcpYapılandırma
Environment Variables
| Değişken | Zorunlu | Açıklama | Örnek |
| ------------------- | ------- | ---------------------------------------------------------- | -------------------------------------- |
| WAP_ADMIN_API_URL | Evet | Admin API base URL | https://wap-admin-api.example.com |
| WAP_SITE_KEY | Evet* | Site slug/key (URL'de kullanılan kısa isim) | glomil |
| WAP_SITE_ID | Hayır | WAP_SITE_KEY yoksa fallback site ID | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
| WAP_EMAIL | Evet**| Admin kullanıcı e-postası | [email protected] |
| WAP_PASSWORD | Evet**| Admin kullanıcı şifresi | your-password |
| WAP_API_KEY | Hayır | Organizasyon API Key (verilirse email/şifre yerine kullanılır) | org_xxx... |
| WAP_LANGUAGE | Hayır | API dili (Accept-Language header) | en-us (varsayılan) |
* WAP_SITE_KEY veya WAP_SITE_ID'den en az biri gerekir.
** WAP_API_KEY verilmediyse WAP_EMAIL + WAP_PASSWORD zorunludur.
Claude Code MCP Yapılandırması
Projenizin .claude/mcp.json (veya kullanıcı ~/.claude.json) dosyasına ekleyin:
{
"mcpServers": {
"wap": {
"command": "npx",
"args": ["-y", "@appaflytech/wappa-mcp@latest"],
"env": {
"WAP_ADMIN_API_URL": "https://wap-admin-api.example.com",
"WAP_SITE_KEY": "your-site-slug",
"WAP_EMAIL": "[email protected]",
"WAP_PASSWORD": "your-password"
}
}
}
}Nasıl kullanılır — Prompt verme
MCP tool'larını elle çağırmazsınız; sadece ne istediğinizi doğal dille yazarsınız, ajan doğru tool'u seçer. Etkili prompt için ipuçları:
- Net ve somut olun: "Blog tablosu oluştur" yerine → "
BlogPostadında bir tablo oluştur; kolonları: Title (metin, zorunlu, öne çıkan), Content (zengin metin), CoverImage (görsel), PublishedAt (tarih)." - İlişki isterken hedefi belirtin: "Her BlogPost bir Category'ye bağlı olsun (bire çok)" ya da "BlogPost ile Tag arasında çoka çok ilişki kur."
- Sıra/durum belirtin: "3 örnek kayıt ekle ve hepsini yayınla (Published)."
- Bağlam eksikse ajan önce arar: İlişki için hedef entity'nin GUID'i gerekir; ajan
list_entitiesile bulur. Siz sadece adıyla söyleyin. - Emin değilseniz keşfedin: "Bu sitede hangi tablolar var?" →
list_entities. "Bu MCP neler yapabilir?" →list_capabilities.
İlk komut olarak şunu deneyin:
"Bu sitede neler yapabileceğini özetle ve mevcut tabloları (entity) listele."
Rehberli İş Akışları (Prompts)
Bazı çok adımlı işler için MCP, rehberli prompt'lar sunar. Bunlar ajana adım adım, önce kullanıcıya soran bir iş akışı enjekte eder — böylece ajan statik/uydurma sonuçlara sapmadan gerçek modelleri (entity) kullanır.
Nasıl çağrılır?
- Claude Code: slash-command olarak —
/mcp__<server>__<prompt>. Bu repo'daki örnek server adıeticaretise:/mcp__eticaret__model-olustur/mcp__eticaret__detay-sayfalari-ve-navigasyon/mcp__eticaret__dokumandan-model-ve-demo- Argümanlar (opsiyonel) sorulur;
/mcpbağlı server'ların güncel prompt/tool listesini gösterir.
- Claude Desktop: mesaj kutusundaki “+” (attachment) menüsü → ilgili server → prompt'u seç → argümanları doldur.
- Prompt çağırmadan düz doğal dille de yazabilirsiniz; ilgili tool açıklamaları ajanı aynı kurallara yönlendirir (slash-command daha garantilidir).
model-olustur — Model(ler) oluştur (sayfa ilişkisini sorarak)
Bir veya birden çok model (entity) oluşturur. hasPageRelation (Sayfa ilişkisi) DEĞİŞTİRİLEMEZ (immutable) olduğundan, oluşturmadan önce "bu modellerden hangileri sayfa gibi kullanılacak (her kaydın kendi detay sayfası olacak)?" diye sorar ve seçime göre kaydeder.
- Argümanlar:
models(virgülle, örn."Ürünler, Kategoriler, Siparişler"),intent(opsiyonel).
"Şu 10 modeli oluştur: … " → ajan hangilerinin sayfa ilişkili olacağını sorar.
detay-sayfalari-ve-navigasyon — Detay sayfaları + liste→detay navigasyonu
Anasayfa/liste widget'larındaki öğelere tıklanınca ilgili kaydın detay sayfasına giden navigasyonu ekler ve model'e bağlı detay sayfaları kurar. Önce wappa_plan_detail_pages ile modelleri doğrular (var mı, hasPageRelation var mı), kullanıcıya sorar, sonra kurar. Statik sayfa üretmez.
- Detay sayfası = per-record page-entity (
wappa_create_page_entity) —create_pagedeğil. - Liste→detay için list query modelin
Page.Pathalanını seçer; widget repeater şablonundatouchable-link+refs.href={type:"repeater", ref:"pagePath"}kullanılır. - Argümanlar:
models,intent(opsiyonel).
"Bir liste/kart widget'ındaki kayıtlara tıklanınca o kaydın detay sayfasına gidilsin."
dokumandan-model-ve-demo — Dokümandan model(ler) + demo içerik
Konuşmaya eklenen bir dokümandaki modelleri (tablolar/kolonlar/ilişkiler) çıkarır, hasPageRelation'ı sorar, entity'leri bağımlılık sırasında oluşturur ve her modele birkaç demo kayıt ekler (ilişki alanları için hedef kayıtlar önce oluşturulur). Dokümana sadık kalır; uydurma model/kolon eklemez.
- Argümanlar:
demoCount(model başına demo kayıt, varsayılan 3),intent(opsiyonel).
"Bu dokümandaki modelleri oluştur ve her birine 3 demo kayıt ekle."
İlgili tool: wappa_plan_detail_pages — model adlarını canlı list_entities ile çözer; her modelin durumunu (ready / no-page-relation / not-found), kolonlarını ve somut kurulum planını + kullanıcıya sorulacak soruları döndürür. Detay sayfası/navigasyon isteklerinde ilk adım budur (hiçbir şey oluşturmaz).
Not —
hasPageRelationimmutable: Bir modelin kayıtlarının kendi detay sayfası olabilmesi, entity oluşturulurkenhasPageRelation:trueverilmiş olmasına bağlıdır; bu ayar sonradan eklenemez. Var olan bir modelde yoksa, tek çözüm modeli yeniden oluşturup veriyi taşımaktır.
Yetenekler (Tüm Tool'lar)
Her başlık altında kısa bir örnek prompt verilmiştir.
Sites (Siteler)
list_sites · get_site · create_site · update_site · delete_site · get_sites_with_entities
"Yeni bir site oluştur: adı 'Demo', slug 'demo'."
Pages (Sayfalar)
list_pages · list_all_pages · get_page · get_page_by_path · create_page · update_page · clone_page · publish_page · unpublish_page · delete_page · preview_page · get_page_versions · list_page_drafts · delete_page_version · generate_page_path · create_page_localization · get_page_queries
"'/hakkimizda' path'inde bir Hakkımızda sayfası oluştur ve yayınla."
Page Entities (Sayfaya bağlı kayıtlar)
list_page_entities · list_page_entities_as_query · get_page_entity · create_page_entity · update_page_entity · change_page_entity_status · clone_page_entity · delete_page_entity · delete_page_entity_version · create_page_entity_localization · get_page_entity_versions · get_page_entity_drafts · get_page_entity_queries · get_page_entity_order_info · preview_page_entity · plan_detail_pages
"Sayfa ile ilişkili (hasPageRelation) bir 'Portfolyo' kaydı ekle." "Listelenen kayıtlara tıklanınca ilgili kaydın detay sayfasına gidilsin." → önce
plan_detail_pages(modelleri doğrular, planı ve soruları döndürür), sonradetay-sayfalari-ve-navigasyonprompt'u.
Components (Bileşenler)
list_components · get_component · create_component · update_component · delete_component · list_base_components
"Yerleşik (base) bileşenleri listele; 'heading' bileşeninin şemasını göster."
Component Categories
list_component_categories · get_component_category · create_component_category · update_component_category · delete_component_category
Layouts
list_layouts · get_layout · create_layout · update_layout · delete_layout · clone_layout · clone_layout_to_site · create_layout_localization · get_layout_queries
"Ana layout'u kopyala ve 'Landing' adıyla kaydet."
Entities (Veritabanı Tablo Şemaları)
list_entities · list_global_entities · get_entity · create_entity · update_entity · delete_entity · get_entity_relations · get_entity_nested_relations · get_entity_nested_relations_root · get_entity_nested_relations_by_site · get_entity_queries · check_entity_deletable
AI destekli: create_entity_ai_drafts · create_entity_ai_drafts_from_image · get_entity_ai_drafts · commit_entity_ai_drafts
"
Producttablosu oluştur; Title, Price, Image kolonlarıyla." · "Bu formun ekran görüntüsünden bir tablo taslağı çıkar."
Dynamic Entities (Kayıtlar / İçerikler)
list_dynamic_entity_records · get_dynamic_entity_record · create_dynamic_entity_record · update_dynamic_entity_record · link_many_to_many_records · update_dynamic_entity_status · delete_dynamic_entity_record · clone_dynamic_entity_record · create_dynamic_entity_localization · bulk_create_dynamic_entity_localizations · get_dynamic_entity_versions · list_dynamic_entity_drafts · delete_dynamic_entity_version · get_dynamic_entity_as_query · get_dynamic_entity_order_info
"Product tablosuna 5 örnek ürün ekle ve yayınla."
Queries (Sorgular)
list_queries · get_query · run_query · run_query_with_body · run_query_form · create_query · update_query · delete_query · upsert_bulk_queries · preview_query · get_query_map · get_query_related_models
AI destekli: ai_raw_query_generator · ai_raw_query_chat
"Son 10 yayınlanmış blog yazısını getiren bir query oluştur ve çalıştır."
Query Categories
list_query_categories · get_query_category · create_query_category · update_query_category · delete_query_category · create_query_category_localization · list_query_category_nested_relations
Workflows (İş Akışları)
list_workflows · get_workflow · create_workflow · update_workflow · delete_workflow · run_workflow · preview_workflow
AI destekli: ai_suggest_workflow · ai_build_workflow
"Form gönderildiğinde e-posta atan basit bir workflow öner ve oluştur."
DB Routines (Veritabanı Rutinleri)
list_db_routines · get_db_routine · create_db_routine · update_db_routine · delete_db_routine
Menus (Menüler)
list_menus · get_menu · create_menu · update_menu · delete_menu · clone_menu · create_menu_localization
"Anasayfa, Hakkımızda, İletişim linklerinden bir üst menü oluştur."
Widgets
list_widgets · get_widget · create_widget · update_widget · delete_widget · create_widget_localization
Showcases (Vitrinler)
list_showcases · get_showcase · create_showcase · update_showcase · delete_showcase · clone_showcase
Themes (Temalar)
list_themes · get_theme · create_theme · update_theme · delete_theme
"Ana rengi #0EA5E9 olan bir tema oluştur."
Languages (Diller)
list_languages · get_language · create_language · update_language · delete_language
"İngilizce (en-us) dilini ekle."
Regions & Countries
list_regions · get_region · create_region · update_region · delete_region
list_countries · get_country · create_country · update_country · delete_country
Storage (Dosya / Klasör)
create_directory · delete_directory · rename_directory · search_directories · get_directory_breadcrumb · delete_file · rename_file · move_file · copy_file · search_files
"'banners' adında bir klasör oluştur."
App Users (Uygulama Kullanıcıları)
list_app_users · get_app_user · get_app_user_stats · get_app_user_login_history · create_app_user · update_app_user · set_app_user_status · reset_app_user_password · delete_app_user
Mail config: get_mail_config · set_mail_config · test_mail_config · delete_mail_config
Users, Roles & Permissions (Admin panel kullanıcıları)
list_users · get_user · create_user · update_user · update_user_password · get_user_authorized_permissions · update_user_left_menu
list_roles · get_role · create_role · update_role · delete_role · list_permissions · get_permission
AI Chat Sessions
list_ai_chat_sessions · get_ai_chat_session · create_ai_chat_session · update_ai_chat_session · delete_ai_chat_session
SaaS — Organizations (Organizasyonlar)
list_organizations · get_organization · create_organization · update_organization · delete_organization
SaaS — Plans (Planlar)
Tüm plan işlemleri
organizationId(GUID) gerektirir.
list_plans · get_plan · create_plan · update_plan · create_plan_localization · delete_plan
SaaS — Subscriptions (Abonelikler)
Tüm abonelik işlemleri
organizationId(GUID) gerektirir.
list_subscriptions · get_subscription · change_subscription_status · approve_subscription_refund · reject_subscription_refund
Push Notifications (Bildirimler)
Bu uçlar global'dir; kiracı hedeflemek için
siteKeykullanılır.
get_push_token_stats · list_push_tokens · get_notification_history · send_notification
Firebase (Android/FCM): get_firebase_credential · set_firebase_credential · delete_firebase_credential
Apple (iOS/APNs): get_apns_credential · set_apns_credential · delete_apns_credential
"Tüm cihazlara 'Kampanya başladı' başlıklı bildirim gönder."
Plugins (Eklentiler)
list_plugins · get_plugin · create_plugin · update_plugin · delete_plugin · install_plugin · uninstall_plugin
System Tools & Variables
list_root_entities · get_entity_dependencies · get_entity_dependencies_advanced · system_global_search
list_system_variables · get_system_variable · create_system_variable · update_system_variable · delete_system_variable
Settings (Ayarlar)
get_app_settings · update_app_settings · get_app_settings_module · update_app_settings_module · create_app_settings_localization · delete_app_settings_localization · get_system_settings · update_system_settings · create_system_settings_localization
Operations (Bakım / İşlemler)
cache_clear · operation_dependencies · operation_record_count · check_localization · operation_file_related_models · operation_compare · operation_site_installation_options
Error Logs
list_error_logs · clear_error_logs · get_error_log_curl
General
list_capabilities — MCP'nin yeteneklerini özetler · custom_request — herhangi bir Admin API endpoint'ine özel istek gönder
Reçeteler ve Örnekler
Aşağıdaki örneklerde sol tarafta prompt (ajana yazdığınız), açıklamalarda ise arkada hangi tool'un hangi veriyle çağrıldığı gösterilmiştir.
1. Basit tablo (entity) oluşturma
Prompt:
"
BlogPostadında bir tablo oluştur. Kolonlar: Title (metin, zorunlu, öne çıkan/isVisualized), Content (zengin metin/Editor), CoverImage (görsel), PublishedAt (tarih). Sıralama için Order kolonu da ekle. Siteye özel olsun."
Arkada create_entity şu payload ile çağrılır:
{
"title": "BlogPost",
"table": "BlogPost", // PascalCase
"accessType": 3, // 3 = siteye özel (OwnedSite)
"columns": [
{ "name": "Title", "title": "Başlık", "type": 12, "required": true, "isVisualized": true, "localization": true },
{ "name": "Content", "title": "İçerik", "type": 3, "localization": true },
{ "name": "CoverImage", "title": "Kapak", "type": 5 },
{ "name": "PublishedAt", "title": "Yayın T.", "type": 2 },
{ "name": "Order", "title": "Sıra", "type": 16, "isDefault": true, "initData": 0 }
]
}Notlar:
- En az bir kolon
isVisualized: trueolmalı (liste başlık kolonu). required: true→ otomatiknullable: false(zorunlu alan). Ayrı bir "required" alanı yoktur.localization: true→ kolon çok dilli olur (dile özel_Localizationtablosuna taşınır).settings,customizations,schemaverilmezse otomatik üretilir (Admin UI ile aynı davranış).- Kolon tipleri için Kolon Tipleri tablosuna bakın.
2. İlişkili tablo nasıl yapılır (Reference)
İlişki, type: 11 (Reference) kolonuyla kurulur. İlişki kolonu şunları ister:
| Alan | Açıklama |
| -------------- | ----------------------------------------------------------------------- |
| type | 11 (Reference) |
| reference | Hedef entity'nin GUID'i (alan yolu değil; list_entities ile bulun)|
| relationType | 0 = bire bir · 1 = bire çok · 2 = çoka çok |
Akış: Önce hedef tablo var olmalı. Ajan hedef entity'nin GUID'ini
list_entities/get_entityile bulur — siz sadece adıyla söylersiniz.
a) Bire çok (one-to-many) — örn. her BlogPost bir Category'ye bağlı
Prompt:
"Önce
Categorytablosu oluştur (Title, Order). SonraBlogPosttablosunaCategoryadında bir ilişki kolonu ekle: her yazı bir kategoriye bağlı olsun (bire çok)."
update_entity (veya create_entity) içindeki ilişki kolonu:
{
"name": "Category",
"title": "Kategori",
"type": 11,
"reference": "<CATEGORY_ENTITY_GUID>", // list_entities ile bulunur
"relationType": 1 // bire çok
}b) Çoka çok (many-to-many) — örn. BlogPost ↔ Tag
Prompt:
"
Tagtablosu oluştur (Title).BlogPostileTagarasında çoka çok ilişki kur; kolon adıTagsolsun."
{
"name": "Tags",
"title": "Etiketler",
"type": 11,
"reference": "<TAG_ENTITY_GUID>",
"relationType": 2 // çoka çok
}Çoka çokta otomatik uygulananlar:
multiple: true,settings.column: 12,customizations.detail.type: "auto-complete"- Sunucu ara (junction) tablosunu kendisi oluşturur;
relationMetadatagöndermeyin.
Ara tabloya ek kolon (örn. bağlantı ağırlığı) eklemek için reference kolonunun columns dizisine tam kolon objesi koyun:
{
"name": "Tags", "type": 11, "reference": "<TAG_ENTITY_GUID>", "relationType": 2,
"columns": [
{ "name": "Weight", "title": "Ağırlık", "type": 8, "nullable": true }
]
}Önemli:
update_entityile kolon eklerken mevcut tüm kolonları + yeni kolonu birlikte gönderin. Gönderilmeyen kolonlar (ve verileri) silinir.
3. Kayıt ekleme ve ilişki bağlama
Kayıtlar create_dynamic_entity_record ile eklenir. Üç kolon biçimi vardır:
{
"entityId": "<BLOGPOST_ENTITY_GUID>",
"status": "Published", // veya "Draft"
"columns": [
{ "key": "Title", "value": "Merhaba Dünya" }, // 1) normal alan
{ "key": "Category", "refId": "<CATEGORY_RECORD_ID>" }, // 2) tekil ilişki (1-1 / 1-n)
{ "key": "Tags", "links": [ // 3) çoka çok
"<TAG_RECORD_ID_1>",
{ "value": "<TAG_RECORD_ID_2>", "columns": [{ "key": "Weight", "value": 5 }] }
]},
{ "key": "Order", "value": 0 }
]
}Prompt:
"BlogPost'a 'Merhaba Dünya' başlıklı bir yazı ekle; 'Duyurular' kategorisine bağla, 'genel' ve 'haber' etiketlerini ekle, yayınla."
refId→ hedef kayıt ID'si (entity ID değil).- Çoka çok
linkstam liste demektir:update_dynamic_entity_record'da gönderilmeyen eski bağlantılar kaldırılır. - Sadece bağlantı yönetmek için
link_many_to_many_recordsda kullanılabilir.
4. Çok dilli (localization) içerik
Tipik akış: önce varsayılan dilde oluştur, sonra her hedef dil için language ile güncelle/çeviri ekle.
Prompt:
"Bu blog yazısının İngilizce (en-us) çevirisini ekle: başlık 'Hello World', içerik '...'."
- Kayıt çevirisi:
create_dynamic_entity_localization(veya toplu:bulk_create_dynamic_entity_localizations). language: "en-us"verildiğinde hem localized main kolonlar hem de çoka çok ara-tablo localized ek kolonları o dile yazılır.- Sayfa/menü/tema/plan gibi varlıkların da kendi
create_*_localizationtool'ları vardır.
5. AI ile taslaktan tablo oluşturma
Prompt (metinden):
"Bir emlak ilanı modeli taslağı çıkar: başlık, fiyat, oda sayısı, konum, görseller."
create_entity_ai_drafts— prompt'tan taslak şemalar üretir (henüz uygulanmaz).get_entity_ai_drafts— taslakları gözden geçir.commit_entity_ai_drafts— taslakları gerçek tablolara dönüştürür (DB migrate).
Prompt (görselden):
"Şu formun ekran görüntüsüne bak ve buna uygun bir tablo taslağı oluştur." →
create_entity_ai_drafts_from_image(görsel base64 gönderilir).
6. Sayfa, menü, tema
Prompt: "'/iletisim' path'inde bir İletişim sayfası oluştur ve yayınla."
→ generate_page_path (gerekirse) → create_page → publish_page
Prompt: "Üst menü oluştur: Anasayfa (/), Hakkımızda (/hakkimizda), İletişim (/iletisim)."
→ create_menu
Prompt: "Ana rengi #0EA5E9, ikincil rengi #64748B olan 'Ocean' temasını oluştur."
→ create_themeKolon (Column) Tipleri
create_entity / update_entity içinde type alanı sayısal verilir:
| Değer | Tip | Backend depolama | Açıklama | | ----- | ------------- | ------------------ | ------------------------------- | | 0 | Boolean | boolean | Evet/Hayır | | 1 | Color | text | Renk | | 2 | Date | time with zone | Tarih/saat | | 3 | Editor | text | Zengin metin (RichText) | | 4 | File | uuid | Dosya | | 5 | Image | uuid | Görsel | | 6 | Link | uuid | Bağlantı | | 7 | LongText | text | Uzun metin | | 8 | Number | integer | Tam sayı | | 9 | Picture | uuid | Resim | | 10 | Price | decimal | Fiyat | | 11 | Reference | uuid | İlişki (bkz. relationType) | | 12 | Text | text | Kısa metin | | 13 | Video | uuid | Video | | 14 | Guid | uuid | GUID | | 15 | Uploader | uuid | Yükleyici (backend adı: Upload) | | 16 | Order | decimal | Sıralama (backend'de Decimal) | | 17 | Dynamic | jsonb | Dinamik | | 18 | RandomString | text | Rastgele string | | 19 | Regions | uuid | Bölgeler | | 22 | DateOnly | time | Sadece tarih | | 23 | NumberEnum | integer | Sayısal enum | | 24 | TextEnum | text | Metin enum | | -1 | None | — | Tip yok (özel durum) |
Kolon özellikleri (her tipte geçerli):
name/title: kolon adı (DB) ve görünen ad.description: açıklama.nullable(varsayılantrue):false→ zorunlu alan. Kolaylık:required: true→ otomatiknullable: false.localization(varsayılanfalse): çok dilli (dile özel_Localizationtablosuna taşınır).unique(varsayılanfalse): benzersizlik kısıtı.multiple(varsayılanfalse): çoklu değer (çoka çokta otomatiktrue).isVisualized: liste/öne çıkan başlık kolonu (en az birindetrue).isDefault: sistem varsayılanı kolon (örn. Order); silinemez.initData: varsayılan değer (tipe göre doğrulanır).settings:{ column: 3-12 }grid genişliği + tipe özel bloklar (verilmezse otomatik).validations:[{ message, regex }]— tek validasyon tipi regex'tir.reference/relationType: ilişki kolonları için (bkz. İlişkili tablo).relationMetadata: çoka çok ara-tablo meta verisi — normalde göndermeyin, sunucu üretir (istisnai durumda açıkça verilebilir).uploadMetadata:Uploadtipi için sunucunun oluşturduğu klasör bilgisi; güncellemede olduğu gibi geri gönderin.
Erişim Tipleri (accessType)
| Değer | İsim | Açıklama |
| ----- | --------------- | ---------------------------------------------------- |
| 0 | Global | Tüm siteler erişebilir |
| 1 | AllSites | Tüm siteler erişebilir |
| 2 | SelectedSites | Yalnızca selectedSiteIds listesindeki siteler |
| 3 | OwnedSite | Yalnızca route'tan gelen siteye özel (varsayılan) |
| 4 | CustomSelected | Özel seçim |
accessType0/1 dışındaysaselectedSiteIdsgönderilmesi gerekebilir.
Kimlik Doğrulama
İki yöntem desteklenir:
1. Email + şifre (varsayılan):
WAP_ADMIN_API_URL/Auth/sign-inendpoint'ine POST{ email, password }- Dönen JWT token cache'lenir
- Token'ın
expclaim'inden süre hesaplanır, 5 dakika öncesinde yenilenir - Her istekte
Authorization: Bearer <token>header'ı eklenir
2. Organizasyon API Key:
WAP_API_KEYverilirse sign-in adımı atlanır; isteklerX-API-Key: <apiKey>header'ı ile imzalanır.
Lisans
MIT
