PushizoDocs
API referansı

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.

İstemci SDK’larının kullandığı uçlar. API anahtarı yerine sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT) ile çalışır; tarayıcı/cihazdan doğrudan çağrılır.

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

İşlemler

YöntemYolİşlem
GET/sdk/v1/apps/{appId}/configSDK için public app yapılandırması
POST/sdk/v1/apps/{appId}/subscriptionsCihaz/kanal kaydı (idempotent: aynı token tek abonelik)
PATCH/sdk/v1/apps/{appId}/subscriptions/{subscriptionId}Token yenileme, cihaz bilgisi, opt-in/out (sahiplik kanıtı: token_hash veya identity_hash)
DELETE/sdk/v1/apps/{appId}/subscriptions/{subscriptionId}Aboneliği sil (sahiplik kanıtı: token_hash veya identity_hash)
POST/sdk/v1/apps/{appId}/subscriptions/{subscriptionId}/loginCihazı external_id ile kullanıcıya bağla (anonim kullanıcı birleştirilir; sahiplik kanıtı: token_hash)
POST/sdk/v1/apps/{appId}/subscriptions/{subscriptionId}/logoutCihazı anonim yeni kullanıcıya taşı (sahiplik kanıtı: token_hash veya identity_hash)
PATCH/sdk/v1/apps/{appId}/users/{userId}Tag/property merge-patch (identity verification zorunluysa hash gerekir)
PATCH/sdk/v1/apps/{appId}/users/{userId}/identityKullanıcıya alias ekle (User.addAlias; identity verification zorunluysa hash)
DELETE/sdk/v1/apps/{appId}/users/{userId}/identity/{label}Kullanıcıdan alias kaldır (User.removeAlias)
POST/sdk/v1/apps/{appId}/sessionsOturum başlangıcı (süre yoksa) veya bitişi (süre ile; sahiplik kanıtı: token_hash veya identity_hash)
POST/sdk/v1/apps/{appId}/eventsToplu olay bildirimi (en fazla 100)
POST/sdk/v1/apps/{appId}/deliveries/{deliveryId}/receivedCihaz bildirimi aldı (confirmed delivery)
POST/sdk/v1/apps/{appId}/deliveries/{deliveryId}/dismissedBildirim kullanıcı tarafından kapatıldı (web notificationclose, Android silme)
POST/sdk/v1/apps/{appId}/deliveries/{deliveryId}/openedBildirim açıldı / düğmeye tıklandı
POST/sdk/v1/apps/{appId}/live-activities/tokensLive Activity belirteci kaydet (push-to-start veya etkinlik güncelleme)
POST/sdk/v1/apps/{appId}/live-activities/tokens/deleteLive Activity belirtecini sil (etkinlik bitti veya izin kaldırıldı)
POST/sdk/v1/apps/{appId}/errorsSDK hata raporları (en fazla 20; 7 gün saklanır)
GET/sdk/v1/apps/{appId}/in-appCihaz için gösterilebilecek in-app mesajlar (tetikleri SDK değerlendirir)
POST/sdk/v1/apps/{appId}/in-app/{messageId}/eventsIn-app gösterim / tıklama / kapatma
GET/sdk/v1/apps/{appId}/users/{userId}/inboxBildirim kutusu (abonelik kullanıcıya ait olmalı; gerekirse identity_hash)
POST/sdk/v1/apps/{appId}/users/{userId}/inbox/read-allTümünü okundu işaretle
POST/sdk/v1/apps/{appId}/users/{userId}/inbox/{itemId}/readOkundu işaretle
DELETE/sdk/v1/apps/{appId}/users/{userId}/inbox/{itemId}Kutudan kaldır (arşivle)
GET/sdk/v1/apps/{appId}/preferencesCihaz kullanıcısının tercihleri ve kategoriler
PUT/sdk/v1/apps/{appId}/preferencesCihaz kullanıcısının tercihlerini yaz

Ayrıntılar

SDK için public app yapılandırması

GET/sdk/v1/apps/{appId}/configDene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

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

Yanıtlar

200 — Başarılı.

Şema: SdkConfig

AlanTürZorunluAçıklama
app_idstringEvet
namestringEvet
api_urlstringEvet
cell_idstring | nullEvet
identity_verification_requiredbooleanEvet
identity_verification_modeenumEvetDeğerler: "hmac", "jwt", "both"
platformsobjectEvet
platforms.iosbooleanEvet
platforms.androidbooleanEvet
platforms.webbooleanEvet
platforms.emailbooleanEvet
platforms.smsbooleanEvet
webobjectEvet
web.vapid_public_keystring | nullEvet
web.allowed_originsarray<string>Evet
web.service_worker_pathstring | nullEvet
web.service_worker_scopestring | nullEvet
web.promptobject | nullEvet
web.welcome_notificationobject | nullEvet
web.click_behaviorobject | nullEvet
web.custom_linkobject | nullEvet
web.prompt_backoff_daysarray<integer> | nullEvet
sessionobjectEvet
session.timeout_secondsintegerEvet
in_appobjectEvet
in_app.min_interval_secondsintegerEvet
android_channelsarray<object>Evet
android_channels[].idstringEvet
android_channels[].namestringEvet
android_channels[].descriptionstring | nullEvet
android_channels[].importanceenumEvetDeğerler: "low", "default", "high", "urgent"
android_channels[].soundstring | nullEvet
android_channels[].vibrationbooleanEvet
android_channels[].groupstring | nullEvet
categoriesarray<object>Evet
categories[].keystringEvet
categories[].namemap<string, string>Evet
categories[].descriptionmap<string, string>Evet
categories[].channelsarray<string> | nullEvet
categories[].default_opted_inbooleanEvet

