İçeriğe geç
Belgeler menüsüManagement API

Postlip Metrics Management API

Uygulama, kaynak ve olay şemasının otomasyonu (ör. CI'da şema senkronu, metrics pull) ve Query API (panelin metrik sorgusu, /v1/query). Kimlik: organizasyonun panelden oluşturduğu API anahtarı, Authorization: Bearer mk_…. Kapsamlar: management:read, management:write (okumayı da içerir), query:read (Query API: POST /v1/query, GET /v1/query/catalogue, huni sonuçları; reklam metrikleri dahil), leads:read (talep kutusu), ads:read (reklam hesapları, kampanyalar, bütçe, bağlantıların sağlığı), reports:read (kayıtlı raporlar, donmuş çıktıları ve PDF’leri, tahmin senaryoları), social:read (sosyal medya hesapları, özetin sayıları, gönderiler ve sayıları), messaging:read / messaging:write (Mailing & SMS listeleri, kampanyalar ve sonuçları; kişi, izin, bastırma), persons:read (analitik kişi ve hesap profilleri ve zaman çizelgeleri, panelin saklama kurallarıyla; dalga 16). Dalga 16’dan management:write ayrıca kaynakları ve anahtarlarını, olay tanımlarının durumunu ve silinmesini, kişi / hesap özellik tanımlarını yönetir ve üye davet eder (management:read: üyeler, roller, davetler). Hata gövdesi her uçta { "error": { "code", "message", "fields"?, "details"?, "traceId" } }; message isteğin dilinde (Accept-Language: tr, en). Liste uçları imleç sayfalamalıdır: ?cursor=&limit= (≤ 200), yanıt { items, nextCursor }.

Sürüm 1.0.0OpenAPI 3.1.1OpenAPI belgesini indir

Bu sayfa derleme sırasında depodaki docs/api/openapi/management.json dosyasından üretilir.

Sunucular

AdresAçıklama
https://api.metrics.exampleManagement API

Kimlik doğrulama

AdYöntemAçıklama
apiKeyBearer belirteci (mk_…)Organizasyonun Management API anahtarı (mk_ + 40 karakter).

Sağlık

1 uç

Sürecin ve veritabanı bağlantısının durumu.

GET/v1/health

Sağlık

Herkese açık: kimlik gerekmez.

Kimlik
Kimlik gerekmez

Yanıtlar

  • 200

    Başarılı.

    application/jsonobject

    Örnek · JSON
    {
      "status": "ok",
      "database": "ok"
    }
  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

Organizasyon

4 uç

Organizasyon ayarları, üyeler, davetler, roller.

GET/v1/invitations

Davetler

Bekleyen, kabul edilen, süresi dolan ve iptal edilen davetler. Kapsam: management:read.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:read.

Kimlik
apiKey
Gerekli kapsam
management:read

Parametreler

AdYerTipAçıklama
cursorsorgustring

Desen: ^[A-Za-z0-9_-]{1,512}$

limitsorguinteger

1–200 · Varsayılan: 50

statussorgustring

Değerler: pending, accepted, revoked, expired

Yanıtlar

  • 200

    Başarılı.

    application/jsonInvitationPage

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "email": "string",
          "role": {
            "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
            "key": "string",
            "name": "string",
            "builtIn": true
          },
          "appScope": "all",
          "appIds": [
            "01a1b249-9ed2-77e8-af53-0c99529e68cb"
          ],
          "status": "pending",
          "invitedBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "expiresAt": "2026-11-06T14:46:00+03:00",
          "acceptedAt": "2026-11-06T14:46:00+03:00",
          "revokedAt": "2026-11-06T14:46:00+03:00",
          "createdAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "nextCursor": "string"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

POST/v1/invitations

Üye davet et

Adrese yedi gün geçerli bir davet e-postası gider (davet edenin adı yazmaz). Anahtar yöneticinin (admin) haklarıyla davet eder: sahip rolü ve yöneticinin vermediği izinli rol verilemez (ROLE_NOT_GRANTABLE), uygulama kapsamı anahtarınkini aşamaz (APP_SCOPE_TOO_WIDE); etkin üye yeniden davet edilmez, adresin bekleyen davetleri yenisiyle değişir; planın üye sınırı (etkin üyeler ve bekleyen davetler) 403 PLAN_LIMIT_REACHED. Kapsam: management:write; denetim kaydıyla.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

İstek gövdesiGövde zorunlu

application/jsonCreateInvitationRequest

AlanTipAçıklama
emailzorunlustring

1–320 karakter

roleIdzorunlustring

Biçim: uuid

appScopestring

Değerler: all, selected · Varsayılan: all

appIdsstring[]

en çok 200 öğe · Varsayılan: []

Örnek · JSON
{
  "email": "string",
  "roleId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
  "appScope": "all",
  "appIds": []
}

Yanıtlar

  • 201

    Oluşturuldu.

    application/jsonInvitation

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "email": "string",
      "role": {
        "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "key": "string",
        "name": "string",
        "builtIn": true
      },
      "appScope": "all",
      "appIds": [
        "01a1b249-9ed2-77e8-af53-0c99529e68cb"
      ],
      "status": "pending",
      "invitedBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "expiresAt": "2026-11-06T14:46:00+03:00",
      "acceptedAt": "2026-11-06T14:46:00+03:00",
      "revokedAt": "2026-11-06T14:46:00+03:00",
      "createdAt": "2026-11-06T14:46:00+03:00"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/members

Üyeler

Organizasyonun üyeleri (panelde members.manage ile görülen liste: ad, e-posta, rol, uygulama kapsamı, durum, son giriş, iki adımlı doğrulama). Kapsam: management:read.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:read.

Kimlik
apiKey
Gerekli kapsam
management:read

Parametreler

AdYerTipAçıklama
cursorsorgustring

Desen: ^[A-Za-z0-9_-]{1,512}$

limitsorguinteger

1–200 · Varsayılan: 50

statussorgustring

Değerler: active, disabled

Yanıtlar

  • 200

    Başarılı.

    application/jsonMemberPage

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "user": {
            "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
            "email": "string",
            "name": "string"
          },
          "role": {
            "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
            "key": "string",
            "name": "string",
            "builtIn": true
          },
          "appScope": "all",
          "appIds": [
            "01a1b249-9ed2-77e8-af53-0c99529e68cb"
          ],
          "status": "active",
          "invitedBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "nextCursor": "string"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/roles

Roller

Yerleşik ve organizasyonun rolleri, izinleriyle (davet için roleId). Kapsam: management:read.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:read.

Kimlik
apiKey
Gerekli kapsam
management:read

Yanıtlar

  • 200

    Başarılı.

    application/jsonRoleList

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "key": "string",
          "name": "string",
          "description": "string",
          "permissions": [
            "string"
          ],
          "builtIn": true,
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00"
        }
      ]
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

Uygulamalar

4 uç

Ölçülen ürünler: saat dilimi, para birimi, doğrulama kipi, atıf ve saklama ayarları; test, iç ve bot trafiği işaretleyen trafik filtresi kuralları.

GET/v1/apps

Uygulamalar

Anahtarın uygulama kapsamındakiler.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:read.

Kimlik
apiKey
Gerekli kapsam
management:read

Parametreler

AdYerTipAçıklama
cursorsorgustring

Desen: ^[A-Za-z0-9_-]{1,512}$

limitsorguinteger

1–200 · Varsayılan: 50

statussorgustring

Değerler: active, archived

Yanıtlar

  • 200

    Başarılı.

    application/jsonAppPage

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "slug": "string",
          "name": "string",
          "description": "string",
          "websiteUrl": "string",
          "iconUrl": "string",
          "timezone": "string",
          "currency": "string",
          "schemaMode": "strict",
          "schemaRevision": 0,
          "attributionModel": "first_touch",
          "attributionWindowDays": 0,
          "conversionRoles": [
            "signup"
          ],
          "leadContactClicks": true,
          "retention": {
            "eventsMonths": 0,
            "interactionsMonths": 0,
            "sessionsMonths": 0
          },
          "internalIpRanges": [
            "string"
          ],
          "internalCookie": "string",
          "status": "active",
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "nextCursor": "string"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

POST/v1/apps

Uygulama ekle

Bütün uygulamalar kapsamlı anahtar gerekir.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

İstek gövdesiGövde zorunlu

application/jsonCreateAppRequest

AlanTipAçıklama
slugzorunlustring

Desen: ^[a-z0-9](?:[a-z0-9-]{0,48}[a-z0-9])?$ · 1–50 karakter

namezorunlustring

1–200 karakter

descriptionstring

null olabilir

websiteUrlstring

null olabilir

iconUrlstring

null olabilir

timezonestring

en çok 64 karakter

currencystring

Desen: ^[A-Z]{3}$

schemaModestring

Değerler: strict, lenient, discover · Varsayılan: lenient

attributionModelstring

Değerler: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid · Varsayılan: last_non_direct

attributionWindowDaysinteger

1–365 · Varsayılan: 90

conversionRolesstring[]

1–16 öğe · Varsayılan: ["signup","trial_start","lead","demo_request","purchase"]

leadContactClicksboolean

Varsayılan: false

retentionobject
retention.eventsMonthszorunluinteger

1–120

retention.interactionsMonthszorunluinteger

1–60

retention.sessionsMonthszorunluinteger

1–120

internalIpRangesstring[]

en çok 100 öğe · Varsayılan: []

internalCookiestring

null olabilir

revenueBasisstring

Değerler: gross, net · Varsayılan: gross

pricesIncludeTaxboolean

Varsayılan: true

overviewTilesOverviewTileRequest[]

en çok 12 öğe · Varsayılan: []

adsKpisstring[]

en çok 12 öğe · Varsayılan: []

modulesstring[]

en çok 6 öğe · Varsayılan: ["ads","social","messaging","content","leads","behavior"]

defaultAlertRecipientsAlertRecipients
searchBrandTermsstring[]

en çok 50 öğe · Varsayılan: []

Örnek · JSON
{
  "slug": "string",
  "name": "string",
  "description": "string",
  "websiteUrl": "string",
  "iconUrl": "string",
  "timezone": "string",
  "currency": "string",
  "schemaMode": "lenient",
  "attributionModel": "last_non_direct",
  "attributionWindowDays": 90,
  "conversionRoles": [
    "signup",
    "trial_start",
    "lead",
    "demo_request",
    "purchase"
  ],
  "leadContactClicks": false,
  "retention": {
    "eventsMonths": 1,
    "interactionsMonths": 1,
    "sessionsMonths": 1
  },
  "internalIpRanges": [],
  "internalCookie": "string",
  "revenueBasis": "gross",
  "pricesIncludeTax": true,
  "overviewTiles": [],
  "adsKpis": [],
  "modules": [
    "ads",
    "social",
    "messaging",
    "content",
    "leads",
    "behavior"
  ],
  "defaultAlertRecipients": {
    "inApp": true,
    "userIds": []
  },
  "searchBrandTerms": []
}

Yanıtlar

  • 201

    Oluşturuldu.

    application/jsonApp

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "slug": "string",
      "name": "string",
      "description": "string",
      "websiteUrl": "string",
      "iconUrl": "string",
      "timezone": "string",
      "currency": "string",
      "schemaMode": "strict",
      "schemaRevision": 0,
      "attributionModel": "first_touch",
      "attributionWindowDays": 0,
      "conversionRoles": [
        "signup"
      ],
      "leadContactClicks": true,
      "retention": {
        "eventsMonths": 0,
        "interactionsMonths": 0,
        "sessionsMonths": 0
      },
      "internalIpRanges": [
        "string"
      ],
      "internalCookie": "string",
      "revenueBasis": "gross",
      "pricesIncludeTax": true,
      "overviewTiles": [
        {
          "metric": "string",
          "breakdown": "string"
        }
      ],
      "adsKpis": [
        "string"
      ],
      "modules": [
        "ads"
      ],
      "defaultAlertRecipients": {
        "inApp": true,
        "userIds": [
          "01a1b249-9ed2-77e8-af53-0c99529e68cb"
        ],
        "emails": [
          "string"
        ],
        "channelIds": [
          "01a1b249-9ed2-77e8-af53-0c99529e68cb"
        ]
      },
      "searchBrandTerms": [
        "string"
      ],
      "defaultOverviewTiles": [
        {
          "metric": "string",
          "breakdown": "string"
        }
      ],
      "defaultAdsKpis": [
        "string"
      ],
      "status": "active",
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}

Uygulama

Uygulamanın ayarları. Tek uygulama okumasında (dalga 16) ayrıca, uygulama kendi setini kaydetmemişken Genel bakış ve Reklam özetinin gösterdiği varsayılan setler: defaultOverviewTiles (uygulamanın tanımlarının oynadığı dönüşüm rolleri, uygulamanın sırasıyla, en çok 5) ve defaultAdsKpis (harcama, gösterim, tıklama, ilk dört rolün reklamdan dönüşümü, ilk rolün dönüşüm başı maliyeti) — kural contracts defaultOverviewTiles / defaultAdsKpis. Kapsam: management:read.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:read.

Kimlik
apiKey
Gerekli kapsam
management:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonApp

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "slug": "string",
      "name": "string",
      "description": "string",
      "websiteUrl": "string",
      "iconUrl": "string",
      "timezone": "string",
      "currency": "string",
      "schemaMode": "strict",
      "schemaRevision": 0,
      "attributionModel": "first_touch",
      "attributionWindowDays": 0,
      "conversionRoles": [
        "signup"
      ],
      "leadContactClicks": true,
      "retention": {
        "eventsMonths": 0,
        "interactionsMonths": 0,
        "sessionsMonths": 0
      },
      "internalIpRanges": [
        "string"
      ],
      "internalCookie": "string",
      "revenueBasis": "gross",
      "pricesIncludeTax": true,
      "overviewTiles": [
        {
          "metric": "string",
          "breakdown": "string"
        }
      ],
      "adsKpis": [
        "string"
      ],
      "modules": [
        "ads"
      ],
      "defaultAlertRecipients": {
        "inApp": true,
        "userIds": [
          "01a1b249-9ed2-77e8-af53-0c99529e68cb"
        ],
        "emails": [
          "string"
        ],
        "channelIds": [
          "01a1b249-9ed2-77e8-af53-0c99529e68cb"
        ]
      },
      "searchBrandTerms": [
        "string"
      ],
      "defaultOverviewTiles": [
        {
          "metric": "string",
          "breakdown": "string"
        }
      ],
      "defaultAdsKpis": [
        "string"
      ],
      "status": "active",
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00"
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

PATCH/v1/apps/{appId}

Uygulamayı güncelle

Ayarlar (13. dalga): revenueBasis (gross | net — başlık gelir), pricesIncludeTax (tutarlar KDV dahil mi; brüt para metriklerinin etiketi bunu söyler), overviewTiles (Genel bakış kutuları, en çok 12: katalog metriği ve isteğe bağlı kırılım — metrik ve boyut katalogla doğrulanır), adsKpis (Reklam KPI seti, en çok 12; boş: varsayılan), modules (açık modüller: ads, social, messaging, content, leads, behavior; kapalı modülün uçları 403 APP_MODULE_DISABLED), defaultAlertRecipients (alıcı vermeyen yeni uyarı kuralının alıcıları; üyeler ve kanallar doğrulanır), searchBrandTerms (Search Console marka ayrımı, küçük harfe çevrilir). Hatalı alan fields altında (ör. overviewTiles.0.metric).

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonUpdateAppRequest

AlanTipAçıklama
slugstring

Desen: ^[a-z0-9](?:[a-z0-9-]{0,48}[a-z0-9])?$ · 1–50 karakter

namestring

1–200 karakter

descriptionstring

null olabilir

websiteUrlstring

null olabilir

iconUrlstring

null olabilir

timezonestring

en çok 64 karakter

currencystring

Desen: ^[A-Z]{3}$

schemaModestring

Değerler: strict, lenient, discover

attributionModelstring

Değerler: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

attributionWindowDaysinteger

1–365

conversionRolesstring[]

1–16 öğe

leadContactClicksboolean
retentionobject
retention.eventsMonthszorunluinteger

1–120

retention.interactionsMonthszorunluinteger

1–60

retention.sessionsMonthszorunluinteger

1–120

internalIpRangesstring[]

en çok 100 öğe

internalCookiestring

null olabilir

revenueBasisstring

Değerler: gross, net

pricesIncludeTaxboolean
overviewTilesOverviewTileRequest[]

en çok 12 öğe

adsKpisstring[]

en çok 12 öğe

modulesstring[]

en çok 6 öğe

defaultAlertRecipientsAlertRecipients
searchBrandTermsstring[]

en çok 50 öğe

Örnek · JSON
{
  "slug": "string",
  "name": "string",
  "description": "string",
  "websiteUrl": "string",
  "iconUrl": "string",
  "timezone": "string",
  "currency": "string",
  "schemaMode": "strict",
  "attributionModel": "first_touch",
  "attributionWindowDays": 1,
  "conversionRoles": [
    "signup"
  ],
  "leadContactClicks": true,
  "retention": {
    "eventsMonths": 1,
    "interactionsMonths": 1,
    "sessionsMonths": 1
  },
  "internalIpRanges": [
    "string"
  ],
  "internalCookie": "string",
  "revenueBasis": "gross",
  "pricesIncludeTax": true,
  "overviewTiles": [
    {
      "metric": "string"
    }
  ],
  "adsKpis": [
    "string"
  ],
  "modules": [
    "ads"
  ],
  "defaultAlertRecipients": {
    "inApp": true,
    "userIds": []
  },
  "searchBrandTerms": [
    "string"
  ]
}

Yanıtlar

  • 200

    Başarılı.

    application/jsonApp

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "slug": "string",
      "name": "string",
      "description": "string",
      "websiteUrl": "string",
      "iconUrl": "string",
      "timezone": "string",
      "currency": "string",
      "schemaMode": "strict",
      "schemaRevision": 0,
      "attributionModel": "first_touch",
      "attributionWindowDays": 0,
      "conversionRoles": [
        "signup"
      ],
      "leadContactClicks": true,
      "retention": {
        "eventsMonths": 0,
        "interactionsMonths": 0,
        "sessionsMonths": 0
      },
      "internalIpRanges": [
        "string"
      ],
      "internalCookie": "string",
      "revenueBasis": "gross",
      "pricesIncludeTax": true,
      "overviewTiles": [
        {
          "metric": "string",
          "breakdown": "string"
        }
      ],
      "adsKpis": [
        "string"
      ],
      "modules": [
        "ads"
      ],
      "defaultAlertRecipients": {
        "inApp": true,
        "userIds": [
          "01a1b249-9ed2-77e8-af53-0c99529e68cb"
        ],
        "emails": [
          "string"
        ],
        "channelIds": [
          "01a1b249-9ed2-77e8-af53-0c99529e68cb"
        ]
      },
      "searchBrandTerms": [
        "string"
      ],
      "defaultOverviewTiles": [
        {
          "metric": "string",
          "breakdown": "string"
        }
      ],
      "defaultAdsKpis": [
        "string"
      ],
      "status": "active",
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

Kaynaklar

8 uç

Veri gönderen istemciler, yakalama ayarları, yazma anahtarları ve imza anahtarları, kaynak sağlığı.

GET/v1/apps/{appId}/sources

Kaynaklar

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:read.

Kimlik
apiKey
Gerekli kapsam
management:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

cursorsorgustring

Desen: ^[A-Za-z0-9_-]{1,512}$

limitsorguinteger

1–200 · Varsayılan: 50

statussorgustring

Değerler: active, disabled

kindsorgustring

Değerler: web, ios, android, server, other

Yanıtlar

  • 200

    Başarılı.

    application/jsonSourcePage

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "name": "string",
          "kind": "web",
          "environment": "production",
          "status": "active",
          "requireSignature": true,
          "allowedOrigins": [
            "string"
          ],
          "consentMode": "required",
          "excludedPaths": [
            "string"
          ],
          "maskSelectors": [
            "string"
          ],
          "ignoreSelectors": [
            "string"
          ],
          "stripQueryParams": [
            "string"
          ],
          "sessionTimeoutMinutes": 0,
          "interactionSampleRate": 0,
          "autocapture": {
            "pageviews": true,
            "pageleave": true,
            "clicks": true,
            "rageClicks": true,
            "deadClicks": true,
            "scroll": true,
            "errors": true,
            "forms": true,
            "layout": true,
            "outboundLinks": true,
            "downloads": true,
            "webVitals": true
          },
          "dataLayerEvents": [
            "string"
          ],
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "nextCursor": "string"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

POST/v1/apps/{appId}/sources

Kaynak ekle

Tür (web, ios, android, server, other), ortam, rıza kipi ve yakalama ayarları. Planın kaynak sınırı organizasyonun bütün uygulamalarındaki kaynakları sayar; sınıra ulaşılmışsa 403 PLAN_LIMIT_REACHED. Anahtar ayrıca oluşturulur (POST …/keys). Kapsam: management:write; denetim kaydıyla (işlemi yapan anahtar).

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonCreateSourceRequest

AlanTipAçıklama
namezorunlustring

1–200 karakter

kindzorunlustring

Değerler: web, ios, android, server, other

environmentstring

Değerler: production, staging, development · Varsayılan: production

requireSignatureboolean

Varsayılan: false

allowedOriginsstring[]

en çok 100 öğe · Varsayılan: []

consentModestring

Değerler: required, implied, none · Varsayılan: required

excludedPathsstring[]

en çok 200 öğe · Varsayılan: []

maskSelectorsstring[]

en çok 100 öğe · Varsayılan: []

ignoreSelectorsstring[]

en çok 100 öğe · Varsayılan: []

stripQueryParamsstring[]

en çok 100 öğe · Varsayılan: []

sessionTimeoutMinutesinteger

5–240 · Varsayılan: 30

interactionSampleRatenumber

0–1 · Varsayılan: 1

autocaptureobject

Varsayılan: {}

autocapture.pageviewsboolean
autocapture.pageleaveboolean
autocapture.clicksboolean
autocapture.rageClicksboolean
autocapture.deadClicksboolean
autocapture.scrollboolean
autocapture.errorsboolean
autocapture.formsboolean
autocapture.layoutboolean
autocapture.outboundLinksboolean
autocapture.downloadsboolean
autocapture.webVitalsboolean
dataLayerEventsstring[]

en çok 100 öğe · Varsayılan: []

Örnek · JSON
{
  "name": "string",
  "kind": "web",
  "environment": "production",
  "requireSignature": false,
  "allowedOrigins": [],
  "consentMode": "required",
  "excludedPaths": [],
  "maskSelectors": [],
  "ignoreSelectors": [],
  "stripQueryParams": [],
  "sessionTimeoutMinutes": 30,
  "interactionSampleRate": 1,
  "autocapture": {},
  "dataLayerEvents": []
}

Yanıtlar

  • 201

    Oluşturuldu.

    application/jsonSource

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "name": "string",
      "kind": "web",
      "environment": "production",
      "status": "active",
      "requireSignature": true,
      "allowedOrigins": [
        "string"
      ],
      "consentMode": "required",
      "excludedPaths": [
        "string"
      ],
      "maskSelectors": [
        "string"
      ],
      "ignoreSelectors": [
        "string"
      ],
      "stripQueryParams": [
        "string"
      ],
      "sessionTimeoutMinutes": 0,
      "interactionSampleRate": 0,
      "autocapture": {
        "pageviews": true,
        "pageleave": true,
        "clicks": true,
        "rageClicks": true,
        "deadClicks": true,
        "scroll": true,
        "errors": true,
        "forms": true,
        "layout": true,
        "outboundLinks": true,
        "downloads": true,
        "webVitals": true
      },
      "dataLayerEvents": [
        "string"
      ],
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/sources/{sourceId}

Kaynak

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:read.

Kimlik
apiKey
Gerekli kapsam
management:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

sourceIdzorunluyolstringKaynağın kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonSource

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "name": "string",
      "kind": "web",
      "environment": "production",
      "status": "active",
      "requireSignature": true,
      "allowedOrigins": [
        "string"
      ],
      "consentMode": "required",
      "excludedPaths": [
        "string"
      ],
      "maskSelectors": [
        "string"
      ],
      "ignoreSelectors": [
        "string"
      ],
      "stripQueryParams": [
        "string"
      ],
      "sessionTimeoutMinutes": 0,
      "interactionSampleRate": 0,
      "autocapture": {
        "pageviews": true,
        "pageleave": true,
        "clicks": true,
        "rageClicks": true,
        "deadClicks": true,
        "scroll": true,
        "errors": true,
        "forms": true,
        "layout": true,
        "outboundLinks": true,
        "downloads": true,
        "webVitals": true
      },
      "dataLayerEvents": [
        "string"
      ],
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00"
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

PATCH/v1/apps/{appId}/sources/{sourceId}

Kaynağı güncelle

Yakalama ayarları SDK'lara uzak yapılandırma olarak sunulur; autocapture gönderilen anahtarları kaynağın ayarlarıyla birleştirir. Kaynak Management API ile silinmez (panelde). Kapsam: management:write.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

sourceIdzorunluyolstringKaynağın kimliği.

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonUpdateSourceRequest

AlanTipAçıklama
namestring

1–200 karakter

environmentstring

Değerler: production, staging, development

statusstring

Değerler: active, disabled

requireSignatureboolean
allowedOriginsstring[]

en çok 100 öğe

consentModestring

Değerler: required, implied, none

excludedPathsstring[]

en çok 200 öğe

maskSelectorsstring[]

en çok 100 öğe

ignoreSelectorsstring[]

en çok 100 öğe

stripQueryParamsstring[]

en çok 100 öğe

sessionTimeoutMinutesinteger

5–240

interactionSampleRatenumber

0–1

autocaptureobject
autocapture.pageviewsboolean
autocapture.pageleaveboolean
autocapture.clicksboolean
autocapture.rageClicksboolean
autocapture.deadClicksboolean
autocapture.scrollboolean
autocapture.errorsboolean
autocapture.formsboolean
autocapture.layoutboolean
autocapture.outboundLinksboolean
autocapture.downloadsboolean
autocapture.webVitalsboolean
dataLayerEventsstring[]

en çok 100 öğe

Örnek · JSON
{
  "name": "string",
  "environment": "production",
  "status": "active",
  "requireSignature": true,
  "allowedOrigins": [
    "string"
  ],
  "consentMode": "required",
  "excludedPaths": [
    "string"
  ],
  "maskSelectors": [
    "string"
  ],
  "ignoreSelectors": [
    "string"
  ],
  "stripQueryParams": [
    "string"
  ],
  "sessionTimeoutMinutes": 5,
  "interactionSampleRate": 0,
  "autocapture": {
    "pageviews": true,
    "pageleave": true
  },
  "dataLayerEvents": [
    "string"
  ]
}

Yanıtlar

  • 200

    Başarılı.

    application/jsonSource

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "name": "string",
      "kind": "web",
      "environment": "production",
      "status": "active",
      "requireSignature": true,
      "allowedOrigins": [
        "string"
      ],
      "consentMode": "required",
      "excludedPaths": [
        "string"
      ],
      "maskSelectors": [
        "string"
      ],
      "ignoreSelectors": [
        "string"
      ],
      "stripQueryParams": [
        "string"
      ],
      "sessionTimeoutMinutes": 0,
      "interactionSampleRate": 0,
      "autocapture": {
        "pageviews": true,
        "pageleave": true,
        "clicks": true,
        "rageClicks": true,
        "deadClicks": true,
        "scroll": true,
        "errors": true,
        "forms": true,
        "layout": true,
        "outboundLinks": true,
        "downloads": true,
        "webVitals": true
      },
      "dataLayerEvents": [
        "string"
      ],
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/sources/{sourceId}/health

Kaynak sağlığı

Durum, son olay ve son ret, son kütüphane; son 24 saatte kabul edilen olay, ret, örneklenmiş uyarı ve ret oranı (Σ ret ÷ (Σ olay + Σ ret)). Kapsam: management:read.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:read.

Kimlik
apiKey
Gerekli kapsam
management:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

sourceIdzorunluyolstringKaynağın kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonSourceHealth

    Örnek · JSON
    {
      "sourceId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "state": "no_data",
      "lastEventAt": "2026-11-06T14:46:00+03:00",
      "lastRejectionAt": "2026-11-06T14:46:00+03:00",
      "lastLibrary": "string",
      "rejectionsLast24h": 0,
      "eventsLast24h": 0,
      "warningsLast24h": 0,
      "rejectionRate": 0
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/sources/{sourceId}/keys

Kaynak anahtarları (maskeli)

Önek ve son dört karakter, kip, oluşturma, iptal ve geçiş süresi; anahtarın tamamı hiç dönmez. Kapsam: management:write (panelde de yalnız kaynak yöneticisi görür).

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

sourceIdzorunluyolstringKaynağın kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonSourceKeyList

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "kind": "write",
          "mode": "live",
          "maskedKey": "string",
          "displayPrefix": "string",
          "last4": "string",
          "state": "active",
          "revokedAt": "2026-11-06T14:46:00+03:00",
          "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "createdAt": "2026-11-06T14:46:00+03:00"
        }
      ]
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

POST/v1/apps/{appId}/sources/{sourceId}/keys

Anahtar oluştur

Yazma anahtarı pk_live_…/pk_test_… (SHA-256 özetiyle saklanır) ya da imza anahtarı sk_live_…/sk_test_… (sır kutusunda mühürlü). Anahtarın tamamı yalnız bu yanıtta görünür. Kapsam: management:write; denetim kaydıyla.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

sourceIdzorunluyolstringKaynağın kimliği.

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonCreateSourceKeyRequest

AlanTipAçıklama
kindzorunlustring

Değerler: write, signing

modestring

Değerler: live, test · Varsayılan: live

Örnek · JSON
{
  "kind": "write",
  "mode": "live"
}

Yanıtlar

  • 201

    Oluşturuldu.

    application/jsonCreatedSourceKey

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "kind": "write",
      "mode": "live",
      "maskedKey": "string",
      "displayPrefix": "string",
      "last4": "string",
      "state": "active",
      "revokedAt": "2026-11-06T14:46:00+03:00",
      "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "createdAt": "2026-11-06T14:46:00+03:00",
      "key": "string"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

POST/v1/apps/{appId}/sources/{sourceId}/keys/{keyId}/revoke

Anahtarı iptal et

graceMinutes kadar daha geçerli kalır (anahtar yenilemede geçiş süresi, en çok 7 gün). Kapsam: management:write; denetim kaydıyla.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

sourceIdzorunluyolstringKaynağın kimliği.

Biçim: uuid

keyIdzorunluyolstring

Biçim: uuid

İstek gövdesi

application/jsonRevokeSourceKeyRequest

AlanTipAçıklama
graceMinutesinteger

0–10080 · Varsayılan: 0

Örnek · JSON
{
  "graceMinutes": 0
}

Yanıtlar

  • 200

    Başarılı.

    application/jsonSourceKey

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "kind": "write",
      "mode": "live",
      "maskedKey": "string",
      "displayPrefix": "string",
      "last4": "string",
      "state": "active",
      "revokedAt": "2026-11-06T14:46:00+03:00",
      "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "createdAt": "2026-11-06T14:46:00+03:00"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

Olay şeması

16 uç

Olay ve özellik tanımları, kişi/hesap özellikleri, değişiklik geçmişi, keşfedilen olaylar, şema paketi.

GET/v1/apps/{appId}/event-definitions

Olay tanımları

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:read.

Kimlik
apiKey
Gerekli kapsam
management:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

cursorsorgustring

Desen: ^[A-Za-z0-9_-]{1,512}$

limitsorguinteger

1–200 · Varsayılan: 50

statussorgustring

Değerler: draft, active, deprecated, blocked

rolesorgustring

Değerler: signup, login, trial_start, trial_end, activation, core_action, lead, demo_request, contact_click, checkout_start, payment_failed, purchase, subscription_renewal, refund, churn, referral

searchsorgustring

en çok 100 karakter

Yanıtlar

  • 200

    Başarılı.

    application/jsonEventDefinitionPage

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "name": "string",
          "displayName": "string",
          "description": "string",
          "category": "string",
          "roles": [
            "signup"
          ],
          "status": "draft",
          "aliases": [
            "string"
          ],
          "version": 1,
          "propertyCount": 0,
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "nextCursor": "string"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

POST/v1/apps/{appId}/event-definitions

Olay tanımı ekle

Her değişiklik tanımın sürümünü bir artırır, uygulamanın şema revizyonunu ilerletir ve schema_changes geçmişine yazılır. $ ile başlayan adlar sistem olaylarına ayrılmıştır; seçenekli (enum) tip izinli değer ister; kişisel ve hassas veri allow ile saklanamaz.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonCreateEventDefinitionRequest

AlanTipAçıklama
namezorunlustring

1–200 karakter

displayNamezorunlustring

1–200 karakter

descriptionstring

null olabilir

categorystring

null olabilir

rolesstring[]

en çok 16 öğe · Varsayılan: []

statusstring

Değerler: draft, active, deprecated, blocked · Varsayılan: active

aliasesstring[]

en çok 20 öğe · Varsayılan: []

