PushizoDocs
API referansı

Kullanıcılar ve abonelikler

Kullanıcılar ve abonelikler — 18 işlem (GET /v1/apps/{appId}/users, POST /v1/apps/{appId}/users, POST /v1/apps/{appId}/users/search, …). OpenAPI 3.1.0 sözleşmesinden üretilir.

Kullanıcı (end user) oluşturma/güncelleme, alias’lar, abonelikler (cihaz, e-posta, telefon), arama, KVKK/GDPR dışa aktarma ve silme, olay gönderimi.

Taban adres: https://api.pushizo.com · Etiket: users · Etkileşimli belge (Scalar)

İşlemler

YöntemYolİşlem
GET/v1/apps/{appId}/usersKullanıcı listesi
POST/v1/apps/{appId}/usersKullanıcı oluştur/güncelle (external_id ile, isteğe bağlı aboneliklerle)
POST/v1/apps/{appId}/users/searchSegment tanımı ile kullanıcı arama
GET/v1/apps/{appId}/users/by/{label}/{value}Alias ile kullanıcı (hs_id, external_id veya özel etiket)
PATCH/v1/apps/{appId}/users/by/{label}/{value}Tag/property merge-patch ve deltas
DELETE/v1/apps/{appId}/users/by/{label}/{value}Kullanıcıyı sil (abonelikler silinir, olaylar anonimleşir)
GET/v1/apps/{appId}/users/by/{label}/{value}/identityKullanıcının tüm kimlikleri (hs_id, external_id, özel alias'lar)
PATCH/v1/apps/{appId}/users/by/{label}/{value}/identityAlias ekle
GET/v1/apps/{appId}/users/by/{label}/{value}/exportKullanıcı verisini dışa aktar (KVKK/GDPR taşınabilirlik): profil, alias, abonelik, son olaylar
DELETE/v1/apps/{appId}/users/by/{label}/{value}/identity/{aliasLabel}Alias kaldır
POST/v1/apps/{appId}/users/by/{label}/{value}/subscriptionsKullanıcıya abonelik ekle
GET/v1/apps/{appId}/subscriptions/{subscriptionId}Abonelik detayı
PATCH/v1/apps/{appId}/subscriptions/{subscriptionId}Abonelik güncelle
DELETE/v1/apps/{appId}/subscriptions/{subscriptionId}Aboneliği sil
GET/v1/apps/{appId}/subscriptions/{subscriptionId}/user/identityAboneliğin sahibi kullanıcının kimlikleri
PATCH/v1/apps/{appId}/subscriptions_by_token/{tokenType}/{token}Token ile abonelik güncelle (token_type: ios_push, android_push, hms_push, web_push, email, sms veya OneSignal adları iOSPush, AndroidPush, HuaweiPush, ChromePush, FirefoxPush, SafariPush, Email, SMS)
POST/v1/apps/{appId}/subscriptions/{subscriptionId}/ownerAboneliği external_id ile kullanıcıya bağla
POST/v1/apps/{appId}/eventsToplu olay gönder (en fazla 500)

Ayrıntılar

Kullanıcı listesi

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

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
limitsorguintegerHayırVarsayılan: 50; Aralık: 1–20050
cursorsorgustringHayırUzunluk: 1–∞"eyJpZCI6Im1zZ18wMUpE…"
sortsorguenumHayırDeğerler: "last_active_at", "-last_active_at""last_active_at"
qsorgustringHayırUzunluk: 1–255"ayse"
tagsorgustringHayırUzunluk: 3–320"plan:pro"
last_active_aftersorgustring (date-time)Hayır"2026-10-17T09:00:00Z"
last_active_beforesorgustring (date-time)Hayır"2026-10-17T09:00:00Z"
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"

Yanıtlar

200 — Başarılı.

Şema: UserList

AlanTürZorunluAçıklama
dataarray<object>Evet
data[].idstringEvet
data[].app_idstringEvet
data[].external_idstring | nullEvet
data[].propertiesmap<string, any>Evet
data[].tagsmap<string, string>Evet
data[].first_seen_atstringEvet
data[].last_active_atstringEvet
data[].session_countintegerEvet
data[].usage_secondsintegerEvet
data[].merged_intostring | nullEvet
data[].created_atstringEvet
data[].updated_atstringEvet
data[].subscription_countintegerEvet
data[].channelsarray<enum>Evet
next_cursorstring | nullEvet
has_morebooleanEvet

Örnek yanıt:

{
  "data": [
    {
      "channels": [
        "ios_push"
      ],
      "tags": {
        "plan": "pro",
        "city": "Istanbul"
      },
      "properties": {
        "order_id": "1001"
      },
      "id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "external_id": "user_42",
      "first_seen_at": "örnek",
      "last_active_at": "örnek",
      "session_count": 1,
      "usage_seconds": 1,
      "merged_into": "örnek",
      "created_at": "örnek",
      "updated_at": "örnek",
      "subscription_count": 1
    }
  ],
  "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/users?limit=50" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY"

Kullanıcı oluştur/güncelle (external_id ile, isteğe bağlı aboneliklerle)

Kimlik doğrulama: API anahtarı (Authorization: Bearer hs_live_…).

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
Idempotency-KeybaşlıkstringHayırAynı anahtarla 24 saat içinde tekrarlanan istek aynı yanıtı döner."order-1001"
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"

İstek gövdesi (zorunlu)

Şema: UpsertUserDto

AlanTürZorunluAçıklama
identityobjectHayır
identity.external_idstringEvetUzunluk: 1–255
external_idstringHayırUzunluk: 1–255
propertiesmap<string, any>Hayır
tagsmap<string, string>Hayır
subscriptionsarray<object>HayırÖğe: 0–20
subscriptions[].channelenumEvetDeğerler: "ios_push", "android_push", "hms_push", "web_push", "email", "sms", "whatsapp", "rcs"
subscriptions[].tokenstringEvetUzunluk: 1–4096
subscriptions[].deviceobjectHayırVarsayılan: {}
subscriptions[].device.modelstringHayırUzunluk: 0–100
subscriptions[].device.osstringHayırUzunluk: 0–50
subscriptions[].device.os_versionstringHayırUzunluk: 0–50
subscriptions[].device.app_versionstring | nullHayır
subscriptions[].device.sdk_versionstringHayırUzunluk: 0–50
subscriptions[].device.sdk_platformstringHayırUzunluk: 0–50
subscriptions[].device.carrierstringHayırUzunluk: 0–100
subscriptions[].device.localestringHayırUzunluk: 0–20
subscriptions[].device.timezonestringHayırUzunluk: 0–64
subscriptions[].device.push_capablebooleanHayır
subscriptions[].device.push_environmentenumHayırDeğerler: "sandbox", "production"
subscriptions[].statusenumHayırDeğerler: "subscribed", "unsubscribed"
subscriptions[].opt_inobjectHayır
subscriptions[].opt_in.sourcestringEvetUzunluk: 1–100
subscriptions[].opt_in.atstring (date-time)Hayır

Örnek:

{
  "identity": {
    "external_id": "user_42"
  },
  "tags": {
    "plan": "pro",
    "city": "Istanbul"
  },
  "properties": {
    "order_id": "1001"
  },
  "subscriptions": [
    {
      "channel": "ios_push",
      "token": "d1f2e3…",
      "status": "subscribed",
      "device": {},
      "opt_in": {
        "source": "örnek",
        "at": "2026-10-17T09:00:00Z"
      }
    }
  ],
  "external_id": "user_42"
}

Yanıtlar

201 — Başarılı.

Şema: UserDetail

AlanTürZorunluAçıklama
idstringEvet
app_idstringEvet
external_idstring | nullEvet
propertiesmap<string, any>Evet
tagsmap<string, string>Evet
first_seen_atstringEvet
last_active_atstringEvet
session_countintegerEvet
usage_secondsintegerEvet
merged_intostring | nullEvet
created_atstringEvet
updated_atstringEvet
subscription_countintegerEvet
channelsarray<enum>Evet
aliasesarray<object>Evet
aliases[].labelstringEvet
aliases[].valuestringEvet
subscriptionsarray<object>Evet
subscriptions[].idstringEvet
subscriptions[].app_idstringEvet
subscriptions[].user_idstring | nullEvet
subscriptions[].channelenumEvetDeğerler: "ios_push", "android_push", "hms_push", "web_push", "email", "sms", "whatsapp", "rcs"
subscriptions[].tokenstringEvet
subscriptions[].statusenumEvetDeğerler: "subscribed", "unsubscribed", "invalid", "pending"
subscriptions[].unsubscribe_reasonenum | nullEvet
subscriptions[].deviceobjectEvet
subscriptions[].device.modelstringHayırUzunluk: 0–100
subscriptions[].device.osstringHayırUzunluk: 0–50
subscriptions[].device.os_versionstringHayırUzunluk: 0–50
subscriptions[].device.app_versionstring | nullHayır
subscriptions[].device.sdk_versionstringHayırUzunluk: 0–50
subscriptions[].device.sdk_platformstringHayırUzunluk: 0–50
subscriptions[].device.carrierstringHayırUzunluk: 0–100
subscriptions[].device.localestringHayırUzunluk: 0–20
subscriptions[].device.timezonestringHayırUzunluk: 0–64
subscriptions[].device.push_capablebooleanHayır
subscriptions[].device.push_environmentenumHayırDeğerler: "sandbox", "production"
subscriptions[].test_devicebooleanEvet
subscriptions[].test_device_namestring | nullEvet
subscriptions[].last_active_atstringEvet
subscriptions[].last_sent_atstring | nullEvet
subscriptions[].last_delivered_atstring | nullEvet
subscriptions[].opted_in_atstring | nullEvet
subscriptions[].opt_in_sourcestring | nullEvet
subscriptions[].unsubscribed_atstring | nullEvet
subscriptions[].locationobject | nullEvet
subscriptions[].created_atstringEvet

Örnek yanıt:

{
  "channels": [
    "ios_push"
  ],
  "tags": {
    "plan": "pro",
    "city": "Istanbul"
  },
  "properties": {
    "order_id": "1001"
  },
  "subscriptions": [
    {
      "channel": "ios_push",
      "status": "subscribed",
      "id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "token": "d1f2e3…",
      "unsubscribe_reason": "provider_rejected",
      "device": {
        "model": "örnek",
        "os": "örnek"
      },
      "test_device": true,
      "test_device_name": "örnek",
      "last_active_at": "örnek",
      "last_sent_at": "örnek",
      "last_delivered_at": "örnek",
      "opted_in_at": "örnek",
      "opt_in_source": "örnek",
      "unsubscribed_at": "örnek",
      "location": {
        "lat": 1.5,
        "lng": 1.5,
        "accuracy_m": 1.5,
        "geohash": "örnek",
        "updated_at": "örnek",
        "consent_at": "örnek"
      },
      "created_at": "örnek"
    }
  ],
  "id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "external_id": "user_42",
  "first_seen_at": "örnek",
  "last_active_at": "örnek",
  "session_count": 1,
  "usage_seconds": 1,
  "merged_into": "örnek",
  "created_at": "örnek",
  "updated_at": "örnek",
  "subscription_count": 1,
  "aliases": [
    {
      "label": "external_id",
      "value": "user_42"
    }
  ]
}

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/users" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY" \
  -H "Idempotency-Key: order-1001" \
  -H "Content-Type: application/json" \
  -d '{
  "identity": {
    "external_id": "user_42"
  },
  "tags": {
    "plan": "pro",
    "city": "Istanbul"
  },
  "properties": {
    "order_id": "1001"
  },
  "subscriptions": [
    {
      "channel": "ios_push",
      "token": "d1f2e3…",
      "status": "subscribed",
      "device": {},
      "opt_in": {
        "source": "örnek",
        "at": "2026-10-17T09:00:00Z"
      }
    }
  ],
  "external_id": "user_42"
}'

Segment tanımı ile kullanıcı arama

POST/v1/apps/{appId}/users/searchDene (etkileşimli API belgesi, yeni sekme)

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

Parametreler

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

İstek gövdesi (zorunlu)

AlanTürZorunluAçıklama
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
limitintegerHayırVarsayılan: 50; Aralık: 1–200
cursorstringHayır

Örnek:

{
  "definition": {
    "all": [
      {}
    ],
    "any": [
      {}
    ],
    "none": [
      {}
    ]
  },
  "limit": 50,
  "cursor": "eyJpZCI6Im1zZ18wMUpE…"
}

Yanıtlar

200 — Başarılı.

Şema: UserList

AlanTürZorunluAçıklama
dataarray<object>Evet
data[].idstringEvet
data[].app_idstringEvet
data[].external_idstring | nullEvet
data[].propertiesmap<string, any>Evet
data[].tagsmap<string, string>Evet
data[].first_seen_atstringEvet
data[].last_active_atstringEvet
data[].session_countintegerEvet
data[].usage_secondsintegerEvet
data[].merged_intostring | nullEvet
data[].created_atstringEvet
data[].updated_atstringEvet
data[].subscription_countintegerEvet
data[].channelsarray<enum>Evet
next_cursorstring | nullEvet
has_morebooleanEvet

Örnek yanıt:

{
  "data": [
    {
      "channels": [
        "ios_push"
      ],
      "tags": {
        "plan": "pro",
        "city": "Istanbul"
      },
      "properties": {
        "order_id": "1001"
      },
      "id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "external_id": "user_42",
      "first_seen_at": "örnek",
      "last_active_at": "örnek",
      "session_count": 1,
      "usage_seconds": 1,
      "merged_into": "örnek",
      "created_at": "örnek",
      "updated_at": "örnek",
      "subscription_count": 1
    }
  ],
  "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 POST "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/users/search" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "definition": {
    "all": [
      {}
    ],
    "any": [
      {}
    ],
    "none": [
      {}
    ]
  },
  "limit": 50,
  "cursor": "eyJpZCI6Im1zZ18wMUpE…"
}'