Örnek yanıt:

{
  "name": "Sipariş bildirimleri",
  "app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "api_url": "https://example.com/orders/1001",
  "cell_id": "id_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "identity_verification_required": true,
  "identity_verification_mode": "hmac",
  "platforms": {
    "ios": true,
    "android": true,
    "web": true,
    "email": true,
    "sms": true
  },
  "web": {
    "vapid_public_key": "örnek",
    "allowed_origins": [
      "örnek"
    ],
    "service_worker_path": "örnek",
    "service_worker_scope": "örnek",
    "prompt": {
      "type": "slidedown",
      "enabled": true,
      "collect": "push",
      "delaySeconds": 1
    },
    "welcome_notification": {
      "enabled": true,
      "url": "https://example.com/orders/1001",
      "texts": {
        "key": {
          "title": "Siparişiniz yola çıktı"
        }
      }
    },
    "click_behavior": {
      "match": "exact",
      "action": "navigate"
    },
    "custom_link": {
      "enabled": true,
      "style": "button",
      "size": "small",
      "color": {
        "button": "örnek"
      },
      "texts": {
        "key": {
          "subscribe": "örnek"
        }
      }
    },
    "prompt_backoff_days": [
      1
    ]
  },
  "session": {
    "timeout_seconds": 1
  },
  "in_app": {
    "min_interval_seconds": 1
  },
  "android_channels": [
    {
      "name": "Sipariş bildirimleri",
      "id": "id_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "description": "Sipariş durumu güncellemeleri",
      "importance": "low",
      "sound": "örnek",
      "vibration": true,
      "group": "orders"
    }
  ],
  "categories": [
    {
      "name": {
        "key": "user_42"
      },
      "channels": [
        "web_push"
      ],
      "key": "key-2026-10",
      "description": {
        "key": "user_42"
      },
      "default_opted_in": 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/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/config"

Cihaz/kanal kaydı (idempotent: aynı token tek abonelik)

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

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

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

İstek gövdesi (zorunlu)

Şema: SdkRegisterDto

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"
test_devicebooleanHayır
userobjectHayır
user.external_idstringHayırUzunluk: 1–255
user.identity_hashstringHayırUzunluk: 64–64
user.tagsmap<string, string>Hayır
user.propertiesmap<string, any>Hayır
user.subscription_idstringHayırUzunluk: 1–64
user.token_hashstringHayır
ownership_proofbooleanHayır

Örnek:

{
  "channel": "ios_push",
  "token": "d1f2e3…",
  "device": {},
  "test_device": true,
  "user": {
    "tags": {
      "plan": "pro",
      "city": "Istanbul"
    },
    "properties": {
      "order_id": "1001"
    },
    "external_id": "user_42"
  },
  "ownership_proof": true
}

Yanıtlar

200 — Başarılı.

Şema: SdkRegisterResult

AlanTürZorunluAçıklama
subscription_idstringEvet
user_idstringEvet
external_idstring | nullEvet
statusenumEvetDeğerler: "subscribed", "unsubscribed", "invalid", "pending"
createdbooleanEvet

Örnek yanıt:

{
  "status": "subscribed",
  "subscription_id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "external_id": "user_42",
  "created": 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/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/subscriptions" \
  -H "Content-Type: application/json" \
  -d '{
  "channel": "ios_push",
  "token": "d1f2e3…",
  "device": {},
  "test_device": true,
  "user": {
    "tags": {
      "plan": "pro",
      "city": "Istanbul"
    },
    "properties": {
      "order_id": "1001"
    },
    "external_id": "user_42"
  },
  "ownership_proof": true
}'

Token yenileme, cihaz bilgisi, opt-in/out (sahiplik kanıtı: token_hash veya identity_hash)

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

Kanıt, kayıtlı token'ın SHA-256 özeti (token_hash) veya abonelik kullanıcısının identity_hash'idir. Push aboneliğinde ownership_proof: true ile kaydolmuş ya da bir kez geçerli kanıt göndermiş abonelikte zorunludur; e-posta/SMS aboneliğinde her zaman zorunludur. Yanlış kanıt 403 (ADR-0016).

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

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

İstek gövdesi (zorunlu)

Şema: SdkSubscriptionPatchDto

AlanTürZorunluAçıklama
token_hashstringHayır
identity_hashstringHayırUzunluk: 64–64
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"
opted_inbooleanHayır
locationobject | nullHayır

Örnek:

{
  "token_hash": "sha256-hex…",
  "identity_hash": "3f6c…b1e9",
  "token": "d1f2e3…",
  "device": {
    "model": "örnek",
    "os": "örnek",
    "os_version": "örnek"
  },
  "opted_in": true
}

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/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/subscriptions/sub_01JD3W5Q7X9K2M4N6P8R0T1V3W" \
  -H "Content-Type: application/json" \
  -d '{
  "token_hash": "sha256-hex…",
  "identity_hash": "3f6c…b1e9",
  "token": "d1f2e3…",
  "device": {
    "model": "örnek",
    "os": "örnek",
    "os_version": "örnek"
  },
  "opted_in": true
}'

Aboneliği sil (sahiplik kanıtı: token_hash veya identity_hash)

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

Kanıt kuralları PATCH ile aynıdır (ADR-0016).

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"
subscriptionIdyolstringEvet"sub_01JD3W5Q7X9K2M4N6P8R0T1V3W"
token_hashsorgustringHayır"sha256-hex…"
identity_hashsorgustringHayırUzunluk: 64–64"3f6c…b1e9"

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/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/subscriptions/sub_01JD3W5Q7X9K2M4N6P8R0T1V3W"

Cihazı external_id ile kullanıcıya bağla (anonim kullanıcı birleştirilir; sahiplik kanıtı: token_hash)

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

Sahiplik kanıtı token_hash (kayıtlı token'ın SHA-256 özeti); identity_hash yalnızca abonelik zaten aynı external_id ile bağlıysa kanıt sayılır. Kurallar PATCH ile aynıdır (ADR-0016).

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

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

İstek gövdesi (zorunlu)

Şema: SdkLoginDto

AlanTürZorunluAçıklama
external_idstringEvetUzunluk: 1–255
identity_hashstringHayırUzunluk: 64–64
token_hashstringHayır

Örnek:

{
  "external_id": "user_42",
  "identity_hash": "3f6c…b1e9",
  "token_hash": "sha256-hex…"
}

Yanıtlar

200 — Başarılı.

Şema: SdkUserResult

AlanTürZorunluAçıklama
user_idstringEvet
external_idstring | nullEvet
tagsmap<string, string>Evet

Örnek yanıt:

{
  "tags": {
    "plan": "pro",
    "city": "Istanbul"
  },
  "user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "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 POST "https://api.pushizo.com/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/subscriptions/sub_01JD3W5Q7X9K2M4N6P8R0T1V3W/login" \
  -H "Content-Type: application/json" \
  -d '{
  "external_id": "user_42",
  "identity_hash": "3f6c…b1e9",
  "token_hash": "sha256-hex…"
}'

Cihazı anonim yeni kullanıcıya taşı (sahiplik kanıtı: token_hash veya identity_hash)

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

Kanıt kuralları PATCH ile aynıdır (ADR-0016); gövde boş gönderilebilir.

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

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

İstek gövdesi (isteğe bağlı)

Şema: SdkLogoutDto

AlanTürZorunluAçıklama
token_hashstringHayır
identity_hashstringHayırUzunluk: 64–64

Örnek:

{
  "token_hash": "sha256-hex…",
  "identity_hash": "3f6c…b1e9"
}

Yanıtlar

200 — Başarılı.

Şema: SdkUserResult

AlanTürZorunluAçıklama
user_idstringEvet
external_idstring | nullEvet
tagsmap<string, string>Evet

Örnek yanıt:

{
  "tags": {
    "plan": "pro",
    "city": "Istanbul"
  },
  "user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "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 POST "https://api.pushizo.com/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/subscriptions/sub_01JD3W5Q7X9K2M4N6P8R0T1V3W/logout" \
  -H "Content-Type: application/json" \
  -d '{
  "token_hash": "sha256-hex…",
  "identity_hash": "3f6c…b1e9"
}'

Tag/property merge-patch (identity verification zorunluysa hash gerekir)

PATCH/sdk/v1/apps/{appId}/users/{userId}Dene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

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

İstek gövdesi (zorunlu)

Şema: SdkUserPatchDto

AlanTürZorunluAçıklama
tagsmap<string, string | null>Hayır
propertiesmap<string, any>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
identity_hashstringHayırUzunluk: 64–64

Ö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"
      }
    ]
  },
  "identity_hash": "3f6c…b1e9"
}