propertiesPropertyDefinitionInput[]

en çok 200 öğe

displayNamesLocalizedNames
Örnek · JSON
{
  "name": "string",
  "displayName": "string",
  "description": "string",
  "category": "string",
  "roles": [],
  "status": "active",
  "aliases": [],
  "properties": [
    {
      "key": "string",
      "type": "string"
    }
  ],
  "displayNames": {
    "tr": "string",
    "en": "string"
  }
}

Yanıtlar

  • 201

    Oluşturuldu.

    application/jsonEventDefinitionRecord

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "name": "string",
      "displayName": "string",
      "displayNames": {
        "tr": "string",
        "en": "string"
      },
      "description": "string",
      "category": "string",
      "roles": [
        "signup"
      ],
      "status": "draft",
      "aliases": [
        "string"
      ],
      "version": 1,
      "propertyCount": 0,
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00",
      "properties": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "scope": "event",
          "key": "string",
          "type": "string",
          "itemType": "string",
          "required": true,
          "description": "string",
          "piiClass": "none",
          "piiAction": "allow",
          "enumValues": [
            "string"
          ],
          "maxLength": 0,
          "minimum": 0,
          "maximum": 0,
          "example": {},
          "sortOrder": 0,
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00"
        }
      ]
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/event-definitions/{eventId}

Olay tanımı

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:read.

Kimlik
apiKey
Gerekli kapsam
management:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

eventIdzorunluyolstringOlay tanımının kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonEventDefinitionRecord

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "name": "string",
      "displayName": "string",
      "displayNames": {
        "tr": "string",
        "en": "string"
      },
      "description": "string",
      "category": "string",
      "roles": [
        "signup"
      ],
      "status": "draft",
      "aliases": [
        "string"
      ],
      "version": 1,
      "propertyCount": 0,
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00",
      "properties": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "scope": "event",
          "key": "string",
          "type": "string",
          "itemType": "string",
          "required": true,
          "description": "string",
          "piiClass": "none",
          "piiAction": "allow",
          "enumValues": [
            "string"
          ],
          "maxLength": 0,
          "minimum": 0,
          "maximum": 0,
          "example": {},
          "sortOrder": 0,
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00"
        }
      ]
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

PATCH/v1/apps/{appId}/event-definitions/{eventId}

Olay tanımını güncelle

properties gönderilirse listenin tamamını değiştirir (anahtarı korunan özelliğin kimliği kalır). Ad değişmez; eski adlar aliases ile eşlenir. Her değişiklik tanımın sürümünü bir artırır, uygulamanın şema revizyonunu ilerletir ve schema_changes geçmişine yazılır. $ ile başlayan adlar sistem olaylarına ayrılmıştır; seçenekli (enum) tip izinli değer ister; kişisel ve hassas veri allow ile saklanamaz.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

eventIdzorunluyolstringOlay tanımının kimliği.

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonUpdateEventDefinitionRequest

AlanTipAçıklama
displayNamestring

1–200 karakter

descriptionstring

null olabilir

categorystring

null olabilir

rolesstring[]

en çok 16 öğe

aliasesstring[]

en çok 20 öğe

propertiesPropertyDefinitionInput[]

en çok 200 öğe

displayNamesLocalizedNames
Örnek · JSON
{
  "displayName": "string",
  "description": "string",
  "category": "string",
  "roles": [
    "signup"
  ],
  "aliases": [
    "string"
  ],
  "properties": [
    {
      "key": "string",
      "type": "string"
    }
  ],
  "displayNames": {
    "tr": "string",
    "en": "string"
  }
}

Yanıtlar

  • 200

    Başarılı.

    application/jsonEventDefinitionRecord

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "name": "string",
      "displayName": "string",
      "displayNames": {
        "tr": "string",
        "en": "string"
      },
      "description": "string",
      "category": "string",
      "roles": [
        "signup"
      ],
      "status": "draft",
      "aliases": [
        "string"
      ],
      "version": 1,
      "propertyCount": 0,
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00",
      "properties": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "scope": "event",
          "key": "string",
          "type": "string",
          "itemType": "string",
          "required": true,
          "description": "string",
          "piiClass": "none",
          "piiAction": "allow",
          "enumValues": [
            "string"
          ],
          "maxLength": 0,
          "minimum": 0,
          "maximum": 0,
          "example": {},
          "sortOrder": 0,
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00"
        }
      ]
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

DELETE/v1/apps/{appId}/event-definitions/{eventId}

Olay tanımını sil

Geçmişe silme kaydı yazılır; saklanan olaylar kalır. Kapsam: management:write; panelle aynı kurallar ve denetim kaydı (işlemi yapan anahtar).

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

eventIdzorunluyolstringOlay tanımının kimliği.

Biçim: uuid

Yanıtlar

  • 204

    Başarılı; yanıt gövdesi yok.

  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/event-definitions/{eventId}/json-schema

Olayın JSON Schema belgesi

Özellikler JSON Schema (draft 2020-12) olarak; katı kipte tanımsız özellik reddedilir (additionalProperties: false).

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:read.

Kimlik
apiKey
Gerekli kapsam
management:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

eventIdzorunluyolstringOlay tanımının kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonJsonSchemaDocument

    Örnek · JSON
    {}
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

POST/v1/apps/{appId}/event-definitions/{eventId}/status

Olay tanımının durumunu değiştir

draft, active, deprecated (uyarıyla kabul) ya da blocked (alımda reddedilir); geçmişe yazılır. Kapsam: management:write; panelle aynı kurallar ve denetim kaydı (işlemi yapan anahtar).

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

eventIdzorunluyolstringOlay tanımının kimliği.

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonChangeEventStatusRequest

AlanTipAçıklama
statuszorunlustring

Değerler: draft, active, deprecated, blocked

Örnek · JSON
{
  "status": "draft"
}

Yanıtlar

  • 200

    Başarılı.

    application/jsonEventDefinitionRecord

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "name": "string",
      "displayName": "string",
      "displayNames": {
        "tr": "string",
        "en": "string"
      },
      "description": "string",
      "category": "string",
      "roles": [
        "signup"
      ],
      "status": "draft",
      "aliases": [
        "string"
      ],
      "version": 1,
      "propertyCount": 0,
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00",
      "properties": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "scope": "event",
          "key": "string",
          "type": "string",
          "itemType": "string",
          "required": true,
          "description": "string",
          "piiClass": "none",
          "piiAction": "allow",
          "enumValues": [
            "string"
          ],
          "maxLength": 0,
          "minimum": 0,
          "maximum": 0,
          "example": {},
          "sortOrder": 0,
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00"
        }
      ]
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/group-traits

Hesap özelliği tanımları

Uygulamanın hesap (group) özellik tanımları (anahtar, tür, kişisel veri sınıfı ve eylemi, iki dilde ad). Kapsam: management:read.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:read.

Kimlik
apiKey
Gerekli kapsam
management:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonTraitList

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "scope": "event",
          "key": "string",
          "type": "string",
          "itemType": "string",
          "required": true,
          "description": "string",
          "piiClass": "none",
          "piiAction": "allow",
          "enumValues": [
            "string"
          ],
          "maxLength": 0,
          "minimum": 0,
          "maximum": 0,
          "example": {},
          "sortOrder": 0,
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00"
        }
      ]
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

POST/v1/apps/{appId}/group-traits

Hesap özelliği tanımı ekle

Kişisel veri sınıfı (piiClass) ve eylemi (piiAction: allow, hash, drop, reject) alımda ve profillerde uygulanır. Kapsam: management:write; panelle aynı kurallar ve denetim kaydı (işlemi yapan anahtar).

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonPropertyDefinitionInput

AlanTipAçıklama
keyzorunlustring

Desen: ^[A-Za-z_][A-Za-z0-9_]{0,99}$ · 1–100 karakter

typezorunlustring

Değerler: string, number, integer, boolean, datetime, money, currency, enum, object, array

itemTypestring

null olabilir

requiredboolean

Varsayılan: false

descriptionstring

null olabilir

piiClassstring

Değerler: none, pseudonymous, personal, sensitive · Varsayılan: none

piiActionstring

Değerler: allow, hash, drop, reject · Varsayılan: allow

enumValuesstring[]

null olabilir

maxLengthinteger

null olabilir

minimumnumber

null olabilir

maximumnumber

null olabilir

exampleany
displayNamesLocalizedNames
Örnek · JSON
{
  "key": "string",
  "type": "string",
  "itemType": "string",
  "required": false,
  "description": "string",
  "piiClass": "none",
  "piiAction": "allow",
  "enumValues": [
    "string"
  ],
  "maxLength": 1,
  "minimum": 0,
  "maximum": 0,
  "example": {},
  "displayNames": {
    "tr": "string",
    "en": "string"
  }
}

Yanıtlar

  • 201

    Oluşturuldu.

    application/jsonPropertyDefinitionRecord

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "scope": "event",
      "key": "string",
      "type": "string",
      "itemType": "string",
      "required": true,
      "description": "string",
      "piiClass": "none",
      "piiAction": "allow",
      "enumValues": [
        "string"
      ],
      "maxLength": 0,
      "minimum": 0,
      "maximum": 0,
      "example": {},
      "sortOrder": 0,
      "displayNames": {
        "tr": "string",
        "en": "string"
      },
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

PATCH/v1/apps/{appId}/group-traits/{propertyId}

Hesap özelliği tanımını güncelle

Anahtar değişmez. Kapsam: management:write; panelle aynı kurallar ve denetim kaydı (işlemi yapan anahtar).

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

propertyIdzorunluyolstring

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonUpdateTraitRequest

AlanTipAçıklama
typestring

Değerler: string, number, integer, boolean, datetime, money, currency, enum, object, array

itemTypestring

null olabilir

requiredboolean
descriptionstring

null olabilir

piiClassstring

Değerler: none, pseudonymous, personal, sensitive

piiActionstring

Değerler: allow, hash, drop, reject

enumValuesstring[]

null olabilir

maxLengthinteger

null olabilir

minimumnumber

null olabilir

maximumnumber

null olabilir

exampleany
displayNamesLocalizedNames
Örnek · JSON
{
  "type": "string",
  "itemType": "string",
  "required": true,
  "description": "string",
  "piiClass": "none",
  "piiAction": "allow",
  "enumValues": [
    "string"
  ],
  "maxLength": 1,
  "minimum": 0,
  "maximum": 0,
  "example": {},
  "displayNames": {
    "tr": "string",
    "en": "string"
  }
}

Yanıtlar

  • 200

    Başarılı.

    application/jsonPropertyDefinitionRecord

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "scope": "event",
      "key": "string",
      "type": "string",
      "itemType": "string",
      "required": true,
      "description": "string",
      "piiClass": "none",
      "piiAction": "allow",
      "enumValues": [
        "string"
      ],
      "maxLength": 0,
      "minimum": 0,
      "maximum": 0,
      "example": {},
      "sortOrder": 0,
      "displayNames": {
        "tr": "string",
        "en": "string"
      },
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

DELETE/v1/apps/{appId}/group-traits/{propertyId}

Hesap özelliği tanımını sil

Saklanan değerler kalır; tanımsız özellik uygulamanın şema kipine göre işlenir. Kapsam: management:write; panelle aynı kurallar ve denetim kaydı (işlemi yapan anahtar).

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

propertyIdzorunluyolstring

Biçim: uuid

Yanıtlar

  • 204

    Başarılı; yanıt gövdesi yok.

  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/schema

Şema paketi

Uygulamanın bütün olay kataloğu (schemaBundleSchema, formatVersion 1): her durumdaki olay tanımı, özellikleri, kişi ve hesap özellikleri, revision. metrics pull TypeScript tiplerini, alım servisi şema önbelleğini bundan üretir.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:read.

Kimlik
apiKey
Gerekli kapsam
management:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonSchemaBundle

    Örnek · JSON
    {
      "formatVersion": 1,
      "app": {
        "id": "string",
        "slug": "string",
        "name": "string"
      },
      "schemaMode": "strict",
      "revision": 0,
      "generatedAt": "2026-11-06T14:46:00+03:00",
      "events": [
        {
          "name": "string",
          "displayName": "string",
          "roles": [
            "signup"
          ],
          "status": "draft",
          "version": 1,
          "properties": [
            {
              "key": "string",
              "type": "string",
              "required": true,
              "piiClass": "none",
              "piiAction": "allow"
            }
          ]
        }
      ],
      "traits": [
        {
          "key": "string",
          "type": "string",
          "required": true,
          "piiClass": "none",
          "piiAction": "allow"
        }
      ],
      "groupTraits": [
        {
          "key": "string",
          "type": "string",
          "required": true,
          "piiClass": "none",
          "piiAction": "allow"
        }
      ]
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/traits

Kişi özelliği tanımları

Uygulamanın kişi (identify) özellik tanımları (anahtar, tür, kişisel veri sınıfı ve eylemi, iki dilde ad). Kapsam: management:read.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:read.

Kimlik
apiKey
Gerekli kapsam
management:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonTraitList

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "scope": "event",
          "key": "string",
          "type": "string",
          "itemType": "string",
          "required": true,
          "description": "string",
          "piiClass": "none",
          "piiAction": "allow",
          "enumValues": [
            "string"
          ],
          "maxLength": 0,
          "minimum": 0,
          "maximum": 0,
          "example": {},
          "sortOrder": 0,
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00"
        }
      ]
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

POST/v1/apps/{appId}/traits

Kişi özelliği tanımı ekle

Kişisel veri sınıfı (piiClass) ve eylemi (piiAction: allow, hash, drop, reject) alımda ve profillerde uygulanır. Kapsam: management:write; panelle aynı kurallar ve denetim kaydı (işlemi yapan anahtar).

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonPropertyDefinitionInput

AlanTipAçıklama
keyzorunlustring

Desen: ^[A-Za-z_][A-Za-z0-9_]{0,99}$ · 1–100 karakter

typezorunlustring

Değerler: string, number, integer, boolean, datetime, money, currency, enum, object, array

itemTypestring

null olabilir

requiredboolean

Varsayılan: false

descriptionstring

null olabilir

piiClassstring

Değerler: none, pseudonymous, personal, sensitive · Varsayılan: none

piiActionstring

Değerler: allow, hash, drop, reject · Varsayılan: allow

enumValuesstring[]

null olabilir

maxLengthinteger

null olabilir

minimumnumber

null olabilir

maximumnumber

null olabilir

exampleany
displayNamesLocalizedNames
Örnek · JSON
{
  "key": "string",
  "type": "string",
  "itemType": "string",
  "required": false,
  "description": "string",
  "piiClass": "none",
  "piiAction": "allow",
  "enumValues": [
    "string"
  ],
  "maxLength": 1,
  "minimum": 0,
  "maximum": 0,
  "example": {},
  "displayNames": {
    "tr": "string",
    "en": "string"
  }
}

Yanıtlar

  • 201

    Oluşturuldu.

    application/jsonPropertyDefinitionRecord

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "scope": "event",
      "key": "string",
      "type": "string",
      "itemType": "string",
      "required": true,
      "description": "string",
      "piiClass": "none",
      "piiAction": "allow",
      "enumValues": [
        "string"
      ],
      "maxLength": 0,
      "minimum": 0,
      "maximum": 0,
      "example": {},
      "sortOrder": 0,
      "displayNames": {
        "tr": "string",
        "en": "string"
      },
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

PATCH/v1/apps/{appId}/traits/{propertyId}

Kişi özelliği tanımını güncelle

Anahtar değişmez. Kapsam: management:write; panelle aynı kurallar ve denetim kaydı (işlemi yapan anahtar).

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

propertyIdzorunluyolstring

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonUpdateTraitRequest

AlanTipAçıklama
typestring

Değerler: string, number, integer, boolean, datetime, money, currency, enum, object, array

itemTypestring

null olabilir

requiredboolean
descriptionstring

null olabilir

piiClassstring

Değerler: none, pseudonymous, personal, sensitive

piiActionstring

Değerler: allow, hash, drop, reject

enumValuesstring[]

null olabilir

maxLengthinteger

null olabilir

minimumnumber

null olabilir

maximumnumber

null olabilir

exampleany
displayNamesLocalizedNames
Örnek · JSON
{
  "type": "string",
  "itemType": "string",
  "required": true,
  "description": "string",
  "piiClass": "none",
  "piiAction": "allow",
  "enumValues": [
    "string"
  ],
  "maxLength": 1,
  "minimum": 0,
  "maximum": 0,
  "example": {},
  "displayNames": {
    "tr": "string",
    "en": "string"
  }
}

Yanıtlar

  • 200

    Başarılı.

    application/jsonPropertyDefinitionRecord

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "scope": "event",
      "key": "string",
      "type": "string",
      "itemType": "string",
      "required": true,
      "description": "string",
      "piiClass": "none",
      "piiAction": "allow",
      "enumValues": [
        "string"
      ],
      "maxLength": 0,
      "minimum": 0,
      "maximum": 0,
      "example": {},
      "sortOrder": 0,
      "displayNames": {
        "tr": "string",
        "en": "string"
      },
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

DELETE/v1/apps/{appId}/traits/{propertyId}

Kişi özelliği tanımını sil

Saklanan değerler kalır; tanımsız özellik uygulamanın şema kipine göre işlenir. Kapsam: management:write; panelle aynı kurallar ve denetim kaydı (işlemi yapan anahtar).

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

propertyIdzorunluyolstring

Biçim: uuid

Yanıtlar

  • 204

    Başarılı; yanıt gövdesi yok.

  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

Ölçüm

2 uç

Metrik kataloğu ve sorgu servisi: metrik sorgusu, katalog, Trafik ekranı, tüm uygulamalar, uygulamanın tanımladığı metrikler ve Query API.

POST/v1/query

Query API: metrik sorgusu

Panelin metrik sorgusu entegrasyonlar için: Authorization: Bearer mk_…, kapsam query:read, uygulama gövdede (appId); anahtarın uygulama kapsamı dışındaki uygulama bulunamaz (404). Tarih aralığı uygulamanın saat dilimindeki yerel tarihlerdir (iki uç dahil; günler yaz saati geçişinde 23 ya da 25 saat sürer). Test, iç ve bot trafiği include ile açıkça istenmedikçe dışarıdadır. Oranlar pay ve paydanın toplamından hesaplanır (oranların ortalaması alınmaz); tekil metrikler (ziyaretçi) her satır ve dönem için yeniden sayılır, toplanmaz. Paydası 0 olan oran ve ölçüm başlamadan önceki dönem null döner (0 değil). Karşılaştırma: previous_period eşit uzunlukta önceki dönem (tam takvim ayı → önceki ay, ay başından bugüne → önceki ayın aynı günleri), previous_year aynı tarihler bir yıl önce, custom + compareRange; zaman kovaları sırayla eşlenir. Değişim (deltas): önceki değer 0 ya da metriğin tabanının altındaysa yüzde verilmez (mode: "absolute", reason: "zero_base" | "small_base"), oranlarda puan (mode: "points"), ölçüm öncesi karşılaştırma comparable: false. meta: saat dilimi, veri tazeliği (işleme izleme noktası), her metriğin sayım modu (event_date) ve kaynağı (rollup | raw | none), uyarılar (desteklenmeyen boyut/filtre, kesilen satırlar). Özet tablolar ile ham tablolar aynı sayıyı verir; servis hangisini okuyacağına kendisi karar verir. Dalga 16: her metriğin katalog etiketi isteğin dilinde metrics[].label’da (rollü metrikte rolle: «Dönüşen kişi · Kayıt»; custom: için uygulamanın verdiği ad); definitions (en çok 5) kaydedilmemiş metrik tanımlarını taslak olarak taşır — custom:<anahtar> önce taslağa, sonra kayıtlı tanıma çözülür (önizleme; hiçbir şey saklanmaz, aynı anahtarlı kayıtlı tanımı gölgeler); türler kayıtlı tanımınkiler, artı unique_accounts (olayı yapan farklı hesap). segmentId uygulamanın bir kişi ya da hesap segmentini (…/analytics/segments) adlandırır: kişilerin olguları — oturum, olay, etkileşim, sayfa ayrılışı, kredili dönüşüm — segmentin üyelerine daralır (hesap segmentinde hesapların olayları ve üyelerinin oturumları); reklam, sosyal, Search Console, GA4, bütçe ve ileti metrikleri segment için FILTER_NOT_AVAILABLE der; segmentli sorgu her zaman ham tablolardan okunur, meta.segment segmentin adını taşır.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: query:read.

Kimlik
apiKey
Gerekli kapsam
query:read

İstek gövdesiGövde zorunlu

application/jsonQueryApiRequest

AlanTipAçıklama
appIdzorunlustring

Biçim: uuid

metricszorunlustring[]

1–20 öğe

dimensionsstring[]

en çok 3 öğe · Varsayılan: []

filtersQueryFilterInput[]

en çok 20 öğe · Varsayılan: []

dateRangezorunluDateRange
comparestring

Değerler: none, previous_period, previous_year, custom · Varsayılan: none

compareRangeDateRange
includeTrafficInclude
granularitystring

Değerler: day, week, month

attributionModelstring

Değerler: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

orderByobject
orderBy.metriczorunlustring

Desen: ^(?:[a-z][a-z0-9_]{0,49}(?::[a-z][a-z0-9_]{0,49})?|social\.[a-z][a-z0-9_]{0,19}\.[a-z][a-z0-9_]{0,49}|(?:email|sms)\.[a-z][a-z0-9_]{0,49})$ · 1–101 karakter

orderBy.directionstring

Değerler: asc, desc · Varsayılan: desc

limitinteger

1–10000 · Varsayılan: 1000

segmentIdstring

Biçim: uuid

definitionsDraftMetricDefinition[]

en çok 5 öğe

Örnek · JSON
{
  "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
  "metrics": [
    "string"
  ],
  "dimensions": [],
  "filters": [],
  "dateRange": {
    "from": "string",
    "to": "string"
  },
  "compare": "none",
  "compareRange": {
    "from": "string",
    "to": "string"
  },
  "include": {
    "test": false,
    "internal": false
  },
  "granularity": "day",
  "attributionModel": "first_touch",
  "orderBy": {
    "metric": "string"
  },
  "limit": 1000,
  "segmentId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
  "definitions": [
    {
      "key": "string",
      "kind": "event_count"
    }
  ]
}

Yanıtlar

  • 200

    Başarılı.

    application/jsonAnalyticsQueryResult

    Örnek · JSON
    {
      "metrics": [
        {
          "key": "string",
          "unit": "count",
          "goodDirection": "higher",
          "aggregation": "sum",
          "countingMode": "event_date",
          "source": "rollup"
        }
      ],
      "dimensions": [
        "string"
      ],
      "rows": [
        {
          "dimensions": {},
          "values": {},
          "bucket": {
            "start": "string",
            "end": "string",
            "days": 0,
            "complete": true,
            "beforeTracking": true
          },
          "previous": {},
          "previousBucket": {
            "start": "string",
            "end": "string"
          },
          "deltas": {}
        }
      ],
      "totals": {
        "values": {},
        "deltas": {}
      },
      "comparison": {
        "dateRange": {
          "from": "string",
          "to": "string"
        },
        "comparable": true,
        "totals": {}
      },
      "meta": {
        "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "timezone": "string",
        "currency": "string",
        "dateRange": {
          "from": "string",
          "to": "string"
        },
        "compare": "none",
        "comparisonRange": {
          "from": "string",
          "to": "string"
        },
        "include": {
          "test": true,
          "internal": true,
          "bot": true
        },
        "trackingStartedOn": "string",
        "freshness": {
          "processedUntil": "2026-11-06T14:46:00+03:00",
          "lastEventReceivedAt": "2026-11-06T14:46:00+03:00",
          "upToDate": true,
          "updatedAt": "2026-11-06T14:46:00+03:00",
          "pendingRollupDays": 0
        },
        "countingModes": {},
        "sources": {},
        "conversionRoles": [
          "signup"
        ],
        "attribution": {
          "model": "first_touch",
          "windowDays": 0
        },
        "warnings": [
          {
            "code": "DIMENSION_NOT_AVAILABLE",
            "message": "string",
            "metric": "string",
            "dimension": "string"
          }
        ],
        "truncated": true,
        "generatedAt": "2026-11-06T14:46:00+03:00"
      }
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/query/catalogue

Query API: metrik kataloğu

Uygulamanın metrik ve boyut kataloğu (Accept-Language dilinde etiketlerle). Kapsam query:read.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: query:read.

Kimlik
apiKey
Gerekli kapsam
query:read

Parametreler

AdYerTipAçıklama
appIdzorunlusorgustring

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonAnalyticsCatalogue

    Örnek · JSON
    {
      "metrics": [
        {
          "key": "string",
          "label": "string",
          "description": "string",
          "unit": "count",
          "goodDirection": "higher",
          "aggregation": "sum",
          "countingMode": "event_date",
          "formula": {
            "numerator": "string",
            "denominator": "string",
            "scale": 0
          },
          "tables": [
            "string"
          ],
          "dimensions": [
            "string"
          ],
          "parameter": {
            "name": "role",
            "values": []
          },
          "custom": true,
          "definitionId": "01a1b249-9ed2-77e8-af53-0c99529e68cb"
        }
      ],
      "dimensions": [
        {
          "key": "string",
          "label": "string",
          "description": "string",
          "kind": "time",
          "values": [
            {
              "key": "string",
              "label": "string"
            }
          ]
        }
      ],
      "roles": [
        {
          "key": "string",
          "label": "string"
        }
      ],
      "conversionRoles": [
        "signup"
      ],
      "compareModes": [
        "none"
      ],
      "filterOperators": [
        "eq"
      ],
      "attributionModels": [
        {
          "key": "first_touch",
          "label": "string",
          "description": "string"
        }
      ],
      "defaultAttributionModel": "first_touch",
      "attributionWindowDays": 0,
      "revenueBasis": "gross",
      "pricesIncludeTax": true
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

Davranış

7 uç

Oturumlar ve zaman çizelgesi, ısı haritası, takılma sinyalleri ve hızlı geri dönüş, JS hataları, ziyaretçi yolları ve sayfadan sayfaya geçişler, kişi ve hesap profilleri.

GET/v1/apps/{appId}/accounts

Hesaplar

Uygulamanın hesapları (group çağrıları ve context.groupId; B2B müşteri hesabı), son görülme, ilk görülme ya da üye sayısı sırasıyla, imleç sayfalı, toplamla. search hesap kimliğinin başı ya da name özelliğinin bir parçası. Management API (dalga 16; 07 YEN-13): kapsam persons:read; panelle aynı saklama kuralları — kişisel ya da hassas veri tanımlı ya da eylemi allow olmayan özellik özetiyle döner (hash) ya da hiç dönmez (drop, reject: yalnız adı withheldTraitste), kimlikler opak; profildeki talepler yalnız anahtarda leads:read de varsa.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: persons:read.

Kimlik
apiKey
Gerekli kapsam
persons:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

cursorsorgustring

Desen: ^[A-Za-z0-9_-]{1,512}$

limitsorguinteger

1–200 · Varsayılan: 50

searchsorgustring

1–200 karakter

sortsorgustring

Değerler: last_seen, first_seen, members · Varsayılan: last_seen

Yanıtlar

  • 200

    Başarılı.

    application/jsonAccountPage

    Örnek · JSON
    {
      "items": [
        {
          "groupId": "string",
          "name": "string",
          "traits": {},
          "memberCount": 0,
          "firstSeenAt": "2026-11-06T14:46:00+03:00",
          "lastSeenAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "nextCursor": "string",
      "total": 0
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/accounts/{groupId}

Hesap profili

Hesabın özellikleri (olay zamanına göre en yeni değer; kişisel veri tanımlı olanlar özetlenir ya da gösterilmez), ilk ve son görülme (olay zamanı), üyeleri (en son görülen 20), üyelerin son oturumları, olayları, dönüşümleri, ulaşılan roller, summary (üye, oturum, olay, dönüşüm, brüt gelir, iade, net gelir; metrik kataloğunun kurallarıyla, bütün geçmiş), talepler (leads.read ile). Bir olay hesabındır: kendi groupIdsi, yoksa kişisinin tek hesabıysa (hunilerin group kuralı). Hesap kimliği uygulamanın opak kimliğidir (adreste URL kodlu). Management API (dalga 16; 07 YEN-13): kapsam persons:read; panelle aynı saklama kuralları — kişisel ya da hassas veri tanımlı ya da eylemi allow olmayan özellik özetiyle döner (hash) ya da hiç dönmez (drop, reject: yalnız adı withheldTraitste), kimlikler opak; profildeki talepler yalnız anahtarda leads:read de varsa.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: persons:read.

Kimlik
apiKey
Gerekli kapsam
persons:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

groupIdzorunluyolstringSayfa grubunun kimliği (sayfa grubu uçları) ya da hesabın kimliği (groupId, hesap uçları).

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonAccountProfile

    Örnek · JSON
    {
      "account": {
        "groupId": "string",
        "name": "string",
        "traits": {},
        "memberCount": 0,
        "firstSeenAt": "2026-11-06T14:46:00+03:00",
        "lastSeenAt": "2026-11-06T14:46:00+03:00"
      },
      "summary": {
        "members": 0,
        "sessions": 0,
        "events": 0,
        "conversions": 0,
        "revenue": 0,
        "refunds": 0,
        "netRevenue": 0,
        "currency": "string",
        "leads": 0
      },
      "roles": [
        "string"
      ],
      "members": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "userId": "string",
          "firstSeenAt": "2026-11-06T14:46:00+03:00",
          "lastSeenAt": "2026-11-06T14:46:00+03:00",
          "firstChannel": "string",
          "eventCount": 0,
          "sessionCount": 0,
          "isTest": true,
          "isInternal": true,
          "joinedAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "sessions": [
        {
          "id": "string",
          "personId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "anonymousId": "string",
          "userId": "string",
          "startedAt": "2026-11-06T14:46:00+03:00",
          "endedAt": "2026-11-06T14:46:00+03:00",
          "durationMs": 0,
          "activeMs": 0,
          "pageviews": 0,
          "screenViews": 0,
          "events": 0,
          "interactions": 0,
          "rageClicks": 0,
          "deadClicks": 0,
          "errors": 0,
          "entryPath": "string",
          "exitPath": "string",
          "channel": "string",
          "source": "string",
          "medium": "string",
          "campaign": "string",
          "referrerHost": "string",
          "deviceType": "string",
          "os": "string",
          "browser": "string",
          "country": "string",
          "region": "string",
          "city": "string",
          "isEngaged": true,
          "isBounce": true,
          "roles": [
            "string"
          ],
          "converted": true,
          "revenue": 0,
          "isTest": true,
          "isInternal": true,
          "isBot": true
        }
      ],
      "events": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "at": "2026-11-06T14:46:00+03:00",
          "type": "track",
          "eventName": "string",
          "roles": [
            "string"
          ],
          "conversion": true,
          "revenue": 0,
          "path": "string",
          "sessionId": "string",
          "properties": {},
          "personId": "01a1b249-9ed2-77e8-af53-0c99529e68cb"
        }
      ],
      "conversions": [
        {
          "eventId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "at": "2026-11-06T14:46:00+03:00",
          "eventName": "string",
          "roles": [
            "string"
          ],
          "revenue": 0,
          "sessionId": "string",
          "channel": "string"
        }
      ],
      "leads": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "kind": "demo_request",
          "status": "new",
          "eventName": "string",
          "eventAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "withheldTraits": [
        "string"
      ]
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/accounts/{groupId}/events

Hesabın olay zaman çizelgesi

Hesabın bütün olayları (kişisiyle), yeniden eskiye, imleç sayfalı; type, conversions=true süzgeçleri. Management API (dalga 16; 07 YEN-13): kapsam persons:read; panelle aynı saklama kuralları — kişisel ya da hassas veri tanımlı ya da eylemi allow olmayan özellik özetiyle döner (hash) ya da hiç dönmez (drop, reject: yalnız adı withheldTraitste), kimlikler opak; profildeki talepler yalnız anahtarda leads:read de varsa.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: persons:read.

Kimlik
apiKey
Gerekli kapsam
persons:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

groupIdzorunluyolstringSayfa grubunun kimliği (sayfa grubu uçları) ya da hesabın kimliği (groupId, hesap uçları).

Biçim: uuid

cursorsorgustring

Desen: ^[A-Za-z0-9_-]{1,512}$

limitsorguinteger

1–200 · Varsayılan: 50

typesorgustring

Değerler: track, identify, page, screen, group, alias

conversionssorgustring

Değerler: true, false

Yanıtlar

  • 200

    Başarılı.

    application/jsonAccountEventPage

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "at": "2026-11-06T14:46:00+03:00",
          "type": "track",
          "eventName": "string",
          "roles": [
            "string"
          ],
          "conversion": true,
          "revenue": 0,
          "path": "string",
          "sessionId": "string",
          "properties": {},
          "personId": "01a1b249-9ed2-77e8-af53-0c99529e68cb"
        }
      ],
      "nextCursor": "string"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/accounts/{groupId}/members

Hesabın üyeleri