Alias ile kullanıcı (hs_id, external_id veya özel etiket)

GET/v1/apps/{appId}/users/by/{label}/{value}Dene (etkileşimli API belgesi, yeni sekme)

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

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
labelyolstringEvet"external_id"
valueyolstringEvet"user_42"
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"

Yanıtlar

200 — Başarılı.

Şema: UserDetail

AlanTürZorunluAçıklama
idstringEvet
app_idstringEvet
external_idstring | nullEvet
propertiesmap<string, any>Evet
tagsmap<string, string>Evet
first_seen_atstringEvet
last_active_atstringEvet
session_countintegerEvet
usage_secondsintegerEvet
merged_intostring | nullEvet
created_atstringEvet
updated_atstringEvet
subscription_countintegerEvet
channelsarray<enum>Evet
aliasesarray<object>Evet
aliases[].labelstringEvet
aliases[].valuestringEvet
subscriptionsarray<object>Evet
subscriptions[].idstringEvet
subscriptions[].app_idstringEvet
subscriptions[].user_idstring | nullEvet
subscriptions[].channelenumEvetDeğerler: "ios_push", "android_push", "hms_push", "web_push", "email", "sms", "whatsapp", "rcs"
subscriptions[].tokenstringEvet
subscriptions[].statusenumEvetDeğerler: "subscribed", "unsubscribed", "invalid", "pending"
subscriptions[].unsubscribe_reasonenum | nullEvet
subscriptions[].deviceobjectEvet
subscriptions[].device.modelstringHayırUzunluk: 0–100
subscriptions[].device.osstringHayırUzunluk: 0–50
subscriptions[].device.os_versionstringHayırUzunluk: 0–50
subscriptions[].device.app_versionstring | nullHayır
subscriptions[].device.sdk_versionstringHayırUzunluk: 0–50
subscriptions[].device.sdk_platformstringHayırUzunluk: 0–50
subscriptions[].device.carrierstringHayırUzunluk: 0–100
subscriptions[].device.localestringHayırUzunluk: 0–20
subscriptions[].device.timezonestringHayırUzunluk: 0–64
subscriptions[].device.push_capablebooleanHayır
subscriptions[].device.push_environmentenumHayırDeğerler: "sandbox", "production"
subscriptions[].test_devicebooleanEvet
subscriptions[].test_device_namestring | nullEvet
subscriptions[].last_active_atstringEvet
subscriptions[].last_sent_atstring | nullEvet
subscriptions[].last_delivered_atstring | nullEvet
subscriptions[].opted_in_atstring | nullEvet
subscriptions[].opt_in_sourcestring | nullEvet
subscriptions[].unsubscribed_atstring | nullEvet
subscriptions[].locationobject | nullEvet
subscriptions[].created_atstringEvet