Yanıtlar

200 — Başarılı.

Şema: SdkUserResult

AlanTürZorunluAçıklama
user_idstringEvet
external_idstring | nullEvet
tagsmap<string, string>Evet

Örnek yanıt:

{
  "tags": {
    "plan": "pro",
    "city": "Istanbul"
  },
  "user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "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 PATCH "https://api.pushizo.com/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/users/usr_01JD3W5Q7X9K2M4N6P8R0T1V3W" \
  -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"
      }
    ]
  },
  "identity_hash": "3f6c…b1e9"
}'

Kullanıcıya alias ekle (User.addAlias; identity verification zorunluysa hash)

PATCH/sdk/v1/apps/{appId}/users/{userId}/identityDene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

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

İstek gövdesi (zorunlu)

Şema: SdkIdentityDto

AlanTürZorunluAçıklama
identitymap<string, string>Evet
identity_hashstringHayırUzunluk: 64–64

Örnek:

{
  "identity": {
    "external_id": [
      "user_42"
    ]
  },
  "identity_hash": "3f6c…b1e9"
}

Yanıtlar

200 — Başarılı.

Şema: SdkIdentityResult

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 PATCH "https://api.pushizo.com/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/users/usr_01JD3W5Q7X9K2M4N6P8R0T1V3W/identity" \
  -H "Content-Type: application/json" \
  -d '{
  "identity": {
    "external_id": [
      "user_42"
    ]
  },
  "identity_hash": "3f6c…b1e9"
}'

