Kategoriler ve tercihler
Kategoriler ve tercihler — 6 işlem (GET /v1/apps/{appId}/categories, POST /v1/apps/{appId}/categories, PATCH /v1/apps/{appId}/categories/{categoryId}, …). OpenAPI 3.1.0 sözleşmesinden üretilir.
Abonelik kategorileri ve kullanıcı bazında kanal/kategori tercihleri; tercih merkezi bu uçlarla beslenir.
Taban adres: https://api.pushizo.com · Etiket: preferences · Etkileşimli belge (Scalar)
İşlemler
| Yöntem | Yol | İşlem |
|---|---|---|
GET | /v1/apps/{appId}/categories | Mesaj kategorileri |
POST | /v1/apps/{appId}/categories | Kategori oluştur |
PATCH | /v1/apps/{appId}/categories/{categoryId} | Kategori güncelle |
DELETE | /v1/apps/{appId}/categories/{categoryId} | Kategori sil |
GET | /v1/apps/{appId}/users/by/{label}/{value}/preferences | Kullanıcının tercihleri (alias ile) |
PUT | /v1/apps/{appId}/users/by/{label}/{value}/preferences | Kullanıcı tercihlerini yaz (alias ile) |
Ayrıntılar
Mesaj kategorileri
Kimlik doğrulama: API anahtarı — kapsam users:read (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: MessageCategoryList
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
data | array<object> | Evet | |
data[].id | string | Evet | |
data[].app_id | string | Evet | |
data[].key | string | Evet | |
data[].name | map<string, string> | Evet | |
data[].description | map<string, string> | Evet | |
data[].channels | array<string> | null | Evet | |
data[].default_opted_in | boolean | Evet | |
data[].position | integer | Evet | |
data[].opted_out_users | integer | Evet | |
data[].created_at | string | Evet | |
data[].updated_at | string | Evet |
Örnek yanıt:
{
"data": [
{
"name": {
"key": "user_42"
},
"channels": [
"web_push"
],
"id": "cat_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"key": "key-2026-10",
"description": {
"key": "user_42"
},
"default_opted_in": true,
"position": 1,
"opted_out_users": 1,
"created_at": "örnek",
"updated_at": "örnek"
}
]
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X GET "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/categories" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"Kategori oluştur
Kimlik doğrulama: API anahtarı — kapsam admin (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
İstek gövdesi (zorunlu)
Şema: CreateCategoryDto
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
key | string | Evet | Uzunluk: 1–64 |
name | map<string, string> | Evet | |
description | map<string, string> | Hayır | |
channels | array<enum> | null | Hayır | |
default_opted_in | boolean | Hayır | |
position | integer | Hayır | Aralık: 0–1000 |
Örnek:
{
"name": {
"key": "user_42"
},
"key": "key-2026-10",
"channels": [
"ios_push"
],
"description": {
"key": "user_42"
},
"default_opted_in": true,
"position": 1
}Yanıtlar
201 — Başarılı.
Şema: MessageCategory
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | string | Evet | |
app_id | string | Evet | |
key | string | Evet | |
name | map<string, string> | Evet | |
description | map<string, string> | Evet | |
channels | array<string> | null | Evet | |
default_opted_in | boolean | Evet | |
position | integer | Evet | |
opted_out_users | integer | Evet | |
created_at | string | Evet | |
updated_at | string | Evet |
Örnek yanıt:
{
"name": {
"key": "user_42"
},
"channels": [
"web_push"
],
"id": "cat_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"key": "key-2026-10",
"description": {
"key": "user_42"
},
"default_opted_in": true,
"position": 1,
"opted_out_users": 1,
"created_at": "örnek",
"updated_at": "örnek"
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X POST "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/categories" \
-H "Authorization: Bearer $PUSHIZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": {
"key": "user_42"
},
"key": "key-2026-10",
"channels": [
"ios_push"
],
"description": {
"key": "user_42"
},
"default_opted_in": true,
"position": 1
}'Kategori güncelle
Kimlik doğrulama: API anahtarı — kapsam admin (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
categoryId | yol | string | Evet | "cat_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
İstek gövdesi (zorunlu)
Şema: UpdateCategoryDto
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
name | map<string, string> | Hayır | |
description | map<string, string> | Hayır | |
channels | array<enum> | null | Hayır | |
default_opted_in | boolean | Hayır | |
position | integer | Hayır | Aralık: 0–1000 |
Örnek:
{
"name": {
"key": "user_42"
},
"channels": [
"ios_push"
],
"description": {
"key": "user_42"
},
"default_opted_in": true,
"position": 1
}Yanıtlar
200 — Başarılı.
Şema: MessageCategory
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | string | Evet | |
app_id | string | Evet | |
key | string | Evet | |
name | map<string, string> | Evet | |
description | map<string, string> | Evet | |
channels | array<string> | null | Evet | |
default_opted_in | boolean | Evet | |
position | integer | Evet | |
opted_out_users | integer | Evet | |
created_at | string | Evet | |
updated_at | string | Evet |
Örnek yanıt:
{
"name": {
"key": "user_42"
},
"channels": [
"web_push"
],
"id": "cat_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"key": "key-2026-10",
"description": {
"key": "user_42"
},
"default_opted_in": true,
"position": 1,
"opted_out_users": 1,
"created_at": "örnek",
"updated_at": "örnek"
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X PATCH "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/categories/cat_01JD3W5Q7X9K2M4N6P8R0T1V3W" \
-H "Authorization: Bearer $PUSHIZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": {
"key": "user_42"
},
"channels": [
"ios_push"
],
"description": {
"key": "user_42"
},
"default_opted_in": true,
"position": 1
}'Kategori sil
Kimlik doğrulama: API anahtarı — kapsam admin (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
categoryId | yol | string | Evet | "cat_01JD3W5Q7X9K2M4N6P8R0T1V3W" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: Ok
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
ok | true | Evet |
Ö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/categories/cat_01JD3W5Q7X9K2M4N6P8R0T1V3W" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"Kullanıcının tercihleri (alias ile)
Kimlik doğrulama: API anahtarı — kapsam users:read (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
label | yol | string | Evet | "external_id" | |
value | yol | string | Evet | "user_42" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
Yanıtlar
200 — Başarılı.
Şema: UserPreferences
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
user_id | string | Evet | |
data | array<object> | Evet | |
data[].category | string | Evet | |
data[].channel | string | null | Evet | |
data[].opted_in | boolean | Evet | |
data[].explicit | boolean | Evet | |
data[].source | string | null | Evet | |
data[].updated_at | string | null | Evet | |
categories | array<object> | Evet | |
categories[].id | string | Evet | |
categories[].app_id | string | Evet | |
categories[].key | string | Evet | |
categories[].name | map<string, string> | Evet | |
categories[].description | map<string, string> | Evet | |
categories[].channels | array<string> | null | Evet | |
categories[].default_opted_in | boolean | Evet | |
categories[].position | integer | Evet | |
categories[].opted_out_users | integer | Evet | |
categories[].created_at | string | Evet | |
categories[].updated_at | string | Evet |
Örnek yanıt:
{
"data": [
{
"channel": "web_push",
"category": "örnek",
"opted_in": true,
"explicit": true,
"source": "örnek",
"updated_at": "örnek"
}
],
"user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"categories": [
{
"name": {
"key": "user_42"
},
"channels": [
"web_push"
],
"id": "cat_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"key": "key-2026-10",
"description": {
"key": "user_42"
},
"default_opted_in": true,
"position": 1,
"opted_out_users": 1,
"created_at": "örnek",
"updated_at": "örnek"
}
]
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X GET "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/users/by/external_id/user_42/preferences" \
-H "Authorization: Bearer $PUSHIZO_API_KEY"Kullanıcı tercihlerini yaz (alias ile)
Kimlik doğrulama: API anahtarı — kapsam users:write (admin her kapsamı içerir).
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama | Örnek |
|---|---|---|---|---|---|
label | yol | string | Evet | "external_id" | |
value | yol | string | Evet | "user_42" | |
appId | yol | string | Evet | "app_01JD3W5Q7X9K2M4N6P8R0T1V3W" |
İstek gövdesi (zorunlu)
Şema: SetPreferencesDto
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
preferences | array<object> | Evet | Öğe: 1–100 |
preferences[].category | string | Evet | Uzunluk: 1–64 |
preferences[].channel | enum | null | Hayır | |
preferences[].opted_in | boolean | Evet |
Örnek:
{
"preferences": [
{
"category": "örnek",
"opted_in": true,
"channel": "ios_push"
}
]
}Yanıtlar
200 — Başarılı.
Şema: UserPreferences
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
user_id | string | Evet | |
data | array<object> | Evet | |
data[].category | string | Evet | |
data[].channel | string | null | Evet | |
data[].opted_in | boolean | Evet | |
data[].explicit | boolean | Evet | |
data[].source | string | null | Evet | |
data[].updated_at | string | null | Evet | |
categories | array<object> | Evet | |
categories[].id | string | Evet | |
categories[].app_id | string | Evet | |
categories[].key | string | Evet | |
categories[].name | map<string, string> | Evet | |
categories[].description | map<string, string> | Evet | |
categories[].channels | array<string> | null | Evet | |
categories[].default_opted_in | boolean | Evet | |
categories[].position | integer | Evet | |
categories[].opted_out_users | integer | Evet | |
categories[].created_at | string | Evet | |
categories[].updated_at | string | Evet |
Örnek yanıt:
{
"data": [
{
"channel": "web_push",
"category": "örnek",
"opted_in": true,
"explicit": true,
"source": "örnek",
"updated_at": "örnek"
}
],
"user_id": "usr_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"categories": [
{
"name": {
"key": "user_42"
},
"channels": [
"web_push"
],
"id": "cat_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"app_id": "app_01JD3W5Q7X9K2M4N6P8R0T1V3W",
"key": "key-2026-10",
"description": {
"key": "user_42"
},
"default_opted_in": true,
"position": 1,
"opted_out_users": 1,
"created_at": "örnek",
"updated_at": "örnek"
}
]
}Hata yanıtları ortak zarfla döner (error.code, message, details, request_id): hata kataloğu. Tüm yanıtlar X-RateLimit-* başlıklarını taşır (hız sınırları).
Örnekler
curl -X PUT "https://api.pushizo.com/v1/apps/app_01JD3W5Q7X9K2M4N6P8R0T1V3W/users/by/external_id/user_42/preferences" \
-H "Authorization: Bearer $PUSHIZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"preferences": [
{
"category": "örnek",
"opted_in": true,
"channel": "ios_push"
}
]
}'Bildirim kutusu
Bildirim kutusu — 4 işlem (GET /v1/apps/{appId}/users/by/{label}/{value}/inbox, POST /v1/apps/{appId}/users/by/{label}/{value}/inbox/read-all, POST /v1/apps/{appId}/users/by/{label}/{value}/inbox/{itemId}/read, …). OpenAPI 3.1.0 sözleşmesinden üretilir.
Suppression list
Suppression list — 3 işlem (GET /v1/apps/{appId}/suppressions, POST /v1/apps/{appId}/suppressions, DELETE /v1/apps/{appId}/suppressions/{suppressionId}). OpenAPI 3.1.0 sözleşmesinden üretilir.