Örnek yanıt:

{
  "channels": [
    "ios_push"
  ],
  "tags": {
    "plan": "pro",
    "city": "Istanbul"
  },
  "properties": {
    "order_id": "1001"
  },
  "subscriptions": [
    {
      "channel": "ios_push",
      "status": "subscribed",
      "id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "token": "d1f2e3…",
      "unsubscribe_reason": "provider_rejected",
      "device": {
        "model": "örnek",
        "os": "örnek"
      },
      "test_device": true,
      "test_device_name": "örnek",
      "last_active_at": "örnek",
      "last_sent_at": "örnek",
      "last_delivered_at": "örnek",
      "opted_in_at": "örnek",
      "opt_in_source": "örnek",
      "unsubscribed_at": "örnek",
      "location": {
        "lat": 1.5,
        "lng": 1.5,
        "accuracy_m": 1.5,
        "geohash": "örnek",
        "updated_at": "örnek",
        "consent_at": "örnek"
      },
      "created_at": "örnek"
    }
  ],
  "id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "external_id": "user_42",
  "first_seen_at": "örnek",
  "last_active_at": "örnek",
  "session_count": 1,
  "usage_seconds": 1,
  "merged_into": "örnek",
  "created_at": "örnek",
  "updated_at": "örnek",
  "subscription_count": 1,
  "aliases": [
    {
      "label": "external_id",
      "value": "user_42"
    }
  ]
}

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/users/by/external_id/user_42" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY"

Tag/property merge-patch ve deltas

PATCH/v1/apps/{appId}/users/by/{label}/{value}Dene (etkileşimli API belgesi, yeni sekme)

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

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
labelyolstringEvet"external_id"
valueyolstringEvet"user_42"
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"

İstek gövdesi (zorunlu)

Şema: PatchUserDto

AlanTürZorunluAçıklama
propertiesmap<string, any>Hayır
tagsmap<string, string | null>Hayır
deltasobjectHayır
deltas.session_countintegerHayırAralık: -1000000–1000000
deltas.session_timeintegerHayırAralık: 0–31536000
deltas.purchasesarray<object>HayırÖğe: 0–100
deltas.purchases[].skustringEvetUzunluk: 1–100
deltas.purchases[].amountnumberEvetAralık: 0–∞
deltas.purchases[].isostringHayırUzunluk: 3–3
deltas.purchases[].countintegerHayırVarsayılan: 1; Aralık: 1–1000

Örnek:

{
  "tags": {
    "plan": "pro",
    "city": "Istanbul"
  },
  "properties": {
    "order_id": "1001"
  },
  "deltas": {
    "session_count": 1,
    "session_time": 1,
    "purchases": [
      {
        "sku": "örnek",
        "amount": 149.9,
        "iso": "örnek"
      }
    ]
  }
}

Yanıtlar

200 — Başarılı.

Şema: UserDetail

AlanTürZorunluAçıklama
idstringEvet
app_idstringEvet
external_idstring | nullEvet
propertiesmap<string, any>Evet
tagsmap<string, string>Evet
first_seen_atstringEvet
last_active_atstringEvet
session_countintegerEvet
usage_secondsintegerEvet
merged_intostring | nullEvet
created_atstringEvet
updated_atstringEvet
subscription_countintegerEvet
channelsarray<enum>Evet
aliasesarray<object>Evet
aliases[].labelstringEvet
aliases[].valuestringEvet
subscriptionsarray<object>Evet
subscriptions[].idstringEvet
subscriptions[].app_idstringEvet
subscriptions[].user_idstring | nullEvet
subscriptions[].channelenumEvetDeğerler: "ios_push", "android_push", "hms_push", "web_push", "email", "sms", "whatsapp", "rcs"
subscriptions[].tokenstringEvet
subscriptions[].statusenumEvetDeğerler: "subscribed", "unsubscribed", "invalid", "pending"
subscriptions[].unsubscribe_reasonenum | nullEvet
subscriptions[].deviceobjectEvet
subscriptions[].device.modelstringHayırUzunluk: 0–100
subscriptions[].device.osstringHayırUzunluk: 0–50
subscriptions[].device.os_versionstringHayırUzunluk: 0–50
subscriptions[].device.app_versionstring | nullHayır
subscriptions[].device.sdk_versionstringHayırUzunluk: 0–50
subscriptions[].device.sdk_platformstringHayırUzunluk: 0–50
subscriptions[].device.carrierstringHayırUzunluk: 0–100
subscriptions[].device.localestringHayırUzunluk: 0–20
subscriptions[].device.timezonestringHayırUzunluk: 0–64
subscriptions[].device.push_capablebooleanHayır
subscriptions[].device.push_environmentenumHayırDeğerler: "sandbox", "production"
subscriptions[].test_devicebooleanEvet
subscriptions[].test_device_namestring | nullEvet
subscriptions[].last_active_atstringEvet
subscriptions[].last_sent_atstring | nullEvet
subscriptions[].last_delivered_atstring | nullEvet
subscriptions[].opted_in_atstring | nullEvet
subscriptions[].opt_in_sourcestring | nullEvet
subscriptions[].unsubscribed_atstring | nullEvet
subscriptions[].locationobject | nullEvet
subscriptions[].created_atstringEvet