Hesabın bütün kişileri, son görülme sırasıyla, imleç sayfalı, toplamla; joinedAt kişinin hesapta ilk görüldüğü olay zamanı. Management API (dalga 16; 07 YEN-13): kapsam persons:read; panelle aynı saklama kuralları — kişisel ya da hassas veri tanımlı ya da eylemi allow olmayan özellik özetiyle döner (hash) ya da hiç dönmez (drop, reject: yalnız adı withheldTraitste), kimlikler opak; profildeki talepler yalnız anahtarda leads:read de varsa.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: persons:read.

Kimlik
apiKey
Gerekli kapsam
persons:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

groupIdzorunluyolstringSayfa grubunun kimliği (sayfa grubu uçları) ya da hesabın kimliği (groupId, hesap uçları).

Biçim: uuid

cursorsorgustring

Desen: ^[A-Za-z0-9_-]{1,512}$

limitsorguinteger

1–200 · Varsayılan: 50

Yanıtlar

  • 200

    Başarılı.

    application/jsonAccountMemberPage

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "userId": "string",
          "firstSeenAt": "2026-11-06T14:46:00+03:00",
          "lastSeenAt": "2026-11-06T14:46:00+03:00",
          "firstChannel": "string",
          "eventCount": 0,
          "sessionCount": 0,
          "isTest": true,
          "isInternal": true,
          "joinedAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "nextCursor": "string",
      "total": 0
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/persons

Kişiler

Uygulamanın kişileri (birleştirilmiş kişiler hariç), son görülme ya da ilk görülme sırasıyla, imleç sayfalı. search bir kullanıcı kimliği, anonim kimlik ya da kişi kimliğiyle tam eşleşir; searchMatch=prefix ile kişi kimliğinin başıyla da (en az 6 onaltılık karakter, tireler yok sayılır; birincil anahtarda kimlik aralığı) ve 16. dalgadan kullanıcı ya da anonim kimliğin başıyla (en az 3 karakter, büyük/küçük harf duyarlı, % ve _ harf olarak; desen dizini). Kimlikler opaktır; kişisel veri dönmez. Management API (dalga 16; 07 YEN-13): kapsam persons:read; panelle aynı saklama kuralları — kişisel ya da hassas veri tanımlı ya da eylemi allow olmayan özellik özetiyle döner (hash) ya da hiç dönmez (drop, reject: yalnız adı withheldTraitste), kimlikler opak; profildeki talepler yalnız anahtarda leads:read de varsa.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: persons:read.

Kimlik
apiKey
Gerekli kapsam
persons:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

cursorsorgustring

Desen: ^[A-Za-z0-9_-]{1,512}$

limitsorguinteger

1–200 · Varsayılan: 50

searchsorgustring

1–200 karakter

searchMatchsorgustring

Değerler: exact, prefix · Varsayılan: exact

sortsorgustring

Değerler: last_seen, first_seen · Varsayılan: last_seen

includeTestsorgustring

Değerler: true, false

includeInternalsorgustring

Değerler: true, false

includeBotsorgustring

Değerler: true, false

Yanıtlar

  • 200

    Başarılı.

    application/jsonPersonPage

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "userId": "string",
          "firstSeenAt": "2026-11-06T14:46:00+03:00",
          "lastSeenAt": "2026-11-06T14:46:00+03:00",
          "firstChannel": "string",
          "eventCount": 0,
          "sessionCount": 0,
          "isTest": true,
          "isInternal": true
        }
      ],
      "nextCursor": "string",
      "total": 0
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/persons/{personId}

Kişi profili

Kimlikler (anonim ve kullanıcı kimliği; kişisel veri değil; ilk görülme olay zamanına göre), özellikler (olay zamanına göre en yeni değer; kişisel veri tanımlı özellik özetlenir — hash — ya da gösterilmez — drop, reject: adı withheldTraitste), ilk ve son görülme olay zamanına göre, ilk ve son doğrudan olmayan temas, hesaplar, ulaşılan roller, birleşme geçmişi (merges), son oturumlar ve olaylar, dönüşümler, summary (oturum, olay, dönüşüm, brüt gelir, iade, net gelir — metrik kataloğunun kurallarıyla, bütün geçmiş, olay tarihine göre), talepler (yalnız leads.read ile; yoksa null). Birleştirilmiş bir kişi istenirse yaşayan kişi döner (requestedId isteneni söyler); birleşen kişilerin olayları arka planda yeniden yazılmadan önce de profildedir. Management API (dalga 16; 07 YEN-13): kapsam persons:read; panelle aynı saklama kuralları — kişisel ya da hassas veri tanımlı ya da eylemi allow olmayan özellik özetiyle döner (hash) ya da hiç dönmez (drop, reject: yalnız adı withheldTraitste), kimlikler opak; profildeki talepler yalnız anahtarda leads:read de varsa.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: persons:read.

Kimlik
apiKey
Gerekli kapsam
persons:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

personIdzorunluyolstringKişinin kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonPersonProfile

    Örnek · JSON
    {
      "requestedId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "person": {
        "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "userId": "string",
        "traits": {},
        "firstSeenAt": "2026-11-06T14:46:00+03:00",
        "lastSeenAt": "2026-11-06T14:46:00+03:00",
        "firstChannel": "string",
        "firstTouch": {},
        "lastNonDirectTouch": {},
        "eventCount": 0,
        "sessionCount": 0,
        "isTest": true,
        "isInternal": true,
        "mergedFrom": [
          "01a1b249-9ed2-77e8-af53-0c99529e68cb"
        ]
      },
      "identities": [
        {
          "kind": "anonymous_id",
          "value": "string",
          "firstSeenAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "groups": [
        {
          "groupId": "string",
          "traits": {},
          "memberCount": 0,
          "firstSeenAt": "2026-11-06T14:46:00+03:00",
          "lastSeenAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "roles": [
        "string"
      ],
      "sessions": [
        {
          "id": "string",
          "personId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "anonymousId": "string",
          "userId": "string",
          "startedAt": "2026-11-06T14:46:00+03:00",
          "endedAt": "2026-11-06T14:46:00+03:00",
          "durationMs": 0,
          "activeMs": 0,
          "pageviews": 0,
          "screenViews": 0,
          "events": 0,
          "interactions": 0,
          "rageClicks": 0,
          "deadClicks": 0,
          "errors": 0,
          "entryPath": "string",
          "exitPath": "string",
          "channel": "string",
          "source": "string",
          "medium": "string",
          "campaign": "string",
          "referrerHost": "string",
          "deviceType": "string",
          "os": "string",
          "browser": "string",
          "country": "string",
          "region": "string",
          "city": "string",
          "isEngaged": true,
          "isBounce": true,
          "roles": [
            "string"
          ],
          "converted": true,
          "revenue": 0,
          "isTest": true,
          "isInternal": true,
          "isBot": true
        }
      ],
      "events": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "at": "2026-11-06T14:46:00+03:00",
          "type": "track",
          "eventName": "string",
          "roles": [
            "string"
          ],
          "conversion": true,
          "revenue": 0,
          "path": "string",
          "sessionId": "string",
          "properties": {}
        }
      ],
      "summary": {
        "sessions": 0,
        "events": 0,
        "conversions": 0,
        "revenue": 0,
        "refunds": 0,
        "netRevenue": 0,
        "currency": "string",
        "leads": 0
      },
      "conversions": [
        {
          "eventId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "at": "2026-11-06T14:46:00+03:00",
          "eventName": "string",
          "roles": [
            "string"
          ],
          "revenue": 0,
          "sessionId": "string",
          "channel": "string"
        }
      ],
      "leads": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "kind": "demo_request",
          "status": "new",
          "eventName": "string",
          "eventAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "merges": [
        {
          "personId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "reason": "identify",
          "mergedAt": "2026-11-06T14:46:00+03:00",
          "rewritten": true
        }
      ],
      "withheldTraits": [
        "string"
      ]
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/persons/{personId}/events

Kişinin olay zaman çizelgesi

Kişinin (ve ona birleşen kişilerin) bütün olayları, yeniden eskiye, imleç sayfalı; type mesaj türü, conversions=true yalnız dönüşüm rolündeki olaylar. Management API (dalga 16; 07 YEN-13): kapsam persons:read; panelle aynı saklama kuralları — kişisel ya da hassas veri tanımlı ya da eylemi allow olmayan özellik özetiyle döner (hash) ya da hiç dönmez (drop, reject: yalnız adı withheldTraitste), kimlikler opak; profildeki talepler yalnız anahtarda leads:read de varsa.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: persons:read.

Kimlik
apiKey
Gerekli kapsam
persons:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

personIdzorunluyolstringKişinin kimliği.

Biçim: uuid

cursorsorgustring

Desen: ^[A-Za-z0-9_-]{1,512}$

limitsorguinteger

1–200 · Varsayılan: 50

typesorgustring

Değerler: track, identify, page, screen, group, alias

conversionssorgustring

Değerler: true, false

Yanıtlar

  • 200

    Başarılı.

    application/jsonPersonEventPage

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "at": "2026-11-06T14:46:00+03:00",
          "type": "track",
          "eventName": "string",
          "roles": [
            "string"
          ],
          "conversion": true,
          "revenue": 0,
          "path": "string",
          "sessionId": "string",
          "properties": {}
        }
      ],
      "nextCursor": "string"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

Veri hakları

4 uç

Kişisel veri silme talepleri (KVKK): kullanıcı kimliği, anonim kimlik ya da kişi kimliğiyle bir kişinin uygulamadaki bütün verisi silinir, talep kaydı ve silinenler kalır.

GET/v1/apps/{appId}/privacy/deletion-requests

Silme talepleri

Uygulamanın talepleri, yeniden eskiye, imleç sayfalı, toplamla; status süzgeci; kapsam management:read. result silinen satırları türüne göre sayar (sürerken o ana kadar).

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:read.

Kimlik
apiKey
Gerekli kapsam
management:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

cursorsorgustring

Desen: ^[A-Za-z0-9_-]{1,512}$

limitsorguinteger

1–200 · Varsayılan: 50

statussorgustringYalnız bu durumdaki talepler.

Değerler: pending, running, completed, failed, cancelled

Yanıtlar

  • 200

    Başarılı.

    application/jsonDeletionRequestPage

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "subjectKind": "user_id",
          "subjectHint": "string",
          "status": "pending",
          "note": "string",
          "requestedVia": "panel",
          "requestedBy": {
            "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
            "name": "string"
          },
          "result": {},
          "errorCode": "string",
          "createdAt": "2026-11-06T14:46:00+03:00",
          "startedAt": "2026-11-06T14:46:00+03:00",
          "completedAt": "2026-11-06T14:46:00+03:00",
          "nothingFound": true
        }
      ],
      "nextCursor": "string",
      "total": 0
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

POST/v1/apps/{appId}/privacy/deletion-requests

Silme talebi oluştur

Ürünün sunucusu, kullanıcısı unutulmak istediğinde (KVKK) talebi açar; kapsam management:write. Worker talebi dakikalar içinde yürütür: kişi ve ona birleşmiş bütün kişiler, kimlikleri, olayları (ve atıf satırları, webhook kopyaları), etkileşimleri, oturumları, hesap üyelikleri, talepleri, kilometre taşları ve aynı kullanıcı kimliğiyle bağlı Mailing & SMS kişisi (izin kanıtı yasa gereği kör dizinle kalır) silinir; özet tablolar kalan veriden yeniden hesaplanır. Talep başladıktan sonra alınan veri talebe girmez. Kimliğin değeri yalnız talep bitene kadar tutulur; listede son karakterleri (subjectHint) görünür. E-posta ya da telefon gibi görünen kimlik alımdaki gibi özetlenerek aranır. Açık talebi olan kimliğe yeni talep aynı talebi döndürür.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonCreateDeletionRequest

AlanTipAçıklama
subjectKindzorunlustringKimliğin türü: ürünün kullanıcı kimliği (user_id), SDK'nın anonim kimliği (anonymous_id) ya da Postlip Metrics'in kişi kimliği (person_id).

Değerler: user_id, anonymous_id, person_id

subjectValuezorunlustringKimliğin değeri (en çok 200 karakter). E-posta ya da telefon gibi görünen kimlik alımdaki gibi özetlenerek aranır; değer talep bitene kadar tutulur.

1–200 karakter

notestringNeden (talep numarası, başvurunun kanalı); kişisel veri yazmayın. En çok 500 karakter.

null olabilir

Örnek · JSON
{
  "subjectKind": "user_id",
  "subjectValue": "string",
  "note": "string"
}

Yanıtlar

  • 201

    Oluşturuldu.

    application/jsonDeletionRequest

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "subjectKind": "user_id",
      "subjectHint": "string",
      "status": "pending",
      "note": "string",
      "requestedVia": "panel",
      "requestedBy": {
        "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "name": "string"
      },
      "result": {},
      "errorCode": "string",
      "createdAt": "2026-11-06T14:46:00+03:00",
      "startedAt": "2026-11-06T14:46:00+03:00",
      "completedAt": "2026-11-06T14:46:00+03:00",
      "nothingFound": true
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/privacy/deletion-requests/{requestId}

Silme talebi

Talebin durumu ve silinenler; kapsam management:read. nothingFound: talep tamamlandı ama kimliğe ait veri yoktu.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:read.

Kimlik
apiKey
Gerekli kapsam
management:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

requestIdzorunluyolstringSilme talebinin kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonDeletionRequest

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "subjectKind": "user_id",
      "subjectHint": "string",
      "status": "pending",
      "note": "string",
      "requestedVia": "panel",
      "requestedBy": {
        "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "name": "string"
      },
      "result": {},
      "errorCode": "string",
      "createdAt": "2026-11-06T14:46:00+03:00",
      "startedAt": "2026-11-06T14:46:00+03:00",
      "completedAt": "2026-11-06T14:46:00+03:00",
      "nothingFound": true
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

POST/v1/apps/{appId}/privacy/deletion-requests/{requestId}/cancel

Silme talebini iptal et

Yalnız bekleyen talep (409 DELETION_REQUEST_NOT_CANCELLABLE); kimliğin değeri silinir; kapsam management:write. Denetim kaydına anahtarın adıyla yazılır.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:write.

Kimlik
apiKey
Gerekli kapsam
management:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

requestIdzorunluyolstringSilme talebinin kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonDeletionRequest

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "subjectKind": "user_id",
      "subjectHint": "string",
      "status": "pending",
      "note": "string",
      "requestedVia": "panel",
      "requestedBy": {
        "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "name": "string"
      },
      "result": {},
      "errorCode": "string",
      "createdAt": "2026-11-06T14:46:00+03:00",
      "startedAt": "2026-11-06T14:46:00+03:00",
      "completedAt": "2026-11-06T14:46:00+03:00",
      "nothingFound": true
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

Dönüşüm

4 uç

Huniler (tanım, sonuç, dönüşüm süresi, kırılım, adımın kişileri) ve atıf servisinin modelleri.

GET/v1/apps/{appId}/funnels

Management API: huniler

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:read.

Kimlik
apiKey
Gerekli kapsam
management:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonFunnelList

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "name": "string",
          "description": "string",
          "steps": [
            {
              "event": "string",
              "role": "signup",
              "filters": [],
              "label": "string"
            }
          ],
          "order": "ordered",
          "countBy": "person",
          "conversionWindow": {
            "value": 0,
            "unit": "minutes"
          },
          "countingMode": "event_date",
          "isDefault": true,
          "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00"
        }
      ]
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/funnels/{funnelId}

Management API: huni tanımı

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: management:read.

Kimlik
apiKey
Gerekli kapsam
management:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

funnelIdzorunluyolstringHuninin kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonFunnel

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "name": "string",
      "description": "string",
      "steps": [
        {
          "event": "string",
          "role": "signup",
          "filters": [
            {
              "property": "string",
              "op": "eq",
              "value": "string"
            }
          ],
          "label": "string"
        }
      ],
      "order": "ordered",
      "countBy": "person",
      "conversionWindow": {
        "value": 0,
        "unit": "minutes"
      },
      "countingMode": "event_date",
      "isDefault": true,
      "sideMetrics": [
        {
          "event": "string",
          "role": "signup",
          "filters": [
            {
              "property": "string",
              "op": "eq",
              "value": "string"
            }
          ],
          "label": "string",
          "without": {
            "event": "string",
            "role": "signup",
            "filters": [],
            "withinDays": 0
          }
        }
      ],
      "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00"
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/funnels/{funnelId}/results

Management API: huni sonucu

Panelin huni sonucu entegrasyonlar için (tazelik ve isteğe bağlı karşılaştırmayla); kapsam query:read. Adım: bir olay adı (event) ya da iş rolü (role) ve olay özelliği filtreleri (eq, neq, in, not_in, contains, not_contains, starts_with, is_empty, is_not_empty; sayısal gt, gte, lt, lte). Giriş: öznenin dönem içindeki ilk 1. adım olayı (uygulamanın yerel günleri). ordered: k. adım, (k−1). adımdan sonraki ilk k. adım olayıdır (zaman, sonra kimlik); any_order: girişten sonraki ilk k. adım olayıdır, diğerlerinin sırası aranmaz — yanıtta adım başına "ulaşan" verilir, kayıp verilmez (negatif kayıp çıkmaz). Pencere (conversionWindow) girişten itibaren sayılır; yoksa sınır yok. Sayım birimi: person (birleşmiş kimlikler tek kişi), session, group (olayın hesabı, yoksa kişinin tek hesabı). Sayım modu yanıtta açıkça yazar: cohort dönemde giren özneleri bugüne (ya da pencerenin sonuna) kadar izler (followedUntil); event_date bütün adımların dönem içinde olmasını ister. Test, iç ve bot trafiği istenmedikçe dışarıdadır. Dönüşüm süresi: adım başına önceki adımdan (yalnız ordered) ve girişten saniye olarak ortalama, medyan, p75, p90 ve dağılım (1 dk, 5 dk, 15 dk, 1 sa, 6 sa, 1 g, 3 g, 7 g, 14 g, 30 g, üstü). $pageview / $screen adımında path süzgeci olayın sayfa yolunu (page_path) okur (metin kuralları; sayısal işleçler eşleşmez). Yan göstergeler (sideMetrics, en çok 5): girenlerden girişte ya da sonrasında (pencere içinde; event_date'te dönem içinde) göstergenin olayı olan özne sayısı ve girenlere oranı; without ile yalnız ilk bu olaydan sonra withinDays gün içinde without olayı olmayanlar — süresi dolmamışlar pending.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: query:read.

Kimlik
apiKey
Gerekli kapsam
query:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

funnelIdzorunluyolstringHuninin kimliği.

Biçim: uuid

fromzorunlusorgustring
tozorunlusorgustring
countingModesorgustring

Değerler: event_date, cohort

breakdownsorgustring
attributionModelsorgustring

Değerler: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

includeTestsorgustring

Değerler: true, false

includeInternalsorgustring

Değerler: true, false

includeBotsorgustring

Değerler: true, false

comparesorgustring

Değerler: none, previous_period, previous_year · Varsayılan: none

alignmentsorgustring

Değerler: week_to_date, month_to_date, calendar_month, quarter_to_date, calendar_quarter, year_to_date, calendar_year

seriessorgustring

Değerler: day, week, month

seriesBasissorgustring

Değerler: step_date, entry_date · Varsayılan: step_date

Yanıtlar

  • 200

    Başarılı.

    application/jsonFunnelScreenResult

    Örnek · JSON
    {
      "funnel": {
        "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "name": "string",
        "order": "ordered",
        "countBy": "person",
        "conversionWindow": {
          "value": 0,
          "unit": "minutes"
        }
      },
      "countingMode": "event_date",
      "dateRange": {
        "from": "string",
        "to": "string"
      },
      "timezone": "string",
      "followedUntil": "2026-11-06T14:46:00+03:00",
      "include": {
        "test": true,
        "internal": true,
        "bot": true
      },
      "steps": [
        {
          "index": 0,
          "label": "string",
          "event": "string",
          "role": "signup",
          "count": 0,
          "ofFirst": 0,
          "ofPrevious": 0,
          "dropOff": 0,
          "timeFromPrevious": {
            "count": 0,
            "averageSeconds": 0,
            "medianSeconds": 0,
            "p75Seconds": 0,
            "p90Seconds": 0,
            "histogram": []
          },
          "timeFromFirst": {
            "count": 0,
            "averageSeconds": 0,
            "medianSeconds": 0,
            "p75Seconds": 0,
            "p90Seconds": 0,
            "histogram": []
          }
        }
      ],
      "breakdown": {
        "dimension": "channel",
        "attributionModel": "first_touch",
        "rows": [
          {
            "value": "string",
            "steps": []
          }
        ],
        "others": [
          0
        ]
      },
      "extraBreakdown": {
        "dimension": "channel",
        "attributionModel": null,
        "rows": [
          {
            "value": "string",
            "steps": []
          }
        ],
        "others": [
          0
        ]
      },
      "warnings": [
        {
          "code": "ATTRIBUTION_NOT_CONVERSION",
          "message": "string"
        }
      ],
      "series": {
        "granularity": "day",
        "basis": "step_date",
        "points": [
          {
            "date": "string",
            "start": "string",
            "end": "string",
            "steps": []
          }
        ],
        "afterRange": [
          0
        ]
      },
      "sideMetrics": [
        {
          "index": 0,
          "label": "string",
          "event": "string",
          "role": "signup",
          "count": 0,
          "ofEntered": 0,
          "pending": 0,
          "withinDays": 0
        }
      ],
      "generatedAt": "2026-11-06T14:46:00+03:00",
      "freshness": {
        "processedUntil": "2026-11-06T14:46:00+03:00",
        "lastEventReceivedAt": "2026-11-06T14:46:00+03:00",
        "upToDate": true,
        "updatedAt": "2026-11-06T14:46:00+03:00",
        "pendingRollupDays": 0
      },
      "comparison": {
        "dateRange": {
          "from": "string",
          "to": "string"
        },
        "comparable": true,
        "steps": [
          {
            "index": 0,
            "count": 0,
            "ofFirst": 0,
            "ofPrevious": 0
          }
        ]
      }
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/funnels/{funnelId}/results/cohorts

Management API: huni kohort ısı haritası

Panelin kohort ısı haritası entegrasyonlar için; kapsam query:read. Haftalık giriş kohortları, girişten sonraki haftalara göre birikimli ulaşma, düşük örnek işareti.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: query:read.

Kimlik
apiKey
Gerekli kapsam
query:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

funnelIdzorunluyolstringHuninin kimliği.

Biçim: uuid

fromzorunlusorgustring
tozorunlusorgustring
stepsorguinteger

2–10

weekssorguinteger

1–26 · Varsayılan: 8

includeTestsorgustring

Değerler: true, false

includeInternalsorgustring

Değerler: true, false

includeBotsorgustring

Değerler: true, false

Yanıtlar

  • 200

    Başarılı.

    application/jsonFunnelCohorts

    Örnek · JSON
    {
      "funnel": {
        "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "name": "string",
        "countBy": "person"
      },
      "basis": "entry_week",
      "countingMode": "cohort",
      "dateRange": {
        "from": "string",
        "to": "string"
      },
      "timezone": "string",
      "followedUntil": "2026-11-06T14:46:00+03:00",
      "step": 0,
      "weeks": 0,
      "minSubjects": 0,
      "include": {
        "test": true,
        "internal": true,
        "bot": true
      },
      "cohorts": [
        {
          "week": "string",
          "start": "string",
          "end": "string",
          "entered": 0,
          "lowSample": true,
          "cells": [
            {
              "week": 0,
              "reached": 0,
              "rate": 0,
              "complete": true
            }
          ]
        }
      ],
      "total": [
        {
          "week": 0,
          "entered": 0,
          "reached": 0,
          "rate": 0
        }
      ],
      "freshness": {
        "processedUntil": "2026-11-06T14:46:00+03:00",
        "lastEventReceivedAt": "2026-11-06T14:46:00+03:00",
        "upToDate": true,
        "updatedAt": "2026-11-06T14:46:00+03:00",
        "pendingRollupDays": 0
      },
      "generatedAt": "2026-11-06T14:46:00+03:00"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

Talepler

2 uç

Talep kutusu: durum, sorumlu, notlar, kaynak ve atıf anlık görüntüsü; kişisel veri yok.

GET/v1/apps/{appId}/leads

Management API: talepler

Ürünün kendi arka ofisi için talep kutusu; kapsam leads:read. Talep kişisel veri taşımaz: ad, telefon ve e-posta saklanmaz; olayın yalnız kişisel olmayan özellikleri (tanımı pii_class: none ya da tanımsız, anahtarı iletişim alanı olmayan) tutulur, kişi opak kimlikleriyle bağlanır.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: leads:read.

Kimlik
apiKey
Gerekli kapsam
leads:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

cursorsorgustring

Desen: ^[A-Za-z0-9_-]{1,512}$

limitsorguinteger

1–200 · Varsayılan: 50

statussorgustring

en çok 500 karakter

stagesorgustring | string[]
kindsorgustring

en çok 500 karakter

assigneesorgustring
channelsorgustring | string[]
campaignsorgustring | string[]
overduesorgustring

Değerler: true, false

ctasorgustring | string[]
sourcesorgustring | string[]
mediumsorgustring | string[]
deviceTypesorgustring

1–50 karakter

countrysorgustring

2–2 karakter

fromsorgustring
tosorgustring
includeTestsorgustring

Değerler: true, false

includeInternalsorgustring

Değerler: true, false

Yanıtlar

  • 200

    Başarılı.

    application/jsonLeadPage

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "kind": "demo_request",
          "status": "new",
          "statusReason": "string",
          "assignee": {
            "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
            "name": "string"
          },
          "eventId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "eventName": "string",
          "occurredAt": "2026-11-06T14:46:00+03:00",
          "personId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "userId": "string",
          "groupId": "string",
          "source": {
            "sessionId": "string",
            "channel": "string",
            "source": "string",
            "medium": "string",
            "campaign": "string",
            "referrerHost": "string",
            "entryPath": "string",
            "pagePath": "string",
            "deviceType": "string",
            "country": "string"
          },
          "attribution": {
            "model": "first_touch",
            "windowDays": 0,
            "firstTouch": {
              "sessionId": "string",
              "at": "string",
              "channel": "string",
              "source": "string",
              "medium": "string",
              "campaign": "string",
              "resolution": "click_id",
              "weight": 0
            },
            "lastTouch": {
              "sessionId": "string",
              "at": "string",
              "channel": "string",
              "source": "string",
              "medium": "string",
              "campaign": "string",
              "resolution": "click_id",
              "weight": 0
            },
            "lastNonDirect": {
              "sessionId": "string",
              "at": "string",
              "channel": "string",
              "source": "string",
              "medium": "string",
              "campaign": "string",
              "resolution": "click_id",
              "weight": 0
            }
          },
          "properties": {},
          "isTest": true,
          "isInternal": true,
          "noteCount": 0,
          "statusChangedAt": "2026-11-06T14:46:00+03:00",
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "nextCursor": "string",
      "total": 0,
      "counts": {},
      "stageCounts": {},
      "overdue": 0
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/leads/{leadId}

Management API: talep

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: leads:read.

Kimlik
apiKey
Gerekli kapsam
leads:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

leadIdzorunluyolstringTalebin kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonLeadDetail

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "kind": "demo_request",
      "status": "new",
      "stage": "string",
      "dueAt": "2026-11-06T14:46:00+03:00",
      "overdue": true,
      "statusReason": "string",
      "assignee": {
        "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "name": "string"
      },
      "eventId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "eventName": "string",
      "occurredAt": "2026-11-06T14:46:00+03:00",
      "personId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "userId": "string",
      "groupId": "string",
      "source": {
        "sessionId": "string",
        "channel": "string",
        "source": "string",
        "medium": "string",
        "campaign": "string",
        "referrerHost": "string",
        "entryPath": "string",
        "pagePath": "string",
        "deviceType": "string",
        "country": "string"
      },
      "attribution": {
        "model": "first_touch",
        "windowDays": 0,
        "firstTouch": {
          "sessionId": "string",
          "at": "string",
          "channel": "string",
          "source": "string",
          "medium": "string",
          "campaign": "string",
          "resolution": "click_id",
          "weight": 0
        },
        "lastTouch": {
          "sessionId": "string",
          "at": "string",
          "channel": "string",
          "source": "string",
          "medium": "string",
          "campaign": "string",
          "resolution": "click_id",
          "weight": 0
        },
        "lastNonDirect": {
          "sessionId": "string",
          "at": "string",
          "channel": "string",
          "source": "string",
          "medium": "string",
          "campaign": "string",
          "resolution": "click_id",
          "weight": 0
        }
      },
      "lastClick": {
        "at": "2026-11-06T14:46:00+03:00",
        "path": "string",
        "selector": "string",
        "label": "string",
        "kind": "string",
        "section": "string",
        "contact": "phone"
      },
      "properties": {},
      "isTest": true,
      "isInternal": true,
      "noteCount": 0,
      "statusChangedAt": "2026-11-06T14:46:00+03:00",
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00",
      "notes": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "body": "string",
          "author": {
            "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
            "name": "string"
          },
          "createdAt": "2026-11-06T14:46:00+03:00",
          "editedAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "statusHistory": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "from": "new",
          "to": "new",
          "reason": "string",
          "changedBy": {
            "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
            "name": "string"
          },
          "changedAt": "2026-11-06T14:46:00+03:00"
        }
      ]
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

Bağlantılar

1 uç

Reklam ve analytics platformlarına bağlantılar (OAuth 2.0 + PKCE, API anahtarı, CSV), hesap seçimi, senkron, çalışma günlüğü, sağlık.

GET/v1/apps/{appId}/connections

Management API: bağlantılar

Uygulamanın bağlantıları ve sağlıkları; kapsam ads:read. Erişim belirteçleri ve API anahtarları sır kutusunda (AES-GCM) saklanır, hiçbir yanıtta dönmez.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: ads:read.

Kimlik
apiKey
Gerekli kapsam
ads:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonConnectionList

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "provider": "google_ads",
          "kind": "ads",
          "authType": "oauth2",
          "mode": "live",
          "label": "string",
          "scopes": [
            "string"
          ],
          "syncIntervalMinutes": 0,
          "lookbackDays": 0,
          "backfillDays": 0,
          "health": {
            "status": "active",
            "lastSuccessAt": "2026-11-06T14:46:00+03:00",
            "lastRunAt": "2026-11-06T14:46:00+03:00",
            "lastRunStatus": "running",
            "lastError": {
              "code": "auth_failed",
              "message": "string"
            },
            "consecutiveFailures": 0,
            "nextRunAt": "2026-11-06T14:46:00+03:00",
            "syncedUntil": "string",
            "tokenExpiresAt": "2026-11-06T14:46:00+03:00"
          },
          "accounts": [
            {
              "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
              "kind": "ad_account",
              "externalId": "string",
              "name": "string",
              "currency": "string",
              "timezone": "string",
              "platformStatus": "string",
              "selected": true
            }
          ],
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00"
        }
      ]
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

Reklam

4 uç

Reklam özeti, kampanyalar ve reklamlar, raporlar, kırılımlar, bütçe planı ve tempo, kampanya planları.

GET/v1/apps/{appId}/ads/accounts

Management API: reklam hesapları

Kapsam ads:read.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: ads:read.

Kimlik
apiKey
Gerekli kapsam
ads:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonAdAccountList

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "platform": "string",
          "externalId": "string",
          "name": "string",
          "currency": "string",
          "timezone": "string",
          "status": "active",
          "connectionId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "lastSyncedAt": "2026-11-06T14:46:00+03:00",
          "link": "string"
        }
      ]
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/ads/budget

Management API: bütçe ve tempo

Kapsam ads:read.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: ads:read.

Kimlik
apiKey
Gerekli kapsam
ads:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

monthsorgustring

Desen: ^\d{4}-(0[1-9]|1[0-2])$ · 7–7 karakter

