npm.io
0.0.32 • Published 2 months agoCLI

@appaflytech/wappa-mcp

Licence
MIT
Version
0.0.32
Deps
7
Size
2.1 MB
Vulns
0
Weekly
0

@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

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": "admin@example.com",
        "WAP_PASSWORD": "your-password",
        "WAP_LANGUAGE": "tr"
      }
    }
  }
}
Global Kurulum
npm install -g @appaflytech/wappa-mcp
Proje İçi Kurulum
npm install @appaflytech/wappa-mcp

Yapı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ı admin@example.com
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": "admin@example.com",
        "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 → "BlogPost adı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_entities ile 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ı eticaret ise:
    • /mcp__eticaret__model-olustur
    • /mcp__eticaret__detay-sayfalari-ve-navigasyon
    • /mcp__eticaret__dokumandan-model-ve-demo
    • Argümanlar (opsiyonel) sorulur; /mcp bağ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_page değil.
  • Liste→detay için list query modelin Page.Path alanını seçer; widget repeater şablonunda touchable-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 — hasPageRelation immutable: Bir modelin kayıtlarının kendi detay sayfası olabilmesi, entity oluşturulurken hasPageRelation:true verilmiş 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), sonra detay-sayfalari-ve-navigasyon prompt'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

"Product tablosu 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 siteKey kullanı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:

"BlogPost adı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: true olmalı (liste başlık kolonu).
  • required: true → otomatik nullable: false (zorunlu alan). Ayrı bir "required" alanı yoktur.
  • localization: true → kolon çok dilli olur (dile özel _Localization tablosuna taşınır).
  • settings, customizations, schema verilmezse 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_entity ile bulur — siz sadece adıyla söylersiniz.

a) Bire çok (one-to-many) — örn. her BlogPost bir Category'ye bağlı

Prompt:

"Önce Category tablosu oluştur (Title, Order). Sonra BlogPost tablosuna Category adı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:

"Tag tablosu oluştur (Title). BlogPost ile Tag arasında çoka çok ilişki kur; kolon adı Tags olsun."

{
  "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; relationMetadata gö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_entity ile 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 links tam 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_records da 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_*_localization tool'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."

  1. create_entity_ai_drafts — prompt'tan taslak şemalar üretir (henüz uygulanmaz).
  2. get_entity_ai_drafts — taslakları gözden geçir.
  3. 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_theme

Kolon (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ılan true): false → zorunlu alan. Kolaylık: required: true → otomatik nullable: false.
  • localization (varsayılan false): çok dilli (dile özel _Localization tablosuna taşınır).
  • unique (varsayılan false): benzersizlik kısıtı.
  • multiple (varsayılan false): çoklu değer (çoka çokta otomatik true).
  • isVisualized: liste/öne çıkan başlık kolonu (en az birinde true).
  • 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: Upload tipi 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

accessType 0/1 dışındaysa selectedSiteIds gönderilmesi gerekebilir.


Kimlik Doğrulama

İki yöntem desteklenir:

1. Email + şifre (varsayılan):

  1. WAP_ADMIN_API_URL/Auth/sign-in endpoint'ine POST { email, password }
  2. Dönen JWT token cache'lenir
  3. Token'ın exp claim'inden süre hesaplanır, 5 dakika öncesinde yenilenir
  4. Her istekte Authorization: Bearer <token> header'ı eklenir

2. Organizasyon API Key:

  • WAP_API_KEY verilirse sign-in adımı atlanır; istekler X-API-Key: <apiKey> header'ı ile imzalanır.

Lisans

MIT

Keywords