Kullanıcıdan alias kaldır (User.removeAlias)

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

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"
userIdyolstringEvet"usr_01JD3W5Q7X9K2M4N6P8R0T1V3W"
labelyolstringEvet"external_id"
identity_hashsorgustringHayırUzunluk: 64–64"3f6c…b1e9"

Yanıtlar

200 — Başarılı.

Şema: SdkIdentityResult

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 DELETE "https://api.pushizo.com/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/users/usr_01JD3W5Q7X9K2M4N6P8R0T1V3W/identity/external_id"

Oturum başlangıcı (süre yoksa) veya bitişi (süre ile; sahiplik kanıtı: token_hash veya identity_hash)

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

subscription_id aboneliği için kanıt kuralları PATCH ile aynıdır (ADR-0016).

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

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

İstek gövdesi (zorunlu)

Şema: SdkSessionDto

AlanTürZorunluAçıklama
token_hashstringHayır
identity_hashstringHayırUzunluk: 64–64
subscription_idstringEvetUzunluk: 1–∞
duration_secondsintegerHayırAralık: 0–604800
app_versionstring | nullHayır
sdk_versionstringHayırUzunluk: 0–50

Örnek:

{
  "subscription_id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "token_hash": "sha256-hex…",
  "identity_hash": "3f6c…b1e9",
  "duration_seconds": 1,
  "app_version": "örnek",
  "sdk_version": "örnek"
}

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 POST "https://api.pushizo.com/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/sessions" \
  -H "Content-Type: application/json" \
  -d '{
  "subscription_id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "token_hash": "sha256-hex…",
  "identity_hash": "3f6c…b1e9",
  "duration_seconds": 1,
  "app_version": "örnek",
  "sdk_version": "örnek"
}'

Toplu olay bildirimi (en fazla 100)

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

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

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

İstek gövdesi (zorunlu)

Şema: SdkEventsDto

AlanTürZorunluAçıklama
eventsarray<object>EvetÖğe: 1–100
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
events[].token_hashstringHayır
events[].identity_hashstringHayırUzunluk: 64–64

Ö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/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/events" \
  -H "Content-Type: application/json" \
  -d '{
  "events": [
    {
      "name": "purchase",
      "properties": {},
      "value": 149.9,
      "occurred_at": "2026-10-17T09:00:00Z"
    }
  ]
}'

Cihaz bildirimi aldı (confirmed delivery)

POST/sdk/v1/apps/{appId}/deliveries/{deliveryId}/receivedDene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"
deliveryIdyolstringEvet"dlv_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 POST "https://api.pushizo.com/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/deliveries/dlv_01JD3W5Q7X9K2M4N6P8R0T1V3W/received"

Bildirim kullanıcı tarafından kapatıldı (web notificationclose, Android silme)

POST/sdk/v1/apps/{appId}/deliveries/{deliveryId}/dismissedDene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"
deliveryIdyolstringEvet"dlv_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 POST "https://api.pushizo.com/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/deliveries/dlv_01JD3W5Q7X9K2M4N6P8R0T1V3W/dismissed"

Bildirim açıldı / düğmeye tıklandı

POST/sdk/v1/apps/{appId}/deliveries/{deliveryId}/openedDene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

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

İstek gövdesi (zorunlu)

Şema: OpenedDto

AlanTürZorunluAçıklama
button_idstringHayırUzunluk: 0–64

Örnek:

{
  "button_id": "id_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 POST "https://api.pushizo.com/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/deliveries/dlv_01JD3W5Q7X9K2M4N6P8R0T1V3W/opened" \
  -H "Content-Type: application/json" \
  -d '{
  "button_id": "id_01JD3W5Q7X9K2M4N6P8R0T1V3W"
}'

Live Activity belirteci kaydet (push-to-start veya etkinlik güncelleme)

POST/sdk/v1/apps/{appId}/live-activities/tokensDene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

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

İstek gövdesi (zorunlu)

Şema: SdkLiveActivityTokenDto