Yanıtlar

  • 200

    Başarılı.

    application/jsonAdsBudget

    Örnek · JSON
    {
      "month": "string",
      "currency": "string",
      "daysInMonth": 0,
      "daysElapsed": 0,
      "tolerance": 0,
      "total": {
        "platform": "string",
        "adAccountId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "budget": 0,
        "spent": 0,
        "remaining": 0,
        "used": 0,
        "expectedToDate": 0,
        "dailyAverage": 0,
        "requiredDaily": 0,
        "forecast": 0,
        "forecastRatio": 0,
        "activeDailyBudgets": 0,
        "state": "on_track"
      },
      "lines": [
        {
          "platform": "string",
          "adAccountId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "budget": 0,
          "spent": 0,
          "remaining": 0,
          "used": 0,
          "expectedToDate": 0,
          "dailyAverage": 0,
          "requiredDaily": 0,
          "forecast": 0,
          "forecastRatio": 0,
          "activeDailyBudgets": 0,
          "state": "on_track"
        }
      ],
      "plans": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "month": "string",
          "platform": "string",
          "adAccountId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "amount": 0,
          "currency": "string",
          "note": "string",
          "createdAt": "2026-11-06T14:46:00+03:00",
          "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "supersededAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "cumulative": [
        {
          "day": "string",
          "spend": 0,
          "cumulative": 0,
          "plan": 0
        }
      ],
      "campaigns": [
        {
          "campaign": {
            "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
            "platform": "string",
            "accountId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
            "accountName": "string",
            "externalId": "string",
            "name": "string",
            "status": "active",
            "platformStatus": "string",
            "objective": "awareness",
            "platformObjective": "string",
            "channelType": "string",
            "budget": {
              "amount": 0,
              "type": "daily",
              "level": "campaign",
              "currency": "string"
            },
            "startDate": "string",
            "endDate": "string",
            "campaignGroup": {
              "externalId": "string",
              "name": "string"
            },
            "hasVideo": true,
            "adGroups": 0,
            "ads": 0,
            "link": "string"
          },
          "last7DaysSpend": 0,
          "dailyAverage": 0,
          "budgetUse": 0,
          "lastDataDay": "string"
        }
      ]
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/ads/campaigns

Management API: kampanyalar

Kapsam ads:read. Her sayı metrik kataloğundandır (sorgu servisi): platformun sayıları (spend, impressions, ad_clicks, ctr, cpc, cpm, platform_conversions) ve Postlip Metrics’in atıf servisiyle reklama verdiği dönüşümler (ad_conversions, ad_conversions:<rol>, cpa, cpa:<rol>, ad_revenue, roas) yan yana, hiç karıştırılmaz. Harcama KDV hariç, günün kuruyla uygulamanın para biriminde; ROAS net gelir ÷ harcama. Hepsi olay tarihiyle sayılır (harcama harcandığı gün, dönüşüm gerçekleştiği gün). Aynı metrikler Query API'de (POST /v1/query, ad_* boyutları) de vardır.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: ads:read.

Kimlik
apiKey
Gerekli kapsam
ads:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

fromzorunlusorgustring
tozorunlusorgustring
comparesorgustring

Değerler: none, previous_period, previous_year · Varsayılan: previous_period

alignmentsorgustring

Değerler: week_to_date, month_to_date, calendar_month, quarter_to_date, calendar_quarter, year_to_date, calendar_year

includeTestsorgustring

Değerler: true, false

includeInternalsorgustring

Değerler: true, false

includeBotsorgustring

Değerler: true, false

platformssorgustring

en çok 4000 karakter

accountIdssorgustring

en çok 4000 karakter

attributionModelsorgustring

Değerler: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

statussorgustring

Değerler: active, paused, ended, all · Varsayılan: all

orderBysorgustring

1–100 karakter · Varsayılan: spend

directionsorgustring

Değerler: asc, desc · Varsayılan: desc

minClickssorguinteger

0–10000000 · Varsayılan: 20

searchsorgustring

1–100 karakter

namingsorgustring

Değerler: all, off_template, follows_template · Varsayılan: all

Yanıtlar

  • 200

    Başarılı.

    application/jsonAdsCampaigns

    Örnek · JSON
    {
      "metrics": {
        "metrics": [
          {
            "key": "string",
            "unit": "count",
            "goodDirection": "higher",
            "aggregation": "sum",
            "countingMode": "event_date",
            "source": "rollup"
          }
        ],
        "dimensions": [
          "string"
        ],
        "rows": [
          {
            "dimensions": {},
            "values": {},
            "bucket": {
              "start": "string",
              "end": "string",
              "days": 0,
              "complete": true,
              "beforeTracking": true
            },
            "previous": {},
            "previousBucket": {
              "start": "string",
              "end": "string"
            },
            "deltas": {}
          }
        ],
        "totals": {
          "values": {},
          "deltas": {}
        },
        "comparison": {
          "dateRange": {
            "from": "string",
            "to": "string"
          },
          "comparable": true,
          "totals": {}
        },
        "meta": {
          "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "timezone": "string",
          "currency": "string",
          "dateRange": {
            "from": "string",
            "to": "string"
          },
          "compare": "none",
          "comparisonRange": {
            "from": "string",
            "to": "string"
          },
          "include": {
            "test": true,
            "internal": true,
            "bot": true
          },
          "trackingStartedOn": "string",
          "freshness": {
            "processedUntil": "2026-11-06T14:46:00+03:00",
            "lastEventReceivedAt": "2026-11-06T14:46:00+03:00",
            "upToDate": true,
            "updatedAt": "2026-11-06T14:46:00+03:00",
            "pendingRollupDays": 0
          },
          "countingModes": {},
          "sources": {},
          "conversionRoles": [
            "signup"
          ],
          "attribution": {
            "model": "first_touch",
            "windowDays": 0
          },
          "warnings": [
            {
              "code": "DIMENSION_NOT_AVAILABLE",
              "message": "string",
              "metric": "string",
              "dimension": "string"
            }
          ],
          "truncated": true,
          "generatedAt": "2026-11-06T14:46:00+03:00"
        }
      },
      "campaigns": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "platform": "string",
          "accountId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "accountName": "string",
          "externalId": "string",
          "name": "string",
          "status": "active",
          "platformStatus": "string",
          "objective": "awareness",
          "platformObjective": "string",
          "channelType": "string",
          "budget": {
            "amount": 0,
            "type": "daily",
            "level": "campaign",
            "currency": "string"
          },
          "startDate": "string",
          "endDate": "string",
          "campaignGroup": {
            "externalId": "string",
            "name": "string"
          },
          "hasVideo": true,
          "adGroups": 0,
          "ads": 0,
          "link": "string"
        }
      ],
      "unmatched": {
        "metrics": [
          {
            "key": "string",
            "unit": "count",
            "goodDirection": "higher",
            "aggregation": "sum",
            "countingMode": "event_date",
            "source": "rollup"
          }
        ],
        "dimensions": [
          "string"
        ],
        "rows": [
          {
            "dimensions": {},
            "values": {},
            "bucket": {
              "start": "string",
              "end": "string",
              "days": 0,
              "complete": true,
              "beforeTracking": true
            },
            "previous": {},
            "previousBucket": {
              "start": "string",
              "end": "string"
            },
            "deltas": {}
          }
        ],
        "totals": {
          "values": {},
          "deltas": {}
        },
        "comparison": {
          "dateRange": {
            "from": "string",
            "to": "string"
          },
          "comparable": true,
          "totals": {}
        },
        "meta": {
          "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "timezone": "string",
          "currency": "string",
          "dateRange": {
            "from": "string",
            "to": "string"
          },
          "compare": "none",
          "comparisonRange": {
            "from": "string",
            "to": "string"
          },
          "include": {
            "test": true,
            "internal": true,
            "bot": true
          },
          "trackingStartedOn": "string",
          "freshness": {
            "processedUntil": "2026-11-06T14:46:00+03:00",
            "lastEventReceivedAt": "2026-11-06T14:46:00+03:00",
            "upToDate": true,
            "updatedAt": "2026-11-06T14:46:00+03:00",
            "pendingRollupDays": 0
          },
          "countingModes": {},
          "sources": {},
          "conversionRoles": [
            "signup"
          ],
          "attribution": {
            "model": "first_touch",
            "windowDays": 0
          },
          "warnings": [
            {
              "code": "DIMENSION_NOT_AVAILABLE",
              "message": "string",
              "metric": "string",
              "dimension": "string"
            }
          ],
          "truncated": true,
          "generatedAt": "2026-11-06T14:46:00+03:00"
        }
      },
      "counts": {
        "active": 0,
        "paused": 0,
        "ended": 0,
        "all": 0
      },
      "naming": {
        "hasTemplate": true,
        "offTemplate": 0,
        "followsTemplate": 0
      },
      "conversionRoles": [
        "signup"
      ],
      "originalSpend": {},
      "conversionRates": {
        "minClicks": 0,
        "items": [
          {
            "campaignId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
            "adClicks": 0,
            "adConversions": 0,
            "rate": 0
          }
        ]
      }
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/ads/conversions

Management API: reklamdan gelen dönüşümler

Kapsam ads:read. Panelin listesiyle aynı (07 REK-38): reklama atfedilen dönüşümler, ulaşılan en ileri aşama, opak kimlikler; kişisel veri yoktur.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: ads:read.

Kimlik
apiKey
Gerekli kapsam
ads:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

fromzorunlusorgustring
tozorunlusorgustring
includeTestsorgustring

Değerler: true, false

includeInternalsorgustring

Değerler: true, false

includeBotsorgustring

Değerler: true, false

platformssorgustring

en çok 4000 karakter

accountIdssorgustring

en çok 4000 karakter

campaignIdssorgustring

en çok 4000 karakter

rolesorgustring

Değerler: signup, login, trial_start, trial_end, activation, core_action, lead, demo_request, contact_click, checkout_start, payment_failed, purchase, subscription_renewal, refund, churn, referral

modelsorgustring

Değerler: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

scopesorgustring

Değerler: ads, all · Varsayılan: ads

cursorsorgustring

Desen: ^[A-Za-z0-9_-]{1,512}$

limitsorguinteger

1–200 · Varsayılan: 50

Yanıtlar

  • 200

    Başarılı.

    application/jsonAdConversionPage

    Örnek · JSON
    {
      "items": [
        {
          "eventId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "occurredAt": "2026-11-06T14:46:00+03:00",
          "role": "signup",
          "furthestRole": "signup",
          "sold": true,
          "accountId": "string",
          "personId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "channel": "string",
          "source": "string",
          "medium": "string",
          "platform": "string",
          "adAccountId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "campaignId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "campaignName": "string",
          "utmCampaign": "string",
          "adId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "adName": "string",
          "landingPage": "string",
          "resolution": "click_id",
          "model": "first_touch",
          "weight": 0,
          "isTest": true
        }
      ],
      "nextCursor": "string",
      "total": 0,
      "conversions": 0,
      "sold": 0,
      "model": "first_touch",
      "conversionRoles": [
        "signup"
      ],
      "countingMode": "event_date"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

Raporlar

7 uç

Bölüm kataloğu, raporlar ve şablonlar, donmuş çıktılar ve PDF, e-posta ve zamanlanmış gönderim, teslim günlüğü, paylaşım bağlantıları, AI özeti, tahmin.

GET/v1/apps/{appId}/forecast/scenarios

Tahmin senaryoları

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: reports:read.

Kimlik
apiKey
Gerekli kapsam
reports:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonForecastScenarioList

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "name": "string",
          "description": "string",
          "inputs": {
            "horizonMonths": 6,
            "basisDays": 90,
            "funnelId": null,
            "budgets": [],
            "elasticityMode": "estimate",
            "elasticity": 0.75,
            "scenarios": [
              {
                "key": "bad",
                "label": null,
                "costMultiplier": 1.25,
                "conversionMultiplier": 0.85,
                "organicMultiplier": 0.5
              },
              {
                "key": "realistic",
                "label": null,
                "costMultiplier": 1,
                "conversionMultiplier": 1,
                "organicMultiplier": 1
              },
              {
                "key": "good",
                "label": null,
                "costMultiplier": 0.85,
                "conversionMultiplier": 1.12,
                "organicMultiplier": 1.4
              }
            ],
            "includeOrganic": true
          },
          "computedAt": "2026-11-06T14:46:00+03:00",
          "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00"
        }
      ]
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/forecast/scenarios/{scenarioId}

Tahmin senaryosu

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: reports:read.

Kimlik
apiKey
Gerekli kapsam
reports:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

scenarioIdzorunluyolstringTahmin senaryosunun kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonForecastScenario

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "name": "string",
      "description": "string",
      "inputs": {
        "horizonMonths": 6,
        "basisDays": 90,
        "funnelId": null,
        "budgets": [],
        "elasticityMode": "estimate",
        "elasticity": 0.75,
        "scenarios": [
          {
            "key": "bad",
            "label": null,
            "costMultiplier": 1.25,
            "conversionMultiplier": 0.85,
            "organicMultiplier": 0.5
          },
          {
            "key": "realistic",
            "label": null,
            "costMultiplier": 1,
            "conversionMultiplier": 1,
            "organicMultiplier": 1
          },
          {
            "key": "good",
            "label": null,
            "costMultiplier": 0.85,
            "conversionMultiplier": 1.12,
            "organicMultiplier": 1.4
          }
        ],
        "includeOrganic": true
      },
      "result": {
        "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "currency": "string",
        "timezone": "string",
        "generatedAt": "2026-11-06T14:46:00+03:00",
        "method": {
          "key": "log_log_bootstrap",
          "description": "string",
          "assumptions": [
            "string"
          ]
        },
        "basis": {
          "from": "string",
          "to": "string",
          "days": 0,
          "role": "signup",
          "attributionModel": "first_touch",
          "countingModes": {
            "channels": "event_date",
            "steps": "event_date"
          },
          "channels": [
            {
              "platform": "string",
              "label": "string",
              "status": "ok",
              "reason": "string",
              "spend": 0,
              "conversions": 0,
              "spendPerDay": 0,
              "conversionsPerDay": 0,
              "cpa": 0,
              "elasticity": 0,
              "elasticitySource": "estimated",
              "rSquared": 0,
              "weeks": 0,
              "weeksWithSpend": 0,
              "maxSpendPerDay": 0,
              "plannedMonthlyBudget": 0,
              "marginalCpa": 0
            }
          ],
          "organic": {
            "conversions": 0,
            "perDay": 0,
            "trendPerMonth": 0
          },
          "steps": [
            {
              "role": "signup",
              "rate": 0,
              "lagDays": 0
            }
          ],
          "revenuePerConversion": 0,
          "elasticityPrior": 0
        },
        "scenarios": [
          {
            "key": "string",
            "label": "string",
            "costMultiplier": 0,
            "conversionMultiplier": 0,
            "organicMultiplier": 0,
            "months": [],
            "totals": {
              "budget": 0,
              "paid": {
                "p10": 0,
                "p50": 0,
                "p90": 0
              },
              "organic": {
                "p10": 0,
                "p50": 0,
                "p90": 0
              },
              "total": {
                "p10": 0,
                "p50": 0,
                "p90": 0
              },
              "steps": [],
              "revenue": {
                "p10": 0,
                "p50": 0,
                "p90": 0
              }
            }
          }
        ],
        "goal": {
          "monthlyConversions": 0,
          "monthlyBudget": 0,
          "scale": 0
        },
        "warnings": [
          {
            "code": "EXTRAPOLATION",
            "message": "string",
            "platform": "string"
          }
        ]
      },
      "computedAt": "2026-11-06T14:46:00+03:00",
      "actuals": [
        {
          "month": "string",
          "complete": true,
          "spend": 0,
          "paid": 0,
          "total": 0,
          "forecastPaid": 0
        }
      ],
      "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00"
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/reports

Raporlar

Anahtarın uygulama kapsamındaki raporlar. Kapsam: reports:read.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: reports:read.

Kimlik
apiKey
Gerekli kapsam
reports:read

Parametreler

AdYerTipAçıklama
cursorsorgustring

Desen: ^[A-Za-z0-9_-]{1,512}$

limitsorguinteger

1–200 · Varsayılan: 50

appIdsorgustring

Biçim: uuid

searchsorgustring

1–200 karakter

Yanıtlar

  • 200

    Başarılı.

    application/jsonReportPage

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "name": "string",
          "description": "string",
          "appIds": [
            "01a1b249-9ed2-77e8-af53-0c99529e68cb"
          ],
          "apps": [
            {
              "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
              "slug": "string",
              "name": "string",
              "timezone": "string",
              "currency": "string"
            }
          ],
          "sections": [
            {
              "type": "kpi",
              "metric": "string",
              "spark": true,
              "filters": []
            }
          ],
          "period": {
            "kind": "relative",
            "preset": "yesterday"
          },
          "compare": "none",
          "filters": [
            {
              "dimension": "string",
              "op": "eq",
              "value": "string"
            }
          ],
          "include": {
            "test": true,
            "internal": true,
            "bot": true
          },
          "attributionModel": "first_touch",
          "locale": "tr",
          "timezone": "string",
          "subtitle": "string",
          "templateKey": "string",
          "lastSnapshot": {
            "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
            "generatedAt": "2026-11-06T14:46:00+03:00",
            "from": "string",
            "to": "string"
          },
          "schedules": 0,
          "shareLinks": {
            "active": 0,
            "total": 0
          },
          "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "nextCursor": "string",
      "total": 0
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/reports/{reportId}

Rapor

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: reports:read.

Kimlik
apiKey
Gerekli kapsam
reports:read

Parametreler

AdYerTipAçıklama
reportIdzorunluyolstringRaporun kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonReport

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "name": "string",
      "description": "string",
      "appIds": [
        "01a1b249-9ed2-77e8-af53-0c99529e68cb"
      ],
      "apps": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "slug": "string",
          "name": "string",
          "timezone": "string",
          "currency": "string"
        }
      ],
      "sections": [
        {
          "type": "kpi",
          "metric": "string",
          "spark": true,
          "filters": []
        }
      ],
      "period": {
        "kind": "relative",
        "preset": "yesterday"
      },
      "compare": "none",
      "filters": [
        {
          "dimension": "string",
          "op": "eq",
          "value": "string"
        }
      ],
      "segmentId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "include": {
        "test": true,
        "internal": true,
        "bot": true
      },
      "attributionModel": "first_touch",
      "locale": "tr",
      "timezone": "string",
      "subtitle": "string",
      "templateKey": "string",
      "lastSnapshot": {
        "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "generatedAt": "2026-11-06T14:46:00+03:00",
        "from": "string",
        "to": "string"
      },
      "schedules": 0,
      "shareLinks": {
        "active": 0,
        "total": 0
      },
      "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00"
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/reports/{reportId}/snapshots

Rapor çıktıları

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: reports:read.

Kimlik
apiKey
Gerekli kapsam
reports:read

Parametreler

AdYerTipAçıklama
reportIdzorunluyolstringRaporun kimliği.

Biçim: uuid

cursorsorgustring

Desen: ^[A-Za-z0-9_-]{1,512}$

limitsorguinteger

1–200 · Varsayılan: 50

Yanıtlar

  • 200

    Başarılı.

    application/jsonReportSnapshotPage

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "reportId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "name": "string",
          "subtitle": "string",
          "trigger": "manual",
          "period": {
            "from": "string",
            "to": "string",
            "preset": "yesterday"
          },
          "comparison": {
            "mode": "none",
            "from": "string",
            "to": "string"
          },
          "timezone": "string",
          "locale": "tr",
          "generatedAt": "2026-11-06T14:46:00+03:00",
          "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "scheduleId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "aiSummaryStatus": "disabled"
        }
      ],
      "nextCursor": "string"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/reports/{reportId}/snapshots/{snapshotId}

Rapor çıktısı

Donmuş sayılar: her bölümün sorgu servisi yanıtları, tazelik, AI özeti. Her sayı sorgu servisinin (metrik kataloğu) yanıtıdır: bölümün kendi formülü yoktur; oranlar pay ve paydanın toplamından, her sonuç sayım modunu (event_date / cohort) söyler.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: reports:read.

Kimlik
apiKey
Gerekli kapsam
reports:read

Parametreler

AdYerTipAçıklama
reportIdzorunluyolstringRaporun kimliği.

Biçim: uuid

snapshotIdzorunluyolstringRapor çıktısının kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonReportSnapshot

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "reportId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "name": "string",
      "subtitle": "string",
      "trigger": "manual",
      "period": {
        "from": "string",
        "to": "string",
        "preset": "yesterday"
      },
      "comparison": {
        "mode": "none",
        "from": "string",
        "to": "string"
      },
      "timezone": "string",
      "locale": "tr",
      "generatedAt": "2026-11-06T14:46:00+03:00",
      "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "scheduleId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "apps": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "slug": "string",
          "name": "string",
          "timezone": "string",
          "currency": "string"
        }
      ],
      "filters": [
        {
          "dimension": "string",
          "op": "eq",
          "value": "string"
        }
      ],
      "include": {
        "test": true,
        "internal": true,
        "bot": true
      },
      "attributionModel": "first_touch",
      "freshness": [
        {
          "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "processedUntil": "2026-11-06T14:46:00+03:00",
          "lastEventReceivedAt": "2026-11-06T14:46:00+03:00",
          "upToDate": true,
          "pendingRollupDays": 0,
          "adsSyncedAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "sections": [
        {
          "id": "string",
          "type": "kpi",
          "title": "string",
          "subtitle": "string",
          "size": "kpi",
          "definition": {
            "type": "kpi",
            "metric": "string",
            "spark": true,
            "filters": []
          },
          "metrics": [
            {
              "key": "string",
              "label": "string",
              "description": "string",
              "unit": "count",
              "goodDirection": "higher",
              "countingMode": "event_date"
            }
          ],
          "countingModes": [
            "event_date"
          ],
          "text": "string",
          "apps": [
            {
              "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
              "status": "ok",
              "message": "string",
              "results": {},
              "funnel": {
                "funnel": {
                  "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
                  "name": "string",
                  "order": "ordered",
                  "countBy": "person",
                  "conversionWindow": {
                    "value": 0,
                    "unit": "minutes"
                  }
                },
                "countingMode": "event_date",
                "dateRange": {
                  "from": "string",
                  "to": "string"
                },
                "timezone": "string",
                "followedUntil": "2026-11-06T14:46:00+03:00",
                "include": {
                  "test": true,
                  "internal": true,
                  "bot": true
                },
                "steps": [],
                "breakdown": {
                  "dimension": "channel",
                  "attributionModel": "first_touch",
                  "rows": [],
                  "others": []
                },
                "warnings": [],
                "generatedAt": "2026-11-06T14:46:00+03:00"
              },
              "labels": {},
              "lines": [],
              "derived": {
                "share": {
                  "metric": "string",
                  "total": 0,
                  "rows": []
                },
                "steps": [],
                "stack": {
                  "metric": "string",
                  "dimension": "string",
                  "buckets": [],
                  "series": [],
                  "others": []
                }
              }
            }
          ]
        }
      ],
      "aiSummary": {
        "status": "disabled",
        "locale": "tr",
        "text": "string",
        "model": "string",
        "generatedAt": "2026-11-06T14:46:00+03:00",
        "error": "string"
      }
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/reports/{reportId}/snapshots/{snapshotId}/pdf

PDF indir

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: reports:read.

Kimlik
apiKey
Gerekli kapsam
reports:read

Parametreler

AdYerTipAçıklama
reportIdzorunluyolstringRaporun kimliği.

Biçim: uuid

snapshotIdzorunluyolstringRapor çıktısının kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Rapor çıktısının PDF’i (sunucuda çizilir: kapak, içindekiler, vektör grafikler, sayfa numaraları).

    Yanıt başlıkları

    • Content-Dispositionstring

      attachment; filename="…"

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

Sosyal medya

4 uç

Instagram, Facebook sayfası ve LinkedIn şirket sayfası hesapları; özet, en iyi paylaşım zamanı, gönderiler ve sayıları; içerik takvimi, planlanan gönderiler, onay akışı, zamanlanmış yayın ve hatırlatmalar.

GET/v1/apps/{appId}/social/accounts

Sosyal medya hesapları

Uygulamanın sosyal medya hesapları, yetenekleri ve tazelikleri. Kapsam: social:read.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: social:read.

Kimlik
apiKey
Gerekli kapsam
social:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonSocialAccountList

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "platform": "instagram",
          "status": "active",
          "connectionId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "externalId": "string",
          "username": "string",
          "name": "string",
          "profile": {
            "bio": "string",
            "website": "string",
            "avatarUrl": "string",
            "pageUrl": "string"
          },
          "followers": 0,
          "mediaCount": 0,
          "autoPublish": true,
          "capabilities": {
            "insights": true,
            "publish": true,
            "formats": [],
            "autoPublishFormats": []
          },
          "freshness": {
            "lastSyncedAt": "2026-11-06T14:46:00+03:00",
            "nextSyncAt": "2026-11-06T14:46:00+03:00",
            "lastError": {
              "code": "string",
              "message": "string"
            }
          },
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00"
        }
      ]
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/social/overview

Sosyal medya özeti

KPI’lar ve günlük seriler. Her sayı metrik kataloğundandır (social.<platform|all>.<metrik>, sorgu servisi): raporlar, bildirim eşikleri ve Query API aynı tanımı okur. Oranlar pay ve paydanın toplamından hesaplanır (etkileşim oranı = Σ etkileşim ÷ Σ erişim). Tekil erişim toplanamaz: dönemin tekil erişimi (reach, platformun verdiği pencerelerde) ile günlük erişimlerin toplamı (daily_reach) ayrı metriklerdir; birden çok hesapta tekil erişim yalnız uyarıyla gösterilir. Değeri olmayan her metrik sebebini söyler (bağlı değil, izin yok, platform vermiyor, dönem sınırı, geçmiş sınırı, veri yok). Aynı metrikler Query API’de (POST /v1/query, query:read) de sorgulanır. Kapsam: social:read.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: social:read.

Kimlik
apiKey
Gerekli kapsam
social:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

platformsorgustring

Değerler: all, instagram, facebook, linkedin · Varsayılan: all

accountIdssorgustring

en çok 4000 karakter

fromzorunlusorgustring
tozorunlusorgustring
comparesorgustring

Değerler: none, previous_period, previous_year · Varsayılan: previous_period

alignmentsorgustring

Değerler: week_to_date, month_to_date, calendar_month, quarter_to_date, calendar_quarter, year_to_date, calendar_year

granularitysorgustring

Değerler: day, week, month · Varsayılan: day

Yanıtlar

  • 200

    Başarılı.

    application/jsonSocialOverview

    Örnek · JSON
    {
      "scope": {
        "platform": "all",
        "accountIds": [
          "01a1b249-9ed2-77e8-af53-0c99529e68cb"
        ]
      },
      "accounts": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "platform": "instagram",
          "name": "string",
          "username": "string",
          "lastSyncedAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "kpis": [
        {
          "metric": "string",
          "label": "string",
          "description": "string",
          "unit": "count",
          "goodDirection": "higher",
          "countingMode": "event_date",
          "value": 0,
          "previous": 0,
          "delta": {
            "previous": 0,
            "absolute": 0,
            "relative": 0,
            "mode": "relative",
            "direction": "up",
            "tone": "positive",
            "comparable": true,
            "reason": "zero_base"
          },
          "unavailable": {
            "reason": "not_provided",
            "message": "string"
          },
          "notAdditive": true
        }
      ],
      "series": {
        "metrics": [
          {
            "key": "string",
            "unit": "count",
            "goodDirection": "higher",
            "aggregation": "sum",
            "countingMode": "event_date",
            "source": "rollup"
          }
        ],
        "dimensions": [
          "string"
        ],
        "rows": [
          {
            "dimensions": {},
            "values": {},
            "bucket": {
              "start": "string",
              "end": "string",
              "days": 0,
              "complete": true,
              "beforeTracking": true
            },
            "previous": {},
            "previousBucket": {
              "start": "string",
              "end": "string"
            },
            "deltas": {}
          }
        ],
        "totals": {
          "values": {},
          "deltas": {}
        },
        "comparison": {
          "dateRange": {
            "from": "string",
            "to": "string"
          },
          "comparable": true,
          "totals": {}
        },
        "meta": {
          "appId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "timezone": "string",
          "currency": "string",
          "dateRange": {
            "from": "string",
            "to": "string"
          },
          "compare": "none",
          "comparisonRange": {
            "from": "string",
            "to": "string"
          },
          "include": {
            "test": true,
            "internal": true,
            "bot": true
          },
          "trackingStartedOn": "string",
          "freshness": {
            "processedUntil": "2026-11-06T14:46:00+03:00",
            "lastEventReceivedAt": "2026-11-06T14:46:00+03:00",
            "upToDate": true,
            "updatedAt": "2026-11-06T14:46:00+03:00",
            "pendingRollupDays": 0
          },
          "countingModes": {},
          "sources": {},
          "conversionRoles": [
            "signup"
          ],
          "attribution": {
            "model": "first_touch",
            "windowDays": 0
          },
          "warnings": [
            {
              "code": "DIMENSION_NOT_AVAILABLE",
              "message": "string",
              "metric": "string",
              "dimension": "string"
            }
          ],
          "truncated": true,
          "generatedAt": "2026-11-06T14:46:00+03:00"
        }
      },
      "warnings": [
        {
          "code": "DIMENSION_NOT_AVAILABLE",
          "message": "string",
          "metric": "string",
          "dimension": "string"
        }
      ],
      "posts": 0,
      "uniqueByAccount": [
        {
          "accountId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "kpis": [
            {
              "metric": "string",
              "value": 0,
              "previous": 0,
              "delta": {
                "previous": 0,
                "absolute": 0,
                "relative": 0,
                "mode": "relative",
                "direction": "up",
                "tone": "positive",
                "comparable": true,
                "reason": "zero_base"
              },
              "unavailable": {
                "reason": "not_provided",
                "message": "string"
              }
            }
          ]
        }
      ]
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/social/posts

Gönderiler

Eşitlenen gönderiler ve sayıları. Gönderiler yayın tarihine göre sayılır (kohort): bir gönderinin sonradan gelen etkileşimi yayın gününe yazılır. Platformda doğrudan paylaşılan gönderiler de vardır; Postlip Metrics’ten yayımlanan gönderi planlanan gönderiye bağlanır (plannedPostId). Kapsam: social:read.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: social:read.

Kimlik
apiKey
Gerekli kapsam
social:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

cursorsorgustring

Desen: ^[A-Za-z0-9_-]{1,512}$

limitsorguinteger

1–200 · Varsayılan: 50

platformsorgustring

Değerler: all, instagram, facebook, linkedin · Varsayılan: all

accountIdssorgustring

en çok 4000 karakter

fromsorgustring
tosorgustring
typesorgustring

Değerler: image, carousel, video, reel, story, text, link, other

searchsorgustring

en çok 200 karakter

campaignsorgustring

en çok 120 karakter

sortsorgustring

Değerler: newest, engagement, reach · Varsayılan: newest

Yanıtlar

  • 200

    Başarılı.

    application/jsonSocialPublishedPostPage

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "accountId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "platform": "instagram",
          "externalId": "string",
          "type": "image",
          "caption": "string",
          "permalink": "string",
          "publishedAt": "2026-11-06T14:46:00+03:00",
          "publishedLocal": {
            "date": "string",
            "time": "string"
          },
          "thumbnailUrl": "string",
          "metrics": {
            "likes": 0,
            "comments": 0,
            "shares": 0,
            "saves": 0,
            "reach": 0,
            "views": 0,
            "clicks": 0,
            "engagement": 0,
            "engagementRate": 0
          },
          "unavailable": {},
          "plannedPostId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "campaignKey": "string",
          "metricsUpdatedAt": "2026-11-06T14:46:00+03:00",
          "nextRefreshAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "nextCursor": "string",
      "countingMode": "event_date",
      "total": 0
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/social/posts/{postId}

Gönderi ayrıntısı

Gönderinin sayıları ve zaman içindeki değişimi. Kapsam: social:read.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: social:read.

Kimlik
apiKey
Gerekli kapsam
social:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

postIdzorunluyolstringGönderinin ya da yazının kimliği (planlanan / eşitlenen sosyal gönderi ya da blog yazısı, uca göre).

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonSocialPublishedPostDetail

    Örnek · JSON
    {
      "post": {
        "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "accountId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "platform": "instagram",
        "externalId": "string",
        "type": "image",
        "caption": "string",
        "permalink": "string",
        "publishedAt": "2026-11-06T14:46:00+03:00",
        "publishedLocal": {
          "date": "string",
          "time": "string"
        },
        "thumbnailUrl": "string",
        "metrics": {
          "likes": 0,
          "comments": 0,
          "shares": 0,
          "saves": 0,
          "reach": 0,
          "views": 0,
          "clicks": 0,
          "engagement": 0,
          "engagementRate": 0
        },
        "unavailable": {},
        "plannedPostId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "campaignKey": "string",
        "metricsUpdatedAt": "2026-11-06T14:46:00+03:00",
        "nextRefreshAt": "2026-11-06T14:46:00+03:00"
      },
      "history": [
        {
          "capturedAt": "2026-11-06T14:46:00+03:00",
          "likes": 0,
          "comments": 0,
          "shares": 0,
          "saves": 0,
          "reach": 0,
          "views": 0,
          "clicks": 0
        }
      ]
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

Segmentler

3 uç

Kural tabanlı kişi kümeleri: kişi alanları, izinler, listeler ve bağlı kişinin olayları (iş rolüyle); kullanıldıkları anda değerlendirilir.

GET/v1/apps/{appId}/analytics/segments

Kişi ve hesap segmentleri

Query API isteğinin segmentId ile adlandırabileceği segmentler (subject ile yalnız biri). Kapsam: query:read.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: query:read.

Kimlik
apiKey
Gerekli kapsam
query:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

subjectsorgustring

Değerler: person, account

Yanıtlar

  • 200

    Başarılı.

    application/jsonAnalyticsSegmentList

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "name": "string",
          "description": "string",
          "subject": "person",
          "rules": {
            "match": "all",
            "conditions": []
          },
          "lastCount": 0,
          "lastCountedAt": "2026-11-06T14:46:00+03:00",
          "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00"
        }
      ]
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/analytics/segments/{segmentId}

Kişi ya da hesap segmenti