Örnek yanıt:

{
  "channels": [
    "ios_push"
  ],
  "tags": {
    "plan": "pro",
    "city": "Istanbul"
  },
  "properties": {
    "order_id": "1001"
  },
  "subscriptions": [
    {
      "channel": "ios_push",
      "status": "subscribed",
      "id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "token": "d1f2e3…",
      "unsubscribe_reason": "provider_rejected",
      "device": {
        "model": "örnek",
        "os": "örnek"
      },
      "test_device": true,
      "test_device_name": "örnek",
      "last_active_at": "örnek",
      "last_sent_at": "örnek",
      "last_delivered_at": "örnek",
      "opted_in_at": "örnek",
      "opt_in_source": "örnek",
      "unsubscribed_at": "örnek",
      "location": {
        "lat": 1.5,
        "lng": 1.5,
        "accuracy_m": 1.5,
        "geohash": "örnek",
        "updated_at": "örnek",
        "consent_at": "örnek"
      },
      "created_at": "örnek"
    }
  ],
  "id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "external_id": "user_42",
  "first_seen_at": "örnek",
  "last_active_at": "örnek",
  "session_count": 1,
  "usage_seconds": 1,
  "merged_into": "örnek",
  "created_at": "örnek",
  "updated_at": "örnek",
  "subscription_count": 1,
  "aliases": [
    {
      "label": "external_id",
      "value": "user_42"
    }
  ]
}

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 PATCH "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/users/by/external_id/user_42" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "tags": {
    "plan": "pro",
    "city": "Istanbul"
  },
  "properties": {
    "order_id": "1001"
  },
  "deltas": {
    "session_count": 1,
    "session_time": 1,
    "purchases": [
      {
        "sku": "örnek",
        "amount": 149.9,
        "iso": "örnek"
      }
    ]
  }
}'

Kullanıcıyı sil (abonelikler silinir, olaylar anonimleşir)

DELETE/v1/apps/{appId}/users/by/{label}/{value}Dene (etkileşimli API belgesi, yeni sekme)

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

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
labelyolstringEvet"external_id"
valueyolstringEvet"user_42"
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"

Yanıtlar

200 — Başarılı.

Şema: Ok

AlanTürZorunluAçıklama
oktrueEvet

Örnek yanıt:

{
  "ok": 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 DELETE "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/users/by/external_id/user_42" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY"

Kullanıcının tüm kimlikleri (hs_id, external_id, özel alias'lar)

GET/v1/apps/{appId}/users/by/{label}/{value}/identityDene (etkileşimli API belgesi, yeni sekme)

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

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
labelyolstringEvet"external_id"
valueyolstringEvet"user_42"
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"

Yanıtlar

200 — Başarılı.

Şema: UserIdentity

AlanTürZorunluAçıklama
identitymap<string, string>Evet

Örnek yanıt:

{
  "identity": {
    "external_id": [
      "user_42"
    ]
  }
}

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/users/by/external_id/user_42/identity" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY"

Alias ekle

PATCH/v1/apps/{appId}/users/by/{label}/{value}/identityDene (etkileşimli API belgesi, yeni sekme)

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

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
labelyolstringEvet"external_id"
valueyolstringEvet"user_42"
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"

İstek gövdesi (zorunlu)

Şema: AddAliasDto

AlanTürZorunluAçıklama
identitymap<string, string>Evet

Örnek:

{
  "identity": {
    "external_id": [
      "user_42"
    ]
  }
}

Yanıtlar

200 — Başarılı.

Şema: UserDetail

AlanTürZorunluAçıklama
idstringEvet
app_idstringEvet
external_idstring | nullEvet
propertiesmap<string, any>Evet
tagsmap<string, string>Evet
first_seen_atstringEvet
last_active_atstringEvet
session_countintegerEvet
usage_secondsintegerEvet
merged_intostring | nullEvet
created_atstringEvet
updated_atstringEvet
subscription_countintegerEvet
channelsarray<enum>Evet
aliasesarray<object>Evet
aliases[].labelstringEvet
aliases[].valuestringEvet
subscriptionsarray<object>Evet
subscriptions[].idstringEvet
subscriptions[].app_idstringEvet
subscriptions[].user_idstring | nullEvet
subscriptions[].channelenumEvetDeğerler: "ios_push", "android_push", "hms_push", "web_push", "email", "sms", "whatsapp", "rcs"
subscriptions[].tokenstringEvet
subscriptions[].statusenumEvetDeğerler: "subscribed", "unsubscribed", "invalid", "pending"
subscriptions[].unsubscribe_reasonenum | nullEvet
subscriptions[].deviceobjectEvet
subscriptions[].device.modelstringHayırUzunluk: 0–100
subscriptions[].device.osstringHayırUzunluk: 0–50
subscriptions[].device.os_versionstringHayırUzunluk: 0–50
subscriptions[].device.app_versionstring | nullHayır
subscriptions[].device.sdk_versionstringHayırUzunluk: 0–50
subscriptions[].device.sdk_platformstringHayırUzunluk: 0–50
subscriptions[].device.carrierstringHayırUzunluk: 0–100
subscriptions[].device.localestringHayırUzunluk: 0–20
subscriptions[].device.timezonestringHayırUzunluk: 0–64
subscriptions[].device.push_capablebooleanHayır
subscriptions[].device.push_environmentenumHayırDeğerler: "sandbox", "production"
subscriptions[].test_devicebooleanEvet
subscriptions[].test_device_namestring | nullEvet
subscriptions[].last_active_atstringEvet
subscriptions[].last_sent_atstring | nullEvet
subscriptions[].last_delivered_atstring | nullEvet
subscriptions[].opted_in_atstring | nullEvet
subscriptions[].opt_in_sourcestring | nullEvet
subscriptions[].unsubscribed_atstring | nullEvet
subscriptions[].locationobject | nullEvet
subscriptions[].created_atstringEvet

Örnek yanıt:

{
  "channels": [
    "ios_push"
  ],
  "tags": {
    "plan": "pro",
    "city": "Istanbul"
  },
  "properties": {
    "order_id": "1001"
  },
  "subscriptions": [
    {
      "channel": "ios_push",
      "status": "subscribed",
      "id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "token": "d1f2e3…",
      "unsubscribe_reason": "provider_rejected",
      "device": {
        "model": "örnek",
        "os": "örnek"
      },
      "test_device": true,
      "test_device_name": "örnek",
      "last_active_at": "örnek",
      "last_sent_at": "örnek",
      "last_delivered_at": "örnek",
      "opted_in_at": "örnek",
      "opt_in_source": "örnek",
      "unsubscribed_at": "örnek",
      "location": {
        "lat": 1.5,
        "lng": 1.5,
        "accuracy_m": 1.5,
        "geohash": "örnek",
        "updated_at": "örnek",
        "consent_at": "örnek"
      },
      "created_at": "örnek"
    }
  ],
  "id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "external_id": "user_42",
  "first_seen_at": "örnek",
  "last_active_at": "örnek",
  "session_count": 1,
  "usage_seconds": 1,
  "merged_into": "örnek",
  "created_at": "örnek",
  "updated_at": "örnek",
  "subscription_count": 1,
  "aliases": [
    {
      "label": "external_id",
      "value": "user_42"
    }
  ]
}

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 PATCH "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/users/by/external_id/user_42/identity" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "identity": {
    "external_id": [
      "user_42"
    ]
  }
}'

Kullanıcı verisini dışa aktar (KVKK/GDPR taşınabilirlik): profil, alias, abonelik, son olaylar

GET/v1/apps/{appId}/users/by/{label}/{value}/exportDene (etkileşimli API belgesi, yeni sekme)

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

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
labelyolstringEvet"external_id"
valueyolstringEvet"user_42"
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"

Yanıtlar

200 — Başarılı.

Şema: UserExport

AlanTürZorunluAçıklama
exported_atstringEvet
userobjectEvet
user.idstringEvet
user.app_idstringEvet
user.external_idstring | nullEvet
user.propertiesmap<string, any>Evet
user.tagsmap<string, string>Evet
user.first_seen_atstringEvet
user.last_active_atstringEvet
user.session_countintegerEvet
user.usage_secondsintegerEvet
user.merged_intostring | nullEvet
user.created_atstringEvet
user.updated_atstringEvet
user.subscription_countintegerEvet
user.channelsarray<enum>Evet
user.aliasesarray<object>Evet
user.aliases[].labelstringEvet
user.aliases[].valuestringEvet
user.subscriptionsarray<object>Evet
user.subscriptions[].idstringEvet
user.subscriptions[].app_idstringEvet
user.subscriptions[].user_idstring | nullEvet
user.subscriptions[].channelenumEvetDeğerler: "ios_push", "android_push", "hms_push", "web_push", "email", "sms", "whatsapp", "rcs"
user.subscriptions[].tokenstringEvet
user.subscriptions[].statusenumEvetDeğerler: "subscribed", "unsubscribed", "invalid", "pending"
user.subscriptions[].unsubscribe_reasonenum | nullEvet
user.subscriptions[].deviceobjectEvet
user.subscriptions[].test_devicebooleanEvet
user.subscriptions[].test_device_namestring | nullEvet
user.subscriptions[].last_active_atstringEvet
user.subscriptions[].last_sent_atstring | nullEvet
user.subscriptions[].last_delivered_atstring | nullEvet
user.subscriptions[].opted_in_atstring | nullEvet
user.subscriptions[].opt_in_sourcestring | nullEvet
user.subscriptions[].unsubscribed_atstring | nullEvet
user.subscriptions[].locationobject | nullEvet
user.subscriptions[].created_atstringEvet
eventsarray<object>Evet
events[].idstringEvet
events[].user_idstring | nullEvet
events[].subscription_idstring | nullEvet
events[].namestringEvet
events[].propertiesmap<string, any>Evet
events[].valuenumber | nullEvet
events[].sourceenumEvetDeğerler: "sdk", "api", "system", "import"
events[].occurred_atstringEvet

Örnek yanıt:

{
  "events": [
    {
      "name": "purchase",
      "properties": {
        "order_id": "1001"
      },
      "id": "evt_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "subscription_id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "value": 149.9,
      "source": "sdk",
      "occurred_at": "örnek"
    }
  ],
  "exported_at": "örnek",
  "user": {
    "channels": [
      "ios_push"
    ],
    "tags": {
      "plan": "pro",
      "city": "Istanbul"
    },
    "properties": {
      "order_id": "1001"
    },
    "subscriptions": [
      {
        "channel": "ios_push",
        "status": "subscribed",
        "id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
        "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
        "user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
        "token": "d1f2e3…",
        "unsubscribe_reason": "provider_rejected",
        "device": {
          "model": "örnek"
        },
        "test_device": true,
        "test_device_name": "örnek",
        "last_active_at": "örnek",
        "last_sent_at": "örnek",
        "last_delivered_at": "örnek",
        "opted_in_at": "örnek",
        "opt_in_source": "örnek",
        "unsubscribed_at": "örnek",
        "location": {
          "lat": 1.5,
          "lng": 1.5,
          "accuracy_m": 1.5,
          "geohash": "örnek",
          "updated_at": "örnek",
          "consent_at": "örnek"
        },
        "created_at": "örnek"
      }
    ],
    "id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
    "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
    "external_id": "user_42",
    "first_seen_at": "örnek",
    "last_active_at": "örnek",
    "session_count": 1,
    "usage_seconds": 1,
    "merged_into": "örnek",
    "created_at": "örnek",
    "updated_at": "örnek",
    "subscription_count": 1,
    "aliases": [
      {
        "label": "external_id",
        "value": "user_42"
      }
    ]
  }
}

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/users/by/external_id/user_42/export" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY"

Alias kaldır

DELETE/v1/apps/{appId}/users/by/{label}/{value}/identity/{aliasLabel}Dene (etkileşimli API belgesi, yeni sekme)

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

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
labelyolstringEvet"external_id"
valueyolstringEvet"user_42"
aliasLabelyolstringEvet"crm_id"
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"

Yanıtlar

200 — Başarılı.

Şema: UserDetail

AlanTürZorunluAçıklama
idstringEvet
app_idstringEvet
external_idstring | nullEvet
propertiesmap<string, any>Evet
tagsmap<string, string>Evet
first_seen_atstringEvet
last_active_atstringEvet
session_countintegerEvet
usage_secondsintegerEvet
merged_intostring | nullEvet
created_atstringEvet
updated_atstringEvet
subscription_countintegerEvet
channelsarray<enum>Evet
aliasesarray<object>Evet
aliases[].labelstringEvet
aliases[].valuestringEvet
subscriptionsarray<object>Evet
subscriptions[].idstringEvet
subscriptions[].app_idstringEvet
subscriptions[].user_idstring | nullEvet
subscriptions[].channelenumEvetDeğerler: "ios_push", "android_push", "hms_push", "web_push", "email", "sms", "whatsapp", "rcs"
subscriptions[].tokenstringEvet
subscriptions[].statusenumEvetDeğerler: "subscribed", "unsubscribed", "invalid", "pending"
subscriptions[].unsubscribe_reasonenum | nullEvet
subscriptions[].deviceobjectEvet
subscriptions[].device.modelstringHayırUzunluk: 0–100
subscriptions[].device.osstringHayırUzunluk: 0–50
subscriptions[].device.os_versionstringHayırUzunluk: 0–50
subscriptions[].device.app_versionstring | nullHayır
subscriptions[].device.sdk_versionstringHayırUzunluk: 0–50
subscriptions[].device.sdk_platformstringHayırUzunluk: 0–50
subscriptions[].device.carrierstringHayırUzunluk: 0–100
subscriptions[].device.localestringHayırUzunluk: 0–20
subscriptions[].device.timezonestringHayırUzunluk: 0–64
subscriptions[].device.push_capablebooleanHayır
subscriptions[].device.push_environmentenumHayırDeğerler: "sandbox", "production"
subscriptions[].test_devicebooleanEvet
subscriptions[].test_device_namestring | nullEvet
subscriptions[].last_active_atstringEvet
subscriptions[].last_sent_atstring | nullEvet
subscriptions[].last_delivered_atstring | nullEvet
subscriptions[].opted_in_atstring | nullEvet
subscriptions[].opt_in_sourcestring | nullEvet
subscriptions[].unsubscribed_atstring | nullEvet
subscriptions[].locationobject | nullEvet
subscriptions[].created_atstringEvet

Örnek yanıt:

{
  "channels": [
    "ios_push"
  ],
  "tags": {
    "plan": "pro",
    "city": "Istanbul"
  },
  "properties": {
    "order_id": "1001"
  },
  "subscriptions": [
    {
      "channel": "ios_push",
      "status": "subscribed",
      "id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "token": "d1f2e3…",
      "unsubscribe_reason": "provider_rejected",
      "device": {
        "model": "örnek",
        "os": "örnek"
      },
      "test_device": true,
      "test_device_name": "örnek",
      "last_active_at": "örnek",
      "last_sent_at": "örnek",
      "last_delivered_at": "örnek",
      "opted_in_at": "örnek",
      "opt_in_source": "örnek",
      "unsubscribed_at": "örnek",
      "location": {
        "lat": 1.5,
        "lng": 1.5,
        "accuracy_m": 1.5,
        "geohash": "örnek",
        "updated_at": "örnek",
        "consent_at": "örnek"
      },
      "created_at": "örnek"
    }
  ],
  "id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "external_id": "user_42",
  "first_seen_at": "örnek",
  "last_active_at": "örnek",
  "session_count": 1,
  "usage_seconds": 1,
  "merged_into": "örnek",
  "created_at": "örnek",
  "updated_at": "örnek",
  "subscription_count": 1,
  "aliases": [
    {
      "label": "external_id",
      "value": "user_42"
    }
  ]
}

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 DELETE "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/users/by/external_id/user_42/identity/crm_id" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY"

Kullanıcıya abonelik ekle

POST/v1/apps/{appId}/users/by/{label}/{value}/subscriptionsDene (etkileşimli API belgesi, yeni sekme)

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

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
labelyolstringEvet"external_id"
valueyolstringEvet"user_42"
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"

İstek gövdesi (zorunlu)

Şema: AddSubscriptionDto

AlanTürZorunluAçıklama
channelenumEvetDeğerler: "ios_push", "android_push", "hms_push", "web_push", "email", "sms", "whatsapp", "rcs"
tokenstringEvetUzunluk: 1–4096
deviceobjectHayırVarsayılan: {}
device.modelstringHayırUzunluk: 0–100
device.osstringHayırUzunluk: 0–50
device.os_versionstringHayırUzunluk: 0–50
device.app_versionstring | nullHayır
device.sdk_versionstringHayırUzunluk: 0–50
device.sdk_platformstringHayırUzunluk: 0–50
device.carrierstringHayırUzunluk: 0–100
device.localestringHayırUzunluk: 0–20
device.timezonestringHayırUzunluk: 0–64
device.push_capablebooleanHayır
device.push_environmentenumHayırDeğerler: "sandbox", "production"
statusenumHayırDeğerler: "subscribed", "unsubscribed"
opt_inobjectHayır
opt_in.sourcestringEvetUzunluk: 1–100
opt_in.atstring (date-time)Hayır

Örnek:

{
  "channel": "ios_push",
  "token": "d1f2e3…",
  "status": "subscribed",
  "device": {},
  "opt_in": {
    "source": "örnek",
    "at": "2026-10-17T09:00:00Z"
  }
}

Yanıtlar

201 — Başarılı.

Şema: Subscription

AlanTürZorunluAçıklama
idstringEvet
app_idstringEvet
user_idstring | nullEvet
channelenumEvetDeğerler: "ios_push", "android_push", "hms_push", "web_push", "email", "sms", "whatsapp", "rcs"
tokenstringEvet
statusenumEvetDeğerler: "subscribed", "unsubscribed", "invalid", "pending"
unsubscribe_reasonenum | nullEvet
deviceobjectEvet
device.modelstringHayırUzunluk: 0–100
device.osstringHayırUzunluk: 0–50
device.os_versionstringHayırUzunluk: 0–50
device.app_versionstring | nullHayır
device.sdk_versionstringHayırUzunluk: 0–50
device.sdk_platformstringHayırUzunluk: 0–50
device.carrierstringHayırUzunluk: 0–100
device.localestringHayırUzunluk: 0–20
device.timezonestringHayırUzunluk: 0–64
device.push_capablebooleanHayır
device.push_environmentenumHayırDeğerler: "sandbox", "production"
test_devicebooleanEvet
test_device_namestring | nullEvet
last_active_atstringEvet
last_sent_atstring | nullEvet
last_delivered_atstring | nullEvet
opted_in_atstring | nullEvet
opt_in_sourcestring | nullEvet
unsubscribed_atstring | nullEvet
locationobject | nullEvet
created_atstringEvet

Örnek yanıt:

{
  "channel": "ios_push",
  "status": "subscribed",
  "id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "token": "d1f2e3…",
  "unsubscribe_reason": "provider_rejected",
  "device": {
    "model": "örnek",
    "os": "örnek",
    "os_version": "örnek",
    "app_version": "örnek"
  },
  "test_device": true,
  "test_device_name": "örnek",
  "last_active_at": "örnek",
  "last_sent_at": "örnek",
  "last_delivered_at": "örnek",
  "opted_in_at": "örnek",
  "opt_in_source": "örnek",
  "unsubscribed_at": "örnek",
  "location": {
    "lat": 1.5,
    "lng": 1.5,
    "accuracy_m": 1.5,
    "geohash": "örnek",
    "updated_at": "örnek",
    "consent_at": "örnek"
  },
  "created_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/users/by/external_id/user_42/subscriptions" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "channel": "ios_push",
  "token": "d1f2e3…",
  "status": "subscribed",
  "device": {},
  "opt_in": {
    "source": "örnek",
    "at": "2026-10-17T09:00:00Z"
  }
}'

Abonelik detayı

GET/v1/apps/{appId}/subscriptions/{subscriptionId}Dene (etkileşimli API belgesi, yeni sekme)

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

Parametreler

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

Yanıtlar

200 — Başarılı.

Şema: Subscription

AlanTürZorunluAçıklama
idstringEvet
app_idstringEvet
user_idstring | nullEvet
channelenumEvetDeğerler: "ios_push", "android_push", "hms_push", "web_push", "email", "sms", "whatsapp", "rcs"
tokenstringEvet
statusenumEvetDeğerler: "subscribed", "unsubscribed", "invalid", "pending"
unsubscribe_reasonenum | nullEvet
deviceobjectEvet
device.modelstringHayırUzunluk: 0–100
device.osstringHayırUzunluk: 0–50
device.os_versionstringHayırUzunluk: 0–50
device.app_versionstring | nullHayır
device.sdk_versionstringHayırUzunluk: 0–50
device.sdk_platformstringHayırUzunluk: 0–50
device.carrierstringHayırUzunluk: 0–100
device.localestringHayırUzunluk: 0–20
device.timezonestringHayırUzunluk: 0–64
device.push_capablebooleanHayır
device.push_environmentenumHayırDeğerler: "sandbox", "production"
test_devicebooleanEvet
test_device_namestring | nullEvet
last_active_atstringEvet
last_sent_atstring | nullEvet
last_delivered_atstring | nullEvet
opted_in_atstring | nullEvet
opt_in_sourcestring | nullEvet
unsubscribed_atstring | nullEvet
locationobject | nullEvet
created_atstringEvet

Örnek yanıt:

{
  "channel": "ios_push",
  "status": "subscribed",
  "id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "token": "d1f2e3…",
  "unsubscribe_reason": "provider_rejected",
  "device": {
    "model": "örnek",
    "os": "örnek",
    "os_version": "örnek",
    "app_version": "örnek"
  },
  "test_device": true,
  "test_device_name": "örnek",
  "last_active_at": "örnek",
  "last_sent_at": "örnek",
  "last_delivered_at": "örnek",
  "opted_in_at": "örnek",
  "opt_in_source": "örnek",
  "unsubscribed_at": "örnek",
  "location": {
    "lat": 1.5,
    "lng": 1.5,
    "accuracy_m": 1.5,
    "geohash": "örnek",
    "updated_at": "örnek",
    "consent_at": "örnek"
  },
  "created_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/subscriptions/sub_01JD3W5Q7X9K2M4N6P8R0T1V3W" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY"

Abonelik güncelle

PATCH/v1/apps/{appId}/subscriptions/{subscriptionId}Dene (etkileşimli API belgesi, yeni sekme)

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

Parametreler

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

İstek gövdesi (zorunlu)

Şema: PatchSubscriptionDto

AlanTürZorunluAçıklama
tokenstringHayırUzunluk: 1–4096
deviceobjectHayır
device.modelstringHayırUzunluk: 0–100
device.osstringHayırUzunluk: 0–50
device.os_versionstringHayırUzunluk: 0–50
device.app_versionstring | nullHayır
device.sdk_versionstringHayırUzunluk: 0–50
device.sdk_platformstringHayırUzunluk: 0–50
device.carrierstringHayırUzunluk: 0–100
device.localestringHayırUzunluk: 0–20
device.timezonestringHayırUzunluk: 0–64
device.push_capablebooleanHayır
device.push_environmentenumHayırDeğerler: "sandbox", "production"
statusenumHayırDeğerler: "subscribed", "unsubscribed"
test_devicebooleanHayır
test_device_namestringHayırUzunluk: 0–100

Örnek:

{
  "status": "subscribed",
  "token": "d1f2e3…",
  "device": {
    "model": "örnek",
    "os": "örnek",
    "os_version": "örnek"
  },
  "test_device": true,
  "test_device_name": "örnek"
}

Yanıtlar

200 — Başarılı.

Şema: Subscription

AlanTürZorunluAçıklama
idstringEvet
app_idstringEvet
user_idstring | nullEvet
channelenumEvetDeğerler: "ios_push", "android_push", "hms_push", "web_push", "email", "sms", "whatsapp", "rcs"
tokenstringEvet
statusenumEvetDeğerler: "subscribed", "unsubscribed", "invalid", "pending"
unsubscribe_reasonenum | nullEvet
deviceobjectEvet
device.modelstringHayırUzunluk: 0–100
device.osstringHayırUzunluk: 0–50
device.os_versionstringHayırUzunluk: 0–50
device.app_versionstring | nullHayır
device.sdk_versionstringHayırUzunluk: 0–50
device.sdk_platformstringHayırUzunluk: 0–50
device.carrierstringHayırUzunluk: 0–100
device.localestringHayırUzunluk: 0–20
device.timezonestringHayırUzunluk: 0–64
device.push_capablebooleanHayır
device.push_environmentenumHayırDeğerler: "sandbox", "production"
test_devicebooleanEvet
test_device_namestring | nullEvet
last_active_atstringEvet
last_sent_atstring | nullEvet
last_delivered_atstring | nullEvet
opted_in_atstring | nullEvet
opt_in_sourcestring | nullEvet
unsubscribed_atstring | nullEvet
locationobject | nullEvet
created_atstringEvet

Örnek yanıt:

{
  "channel": "ios_push",
  "status": "subscribed",
  "id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "token": "d1f2e3…",
  "unsubscribe_reason": "provider_rejected",
  "device": {
    "model": "örnek",
    "os": "örnek",
    "os_version": "örnek",
    "app_version": "örnek"
  },
  "test_device": true,
  "test_device_name": "örnek",
  "last_active_at": "örnek",
  "last_sent_at": "örnek",
  "last_delivered_at": "örnek",
  "opted_in_at": "örnek",
  "opt_in_source": "örnek",
  "unsubscribed_at": "örnek",
  "location": {
    "lat": 1.5,
    "lng": 1.5,
    "accuracy_m": 1.5,
    "geohash": "örnek",
    "updated_at": "örnek",
    "consent_at": "örnek"
  },
  "created_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 PATCH "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/subscriptions/sub_01JD3W5Q7X9K2M4N6P8R0T1V3W" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "subscribed",
  "token": "d1f2e3…",
  "device": {
    "model": "örnek",
    "os": "örnek",
    "os_version": "örnek"
  },
  "test_device": true,
  "test_device_name": "örnek"
}'

Aboneliği sil

DELETE/v1/apps/{appId}/subscriptions/{subscriptionId}Dene (etkileşimli API belgesi, yeni sekme)

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

Parametreler

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

Yanıtlar

200 — Başarılı.

Şema: Ok

AlanTürZorunluAçıklama
oktrueEvet

Örnek yanıt:

{
  "ok": 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 DELETE "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/subscriptions/sub_01JD3W5Q7X9K2M4N6P8R0T1V3W" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY"

Aboneliğin sahibi kullanıcının kimlikleri

GET/v1/apps/{appId}/subscriptions/{subscriptionId}/user/identityDene (etkileşimli API belgesi, yeni sekme)

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

Parametreler

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

Yanıtlar

200 — Başarılı.

Şema: UserIdentity

AlanTürZorunluAçıklama
identitymap<string, string>Evet

Örnek yanıt:

{
  "identity": {
    "external_id": [
      "user_42"
    ]
  }
}

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/subscriptions/sub_01JD3W5Q7X9K2M4N6P8R0T1V3W/user/identity" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY"

Token ile abonelik güncelle (token_type: ios_push, android_push, hms_push, web_push, email, sms veya OneSignal adları iOSPush, AndroidPush, HuaweiPush, ChromePush, FirefoxPush, SafariPush, Email, SMS)

PATCH/v1/apps/{appId}/subscriptions_by_token/{tokenType}/{token}Dene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı (Authorization: Bearer hs_live_…).

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
tokenTypeyolstringEvet"örnek"
tokenyolstringEvet"d1f2e3…"
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"

İstek gövdesi (zorunlu)

Şema: PatchSubscriptionDto

AlanTürZorunluAçıklama
tokenstringHayırUzunluk: 1–4096
deviceobjectHayır
device.modelstringHayırUzunluk: 0–100
device.osstringHayırUzunluk: 0–50
device.os_versionstringHayırUzunluk: 0–50
device.app_versionstring | nullHayır
device.sdk_versionstringHayırUzunluk: 0–50
device.sdk_platformstringHayırUzunluk: 0–50
device.carrierstringHayırUzunluk: 0–100
device.localestringHayırUzunluk: 0–20
device.timezonestringHayırUzunluk: 0–64
device.push_capablebooleanHayır
device.push_environmentenumHayırDeğerler: "sandbox", "production"
statusenumHayırDeğerler: "subscribed", "unsubscribed"
test_devicebooleanHayır
test_device_namestringHayırUzunluk: 0–100

Örnek:

{
  "status": "subscribed",
  "token": "d1f2e3…",
  "device": {
    "model": "örnek",
    "os": "örnek",
    "os_version": "örnek"
  },
  "test_device": true,
  "test_device_name": "örnek"
}

Yanıtlar

200 — Başarılı.

Şema: Subscription

AlanTürZorunluAçıklama
idstringEvet
app_idstringEvet
user_idstring | nullEvet
channelenumEvetDeğerler: "ios_push", "android_push", "hms_push", "web_push", "email", "sms", "whatsapp", "rcs"
tokenstringEvet
statusenumEvetDeğerler: "subscribed", "unsubscribed", "invalid", "pending"
unsubscribe_reasonenum | nullEvet
deviceobjectEvet
device.modelstringHayırUzunluk: 0–100
device.osstringHayırUzunluk: 0–50
device.os_versionstringHayırUzunluk: 0–50
device.app_versionstring | nullHayır
device.sdk_versionstringHayırUzunluk: 0–50
device.sdk_platformstringHayırUzunluk: 0–50
device.carrierstringHayırUzunluk: 0–100
device.localestringHayırUzunluk: 0–20
device.timezonestringHayırUzunluk: 0–64
device.push_capablebooleanHayır
device.push_environmentenumHayırDeğerler: "sandbox", "production"
test_devicebooleanEvet
test_device_namestring | nullEvet
last_active_atstringEvet
last_sent_atstring | nullEvet
last_delivered_atstring | nullEvet
opted_in_atstring | nullEvet
opt_in_sourcestring | nullEvet
unsubscribed_atstring | nullEvet
locationobject | nullEvet
created_atstringEvet

Örnek yanıt:

{
  "channel": "ios_push",
  "status": "subscribed",
  "id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "token": "d1f2e3…",
  "unsubscribe_reason": "provider_rejected",
  "device": {
    "model": "örnek",
    "os": "örnek",
    "os_version": "örnek",
    "app_version": "örnek"
  },
  "test_device": true,
  "test_device_name": "örnek",
  "last_active_at": "örnek",
  "last_sent_at": "örnek",
  "last_delivered_at": "örnek",
  "opted_in_at": "örnek",
  "opt_in_source": "örnek",
  "unsubscribed_at": "örnek",
  "location": {
    "lat": 1.5,
    "lng": 1.5,
    "accuracy_m": 1.5,
    "geohash": "örnek",
    "updated_at": "örnek",
    "consent_at": "örnek"
  },
  "created_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 PATCH "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/subscriptions_by_token/örnek/d1f2e3…" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "subscribed",
  "token": "d1f2e3…",
  "device": {
    "model": "örnek",
    "os": "örnek",
    "os_version": "örnek"
  },
  "test_device": true,
  "test_device_name": "örnek"
}'

Aboneliği external_id ile kullanıcıya bağla

POST/v1/apps/{appId}/subscriptions/{subscriptionId}/ownerDene (etkileşimli API belgesi, yeni sekme)

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

Parametreler

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

İstek gövdesi (zorunlu)

Şema: SetOwnerDto

AlanTürZorunluAçıklama
external_idstringEvetUzunluk: 1–255

Örnek:

{
  "external_id": "user_42"
}

Yanıtlar

200 — Başarılı.

Şema: Subscription

AlanTürZorunluAçıklama
idstringEvet
app_idstringEvet
user_idstring | nullEvet
channelenumEvetDeğerler: "ios_push", "android_push", "hms_push", "web_push", "email", "sms", "whatsapp", "rcs"
tokenstringEvet
statusenumEvetDeğerler: "subscribed", "unsubscribed", "invalid", "pending"
unsubscribe_reasonenum | nullEvet
deviceobjectEvet
device.modelstringHayırUzunluk: 0–100
device.osstringHayırUzunluk: 0–50
device.os_versionstringHayırUzunluk: 0–50
device.app_versionstring | nullHayır
device.sdk_versionstringHayırUzunluk: 0–50
device.sdk_platformstringHayırUzunluk: 0–50
device.carrierstringHayırUzunluk: 0–100
device.localestringHayırUzunluk: 0–20
device.timezonestringHayırUzunluk: 0–64
device.push_capablebooleanHayır
device.push_environmentenumHayırDeğerler: "sandbox", "production"
test_devicebooleanEvet
test_device_namestring | nullEvet
last_active_atstringEvet
last_sent_atstring | nullEvet
last_delivered_atstring | nullEvet
opted_in_atstring | nullEvet
opt_in_sourcestring | nullEvet
unsubscribed_atstring | nullEvet
locationobject | nullEvet
created_atstringEvet

Örnek yanıt:

{
  "channel": "ios_push",
  "status": "subscribed",
  "id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "token": "d1f2e3…",
  "unsubscribe_reason": "provider_rejected",
  "device": {
    "model": "örnek",
    "os": "örnek",
    "os_version": "örnek",
    "app_version": "örnek"
  },
  "test_device": true,
  "test_device_name": "örnek",
  "last_active_at": "örnek",
  "last_sent_at": "örnek",
  "last_delivered_at": "örnek",
  "opted_in_at": "örnek",
  "opt_in_source": "örnek",
  "unsubscribed_at": "örnek",
  "location": {
    "lat": 1.5,
    "lng": 1.5,
    "accuracy_m": 1.5,
    "geohash": "örnek",
    "updated_at": "örnek",
    "consent_at": "örnek"
  },
  "created_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/subscriptions/sub_01JD3W5Q7X9K2M4N6P8R0T1V3W/owner" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "external_id": "user_42"
}'

Toplu olay gönder (en fazla 500)

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

Parametreler

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

İstek gövdesi (zorunlu)

Şema: ApiEventsDto

AlanTürZorunluAçıklama
eventsarray<object>EvetÖğe: 1–500
events[].namestringEvetUzunluk: 1–100
events[].propertiesmap<string, any>HayırVarsayılan: {}
events[].valuenumberHayır
events[].occurred_atstring (date-time)Hayır
events[].event_idstringHayırUzunluk: 8–64
events[].subscription_idstringHayırUzunluk: 1–∞
events[].external_idstringHayırUzunluk: 1–255

Örnek:

{
  "events": [
    {
      "name": "purchase",
      "properties": {},
      "value": 149.9,
      "occurred_at": "2026-10-17T09:00:00Z"
    }
  ]
}

Yanıtlar

200 — Başarılı.

Şema: EventsAccepted

AlanTürZorunluAçıklama
acceptedintegerEvet

Örnek yanıt:

{
  "accepted": 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/events" \
  -H "Authorization: Bearer $PUSHIZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "events": [
    {
      "name": "purchase",
      "properties": {},
      "value": 149.9,
      "occurred_at": "2026-10-17T09:00:00Z"
    }
  ]
}'

Bu sayfada