AlanTürZorunluAçıklama
subscription_idstringEvetUzunluk: 1–64
activity_typestringEvetUzunluk: 1–100
kindenumEvetDeğerler: "push_to_start", "update"
activity_idstringHayırUzunluk: 1–100
tokenstringEvet
token_hashstringHayırUzunluk: 64–64
identity_hashstringHayırUzunluk: 64–64

Örnek:

{
  "subscription_id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "activity_type": "order_tracking",
  "kind": "push_to_start",
  "token": "d1f2e3…",
  "activity_id": "act_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "token_hash": "sha256-hex…",
  "identity_hash": "3f6c…b1e9"
}

Yanıtlar

200 — Başarılı.

Şema: LiveActivityTokenResult

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 POST "https://api.pushizo.com/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/live-activities/tokens" \
  -H "Content-Type: application/json" \
  -d '{
  "subscription_id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "activity_type": "order_tracking",
  "kind": "push_to_start",
  "token": "d1f2e3…",
  "activity_id": "act_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "token_hash": "sha256-hex…",
  "identity_hash": "3f6c…b1e9"
}'

Live Activity belirtecini sil (etkinlik bitti veya izin kaldırıldı)

POST/sdk/v1/apps/{appId}/live-activities/tokens/deleteDene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

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

İstek gövdesi (zorunlu)

Şema: SdkLiveActivityTokenDeleteDto

AlanTürZorunluAçıklama
subscription_idstringEvetUzunluk: 1–64
activity_typestringEvetUzunluk: 1–100
kindenumEvetDeğerler: "push_to_start", "update"
activity_idstringHayırUzunluk: 1–100
token_hashstringHayırUzunluk: 64–64
identity_hashstringHayırUzunluk: 64–64

Örnek:

{
  "subscription_id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "activity_type": "order_tracking",
  "kind": "push_to_start",
  "activity_id": "act_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "token_hash": "sha256-hex…",
  "identity_hash": "3f6c…b1e9"
}

Yanıtlar

200 — Başarılı.

Şema: LiveActivityTokenResult

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 POST "https://api.pushizo.com/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/live-activities/tokens/delete" \
  -H "Content-Type: application/json" \
  -d '{
  "subscription_id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "activity_type": "order_tracking",
  "kind": "push_to_start",
  "activity_id": "act_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "token_hash": "sha256-hex…",
  "identity_hash": "3f6c…b1e9"
}'

SDK hata raporları (en fazla 20; 7 gün saklanır)

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

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

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

İstek gövdesi (zorunlu)

Şema: SdkErrorsDto

AlanTürZorunluAçıklama
errorsarray<object>EvetÖğe: 1–20
errors[].levelenumHayırDeğerler: "error", "warning"; Varsayılan: "error"
errors[].platformenumEvetDeğerler: "web", "android", "ios", "flutter", "react_native", "node"
errors[].sdk_versionstringHayırUzunluk: 0–50
errors[].codestringHayırUzunluk: 0–100
errors[].messagestringEvetUzunluk: 1–2000
errors[].subscription_idstringHayırUzunluk: 0–64
errors[].contextmap<string, any>Hayır
errors[].occurred_atstring (date-time)Hayır

Örnek:

{
  "errors": [
    {
      "platform": "web",
      "message": "Takip bağlantısı içeride",
      "level": "error",
      "sdk_version": "örnek",
      "code": "örnek"
    }
  ]
}

Yanıtlar

200 — Başarılı.

Şema: SdkErrorsAccepted

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/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/errors" \
  -H "Content-Type: application/json" \
  -d '{
  "errors": [
    {
      "platform": "web",
      "message": "Takip bağlantısı içeride",
      "level": "error",
      "sdk_version": "örnek",
      "code": "örnek"
    }
  ]
}'

Cihaz için gösterilebilecek in-app mesajlar (tetikleri SDK değerlendirir)

GET/sdk/v1/apps/{appId}/in-appDene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"
subscription_idsorgustringEvetUzunluk: 1–64"sub_01JD3W5Q7X9K2M4N6P8R0T1V3W"
token_hashsorgustringHayır"sha256-hex…"
supportssorgustringHayırUzunluk: 0–200"değer"

Yanıtlar

200 — Başarılı.

Şema: SdkInAppList

AlanTürZorunluAçıklama
dataarray<object>Evet
data[].idstringEvet
data[].priorityintegerEvet
data[].triggersarray<object>Evet
data[].trigger_groupsarray<array<object>>Evet
data[].variant_idstring | nullEvet
data[].displayobjectEvet
data[].display.layoutenumEvetDeğerler: "modal", "banner_top", "banner_bottom", "fullscreen"
data[].display.background_colorstring | nullEvet
data[].display.text_colorstring | nullEvet
data[].display.dismissiblebooleanEvet
data[].display.auto_dismiss_secondsinteger | nullEvet
data[].display.content_typeenumEvetDeğerler: "blocks", "html"
data[].display.htmlstring | nullEvet
data[].display.html_heightinteger | nullEvet
data[].display.blocksarray<object>Evet
data[].remaining_impressionsintegerEvet
data[].min_interval_secondsintegerEvet
data[].stop_after_interactionbooleanEvet
data[].last_impression_atstring | nullEvet
data[].end_atstring | nullEvet
languagestringEvet