Analitik kişi (person) ya da hesap (account) segmenti (dalga 16; 07 YEN-18). Kurallar (en çok 20, all ya da any): özellik (trait: kişinin identify ya da hesabın group özelliği, olay zamanına göre en yeni değer — metin olarak büyük/küçük harf farksız eq, neq, in, contains, starts_with, is_empty, is_not_empty, yalnız JSON sayısına gt, gte, lt, lte), olay (event: iş rolü ya da olay adı, son N günde en az K kez — has: false ile yapmamış —, en çok 5 olay özelliği süzgeciyle; test ve bot trafiği sayılmaz, kişiye birleşen kişilerin olayları sayılır; hesapta kendi groupIdsi olan olaylar ve tek hesabı bu olan üyelerin hesapsız olayları) ve görülme (seen: ilk / son görülme son N günde ya da değil). Değerini profilde gizleyen özellik (kişisel ya da hassas veri sınıfı, allow dışı eylem) kural olamaz (trait_personal, property_personal). Segment kullanıldığı anda değerlendirilir, üye listesi saklanmaz. Kullanım: sorgunun, rapor ve bölümünün, eşik kuralının segmentId’si; 18. dalgadan Mailing kişi segmentinin analytics_segment kuralı ve Mailing metrikleri (alıcının kişisi, kullanıcı kimliğiyle) ile kampanya sonuçlarının segmentId’si. Kapsam: query:read.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: query:read.

Kimlik
apiKey
Gerekli kapsam
query:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

segmentIdzorunluyolstringSegmentin kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonAnalyticsSegment

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "name": "string",
      "description": "string",
      "subject": "person",
      "rules": {
        "match": "all",
        "conditions": [
          {}
        ]
      },
      "lastCount": 0,
      "lastCountedAt": "2026-11-06T14:46:00+03:00",
      "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00"
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

POST/v1/apps/{appId}/analytics/segments/{segmentId}/count

Kişi ya da hesap segmentini say

Segmentin şimdi eşleştiği kişi ya da hesap sayısı ve en son görülen ilk 10’unun opak kimliği; kişisel veri dönmez. Kapsam: query:read.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: query:read.

Kimlik
apiKey
Gerekli kapsam
query:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

segmentIdzorunluyolstringSegmentin kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonAnalyticsSegmentCount

    Örnek · JSON
    {
      "subject": "person",
      "count": 0,
      "sample": [
        "string"
      ],
      "readsEvents": true
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

Mailing & SMS

12 uç

Kişiler (kimlik bilgileri yalnız şifreli), listeler, özel alanlar, izinler ve kanıtları, içe / dışa aktarma, şablonlar, kampanyalar (test, onay, zamanlama, sonuçlar), işlemsel tetikleyiciler, sağlayıcılar, gönderen kimlikleri; iletilerin herkese açık adresleri (açılma pikseli, tıklama yönlendirmesi, abonelikten çıkma) ve sağlayıcı webhook'ları.

GET/v1/apps/{appId}/messaging/campaigns

Kampanyalar

Kapsam: messaging:read. Sayılar metrik kataloğundandır (email.*, sms.*; raporlar, bildirim eşikleri ve Query API aynı tanımı okur). İletiler gönderildikleri zamana göre sayılır (kohort): sonradan gelen açılma gönderim gününe yazılır. Oranlar pay ve paydanın toplamından hesaplanır (açılma oranı = Σ açılan ÷ Σ teslim).

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: messaging:read.

Kimlik
apiKey
Gerekli kapsam
messaging:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

cursorsorgustring

Desen: ^[A-Za-z0-9_-]{1,512}$

limitsorguinteger

1–200 · Varsayılan: 50

channelsorgustring

Değerler: email, sms

statussorgustring

Değerler: draft, awaiting_approval, scheduled, sending, paused, sent, cancelled, failed

Yanıtlar

  • 200

    Başarılı.

    application/jsonMessageCampaignPage

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "channel": "email",
          "name": "string",
          "slug": "string",
          "utm": {
            "source": "string",
            "medium": "string",
            "campaign": "string"
          },
          "templateId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "subject": "string",
          "preheader": "string",
          "body": "string",
          "senderId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "audience": {
            "listIds": [],
            "segmentId": "01a1b249-9ed2-77e8-af53-0c99529e68cb"
          },
          "locale": "tr",
          "status": "draft",
          "schedule": {
            "date": "string",
            "time": "string",
            "timezone": "string",
            "at": "2026-11-06T14:46:00+03:00"
          },
          "start": {
            "at": "2026-11-06T14:46:00+03:00",
            "immediate": true
          },
          "throttlePerMinute": 0,
          "confirmation": {
            "testSentAt": "2026-11-06T14:46:00+03:00",
            "testSentBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
            "testCurrent": true,
            "confirmedAt": "2026-11-06T14:46:00+03:00",
            "confirmedBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb"
          },
          "approval": {
            "status": "pending",
            "requestedBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
            "requestedAt": "2026-11-06T14:46:00+03:00",
            "decidedBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
            "decidedAt": "2026-11-06T14:46:00+03:00",
            "note": "string"
          },
          "counts": {
            "recipients": 0,
            "queued": 0,
            "sending": 0,
            "sent": 0,
            "delivered": 0,
            "failed": 0,
            "bounced": 0,
            "unknown": 0,
            "skipped": 0,
            "opened": 0,
            "clicked": 0,
            "complained": 0,
            "unsubscribed": 0
          },
          "skippedByReason": {},
          "progress": 0,
          "errorCode": "string",
          "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00",
          "startedAt": "2026-11-06T14:46:00+03:00",
          "finishedAt": "2026-11-06T14:46:00+03:00"
        }
      ],
      "nextCursor": "string",
      "total": 0
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

POST/v1/apps/{appId}/messaging/campaigns

Kampanya oluştur

17. dalga (D8): panelin kurallarıyla taslak kampanya — kanal, ad, şablon ya da içerik, kitle (liste / segment), gönderen. Kapsam: messaging:write; denetim kaydına anahtar işlemi yapan olarak yazılır. Yanıtta kişisel veri yok.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: messaging:write.

Kimlik
apiKey
Gerekli kapsam
messaging:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonCreateMessageCampaignRequest

AlanTipAçıklama
channelzorunlustring

Değerler: email, sms

namezorunlustring

1–200 karakter

templateIdstring

Biçim: uuid

templateKeystring

en çok 80 karakter

subjectstring

null olabilir

preheaderstring

null olabilir

bodystring

en çok 20000 karakter

senderIdstring

null olabilir

audienceobject
audience.listIdsstring[]

en çok 20 öğe · Varsayılan: []

audience.segmentIdstring

null olabilir

localestring

Değerler: tr, en

throttlePerMinuteinteger

null olabilir

utmSourcestring

1–100 karakter

Örnek · JSON
{
  "channel": "email",
  "name": "string",
  "templateId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
  "templateKey": "string",
  "subject": "string",
  "preheader": "string",
  "body": "string",
  "senderId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
  "audience": {
    "listIds": [],
    "segmentId": "01a1b249-9ed2-77e8-af53-0c99529e68cb"
  },
  "locale": "tr",
  "throttlePerMinute": 1,
  "utmSource": "string"
}

Yanıtlar

  • 201

    Oluşturuldu.

    application/jsonMessageCampaign

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "channel": "email",
      "name": "string",
      "slug": "string",
      "utm": {
        "source": "string",
        "medium": "string",
        "campaign": "string"
      },
      "templateId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "subject": "string",
      "preheader": "string",
      "body": "string",
      "senderId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "audience": {
        "listIds": [
          "01a1b249-9ed2-77e8-af53-0c99529e68cb"
        ],
        "segmentId": "01a1b249-9ed2-77e8-af53-0c99529e68cb"
      },
      "locale": "tr",
      "status": "draft",
      "schedule": {
        "date": "string",
        "time": "string",
        "timezone": "string",
        "at": "2026-11-06T14:46:00+03:00"
      },
      "start": {
        "at": "2026-11-06T14:46:00+03:00",
        "immediate": true
      },
      "throttlePerMinute": 0,
      "confirmation": {
        "testSentAt": "2026-11-06T14:46:00+03:00",
        "testSentBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "testCurrent": true,
        "confirmedAt": "2026-11-06T14:46:00+03:00",
        "confirmedBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb"
      },
      "approval": {
        "status": "pending",
        "requestedBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "requestedAt": "2026-11-06T14:46:00+03:00",
        "decidedBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "decidedAt": "2026-11-06T14:46:00+03:00",
        "note": "string"
      },
      "counts": {
        "recipients": 0,
        "queued": 0,
        "sending": 0,
        "sent": 0,
        "delivered": 0,
        "failed": 0,
        "bounced": 0,
        "unknown": 0,
        "skipped": 0,
        "opened": 0,
        "clicked": 0,
        "complained": 0,
        "unsubscribed": 0
      },
      "skippedByReason": {},
      "progress": 0,
      "errorCode": "string",
      "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00",
      "startedAt": "2026-11-06T14:46:00+03:00",
      "finishedAt": "2026-11-06T14:46:00+03:00"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 422

    İş kuralı ihlali. error.message kullanıcıya olduğu gibi gösterilebilir.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

PATCH/v1/apps/{appId}/messaging/campaigns/{campaignId}

Kampanyayı düzenle

17. dalga (D8): yalnız taslak; içerik değişince önceki test geçersiz olur. Kapsam: messaging:write.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: messaging:write.

Kimlik
apiKey
Gerekli kapsam
messaging:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

campaignIdzorunluyolstringKampanyanın Postlip Metrics’teki kimliği (reklam kampanyası ya da e-posta / SMS kampanyası, uca göre).

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonUpdateMessageCampaignRequest

AlanTipAçıklama
namestring

1–200 karakter

subjectstring

null olabilir

preheaderstring

null olabilir

bodystring

en çok 20000 karakter

senderIdstring

null olabilir

audienceobject
audience.listIdsstring[]

en çok 20 öğe · Varsayılan: []

audience.segmentIdstring

null olabilir

localestring

Değerler: tr, en

throttlePerMinuteinteger

null olabilir

utmSourcestring

1–100 karakter

Örnek · JSON
{
  "name": "string",
  "subject": "string",
  "preheader": "string",
  "body": "string",
  "senderId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
  "audience": {
    "listIds": [],
    "segmentId": "01a1b249-9ed2-77e8-af53-0c99529e68cb"
  },
  "locale": "tr",
  "throttlePerMinute": 1,
  "utmSource": "string"
}

Yanıtlar

  • 200

    Başarılı.

    application/jsonMessageCampaign

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "channel": "email",
      "name": "string",
      "slug": "string",
      "utm": {
        "source": "string",
        "medium": "string",
        "campaign": "string"
      },
      "templateId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "subject": "string",
      "preheader": "string",
      "body": "string",
      "senderId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "audience": {
        "listIds": [
          "01a1b249-9ed2-77e8-af53-0c99529e68cb"
        ],
        "segmentId": "01a1b249-9ed2-77e8-af53-0c99529e68cb"
      },
      "locale": "tr",
      "status": "draft",
      "schedule": {
        "date": "string",
        "time": "string",
        "timezone": "string",
        "at": "2026-11-06T14:46:00+03:00"
      },
      "start": {
        "at": "2026-11-06T14:46:00+03:00",
        "immediate": true
      },
      "throttlePerMinute": 0,
      "confirmation": {
        "testSentAt": "2026-11-06T14:46:00+03:00",
        "testSentBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "testCurrent": true,
        "confirmedAt": "2026-11-06T14:46:00+03:00",
        "confirmedBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb"
      },
      "approval": {
        "status": "pending",
        "requestedBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "requestedAt": "2026-11-06T14:46:00+03:00",
        "decidedBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "decidedAt": "2026-11-06T14:46:00+03:00",
        "note": "string"
      },
      "counts": {
        "recipients": 0,
        "queued": 0,
        "sending": 0,
        "sent": 0,
        "delivered": 0,
        "failed": 0,
        "bounced": 0,
        "unknown": 0,
        "skipped": 0,
        "opened": 0,
        "clicked": 0,
        "complained": 0,
        "unsubscribed": 0
      },
      "skippedByReason": {},
      "progress": 0,
      "errorCode": "string",
      "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00",
      "startedAt": "2026-11-06T14:46:00+03:00",
      "finishedAt": "2026-11-06T14:46:00+03:00"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/messaging/campaigns/{campaignId}/results

Kampanya sonuçları

Kapsam: messaging:read; isteğe bağlı segmentId (18. dalga). Sayılar metrik kataloğundandır (email.*, sms.*; raporlar, bildirim eşikleri ve Query API aynı tanımı okur). İletiler gönderildikleri zamana göre sayılır (kohort): sonradan gelen açılma gönderim gününe yazılır. Oranlar pay ve paydanın toplamından hesaplanır (açılma oranı = Σ açılan ÷ Σ teslim).

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: messaging:read.

Kimlik
apiKey
Gerekli kapsam
messaging:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

campaignIdzorunluyolstringKampanyanın Postlip Metrics’teki kimliği (reklam kampanyası ya da e-posta / SMS kampanyası, uca göre).

Biçim: uuid

