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
searchstringcode, name, description alanlarında arama
isActiveboolAktiflik filtresi
isPublicboolPublic 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
statusstringNew, Read, Archived, Spam
searchstringsourceUrl, 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": "ali@example.com"
},
{
"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