Ana içeriğe geç

Formlar

Form tanımlarını yönetme ve forma gelen yanıtları görüntüleme endpointleri.

Base URL: /api/tenant/forms Yetkilendirme: Bearer Token + X-Api-Key Modül: Forms modülü müşteriye atanmış olmalıdır.

Headers:

Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
X-Api-Key: customer-api-key

POST /​

Yeni form oluşturur.

Request Body:

{
"code": "contact",
"name": "İletişim Formu",
"description": "Web sitesindeki iletişim taleplerini toplar",
"isActive": true,
"isPublic": true
}
AlanTipZorunluAçıklama
codestringEvetBenzersiz form kodu. Public submit endpointinde kullanılır
namestringEvetCMS içinde görünen form adı
descriptionstringHayırForm açıklaması
isActiveboolHayırForm aktif mi
isPublicboolHayırPublic submit endpointi açık mı

Response — 201 Created:

{
"success": true,
"data": {
"id": "3fa85f64-...",
"code": "contact",
"name": "İletişim Formu",
"description": "Web sitesindeki iletişim taleplerini toplar",
"isActive": true,
"isPublic": true,
"createdAt": "2026-03-28T13:30:00Z",
"updatedAt": null
}
}

GET /​

Formları filtreli ve sayfalanmış olarak listeler.

Query Parametreleri:

ParametreTipVarsayılanAçıklama
pageint1Sayfa numarası
pageSizeint20Sayfa başına kayıt
searchstring—code, name, description alanlarında arama
isActivebool—Aktiflik filtresi
isPublicbool—Public submit açıklık filtresi

Response — 200 OK:

{
"success": true,
"data": {
"items": [
{
"id": "3fa85f64-...",
"code": "contact",
"name": "İletişim Formu",
"description": "Web sitesindeki iletişim taleplerini toplar",
"isActive": true,
"isPublic": true,
"createdAt": "2026-03-28T13:30:00Z"
}
],
"page": 1,
"pageSize": 20,
"totalCount": 1,
"totalPages": 1
}
}

GET /{id}​

Belirli bir formun detayını getirir.

Response — 200 OK:

{
"success": true,
"data": {
"id": "3fa85f64-...",
"code": "contact",
"name": "İletişim Formu",
"description": "Web sitesindeki iletişim taleplerini toplar",
"isActive": true,
"isPublic": true,
"createdAt": "2026-03-28T13:30:00Z",
"updatedAt": "2026-03-28T14:00:00Z"
}
}

PUT /{id}​

Formu günceller.

Request Body: POST / ile aynı yapıdadır.

Response — 200 OK: FormResponse döner.


DELETE /{id}​

Formu siler. İşlem soft delete olarak uygulanır.

Response — 204 No Content


GET /{id}/submissions​

Forma gelen yanıtları filtreli ve sayfalanmış olarak listeler.

Query Parametreleri:

ParametreTipVarsayılanAçıklama
pageint1Sayfa numarası
pageSizeint20Sayfa başına kayıt
statusstring—New, Read, Archived, Spam
searchstring—sourceUrl, referrer, ipAddress, userAgent, field name ve field value içinde arama

Response — 200 OK:

{
"success": true,
"data": {
"items": [
{
"id": "4e6c4a42-...",
"formId": "3fa85f64-...",
"status": "New",
"submittedAt": "2026-03-28T14:15:00Z",
"sourceUrl": "https://example.com/contact",
"referrer": "https://google.com",
"ipAddress": "203.0.113.10",
"userAgent": "Mozilla/5.0"
}
],
"page": 1,
"pageSize": 20,
"totalCount": 1,
"totalPages": 1
}
}

GET /{id}/submissions/{submissionId}​

Belirli bir form yanıtının detayını getirir.

Response — 200 OK:

{
"success": true,
"data": {
"id": "4e6c4a42-...",
"formId": "3fa85f64-...",
"formCode": "contact",
"formName": "İletişim Formu",
"status": "New",
"submittedAt": "2026-03-28T14:15:00Z",
"sourceUrl": "https://example.com/contact",
"referrer": "https://google.com",
"ipAddress": "203.0.113.10",
"userAgent": "Mozilla/5.0",
"fields": [
{
"fieldName": "name",
"fieldValue": "Ali Veli"
},
{
"fieldName": "email",
"fieldValue": "[email protected]"
},
{
"fieldName": "message",
"fieldValue": "Merhaba"
}
]
}
}

PATCH /{id}/submissions/{submissionId}/status​

Form yanıtı durumunu günceller.

Request Body:

{
"status": "Read"
}
AlanTipZorunluAçıklama
statusstringEvetNew, Read, Archived, Spam

Response — 200 OK: GET /{id}/submissions/{submissionId} ile aynı yapıda FormSubmissionDetailResponse döner.


Notlar​

  • Form alanları CMS tarafında önceden tanımlanmaz.
  • Frontend, submit sırasında hangi alanları gönderirse sistem onları fieldName ve fieldValue olarak kaydeder.
  • Aynı fieldName bir submission içinde birden fazla kez gönderilebilir.

Olası Hatalar​

KodDurum
401Token eksik veya geçersiz
403Tenant kullanıcısı yetkisi yok veya forms modül erişimi yok
404Form veya submission bulunamadı
409Form code değeri çakışıyor
400Geçersiz body veya status değeri