segmentIdsorgustring

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonCampaignResults

    Örnek · JSON
    {
      "campaignId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "channel": "email",
      "status": "draft",
      "counts": {
        "recipients": 0,
        "queued": 0,
        "sending": 0,
        "sent": 0,
        "delivered": 0,
        "failed": 0,
        "bounced": 0,
        "unknown": 0,
        "skipped": 0,
        "opened": 0,
        "clicked": 0,
        "complained": 0,
        "unsubscribed": 0
      },
      "metrics": {},
      "progress": 0,
      "utm": {
        "source": "string",
        "medium": "string",
        "campaign": "string"
      },
      "traffic": {
        "from": "string",
        "to": "string",
        "sessions": 0,
        "conversions": 0,
        "conversionsByRole": {},
        "revenue": 0,
        "countingMode": "event_date"
      },
      "countingMode": "cohort",
      "unavailable": {},
      "segment": {
        "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "name": "string"
      }
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

POST/v1/apps/{appId}/messaging/campaigns/{campaignId}/send

Kampanyayı gönder

17. dalga (D8): şimdi ya da bir zamanda (schedule, uygulamanın saat diliminde); içeriğin gözden geçirildiği ve onay (contentReviewed, confirm) zorunlu. Uygulama onay istiyorsa kampanya onaya düşer — anahtar onaylayamaz, bir üyenin onayını bekler. Kapsam: messaging:write, denetim kaydıyla.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: messaging:write.

Kimlik
apiKey
Gerekli kapsam
messaging:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

campaignIdzorunluyolstringKampanyanın Postlip Metrics’teki kimliği (reklam kampanyası ya da e-posta / SMS kampanyası, uca göre).

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonSendCampaignRequest

AlanTipAçıklama
contentReviewedzorunluboolean

Sabit: true

confirmzorunluboolean

Sabit: true

scheduleMessagingLocalTime

null olabilir

notestring

null olabilir

Örnek · JSON
{
  "contentReviewed": true,
  "confirm": true,
  "schedule": {
    "date": "string",
    "time": "string"
  },
  "note": "string"
}

Yanıtlar

  • 200

    Başarılı.

    application/jsonMessageCampaign

    Örnek · JSON
    {
      "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "channel": "email",
      "name": "string",
      "slug": "string",
      "utm": {
        "source": "string",
        "medium": "string",
        "campaign": "string"
      },
      "templateId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "subject": "string",
      "preheader": "string",
      "body": "string",
      "senderId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "audience": {
        "listIds": [
          "01a1b249-9ed2-77e8-af53-0c99529e68cb"
        ],
        "segmentId": "01a1b249-9ed2-77e8-af53-0c99529e68cb"
      },
      "locale": "tr",
      "status": "draft",
      "schedule": {
        "date": "string",
        "time": "string",
        "timezone": "string",
        "at": "2026-11-06T14:46:00+03:00"
      },
      "start": {
        "at": "2026-11-06T14:46:00+03:00",
        "immediate": true
      },
      "throttlePerMinute": 0,
      "confirmation": {
        "testSentAt": "2026-11-06T14:46:00+03:00",
        "testSentBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "testCurrent": true,
        "confirmedAt": "2026-11-06T14:46:00+03:00",
        "confirmedBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb"
      },
      "approval": {
        "status": "pending",
        "requestedBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "requestedAt": "2026-11-06T14:46:00+03:00",
        "decidedBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "decidedAt": "2026-11-06T14:46:00+03:00",
        "note": "string"
      },
      "counts": {
        "recipients": 0,
        "queued": 0,
        "sending": 0,
        "sent": 0,
        "delivered": 0,
        "failed": 0,
        "bounced": 0,
        "unknown": 0,
        "skipped": 0,
        "opened": 0,
        "clicked": 0,
        "complained": 0,
        "unsubscribed": 0
      },
      "skippedByReason": {},
      "progress": 0,
      "errorCode": "string",
      "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "createdAt": "2026-11-06T14:46:00+03:00",
      "updatedAt": "2026-11-06T14:46:00+03:00",
      "startedAt": "2026-11-06T14:46:00+03:00",
      "finishedAt": "2026-11-06T14:46:00+03:00"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 422

    İş kuralı ihlali. error.message kullanıcıya olduğu gibi gösterilebilir.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

POST/v1/apps/{appId}/messaging/campaigns/{campaignId}/test

Test gönder

17. dalga (D8): verilen adreslere (en çok birkaç) test iletisi; panelde olduğu gibi gönderimden önce gerekir. Kapsam: messaging:write.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: messaging:write.

Kimlik
apiKey
Gerekli kapsam
messaging:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

campaignIdzorunluyolstringKampanyanın Postlip Metrics’teki kimliği (reklam kampanyası ya da e-posta / SMS kampanyası, uca göre).

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonTestSendRequest

AlanTipAçıklama
recipientszorunlustring[]

1–5 öğe

contactIdstring

Biçim: uuid

Örnek · JSON
{
  "recipients": [
    "string"
  ],
  "contactId": "01a1b249-9ed2-77e8-af53-0c99529e68cb"
}

Yanıtlar

  • 200

    Başarılı.

    application/jsonTestSendResult

    Örnek · JSON
    {
      "results": [
        {
          "to": "string",
          "status": "sent",
          "errorCode": "string"
        }
      ],
      "sms": {
        "encoding": "gsm7",
        "characters": 0,
        "units": 0,
        "parts": 0,
        "perPart": 0,
        "remaining": 0,
        "credits": 0,
        "unsupported": [
          "string"
        ]
      },
      "campaign": {
        "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "channel": "email",
        "name": "string",
        "slug": "string",
        "utm": {
          "source": "string",
          "medium": "string",
          "campaign": "string"
        },
        "templateId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "subject": "string",
        "preheader": "string",
        "body": "string",
        "senderId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "audience": {
          "listIds": [
            "01a1b249-9ed2-77e8-af53-0c99529e68cb"
          ],
          "segmentId": "01a1b249-9ed2-77e8-af53-0c99529e68cb"
        },
        "locale": "tr",
        "status": "draft",
        "schedule": {
          "date": "string",
          "time": "string",
          "timezone": "string",
          "at": "2026-11-06T14:46:00+03:00"
        },
        "start": {
          "at": "2026-11-06T14:46:00+03:00",
          "immediate": true
        },
        "throttlePerMinute": 0,
        "confirmation": {
          "testSentAt": "2026-11-06T14:46:00+03:00",
          "testSentBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "testCurrent": true,
          "confirmedAt": "2026-11-06T14:46:00+03:00",
          "confirmedBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb"
        },
        "approval": {
          "status": "pending",
          "requestedBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "requestedAt": "2026-11-06T14:46:00+03:00",
          "decidedBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "decidedAt": "2026-11-06T14:46:00+03:00",
          "note": "string"
        },
        "counts": {
          "recipients": 0,
          "queued": 0,
          "sending": 0,
          "sent": 0,
          "delivered": 0,
          "failed": 0,
          "bounced": 0,
          "unknown": 0,
          "skipped": 0,
          "opened": 0,
          "clicked": 0,
          "complained": 0,
          "unsubscribed": 0
        },
        "skippedByReason": {},
        "progress": 0,
        "errorCode": "string",
        "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
        "createdAt": "2026-11-06T14:46:00+03:00",
        "updatedAt": "2026-11-06T14:46:00+03:00",
        "startedAt": "2026-11-06T14:46:00+03:00",
        "finishedAt": "2026-11-06T14:46:00+03:00"
      }
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 422

    İş kuralı ihlali. error.message kullanıcıya olduğu gibi gösterilebilir.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

POST/v1/apps/{appId}/messaging/consents

İzni değiştir

Kişi kimliği, e-postası, telefonu ya da kullanıcı kimliğiyle. Hiçbir kişide olmayan bir adres için ret (opt_out) yine kaydedilir: adres bastırılır, kanıt kör dizinle saklanır. Kapsam: messaging:write.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: messaging:write.

Kimlik
apiKey
Gerekli kapsam
messaging:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonManagementConsentRequest

AlanTipAçıklama
contactIdstring

Biçim: uuid

emailstring

en çok 320 karakter

phonestring

en çok 40 karakter

userIdstring

1–200 karakter

channelzorunlustring

Değerler: email, sms

kindzorunlustring

Değerler: none, merchant, opt_in, opt_out

reasonstring

null olabilir

evidencestring

null olabilir

formstring

null olabilir

occurredAtstring

Biçim: date-time

Örnek · JSON
{
  "contactId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
  "email": "string",
  "phone": "string",
  "userId": "string",
  "channel": "email",
  "kind": "none",
  "reason": "string",
  "evidence": "string",
  "form": "string",
  "occurredAt": "2026-11-06T14:46:00+03:00"
}

Yanıtlar

  • 200

    Başarılı.

    application/jsonConsentResult

    Örnek · JSON
    {
      "contactId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "kind": "none"
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 422

    İş kuralı ihlali. error.message kullanıcıya olduğu gibi gösterilebilir.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

PUT/v1/apps/{appId}/messaging/contacts

Kişi ekle ya da güncelle

E-posta, telefon ya da uygulamanın kullanıcı kimliğiyle eşleşen kişi güncellenir, yoksa oluşturulur (kopya yok). İzinler kanıtıyla (formun adı, zaman, gerekçe). İzin kanal × uygulama başına: none (onay yok), merchant (tacir / esnaf), opt_in (onaylı), opt_out (ret). Gönderilebilir = merchant ya da opt_in, adres var, bastırma listesinde değil. Her değişiklik değiştirilemez bir kanıt kaydı yazar (kaynak, zaman, form / ekran, kim, istemci adresinin özeti — adresin kendisi değil); izin vermek (opt_in, merchant) kanıt ister. Yanıt kişisel veri yankılamaz. Kapsam: messaging:write.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: messaging:write.

Kimlik
apiKey
Gerekli kapsam
messaging:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonUpsertContactRequest

AlanTipAçıklama
namestring

null olabilir

emailstring

null olabilir

phonestring

null olabilir

mobilestring

null olabilir

landlinestring

null olabilir

companystring

null olabilir

titlestring

null olabilir

citystring

null olabilir

districtstring

null olabilir

userIdstring

null olabilir

localestring

null olabilir

tagsstring[]

en çok 30 öğe

consentsobject
consents.emailConsentChange
consents.smsConsentChange
listIdsstring[]

en çok 50 öğe

Örnek · JSON
{
  "name": "string",
  "email": "string",
  "phone": "string",
  "mobile": "string",
  "landline": "string",
  "company": "string",
  "title": "string",
  "city": "string",
  "district": "string",
  "userId": "string",
  "locale": "tr",
  "tags": [
    "string"
  ],
  "consents": {
    "email": {
      "kind": "none"
    },
    "sms": {
      "kind": "none"
    }
  },
  "listIds": [
    "01a1b249-9ed2-77e8-af53-0c99529e68cb"
  ]
}

Yanıtlar

  • 200

    Başarılı.

    application/jsonUpsertContactResult

    Örnek · JSON
    {
      "contactId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
      "created": true,
      "consents": {
        "email": "none",
        "sms": "none"
      }
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 422

    İş kuralı ihlali. error.message kullanıcıya olduğu gibi gösterilebilir.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

POST/v1/apps/{appId}/messaging/contacts/erase

Kişiyi sil (KVKK)

Kişi ve şifreli değerleri silinir; izin kanıtı ve bastırma kör dizinle kalır. Kapsam: messaging:write.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: messaging:write.

Kimlik
apiKey
Gerekli kapsam
messaging:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonContactReference

AlanTipAçıklama
contactIdstring

Biçim: uuid

emailstring

en çok 320 karakter

phonestring

en çok 40 karakter

userIdstring

1–200 karakter

Örnek · JSON
{
  "contactId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
  "email": "string",
  "phone": "string",
  "userId": "string"
}

Yanıtlar

  • 200

    Başarılı.

    application/jsonEraseContactResult

    Örnek · JSON
    {
      "erased": 0
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 422

    İş kuralı ihlali. error.message kullanıcıya olduğu gibi gösterilebilir.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

GET/v1/apps/{appId}/messaging/lists

Listeler

Kapsam: messaging:read.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: messaging:read.

Kimlik
apiKey
Gerekli kapsam
messaging:read

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

Yanıtlar

  • 200

    Başarılı.

    application/jsonContactListList

    Örnek · JSON
    {
      "items": [
        {
          "id": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "name": "string",
          "description": "string",
          "contacts": 0,
          "emailSendable": 0,
          "smsSendable": 0,
          "createdBy": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
          "createdAt": "2026-11-06T14:46:00+03:00",
          "updatedAt": "2026-11-06T14:46:00+03:00"
        }
      ]
    }
  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

POST/v1/apps/{appId}/messaging/lists/{listId}/members

Liste üyeliği

Kişiler kimlik, e-posta, telefon ya da kullanıcı kimliğiyle eklenir / çıkarılır; bulunamayanlar sayılır. Kapsam: messaging:write.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: messaging:write.

Kimlik
apiKey
Gerekli kapsam
messaging:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

listIdzorunluyolstringKişi listesinin kimliği.

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonManagementListMembersRequest

AlanTipAçıklama
addContactReference[]

en çok 1000 öğe · Varsayılan: []

removeContactReference[]

en çok 1000 öğe · Varsayılan: []

Örnek · JSON
{
  "add": [],
  "remove": []
}

Yanıtlar

  • 200

    Başarılı.

    application/jsonListMembersResult

    Örnek · JSON
    {
      "added": 0,
      "removed": 0,
      "notFound": 0
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 422

    İş kuralı ihlali. error.message kullanıcıya olduğu gibi gösterilebilir.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

POST/v1/apps/{appId}/messaging/suppressions

Bastırma listesi

Bir adresi ya da numarayı bastırma listesine ekle / çıkar. Kapsam: messaging:write.

Management API anahtarı gerekir (Authorization: Bearer mk_…); işlem anahtarın organizasyonunda ve uygulama kapsamında tek bir RLS işleminde çalışır.

Gerekli kapsam: messaging:write.

Kimlik
apiKey
Gerekli kapsam
messaging:write

Parametreler

AdYerTipAçıklama
appIdzorunluyolstringUygulamanın kimliği.

Biçim: uuid

İstek gövdesiGövde zorunlu

application/jsonManagementSuppressionRequest

AlanTipAçıklama
channelzorunlustring

Değerler: email, sms

emailstring

en çok 320 karakter

phonestring

en çok 40 karakter

actionstring

Değerler: add, remove · Varsayılan: add

reasonstring

Değerler: hard_bounce, complaint, unsubscribe, manual, invalid_address · Varsayılan: manual

Örnek · JSON
{
  "channel": "email",
  "email": "string",
  "phone": "string",
  "action": "add",
  "reason": "manual"
}

Yanıtlar

  • 200

    Başarılı.

    application/jsonSuppressionResult

    Örnek · JSON
    {
      "suppressed": true,
      "channel": "email",
      "changed": true
    }
  • 400

    İstek doğrulanamadı (VALIDATION_FAILED). error.fields her hatalı alan için isteğin dilinde mesajları taşır; alan yolu noktayla yazılır (properties.2.enumValues), gövdenin bütünü için _. Okunamayan JSON INVALID_REQUEST, bozuk imleç CURSOR_INVALID döner.

    application/jsonErrorResponse

  • 401

    Kimlik yok ya da geçersiz: panelde oturum çerezi (SESSION_REQUIRED, ikinci adım bekleyen oturumda TWO_FACTOR_REQUIRED), Management API'de Authorization: Bearer mk_… (API_KEY_INVALID: yok, bilinmiyor, iptal edilmiş ya da süresi dolmuş). Giriş uçlarında hatalı bilgiler de 401 döner (INVALID_CREDENTIALS, TOTP_CODE_INVALID).

    application/jsonErrorResponse

  • 403

    Yetki yok: rol gereken izni vermiyor (PERMISSION_REQUIRED, error.details.permissions), API anahtarının kapsamı eksik (API_KEY_SCOPE_MISSING, error.details.scopes) ya da organizasyon askıda (ORGANIZATION_SUSPENDED).

    application/jsonErrorResponse

  • 404

    Kayıt bulunamadı ya da çağıranın kapsamında değil; ikisi bilerek ayırt edilmez (ör. APP_NOT_FOUND, EVENT_DEFINITION_NOT_FOUND). Biçimi geçersiz kimlikler de 404 döner.

    application/jsonErrorResponse

  • 409

    Kaydın güncel durumu bu işleme izin vermiyor ya da aynı kayıt zaten var (ör. APP_SLUG_TAKEN, EVENT_NAME_TAKEN, LAST_OWNER).

    application/jsonErrorResponse

  • 422

    İş kuralı ihlali. error.message kullanıcıya olduğu gibi gösterilebilir.

    application/jsonErrorResponse

  • 500

    Beklenmeyen hata (INTERNAL_ERROR). Destek talebinde error.traceId iletilir.

    application/jsonErrorResponse

Şemalar

İsteklerde ve yanıtlarda adıyla anılan şemalar.

AccountEventobject

AccountEvent
AlanTipAçıklama
idzorunluId

Biçim: uuid

atzorunluTimestamp

Biçim: date-time

typezorunlustring

Değerler: track, page, screen, identify, group, alias

eventNamezorunlustring
roleszorunlustring[]
conversionzorunluboolean
revenuezorunlunumber

null olabilir

pathzorunlustring

null olabilir

sessionIdzorunlustring

null olabilir

propertieszorunluobject

Serbest anahtarlar

personIdzorunluId

null olabilir

AccountEventPageobject

AccountEventPage
AlanTipAçıklama
itemszorunluAccountEvent[]
nextCursorzorunlustring

null olabilir

AccountMemberobject

AccountMember
AlanTipAçıklama
idzorunluId

Biçim: uuid

userIdzorunlustring

null olabilir

firstSeenAtzorunluTimestamp

Biçim: date-time

lastSeenAtzorunluTimestamp

Biçim: date-time

firstChannelzorunlustring

null olabilir

eventCountzorunluinteger
sessionCountzorunluinteger
isTestzorunluboolean
isInternalzorunluboolean
isBotboolean
joinedAtzorunluTimestamp

Biçim: date-time

AccountMemberPageobject

AccountMemberPage
AlanTipAçıklama
itemszorunluAccountMember[]
nextCursorzorunlustring

null olabilir

totalzorunluinteger

AccountPageobject

AccountPage
AlanTipAçıklama
itemszorunluAccountSummary[]
nextCursorzorunlustring

null olabilir

totalzorunluinteger

AccountProfileobject

AccountProfile
AlanTipAçıklama
accountzorunluAccountSummary
summaryzorunluobject
summary.memberszorunluinteger
summary.sessionszorunluinteger
summary.eventszorunluinteger
summary.conversionszorunluinteger
summary.revenuezorunlunumber
summary.refundszorunlunumber
summary.netRevenuezorunlunumber
summary.currencyzorunlustring
summary.leadszorunluinteger

null olabilir

roleszorunlustring[]
memberszorunluAccountMember[]
sessionszorunluSessionSummary[]
eventszorunluAccountEvent[]
conversionszorunluPersonConversion[]
leadszorunluPersonLead

null olabilir

withheldTraitszorunlustring[]

AccountSummaryobject

AccountSummary
AlanTipAçıklama
groupIdzorunlustring
namezorunlustring

null olabilir

traitszorunluobject

Serbest anahtarlar

memberCountzorunluinteger
firstSeenAtzorunluTimestamp

Biçim: date-time

lastSeenAtzorunluTimestamp

Biçim: date-time

AdAccountobject

AdAccount
AlanTipAçıklama
idzorunluId

Biçim: uuid

platformzorunlustring
externalIdzorunlustring
namezorunlustring
currencyzorunlustring
timezonezorunlustring

null olabilir

statuszorunlustring

Değerler: active, disconnected

connectionIdzorunluId

null olabilir

lastSyncedAtzorunluTimestamp

null olabilir

linkzorunlustring

null olabilir

AdAccountListobject

AdAccountList
AlanTipAçıklama
itemszorunluAdAccount[]

AdBudgetobject

AdBudget
AlanTipAçıklama
amountzorunlunumber
typezorunlustring

Değerler: daily, lifetime

levelzorunlustring

Değerler: campaign, ad_group, campaign_group

currencyzorunlustring

AdCampaignobject

AdCampaign
AlanTipAçıklama
idzorunluId

Biçim: uuid

platformzorunlustring
accountIdzorunluId

Biçim: uuid

accountNamezorunlustring
externalIdzorunlustring
namezorunlustring
statuszorunlustring

Değerler: active, paused, ended, removed, pending, unknown

platformStatuszorunlustring

null olabilir

objectivezorunlustring

Değerler: awareness, traffic, engagement, leads, sales, app_promotion, video_views, search, other

platformObjectivezorunlustring

null olabilir

channelTypezorunlustring

null olabilir

budgetzorunluAdBudget

null olabilir

startDatezorunluLocalDate

null olabilir

endDatezorunluLocalDate

null olabilir

campaignGroupzorunluobject

null olabilir

hasVideozorunluboolean
adGroupszorunluinteger
adszorunluinteger
linkzorunlustring

null olabilir

namingIssuesNamingIssue[]

AdConversionobject

AdConversion
AlanTipAçıklama
eventIdzorunluId

Biçim: uuid

occurredAtzorunluTimestamp

Biçim: date-time

rolezorunlustring

null olabilir

furthestRolezorunlustring

null olabilir

soldzorunluboolean
accountIdzorunlustring

null olabilir

personIdzorunluId

null olabilir

channelzorunlustring

null olabilir

sourcezorunlustring

null olabilir

mediumzorunlustring

null olabilir

platformzorunlustring

null olabilir

adAccountIdzorunluId

null olabilir

campaignIdzorunluId

null olabilir

campaignNamezorunlustring

null olabilir

utmCampaignzorunlustring

null olabilir

adIdzorunluId

null olabilir

adNamezorunlustring

null olabilir

landingPagezorunlustring

null olabilir

resolutionzorunlustring

Değerler: click_id, campaign_id, utm_name, unknown

modelzorunlustring

Değerler: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

weightzorunlunumber
isTestzorunluboolean
lastClickLeadLastClick

null olabilir

placementstring

null olabilir

AdConversionPageobject

AdConversionPage
AlanTipAçıklama
itemszorunluAdConversion[]
nextCursorzorunlustring

null olabilir

totalzorunluinteger
conversionszorunluinteger
soldzorunluinteger
modelzorunlustring

Değerler: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

conversionRoleszorunlustring[]
countingModezorunlustring

Sabit: event_date

AdConversionsListOptionsobject

AdConversionsListOptions
AlanTipAçıklama
groupByzorunlustring

Değerler: account, conversion · Varsayılan: account

scopezorunlustring

Değerler: ads, all · Varsayılan: ads

rolesstring[]

en çok 8 öğe

AdConversionsListSectionobject

AdConversionsListSection
AlanTipAçıklama
idstring

Desen: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 karakter

titlestring

null olabilir

sizestring

Değerler: kpi, half, full

typezorunlustring

Sabit: ad_conversions_list

groupByzorunlustring

Değerler: account, conversion · Varsayılan: account

scopezorunlustring

Değerler: ads, all · Varsayılan: ads

rolesstring[]

en çok 8 öğe

platformszorunlustring[]

en çok 10 öğe · Varsayılan: []

limitzorunluinteger

1–50 · Varsayılan: 25

AdFunnelSectionobject

AdFunnelSection
AlanTipAçıklama
idstring

Desen: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 karakter

titlestring

null olabilir

sizestring

Değerler: kpi, half, full

typezorunlustring

Sabit: ad_funnel

rolesstring[]

en çok 4 öğe

platformszorunlustring[]

en çok 10 öğe · Varsayılan: []

AdsBudgetobject

AdsBudget
AlanTipAçıklama
monthzorunlustring
currencyzorunlustring
daysInMonthzorunluinteger
daysElapsedzorunluinteger
tolerancezorunlunumber
totalzorunluBudgetPacing
lineszorunluBudgetPacing[]
planszorunluBudgetPlan[]
cumulativezorunluobject[]
cumulative[].dayzorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

cumulative[].spendzorunlunumber

null olabilir

cumulative[].cumulativezorunlunumber

null olabilir

cumulative[].planzorunlunumber

null olabilir

campaignszorunluobject[]
campaigns[].campaignzorunluAdCampaign
campaigns[].last7DaysSpendzorunlunumber
campaigns[].dailyAveragezorunlunumber
campaigns[].budgetUsezorunlunumber

null olabilir

campaigns[].lastDataDayzorunluLocalDate

null olabilir

AdsCampaignsobject

AdsCampaigns
AlanTipAçıklama
metricszorunluAnalyticsQueryResult
campaignszorunluAdCampaign[]
unmatchedzorunluAnalyticsQueryResult
countszorunluobject
counts.activezorunluinteger
counts.pausedzorunluinteger
counts.endedzorunluinteger
counts.allzorunluinteger
namingobject
naming.hasTemplatezorunluboolean
naming.offTemplatezorunluinteger
naming.followsTemplatezorunluinteger
conversionRoleszorunlustring[]
originalSpendobject

Serbest anahtarlar

conversionRatesobject
conversionRates.minClickszorunluinteger
conversionRates.itemszorunluobject[]
conversionRates.items[].campaignIdzorunluId

Biçim: uuid

conversionRates.items[].adClickszorunlunumber
conversionRates.items[].adConversionszorunlunumber
conversionRates.items[].ratezorunlunumber

null olabilir

AdsTableSectionobject

AdsTableSection
AlanTipAçıklama
idstring

Desen: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 karakter

titlestring

null olabilir

sizestring

Değerler: kpi, half, full

typezorunlustring

Sabit: ads_table

levelzorunlustring

Değerler: platform, account, campaign, ad_group, ad · Varsayılan: campaign

metricsstring[]

1–8 öğe

platformszorunlustring[]

en çok 10 öğe · Varsayılan: []

limitzorunluinteger

1–50 · Varsayılan: 15

conversionsAdConversionsListOptions

AiSummaryobject

AiSummary
AlanTipAçıklama
statuszorunlustring

Değerler: disabled, not_configured, pending, ready, failed

localezorunlustring

null olabilir

textzorunlustring

null olabilir

modelzorunlustring

null olabilir

generatedAtzorunluTimestamp

null olabilir

errorzorunlustring

null olabilir

AlertRecipientsobject

AlertRecipients
AlanTipAçıklama
inAppboolean

Varsayılan: true

userIdsstring[]

en çok 50 öğe · Varsayılan: []

emailsstring[]

en çok 20 öğe · Varsayılan: []

channelIdsstring[]

en çok 10 öğe · Varsayılan: []

webPushUserIdsstring[]

en çok 50 öğe · Varsayılan: []

AnalyticsCatalogueobject

AnalyticsCatalogue
AlanTipAçıklama
metricszorunluCatalogueMetric[]
dimensionszorunluCatalogueDimension[]
roleszorunluLabelledValue[]
conversionRoleszorunlustring[]
compareModeszorunlustring[]
filterOperatorszorunlustring[]
attributionModelszorunluobject[]
attributionModels[].keyzorunlustring

Değerler: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

attributionModels[].labelzorunlustring
attributionModels[].descriptionzorunlustring
defaultAttributionModelzorunlustring

Değerler: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

attributionWindowDayszorunluinteger
revenueBasisstring

Değerler: gross, net

pricesIncludeTaxboolean

AnalyticsQueryResultobject

AnalyticsQueryResult
AlanTipAçıklama
metricszorunluQueryMetricMeta[]
dimensionszorunlustring[]
rowszorunluQueryRow[]
totalszorunluobject
totals.valueszorunluQueryValues
totals.deltaszorunluQueryDeltas

null olabilir

comparisonzorunluobject

null olabilir

metazorunluQueryMeta

AnalyticsSegmentobject

AnalyticsSegment
AlanTipAçıklama
idzorunluId

Biçim: uuid

namezorunlustring
descriptionzorunlustring

null olabilir

subjectzorunlustring

Değerler: person, account

ruleszorunluobject
rules.matchzorunlustring

Değerler: all, any

rules.conditionszorunluobject[]
lastCountzorunluinteger

null olabilir

lastCountedAtzorunluTimestamp

null olabilir

createdByzorunluId

null olabilir

createdAtzorunluTimestamp

Biçim: date-time

updatedAtzorunluTimestamp

Biçim: date-time

AnalyticsSegmentCountobject

AnalyticsSegmentCount
AlanTipAçıklama
subjectzorunlustring

Değerler: person, account

countzorunluinteger
samplezorunlustring[]
readsEventszorunluboolean

AnalyticsSegmentListobject

AnalyticsSegmentList
AlanTipAçıklama
itemszorunluAnalyticsSegment[]

Appobject

App
AlanTipAçıklama
idzorunluId

Biçim: uuid

slugzorunlustring
namezorunlustring
descriptionzorunlustring

null olabilir

websiteUrlzorunlustring

null olabilir

iconUrlzorunlustring

null olabilir

timezonezorunlustring
currencyzorunlustring
schemaModezorunlustring

Değerler: strict, lenient, discover

schemaRevisionzorunluinteger

en az 0

attributionModelzorunlustring

Değerler: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

attributionWindowDayszorunluinteger
conversionRoleszorunlustring[]
leadContactClickszorunluboolean
retentionzorunluAppRetention
internalIpRangeszorunlustring[]
internalCookiezorunlustring

null olabilir

revenueBasisstring

Değerler: gross, net

pricesIncludeTaxboolean
overviewTilesOverviewTile[]
adsKpisstring[]
modulesstring[]
defaultAlertRecipientsAppAlertRecipients
searchBrandTermsstring[]
defaultOverviewTilesOverviewTile[]
defaultAdsKpisstring[]
statuszorunlustring

Değerler: active, archived

createdAtzorunluTimestamp

Biçim: date-time

updatedAtzorunluTimestamp

Biçim: date-time

AppAlertRecipientsobject

AppAlertRecipients
AlanTipAçıklama
inAppzorunluboolean
userIdszorunluId[]
emailszorunlustring[]
channelIdszorunluId[]
webPushUserIdsId[]

AppPageobject

AppPage
AlanTipAçıklama
itemszorunluApp[]
nextCursorzorunlustring

null olabilir

AppRetentionobject

AppRetention
AlanTipAçıklama
eventsMonthszorunluinteger
interactionsMonthszorunluinteger
sessionsMonthszorunluinteger

AttributedTouchobject

AttributedTouch
AlanTipAçıklama
sessionIdzorunlustring

null olabilir

atzorunlustring

null olabilir

channelzorunlustring

null olabilir

sourcezorunlustring

null olabilir

mediumzorunlustring

null olabilir

campaignzorunlustring

null olabilir

resolutionzorunlustring

Değerler: click_id, campaign_id, utm_name, unknown

weightzorunlunumber

AttributionSectionobject

AttributionSection
AlanTipAçıklama
idstring

Desen: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 karakter

titlestring

null olabilir

sizestring

Değerler: kpi, half, full

typezorunlustring

Sabit: attribution

metriczorunlustring

Desen: ^(?:[a-z][a-z0-9_]{0,49}(?::[a-z][a-z0-9_]{0,49})?|social\.[a-z][a-z0-9_]{0,19}\.[a-z][a-z0-9_]{0,49}|(?:email|sms)\.[a-z][a-z0-9_]{0,49})$ · 1–101 karakter · Varsayılan: conversions

dimensionzorunlustring

Değerler: attributed_channel, attributed_source, attributed_medium, attributed_campaign · Varsayılan: attributed_channel

modelszorunlustring[]

2–7 öğe · Varsayılan: ["first_touch","last_touch","last_non_direct","linear","position_based","time_decay","last_paid"]

limitzorunluinteger

1–20 · Varsayılan: 8

Autocaptureobject

Autocapture
AlanTipAçıklama
pageviewszorunluboolean
pageleavezorunluboolean
clickszorunluboolean
rageClickszorunluboolean
deadClickszorunluboolean
scrollzorunluboolean
errorszorunluboolean
formszorunluboolean
layoutzorunluboolean
outboundLinkszorunluboolean
downloadszorunluboolean
webVitalszorunluboolean

BudgetPacingobject

BudgetPacing
AlanTipAçıklama
platformzorunlustring

null olabilir

adAccountIdzorunluId

null olabilir

budgetzorunlunumber

null olabilir

spentzorunlunumber
remainingzorunlunumber

null olabilir

usedzorunlunumber

null olabilir

expectedToDatezorunlunumber

null olabilir

dailyAveragezorunlunumber
requiredDailyzorunlunumber

null olabilir

forecastzorunlunumber
forecastRatiozorunlunumber

null olabilir

activeDailyBudgetszorunlunumber
statezorunlustring

Değerler: on_track, over, behind, no_budget

BudgetPlanobject

BudgetPlan
AlanTipAçıklama
idzorunluId

Biçim: uuid

monthzorunlustring
platformzorunlustring

null olabilir

adAccountIdzorunluId

null olabilir

amountzorunlunumber
currencyzorunlustring
notezorunlustring

null olabilir

createdAtzorunluTimestamp

Biçim: date-time

createdByzorunluId

null olabilir

supersededAtzorunluTimestamp

null olabilir

CampaignCountsobject

CampaignCounts
AlanTipAçıklama
recipientszorunluinteger
queuedzorunluinteger
sendingzorunluinteger
sentzorunluinteger
deliveredzorunluinteger
failedzorunluinteger
bouncedzorunluinteger
unknownzorunluinteger
skippedzorunluinteger
openedzorunluinteger
clickedzorunluinteger
complainedzorunluinteger
unsubscribedzorunluinteger

CampaignResultsobject

CampaignResults
AlanTipAçıklama
campaignIdzorunluId

Biçim: uuid

channelzorunlustring

Değerler: email, sms

statuszorunlustring

Değerler: draft, awaiting_approval, scheduled, sending, paused, sent, cancelled, failed

countszorunluCampaignCounts
metricszorunluobject

Serbest anahtarlar

progresszorunlunumber

null olabilir

utmzorunluobject
utm.sourcezorunlustring
utm.mediumzorunlustring
utm.campaignzorunlustring
trafficzorunluobject
traffic.fromzorunluLocalDate

null olabilir

traffic.tozorunluLocalDate

null olabilir

traffic.sessionszorunlunumber

null olabilir

traffic.conversionszorunlunumber

null olabilir

traffic.conversionsByRolezorunluobject

Serbest anahtarlar

traffic.revenuezorunlunumber

null olabilir

traffic.countingModezorunlustring

Sabit: event_date

countingModezorunlustring

Sabit: cohort

unavailablezorunluobject

Serbest anahtarlar

segmentobject

null olabilir

CatalogueDimensionobject

CatalogueDimension
AlanTipAçıklama
keyzorunlustring
labelzorunlustring
descriptionzorunlustring
kindzorunlustring

Değerler: time, category

valueszorunluLabelledValue

null olabilir

CatalogueMetricobject

CatalogueMetric
AlanTipAçıklama
keyzorunlustring
labelzorunlustring
descriptionzorunlustring
unitzorunlustring

Değerler: count, duration_ms, percent, currency, ratio, number

goodDirectionzorunlustring

Değerler: higher, lower, neutral

aggregationzorunlustring

Değerler: sum, distinct, ratio, last

countingModezorunlustring

Değerler: event_date, cohort

formulazorunluobject
formula.numeratorzorunlustring
formula.denominatorzorunlustring

null olabilir

formula.scalezorunlunumber
tableszorunlustring[]
dimensionszorunlustring[]
parameterzorunluobject

null olabilir

customzorunluboolean
definitionIdzorunluId

null olabilir

ChangeEventStatusRequestobject

ChangeEventStatusRequest
AlanTipAçıklama
statuszorunlustring

Değerler: draft, active, deprecated, blocked

Connectionobject

Connection
AlanTipAçıklama
idzorunluId

Biçim: uuid

providerzorunlustring

Değerler: google_ads, meta_ads, linkedin_ads, tiktok_ads, yandex_direct, chatgpt_ads, ga4, search_console, manual_import, instagram, facebook_pages, linkedin_pages

kindzorunlustring

Değerler: ads, analytics, search_console, social

authTypezorunlustring

Değerler: oauth2, api_key, none

modezorunlustring

Değerler: live, fake

labelzorunlustring

null olabilir

scopeszorunlustring[]
syncIntervalMinuteszorunluinteger
lookbackDayszorunluinteger
backfillDayszorunluinteger
healthzorunluConnectionHealth
accountszorunluConnectionAccount[]
createdAtzorunluTimestamp

Biçim: date-time

updatedAtzorunluTimestamp

Biçim: date-time

ConnectionAccountobject

ConnectionAccount
AlanTipAçıklama
idzorunluId

Biçim: uuid

kindzorunlustring

Değerler: ad_account, ga4_property, search_console_site, social_account

externalIdzorunlustring
namezorunlustring
currencyzorunlustring

null olabilir

timezonezorunlustring

null olabilir

platformStatuszorunlustring

null olabilir

selectedzorunluboolean

ConnectionHealthobject

ConnectionHealth
AlanTipAçıklama
statuszorunlustring

Değerler: active, needs_reauth, error, rate_limited, paused

lastSuccessAtzorunluTimestamp

null olabilir

lastRunAtzorunluTimestamp

null olabilir

lastRunStatuszorunlustring

null olabilir

lastErrorzorunluConnectorError

null olabilir

consecutiveFailureszorunluinteger
nextRunAtzorunluTimestamp

null olabilir

syncedUntilzorunlustring

null olabilir

tokenExpiresAtzorunluTimestamp

null olabilir

ConnectionListobject

ConnectionList
AlanTipAçıklama
itemszorunluConnection[]

ConnectorErrorobject

ConnectorError
AlanTipAçıklama
codezorunlustring

Değerler: auth_failed, permission_missing, rate_limited, provider_error, network_error, timeout, invalid_response, not_configured, secret_unavailable

messagezorunlustring

ConsentChangeobject

ConsentChange
AlanTipAçıklama
kindzorunlustring

Değerler: none, merchant, opt_in, opt_out

reasonstring

null olabilir

evidencestring

null olabilir

formstring

null olabilir

occurredAtstring

Biçim: date-time

ConsentResultobject

ConsentResult
AlanTipAçıklama
contactIdzorunluId

null olabilir

kindzorunlustring

Değerler: none, merchant, opt_in, opt_out

ContactListobject

ContactList
AlanTipAçıklama
idzorunluId

Biçim: uuid

namezorunlustring
descriptionzorunlustring

null olabilir

contactszorunluinteger
emailSendablezorunluinteger
smsSendablezorunluinteger
createdByzorunluId

null olabilir

createdAtzorunluTimestamp

Biçim: date-time

updatedAtzorunluTimestamp

Biçim: date-time

ContactListListobject

ContactListList
AlanTipAçıklama
itemszorunluContactList[]

ContactReferenceobject

ContactReference
AlanTipAçıklama
contactIdstring

Biçim: uuid

emailstring

en çok 320 karakter

phonestring

en çok 40 karakter

userIdstring

1–200 karakter

ContentCalendarSectionobject

ContentCalendarSection
AlanTipAçıklama
idstring

Desen: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 karakter

titlestring

null olabilir

sizestring

Değerler: kpi, half, full

typezorunlustring

Sabit: content_calendar

sourceszorunlustring[]

1–2 öğe · Varsayılan: ["social","blog"]

platformszorunlustring[]

en çok 3 öğe · Varsayılan: []

limitzorunluinteger

1–100 · Varsayılan: 50

CreateAppRequestobject

CreateAppRequest
AlanTipAçıklama
slugzorunlustring

Desen: ^[a-z0-9](?:[a-z0-9-]{0,48}[a-z0-9])?$ · 1–50 karakter

namezorunlustring

1–200 karakter

descriptionstring

null olabilir

websiteUrlstring

null olabilir

iconUrlstring

null olabilir

timezonestring

en çok 64 karakter

currencystring

Desen: ^[A-Z]{3}$

schemaModestring

Değerler: strict, lenient, discover · Varsayılan: lenient

attributionModelstring

Değerler: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid · Varsayılan: last_non_direct

attributionWindowDaysinteger

1–365 · Varsayılan: 90

conversionRolesstring[]

1–16 öğe · Varsayılan: ["signup","trial_start","lead","demo_request","purchase"]

leadContactClicksboolean

Varsayılan: false

retentionobject
retention.eventsMonthszorunluinteger

1–120

retention.interactionsMonthszorunluinteger

1–60

retention.sessionsMonthszorunluinteger

1–120

internalIpRangesstring[]

en çok 100 öğe · Varsayılan: []

internalCookiestring

null olabilir

revenueBasisstring

Değerler: gross, net · Varsayılan: gross

pricesIncludeTaxboolean

Varsayılan: true

overviewTilesOverviewTileRequest[]

en çok 12 öğe · Varsayılan: []

adsKpisstring[]

en çok 12 öğe · Varsayılan: []

modulesstring[]

en çok 6 öğe · Varsayılan: ["ads","social","messaging","content","leads","behavior"]

defaultAlertRecipientsAlertRecipients
searchBrandTermsstring[]

en çok 50 öğe · Varsayılan: []

CreateDeletionRequestobject

CreateDeletionRequest
AlanTipAçıklama
subjectKindzorunlustringKimliğin türü: ürünün kullanıcı kimliği (user_id), SDK'nın anonim kimliği (anonymous_id) ya da Postlip Metrics'in kişi kimliği (person_id).

Değerler: user_id, anonymous_id, person_id

subjectValuezorunlustringKimliğin değeri (en çok 200 karakter). E-posta ya da telefon gibi görünen kimlik alımdaki gibi özetlenerek aranır; değer talep bitene kadar tutulur.

1–200 karakter

notestringNeden (talep numarası, başvurunun kanalı); kişisel veri yazmayın. En çok 500 karakter.

null olabilir

CreateEventDefinitionRequestobject

CreateEventDefinitionRequest
AlanTipAçıklama
namezorunlustring

1–200 karakter

displayNamezorunlustring

1–200 karakter

descriptionstring

null olabilir

categorystring

null olabilir

rolesstring[]

en çok 16 öğe · Varsayılan: []

statusstring

Değerler: draft, active, deprecated, blocked · Varsayılan: active

aliasesstring[]

en çok 20 öğe · Varsayılan: []

propertiesPropertyDefinitionInput[]

en çok 200 öğe

displayNamesLocalizedNames

CreateInvitationRequestobject

CreateInvitationRequest
AlanTipAçıklama
emailzorunlustring

1–320 karakter

roleIdzorunlustring

Biçim: uuid

appScopestring

Değerler: all, selected · Varsayılan: all

appIdsstring[]

en çok 200 öğe · Varsayılan: []

CreateMessageCampaignRequestobject

CreateMessageCampaignRequest
AlanTipAçıklama
channelzorunlustring

Değerler: email, sms

namezorunlustring

1–200 karakter

templateIdstring

Biçim: uuid

templateKeystring

en çok 80 karakter

subjectstring

null olabilir

preheaderstring

null olabilir

bodystring

en çok 20000 karakter

senderIdstring

null olabilir

audienceobject
audience.listIdsstring[]

en çok 20 öğe · Varsayılan: []

audience.segmentIdstring

null olabilir

localestring

Değerler: tr, en

throttlePerMinuteinteger

null olabilir

utmSourcestring

1–100 karakter

CreateSourceKeyRequestobject

CreateSourceKeyRequest
AlanTipAçıklama
kindzorunlustring

Değerler: write, signing

modestring

Değerler: live, test · Varsayılan: live

CreateSourceRequestobject

CreateSourceRequest
AlanTipAçıklama
namezorunlustring

1–200 karakter

kindzorunlustring

Değerler: web, ios, android, server, other

environmentstring

Değerler: production, staging, development · Varsayılan: production

requireSignatureboolean

Varsayılan: false

allowedOriginsstring[]

en çok 100 öğe · Varsayılan: []

consentModestring

Değerler: required, implied, none · Varsayılan: required

excludedPathsstring[]

en çok 200 öğe · Varsayılan: []

maskSelectorsstring[]

en çok 100 öğe · Varsayılan: []

ignoreSelectorsstring[]

en çok 100 öğe · Varsayılan: []

stripQueryParamsstring[]

en çok 100 öğe · Varsayılan: []

sessionTimeoutMinutesinteger

5–240 · Varsayılan: 30

interactionSampleRatenumber

0–1 · Varsayılan: 1

autocaptureobject

Varsayılan: {}

autocapture.pageviewsboolean
autocapture.pageleaveboolean
autocapture.clicksboolean
autocapture.rageClicksboolean
autocapture.deadClicksboolean
autocapture.scrollboolean
autocapture.errorsboolean
autocapture.formsboolean
autocapture.layoutboolean
autocapture.outboundLinksboolean
autocapture.downloadsboolean
autocapture.webVitalsboolean
dataLayerEventsstring[]

en çok 100 öğe · Varsayılan: []

CreatedSourceKeyobject

CreatedSourceKey
AlanTipAçıklama
idzorunluId

Biçim: uuid

kindzorunlustring

Değerler: write, signing

modezorunlustring

Değerler: live, test

maskedKeyzorunlustring
displayPrefixzorunlustring
last4zorunlustring
statezorunlustring

Değerler: active, expiring, revoked

revokedAtzorunluTimestamp

null olabilir

createdByzorunluId

null olabilir

createdAtzorunluTimestamp

Biçim: date-time

keyzorunlustring

DateRangeobject

DateRange
AlanTipAçıklama
fromzorunlustring
tozorunlustring
alignmentstring

Değerler: week_to_date, month_to_date, calendar_month, quarter_to_date, calendar_quarter, year_to_date, calendar_year

DeletionRequestobject

DeletionRequest
AlanTipAçıklama
idzorunluId

Biçim: uuid

appIdzorunluId

Biçim: uuid

subjectKindzorunlustringKimliğin türü (user_id, anonymous_id, person_id).

Değerler: user_id, anonymous_id, person_id

subjectHintzorunlustringKimliğin son karakterleri («…7c1e»); değerin kendisi hiçbir zaman dönmez.
statuszorunlustringpending sırada, running yürütülüyor, completed bitti, failed üç denemeden sonra başarısız (errorCode), cancelled iptal edildi.

Değerler: pending, running, completed, failed, cancelled

notezorunlustringTalebi açanın notu.

null olabilir

requestedViazorunlustringTalebin geldiği yer: panel ya da Management API.

Değerler: panel, api

requestedByzorunluobjectTalebi açan üye (adı üye dizininden); API anahtarıyla açıldıysa null.

null olabilir

resultzorunluobjectSilinen satırlar türüne göre (events, sessions, persons, identities, interactions, accountMemberships, attributions, leads, milestones, deliveries, contacts); sürerken o ana kadar.

Serbest anahtarlar

errorCodezorunlustringBaşarısız talebin hata kodu.

null olabilir

createdAtzorunluTimestamp

Biçim: date-time

startedAtzorunluTimestampWorker'ın talebi ilk aldığı an; bu andan sonra alınan veri talebe girmez.

null olabilir

completedAtzorunluTimestampTalebin bittiği ya da iptal edildiği an.

null olabilir

nothingFoundzorunlubooleanTalep tamamlandı ama kimliğe ait veri yoktu.

DeletionRequestPageobject

DeletionRequestPage
AlanTipAçıklama
itemszorunluDeletionRequest[]
nextCursorzorunlustring

null olabilir

totalzorunluinteger

DraftMetricDefinitionobject

DraftMetricDefinition
AlanTipAçıklama
keyzorunlustring

Desen: ^[a-z][a-z0-9_]{1,49}$ · 1–50 karakter

namestring

1–200 karakter

kindzorunlustring

Değerler: event_count, unique_persons, property_sum, property_average, ratio, unique_accounts

eventNamestring

1–200 karakter

rolestring

Değerler: signup, login, trial_start, trial_end, activation, core_action, lead, demo_request, contact_click, checkout_start, payment_failed, purchase, subscription_renewal, refund, churn, referral

propertystring

Desen: ^[A-Za-z_][A-Za-z0-9_]{0,99}$ · 1–100 karakter

filtersQueryFilterInput[]

en çok 10 öğe · Varsayılan: []

numeratorstring

Desen: ^(?:[a-z][a-z0-9_]{0,49}(?::[a-z][a-z0-9_]{0,49})?|social\.[a-z][a-z0-9_]{0,19}\.[a-z][a-z0-9_]{0,49}|(?:email|sms)\.[a-z][a-z0-9_]{0,49})$ · 1–101 karakter

denominatorstring

Desen: ^(?:[a-z][a-z0-9_]{0,49}(?::[a-z][a-z0-9_]{0,49})?|social\.[a-z][a-z0-9_]{0,19}\.[a-z][a-z0-9_]{0,49}|(?:email|sms)\.[a-z][a-z0-9_]{0,49})$ · 1–101 karakter

unitstring

Değerler: count, duration_ms, percent, currency, ratio, number

goodDirectionstring

Değerler: higher, lower, neutral · Varsayılan: higher

EraseContactResultobject

EraseContactResult
AlanTipAçıklama
erasedzorunluinteger

ErrorResponseobject

ErrorResponse
AlanTipAçıklama
errorzorunluobject
error.codezorunlustring
error.messagezorunlustring
error.fieldsobject

Serbest anahtarlar

error.detailsobject

Serbest anahtarlar

error.retryAfterSecondsinteger
error.traceIdzorunlustring

EventDefinitionobject

EventDefinition
AlanTipAçıklama
namezorunlustring

Desen: ^(?!\$)[^\s\x00-\x1f][^\x00-\x1f]{0,199}$

displayNamezorunlustring

en çok 200 karakter

descriptionstring

en çok 2000 karakter

categorystring

en çok 100 karakter

roleszorunlustring[]
statuszorunlustring

Değerler: draft, active, deprecated, blocked

aliasesstring[]
versionzorunluinteger

0 üstü

propertieszorunluPropertyDefinition[]

EventDefinitionPageobject

EventDefinitionPage
AlanTipAçıklama
itemszorunluEventDefinitionSummary[]
nextCursorzorunlustring

null olabilir

EventDefinitionRecordobject

EventDefinitionRecord
AlanTipAçıklama
idzorunluId

Biçim: uuid

appIdzorunluId

Biçim: uuid

namezorunlustring
displayNamezorunlustring
displayNamesLocalizedNamesRecord
descriptionzorunlustring

null olabilir

categoryzorunlustring

null olabilir

roleszorunlustring[]
statuszorunlustring

Değerler: draft, active, deprecated, blocked

aliaseszorunlustring[]
versionzorunluinteger

0 üstü

propertyCountzorunluinteger

en az 0

createdAtzorunluTimestamp

Biçim: date-time

updatedAtzorunluTimestamp

Biçim: date-time

propertieszorunluPropertyDefinitionRecord[]

EventDefinitionSummaryobject

EventDefinitionSummary
AlanTipAçıklama
idzorunluId

Biçim: uuid

appIdzorunluId

Biçim: uuid

namezorunlustring
displayNamezorunlustring
displayNamesLocalizedNamesRecord
descriptionzorunlustring

null olabilir

categoryzorunlustring

null olabilir

roleszorunlustring[]
statuszorunlustring

Değerler: draft, active, deprecated, blocked

aliaseszorunlustring[]
versionzorunluinteger

0 üstü

propertyCountzorunluinteger

en az 0

createdAtzorunluTimestamp

Biçim: date-time

updatedAtzorunluTimestamp

Biçim: date-time

ForecastAllocationobject

ForecastAllocation
AlanTipAçıklama
monthlyBudgetzorunlunumber
channelszorunluobject[]
channels[].platformzorunlustring
channels[].labelzorunlustring
channels[].currentzorunlunumber
channels[].suggestedzorunlunumber
channels[].changezorunlunumber
channels[].marginalCpaCurrentzorunlunumber

null olabilir

channels[].marginalCpaSuggestedzorunlunumber

null olabilir

channels[].boundzorunlustring

null olabilir

paidCurrentzorunlunumber
paidSuggestedzorunlunumber
gainzorunlunumber

ForecastBandobject

ForecastBand
AlanTipAçıklama
p10zorunlunumber
p50zorunlunumber
p90zorunlunumber

ForecastBudgetobject

ForecastBudget
AlanTipAçıklama
platformzorunlustring

1–50 karakter

monthlynumber

0–10000000000

changenumber

-1–10

ForecastChannelBasisobject

ForecastChannelBasis
AlanTipAçıklama
platformzorunlustring
labelzorunlustring
statuszorunlustring

Değerler: ok, insufficient_history, no_spend

reasonzorunlustring

null olabilir

spendzorunlunumber
conversionszorunlunumber
spendPerDayzorunlunumber
conversionsPerDayzorunlunumber
cpazorunlunumber

null olabilir

elasticityzorunlunumber

null olabilir

elasticitySourcezorunlustring

null olabilir

rSquaredzorunlunumber

null olabilir

weekszorunluinteger
weeksWithSpendzorunluinteger
maxSpendPerDayzorunlunumber
plannedMonthlyBudgetzorunlunumber

null olabilir

marginalCpazorunlunumber

null olabilir

ForecastInputsobject

ForecastInputs
AlanTipAçıklama
horizonMonthszorunluinteger

1–12 · Varsayılan: 6

basisDayszorunluinteger

28–365 · Varsayılan: 90

funnelIdzorunlustring

Varsayılan: null · null olabilir

rolestring

Değerler: signup, login, trial_start, trial_end, activation, core_action, lead, demo_request, contact_click, checkout_start, payment_failed, purchase, subscription_renewal, refund, churn, referral

budgetszorunluForecastBudget[]

en çok 20 öğe · Varsayılan: []

totalMonthlyBudgetnumber

0–10000000000

elasticityModezorunlustring

Değerler: estimate, fixed · Varsayılan: estimate

elasticityzorunlunumber

0.05–1 · Varsayılan: 0.75

scenarioszorunluForecastScenarioParams[]

1–5 öğe · Varsayılan: [{"key":"bad","label":null,"costMultiplier":1.25,"conversionMultiplier":0.85,"organicMultiplier":0.5},{"key":"realistic","label":null,"costMultiplier":1,"conversionMultiplier":1,"organicMultiplier":1},{"key":"good","label":null,"costMultiplier":0.85,"conversionMultiplier":1.12,"organicMultiplier":1.4}]

goalMonthlyConversionsnumber

0–1000000000

includeOrganiczorunluboolean

Varsayılan: true

attributionModelstring

Değerler: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

seasonalityboolean

ForecastLagobject

ForecastLag
AlanTipAçıklama
p50Dayszorunlunumber

null olabilir

p75Dayszorunlunumber

null olabilir

p90Dayszorunlunumber

null olabilir

distributionzorunluobject[]
distribution[].upToDayszorunlunumber

null olabilir

distribution[].sharezorunlunumber

ForecastMonthobject

ForecastMonth
AlanTipAçıklama
monthzorunlustring
dayszorunluinteger
budgetzorunlunumber
budgetByPlatformzorunluobject

Serbest anahtarlar

paidzorunluForecastBand
organiczorunluForecastBand
totalzorunluForecastBand
stepszorunluobject[]
steps[].rolezorunlustring

Değerler: signup, login, trial_start, trial_end, activation, core_action, lead, demo_request, contact_click, checkout_start, payment_failed, purchase, subscription_renewal, refund, churn, referral

steps[].valuezorunluForecastBand
revenuezorunluForecastBand

null olabilir

cpazorunlunumber

null olabilir

caczorunlunumber

null olabilir

ForecastResultobject

ForecastResult
AlanTipAçıklama
appIdzorunluId

Biçim: uuid

currencyzorunlustring
timezonezorunlustring
generatedAtzorunluTimestamp

Biçim: date-time

methodzorunluobject
method.keyzorunlustring

Sabit: log_log_bootstrap

method.descriptionzorunlustring
method.assumptionszorunlustring[]
basiszorunluobject
basis.fromzorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

basis.tozorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

basis.dayszorunluinteger
basis.rolezorunlustring

Değerler: signup, login, trial_start, trial_end, activation, core_action, lead, demo_request, contact_click, checkout_start, payment_failed, purchase, subscription_renewal, refund, churn, referral

basis.attributionModelzorunlustring

Değerler: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

basis.countingModeszorunluobject
basis.countingModes.channelszorunlustring

Değerler: event_date, cohort

basis.countingModes.stepszorunlustring

Değerler: event_date, cohort

basis.channelszorunluForecastChannelBasis[]
basis.organiczorunluobject
basis.organic.conversionszorunlunumber
basis.organic.perDayzorunlunumber
basis.organic.trendPerMonthzorunlunumber

null olabilir

basis.stepszorunluobject[]
basis.steps[].rolezorunlustring

Değerler: signup, login, trial_start, trial_end, activation, core_action, lead, demo_request, contact_click, checkout_start, payment_failed, purchase, subscription_renewal, refund, churn, referral

basis.steps[].ratezorunlunumber

null olabilir

basis.steps[].lagDayszorunlunumber

null olabilir

basis.steps[].lagForecastLag

null olabilir

basis.revenuePerConversionzorunlunumber

null olabilir

basis.elasticityPriorzorunlunumber
basis.seasonalityForecastSeasonality

null olabilir

basis.unforecastableobject
basis.unforecastable.spendzorunlunumber
basis.unforecastable.sharezorunlunumber

null olabilir

basis.unforecastable.platformszorunlustring[]
scenarioszorunluForecastScenarioResult[]
goalzorunluobject

null olabilir

allocationForecastAllocation

null olabilir

warningszorunluobject[]
warnings[].codezorunlustring

Değerler: EXTRAPOLATION, ELASTICITY_ASSUMED, NO_TREND, STEP_RATES_UNKNOWN, NEW_CHANNEL, GOAL_UNREACHABLE, DATA_DELAYED, SEASONALITY_OFF, UNFORECASTABLE_SPEND

warnings[].messagezorunlustring
warnings[].platformzorunlustring

null olabilir

ForecastScenarioobject

ForecastScenario
AlanTipAçıklama
idzorunluId

Biçim: uuid

appIdzorunluId

Biçim: uuid

namezorunlustring
descriptionzorunlustring

null olabilir

inputszorunluForecastInputs
resultzorunluForecastResult

null olabilir

computedAtzorunluTimestamp

null olabilir

actualszorunluobject[]

null olabilir

createdByzorunluId

null olabilir

createdAtzorunluTimestamp

Biçim: date-time

updatedAtzorunluTimestamp

Biçim: date-time

ForecastScenarioListobject

ForecastScenarioList
AlanTipAçıklama
itemszorunluobject[]
items[].idzorunluId

Biçim: uuid

items[].appIdzorunluId

Biçim: uuid

items[].namezorunlustring
items[].descriptionzorunlustring

null olabilir

items[].inputszorunluForecastInputs
items[].computedAtzorunluTimestamp

null olabilir

items[].createdByzorunluId

null olabilir

items[].createdAtzorunluTimestamp

Biçim: date-time

items[].updatedAtzorunluTimestamp

Biçim: date-time

ForecastScenarioParamsobject

ForecastScenarioParams
AlanTipAçıklama
keyzorunlustring

Desen: ^[a-z][a-z0-9_]{0,29}$ · 1–30 karakter

labelstring

null olabilir

costMultiplierzorunlunumber

0.1–5

conversionMultiplierzorunlunumber

0.1–5

organicMultiplierzorunlunumber

0–5

ForecastScenarioResultobject

ForecastScenarioResult
AlanTipAçıklama
keyzorunlustring
labelzorunlustring
costMultiplierzorunlunumber
conversionMultiplierzorunlunumber
organicMultiplierzorunlunumber
monthszorunluForecastMonth[]
totalszorunluobject
totals.budgetzorunlunumber
totals.paidzorunluForecastBand
totals.organiczorunluForecastBand
totals.totalzorunluForecastBand
totals.stepszorunluobject[]
totals.steps[].rolezorunlustring

Değerler: signup, login, trial_start, trial_end, activation, core_action, lead, demo_request, contact_click, checkout_start, payment_failed, purchase, subscription_renewal, refund, churn, referral

totals.steps[].valuezorunluForecastBand
totals.revenuezorunluForecastBand

null olabilir

totals.cpanumber

null olabilir

totals.cacnumber

null olabilir

totals.cacRolestring

null olabilir

ForecastSeasonalityobject

ForecastSeasonality
AlanTipAçıklama
weekdayzorunlunumber[]

null olabilir

monthzorunlunumber[]

null olabilir

historyDayszorunluinteger
conversionszorunlunumber
minimumzorunluobject
minimum.weekdayDayszorunluinteger
minimum.monthszorunluinteger
minimum.conversionszorunluinteger

ForecastSectionobject

ForecastSection
AlanTipAçıklama
idstring

Desen: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 karakter

titlestring

null olabilir

sizestring

Değerler: kpi, half, full

typezorunlustring

Sabit: forecast

scenarioIdzorunlustring

Varsayılan: null · null olabilir

horizonMonthszorunluinteger

1–12 · Varsayılan: 3

scenariozorunlustring

Desen: ^[a-z][a-z0-9_]{0,29}$ · 1–30 karakter · Varsayılan: realistic

Funnelobject

Funnel
AlanTipAçıklama
idzorunluId

Biçim: uuid

namezorunlustring
descriptionzorunlustring

null olabilir

stepszorunluFunnelStepRecord[]
orderzorunlustring

Değerler: ordered, any_order

countByzorunlustring

Değerler: person, session, group

conversionWindowzorunluobject

null olabilir

countingModezorunlustring

Değerler: event_date, cohort

isDefaultzorunluboolean
sideMetricsFunnelSideMetricRecord[]
createdByzorunluId

null olabilir

createdAtzorunluTimestamp

Biçim: date-time

updatedAtzorunluTimestamp

Biçim: date-time

FunnelBreakdownRowobject

FunnelBreakdownRow
AlanTipAçıklama
valuezorunlustring

null olabilir

stepszorunluobject[]
steps[].countzorunluinteger
steps[].ofFirstzorunlunumber

null olabilir

steps[].ofPreviouszorunlunumber

null olabilir

FunnelCohortsobject

FunnelCohorts
AlanTipAçıklama
funnelzorunluobject
funnel.idzorunluId

Biçim: uuid

funnel.namezorunlustring
funnel.countByzorunlustring

Değerler: person, session, group

basiszorunlustring

Sabit: entry_week

countingModezorunlustring

Sabit: cohort

dateRangezorunluobject
dateRange.fromzorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

dateRange.tozorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

timezonezorunlustring
followedUntilzorunluTimestamp

Biçim: date-time

stepzorunluinteger
weekszorunluinteger
minSubjectszorunluinteger
includezorunluobject
include.testzorunluboolean
include.internalzorunluboolean
include.botzorunluboolean
cohortszorunluobject[]
cohorts[].weekzorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

cohorts[].startzorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

cohorts[].endzorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

cohorts[].enteredzorunluinteger
cohorts[].lowSamplezorunluboolean
cohorts[].cellszorunluobject[]
cohorts[].cells[].weekzorunluinteger
cohorts[].cells[].reachedzorunluinteger
cohorts[].cells[].ratezorunlunumber

null olabilir

cohorts[].cells[].completezorunluboolean
totalzorunluobject[]
total[].weekzorunluinteger
total[].enteredzorunluinteger
total[].reachedzorunluinteger
total[].ratezorunlunumber

null olabilir

freshnessQueryFreshness
generatedAtzorunluTimestamp

Biçim: date-time

FunnelListobject

FunnelList
AlanTipAçıklama
itemszorunluFunnel[]

FunnelResultobject

FunnelResult
AlanTipAçıklama
funnelzorunluobject
funnel.idzorunluId

null olabilir

funnel.namezorunlustring

null olabilir

funnel.orderzorunlustring

Değerler: ordered, any_order

funnel.countByzorunlustring

Değerler: person, session, group

funnel.conversionWindowzorunluobject

null olabilir

countingModezorunlustring

Değerler: event_date, cohort

dateRangezorunluobject
dateRange.fromzorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

dateRange.tozorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

timezonezorunlustring
followedUntilzorunluTimestamp

Biçim: date-time

includezorunluobject
include.testzorunluboolean
include.internalzorunluboolean
include.botzorunluboolean
stepszorunluFunnelStepResult[]
breakdownzorunluobject

null olabilir

extraBreakdownobject

null olabilir

warningszorunluobject[]
warnings[].codezorunlustring

Değerler: ATTRIBUTION_NOT_CONVERSION, BREAKDOWN_TRUNCATED

warnings[].messagezorunlustring
seriesFunnelSeries

null olabilir

sideMetricsFunnelSideMetricResult[]
generatedAtzorunluTimestamp

Biçim: date-time

FunnelScreenResultobject

FunnelScreenResult
AlanTipAçıklama
funnelzorunluobject
funnel.idzorunluId

null olabilir

funnel.namezorunlustring

null olabilir

funnel.orderzorunlustring

Değerler: ordered, any_order

funnel.countByzorunlustring

Değerler: person, session, group

funnel.conversionWindowzorunluobject

null olabilir

countingModezorunlustring

Değerler: event_date, cohort

dateRangezorunluobject
dateRange.fromzorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

dateRange.tozorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

timezonezorunlustring
followedUntilzorunluTimestamp

Biçim: date-time

includezorunluobject
include.testzorunluboolean
include.internalzorunluboolean
include.botzorunluboolean
stepszorunluFunnelStepResult[]
breakdownzorunluobject

null olabilir

extraBreakdownobject

null olabilir

warningszorunluobject[]
warnings[].codezorunlustring

Değerler: ATTRIBUTION_NOT_CONVERSION, BREAKDOWN_TRUNCATED

warnings[].messagezorunlustring
seriesFunnelSeries

null olabilir

sideMetricsFunnelSideMetricResult[]
generatedAtzorunluTimestamp

Biçim: date-time

freshnesszorunluQueryFreshness
comparisonzorunluobject

null olabilir

FunnelSectionobject

FunnelSection
AlanTipAçıklama
idstring

Desen: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 karakter

titlestring

null olabilir

sizestring

Değerler: kpi, half, full

typezorunlustring

Sabit: funnel

funnelIdzorunlustring

Varsayılan: null · null olabilir

countingModestring

Değerler: event_date, cohort

breakdownstring

Değerler: channel, source, medium, campaign, device_type, country, attributed_channel, attributed_source, attributed_campaign, os, browser, region, app_version, language, channel_group

FunnelSeriesobject

FunnelSeries
AlanTipAçıklama
granularityzorunlustring

Değerler: day, week, month

basiszorunlustring

Değerler: step_date, entry_date

pointszorunluobject[]
points[].datezorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

points[].startzorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

points[].endzorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

points[].stepszorunluinteger[]
points[].completeboolean
points[].beforeTrackingboolean
afterRangezorunluinteger[]

FunnelSideMetricRecordobject

FunnelSideMetricRecord
AlanTipAçıklama
eventzorunlustring

null olabilir

rolezorunlustring

null olabilir

filterszorunluPropertyFilterRecord[]
labelzorunlustring

null olabilir

withoutzorunluobject

null olabilir

FunnelSideMetricResultobject

FunnelSideMetricResult
AlanTipAçıklama
indexzorunluinteger
labelzorunlustring

null olabilir

eventzorunlustring

null olabilir

rolezorunlustring

null olabilir

countzorunluinteger
ofEnteredzorunlunumber

null olabilir

pendingzorunluinteger

null olabilir

withinDayszorunluinteger

null olabilir

FunnelStepRecordobject

FunnelStepRecord
AlanTipAçıklama
eventzorunlustring

null olabilir

rolezorunlustring

null olabilir

filterszorunluPropertyFilterRecord[]
labelzorunlustring

null olabilir

FunnelStepResultobject

FunnelStepResult
AlanTipAçıklama
indexzorunluinteger
labelzorunlustring

null olabilir

eventzorunlustring

null olabilir

rolezorunlustring

null olabilir

countzorunluinteger
ofFirstzorunlunumber

null olabilir

ofPreviouszorunlunumber

null olabilir

dropOffzorunluinteger

null olabilir

timeFromPreviouszorunluTimeToConvert

null olabilir

timeFromFirstzorunluTimeToConvert

null olabilir

Idstring

Invitationobject

Invitation
AlanTipAçıklama
idzorunluId

Biçim: uuid

emailzorunlustring
rolezorunluRoleSummary
appScopezorunlustring

Değerler: all, selected

appIdszorunluId[]
statuszorunlustring

Değerler: pending, accepted, revoked, expired

invitedByzorunluId

null olabilir

expiresAtzorunluTimestamp

Biçim: date-time

acceptedAtzorunluTimestamp

null olabilir

revokedAtzorunluTimestamp

null olabilir

createdAtzorunluTimestamp

Biçim: date-time

InvitationPageobject

InvitationPage
AlanTipAçıklama
itemszorunluInvitation[]
nextCursorzorunlustring

null olabilir

JsonSchemaDocumentobject

KpiSectionobject

KpiSection
AlanTipAçıklama
idstring

Desen: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 karakter

titlestring

null olabilir

sizestring

Değerler: kpi, half, full

typezorunlustring

Sabit: kpi

metriczorunlustring

Desen: ^(?:[a-z][a-z0-9_]{0,49}(?::[a-z][a-z0-9_]{0,49})?|social\.[a-z][a-z0-9_]{0,19}\.[a-z][a-z0-9_]{0,49}|(?:email|sms)\.[a-z][a-z0-9_]{0,49})$ · 1–101 karakter

sparkzorunluboolean

Varsayılan: true

filterszorunluQueryFilter[]

en çok 10 öğe · Varsayılan: []

segmentIdstring

null olabilir

LabelledValueobject

LabelledValue
AlanTipAçıklama
keyzorunlustring
labelzorunlustring
descriptionstring

Leadobject

Lead
AlanTipAçıklama
idzorunluId

Biçim: uuid

kindzorunlustring

Değerler: demo_request, lead, contact_click

statuszorunlustring

Değerler: new, contacted, qualified, won, lost, spam

stagestring
dueAtTimestamp

null olabilir

overdueboolean
statusReasonzorunlustring

null olabilir

assigneezorunluLeadAssignee

null olabilir

eventIdzorunluId

Biçim: uuid

eventNamezorunlustring
occurredAtzorunluTimestamp

Biçim: date-time

personIdzorunluId

null olabilir

userIdzorunlustring

null olabilir

groupIdzorunlustring

null olabilir

sourcezorunluLeadSource
attributionzorunluLeadAttribution

null olabilir

lastClickLeadLastClick

null olabilir

propertieszorunluobject

Serbest anahtarlar

isTestzorunluboolean
isInternalzorunluboolean
noteCountzorunluinteger
statusChangedAtzorunluTimestamp

null olabilir

createdAtzorunluTimestamp

Biçim: date-time

updatedAtzorunluTimestamp

Biçim: date-time

LeadAssigneeobject

LeadAssignee
AlanTipAçıklama
idzorunluId

Biçim: uuid

namezorunlustring

LeadAttributionobject

LeadAttribution
AlanTipAçıklama
modelzorunlustring

Değerler: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

windowDayszorunluinteger
firstTouchzorunluAttributedTouch

null olabilir

lastTouchzorunluAttributedTouch

null olabilir

lastNonDirectzorunluAttributedTouch

null olabilir

methodstring

null olabilir

LeadDetailobject

LeadDetail
AlanTipAçıklama
idzorunluId

Biçim: uuid

kindzorunlustring

Değerler: demo_request, lead, contact_click

statuszorunlustring

Değerler: new, contacted, qualified, won, lost, spam

stagestring
dueAtTimestamp

null olabilir

overdueboolean
statusReasonzorunlustring

null olabilir

assigneezorunluLeadAssignee

null olabilir

eventIdzorunluId

Biçim: uuid

eventNamezorunlustring
occurredAtzorunluTimestamp

Biçim: date-time

personIdzorunluId

null olabilir

userIdzorunlustring

null olabilir

groupIdzorunlustring

null olabilir

sourcezorunluLeadSource
attributionzorunluLeadAttribution

null olabilir

lastClickLeadLastClick

null olabilir

propertieszorunluobject

Serbest anahtarlar

isTestzorunluboolean
isInternalzorunluboolean
noteCountzorunluinteger
statusChangedAtzorunluTimestamp

null olabilir

createdAtzorunluTimestamp

Biçim: date-time

updatedAtzorunluTimestamp

Biçim: date-time

noteszorunluLeadNote[]
statusHistoryzorunluLeadStatusChange[]

LeadLastClickobject

LeadLastClick
AlanTipAçıklama
atzorunluTimestamp

Biçim: date-time

pathzorunlustring

null olabilir

selectorzorunlustring

null olabilir

labelzorunlustring

null olabilir

kindzorunlustring

null olabilir

sectionzorunlustring

null olabilir

contactzorunlustring

null olabilir

tagstring

null olabilir

hrefstring

null olabilir

LeadNoteobject

LeadNote
AlanTipAçıklama
idzorunluId

Biçim: uuid

bodyzorunlustring
authorzorunluLeadAssignee

null olabilir

createdAtzorunluTimestamp

Biçim: date-time

editedAtzorunluTimestamp

null olabilir

LeadPageobject

LeadPage
AlanTipAçıklama
itemszorunluLead[]
nextCursorzorunlustring

null olabilir

totalzorunluinteger
countszorunluobject

Serbest anahtarlar

stageCountsobject

Serbest anahtarlar

overdueinteger

LeadSourceobject

LeadSource
AlanTipAçıklama
sessionIdzorunlustring

null olabilir

channelzorunlustring

null olabilir

sourcezorunlustring

null olabilir

mediumzorunlustring

null olabilir

campaignzorunlustring

null olabilir

referrerHostzorunlustring

null olabilir

entryPathzorunlustring

null olabilir

pagePathzorunlustring

null olabilir

deviceTypezorunlustring

null olabilir

countryzorunlustring

null olabilir

LeadStatusChangeobject

LeadStatusChange
AlanTipAçıklama
idzorunluId

Biçim: uuid

fromzorunlustring

null olabilir

tozorunlustring

Değerler: new, contacted, qualified, won, lost, spam

fromStagestring

null olabilir

toStagestring

null olabilir

reasonzorunlustring

null olabilir

changedByzorunluLeadAssignee

null olabilir

changedAtzorunluTimestamp

Biçim: date-time

ListMembersResultobject

ListMembersResult
AlanTipAçıklama
addedzorunluinteger
removedzorunluinteger
notFoundzorunluinteger

LocalDatestring

LocalizedNamesobject

LocalizedNames
AlanTipAçıklama
trstring

en çok 200 karakter

enstring

en çok 200 karakter

LocalizedNamesRecordobject

LocalizedNamesRecord
AlanTipAçıklama
trzorunlustring

null olabilir

enzorunlustring

null olabilir

ManagementConsentRequestobject

ManagementConsentRequest
AlanTipAçıklama
contactIdstring

Biçim: uuid

emailstring

en çok 320 karakter

phonestring

en çok 40 karakter

userIdstring

1–200 karakter

channelzorunlustring

Değerler: email, sms

kindzorunlustring

Değerler: none, merchant, opt_in, opt_out

reasonstring

null olabilir

evidencestring

null olabilir

formstring

null olabilir

occurredAtstring

Biçim: date-time

ManagementListMembersRequestobject

ManagementListMembersRequest
AlanTipAçıklama
addContactReference[]

en çok 1000 öğe · Varsayılan: []

removeContactReference[]

en çok 1000 öğe · Varsayılan: []

ManagementSuppressionRequestobject

ManagementSuppressionRequest
AlanTipAçıklama
channelzorunlustring

Değerler: email, sms

emailstring

en çok 320 karakter

phonestring

en çok 40 karakter

actionstring

Değerler: add, remove · Varsayılan: add

reasonstring

Değerler: hard_bounce, complaint, unsubscribe, manual, invalid_address · Varsayılan: manual

Memberobject

Member
AlanTipAçıklama
idzorunluId

Biçim: uuid

userzorunluobject
user.idzorunluId

Biçim: uuid

user.emailzorunlustring
user.namezorunlustring
rolezorunluRoleSummary
appScopezorunlustring

Değerler: all, selected

appIdszorunluId[]
statuszorunlustring

Değerler: active, disabled

invitedByzorunluId

null olabilir

lastSignInAtTimestamp

null olabilir

twoFactorEnabledboolean
createdAtzorunluTimestamp

Biçim: date-time

updatedAtzorunluTimestamp

Biçim: date-time

MemberPageobject

MemberPage
AlanTipAçıklama
itemszorunluMember[]
nextCursorzorunlustring

null olabilir

MessageCampaignobject

MessageCampaign
AlanTipAçıklama
idzorunluId

Biçim: uuid

channelzorunlustring

Değerler: email, sms

namezorunlustring
slugzorunlustring
utmzorunluobject
utm.sourcezorunlustring
utm.mediumzorunlustring
utm.campaignzorunlustring
templateIdzorunluId

null olabilir

subjectzorunlustring

null olabilir

preheaderzorunlustring

null olabilir

bodyzorunlustring
senderIdzorunluId

null olabilir

audiencezorunluobject
audience.listIdszorunluId[]
audience.segmentIdzorunluId

null olabilir

localezorunlustring

Değerler: tr, en

statuszorunlustring

Değerler: draft, awaiting_approval, scheduled, sending, paused, sent, cancelled, failed

schedulezorunluobject

null olabilir

startzorunluobject

null olabilir

throttlePerMinutezorunluinteger

null olabilir

confirmationzorunluobject
confirmation.testSentAtzorunluTimestamp

null olabilir

confirmation.testSentByzorunluId

null olabilir

confirmation.testCurrentzorunluboolean
confirmation.confirmedAtzorunluTimestamp

null olabilir

confirmation.confirmedByzorunluId

null olabilir

approvalzorunluobject

null olabilir

countszorunluCampaignCounts
skippedByReasonzorunluobject

Serbest anahtarlar

progresszorunlunumber

null olabilir

errorCodezorunlustring

null olabilir

createdByzorunluId

null olabilir

createdAtzorunluTimestamp

Biçim: date-time

updatedAtzorunluTimestamp

Biçim: date-time

startedAtzorunluTimestamp

null olabilir

finishedAtzorunluTimestamp

null olabilir

MessageCampaignPageobject

MessageCampaignPage
AlanTipAçıklama
itemszorunluMessageCampaign[]
nextCursorzorunlustring

null olabilir

totalzorunluinteger

MessagingLocalTimeobject

MessagingLocalTime
AlanTipAçıklama
datezorunlustring
timezorunlustring

Desen: ^([01]\d|2[0-3]):[0-5]\d$ · 5–5 karakter

NamingIssueobject

NamingIssue
AlanTipAçıklama
codezorunlustring

Değerler: missing_prefix, too_few_parts, too_many_parts, empty_part, value_not_allowed, invalid_date, too_long, invalid_characters, test_in_live_name

severityzorunlustring

Değerler: error, warning

tokenzorunlustring

null olabilir

positionzorunluinteger

null olabilir

valuezorunlustring

null olabilir

expectedzorunlustring[]

null olabilir

NoteSectionobject

NoteSection
AlanTipAçıklama
idstring

Desen: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 karakter

titlestring

null olabilir

sizestring

Değerler: kpi, half, full

typezorunlustring

Sabit: note

textzorunlustring

1–4000 karakter

formatstring

Değerler: plain, markdown

OriginalSpendobject

OriginalSpend
AlanTipAçıklama
amountzorunlunumber
currencyzorunlustring

OverviewTileobject

OverviewTile
AlanTipAçıklama
metriczorunlustring
breakdownzorunlustring

null olabilir

OverviewTileRequestobject

OverviewTileRequest
AlanTipAçıklama
metriczorunlustring

Desen: ^(?:[a-z][a-z0-9_]{0,49}(?::[a-z][a-z0-9_]{0,49})?|social\.[a-z][a-z0-9_]{0,19}\.[a-z][a-z0-9_]{0,49}|(?:email|sms)\.[a-z][a-z0-9_]{0,49})$ · 1–101 karakter

breakdownstring

Varsayılan: null · null olabilir

PersonConversionobject

PersonConversion
AlanTipAçıklama
eventIdzorunluId

Biçim: uuid

atzorunluTimestamp

Biçim: date-time

eventNamezorunlustring
roleszorunlustring[]
revenuezorunlunumber

null olabilir

sessionIdzorunlustring

null olabilir

channelzorunlustring

null olabilir

lastClickstring

null olabilir

PersonEventobject

PersonEvent
AlanTipAçıklama
idzorunluId

Biçim: uuid

atzorunluTimestamp

Biçim: date-time

typezorunlustring

Değerler: track, page, screen, identify, group, alias

eventNamezorunlustring
roleszorunlustring[]
conversionzorunluboolean
revenuezorunlunumber

null olabilir

pathzorunlustring

null olabilir

sessionIdzorunlustring

null olabilir

propertieszorunluobject

Serbest anahtarlar

PersonEventPageobject

PersonEventPage
AlanTipAçıklama
itemszorunluPersonEvent[]
nextCursorzorunlustring

null olabilir

PersonLeadobject

PersonLead
AlanTipAçıklama
idzorunluId

Biçim: uuid

kindzorunlustring

Değerler: demo_request, lead, contact_click

statuszorunlustring

Değerler: new, contacted, qualified, won, lost, spam

eventNamezorunlustring
eventAtzorunluTimestamp

Biçim: date-time

PersonMergeobject

PersonMerge
AlanTipAçıklama
personIdzorunluId

Biçim: uuid

reasonzorunlustring

Değerler: identify, alias, manual

mergedAtzorunluTimestamp

Biçim: date-time

rewrittenzorunluboolean

PersonPageobject

PersonPage
AlanTipAçıklama
itemszorunluPersonSummary[]
nextCursorzorunlustring

null olabilir

totalinteger

PersonProfileobject

PersonProfile
AlanTipAçıklama
requestedIdzorunluId

Biçim: uuid

personzorunluobject
person.idzorunluId

Biçim: uuid

person.userIdzorunlustring

null olabilir

person.traitszorunluobject

Serbest anahtarlar

person.firstSeenAtzorunluTimestamp

Biçim: date-time

person.lastSeenAtzorunluTimestamp

Biçim: date-time

person.firstChannelzorunlustring

null olabilir

person.firstTouchzorunluPersonTouch

null olabilir

person.lastNonDirectTouchzorunluPersonTouch

null olabilir

person.eventCountzorunluinteger
person.sessionCountzorunluinteger
person.isTestzorunluboolean
person.isInternalzorunluboolean
person.mergedFromzorunluId[]
identitieszorunluobject[]
identities[].kindzorunlustring

Değerler: anonymous_id, user_id

identities[].valuezorunlustring
identities[].firstSeenAtzorunluTimestamp

Biçim: date-time

groupszorunluobject[]
groups[].groupIdzorunlustring
groups[].traitszorunluobject

Serbest anahtarlar

groups[].memberCountzorunluinteger
groups[].firstSeenAtzorunluTimestamp

Biçim: date-time

groups[].lastSeenAtzorunluTimestamp

Biçim: date-time

roleszorunlustring[]
sessionszorunluSessionSummary[]
eventszorunluPersonEvent[]
summaryobject
summary.sessionszorunluinteger
summary.eventszorunluinteger
summary.conversionszorunluinteger
summary.revenuezorunlunumber
summary.refundszorunlunumber
summary.netRevenuezorunlunumber
summary.currencyzorunlustring
summary.leadszorunluinteger

null olabilir

conversionsPersonConversion[]
leadsPersonLead

null olabilir

mergesPersonMerge[]
withheldTraitsstring[]

PersonSummaryobject

PersonSummary
AlanTipAçıklama
idzorunluId

Biçim: uuid

userIdzorunlustring

null olabilir

firstSeenAtzorunluTimestamp

Biçim: date-time

lastSeenAtzorunluTimestamp

Biçim: date-time

firstChannelzorunlustring

null olabilir

eventCountzorunluinteger
sessionCountzorunluinteger
isTestzorunluboolean
isInternalzorunluboolean
isBotboolean

PersonTouchobject

PropertyDefinitionobject

PropertyDefinition
AlanTipAçıklama
keyzorunlustring

Desen: ^[A-Za-z_][A-Za-z0-9_]{0,99}$

typezorunlustring

Değerler: string, number, integer, boolean, datetime, money, currency, enum, object, array

itemTypestring

Değerler: string, number, integer, boolean, datetime, money, currency, enum, object, array

requiredzorunluboolean
descriptionstring

en çok 1000 karakter

piiClasszorunlustring

Değerler: none, pseudonymous, personal, sensitive

piiActionzorunlustring

Değerler: allow, hash, drop, reject

enumValuesstring[]

en çok 500 öğe

maxLengthinteger

0 üstü, en çok 10000

minimumnumber
maximumnumber
exampleany

PropertyDefinitionInputobject

PropertyDefinitionInput
AlanTipAçıklama
keyzorunlustring

Desen: ^[A-Za-z_][A-Za-z0-9_]{0,99}$ · 1–100 karakter

typezorunlustring

Değerler: string, number, integer, boolean, datetime, money, currency, enum, object, array

itemTypestring

null olabilir

requiredboolean

Varsayılan: false

descriptionstring

null olabilir

piiClassstring

Değerler: none, pseudonymous, personal, sensitive · Varsayılan: none

piiActionstring

Değerler: allow, hash, drop, reject · Varsayılan: allow

enumValuesstring[]

null olabilir

maxLengthinteger

null olabilir

minimumnumber

null olabilir

maximumnumber

null olabilir

exampleany
displayNamesLocalizedNames

PropertyDefinitionRecordobject

PropertyDefinitionRecord
AlanTipAçıklama
idzorunluId

Biçim: uuid

scopezorunlustring

Değerler: event, trait, group_trait

keyzorunlustring
typezorunlustring

Değerler: string, number, integer, boolean, datetime, money, currency, enum, object, array

itemTypezorunlustring

null olabilir

requiredzorunluboolean
descriptionzorunlustring

null olabilir

piiClasszorunlustring

Değerler: none, pseudonymous, personal, sensitive

piiActionzorunlustring

Değerler: allow, hash, drop, reject

enumValueszorunlustring[]

null olabilir

maxLengthzorunluinteger

null olabilir

minimumzorunlunumber

null olabilir

maximumzorunlunumber

null olabilir

examplezorunluany
sortOrderzorunluinteger
displayNamesLocalizedNamesRecord
createdAtzorunluTimestamp

Biçim: date-time

updatedAtzorunluTimestamp

Biçim: date-time

PropertyFilterRecordobject

PropertyFilterRecord
AlanTipAçıklama
propertyzorunlustring
opzorunlustring

Değerler: eq, neq, in, not_in, contains, not_contains, starts_with, is_empty, is_not_empty, gt, gte, lt, lte

valuezorunlustring | number | boolean | string[]

null olabilir

QueryApiRequestobject

QueryApiRequest
AlanTipAçıklama
appIdzorunlustring

Biçim: uuid

metricszorunlustring[]

1–20 öğe

dimensionsstring[]

en çok 3 öğe · Varsayılan: []

filtersQueryFilterInput[]

en çok 20 öğe · Varsayılan: []

dateRangezorunluDateRange
comparestring

Değerler: none, previous_period, previous_year, custom · Varsayılan: none

compareRangeDateRange
includeTrafficInclude
granularitystring

Değerler: day, week, month

attributionModelstring

Değerler: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

orderByobject
orderBy.metriczorunlustring

Desen: ^(?:[a-z][a-z0-9_]{0,49}(?::[a-z][a-z0-9_]{0,49})?|social\.[a-z][a-z0-9_]{0,19}\.[a-z][a-z0-9_]{0,49}|(?:email|sms)\.[a-z][a-z0-9_]{0,49})$ · 1–101 karakter

orderBy.directionstring

Değerler: asc, desc · Varsayılan: desc

limitinteger

1–10000 · Varsayılan: 1000

segmentIdstring

Biçim: uuid

definitionsDraftMetricDefinition[]

en çok 5 öğe

QueryBucketobject

QueryBucket
AlanTipAçıklama
startzorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

endzorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

dayszorunluinteger
completezorunluboolean
beforeTrackingzorunluboolean

QueryDeltaobject

QueryDelta
AlanTipAçıklama
previouszorunlunumber

null olabilir

absolutezorunlunumber

null olabilir

relativezorunlunumber

null olabilir

modezorunlustring

Değerler: relative, absolute, points

directionzorunlustring

Değerler: up, down, flat

tonezorunlustring

Değerler: positive, negative, neutral

comparablezorunluboolean
reasonzorunlustring

null olabilir

QueryDeltasobject

QueryFilterobject

QueryFilter
AlanTipAçıklama
dimensionzorunlustring

Desen: ^(?:[a-z][a-z_]{1,30}|property:[A-Za-z_][A-Za-z0-9_]{0,99})$ · 1–120 karakter

opzorunlustring

Değerler: eq, neq, in, not_in, contains, not_contains, starts_with, is_empty, is_not_empty

valuestring | string[]

QueryFilterInputobject

QueryFilterInput
AlanTipAçıklama
dimensionzorunlustring

Desen: ^(?:[a-z][a-z_]{1,30}|property:[A-Za-z_][A-Za-z0-9_]{0,99})$ · 1–120 karakter

opzorunlustring

Değerler: eq, neq, in, not_in, contains, not_contains, starts_with, is_empty, is_not_empty

valuestring | string[]

QueryFilterRecordobject

QueryFilterRecord
AlanTipAçıklama
dimensionzorunlustring
opzorunlustring

Değerler: eq, neq, in, not_in, contains, not_contains, starts_with, is_empty, is_not_empty

valuezorunlustring | string[]

null olabilir

QueryFreshnessobject

QueryFreshness
AlanTipAçıklama
processedUntilzorunluTimestamp

null olabilir

lastEventReceivedAtzorunluTimestamp

null olabilir

upToDatezorunluboolean
updatedAtzorunluTimestamp

null olabilir

pendingRollupDayszorunluinteger

QueryMetaobject

QueryMeta
AlanTipAçıklama
appIdzorunluId

Biçim: uuid

timezonezorunlustring
currencyzorunlustring
dateRangezorunluobject
dateRange.fromzorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

dateRange.tozorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

comparezorunlustring

Değerler: none, previous_period, previous_year, custom

comparisonRangezorunluobject

null olabilir

includezorunluobject
include.testzorunluboolean
include.internalzorunluboolean
include.botzorunluboolean
trackingStartedOnzorunluLocalDate

null olabilir

freshnesszorunluQueryFreshness
countingModeszorunluobject

Serbest anahtarlar

sourceszorunluobject

Serbest anahtarlar

conversionRoleszorunlustring[]
attributionzorunluobject

null olabilir

warningszorunluQueryWarning[]
truncatedzorunluboolean
generatedAtzorunluTimestamp

Biçim: date-time

segmentobject

null olabilir

QueryMetricMetaobject

QueryMetricMeta
AlanTipAçıklama
keyzorunlustring
unitzorunlustring

Değerler: count, duration_ms, percent, currency, ratio, number

goodDirectionzorunlustring

Değerler: higher, lower, neutral

aggregationzorunlustring

Değerler: sum, distinct, ratio, last

countingModezorunlustring

Değerler: event_date, cohort

sourcezorunlustring

Değerler: rollup, raw, none

labelstring

QueryRowobject

QueryRow
AlanTipAçıklama
dimensionszorunluobject

Serbest anahtarlar

valueszorunluQueryValues
bucketzorunluQueryBucket

null olabilir

previouszorunluQueryValues

null olabilir

previousBucketzorunluobject

null olabilir

deltaszorunluQueryDeltas

null olabilir

sharesQueryValues

QueryValuesobject

QueryWarningobject

QueryWarning
AlanTipAçıklama
codezorunlustring

Değerler: DIMENSION_NOT_AVAILABLE, FILTER_NOT_AVAILABLE, COMPARISON_BEFORE_TRACKING, RANGE_BEFORE_TRACKING, ROWS_TRUNCATED, ROLLUP_PENDING, ATTRIBUTION_PENDING, CURRENCY_PENDING, SOCIAL_METRIC_NOT_PROVIDED, SOCIAL_PERIOD_NOT_AVAILABLE, SOCIAL_HISTORY_LIMITED, SOCIAL_PERMISSION_MISSING, SOCIAL_NOT_CONNECTED, SOCIAL_NOT_ADDITIVE, GA4_NOT_CONNECTED, SEARCH_CONSOLE_NOT_CONNECTED

messagezorunlustring
metriczorunlustring

null olabilir

dimensionzorunlustring

null olabilir

Reportobject

Report
AlanTipAçıklama
idzorunluId

Biçim: uuid

namezorunlustring
descriptionzorunlustring

null olabilir

appIdszorunluId[]
appszorunluobject[]
apps[].idzorunluId

Biçim: uuid

apps[].slugzorunlustring
apps[].namezorunlustring
apps[].timezonezorunlustring
apps[].currencyzorunlustring
sectionszorunluReportSection[]
periodzorunluReportPeriod
comparezorunlustring

Değerler: none, previous_period, previous_year

filterszorunluQueryFilterRecord[]
segmentIdId

null olabilir

includezorunluobject
include.testzorunluboolean
include.internalzorunluboolean
include.botzorunluboolean
attributionModelzorunlustring

null olabilir

localezorunlustring

Değerler: tr, en

timezonezorunlustring
subtitlezorunlustring

null olabilir

templateKeyzorunlustring

null olabilir

lastSnapshotzorunluobject

null olabilir

scheduleszorunluinteger
shareLinkszorunluobject
shareLinks.activezorunluinteger
shareLinks.totalzorunluinteger
createdByzorunluId

null olabilir

createdAtzorunluTimestamp

Biçim: date-time

updatedAtzorunluTimestamp

Biçim: date-time

ReportCalendarobject

ReportCalendar
AlanTipAçıklama
itemszorunluReportCalendarItem[]
totalzorunluinteger
countszorunluobject
counts.publishedzorunluinteger
counts.plannedzorunluinteger
counts.blogzorunluinteger

ReportCalendarItemobject

ReportCalendarItem
AlanTipAçıklama
kindzorunlustring

Değerler: social_planned, social_direct, blog

postIdzorunluId

null olabilir

datezorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

timezorunlustring
atzorunluTimestamp

Biçim: date-time

platformzorunlustring

null olabilir

statuszorunlustring
formatzorunlustring

null olabilir

excerptzorunlustring
permalinkzorunlustring

null olabilir

campaignKeyzorunlustring

null olabilir

ReportForecastobject

ReportForecast
AlanTipAçıklama
scenariozorunluobject

null olabilir

resultzorunluForecastResult
actualszorunluobject[]

null olabilir

ReportFreshnessobject

ReportFreshness
AlanTipAçıklama
appIdzorunluId

Biçim: uuid

processedUntilzorunluTimestamp

null olabilir

lastEventReceivedAtzorunluTimestamp

null olabilir

upToDatezorunluboolean
pendingRollupDayszorunluinteger
adsSyncedAtzorunluTimestamp

null olabilir

ReportMetricLabelobject

ReportMetricLabel
AlanTipAçıklama
keyzorunlustring
labelzorunlustring
descriptionzorunlustring

null olabilir

unitzorunlustring

Değerler: count, duration_ms, percent, currency, ratio, number

goodDirectionzorunlustring

Değerler: higher, lower, neutral

countingModezorunlustring

Değerler: event_date, cohort

sourcestring

Değerler: metrics, ad_platform, ga4, search_console, social_platform, messaging, mixed

sourcesstring[]

ReportNoteBlockobject

ReportNoteSpanobject

ReportNoteSpan
AlanTipAçıklama
textzorunlustring
marksstring[]
hrefstring

ReportPageobject

ReportPage
AlanTipAçıklama
itemszorunluReport[]
nextCursorzorunlustring

null olabilir

totalzorunluinteger

ReportPeriodobject

ReportSectionKpiSection | TimeseriesSection | TableSection | FunnelSection | AttributionSection | AdsTableSection | AdFunnelSection | SummarySection | NoteSection | AdConversionsListSection | ContentCalendarSection | ForecastSection

ReportSectionResultobject

ReportSectionResult
AlanTipAçıklama
idzorunlustring
typezorunlustring

Değerler: kpi, timeseries, table, funnel, attribution, ads_table, ad_funnel, summary, note, ad_conversions_list, content_calendar, forecast

titlezorunlustring
subtitlezorunlustring

null olabilir

sizezorunlustring

Değerler: kpi, half, full

definitionzorunluReportSection
metricszorunluReportMetricLabel[]
countingModeszorunlustring[]
textzorunlustring

null olabilir

blocksReportNoteBlock

null olabilir

dataDelayHintSectionDataDelay

null olabilir

appszorunluSectionAppResult[]

ReportSnapshotobject

ReportSnapshot
AlanTipAçıklama
idzorunluId

Biçim: uuid

reportIdzorunluId

null olabilir

namezorunlustring
subtitlezorunlustring

null olabilir

triggerzorunlustring

Değerler: manual, schedule, api, preview

periodzorunluobject
period.fromzorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

period.tozorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

period.presetzorunlustring

null olabilir

comparisonzorunluobject

null olabilir

timezonezorunlustring
localezorunlustring

Değerler: tr, en

generatedAtzorunluTimestamp

Biçim: date-time

createdByzorunluId

null olabilir

scheduleIdzorunluId

null olabilir

appszorunluobject[]
apps[].idzorunluId

Biçim: uuid

apps[].slugzorunlustring
apps[].namezorunlustring
apps[].timezonezorunlustring
apps[].currencyzorunlustring
filterszorunluQueryFilterRecord[]
includezorunluobject
include.testzorunluboolean
include.internalzorunluboolean
include.botzorunluboolean
attributionModelzorunlustring

null olabilir

freshnesszorunluReportFreshness[]
sectionszorunluReportSectionResult[]
aiSummaryzorunluAiSummary

ReportSnapshotPageobject

ReportSnapshotPage
AlanTipAçıklama
itemszorunluReportSnapshotSummary[]
nextCursorzorunlustring

null olabilir

ReportSnapshotSummaryobject

ReportSnapshotSummary
AlanTipAçıklama
idzorunluId

Biçim: uuid

reportIdzorunluId

null olabilir

namezorunlustring
subtitlezorunlustring

null olabilir

triggerzorunlustring

Değerler: manual, schedule, api, preview

periodzorunluobject
period.fromzorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

period.tozorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

period.presetzorunlustring

null olabilir

comparisonzorunluobject

null olabilir

timezonezorunlustring
localezorunlustring

Değerler: tr, en

generatedAtzorunluTimestamp

Biçim: date-time

createdByzorunluId

null olabilir

scheduleIdzorunluId

null olabilir

aiSummaryStatuszorunlustring

Değerler: disabled, not_configured, pending, ready, failed

RevokeSourceKeyRequestobject

RevokeSourceKeyRequest
AlanTipAçıklama
graceMinutesinteger

0–10080 · Varsayılan: 0

Roleobject

Role
AlanTipAçıklama
idzorunluId

Biçim: uuid

keyzorunlustring
namezorunlustring
descriptionzorunlustring

null olabilir

permissionszorunlustring[]
builtInzorunluboolean
createdAtzorunluTimestamp

Biçim: date-time

updatedAtzorunluTimestamp

Biçim: date-time

RoleListobject

RoleList
AlanTipAçıklama
itemszorunluRole[]

RoleSummaryobject

RoleSummary
AlanTipAçıklama
idzorunluId

Biçim: uuid

keyzorunlustring
namezorunlustring
builtInzorunluboolean

SchemaBundleobject

SchemaBundle
AlanTipAçıklama
formatVersionzorunlunumber

Sabit: 1

appzorunluobject
app.idzorunlustring
app.slugzorunlustring
app.namezorunlustring
schemaModezorunlustring

Değerler: strict, lenient, discover

revisionzorunluinteger

en az 0

generatedAtzorunlustring

Biçim: date-time

eventszorunluEventDefinition[]
traitszorunluPropertyDefinition[]
groupTraitszorunluPropertyDefinition[]

SectionAppResultobject

SectionAppResult
AlanTipAçıklama
appIdzorunluId

Biçim: uuid

statuszorunlustring

Değerler: ok, not_available, not_connected, failed

messagezorunlustring

null olabilir

resultszorunluobject

Serbest anahtarlar

funnelzorunluFunnelResult

null olabilir

labelszorunluobject

Serbest anahtarlar

lineszorunlustring[]
derivedzorunluSectionDerived
conversionsobject
conversions.itemszorunluAdConversion[]
conversions.totalzorunluinteger
conversions.soldzorunluinteger
calendarReportCalendar
forecastReportForecast

SectionDataDelayobject

SectionDataDelay
AlanTipAçıklama
dayszorunluinteger
sourceszorunluobject[]
sources[].sourcezorunlustring

Değerler: metrics, ad_platform, ga4, search_console, social_platform, messaging

sources[].dayszorunluinteger
affectsPeriodzorunluboolean
textzorunlustring

SectionDerivedobject

SectionDerived
AlanTipAçıklama
sharezorunluobject

null olabilir

stepszorunluobject[]

null olabilir

stackzorunluobject

null olabilir

SendCampaignRequestobject

SendCampaignRequest
AlanTipAçıklama
contentReviewedzorunluboolean

Sabit: true

confirmzorunluboolean

Sabit: true

scheduleMessagingLocalTime

null olabilir

notestring

null olabilir

SessionSummaryobject

SessionSummary
AlanTipAçıklama
idzorunlustring
personIdzorunluId

null olabilir

anonymousIdzorunlustring

null olabilir

userIdzorunlustring

null olabilir

startedAtzorunluTimestamp

Biçim: date-time

endedAtzorunluTimestamp

Biçim: date-time

durationMszorunluinteger
activeMszorunluinteger
pageviewszorunluinteger
screenViewszorunluinteger
eventszorunluinteger
interactionszorunluinteger
rageClickszorunluinteger
deadClickszorunluinteger
errorszorunluinteger
entryPathzorunlustring

null olabilir

exitPathzorunlustring

null olabilir

channelzorunlustring

null olabilir

sourcezorunlustring

null olabilir

mediumzorunlustring

null olabilir

campaignzorunlustring

null olabilir

referrerHostzorunlustring

null olabilir

deviceTypezorunlustring

null olabilir

oszorunlustring

null olabilir

browserzorunlustring

null olabilir

countryzorunlustring

null olabilir

regionzorunlustring

null olabilir

cityzorunlustring

null olabilir

isEngagedzorunluboolean
isBouncezorunluboolean
roleszorunlustring[]
convertedzorunluboolean
revenuezorunlunumber
isTestzorunluboolean
isInternalzorunluboolean
isBotzorunluboolean
quickBacksinteger
errorClicksinteger
excessiveScrollsinteger

SmsSegmentsobject

SmsSegments
AlanTipAçıklama
encodingzorunlustring

Değerler: gsm7, gsm7_turkish, ucs2

characterszorunluinteger
unitszorunluinteger
partszorunluinteger
perPartzorunluinteger
remainingzorunluinteger
creditszorunluinteger
unsupportedzorunlustring[]

SocialAccountobject

SocialAccount
AlanTipAçıklama
idzorunluId

Biçim: uuid

platformzorunlustring

Değerler: instagram, facebook, linkedin

statuszorunlustring

Değerler: active, needs_reauth, disconnected

connectionIdzorunluId

null olabilir

externalIdzorunlustring
usernamezorunlustring

null olabilir

namezorunlustring
profilezorunluobject
profile.biozorunlustring

null olabilir

profile.websitezorunlustring

null olabilir

profile.avatarUrlzorunlustring

null olabilir

profile.pageUrlzorunlustring

null olabilir

followerszorunluinteger

null olabilir

mediaCountzorunluinteger

null olabilir

autoPublishzorunluboolean
capabilitieszorunluobject
capabilities.insightszorunluboolean
capabilities.publishzorunluboolean
capabilities.formatszorunlustring[]
capabilities.autoPublishFormatszorunlustring[]
freshnesszorunluobject
freshness.lastSyncedAtzorunluTimestamp

null olabilir

freshness.nextSyncAtzorunluTimestamp

null olabilir

freshness.lastErrorzorunluobject

null olabilir

createdAtzorunluTimestamp

Biçim: date-time

updatedAtzorunluTimestamp

Biçim: date-time

SocialAccountListobject

SocialAccountList
AlanTipAçıklama
itemszorunluSocialAccount[]

SocialAccountRefobject

SocialAccountRef
AlanTipAçıklama
idzorunluId

Biçim: uuid

platformzorunlustring

Değerler: instagram, facebook, linkedin

namezorunlustring
usernamezorunlustring

null olabilir

lastSyncedAtzorunluTimestamp

null olabilir

SocialKpiobject

SocialKpi
AlanTipAçıklama
metriczorunlustring
labelzorunlustring
descriptionzorunlustring
unitzorunlustring

Değerler: count, duration_ms, percent, currency, ratio, number

goodDirectionzorunlustring

Değerler: higher, lower, neutral

countingModezorunlustring

Değerler: event_date, cohort

valuezorunlunumber

null olabilir

previouszorunlunumber

null olabilir

deltazorunluQueryDelta

null olabilir

unavailablezorunluSocialUnavailable

null olabilir

notAdditivezorunluboolean

SocialOverviewobject

SocialOverview
AlanTipAçıklama
scopezorunluobject
scope.platformzorunlustring

Değerler: all, instagram, facebook, linkedin

scope.accountIdszorunluId[]
accountszorunluSocialAccountRef[]
kpiszorunluSocialKpi[]
serieszorunluAnalyticsQueryResult
warningszorunluQueryWarning[]
postszorunluinteger

null olabilir

uniqueByAccountzorunluobject[]
uniqueByAccount[].accountIdzorunluId

Biçim: uuid

uniqueByAccount[].kpiszorunluobject[]
uniqueByAccount[].kpis[].metriczorunlustring
uniqueByAccount[].kpis[].valuezorunlunumber

null olabilir

uniqueByAccount[].kpis[].previouszorunlunumber

null olabilir

uniqueByAccount[].kpis[].deltazorunluQueryDelta

null olabilir

uniqueByAccount[].kpis[].unavailablezorunluSocialUnavailable

null olabilir

SocialPostMetricsobject

SocialPostMetrics
AlanTipAçıklama
likeszorunlunumber

null olabilir

commentszorunlunumber

null olabilir

shareszorunlunumber

null olabilir

saveszorunlunumber

null olabilir

reachzorunlunumber

null olabilir

viewszorunlunumber

null olabilir

clickszorunlunumber

null olabilir

engagementzorunlunumber

null olabilir

engagementRatezorunlunumber

null olabilir

SocialPostSnapshotobject

SocialPostSnapshot
AlanTipAçıklama
capturedAtzorunluTimestamp

Biçim: date-time

likeszorunlunumber

null olabilir

commentszorunlunumber

null olabilir

shareszorunlunumber

null olabilir

saveszorunlunumber

null olabilir

reachzorunlunumber

null olabilir

viewszorunlunumber

null olabilir

clickszorunlunumber

null olabilir

SocialPublishedPostobject

SocialPublishedPost
AlanTipAçıklama
idzorunluId

Biçim: uuid

accountIdzorunluId

Biçim: uuid

platformzorunlustring

Değerler: instagram, facebook, linkedin

externalIdzorunlustring
typezorunlustring

Değerler: image, carousel, video, reel, story, text, link, other

captionzorunlustring

null olabilir

permalinkzorunlustring

null olabilir

publishedAtzorunluTimestamp

Biçim: date-time

publishedLocalzorunluobject
publishedLocal.datezorunluLocalDate

Desen: ^\d{4}-\d{2}-\d{2}$

publishedLocal.timezorunlustring
thumbnailUrlzorunlustring

null olabilir

metricszorunluSocialPostMetrics
unavailablezorunluobject

Serbest anahtarlar

plannedPostIdzorunluId

null olabilir

campaignKeyzorunlustring

null olabilir

metricsUpdatedAtzorunluTimestamp

null olabilir

nextRefreshAtzorunluTimestamp

null olabilir

SocialPublishedPostDetailobject

SocialPublishedPostDetail
AlanTipAçıklama
postzorunluSocialPublishedPost
historyzorunluSocialPostSnapshot[]

SocialPublishedPostPageobject

SocialPublishedPostPage
AlanTipAçıklama
itemszorunluSocialPublishedPost[]
nextCursorzorunlustring

null olabilir

countingModezorunlustring

Değerler: event_date, cohort

totalzorunluinteger

SocialUnavailableobject

SocialUnavailable
AlanTipAçıklama
reasonzorunlustring

Değerler: not_provided, period_limited, history_limited, permission_missing, not_connected, no_data

messagezorunlustring

Sourceobject

Source
AlanTipAçıklama
idzorunluId

Biçim: uuid

appIdzorunluId

Biçim: uuid

namezorunlustring
kindzorunlustring

Değerler: web, ios, android, server, other

environmentzorunlustring

Değerler: production, staging, development

statuszorunlustring

Değerler: active, disabled

requireSignaturezorunluboolean
allowedOriginszorunlustring[]
consentModezorunlustring

Değerler: required, implied, none

excludedPathszorunlustring[]
maskSelectorszorunlustring[]
ignoreSelectorszorunlustring[]
stripQueryParamszorunlustring[]
sessionTimeoutMinuteszorunluinteger
interactionSampleRatezorunlunumber
autocapturezorunluAutocapture
dataLayerEventszorunlustring[]
createdAtzorunluTimestamp

Biçim: date-time

updatedAtzorunluTimestamp

Biçim: date-time

SourceHealthobject

SourceHealth
AlanTipAçıklama
sourceIdzorunluId

Biçim: uuid

statezorunlustring

Değerler: no_data, receiving, quiet

lastEventAtzorunluTimestamp

null olabilir

lastRejectionAtzorunluTimestamp

null olabilir

lastLibraryzorunlustring

null olabilir

rejectionsLast24hzorunluinteger

en az 0

eventsLast24hinteger

en az 0

warningsLast24hinteger

en az 0

rejectionRatenumber

null olabilir

SourceKeyobject

SourceKey
AlanTipAçıklama
idzorunluId

Biçim: uuid

kindzorunlustring

Değerler: write, signing

modezorunlustring

Değerler: live, test

maskedKeyzorunlustring
displayPrefixzorunlustring
last4zorunlustring
statezorunlustring

Değerler: active, expiring, revoked

revokedAtzorunluTimestamp

null olabilir

createdByzorunluId

null olabilir

createdAtzorunluTimestamp

Biçim: date-time

SourceKeyListobject

SourceKeyList
AlanTipAçıklama
itemszorunluSourceKey[]

SourcePageobject

SourcePage
AlanTipAçıklama
itemszorunluSource[]
nextCursorzorunlustring

null olabilir

SummarySectionobject

SummarySection
AlanTipAçıklama
idstring

Desen: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 karakter

titlestring

null olabilir

sizestring

Değerler: kpi, half, full

typezorunlustring

Sabit: summary

scopezorunlustring

Değerler: overall, ads · Varsayılan: overall

SuppressionResultobject

SuppressionResult
AlanTipAçıklama
suppressedzorunluboolean
channelzorunlustring

Değerler: email, sms

changedzorunluboolean

TableSectionobject

TableSection
AlanTipAçıklama
idstring

Desen: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 karakter

titlestring

null olabilir

sizestring

Değerler: kpi, half, full

typezorunlustring

Sabit: table

dimensionszorunlustring[]

1–2 öğe

metricszorunlustring[]

1–8 öğe

limitzorunluinteger

1–50 · Varsayılan: 10

orderBystring

Desen: ^(?:[a-z][a-z0-9_]{0,49}(?::[a-z][a-z0-9_]{0,49})?|social\.[a-z][a-z0-9_]{0,19}\.[a-z][a-z0-9_]{0,49}|(?:email|sms)\.[a-z][a-z0-9_]{0,49})$ · 1–101 karakter

directionzorunlustring

Değerler: asc, desc · Varsayılan: desc

sharezorunluboolean

Varsayılan: false

filterszorunluQueryFilter[]

en çok 10 öğe · Varsayılan: []

segmentIdstring

null olabilir

TestSendRequestobject

TestSendRequest
AlanTipAçıklama
recipientszorunlustring[]

1–5 öğe

contactIdstring

Biçim: uuid

TestSendResultobject

TestSendResult
AlanTipAçıklama
resultszorunluobject[]
results[].tozorunlustring
results[].statuszorunlustring

Değerler: sent, failed

results[].errorCodezorunlustring

null olabilir

smszorunluSmsSegments

null olabilir

campaignzorunluMessageCampaign

TimeToConvertobject

TimeToConvert
AlanTipAçıklama
countzorunluinteger
averageSecondszorunlunumber

null olabilir

medianSecondszorunlunumber

null olabilir

p75Secondszorunlunumber

null olabilir

p90Secondszorunlunumber

null olabilir

histogramzorunluobject[]
histogram[].upToSecondszorunlunumber

null olabilir

histogram[].countzorunluinteger

TimeseriesSectionobject

TimeseriesSection
AlanTipAçıklama
idstring

Desen: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 karakter

titlestring

null olabilir

sizestring

Değerler: kpi, half, full

typezorunlustring

Sabit: timeseries

metricszorunlustring[]

1–4 öğe

granularityzorunlustring

Değerler: day, week, month · Varsayılan: day

breakdownstring

Desen: ^(?:[a-z][a-z_]{1,30}|property:[A-Za-z_][A-Za-z0-9_]{0,99})$ · 1–120 karakter

breakdownLimitzorunluinteger

2–8 · Varsayılan: 6

chartzorunlustring

Değerler: line, bar, stacked_bar · Varsayılan: line

filterszorunluQueryFilter[]

en çok 10 öğe · Varsayılan: []

segmentIdstring

null olabilir

Timestampstring

TrafficIncludeobject

TrafficInclude
AlanTipAçıklama
testboolean

Varsayılan: false

internalboolean

Varsayılan: false

botboolean

Varsayılan: false

TraitListobject

TraitList
AlanTipAçıklama
itemszorunluPropertyDefinitionRecord[]

UpdateAppRequestobject

UpdateAppRequest
AlanTipAçıklama
slugstring

Desen: ^[a-z0-9](?:[a-z0-9-]{0,48}[a-z0-9])?$ · 1–50 karakter

namestring

1–200 karakter

descriptionstring

null olabilir

websiteUrlstring

null olabilir

iconUrlstring

null olabilir

timezonestring

en çok 64 karakter

currencystring

Desen: ^[A-Z]{3}$

schemaModestring

Değerler: strict, lenient, discover

attributionModelstring

Değerler: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

attributionWindowDaysinteger

1–365

conversionRolesstring[]

1–16 öğe

leadContactClicksboolean
retentionobject
retention.eventsMonthszorunluinteger

1–120

retention.interactionsMonthszorunluinteger

1–60

retention.sessionsMonthszorunluinteger

1–120

internalIpRangesstring[]

en çok 100 öğe

internalCookiestring

null olabilir

revenueBasisstring

Değerler: gross, net

pricesIncludeTaxboolean
overviewTilesOverviewTileRequest[]

en çok 12 öğe

adsKpisstring[]

en çok 12 öğe

modulesstring[]

en çok 6 öğe

defaultAlertRecipientsAlertRecipients
searchBrandTermsstring[]

en çok 50 öğe

UpdateEventDefinitionRequestobject

UpdateEventDefinitionRequest
AlanTipAçıklama
displayNamestring

1–200 karakter

descriptionstring

null olabilir

categorystring

null olabilir

rolesstring[]

en çok 16 öğe

aliasesstring[]

en çok 20 öğe

propertiesPropertyDefinitionInput[]

en çok 200 öğe

displayNamesLocalizedNames

UpdateMessageCampaignRequestobject

UpdateMessageCampaignRequest
AlanTipAçıklama
namestring

1–200 karakter

subjectstring

null olabilir

preheaderstring

null olabilir

bodystring

en çok 20000 karakter

senderIdstring

null olabilir

audienceobject
audience.listIdsstring[]

en çok 20 öğe · Varsayılan: []

audience.segmentIdstring

null olabilir

localestring

Değerler: tr, en

throttlePerMinuteinteger

null olabilir

utmSourcestring

1–100 karakter

UpdateSourceRequestobject

UpdateSourceRequest
AlanTipAçıklama
namestring

1–200 karakter

environmentstring

Değerler: production, staging, development

statusstring

Değerler: active, disabled

requireSignatureboolean
allowedOriginsstring[]

en çok 100 öğe

consentModestring

Değerler: required, implied, none

excludedPathsstring[]

en çok 200 öğe

maskSelectorsstring[]

en çok 100 öğe

ignoreSelectorsstring[]

en çok 100 öğe

stripQueryParamsstring[]

en çok 100 öğe

sessionTimeoutMinutesinteger

5–240

interactionSampleRatenumber

0–1

autocaptureobject
autocapture.pageviewsboolean
autocapture.pageleaveboolean
autocapture.clicksboolean
autocapture.rageClicksboolean
autocapture.deadClicksboolean
autocapture.scrollboolean
autocapture.errorsboolean
autocapture.formsboolean
autocapture.layoutboolean
autocapture.outboundLinksboolean
autocapture.downloadsboolean
autocapture.webVitalsboolean
dataLayerEventsstring[]

en çok 100 öğe

UpdateTraitRequestobject

UpdateTraitRequest
AlanTipAçıklama
typestring

Değerler: string, number, integer, boolean, datetime, money, currency, enum, object, array

itemTypestring

null olabilir

requiredboolean
descriptionstring

null olabilir

piiClassstring

Değerler: none, pseudonymous, personal, sensitive

piiActionstring

Değerler: allow, hash, drop, reject

enumValuesstring[]

null olabilir

maxLengthinteger

null olabilir

minimumnumber

null olabilir

maximumnumber

null olabilir

exampleany
displayNamesLocalizedNames

UpsertContactRequestobject

UpsertContactRequest
AlanTipAçıklama
namestring

null olabilir

emailstring

null olabilir

phonestring

null olabilir

mobilestring

null olabilir

landlinestring

null olabilir

companystring

null olabilir

titlestring

null olabilir

citystring

null olabilir

districtstring

null olabilir

userIdstring

null olabilir

localestring

null olabilir

tagsstring[]

en çok 30 öğe

consentsobject
consents.emailConsentChange
consents.smsConsentChange
listIdsstring[]

en çok 50 öğe

UpsertContactResultobject

UpsertContactResult
AlanTipAçıklama
contactIdzorunluId

Biçim: uuid

createdzorunluboolean
consentszorunluobject
consents.emailzorunlustring

Değerler: none, merchant, opt_in, opt_out

consents.smszorunlustring

Değerler: none, merchant, opt_in, opt_out