Formlar
Formlar — 5 işlem (GET /v1/apps/{appId}/forms, POST /v1/apps/{appId}/forms, GET /v1/apps/{appId}/forms/{formId}, …). OpenAPI 3.1.0 sözleşmesinden üretilir.
Bot korumalı ve rıza kayıtlı formlar: tanım, gönderim listesi ve sunucu tarafı gönderim (kullanıcı ve e-posta/SMS aboneliği oluşturur).
Taban adres: https://api.pushizo.com · Etiket: forms · Etkileşimli belge (Scalar)
İşlemler
| Yöntem | Yol | İşlem |
|---|---|---|
GET | /v1/apps/{appId}/forms | Formlar |
POST | /v1/apps/{appId}/forms | Form oluştur |
GET | /v1/apps/{appId}/forms/{formId} | Form detayı |
GET | /v1/apps/{appId}/forms/{formId}/submissions | Form gönderimleri |
POST | /v1/apps/{appId}/forms/{formId}/submissions | Sunucu tarafı form gönderimi (external_id verilirse o kullanıcının profili güncellenir) |
Ayrıntılar
Formlar
Kimlik doğrulama: API anahtarı — kapsam analytics:read (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
limit | sorgu | integer | Hayır | Varsayılan: 50; Aralık: 1–200 | 50 |
cursor | sorgu | string | Hayır | Uzunluk: 1–∞ | "eyJpZCI6Im1zZ18wMUpE…" |
status | sorgu | enum | Hayır | Değerler: "active", "archived" | "active" |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: FormPage
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
data | array<object> | Evet | |
data[].id | string | Evet | |
data[].app_id | string | Evet | |
data[].name | string | Evet | |
data[].status | enum | Evet | Değerler: "active", "archived" |
data[].fields | array<object> | Evet | Öğe: 1–20 |
data[].fields[].id | string | Evet | |
data[].fields[].type | enum | Evet | Değerler: "email", "phone", "first_name", "last_name", "full_name", "text", "textarea", "select", "radio", "checkbox", "consent" |
data[].fields[].label | map<string, string> | Evet | |
data[].fields[].placeholder | map<string, string> | Hayır | |
data[].fields[].required | boolean | Hayır | |
data[].fields[].options | array<object> | Hayır | Öğe: 0–30 |
data[].fields[].maps_to | string | Hayır | |
data[].fields[].max_length | integer | Hayır | Aralık: 1–2000 |
data[].fields[].policy_url | string (url) | Hayır | Uzunluk: 0–2000 |
data[].settings | object | Evet | |
data[].settings.submit_label | map<string, string> | Hayır | |
data[].settings.success_message | map<string, string> | Hayır | |
data[].settings.redirect_url | string (url) | Hayır | Uzunluk: 0–2000 |
data[].settings.tags | map<string, string> | Hayır | |
data[].settings.subscribe | object | Hayır | |
data[].settings.double_opt_in | object | Hayır | |
data[].settings.event_name | string | Hayır | |
data[].settings.captcha | boolean | Hayır | |
data[].settings.default_language | string | Hayır | Uzunluk: 2–10 |
data[].stats | object | Evet | |
data[].stats.submissions | integer | Evet | |
data[].stats.last_submission_at | string | null | Evet | |
data[].created_at | string | Evet | |
data[].updated_at | string | Evet | |
next_cursor | string | null | Evet | |
has_more | boolean | Evet |
Örnek yanıt:
{
"data": [
{
"name": "Sipariş bildirimleri",
"status": "active",
"id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"fields": [
{
"type": "email",
"id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"label": {},
"placeholder": {},
"required": true
}
],
"settings": {
"tags": {
"plan": "pro",
"city": "Istanbul"
},
"submit_label": {
"tr": "Siparişiniz yola çıktı",
"en": "Your order has shipped"
}
},
"stats": {
"submissions": 1,
"last_submission_at": "örnek"
},
"created_at": "örnek",
"updated_at": "örnek"
}
],
"next_cursor": "eyJpZCI6Im1zZ18wMUpE…",
"has_more": true
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X GET "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/forms?limit=50" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"Form oluştur
Kimlik doğrulama: API anahtarı — kapsam admin (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
İstek gövdesi (zorunlu)
Şema: CreateFormDto
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
name | string | Evet | Uzunluk: 2–100 |
fields | array<object> | Evet | Öğe: 1–20 |
fields[].id | string | Evet | |
fields[].type | enum | Evet | Değerler: "email", "phone", "first_name", "last_name", "full_name", "text", "textarea", "select", "radio", "checkbox", "consent" |
fields[].label | map<string, string> | Evet | |
fields[].placeholder | map<string, string> | Hayır | |
fields[].required | boolean | Hayır | |
fields[].options | array<object> | Hayır | Öğe: 0–30 |
fields[].options[].value | string | Evet | Uzunluk: 1–100 |
fields[].options[].label | map<string, string> | Evet | |
fields[].maps_to | string | Hayır | |
fields[].max_length | integer | Hayır | Aralık: 1–2000 |
fields[].policy_url | string (url) | Hayır | Uzunluk: 0–2000 |
settings | object | Hayır | |
settings.submit_label | map<string, string> | Hayır | |
settings.success_message | map<string, string> | Hayır | |
settings.redirect_url | string (url) | Hayır | Uzunluk: 0–2000 |
settings.tags | map<string, string> | Hayır | |
settings.subscribe | object | Hayır | |
settings.subscribe.email | boolean | Hayır | |
settings.subscribe.sms | boolean | Hayır | |
settings.double_opt_in | object | Hayır | |
settings.double_opt_in.enabled | boolean | Evet | |
settings.double_opt_in.subject | map<string, string> | Hayır | |
settings.double_opt_in.body | map<string, string> | Hayır | |
settings.event_name | string | Hayır | |
settings.captcha | boolean | Hayır | |
settings.default_language | string | Hayır | Uzunluk: 2–10 |
status | enum | Hayır | Değerler: "active", "archived" |
Örnek:
{
"name": "Sipariş bildirimleri",
"fields": [
{
"type": "email",
"id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"label": {
"tr": "Siparişiniz yola çıktı",
"en": "Your order has shipped"
},
"placeholder": {
"tr": "Siparişiniz yola çıktı",
"en": "Your order has shipped"
},
"required": true,
"options": [
{
"value": "user_42",
"label": {}
}
]
}
],
"status": "active",
"settings": {
"tags": {
"plan": "pro",
"city": "Istanbul"
},
"submit_label": {
"tr": "Siparişiniz yola çıktı",
"en": "Your order has shipped"
},
"success_message": {
"tr": "Siparişiniz yola çıktı",
"en": "Your order has shipped"
}
}
}Yanıtlar
201 — Başarılı.
Şema: Form
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | string | Evet | |
app_id | string | Evet | |
name | string | Evet | |
status | enum | Evet | Değerler: "active", "archived" |
fields | array<object> | Evet | Öğe: 1–20 |
fields[].id | string | Evet | |
fields[].type | enum | Evet | Değerler: "email", "phone", "first_name", "last_name", "full_name", "text", "textarea", "select", "radio", "checkbox", "consent" |
fields[].label | map<string, string> | Evet | |
fields[].placeholder | map<string, string> | Hayır | |
fields[].required | boolean | Hayır | |
fields[].options | array<object> | Hayır | Öğe: 0–30 |
fields[].options[].value | string | Evet | Uzunluk: 1–100 |
fields[].options[].label | map<string, string> | Evet | |
fields[].maps_to | string | Hayır | |
fields[].max_length | integer | Hayır | Aralık: 1–2000 |
fields[].policy_url | string (url) | Hayır | Uzunluk: 0–2000 |
settings | object | Evet | |
settings.submit_label | map<string, string> | Hayır | |
settings.success_message | map<string, string> | Hayır | |
settings.redirect_url | string (url) | Hayır | Uzunluk: 0–2000 |
settings.tags | map<string, string> | Hayır | |
settings.subscribe | object | Hayır | |
settings.subscribe.email | boolean | Hayır | |
settings.subscribe.sms | boolean | Hayır | |
settings.double_opt_in | object | Hayır | |
settings.double_opt_in.enabled | boolean | Evet | |
settings.double_opt_in.subject | map<string, string> | Hayır | |
settings.double_opt_in.body | map<string, string> | Hayır | |
settings.event_name | string | Hayır | |
settings.captcha | boolean | Hayır | |
settings.default_language | string | Hayır | Uzunluk: 2–10 |
stats | object | Evet | |
stats.submissions | integer | Evet | |
stats.last_submission_at | string | null | Evet | |
created_at | string | Evet | |
updated_at | string | Evet |
Örnek yanıt:
{
"name": "Sipariş bildirimleri",
"status": "active",
"id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"fields": [
{
"type": "email",
"id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"label": {
"tr": "Siparişiniz yola çıktı",
"en": "Your order has shipped"
},
"placeholder": {
"tr": "Siparişiniz yola çıktı",
"en": "Your order has shipped"
},
"required": true,
"options": [
{
"value": "user_42",
"label": {}
}
],
"maps_to": "değer"
}
],
"settings": {
"tags": {
"plan": "pro",
"city": "Istanbul"
},
"submit_label": {
"tr": "Siparişiniz yola çıktı",
"en": "Your order has shipped"
},
"success_message": {
"tr": "Siparişiniz yola çıktı",
"en": "Your order has shipped"
},
"redirect_url": "https://example.com/orders/1001"
},
"stats": {
"submissions": 1,
"last_submission_at": "örnek"
},
"created_at": "örnek",
"updated_at": "örnek"
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X POST "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/forms" \
-H "Authorization: Bearer $PUSHIZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Sipariş bildirimleri",
"fields": [
{
"type": "email",
"id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"label": {
"tr": "Siparişiniz yola çıktı",
"en": "Your order has shipped"
},
"placeholder": {
"tr": "Siparişiniz yola çıktı",
"en": "Your order has shipped"
},
"required": true,
"options": [
{
"value": "user_42",
"label": {}
}
]
}
],
"status": "active",
"settings": {
"tags": {
"plan": "pro",
"city": "Istanbul"
},
"submit_label": {
"tr": "Siparişiniz yola çıktı",
"en": "Your order has shipped"
},
"success_message": {
"tr": "Siparişiniz yola çıktı",
"en": "Your order has shipped"
}
}
}'Form detayı
Kimlik doğrulama: API anahtarı — kapsam analytics:read (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
formId | yol | string | Evet | "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: Form
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | string | Evet | |
app_id | string | Evet | |
name | string | Evet | |
status | enum | Evet | Değerler: "active", "archived" |
fields | array<object> | Evet | Öğe: 1–20 |
fields[].id | string | Evet | |
fields[].type | enum | Evet | Değerler: "email", "phone", "first_name", "last_name", "full_name", "text", "textarea", "select", "radio", "checkbox", "consent" |
fields[].label | map<string, string> | Evet | |
fields[].placeholder | map<string, string> | Hayır | |
fields[].required | boolean | Hayır | |
fields[].options | array<object> | Hayır | Öğe: 0–30 |
fields[].options[].value | string | Evet | Uzunluk: 1–100 |
fields[].options[].label | map<string, string> | Evet | |
fields[].maps_to | string | Hayır | |
fields[].max_length | integer | Hayır | Aralık: 1–2000 |
fields[].policy_url | string (url) | Hayır | Uzunluk: 0–2000 |
settings | object | Evet | |
settings.submit_label | map<string, string> | Hayır | |
settings.success_message | map<string, string> | Hayır | |
settings.redirect_url | string (url) | Hayır | Uzunluk: 0–2000 |
settings.tags | map<string, string> | Hayır | |
settings.subscribe | object | Hayır | |
settings.subscribe.email | boolean | Hayır | |
settings.subscribe.sms | boolean | Hayır | |
settings.double_opt_in | object | Hayır | |
settings.double_opt_in.enabled | boolean | Evet | |
settings.double_opt_in.subject | map<string, string> | Hayır | |
settings.double_opt_in.body | map<string, string> | Hayır | |
settings.event_name | string | Hayır | |
settings.captcha | boolean | Hayır | |
settings.default_language | string | Hayır | Uzunluk: 2–10 |
stats | object | Evet | |
stats.submissions | integer | Evet | |
stats.last_submission_at | string | null | Evet | |
created_at | string | Evet | |
updated_at | string | Evet |
Örnek yanıt:
{
"name": "Sipariş bildirimleri",
"status": "active",
"id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"fields": [
{
"type": "email",
"id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"label": {
"tr": "Siparişiniz yola çıktı",
"en": "Your order has shipped"
},
"placeholder": {
"tr": "Siparişiniz yola çıktı",
"en": "Your order has shipped"
},
"required": true,
"options": [
{
"value": "user_42",
"label": {}
}
],
"maps_to": "değer"
}
],
"settings": {
"tags": {
"plan": "pro",
"city": "Istanbul"
},
"submit_label": {
"tr": "Siparişiniz yola çıktı",
"en": "Your order has shipped"
},
"success_message": {
"tr": "Siparişiniz yola çıktı",
"en": "Your order has shipped"
},
"redirect_url": "https://example.com/orders/1001"
},
"stats": {
"submissions": 1,
"last_submission_at": "örnek"
},
"created_at": "örnek",
"updated_at": "örnek"
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X GET "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/forms/frm_01JD3W5Q7X9K2M4N6P8R0T1V3W" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"Form gönderimleri
Kimlik doğrulama: API anahtarı — kapsam users:read (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
formId | yol | string | Evet | "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
limit | sorgu | integer | Hayır | Varsayılan: 50; Aralık: 1–200 | 50 |
cursor | sorgu | string | Hayır | Uzunluk: 1–∞ | "eyJpZCI6Im1zZ18wMUpE…" |
status | sorgu | enum | Hayır | Değerler: "accepted", "pending_confirmation", "confirmed" | "accepted" |
since | sorgu | string (date-time) | Hayır | "2026-10-17T09:00:00Z" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: FormSubmissionPage
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
data | array<object> | Evet | |
data[].id | string | Evet | |
data[].form_id | string | Evet | |
data[].user_id | string | null | Evet | |
data[].subscription_ids | array<string> | Evet | |
data[].source | enum | Evet | Değerler: "web_campaign", "landing_page", "sdk", "api" |
data[].source_id | string | null | Evet | |
data[].status | enum | Evet | Değerler: "accepted", "pending_confirmation", "confirmed" |
data[].data | map<string, string | boolean | array<string>> | Evet | |
data[].consent | array<object> | Evet | |
data[].consent[].field_id | string | Evet | |
data[].consent[].given | boolean | Evet | |
data[].consent[].text | string | Evet | |
data[].consent[].text_hash | string | Evet | |
data[].consent[].policy_url | string | null | Evet | |
data[].consent[].language | string | Evet | |
data[].consent[].at | string | Evet | |
data[].page_url | string | null | Evet | |
data[].language | string | null | Evet | |
data[].confirmed_at | string | null | Evet | |
data[].created_at | string | Evet | |
next_cursor | string | null | Evet | |
has_more | boolean | Evet |
Örnek yanıt:
{
"data": [
{
"data": {
"order_id": "1001"
},
"status": "accepted",
"id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"form_id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"subscription_ids": [
"sub_01JD3W5Q7X9K2M4N6P8R0T1V3W"
],
"source": "web_campaign",
"source_id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"consent": [
{
"field_id": "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"given": true,
"text": "Takip bağlantısı içeride",
"text_hash": "örnek",
"policy_url": "https://example.com/orders/1001",
"language": "tr",
"at": "örnek"
}
],
"page_url": "https://example.com/orders/1001",
"language": "tr",
"confirmed_at": "örnek",
"created_at": "örnek"
}
],
"next_cursor": "eyJpZCI6Im1zZ18wMUpE…",
"has_more": true
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X GET "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/forms/frm_01JD3W5Q7X9K2M4N6P8R0T1V3W/submissions?limit=50" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"Sunucu tarafı form gönderimi (external_id verilirse o kullanıcının profili güncellenir)
Kimlik doğrulama: API anahtarı — kapsam users:write (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
formId | yol | string | Evet | "frm_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
İstek gövdesi (zorunlu)
Şema: PublicFormSubmitDto
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
values | map<string, string | boolean | number | array<string>> | Evet | |
external_id | string | Hayır | Uzunluk: 1–128 |
page_url | string | Hayır | Uzunluk: 0–2000 |
language | string | Hayır | Uzunluk: 2–10 |
Örnek:
{
"values": {
"key": "user_42"
},
"external_id": "user_42",
"page_url": "https://example.com/orders/1001",
"language": "tr"
}Yanıtlar
201 — Başarılı.
Şema: FormSubmitResult
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
ok | true | Evet | |
status | enum | Evet | Değerler: "accepted", "pending_confirmation" |
submission_id | string | null | Evet | |
success_message | string | Evet | |
redirect_url | string | null | Evet |
Örnek yanıt:
{
"status": "accepted",
"ok": true,
"submission_id": "fsb_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"success_message": "örnek",
"redirect_url": "https://example.com/orders/1001"
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X POST "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/forms/frm_01JD3W5Q7X9K2M4N6P8R0T1V3W/submissions" \
-H "Authorization: Bearer $PUSHIZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"values": {
"key": "user_42"
},
"external_id": "user_42",
"page_url": "https://example.com/orders/1001",
"language": "tr"
}'Web kampanyaları (pop-up, banner)
Web kampanyaları (pop-up, banner) — 6 işlem (GET /v1/apps/{appId}/web-campaigns, POST /v1/apps/{appId}/web-campaigns, GET /v1/apps/{appId}/web-campaigns/{campaignId}, …). OpenAPI 3.1.0 sözleşmesinden üretilir.
Anketler ve NPS
Anketler ve NPS — 7 işlem (GET /v1/apps/{appId}/surveys, POST /v1/apps/{appId}/surveys, GET /v1/apps/{appId}/surveys/{surveyId}, …). OpenAPI 3.1.0 sözleşmesinden üretilir.