MCP taslakları
MCP taslakları — 2 işlem (POST /v1/apps/{appId}/mcp/campaign-drafts, POST /v1/apps/{appId}/mcp/segment-drafts). OpenAPI 3.1.0 sözleşmesinden üretilir.
MCP sunucusunun yazma araçlarıyla oluşturduğu kampanya/segment taslakları (mcp:write kapsamı); gönderim yapmaz.
Taban adres: https://api.pushizo.com · Etiket: mcp · Etkileşimli belge (Scalar)
İşlemler
| Yöntem | Yol | İşlem |
|---|---|---|
POST | /v1/apps/{appId}/mcp/campaign-drafts | Kampanya taslağı oluştur (MCP onaylı mod; gönderim yapmaz) |
POST | /v1/apps/{appId}/mcp/segment-drafts | Segment taslağı oluştur (MCP onaylı mod; dinamik segment) |
Ayrıntılar
Kampanya taslağı oluştur (MCP onaylı mod; gönderim yapmaz)
Kimlik doğrulama: API anahtarı — kapsam mcp:write (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
İstek gövdesi (zorunlu)
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
name | string | Hayır | Uzunluk: 2–120 |
type | enum | Hayır | Değerler: "one_time", "scheduled", "recurring" |
audience | object | Hayır | |
audience.all | boolean | Hayır | |
audience.segments | array<string> | Hayır | |
audience.exclude_segments | array<string> | Hayır | |
audience.filters | object | Hayır | Filtre AST: all/any/none grupları ve { field, op, value } koşulları (docs/plan/05 §5.7). |
audience.filters.all | array<object> | Hayır | |
audience.filters.any | array<object> | Hayır | |
audience.filters.none | array<object> | Hayır | |
audience.channels | array<enum> | Hayır | |
audience.test_devices_only | boolean | Hayır | |
content | object | Hayır | messages.content ile aynı şema (headings, contents, url, buttons…) |
labels | array<string> | Hayır | Öğe: 0–10 |
category | string | null | Hayır | Tercih kategorisi anahtarı; kapalı kullanıcılar bastırılır |
ab_test | object | Hayır | |
ab_test.enabled | boolean | Hayır | |
ab_test.test_percentage | integer | Hayır | Aralık: 1–100 |
ab_test.winner | object | Hayır | |
ab_test.winner.mode | enum | Hayır | Değerler: "manual", "auto" |
ab_test.winner.metric | enum | Hayır | Değerler: "open_rate", "click_rate", "conversion_rate" |
ab_test.winner.evaluate_after_minutes | integer | Hayır | Aralık: 5–∞ |
variants | array<object> | Hayır | A/B varyantları (ağırlıklar toplamı 100; en fazla bir is_control). Öğe: 0–10 |
variants[].id | string | Hayır | |
variants[].name | string | Evet | Uzunluk: 0–60 |
variants[].weight_percent | integer | Evet | Aralık: 1–99 |
variants[].content | object | null | Hayır | |
variants[].is_control | boolean | Hayır | |
template_id | string | Hayır | |
template_version | integer | Hayır | |
delivery | object | Hayır | |
delivery.timezone_mode | enum | Hayır | Değerler: "immediate", "per_user_timezone", "optimized" |
delivery.delivery_time_of_day | string | Hayır | |
delivery.throttle_per_minute | integer | Hayır | |
delivery.ttl | integer | Hayır | |
delivery.priority | enum | Hayır | Değerler: 5, 10 |
delivery.collapse_id | string | Hayır | |
delivery.frequency_cap_exempt | boolean | Hayır | |
delivery.quiet_hours_exempt | boolean | Hayır | |
delivery.one_per_user | boolean | Hayır | |
recurrence | object | null | Hayır | |
recurrence.cron | string | Hayır | |
recurrence.until | string (date-time) | null | Hayır | |
recurrence.timezone | string | Hayır | |
send_at | string (date-time) | null | Hayır |
Örnek:
{
"name": "Sipariş bildirimleri",
"type": "one_time",
"audience": {
"channels": [
"ios_push"
],
"all": false,
"segments": [
"örnek"
]
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"labels": [
"promo"
]
}Yanıtlar
200 — Başarılı.
Şema: Campaign
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | string | Evet | |
app_id | string | Evet | |
name | string | Evet | |
labels | array<string> | Evet | |
category | string | null | Evet | |
ab_test | object | Evet | |
ab_test.enabled | boolean | Hayır | |
ab_test.test_percentage | integer | Hayır | Aralık: 1–100 |
ab_test.winner | object | Hayır | |
ab_test.winner.mode | enum | Evet | Değerler: "manual", "auto" |
ab_test.winner.metric | enum | Evet | Değerler: "open_rate", "click_rate", "conversion_rate" |
ab_test.winner.evaluate_after_minutes | integer | Hayır | Aralık: 5–10080 |
ab_test.phase | enum | Hayır | Değerler: "testing", "winner_sent" |
ab_test.winner_variant_id | string | Hayır | |
ab_test.decided_at | string | Hayır | |
ab_test.decided_by | string | Hayır | |
ab_test.significance | object | Hayır | |
ab_test.significance.p_value | number | Evet | |
ab_test.significance.significant | boolean | Evet | |
ab_test.significance.metric | string | Evet | |
variants | array<object> | Evet | |
variants[].id | string | Evet | |
variants[].name | string | Evet | |
variants[].weight_percent | integer | Evet | |
variants[].content | map<string, any> | null | Evet | |
variants[].is_control | boolean | Evet | |
variants[].position | integer | Evet | |
type | enum | Evet | Değerler: "one_time", "scheduled", "recurring", "automated", "transactional" |
status | enum | Evet | Değerler: "draft", "scheduled", "running", "paused", "completed", "cancelled", "failed" |
audience | map<string, any> | Evet | |
content | map<string, any> | Evet | |
template_id | string | null | Evet | |
template_version | integer | null | Evet | |
delivery | object | Evet | |
delivery.timezone_mode | enum | Hayır | Değerler: "immediate", "per_user_timezone", "optimized" |
delivery.delivery_time_of_day | string | Hayır | |
delivery.throttle_per_minute | integer | Hayır | Aralık: 1–1000000 |
delivery.ttl | integer | Hayır | Aralık: 60–2419200 |
delivery.priority | 5 | 10 | Hayır | |
delivery.collapse_id | string | Hayır | Uzunluk: 0–64 |
delivery.frequency_cap_exempt | boolean | Hayır | |
delivery.quiet_hours_exempt | boolean | Hayır | |
delivery.one_per_user | boolean | Hayır | |
recurrence | object | null | Evet | |
approval | object | Evet | |
approval.required | boolean | Evet | |
approval.pending_action | enum | Hayır | Değerler: "send", "schedule" |
approval.requested_by | string | Hayır | |
approval.requested_at | string | Hayır | |
approval.approved_by | string | Hayır | |
approval.approved_at | string | Hayır | |
approval.rejected_by | string | Hayır | |
approval.rejected_at | string | Hayır | |
stats | object | Evet | |
stats.runs | integer | Hayır | |
stats.targeted | integer | Hayır | |
stats.suppressed | integer | Hayır | |
stats.sent | integer | Hayır | |
stats.delivered | integer | Hayır | |
stats.failed | integer | Hayır | |
stats.opened | integer | Hayır | |
stats.clicked | integer | Hayır | |
stats.converted | integer | Hayır | |
stats.bounced | integer | Hayır | |
stats.complained | integer | Hayır | |
stats.unsubscribed | integer | Hayır | |
stats.sms_segments | integer | Hayır | |
send_at | string | null | Evet | |
next_run_at | string | null | Evet | |
last_run_at | string | null | Evet | |
run_count | integer | Evet | |
error | string | null | Evet | |
created_by | string | null | Evet | |
started_at | string | null | Evet | |
completed_at | string | null | Evet | |
created_at | string | Evet | |
updated_at | string | Evet | |
estimated_recipients | integer | null | Evet |
Örnek yanıt:
{
"name": "Sipariş bildirimleri",
"type": "one_time",
"status": "draft",
"id": "cmp_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"labels": [
"promo"
],
"category": "örnek",
"ab_test": {
"enabled": true,
"test_percentage": 1,
"winner": {
"mode": "manual",
"metric": "open_rate",
"evaluate_after_minutes": 5
},
"phase": "testing"
},
"variants": [
{
"name": "Sipariş bildirimleri",
"id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"weight_percent": 1,
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"is_control": true,
"position": 1
}
],
"audience": {
"key": "örnek"
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"template_id": "tpl_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"template_version": 1,
"delivery": {
"ttl": 86400,
"timezone_mode": "immediate",
"delivery_time_of_day": "değer",
"throttle_per_minute": 1
},
"recurrence": {
"cron": "xxxxxxxxx",
"until": "2026-10-17T09:00:00Z",
"timezone": "Europe/Istanbul"
},
"approval": {
"required": true,
"pending_action": "send",
"requested_by": "örnek",
"requested_at": "örnek",
"approved_by": "örnek"
},
"stats": {
"runs": 1,
"targeted": 1,
"suppressed": 1,
"sent": 1
},
"send_at": "örnek",
"next_run_at": "örnek",
"last_run_at": "örnek",
"run_count": 1,
"error": "örnek",
"created_by": "örnek",
"started_at": "örnek",
"completed_at": "örnek",
"created_at": "örnek",
"updated_at": "örnek",
"estimated_recipients": 1
}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/mcp/campaign-drafts" \
-H "Authorization: Bearer $PUSHIZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Sipariş bildirimleri",
"type": "one_time",
"audience": {
"channels": [
"ios_push"
],
"all": false,
"segments": [
"örnek"
]
},
"content": {
"contents": {
"tr": "Siparişiniz yola çıktı"
}
},
"labels": [
"promo"
]
}'Segment taslağı oluştur (MCP onaylı mod; dinamik segment)
Kimlik doğrulama: API anahtarı — kapsam mcp:write (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
İstek gövdesi (zorunlu)
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
name | string | Evet | Uzunluk: 2–100 |
description | string | null | Hayır | Uzunluk: 0–500 |
definition | object | Evet | Filtre AST: all/any/none grupları ve { field, op, value } koşulları (docs/plan/05 §5.7). |
definition.all | array<object> | Hayır | |
definition.any | array<object> | Hayır | |
definition.none | array<object> | Hayır | |
is_dynamic | boolean | Hayır |
Örnek:
{
"name": "Sipariş bildirimleri",
"definition": {
"all": [
{}
],
"any": [
{}
],
"none": [
{}
]
},
"description": "Sipariş durumu güncellemeleri",
"is_dynamic": true
}Yanıtlar
200 — Başarılı.
Şema: Segment
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | string | Evet | |
app_id | string | Evet | |
name | string | Evet | |
description | string | null | Evet | |
definition | map<string, any> | Evet | |
is_dynamic | boolean | Evet | |
estimated_count | integer | null | Evet | |
estimated_at | string | null | Evet | |
created_by | string | null | Evet | |
created_at | string | Evet | |
updated_at | string | Evet |
Örnek yanıt:
{
"name": "Sipariş bildirimleri",
"id": "seg_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"description": "Sipariş durumu güncellemeleri",
"definition": {
"key": "örnek"
},
"is_dynamic": true,
"estimated_count": 1,
"estimated_at": "örnek",
"created_by": "ö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/mcp/segment-drafts" \
-H "Authorization: Bearer $PUSHIZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Sipariş bildirimleri",
"definition": {
"all": [
{}
],
"any": [
{}
],
"none": [
{}
]
},
"description": "Sipariş durumu güncellemeleri",
"is_dynamic": true
}'Entegrasyonlar
Entegrasyonlar — 4 işlem (GET /v1/apps/{appId}/integrations/zapier/me, POST /v1/apps/{appId}/integrations/zapier/hooks, DELETE /v1/apps/{appId}/integrations/zapier/hooks/{hookId}, …). OpenAPI 3.1.0 sözleşmesinden üretilir.
SDK uçları (istemci)
SDK uçları (istemci) — 25 işlem (GET /sdk/v1/apps/{appId}/config, POST /sdk/v1/apps/{appId}/subscriptions, PATCH /sdk/v1/apps/{appId}/subscriptions/{subscriptionId}, …). OpenAPI 3.1.0 sözleşmesinden üretilir.