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
}
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
code | string | Evet | Benzersiz form kodu. Public submit endpointinde kullanılır |
name | string | Evet | CMS içinde görünen form adı |
description | string | Hayır | Form açıklaması |
isActive | bool | Hayır | Form aktif mi |
isPublic | bool | Hayır | Public 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:
| Parametre | Tip | Varsayılan | Açıklama |
|---|---|---|---|
page | int | 1 | Sayfa numarası |
pageSize | int | 20 | Sayfa başına kayıt |
search | string | — | code, name, description alanlarında arama |
isActive | bool | — | Aktiflik filtresi |
isPublic | bool | — | 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:
| Parametre | Tip | Varsayılan | Açıklama |
|---|---|---|---|
page | int | 1 | Sayfa numarası |
pageSize | int | 20 | Sayfa başına kayıt |
status | string | — | New, Read, Archived, Spam |
search | string | — | 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": "ali@example.com"
},
{
"fieldName": "message",
"fieldValue": "Merhaba"
}
]
}
}
PATCH /{id}/submissions/{submissionId}/status
Form yanıtı durumunu günceller.
Request Body:
{
"status": "Read"
}
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
status | string | Evet | New, 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ı
fieldNamevefieldValueolarak kaydeder. - Aynı
fieldNamebir submission içinde birden fazla kez gönderilebilir.
Olası Hatalar
| Kod | Durum |
|---|---|
401 | Token eksik veya geçersiz |
403 | Tenant kullanıcısı yetkisi yok veya forms modül erişimi yok |
404 | Form veya submission bulunamadı |
409 | Form code değeri çakışıyor |
400 | Geçersiz body veya status değeri |