Örnek yanıt:

{
  "data": [
    {
      "id": "id_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "priority": 10,
      "triggers": [
        {
          "kind": "session_start"
        }
      ],
      "trigger_groups": [
        [
          {}
        ]
      ],
      "variant_id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "display": {
        "layout": "modal",
        "background_color": "örnek",
        "text_color": "örnek",
        "dismissible": true,
        "auto_dismiss_seconds": 1,
        "content_type": "blocks",
        "html": "örnek",
        "html_height": 1,
        "blocks": [
          {}
        ]
      },
      "remaining_impressions": 1,
      "min_interval_seconds": 1,
      "stop_after_interaction": true,
      "last_impression_at": "örnek",
      "end_at": "örnek"
    }
  ],
  "language": "tr"
}

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/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/in-app?subscription_id=sub_01JD3W5Q7X9K2M4N6P8R0T1V3W"

In-app gösterim / tıklama / kapatma

POST/sdk/v1/apps/{appId}/in-app/{messageId}/eventsDene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

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

İstek gövdesi (zorunlu)

Şema: SdkInAppEventDto

AlanTürZorunluAçıklama
subscription_idstringEvetUzunluk: 1–64
token_hashstringHayır
typeenumEvetDeğerler: "impression", "click", "dismiss"
button_idstringHayırUzunluk: 0–64
variant_idstringHayırUzunluk: 0–64

Örnek:

{
  "type": "impression",
  "subscription_id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "token_hash": "sha256-hex…",
  "button_id": "evt_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "variant_id": "var_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 POST "https://api.pushizo.com/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/in-app/msg_01JD3W5Q7X9K2M4N6P8R0T1V3W/events" \
  -H "Content-Type: application/json" \
  -d '{
  "type": "impression",
  "subscription_id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "token_hash": "sha256-hex…",
  "button_id": "evt_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "variant_id": "var_01JD3W5Q7X9K2M4N6P8R0T1V3W"
}'

Bildirim kutusu (abonelik kullanıcıya ait olmalı; gerekirse identity_hash)

GET/sdk/v1/apps/{appId}/users/{userId}/inboxDene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"
userIdyolstringEvet"usr_01JD3W5Q7X9K2M4N6P8R0T1V3W"
limitsorguintegerHayırVarsayılan: 50; Aralık: 1–20050
cursorsorgustringHayırUzunluk: 1–∞"eyJpZCI6Im1zZ18wMUpE…"
subscription_idsorgustringEvetUzunluk: 1–64"sub_01JD3W5Q7X9K2M4N6P8R0T1V3W"
identity_hashsorgustringHayırUzunluk: 0–128"3f6c…b1e9"
token_hashsorgustringHayır"sha256-hex…"

Yanıtlar

200 — Başarılı.

Şema: InboxPage

AlanTürZorunluAçıklama
dataarray<object>Evet
data[].idstringEvet
data[].message_idstring | nullEvet
data[].titlestring | nullEvet
data[].bodystring | nullEvet
data[].urlstring | nullEvet
data[].image_urlstring | nullEvet
data[].datamap<string, string>Evet
data[].readbooleanEvet
data[].read_atstring | nullEvet
data[].archived_atstring | nullEvet
data[].expires_atstring | nullEvet
data[].created_atstringEvet
unread_countintegerEvet
next_cursorstring | nullEvet
has_morebooleanEvet

Örnek yanıt:

