PushizoDocs
API referansı

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öntemYolİşlem
POST/v1/apps/{appId}/mcp/campaign-draftsKampanya taslağı oluştur (MCP onaylı mod; gönderim yapmaz)
POST/v1/apps/{appId}/mcp/segment-draftsSegment taslağı oluştur (MCP onaylı mod; dinamik segment)

Ayrıntılar

Kampanya taslağı oluştur (MCP onaylı mod; gönderim yapmaz)

POST/v1/apps/{appId}/mcp/campaign-draftsDene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı — kapsam mcp:write (admin her kapsamı içerir).

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"

İstek gövdesi (zorunlu)

AlanTürZorunluAçıklama
namestringHayırUzunluk: 2–120
typeenumHayırDeğerler: "one_time", "scheduled", "recurring"
audienceobjectHayır
audience.allbooleanHayır
audience.segmentsarray<string>Hayır
audience.exclude_segmentsarray<string>Hayır
audience.filtersobjectHayırFiltre AST: all/any/none grupları ve { field, op, value } koşulları (docs/plan/05 §5.7).
audience.filters.allarray<object>Hayır
audience.filters.anyarray<object>Hayır
audience.filters.nonearray<object>Hayır
audience.channelsarray<enum>Hayır
audience.test_devices_onlybooleanHayır
contentobjectHayırmessages.content ile aynı şema (headings, contents, url, buttons…)
labelsarray<string>HayırÖğe: 0–10
categorystring | nullHayırTercih kategorisi anahtarı; kapalı kullanıcılar bastırılır
ab_testobjectHayır
ab_test.enabledbooleanHayır
ab_test.test_percentageintegerHayırAralık: 1–100
ab_test.winnerobjectHayır
ab_test.winner.modeenumHayırDeğerler: "manual", "auto"
ab_test.winner.metricenumHayırDeğerler: "open_rate", "click_rate", "conversion_rate"
ab_test.winner.evaluate_after_minutesintegerHayırAralık: 5–∞
variantsarray<object>HayırA/B varyantları (ağırlıklar toplamı 100; en fazla bir is_control). Öğe: 0–10
variants[].idstringHayır
variants[].namestringEvetUzunluk: 0–60
variants[].weight_percentintegerEvetAralık: 1–99
variants[].contentobject | nullHayır
variants[].is_controlbooleanHayır
template_idstringHayır
template_versionintegerHayır
deliveryobjectHayır
delivery.timezone_modeenumHayırDeğerler: "immediate", "per_user_timezone", "optimized"
delivery.delivery_time_of_daystringHayır
delivery.throttle_per_minuteintegerHayır
delivery.ttlintegerHayır
delivery.priorityenumHayırDeğerler: 5, 10
delivery.collapse_idstringHayır
delivery.frequency_cap_exemptbooleanHayır
delivery.quiet_hours_exemptbooleanHayır
delivery.one_per_userbooleanHayır
recurrenceobject | nullHayır
recurrence.cronstringHayır
recurrence.untilstring (date-time) | nullHayır
recurrence.timezonestringHayır
send_atstring (date-time) | nullHayı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

AlanTürZorunluAçıklama
idstringEvet
app_idstringEvet
namestringEvet
labelsarray<string>Evet
categorystring | nullEvet
ab_testobjectEvet
ab_test.enabledbooleanHayır
ab_test.test_percentageintegerHayırAralık: 1–100
ab_test.winnerobjectHayır
ab_test.winner.modeenumEvetDeğerler: "manual", "auto"
ab_test.winner.metricenumEvetDeğerler: "open_rate", "click_rate", "conversion_rate"
ab_test.winner.evaluate_after_minutesintegerHayırAralık: 5–10080
ab_test.phaseenumHayırDeğerler: "testing", "winner_sent"
ab_test.winner_variant_idstringHayır
ab_test.decided_atstringHayır
ab_test.decided_bystringHayır
ab_test.significanceobjectHayır
ab_test.significance.p_valuenumberEvet
ab_test.significance.significantbooleanEvet
ab_test.significance.metricstringEvet
variantsarray<object>Evet
variants[].idstringEvet
variants[].namestringEvet
variants[].weight_percentintegerEvet
variants[].contentmap<string, any> | nullEvet
variants[].is_controlbooleanEvet
variants[].positionintegerEvet
typeenumEvetDeğerler: "one_time", "scheduled", "recurring", "automated", "transactional"
statusenumEvetDeğerler: "draft", "scheduled", "running", "paused", "completed", "cancelled", "failed"
audiencemap<string, any>Evet
contentmap<string, any>Evet
template_idstring | nullEvet
template_versioninteger | nullEvet
deliveryobjectEvet
delivery.timezone_modeenumHayırDeğerler: "immediate", "per_user_timezone", "optimized"
delivery.delivery_time_of_daystringHayır
delivery.throttle_per_minuteintegerHayırAralık: 1–1000000
delivery.ttlintegerHayırAralık: 60–2419200
delivery.priority5 | 10Hayır
delivery.collapse_idstringHayırUzunluk: 0–64
delivery.frequency_cap_exemptbooleanHayır
delivery.quiet_hours_exemptbooleanHayır
delivery.one_per_userbooleanHayır
recurrenceobject | nullEvet
approvalobjectEvet
approval.requiredbooleanEvet
approval.pending_actionenumHayırDeğerler: "send", "schedule"
approval.requested_bystringHayır
approval.requested_atstringHayır
approval.approved_bystringHayır
approval.approved_atstringHayır
approval.rejected_bystringHayır
approval.rejected_atstringHayır
statsobjectEvet
stats.runsintegerHayır
stats.targetedintegerHayır
stats.suppressedintegerHayır
stats.sentintegerHayır
stats.deliveredintegerHayır
stats.failedintegerHayır
stats.openedintegerHayır
stats.clickedintegerHayır
stats.convertedintegerHayır
stats.bouncedintegerHayır
stats.complainedintegerHayır
stats.unsubscribedintegerHayır
stats.sms_segmentsintegerHayır
send_atstring | nullEvet
next_run_atstring | nullEvet
last_run_atstring | nullEvet
run_countintegerEvet
errorstring | nullEvet
created_bystring | nullEvet
started_atstring | nullEvet
completed_atstring | nullEvet
created_atstringEvet
updated_atstringEvet
estimated_recipientsinteger | nullEvet

Ö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)

POST/v1/apps/{appId}/mcp/segment-draftsDene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı — kapsam mcp:write (admin her kapsamı içerir).

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"

İstek gövdesi (zorunlu)

AlanTürZorunluAçıklama
namestringEvetUzunluk: 2–100
descriptionstring | nullHayırUzunluk: 0–500
definitionobjectEvetFiltre AST: all/any/none grupları ve { field, op, value } koşulları (docs/plan/05 §5.7).
definition.allarray<object>Hayır
definition.anyarray<object>Hayır
definition.nonearray<object>Hayır
is_dynamicbooleanHayı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

AlanTürZorunluAçıklama
idstringEvet
app_idstringEvet
namestringEvet
descriptionstring | nullEvet
definitionmap<string, any>Evet
is_dynamicbooleanEvet
estimated_countinteger | nullEvet
estimated_atstring | nullEvet
created_bystring | nullEvet
created_atstringEvet
updated_atstringEvet

Ö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
}'

Bu sayfada