{
  "data": [
    {
      "url": "https://example.com/orders/1001",
      "data": {
        "order_id": "1001"
      },
      "id": "id_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "message_id": "msg_01JD3W5Q7X9K2M4N6P8R0T1V3W",
      "title": "Siparişiniz yola çıktı",
      "body": "Takip bağlantısı içeride",
      "image_url": "https://example.com/orders/1001",
      "read": true,
      "read_at": "örnek",
      "archived_at": "örnek",
      "expires_at": "örnek",
      "created_at": "örnek"
    }
  ],
  "unread_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/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/users/usr_01JD3W5Q7X9K2M4N6P8R0T1V3W/inbox?limit=50&subscription_id=sub_01JD3W5Q7X9K2M4N6P8R0T1V3W"

Tümünü okundu işaretle

POST/sdk/v1/apps/{appId}/users/{userId}/inbox/read-allDene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

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

İstek gövdesi (zorunlu)

Şema: SdkInboxActionDto

AlanTürZorunluAçıklama
subscription_idstringEvetUzunluk: 1–64
identity_hashstringHayırUzunluk: 0–128
token_hashstringHayır

Örnek:

{
  "subscription_id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "identity_hash": "3f6c…b1e9",
  "token_hash": "sha256-hex…"
}

Yanıtlar

200 — Başarılı.

Şema: InboxReadAllResult

AlanTürZorunluAçıklama
updatedintegerEvet
unread_countintegerEvet

Örnek yanıt:

{
  "updated": 1,
  "unread_count": 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/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/users/usr_01JD3W5Q7X9K2M4N6P8R0T1V3W/inbox/read-all" \
  -H "Content-Type: application/json" \
  -d '{
  "subscription_id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "identity_hash": "3f6c…b1e9",
  "token_hash": "sha256-hex…"
}'

Okundu işaretle

POST/sdk/v1/apps/{appId}/users/{userId}/inbox/{itemId}/readDene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"
userIdyolstringEvet"usr_01JD3W5Q7X9K2M4N6P8R0T1V3W"
itemIdyolstringEvet"inb_01JD3W5Q7X9K2M4N6P8R0T1V3W"

İstek gövdesi (zorunlu)

Şema: SdkInboxActionDto

AlanTürZorunluAçıklama
subscription_idstringEvetUzunluk: 1–64
identity_hashstringHayırUzunluk: 0–128
token_hashstringHayır

Örnek:

{
  "subscription_id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "identity_hash": "3f6c…b1e9",
  "token_hash": "sha256-hex…"
}

Yanıtlar

200 — Başarılı.

Şema: InboxItem

AlanTürZorunluAçıklama
idstringEvet
message_idstring | nullEvet
titlestring | nullEvet
bodystring | nullEvet
urlstring | nullEvet
image_urlstring | nullEvet
datamap<string, string>Evet
readbooleanEvet
read_atstring | nullEvet
archived_atstring | nullEvet
expires_atstring | nullEvet
created_atstringEvet

Örnek yanıt:

{
  "url": "https://example.com/orders/1001",
  "data": {
    "order_id": "1001"
  },
  "id": "inb_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "message_id": "msg_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "title": "Siparişiniz yola çıktı",
  "body": "Takip bağlantısı içeride",
  "image_url": "https://example.com/orders/1001",
  "read": true,
  "read_at": "örnek",
  "archived_at": "örnek",
  "expires_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/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/users/usr_01JD3W5Q7X9K2M4N6P8R0T1V3W/inbox/inb_01JD3W5Q7X9K2M4N6P8R0T1V3W/read" \
  -H "Content-Type: application/json" \
  -d '{
  "subscription_id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "identity_hash": "3f6c…b1e9",
  "token_hash": "sha256-hex…"
}'

Kutudan kaldır (arşivle)

DELETE/sdk/v1/apps/{appId}/users/{userId}/inbox/{itemId}Dene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"
userIdyolstringEvet"usr_01JD3W5Q7X9K2M4N6P8R0T1V3W"
itemIdyolstringEvet"inb_01JD3W5Q7X9K2M4N6P8R0T1V3W"
subscription_idsorgustringEvetUzunluk: 1–64"sub_01JD3W5Q7X9K2M4N6P8R0T1V3W"
identity_hashsorgustringHayırUzunluk: 0–128"3f6c…b1e9"
token_hashsorgustringHayır"sha256-hex…"

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/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/users/usr_01JD3W5Q7X9K2M4N6P8R0T1V3W/inbox/inb_01JD3W5Q7X9K2M4N6P8R0T1V3W?subscription_id=sub_01JD3W5Q7X9K2M4N6P8R0T1V3W"

Cihaz kullanıcısının tercihleri ve kategoriler

GET/sdk/v1/apps/{appId}/preferencesDene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

AdKonumTürZorunluAçıklamaÖrnek
appIdyolstringEvet"app_01JD3W5Q7X9K2M4N6P8R0T1V3W"
subscription_idsorgustringEvetUzunluk: 1–64"sub_01JD3W5Q7X9K2M4N6P8R0T1V3W"
token_hashsorgustringHayır"sha256-hex…"
identity_hashsorgustringHayırUzunluk: 64–64"3f6c…b1e9"

Yanıtlar

200 — Başarılı.

Şema: SdkPreferences

AlanTürZorunluAçıklama
dataarray<object>Evet
data[].categorystringEvet
data[].channelstring | nullEvet
data[].opted_inbooleanEvet
data[].explicitbooleanEvet
data[].sourcestring | nullEvet
data[].updated_atstring | nullEvet
categoriesarray<object>Evet
categories[].keystringEvet
categories[].namemap<string, string>Evet
categories[].descriptionmap<string, string>Evet
categories[].channelsarray<string> | nullEvet
categories[].default_opted_inbooleanEvet

Örnek yanıt:

{
  "data": [
    {
      "channel": "web_push",
      "category": "örnek",
      "opted_in": true,
      "explicit": true,
      "source": "örnek",
      "updated_at": "örnek"
    }
  ],
  "categories": [
    {
      "name": {
        "key": "user_42"
      },
      "channels": [
        "web_push"
      ],
      "key": "key-2026-10",
      "description": {
        "key": "user_42"
      },
      "default_opted_in": 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/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/preferences?subscription_id=sub_01JD3W5Q7X9K2M4N6P8R0T1V3W"

Cihaz kullanıcısının tercihlerini yaz

PUT/sdk/v1/apps/{appId}/preferencesDene (etkileşimli API belgesi, yeni sekme)

Kimlik doğrulama: API anahtarı gerekmez; sahiplik kanıtı (token_hash) ve zorunluysa identity verification (identity_hash veya JWT). Ayrıntı: SDK kimliği.

Parametreler

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

İstek gövdesi (zorunlu)

Şema: SdkSetPreferencesDto

AlanTürZorunluAçıklama
preferencesarray<object>EvetÖğe: 1–100
preferences[].categorystringEvetUzunluk: 1–64
preferences[].channelenum | nullHayır
preferences[].opted_inbooleanEvet
subscription_idstringEvetUzunluk: 1–64
token_hashstringHayır
identity_hashstringHayırUzunluk: 64–64

Örnek:

{
  "preferences": [
    {
      "category": "örnek",
      "opted_in": true,
      "channel": "ios_push"
    }
  ],
  "subscription_id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "token_hash": "sha256-hex…",
  "identity_hash": "3f6c…b1e9"
}

Yanıtlar

200 — Başarılı.

Şema: SdkPreferences

AlanTürZorunluAçıklama
dataarray<object>Evet
data[].categorystringEvet
data[].channelstring | nullEvet
data[].opted_inbooleanEvet
data[].explicitbooleanEvet
data[].sourcestring | nullEvet
data[].updated_atstring | nullEvet
categoriesarray<object>Evet
categories[].keystringEvet
categories[].namemap<string, string>Evet
categories[].descriptionmap<string, string>Evet
categories[].channelsarray<string> | nullEvet
categories[].default_opted_inbooleanEvet

Örnek yanıt:

{
  "data": [
    {
      "channel": "web_push",
      "category": "örnek",
      "opted_in": true,
      "explicit": true,
      "source": "örnek",
      "updated_at": "örnek"
    }
  ],
  "categories": [
    {
      "name": {
        "key": "user_42"
      },
      "channels": [
        "web_push"
      ],
      "key": "key-2026-10",
      "description": {
        "key": "user_42"
      },
      "default_opted_in": 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 PUT "https://api.pushizo.com/sdk/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/preferences" \
  -H "Content-Type: application/json" \
  -d '{
  "preferences": [
    {
      "category": "örnek",
      "opted_in": true,
      "channel": "ios_push"
    }
  ],
  "subscription_id": "sub_01JD3W5Q7X9K2M4N6P8R0T1V3W",
  "token_hash": "sha256-hex…",
  "identity_hash": "3f6c…b1e9"
}'

Bu sayfada

İşlemlerAyrıntılarSDK için public app yapılandırması200 — Başarılı.Cihaz/kanal kaydı (idempotent: aynı token tek abonelik)200 — Başarılı.Token yenileme, cihaz bilgisi, opt-in/out (sahiplik kanıtı: token_hash veya identity_hash)200 — Başarılı.Aboneliği sil (sahiplik kanıtı: token_hash veya identity_hash)200 — Başarılı.Cihazı external_id ile kullanıcıya bağla (anonim kullanıcı birleştirilir; sahiplik kanıtı: token_hash)200 — Başarılı.Cihazı anonim yeni kullanıcıya taşı (sahiplik kanıtı: token_hash veya identity_hash)200 — Başarılı.Tag/property merge-patch (identity verification zorunluysa hash gerekir)200 — Başarılı.Kullanıcıya alias ekle (User.addAlias; identity verification zorunluysa hash)200 — Başarılı.Kullanıcıdan alias kaldır (User.removeAlias)200 — Başarılı.Oturum başlangıcı (süre yoksa) veya bitişi (süre ile; sahiplik kanıtı: token_hash veya identity_hash)200 — Başarılı.Toplu olay bildirimi (en fazla 100)200 — Başarılı.Cihaz bildirimi aldı (confirmed delivery)200 — Başarılı.Bildirim kullanıcı tarafından kapatıldı (web notificationclose, Android silme)200 — Başarılı.Bildirim açıldı / düğmeye tıklandı200 — Başarılı.Live Activity belirteci kaydet (push-to-start veya etkinlik güncelleme)200 — Başarılı.Live Activity belirtecini sil (etkinlik bitti veya izin kaldırıldı)200 — Başarılı.SDK hata raporları (en fazla 20; 7 gün saklanır)200 — Başarılı.Cihaz için gösterilebilecek in-app mesajlar (tetikleri SDK değerlendirir)200 — Başarılı.In-app gösterim / tıklama / kapatma200 — Başarılı.Bildirim kutusu (abonelik kullanıcıya ait olmalı; gerekirse identity_hash)200 — Başarılı.Tümünü okundu işaretle200 — Başarılı.Okundu işaretle200 — Başarılı.Kutudan kaldır (arşivle)200 — Başarılı.Cihaz kullanıcısının tercihleri ve kategoriler200 — Başarılı.Cihaz kullanıcısının tercihlerini yaz200 — Başarılı.