Skip to content
Documentation menuManagement 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 }.

Version 1.0.0OpenAPI 3.1.1Download the OpenAPI document

This page is generated at build time from docs/api/openapi/management.json in the repository.

The descriptions in this reference come from the OpenAPI document generated from the code and are written in Turkish for now; endpoints, fields and types are language-neutral.

Servers

URLDescription
https://api.metrics.exampleManagement API

Authentication

NameMethodDescription
apiKeyBearer token (mk_…)Organizasyonun Management API anahtarı (mk_ + 40 karakter).

Sağlık

1 endpoint

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

GET/v1/health

Sağlık

Herkese açık: kimlik gerekmez.

Authentication
No authentication

Responses

  • 200

    Başarılı.

    application/jsonobject

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

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

    application/jsonErrorResponse

Organizasyon

4 endpoints

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.

Authentication
apiKey
Required scope
management:read

Parameters

NameInTypeDescription
cursorquerystring

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

limitqueryinteger

1–200 · Default: 50

statusquerystring

Values: pending, accepted, revoked, expired

Responses

  • 200

    Başarılı.

    application/jsonInvitationPage

    Example · 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.

Authentication
apiKey
Required scope
management:write

Request bodyBody required

application/jsonCreateInvitationRequest

FieldTypeDescription
emailrequiredstring

1–320 characters

roleIdrequiredstring

Format: uuid

appScopestring

Values: all, selected · Default: all

appIdsstring[]

at most 200 items · Default: []

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

Responses

  • 201

    Oluşturuldu.

    application/jsonInvitation

    Example · 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.

Authentication
apiKey
Required scope
management:read

Parameters

NameInTypeDescription
cursorquerystring

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

limitqueryinteger

1–200 · Default: 50

statusquerystring

Values: active, disabled

Responses

  • 200

    Başarılı.

    application/jsonMemberPage

    Example · 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.

Authentication
apiKey
Required scope
management:read

Responses

  • 200

    Başarılı.

    application/jsonRoleList

    Example · 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 endpoints

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

Authentication
apiKey
Required scope
management:read

Parameters

NameInTypeDescription
cursorquerystring

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

limitqueryinteger

1–200 · Default: 50

statusquerystring

Values: active, archived

Responses

  • 200

    Başarılı.

    application/jsonAppPage

    Example · 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.

Authentication
apiKey
Required scope
management:write

Request bodyBody required

application/jsonCreateAppRequest

FieldTypeDescription
slugrequiredstring

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

namerequiredstring

1–200 characters

descriptionstring

may be null

websiteUrlstring

may be null

iconUrlstring

may be null

timezonestring

at most 64 characters

currencystring

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

schemaModestring

Values: strict, lenient, discover · Default: lenient

attributionModelstring

Values: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid · Default: last_non_direct

attributionWindowDaysinteger

1–365 · Default: 90

conversionRolesstring[]

1–16 items · Default: ["signup","trial_start","lead","demo_request","purchase"]

leadContactClicksboolean

Default: false

retentionobject
retention.eventsMonthsrequiredinteger

1–120

retention.interactionsMonthsrequiredinteger

1–60

retention.sessionsMonthsrequiredinteger

1–120

internalIpRangesstring[]

at most 100 items · Default: []

internalCookiestring

may be null

revenueBasisstring

Values: gross, net · Default: gross

pricesIncludeTaxboolean

Default: true

overviewTilesOverviewTileRequest[]

at most 12 items · Default: []

adsKpisstring[]

at most 12 items · Default: []

modulesstring[]

at most 6 items · Default: ["ads","social","messaging","content","leads","behavior"]

defaultAlertRecipientsAlertRecipients
searchBrandTermsstring[]

at most 50 items · Default: []

Example · 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": []
}

Responses

  • 201

    Oluşturuldu.

    application/jsonApp

    Example · 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.

Authentication
apiKey
Required scope
management:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonApp

    Example · 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.

Authentication
apiKey
Required scope
management:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Request bodyBody required

application/jsonUpdateAppRequest

FieldTypeDescription
slugstring

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

namestring

1–200 characters

descriptionstring

may be null

websiteUrlstring

may be null

iconUrlstring

may be null

timezonestring

at most 64 characters

currencystring

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

schemaModestring

Values: strict, lenient, discover

attributionModelstring

Values: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

attributionWindowDaysinteger

1–365

conversionRolesstring[]

1–16 items

leadContactClicksboolean
retentionobject
retention.eventsMonthsrequiredinteger

1–120

retention.interactionsMonthsrequiredinteger

1–60

retention.sessionsMonthsrequiredinteger

1–120

internalIpRangesstring[]

at most 100 items

internalCookiestring

may be null

revenueBasisstring

Values: gross, net

pricesIncludeTaxboolean
overviewTilesOverviewTileRequest[]

at most 12 items

adsKpisstring[]

at most 12 items

modulesstring[]

at most 6 items

defaultAlertRecipientsAlertRecipients
searchBrandTermsstring[]

at most 50 items

Example · 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"
  ]
}

Responses

  • 200

    Başarılı.

    application/jsonApp

    Example · 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 endpoints

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.

Authentication
apiKey
Required scope
management:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

cursorquerystring

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

limitqueryinteger

1–200 · Default: 50

statusquerystring

Values: active, disabled

kindquerystring

Values: web, ios, android, server, other

Responses

  • 200

    Başarılı.

    application/jsonSourcePage

    Example · 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.

Authentication
apiKey
Required scope
management:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Request bodyBody required

application/jsonCreateSourceRequest

FieldTypeDescription
namerequiredstring

1–200 characters

kindrequiredstring

Values: web, ios, android, server, other

environmentstring

Values: production, staging, development · Default: production

requireSignatureboolean

Default: false

allowedOriginsstring[]

at most 100 items · Default: []

consentModestring

Values: required, implied, none · Default: required

excludedPathsstring[]

at most 200 items · Default: []

maskSelectorsstring[]

at most 100 items · Default: []

ignoreSelectorsstring[]

at most 100 items · Default: []

stripQueryParamsstring[]

at most 100 items · Default: []

sessionTimeoutMinutesinteger

5–240 · Default: 30

interactionSampleRatenumber

0–1 · Default: 1

autocaptureobject

Default: {}

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[]

at most 100 items · Default: []

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

Responses

  • 201

    Oluşturuldu.

    application/jsonSource

    Example · 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.

Authentication
apiKey
Required scope
management:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

sourceIdrequiredpathstringKaynağın kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonSource

    Example · 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.

Authentication
apiKey
Required scope
management:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

sourceIdrequiredpathstringKaynağın kimliği.

Format: uuid

Request bodyBody required

application/jsonUpdateSourceRequest

FieldTypeDescription
namestring

1–200 characters

environmentstring

Values: production, staging, development

statusstring

Values: active, disabled

requireSignatureboolean
allowedOriginsstring[]

at most 100 items

consentModestring

Values: required, implied, none

excludedPathsstring[]

at most 200 items

maskSelectorsstring[]

at most 100 items

ignoreSelectorsstring[]

at most 100 items

stripQueryParamsstring[]

at most 100 items

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[]

at most 100 items

Example · 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"
  ]
}

Responses

  • 200

    Başarılı.

    application/jsonSource

    Example · 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.

Authentication
apiKey
Required scope
management:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

sourceIdrequiredpathstringKaynağın kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonSourceHealth

    Example · 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.

Authentication
apiKey
Required scope
management:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

sourceIdrequiredpathstringKaynağın kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonSourceKeyList

    Example · 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.

Authentication
apiKey
Required scope
management:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

sourceIdrequiredpathstringKaynağın kimliği.

Format: uuid

Request bodyBody required

application/jsonCreateSourceKeyRequest

FieldTypeDescription
kindrequiredstring

Values: write, signing

modestring

Values: live, test · Default: live

Example · JSON
{
  "kind": "write",
  "mode": "live"
}

Responses

  • 201

    Oluşturuldu.

    application/jsonCreatedSourceKey

    Example · 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.

Authentication
apiKey
Required scope
management:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

sourceIdrequiredpathstringKaynağın kimliği.

Format: uuid

keyIdrequiredpathstring

Format: uuid

Request body

application/jsonRevokeSourceKeyRequest

FieldTypeDescription
graceMinutesinteger

0–10080 · Default: 0

Example · JSON
{
  "graceMinutes": 0
}

Responses

  • 200

    Başarılı.

    application/jsonSourceKey

    Example · 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 endpoints

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.

Authentication
apiKey
Required scope
management:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

cursorquerystring

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

limitqueryinteger

1–200 · Default: 50

statusquerystring

Values: draft, active, deprecated, blocked

rolequerystring

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

searchquerystring

at most 100 characters

Responses

  • 200

    Başarılı.

    application/jsonEventDefinitionPage

    Example · 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.

Authentication
apiKey
Required scope
management:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Request bodyBody required

application/jsonCreateEventDefinitionRequest

FieldTypeDescription
namerequiredstring

1–200 characters

displayNamerequiredstring

1–200 characters

descriptionstring

may be null

categorystring

may be null

rolesstring[]

at most 16 items · Default: []

statusstring

Values: draft, active, deprecated, blocked · Default: active

aliasesstring[]

at most 20 items · Default: []

propertiesPropertyDefinitionInput[]

at most 200 items

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

Responses

  • 201

    Oluşturuldu.

    application/jsonEventDefinitionRecord

    Example · 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.

Authentication
apiKey
Required scope
management:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

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

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonEventDefinitionRecord

    Example · 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.

Authentication
apiKey
Required scope
management:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

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

Format: uuid

Request bodyBody required

application/jsonUpdateEventDefinitionRequest

FieldTypeDescription
displayNamestring

1–200 characters

descriptionstring

may be null

categorystring

may be null

rolesstring[]

at most 16 items

aliasesstring[]

at most 20 items

propertiesPropertyDefinitionInput[]

at most 200 items

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

Responses

  • 200

    Başarılı.

    application/jsonEventDefinitionRecord

    Example · 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.

Authentication
apiKey
Required scope
management:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

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

Format: uuid

Responses

  • 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.

Authentication
apiKey
Required scope
management:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

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

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonJsonSchemaDocument

    Example · 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.

Authentication
apiKey
Required scope
management:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

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

Format: uuid

Request bodyBody required

application/jsonChangeEventStatusRequest

FieldTypeDescription
statusrequiredstring

Values: draft, active, deprecated, blocked

Example · JSON
{
  "status": "draft"
}

Responses

  • 200

    Başarılı.

    application/jsonEventDefinitionRecord

    Example · 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.

Authentication
apiKey
Required scope
management:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonTraitList

    Example · 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.

Authentication
apiKey
Required scope
management:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Request bodyBody required

application/jsonPropertyDefinitionInput

FieldTypeDescription
keyrequiredstring

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

typerequiredstring

Values: string, number, integer, boolean, datetime, money, currency, enum, object, array

itemTypestring

may be null

requiredboolean

Default: false

descriptionstring

may be null

piiClassstring

Values: none, pseudonymous, personal, sensitive · Default: none

piiActionstring

Values: allow, hash, drop, reject · Default: allow

enumValuesstring[]

may be null

maxLengthinteger

may be null

minimumnumber

may be null

maximumnumber

may be null

exampleany
displayNamesLocalizedNames
Example · 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"
  }
}

Responses

  • 201

    Oluşturuldu.

    application/jsonPropertyDefinitionRecord

    Example · 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.

Authentication
apiKey
Required scope
management:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

propertyIdrequiredpathstring

Format: uuid

Request bodyBody required

application/jsonUpdateTraitRequest

FieldTypeDescription
typestring

Values: string, number, integer, boolean, datetime, money, currency, enum, object, array

itemTypestring

may be null

requiredboolean
descriptionstring

may be null

piiClassstring

Values: none, pseudonymous, personal, sensitive

piiActionstring

Values: allow, hash, drop, reject

enumValuesstring[]

may be null

maxLengthinteger

may be null

minimumnumber

may be null

maximumnumber

may be null

exampleany
displayNamesLocalizedNames
Example · 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"
  }
}

Responses

  • 200

    Başarılı.

    application/jsonPropertyDefinitionRecord

    Example · 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.

Authentication
apiKey
Required scope
management:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

propertyIdrequiredpathstring

Format: uuid

Responses

  • 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.

Authentication
apiKey
Required scope
management:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonSchemaBundle

    Example · 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.

Authentication
apiKey
Required scope
management:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonTraitList

    Example · 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.

Authentication
apiKey
Required scope
management:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Request bodyBody required

application/jsonPropertyDefinitionInput

FieldTypeDescription
keyrequiredstring

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

typerequiredstring

Values: string, number, integer, boolean, datetime, money, currency, enum, object, array

itemTypestring

may be null

requiredboolean

Default: false

descriptionstring

may be null

piiClassstring

Values: none, pseudonymous, personal, sensitive · Default: none

piiActionstring

Values: allow, hash, drop, reject · Default: allow

enumValuesstring[]

may be null

maxLengthinteger

may be null

minimumnumber

may be null

maximumnumber

may be null

exampleany
displayNamesLocalizedNames
Example · 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"
  }
}

Responses

  • 201

    Oluşturuldu.

    application/jsonPropertyDefinitionRecord

    Example · 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.

Authentication
apiKey
Required scope
management:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

propertyIdrequiredpathstring

Format: uuid

Request bodyBody required

application/jsonUpdateTraitRequest

FieldTypeDescription
typestring

Values: string, number, integer, boolean, datetime, money, currency, enum, object, array

itemTypestring

may be null

requiredboolean
descriptionstring

may be null

piiClassstring

Values: none, pseudonymous, personal, sensitive

piiActionstring

Values: allow, hash, drop, reject

enumValuesstring[]

may be null

maxLengthinteger

may be null

minimumnumber

may be null

maximumnumber

may be null

exampleany
displayNamesLocalizedNames
Example · 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"
  }
}

Responses

  • 200

    Başarılı.

    application/jsonPropertyDefinitionRecord

    Example · 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.

Authentication
apiKey
Required scope
management:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

propertyIdrequiredpathstring

Format: uuid

Responses

  • 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 endpoints

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.

Authentication
apiKey
Required scope
query:read

Request bodyBody required

application/jsonQueryApiRequest

FieldTypeDescription
appIdrequiredstring

Format: uuid

metricsrequiredstring[]

1–20 items

dimensionsstring[]

at most 3 items · Default: []

filtersQueryFilterInput[]

at most 20 items · Default: []

dateRangerequiredDateRange
comparestring

Values: none, previous_period, previous_year, custom · Default: none

compareRangeDateRange
includeTrafficInclude
granularitystring

Values: day, week, month

attributionModelstring

Values: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

orderByobject
orderBy.metricrequiredstring

Pattern: ^(?:[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 characters

orderBy.directionstring

Values: asc, desc · Default: desc

limitinteger

1–10000 · Default: 1000

segmentIdstring

Format: uuid

definitionsDraftMetricDefinition[]

at most 5 items

Example · 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"
    }
  ]
}

Responses

  • 200

    Başarılı.

    application/jsonAnalyticsQueryResult

    Example · 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.

Authentication
apiKey
Required scope
query:read

Parameters

NameInTypeDescription
appIdrequiredquerystring

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonAnalyticsCatalogue

    Example · 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 endpoints

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.

Authentication
apiKey
Required scope
persons:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

cursorquerystring

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

limitqueryinteger

1–200 · Default: 50

searchquerystring

1–200 characters

sortquerystring

Values: last_seen, first_seen, members · Default: last_seen

Responses

  • 200

    Başarılı.

    application/jsonAccountPage

    Example · 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.

Authentication
apiKey
Required scope
persons:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

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

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonAccountProfile

    Example · 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.

Authentication
apiKey
Required scope
persons:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

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

Format: uuid

cursorquerystring

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

limitqueryinteger

1–200 · Default: 50

typequerystring

Values: track, identify, page, screen, group, alias

conversionsquerystring

Values: true, false

Responses

  • 200

    Başarılı.

    application/jsonAccountEventPage

    Example · 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.

Authentication
apiKey
Required scope
persons:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

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

Format: uuid

cursorquerystring

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

limitqueryinteger

1–200 · Default: 50

Responses

  • 200

    Başarılı.

    application/jsonAccountMemberPage

    Example · 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.

Authentication
apiKey
Required scope
persons:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

cursorquerystring

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

limitqueryinteger

1–200 · Default: 50

searchquerystring

1–200 characters

searchMatchquerystring

Values: exact, prefix · Default: exact

sortquerystring

Values: last_seen, first_seen · Default: last_seen

includeTestquerystring

Values: true, false

includeInternalquerystring

Values: true, false

includeBotquerystring

Values: true, false

Responses

  • 200

    Başarılı.

    application/jsonPersonPage

    Example · 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.

Authentication
apiKey
Required scope
persons:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

personIdrequiredpathstringKişinin kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonPersonProfile

    Example · 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.

Authentication
apiKey
Required scope
persons:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

personIdrequiredpathstringKişinin kimliği.

Format: uuid

cursorquerystring

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

limitqueryinteger

1–200 · Default: 50

typequerystring

Values: track, identify, page, screen, group, alias

conversionsquerystring

Values: true, false

Responses

  • 200

    Başarılı.

    application/jsonPersonEventPage

    Example · 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 endpoints

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.

Authentication
apiKey
Required scope
management:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

cursorquerystring

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

limitqueryinteger

1–200 · Default: 50

statusquerystringYalnız bu durumdaki talepler.

Values: pending, running, completed, failed, cancelled

Responses

  • 200

    Başarılı.

    application/jsonDeletionRequestPage

    Example · 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.

Authentication
apiKey
Required scope
management:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Request bodyBody required

application/jsonCreateDeletionRequest

FieldTypeDescription
subjectKindrequiredstringKimliğ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).

Values: user_id, anonymous_id, person_id

subjectValuerequiredstringKimliğ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 characters

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

may be null

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

Responses

  • 201

    Oluşturuldu.

    application/jsonDeletionRequest

    Example · 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.

Authentication
apiKey
Required scope
management:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

requestIdrequiredpathstringSilme talebinin kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonDeletionRequest

    Example · 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.

Authentication
apiKey
Required scope
management:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

requestIdrequiredpathstringSilme talebinin kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonDeletionRequest

    Example · 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 endpoints

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.

Authentication
apiKey
Required scope
management:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonFunnelList

    Example · 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.

Authentication
apiKey
Required scope
management:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

funnelIdrequiredpathstringHuninin kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonFunnel

    Example · 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.

Authentication
apiKey
Required scope
query:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

funnelIdrequiredpathstringHuninin kimliği.

Format: uuid

fromrequiredquerystring
torequiredquerystring
countingModequerystring

Values: event_date, cohort

breakdownquerystring
attributionModelquerystring

Values: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

includeTestquerystring

Values: true, false

includeInternalquerystring

Values: true, false

includeBotquerystring

Values: true, false

comparequerystring

Values: none, previous_period, previous_year · Default: none

alignmentquerystring

Values: week_to_date, month_to_date, calendar_month, quarter_to_date, calendar_quarter, year_to_date, calendar_year

seriesquerystring

Values: day, week, month

seriesBasisquerystring

Values: step_date, entry_date · Default: step_date

Responses

  • 200

    Başarılı.

    application/jsonFunnelScreenResult

    Example · 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.

Authentication
apiKey
Required scope
query:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

funnelIdrequiredpathstringHuninin kimliği.

Format: uuid

fromrequiredquerystring
torequiredquerystring
stepqueryinteger

2–10

weeksqueryinteger

1–26 · Default: 8

includeTestquerystring

Values: true, false

includeInternalquerystring

Values: true, false

includeBotquerystring

Values: true, false

Responses

  • 200

    Başarılı.

    application/jsonFunnelCohorts

    Example · 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 endpoints

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.

Authentication
apiKey
Required scope
leads:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

cursorquerystring

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

limitqueryinteger

1–200 · Default: 50

statusquerystring

at most 500 characters

stagequerystring | string[]
kindquerystring

at most 500 characters

assigneequerystring
channelquerystring | string[]
campaignquerystring | string[]
overduequerystring

Values: true, false

ctaquerystring | string[]
sourcequerystring | string[]
mediumquerystring | string[]
deviceTypequerystring

1–50 characters

countryquerystring

2–2 characters

fromquerystring
toquerystring
includeTestquerystring

Values: true, false

includeInternalquerystring

Values: true, false

Responses

  • 200

    Başarılı.

    application/jsonLeadPage

    Example · 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.

Authentication
apiKey
Required scope
leads:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

leadIdrequiredpathstringTalebin kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonLeadDetail

    Example · 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 endpoint

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.

Authentication
apiKey
Required scope
ads:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonConnectionList

    Example · 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 endpoints

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.

Authentication
apiKey
Required scope
ads:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonAdAccountList

    Example · 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.

Authentication
apiKey
Required scope
ads:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

monthquerystring

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

Responses

  • 200

    Başarılı.

    application/jsonAdsBudget

    Example · 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.

Authentication
apiKey
Required scope
ads:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

fromrequiredquerystring
torequiredquerystring
comparequerystring

Values: none, previous_period, previous_year · Default: previous_period

alignmentquerystring

Values: week_to_date, month_to_date, calendar_month, quarter_to_date, calendar_quarter, year_to_date, calendar_year

includeTestquerystring

Values: true, false

includeInternalquerystring

Values: true, false

includeBotquerystring

Values: true, false

platformsquerystring

at most 4000 characters

accountIdsquerystring

at most 4000 characters

attributionModelquerystring

Values: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

statusquerystring

Values: active, paused, ended, all · Default: all

orderByquerystring

1–100 characters · Default: spend

directionquerystring

Values: asc, desc · Default: desc

minClicksqueryinteger

0–10000000 · Default: 20

searchquerystring

1–100 characters

namingquerystring

Values: all, off_template, follows_template · Default: all

Responses

  • 200

    Başarılı.

    application/jsonAdsCampaigns

    Example · 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.

Authentication
apiKey
Required scope
ads:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

fromrequiredquerystring
torequiredquerystring
includeTestquerystring

Values: true, false

includeInternalquerystring

Values: true, false

includeBotquerystring

Values: true, false

platformsquerystring

at most 4000 characters

accountIdsquerystring

at most 4000 characters

campaignIdsquerystring

at most 4000 characters

rolequerystring

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

modelquerystring

Values: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

scopequerystring

Values: ads, all · Default: ads

cursorquerystring

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

limitqueryinteger

1–200 · Default: 50

Responses

  • 200

    Başarılı.

    application/jsonAdConversionPage

    Example · 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 endpoints

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.

Authentication
apiKey
Required scope
reports:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonForecastScenarioList

    Example · 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.

Authentication
apiKey
Required scope
reports:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

scenarioIdrequiredpathstringTahmin senaryosunun kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonForecastScenario

    Example · 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.

Authentication
apiKey
Required scope
reports:read

Parameters

NameInTypeDescription
cursorquerystring

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

limitqueryinteger

1–200 · Default: 50

appIdquerystring

Format: uuid

searchquerystring

1–200 characters

Responses

  • 200

    Başarılı.

    application/jsonReportPage

    Example · 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.

Authentication
apiKey
Required scope
reports:read

Parameters

NameInTypeDescription
reportIdrequiredpathstringRaporun kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonReport

    Example · 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.

Authentication
apiKey
Required scope
reports:read

Parameters

NameInTypeDescription
reportIdrequiredpathstringRaporun kimliği.

Format: uuid

cursorquerystring

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

limitqueryinteger

1–200 · Default: 50

Responses

  • 200

    Başarılı.

    application/jsonReportSnapshotPage

    Example · 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.

Authentication
apiKey
Required scope
reports:read

Parameters

NameInTypeDescription
reportIdrequiredpathstringRaporun kimliği.

Format: uuid

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

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonReportSnapshot

    Example · 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.

Authentication
apiKey
Required scope
reports:read

Parameters

NameInTypeDescription
reportIdrequiredpathstringRaporun kimliği.

Format: uuid

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

Format: uuid

Responses

  • 200

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

    Response headers

    • 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 endpoints

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.

Authentication
apiKey
Required scope
social:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonSocialAccountList

    Example · 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.

Authentication
apiKey
Required scope
social:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

platformquerystring

Values: all, instagram, facebook, linkedin · Default: all

accountIdsquerystring

at most 4000 characters

fromrequiredquerystring
torequiredquerystring
comparequerystring

Values: none, previous_period, previous_year · Default: previous_period

alignmentquerystring

Values: week_to_date, month_to_date, calendar_month, quarter_to_date, calendar_quarter, year_to_date, calendar_year

granularityquerystring

Values: day, week, month · Default: day

Responses

  • 200

    Başarılı.

    application/jsonSocialOverview

    Example · 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.

Authentication
apiKey
Required scope
social:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

cursorquerystring

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

limitqueryinteger

1–200 · Default: 50

platformquerystring

Values: all, instagram, facebook, linkedin · Default: all

accountIdsquerystring

at most 4000 characters

fromquerystring
toquerystring
typequerystring

Values: image, carousel, video, reel, story, text, link, other

searchquerystring

at most 200 characters

campaignquerystring

at most 120 characters

sortquerystring

Values: newest, engagement, reach · Default: newest

Responses

  • 200

    Başarılı.

    application/jsonSocialPublishedPostPage

    Example · 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.

Authentication
apiKey
Required scope
social:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

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

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonSocialPublishedPostDetail

    Example · 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 endpoints

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.

Authentication
apiKey
Required scope
query:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

subjectquerystring

Values: person, account

Responses

  • 200

    Başarılı.

    application/jsonAnalyticsSegmentList

    Example · 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.

Authentication
apiKey
Required scope
query:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

segmentIdrequiredpathstringSegmentin kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonAnalyticsSegment

    Example · 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.

Authentication
apiKey
Required scope
query:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

segmentIdrequiredpathstringSegmentin kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonAnalyticsSegmentCount

    Example · 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 endpoints

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.

Authentication
apiKey
Required scope
messaging:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

cursorquerystring

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

limitqueryinteger

1–200 · Default: 50

channelquerystring

Values: email, sms

statusquerystring

Values: draft, awaiting_approval, scheduled, sending, paused, sent, cancelled, failed

Responses

  • 200

    Başarılı.

    application/jsonMessageCampaignPage

    Example · 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.

Authentication
apiKey
Required scope
messaging:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Request bodyBody required

application/jsonCreateMessageCampaignRequest

FieldTypeDescription
channelrequiredstring

Values: email, sms

namerequiredstring

1–200 characters

templateIdstring

Format: uuid

templateKeystring

at most 80 characters

subjectstring

may be null

preheaderstring

may be null

bodystring

at most 20000 characters

senderIdstring

may be null

audienceobject
audience.listIdsstring[]

at most 20 items · Default: []

audience.segmentIdstring

may be null

localestring

Values: tr, en

throttlePerMinuteinteger

may be null

utmSourcestring

1–100 characters

Example · 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"
}

Responses

  • 201

    Oluşturuldu.

    application/jsonMessageCampaign

    Example · 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.

Authentication
apiKey
Required scope
messaging:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

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

Format: uuid

Request bodyBody required

application/jsonUpdateMessageCampaignRequest

FieldTypeDescription
namestring

1–200 characters

subjectstring

may be null

preheaderstring

may be null

bodystring

at most 20000 characters

senderIdstring

may be null

audienceobject
audience.listIdsstring[]

at most 20 items · Default: []

audience.segmentIdstring

may be null

localestring

Values: tr, en

throttlePerMinuteinteger

may be null

utmSourcestring

1–100 characters

Example · 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"
}

Responses

  • 200

    Başarılı.

    application/jsonMessageCampaign

    Example · 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.

Authentication
apiKey
Required scope
messaging:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

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

Format: uuid

segmentIdquerystring

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonCampaignResults

    Example · 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.

Authentication
apiKey
Required scope
messaging:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

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

Format: uuid

Request bodyBody required

application/jsonSendCampaignRequest

FieldTypeDescription
contentReviewedrequiredboolean

Constant: true

confirmrequiredboolean

Constant: true

scheduleMessagingLocalTime

may be null

notestring

may be null

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

Responses

  • 200

    Başarılı.

    application/jsonMessageCampaign

    Example · 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.

Authentication
apiKey
Required scope
messaging:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

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

Format: uuid

Request bodyBody required

application/jsonTestSendRequest

FieldTypeDescription
recipientsrequiredstring[]

1–5 items

contactIdstring

Format: uuid

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

Responses

  • 200

    Başarılı.

    application/jsonTestSendResult

    Example · 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.

Authentication
apiKey
Required scope
messaging:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Request bodyBody required

application/jsonManagementConsentRequest

FieldTypeDescription
contactIdstring

Format: uuid

emailstring

at most 320 characters

phonestring

at most 40 characters

userIdstring

1–200 characters

channelrequiredstring

Values: email, sms

kindrequiredstring

Values: none, merchant, opt_in, opt_out

reasonstring

may be null

evidencestring

may be null

formstring

may be null

occurredAtstring

Format: date-time

Example · 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"
}

Responses

  • 200

    Başarılı.

    application/jsonConsentResult

    Example · 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.

Authentication
apiKey
Required scope
messaging:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Request bodyBody required

application/jsonUpsertContactRequest

FieldTypeDescription
namestring

may be null

emailstring

may be null

phonestring

may be null

mobilestring

may be null

landlinestring

may be null

companystring

may be null

titlestring

may be null

citystring

may be null

districtstring

may be null

userIdstring

may be null

localestring

may be null

tagsstring[]

at most 30 items

consentsobject
consents.emailConsentChange
consents.smsConsentChange
listIdsstring[]

at most 50 items

Example · 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"
  ]
}

Responses

  • 200

    Başarılı.

    application/jsonUpsertContactResult

    Example · 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.

Authentication
apiKey
Required scope
messaging:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Request bodyBody required

application/jsonContactReference

FieldTypeDescription
contactIdstring

Format: uuid

emailstring

at most 320 characters

phonestring

at most 40 characters

userIdstring

1–200 characters

Example · JSON
{
  "contactId": "01a1b249-9ed2-77e8-af53-0c99529e68cb",
  "email": "string",
  "phone": "string",
  "userId": "string"
}

Responses

  • 200

    Başarılı.

    application/jsonEraseContactResult

    Example · 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.

Authentication
apiKey
Required scope
messaging:read

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Responses

  • 200

    Başarılı.

    application/jsonContactListList

    Example · 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.

Authentication
apiKey
Required scope
messaging:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

listIdrequiredpathstringKişi listesinin kimliği.

Format: uuid

Request bodyBody required

application/jsonManagementListMembersRequest

FieldTypeDescription
addContactReference[]

at most 1000 items · Default: []

removeContactReference[]

at most 1000 items · Default: []

Example · JSON
{
  "add": [],
  "remove": []
}

Responses

  • 200

    Başarılı.

    application/jsonListMembersResult

    Example · 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.

Authentication
apiKey
Required scope
messaging:write

Parameters

NameInTypeDescription
appIdrequiredpathstringUygulamanın kimliği.

Format: uuid

Request bodyBody required

application/jsonManagementSuppressionRequest

FieldTypeDescription
channelrequiredstring

Values: email, sms

emailstring

at most 320 characters

phonestring

at most 40 characters

actionstring

Values: add, remove · Default: add

reasonstring

Values: hard_bounce, complaint, unsubscribe, manual, invalid_address · Default: manual

Example · JSON
{
  "channel": "email",
  "email": "string",
  "phone": "string",
  "action": "add",
  "reason": "manual"
}

Responses

  • 200

    Başarılı.

    application/jsonSuppressionResult

    Example · 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

Schemas

Schemas that requests and responses refer to by name.

AccountEventobject

AccountEvent
FieldTypeDescription
idrequiredId

Format: uuid

atrequiredTimestamp

Format: date-time

typerequiredstring

Values: track, page, screen, identify, group, alias

eventNamerequiredstring
rolesrequiredstring[]
conversionrequiredboolean
revenuerequirednumber

may be null

pathrequiredstring

may be null

sessionIdrequiredstring

may be null

propertiesrequiredobject

Free-form keys

personIdrequiredId

may be null

AccountEventPageobject

AccountEventPage
FieldTypeDescription
itemsrequiredAccountEvent[]
nextCursorrequiredstring

may be null

AccountMemberobject

AccountMember
FieldTypeDescription
idrequiredId

Format: uuid

userIdrequiredstring

may be null

firstSeenAtrequiredTimestamp

Format: date-time

lastSeenAtrequiredTimestamp

Format: date-time

firstChannelrequiredstring

may be null

eventCountrequiredinteger
sessionCountrequiredinteger
isTestrequiredboolean
isInternalrequiredboolean
isBotboolean
joinedAtrequiredTimestamp

Format: date-time

AccountMemberPageobject

AccountMemberPage
FieldTypeDescription
itemsrequiredAccountMember[]
nextCursorrequiredstring

may be null

totalrequiredinteger

AccountPageobject

AccountPage
FieldTypeDescription
itemsrequiredAccountSummary[]
nextCursorrequiredstring

may be null

totalrequiredinteger

AccountProfileobject

AccountProfile
FieldTypeDescription
accountrequiredAccountSummary
summaryrequiredobject
summary.membersrequiredinteger
summary.sessionsrequiredinteger
summary.eventsrequiredinteger
summary.conversionsrequiredinteger
summary.revenuerequirednumber
summary.refundsrequirednumber
summary.netRevenuerequirednumber
summary.currencyrequiredstring
summary.leadsrequiredinteger

may be null

rolesrequiredstring[]
membersrequiredAccountMember[]
sessionsrequiredSessionSummary[]
eventsrequiredAccountEvent[]
conversionsrequiredPersonConversion[]
leadsrequiredPersonLead

may be null

withheldTraitsrequiredstring[]

AccountSummaryobject

AccountSummary
FieldTypeDescription
groupIdrequiredstring
namerequiredstring

may be null

traitsrequiredobject

Free-form keys

memberCountrequiredinteger
firstSeenAtrequiredTimestamp

Format: date-time

lastSeenAtrequiredTimestamp

Format: date-time

AdAccountobject

AdAccount
FieldTypeDescription
idrequiredId

Format: uuid

platformrequiredstring
externalIdrequiredstring
namerequiredstring
currencyrequiredstring
timezonerequiredstring

may be null

statusrequiredstring

Values: active, disconnected

connectionIdrequiredId

may be null

lastSyncedAtrequiredTimestamp

may be null

linkrequiredstring

may be null

AdAccountListobject

AdAccountList
FieldTypeDescription
itemsrequiredAdAccount[]

AdBudgetobject

AdBudget
FieldTypeDescription
amountrequirednumber
typerequiredstring

Values: daily, lifetime

levelrequiredstring

Values: campaign, ad_group, campaign_group

currencyrequiredstring

AdCampaignobject

AdCampaign
FieldTypeDescription
idrequiredId

Format: uuid

platformrequiredstring
accountIdrequiredId

Format: uuid

accountNamerequiredstring
externalIdrequiredstring
namerequiredstring
statusrequiredstring

Values: active, paused, ended, removed, pending, unknown

platformStatusrequiredstring

may be null

objectiverequiredstring

Values: awareness, traffic, engagement, leads, sales, app_promotion, video_views, search, other

platformObjectiverequiredstring

may be null

channelTyperequiredstring

may be null

budgetrequiredAdBudget

may be null

startDaterequiredLocalDate

may be null

endDaterequiredLocalDate

may be null

campaignGrouprequiredobject

may be null

hasVideorequiredboolean
adGroupsrequiredinteger
adsrequiredinteger
linkrequiredstring

may be null

namingIssuesNamingIssue[]

AdConversionobject

AdConversion
FieldTypeDescription
eventIdrequiredId

Format: uuid

occurredAtrequiredTimestamp

Format: date-time

rolerequiredstring

may be null

furthestRolerequiredstring

may be null

soldrequiredboolean
accountIdrequiredstring

may be null

personIdrequiredId

may be null

channelrequiredstring

may be null

sourcerequiredstring

may be null

mediumrequiredstring

may be null

platformrequiredstring

may be null

adAccountIdrequiredId

may be null

campaignIdrequiredId

may be null

campaignNamerequiredstring

may be null

utmCampaignrequiredstring

may be null

adIdrequiredId

may be null

adNamerequiredstring

may be null

landingPagerequiredstring

may be null

resolutionrequiredstring

Values: click_id, campaign_id, utm_name, unknown

modelrequiredstring

Values: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

weightrequirednumber
isTestrequiredboolean
lastClickLeadLastClick

may be null

placementstring

may be null

AdConversionPageobject

AdConversionPage
FieldTypeDescription
itemsrequiredAdConversion[]
nextCursorrequiredstring

may be null

totalrequiredinteger
conversionsrequiredinteger
soldrequiredinteger
modelrequiredstring

Values: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

conversionRolesrequiredstring[]
countingModerequiredstring

Constant: event_date

AdConversionsListOptionsobject

AdConversionsListOptions
FieldTypeDescription
groupByrequiredstring

Values: account, conversion · Default: account

scoperequiredstring

Values: ads, all · Default: ads

rolesstring[]

at most 8 items

AdConversionsListSectionobject

AdConversionsListSection
FieldTypeDescription
idstring

Pattern: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 characters

titlestring

may be null

sizestring

Values: kpi, half, full

typerequiredstring

Constant: ad_conversions_list

groupByrequiredstring

Values: account, conversion · Default: account

scoperequiredstring

Values: ads, all · Default: ads

rolesstring[]

at most 8 items

platformsrequiredstring[]

at most 10 items · Default: []

limitrequiredinteger

1–50 · Default: 25

AdFunnelSectionobject

AdFunnelSection
FieldTypeDescription
idstring

Pattern: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 characters

titlestring

may be null

sizestring

Values: kpi, half, full

typerequiredstring

Constant: ad_funnel

rolesstring[]

at most 4 items

platformsrequiredstring[]

at most 10 items · Default: []

AdsBudgetobject

AdsBudget
FieldTypeDescription
monthrequiredstring
currencyrequiredstring
daysInMonthrequiredinteger
daysElapsedrequiredinteger
tolerancerequirednumber
totalrequiredBudgetPacing
linesrequiredBudgetPacing[]
plansrequiredBudgetPlan[]
cumulativerequiredobject[]
cumulative[].dayrequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

cumulative[].spendrequirednumber

may be null

cumulative[].cumulativerequirednumber

may be null

cumulative[].planrequirednumber

may be null

campaignsrequiredobject[]
campaigns[].campaignrequiredAdCampaign
campaigns[].last7DaysSpendrequirednumber
campaigns[].dailyAveragerequirednumber
campaigns[].budgetUserequirednumber

may be null

campaigns[].lastDataDayrequiredLocalDate

may be null

AdsCampaignsobject

AdsCampaigns
FieldTypeDescription
metricsrequiredAnalyticsQueryResult
campaignsrequiredAdCampaign[]
unmatchedrequiredAnalyticsQueryResult
countsrequiredobject
counts.activerequiredinteger
counts.pausedrequiredinteger
counts.endedrequiredinteger
counts.allrequiredinteger
namingobject
naming.hasTemplaterequiredboolean
naming.offTemplaterequiredinteger
naming.followsTemplaterequiredinteger
conversionRolesrequiredstring[]
originalSpendobject

Free-form keys

conversionRatesobject
conversionRates.minClicksrequiredinteger
conversionRates.itemsrequiredobject[]
conversionRates.items[].campaignIdrequiredId

Format: uuid

conversionRates.items[].adClicksrequirednumber
conversionRates.items[].adConversionsrequirednumber
conversionRates.items[].raterequirednumber

may be null

AdsTableSectionobject

AdsTableSection
FieldTypeDescription
idstring

Pattern: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 characters

titlestring

may be null

sizestring

Values: kpi, half, full

typerequiredstring

Constant: ads_table

levelrequiredstring

Values: platform, account, campaign, ad_group, ad · Default: campaign

metricsstring[]

1–8 items

platformsrequiredstring[]

at most 10 items · Default: []

limitrequiredinteger

1–50 · Default: 15

conversionsAdConversionsListOptions

AiSummaryobject

AiSummary
FieldTypeDescription
statusrequiredstring

Values: disabled, not_configured, pending, ready, failed

localerequiredstring

may be null

textrequiredstring

may be null

modelrequiredstring

may be null

generatedAtrequiredTimestamp

may be null

errorrequiredstring

may be null

AlertRecipientsobject

AlertRecipients
FieldTypeDescription
inAppboolean

Default: true

userIdsstring[]

at most 50 items · Default: []

emailsstring[]

at most 20 items · Default: []

channelIdsstring[]

at most 10 items · Default: []

webPushUserIdsstring[]

at most 50 items · Default: []

AnalyticsCatalogueobject

AnalyticsCatalogue
FieldTypeDescription
metricsrequiredCatalogueMetric[]
dimensionsrequiredCatalogueDimension[]
rolesrequiredLabelledValue[]
conversionRolesrequiredstring[]
compareModesrequiredstring[]
filterOperatorsrequiredstring[]
attributionModelsrequiredobject[]
attributionModels[].keyrequiredstring

Values: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

attributionModels[].labelrequiredstring
attributionModels[].descriptionrequiredstring
defaultAttributionModelrequiredstring

Values: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

attributionWindowDaysrequiredinteger
revenueBasisstring

Values: gross, net

pricesIncludeTaxboolean

AnalyticsQueryResultobject

AnalyticsQueryResult
FieldTypeDescription
metricsrequiredQueryMetricMeta[]
dimensionsrequiredstring[]
rowsrequiredQueryRow[]
totalsrequiredobject
totals.valuesrequiredQueryValues
totals.deltasrequiredQueryDeltas

may be null

comparisonrequiredobject

may be null

metarequiredQueryMeta

AnalyticsSegmentobject

AnalyticsSegment
FieldTypeDescription
idrequiredId

Format: uuid

namerequiredstring
descriptionrequiredstring

may be null

subjectrequiredstring

Values: person, account

rulesrequiredobject
rules.matchrequiredstring

Values: all, any

rules.conditionsrequiredobject[]
lastCountrequiredinteger

may be null

lastCountedAtrequiredTimestamp

may be null

createdByrequiredId

may be null

createdAtrequiredTimestamp

Format: date-time

updatedAtrequiredTimestamp

Format: date-time

AnalyticsSegmentCountobject

AnalyticsSegmentCount
FieldTypeDescription
subjectrequiredstring

Values: person, account

countrequiredinteger
samplerequiredstring[]
readsEventsrequiredboolean

AnalyticsSegmentListobject

AnalyticsSegmentList
FieldTypeDescription
itemsrequiredAnalyticsSegment[]

Appobject

App
FieldTypeDescription
idrequiredId

Format: uuid

slugrequiredstring
namerequiredstring
descriptionrequiredstring

may be null

websiteUrlrequiredstring

may be null

iconUrlrequiredstring

may be null

timezonerequiredstring
currencyrequiredstring
schemaModerequiredstring

Values: strict, lenient, discover

schemaRevisionrequiredinteger

at least 0

attributionModelrequiredstring

Values: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

attributionWindowDaysrequiredinteger
conversionRolesrequiredstring[]
leadContactClicksrequiredboolean
retentionrequiredAppRetention
internalIpRangesrequiredstring[]
internalCookierequiredstring

may be null

revenueBasisstring

Values: gross, net

pricesIncludeTaxboolean
overviewTilesOverviewTile[]
adsKpisstring[]
modulesstring[]
defaultAlertRecipientsAppAlertRecipients
searchBrandTermsstring[]
defaultOverviewTilesOverviewTile[]
defaultAdsKpisstring[]
statusrequiredstring

Values: active, archived

createdAtrequiredTimestamp

Format: date-time

updatedAtrequiredTimestamp

Format: date-time

AppAlertRecipientsobject

AppAlertRecipients
FieldTypeDescription
inApprequiredboolean
userIdsrequiredId[]
emailsrequiredstring[]
channelIdsrequiredId[]
webPushUserIdsId[]

AppPageobject

AppPage
FieldTypeDescription
itemsrequiredApp[]
nextCursorrequiredstring

may be null

AppRetentionobject

AppRetention
FieldTypeDescription
eventsMonthsrequiredinteger
interactionsMonthsrequiredinteger
sessionsMonthsrequiredinteger

AttributedTouchobject

AttributedTouch
FieldTypeDescription
sessionIdrequiredstring

may be null

atrequiredstring

may be null

channelrequiredstring

may be null

sourcerequiredstring

may be null

mediumrequiredstring

may be null

campaignrequiredstring

may be null

resolutionrequiredstring

Values: click_id, campaign_id, utm_name, unknown

weightrequirednumber

AttributionSectionobject

AttributionSection
FieldTypeDescription
idstring

Pattern: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 characters

titlestring

may be null

sizestring

Values: kpi, half, full

typerequiredstring

Constant: attribution

metricrequiredstring

Pattern: ^(?:[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 characters · Default: conversions

dimensionrequiredstring

Values: attributed_channel, attributed_source, attributed_medium, attributed_campaign · Default: attributed_channel

modelsrequiredstring[]

2–7 items · Default: ["first_touch","last_touch","last_non_direct","linear","position_based","time_decay","last_paid"]

limitrequiredinteger

1–20 · Default: 8

Autocaptureobject

Autocapture
FieldTypeDescription
pageviewsrequiredboolean
pageleaverequiredboolean
clicksrequiredboolean
rageClicksrequiredboolean
deadClicksrequiredboolean
scrollrequiredboolean
errorsrequiredboolean
formsrequiredboolean
layoutrequiredboolean
outboundLinksrequiredboolean
downloadsrequiredboolean
webVitalsrequiredboolean

BudgetPacingobject

BudgetPacing
FieldTypeDescription
platformrequiredstring

may be null

adAccountIdrequiredId

may be null

budgetrequirednumber

may be null

spentrequirednumber
remainingrequirednumber

may be null

usedrequirednumber

may be null

expectedToDaterequirednumber

may be null

dailyAveragerequirednumber
requiredDailyrequirednumber

may be null

forecastrequirednumber
forecastRatiorequirednumber

may be null

activeDailyBudgetsrequirednumber
staterequiredstring

Values: on_track, over, behind, no_budget

BudgetPlanobject

BudgetPlan
FieldTypeDescription
idrequiredId

Format: uuid

monthrequiredstring
platformrequiredstring

may be null

adAccountIdrequiredId

may be null

amountrequirednumber
currencyrequiredstring
noterequiredstring

may be null

createdAtrequiredTimestamp

Format: date-time

createdByrequiredId

may be null

supersededAtrequiredTimestamp

may be null

CampaignCountsobject

CampaignCounts
FieldTypeDescription
recipientsrequiredinteger
queuedrequiredinteger
sendingrequiredinteger
sentrequiredinteger
deliveredrequiredinteger
failedrequiredinteger
bouncedrequiredinteger
unknownrequiredinteger
skippedrequiredinteger
openedrequiredinteger
clickedrequiredinteger
complainedrequiredinteger
unsubscribedrequiredinteger

CampaignResultsobject

CampaignResults
FieldTypeDescription
campaignIdrequiredId

Format: uuid

channelrequiredstring

Values: email, sms

statusrequiredstring

Values: draft, awaiting_approval, scheduled, sending, paused, sent, cancelled, failed

countsrequiredCampaignCounts
metricsrequiredobject

Free-form keys

progressrequirednumber

may be null

utmrequiredobject
utm.sourcerequiredstring
utm.mediumrequiredstring
utm.campaignrequiredstring
trafficrequiredobject
traffic.fromrequiredLocalDate

may be null

traffic.torequiredLocalDate

may be null

traffic.sessionsrequirednumber

may be null

traffic.conversionsrequirednumber

may be null

traffic.conversionsByRolerequiredobject

Free-form keys

traffic.revenuerequirednumber

may be null

traffic.countingModerequiredstring

Constant: event_date

countingModerequiredstring

Constant: cohort

unavailablerequiredobject

Free-form keys

segmentobject

may be null

CatalogueDimensionobject

CatalogueDimension
FieldTypeDescription
keyrequiredstring
labelrequiredstring
descriptionrequiredstring
kindrequiredstring

Values: time, category

valuesrequiredLabelledValue

may be null

CatalogueMetricobject

CatalogueMetric
FieldTypeDescription
keyrequiredstring
labelrequiredstring
descriptionrequiredstring
unitrequiredstring

Values: count, duration_ms, percent, currency, ratio, number

goodDirectionrequiredstring

Values: higher, lower, neutral

aggregationrequiredstring

Values: sum, distinct, ratio, last

countingModerequiredstring

Values: event_date, cohort

formularequiredobject
formula.numeratorrequiredstring
formula.denominatorrequiredstring

may be null

formula.scalerequirednumber
tablesrequiredstring[]
dimensionsrequiredstring[]
parameterrequiredobject

may be null

customrequiredboolean
definitionIdrequiredId

may be null

ChangeEventStatusRequestobject

ChangeEventStatusRequest
FieldTypeDescription
statusrequiredstring

Values: draft, active, deprecated, blocked

Connectionobject

Connection
FieldTypeDescription
idrequiredId

Format: uuid

providerrequiredstring

Values: google_ads, meta_ads, linkedin_ads, tiktok_ads, yandex_direct, chatgpt_ads, ga4, search_console, manual_import, instagram, facebook_pages, linkedin_pages

kindrequiredstring

Values: ads, analytics, search_console, social

authTyperequiredstring

Values: oauth2, api_key, none

moderequiredstring

Values: live, fake

labelrequiredstring

may be null

scopesrequiredstring[]
syncIntervalMinutesrequiredinteger
lookbackDaysrequiredinteger
backfillDaysrequiredinteger
healthrequiredConnectionHealth
accountsrequiredConnectionAccount[]
createdAtrequiredTimestamp

Format: date-time

updatedAtrequiredTimestamp

Format: date-time

ConnectionAccountobject

ConnectionAccount
FieldTypeDescription
idrequiredId

Format: uuid

kindrequiredstring

Values: ad_account, ga4_property, search_console_site, social_account

externalIdrequiredstring
namerequiredstring
currencyrequiredstring

may be null

timezonerequiredstring

may be null

platformStatusrequiredstring

may be null

selectedrequiredboolean

ConnectionHealthobject

ConnectionHealth
FieldTypeDescription
statusrequiredstring

Values: active, needs_reauth, error, rate_limited, paused

lastSuccessAtrequiredTimestamp

may be null

lastRunAtrequiredTimestamp

may be null

lastRunStatusrequiredstring

may be null

lastErrorrequiredConnectorError

may be null

consecutiveFailuresrequiredinteger
nextRunAtrequiredTimestamp

may be null

syncedUntilrequiredstring

may be null

tokenExpiresAtrequiredTimestamp

may be null

ConnectionListobject

ConnectionList
FieldTypeDescription
itemsrequiredConnection[]

ConnectorErrorobject

ConnectorError
FieldTypeDescription
coderequiredstring

Values: auth_failed, permission_missing, rate_limited, provider_error, network_error, timeout, invalid_response, not_configured, secret_unavailable

messagerequiredstring

ConsentChangeobject

ConsentChange
FieldTypeDescription
kindrequiredstring

Values: none, merchant, opt_in, opt_out

reasonstring

may be null

evidencestring

may be null

formstring

may be null

occurredAtstring

Format: date-time

ConsentResultobject

ConsentResult
FieldTypeDescription
contactIdrequiredId

may be null

kindrequiredstring

Values: none, merchant, opt_in, opt_out

ContactListobject

ContactList
FieldTypeDescription
idrequiredId

Format: uuid

namerequiredstring
descriptionrequiredstring

may be null

contactsrequiredinteger
emailSendablerequiredinteger
smsSendablerequiredinteger
createdByrequiredId

may be null

createdAtrequiredTimestamp

Format: date-time

updatedAtrequiredTimestamp

Format: date-time

ContactListListobject

ContactListList
FieldTypeDescription
itemsrequiredContactList[]

ContactReferenceobject

ContactReference
FieldTypeDescription
contactIdstring

Format: uuid

emailstring

at most 320 characters

phonestring

at most 40 characters

userIdstring

1–200 characters

ContentCalendarSectionobject

ContentCalendarSection
FieldTypeDescription
idstring

Pattern: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 characters

titlestring

may be null

sizestring

Values: kpi, half, full

typerequiredstring

Constant: content_calendar

sourcesrequiredstring[]

1–2 items · Default: ["social","blog"]

platformsrequiredstring[]

at most 3 items · Default: []

limitrequiredinteger

1–100 · Default: 50

CreateAppRequestobject

CreateAppRequest
FieldTypeDescription
slugrequiredstring

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

namerequiredstring

1–200 characters

descriptionstring

may be null

websiteUrlstring

may be null

iconUrlstring

may be null

timezonestring

at most 64 characters

currencystring

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

schemaModestring

Values: strict, lenient, discover · Default: lenient

attributionModelstring

Values: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid · Default: last_non_direct

attributionWindowDaysinteger

1–365 · Default: 90

conversionRolesstring[]

1–16 items · Default: ["signup","trial_start","lead","demo_request","purchase"]

leadContactClicksboolean

Default: false

retentionobject
retention.eventsMonthsrequiredinteger

1–120

retention.interactionsMonthsrequiredinteger

1–60

retention.sessionsMonthsrequiredinteger

1–120

internalIpRangesstring[]

at most 100 items · Default: []

internalCookiestring

may be null

revenueBasisstring

Values: gross, net · Default: gross

pricesIncludeTaxboolean

Default: true

overviewTilesOverviewTileRequest[]

at most 12 items · Default: []

adsKpisstring[]

at most 12 items · Default: []

modulesstring[]

at most 6 items · Default: ["ads","social","messaging","content","leads","behavior"]

defaultAlertRecipientsAlertRecipients
searchBrandTermsstring[]

at most 50 items · Default: []

CreateDeletionRequestobject

CreateDeletionRequest
FieldTypeDescription
subjectKindrequiredstringKimliğ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).

Values: user_id, anonymous_id, person_id

subjectValuerequiredstringKimliğ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 characters

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

may be null

CreateEventDefinitionRequestobject

CreateEventDefinitionRequest
FieldTypeDescription
namerequiredstring

1–200 characters

displayNamerequiredstring

1–200 characters

descriptionstring

may be null

categorystring

may be null

rolesstring[]

at most 16 items · Default: []

statusstring

Values: draft, active, deprecated, blocked · Default: active

aliasesstring[]

at most 20 items · Default: []

propertiesPropertyDefinitionInput[]

at most 200 items

displayNamesLocalizedNames

CreateInvitationRequestobject

CreateInvitationRequest
FieldTypeDescription
emailrequiredstring

1–320 characters

roleIdrequiredstring

Format: uuid

appScopestring

Values: all, selected · Default: all

appIdsstring[]

at most 200 items · Default: []

CreateMessageCampaignRequestobject

CreateMessageCampaignRequest
FieldTypeDescription
channelrequiredstring

Values: email, sms

namerequiredstring

1–200 characters

templateIdstring

Format: uuid

templateKeystring

at most 80 characters

subjectstring

may be null

preheaderstring

may be null

bodystring

at most 20000 characters

senderIdstring

may be null

audienceobject
audience.listIdsstring[]

at most 20 items · Default: []

audience.segmentIdstring

may be null

localestring

Values: tr, en

throttlePerMinuteinteger

may be null

utmSourcestring

1–100 characters

CreateSourceKeyRequestobject

CreateSourceKeyRequest
FieldTypeDescription
kindrequiredstring

Values: write, signing

modestring

Values: live, test · Default: live

CreateSourceRequestobject

CreateSourceRequest
FieldTypeDescription
namerequiredstring

1–200 characters

kindrequiredstring

Values: web, ios, android, server, other

environmentstring

Values: production, staging, development · Default: production

requireSignatureboolean

Default: false

allowedOriginsstring[]

at most 100 items · Default: []

consentModestring

Values: required, implied, none · Default: required

excludedPathsstring[]

at most 200 items · Default: []

maskSelectorsstring[]

at most 100 items · Default: []

ignoreSelectorsstring[]

at most 100 items · Default: []

stripQueryParamsstring[]

at most 100 items · Default: []

sessionTimeoutMinutesinteger

5–240 · Default: 30

interactionSampleRatenumber

0–1 · Default: 1

autocaptureobject

Default: {}

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[]

at most 100 items · Default: []

CreatedSourceKeyobject

CreatedSourceKey
FieldTypeDescription
idrequiredId

Format: uuid

kindrequiredstring

Values: write, signing

moderequiredstring

Values: live, test

maskedKeyrequiredstring
displayPrefixrequiredstring
last4requiredstring
staterequiredstring

Values: active, expiring, revoked

revokedAtrequiredTimestamp

may be null

createdByrequiredId

may be null

createdAtrequiredTimestamp

Format: date-time

keyrequiredstring

DateRangeobject

DateRange
FieldTypeDescription
fromrequiredstring
torequiredstring
alignmentstring

Values: week_to_date, month_to_date, calendar_month, quarter_to_date, calendar_quarter, year_to_date, calendar_year

DeletionRequestobject

DeletionRequest
FieldTypeDescription
idrequiredId

Format: uuid

appIdrequiredId

Format: uuid

subjectKindrequiredstringKimliğin türü (user_id, anonymous_id, person_id).

Values: user_id, anonymous_id, person_id

subjectHintrequiredstringKimliğin son karakterleri («…7c1e»); değerin kendisi hiçbir zaman dönmez.
statusrequiredstringpending sırada, running yürütülüyor, completed bitti, failed üç denemeden sonra başarısız (errorCode), cancelled iptal edildi.

Values: pending, running, completed, failed, cancelled

noterequiredstringTalebi açanın notu.

may be null

requestedViarequiredstringTalebin geldiği yer: panel ya da Management API.

Values: panel, api

requestedByrequiredobjectTalebi açan üye (adı üye dizininden); API anahtarıyla açıldıysa null.

may be null

resultrequiredobjectSilinen satırlar türüne göre (events, sessions, persons, identities, interactions, accountMemberships, attributions, leads, milestones, deliveries, contacts); sürerken o ana kadar.

Free-form keys

errorCoderequiredstringBaşarısız talebin hata kodu.

may be null

createdAtrequiredTimestamp

Format: date-time

startedAtrequiredTimestampWorker'ın talebi ilk aldığı an; bu andan sonra alınan veri talebe girmez.

may be null

completedAtrequiredTimestampTalebin bittiği ya da iptal edildiği an.

may be null

nothingFoundrequiredbooleanTalep tamamlandı ama kimliğe ait veri yoktu.

DeletionRequestPageobject

DeletionRequestPage
FieldTypeDescription
itemsrequiredDeletionRequest[]
nextCursorrequiredstring

may be null

totalrequiredinteger

DraftMetricDefinitionobject

DraftMetricDefinition
FieldTypeDescription
keyrequiredstring

Pattern: ^[a-z][a-z0-9_]{1,49}$ · 1–50 characters

namestring

1–200 characters

kindrequiredstring

Values: event_count, unique_persons, property_sum, property_average, ratio, unique_accounts

eventNamestring

1–200 characters

rolestring

Values: 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

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

filtersQueryFilterInput[]

at most 10 items · Default: []

numeratorstring

Pattern: ^(?:[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 characters

denominatorstring

Pattern: ^(?:[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 characters

unitstring

Values: count, duration_ms, percent, currency, ratio, number

goodDirectionstring

Values: higher, lower, neutral · Default: higher

EraseContactResultobject

EraseContactResult
FieldTypeDescription
erasedrequiredinteger

ErrorResponseobject

ErrorResponse
FieldTypeDescription
errorrequiredobject
error.coderequiredstring
error.messagerequiredstring
error.fieldsobject

Free-form keys

error.detailsobject

Free-form keys

error.retryAfterSecondsinteger
error.traceIdrequiredstring

EventDefinitionobject

EventDefinition
FieldTypeDescription
namerequiredstring

Pattern: ^(?!\$)[^\s\x00-\x1f][^\x00-\x1f]{0,199}$

displayNamerequiredstring

at most 200 characters

descriptionstring

at most 2000 characters

categorystring

at most 100 characters

rolesrequiredstring[]
statusrequiredstring

Values: draft, active, deprecated, blocked

aliasesstring[]
versionrequiredinteger

above 0

propertiesrequiredPropertyDefinition[]

EventDefinitionPageobject

EventDefinitionPage
FieldTypeDescription
itemsrequiredEventDefinitionSummary[]
nextCursorrequiredstring

may be null

EventDefinitionRecordobject

EventDefinitionRecord
FieldTypeDescription
idrequiredId

Format: uuid

appIdrequiredId

Format: uuid

namerequiredstring
displayNamerequiredstring
displayNamesLocalizedNamesRecord
descriptionrequiredstring

may be null

categoryrequiredstring

may be null

rolesrequiredstring[]
statusrequiredstring

Values: draft, active, deprecated, blocked

aliasesrequiredstring[]
versionrequiredinteger

above 0

propertyCountrequiredinteger

at least 0

createdAtrequiredTimestamp

Format: date-time

updatedAtrequiredTimestamp

Format: date-time

propertiesrequiredPropertyDefinitionRecord[]

EventDefinitionSummaryobject

EventDefinitionSummary
FieldTypeDescription
idrequiredId

Format: uuid

appIdrequiredId

Format: uuid

namerequiredstring
displayNamerequiredstring
displayNamesLocalizedNamesRecord
descriptionrequiredstring

may be null

categoryrequiredstring

may be null

rolesrequiredstring[]
statusrequiredstring

Values: draft, active, deprecated, blocked

aliasesrequiredstring[]
versionrequiredinteger

above 0

propertyCountrequiredinteger

at least 0

createdAtrequiredTimestamp

Format: date-time

updatedAtrequiredTimestamp

Format: date-time

ForecastAllocationobject

ForecastAllocation
FieldTypeDescription
monthlyBudgetrequirednumber
channelsrequiredobject[]
channels[].platformrequiredstring
channels[].labelrequiredstring
channels[].currentrequirednumber
channels[].suggestedrequirednumber
channels[].changerequirednumber
channels[].marginalCpaCurrentrequirednumber

may be null

channels[].marginalCpaSuggestedrequirednumber

may be null

channels[].boundrequiredstring

may be null

paidCurrentrequirednumber
paidSuggestedrequirednumber
gainrequirednumber

ForecastBandobject

ForecastBand
FieldTypeDescription
p10requirednumber
p50requirednumber
p90requirednumber

ForecastBudgetobject

ForecastBudget
FieldTypeDescription
platformrequiredstring

1–50 characters

monthlynumber

0–10000000000

changenumber

-1–10

ForecastChannelBasisobject

ForecastChannelBasis
FieldTypeDescription
platformrequiredstring
labelrequiredstring
statusrequiredstring

Values: ok, insufficient_history, no_spend

reasonrequiredstring

may be null

spendrequirednumber
conversionsrequirednumber
spendPerDayrequirednumber
conversionsPerDayrequirednumber
cparequirednumber

may be null

elasticityrequirednumber

may be null

elasticitySourcerequiredstring

may be null

rSquaredrequirednumber

may be null

weeksrequiredinteger
weeksWithSpendrequiredinteger
maxSpendPerDayrequirednumber
plannedMonthlyBudgetrequirednumber

may be null

marginalCparequirednumber

may be null

ForecastInputsobject

ForecastInputs
FieldTypeDescription
horizonMonthsrequiredinteger

1–12 · Default: 6

basisDaysrequiredinteger

28–365 · Default: 90

funnelIdrequiredstring

Default: null · may be null

rolestring

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

budgetsrequiredForecastBudget[]

at most 20 items · Default: []

totalMonthlyBudgetnumber

0–10000000000

elasticityModerequiredstring

Values: estimate, fixed · Default: estimate

elasticityrequirednumber

0.05–1 · Default: 0.75

scenariosrequiredForecastScenarioParams[]

1–5 items · Default: [{"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

includeOrganicrequiredboolean

Default: true

attributionModelstring

Values: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

seasonalityboolean

ForecastLagobject

ForecastLag
FieldTypeDescription
p50Daysrequirednumber

may be null

p75Daysrequirednumber

may be null

p90Daysrequirednumber

may be null

distributionrequiredobject[]
distribution[].upToDaysrequirednumber

may be null

distribution[].sharerequirednumber

ForecastMonthobject

ForecastMonth
FieldTypeDescription
monthrequiredstring
daysrequiredinteger
budgetrequirednumber
budgetByPlatformrequiredobject

Free-form keys

paidrequiredForecastBand
organicrequiredForecastBand
totalrequiredForecastBand
stepsrequiredobject[]
steps[].rolerequiredstring

Values: 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[].valuerequiredForecastBand
revenuerequiredForecastBand

may be null

cparequirednumber

may be null

cacrequirednumber

may be null

ForecastResultobject

ForecastResult
FieldTypeDescription
appIdrequiredId

Format: uuid

currencyrequiredstring
timezonerequiredstring
generatedAtrequiredTimestamp

Format: date-time

methodrequiredobject
method.keyrequiredstring

Constant: log_log_bootstrap

method.descriptionrequiredstring
method.assumptionsrequiredstring[]
basisrequiredobject
basis.fromrequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

basis.torequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

basis.daysrequiredinteger
basis.rolerequiredstring

Values: 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.attributionModelrequiredstring

Values: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

basis.countingModesrequiredobject
basis.countingModes.channelsrequiredstring

Values: event_date, cohort

basis.countingModes.stepsrequiredstring

Values: event_date, cohort

basis.channelsrequiredForecastChannelBasis[]
basis.organicrequiredobject
basis.organic.conversionsrequirednumber
basis.organic.perDayrequirednumber
basis.organic.trendPerMonthrequirednumber

may be null

basis.stepsrequiredobject[]
basis.steps[].rolerequiredstring

Values: 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[].raterequirednumber

may be null

basis.steps[].lagDaysrequirednumber

may be null

basis.steps[].lagForecastLag

may be null

basis.revenuePerConversionrequirednumber

may be null

basis.elasticityPriorrequirednumber
basis.seasonalityForecastSeasonality

may be null

basis.unforecastableobject
basis.unforecastable.spendrequirednumber
basis.unforecastable.sharerequirednumber

may be null

basis.unforecastable.platformsrequiredstring[]
scenariosrequiredForecastScenarioResult[]
goalrequiredobject

may be null

allocationForecastAllocation

may be null

warningsrequiredobject[]
warnings[].coderequiredstring

Values: EXTRAPOLATION, ELASTICITY_ASSUMED, NO_TREND, STEP_RATES_UNKNOWN, NEW_CHANNEL, GOAL_UNREACHABLE, DATA_DELAYED, SEASONALITY_OFF, UNFORECASTABLE_SPEND

warnings[].messagerequiredstring
warnings[].platformrequiredstring

may be null

ForecastScenarioobject

ForecastScenario
FieldTypeDescription
idrequiredId

Format: uuid

appIdrequiredId

Format: uuid

namerequiredstring
descriptionrequiredstring

may be null

inputsrequiredForecastInputs
resultrequiredForecastResult

may be null

computedAtrequiredTimestamp

may be null

actualsrequiredobject[]

may be null

createdByrequiredId

may be null

createdAtrequiredTimestamp

Format: date-time

updatedAtrequiredTimestamp

Format: date-time

ForecastScenarioListobject

ForecastScenarioList
FieldTypeDescription
itemsrequiredobject[]
items[].idrequiredId

Format: uuid

items[].appIdrequiredId

Format: uuid

items[].namerequiredstring
items[].descriptionrequiredstring

may be null

items[].inputsrequiredForecastInputs
items[].computedAtrequiredTimestamp

may be null

items[].createdByrequiredId

may be null

items[].createdAtrequiredTimestamp

Format: date-time

items[].updatedAtrequiredTimestamp

Format: date-time

ForecastScenarioParamsobject

ForecastScenarioParams
FieldTypeDescription
keyrequiredstring

Pattern: ^[a-z][a-z0-9_]{0,29}$ · 1–30 characters

labelstring

may be null

costMultiplierrequirednumber

0.1–5

conversionMultiplierrequirednumber

0.1–5

organicMultiplierrequirednumber

0–5

ForecastScenarioResultobject

ForecastScenarioResult
FieldTypeDescription
keyrequiredstring
labelrequiredstring
costMultiplierrequirednumber
conversionMultiplierrequirednumber
organicMultiplierrequirednumber
monthsrequiredForecastMonth[]
totalsrequiredobject
totals.budgetrequirednumber
totals.paidrequiredForecastBand
totals.organicrequiredForecastBand
totals.totalrequiredForecastBand
totals.stepsrequiredobject[]
totals.steps[].rolerequiredstring

Values: 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[].valuerequiredForecastBand
totals.revenuerequiredForecastBand

may be null

totals.cpanumber

may be null

totals.cacnumber

may be null

totals.cacRolestring

may be null

ForecastSeasonalityobject

ForecastSeasonality
FieldTypeDescription
weekdayrequirednumber[]

may be null

monthrequirednumber[]

may be null

historyDaysrequiredinteger
conversionsrequirednumber
minimumrequiredobject
minimum.weekdayDaysrequiredinteger
minimum.monthsrequiredinteger
minimum.conversionsrequiredinteger

ForecastSectionobject

ForecastSection
FieldTypeDescription
idstring

Pattern: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 characters

titlestring

may be null

sizestring

Values: kpi, half, full

typerequiredstring

Constant: forecast

scenarioIdrequiredstring

Default: null · may be null

horizonMonthsrequiredinteger

1–12 · Default: 3

scenariorequiredstring

Pattern: ^[a-z][a-z0-9_]{0,29}$ · 1–30 characters · Default: realistic

Funnelobject

Funnel
FieldTypeDescription
idrequiredId

Format: uuid

namerequiredstring
descriptionrequiredstring

may be null

stepsrequiredFunnelStepRecord[]
orderrequiredstring

Values: ordered, any_order

countByrequiredstring

Values: person, session, group

conversionWindowrequiredobject

may be null

countingModerequiredstring

Values: event_date, cohort

isDefaultrequiredboolean
sideMetricsFunnelSideMetricRecord[]
createdByrequiredId

may be null

createdAtrequiredTimestamp

Format: date-time

updatedAtrequiredTimestamp

Format: date-time

FunnelBreakdownRowobject

FunnelBreakdownRow
FieldTypeDescription
valuerequiredstring

may be null

stepsrequiredobject[]
steps[].countrequiredinteger
steps[].ofFirstrequirednumber

may be null

steps[].ofPreviousrequirednumber

may be null

FunnelCohortsobject

FunnelCohorts
FieldTypeDescription
funnelrequiredobject
funnel.idrequiredId

Format: uuid

funnel.namerequiredstring
funnel.countByrequiredstring

Values: person, session, group

basisrequiredstring

Constant: entry_week

countingModerequiredstring

Constant: cohort

dateRangerequiredobject
dateRange.fromrequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

dateRange.torequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

timezonerequiredstring
followedUntilrequiredTimestamp

Format: date-time

steprequiredinteger
weeksrequiredinteger
minSubjectsrequiredinteger
includerequiredobject
include.testrequiredboolean
include.internalrequiredboolean
include.botrequiredboolean
cohortsrequiredobject[]
cohorts[].weekrequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

cohorts[].startrequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

cohorts[].endrequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

cohorts[].enteredrequiredinteger
cohorts[].lowSamplerequiredboolean
cohorts[].cellsrequiredobject[]
cohorts[].cells[].weekrequiredinteger
cohorts[].cells[].reachedrequiredinteger
cohorts[].cells[].raterequirednumber

may be null

cohorts[].cells[].completerequiredboolean
totalrequiredobject[]
total[].weekrequiredinteger
total[].enteredrequiredinteger
total[].reachedrequiredinteger
total[].raterequirednumber

may be null

freshnessQueryFreshness
generatedAtrequiredTimestamp

Format: date-time

FunnelListobject

FunnelList
FieldTypeDescription
itemsrequiredFunnel[]

FunnelResultobject

FunnelResult
FieldTypeDescription
funnelrequiredobject
funnel.idrequiredId

may be null

funnel.namerequiredstring

may be null

funnel.orderrequiredstring

Values: ordered, any_order

funnel.countByrequiredstring

Values: person, session, group

funnel.conversionWindowrequiredobject

may be null

countingModerequiredstring

Values: event_date, cohort

dateRangerequiredobject
dateRange.fromrequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

dateRange.torequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

timezonerequiredstring
followedUntilrequiredTimestamp

Format: date-time

includerequiredobject
include.testrequiredboolean
include.internalrequiredboolean
include.botrequiredboolean
stepsrequiredFunnelStepResult[]
breakdownrequiredobject

may be null

extraBreakdownobject

may be null

warningsrequiredobject[]
warnings[].coderequiredstring

Values: ATTRIBUTION_NOT_CONVERSION, BREAKDOWN_TRUNCATED

warnings[].messagerequiredstring
seriesFunnelSeries

may be null

sideMetricsFunnelSideMetricResult[]
generatedAtrequiredTimestamp

Format: date-time

FunnelScreenResultobject

FunnelScreenResult
FieldTypeDescription
funnelrequiredobject
funnel.idrequiredId

may be null

funnel.namerequiredstring

may be null

funnel.orderrequiredstring

Values: ordered, any_order

funnel.countByrequiredstring

Values: person, session, group

funnel.conversionWindowrequiredobject

may be null

countingModerequiredstring

Values: event_date, cohort

dateRangerequiredobject
dateRange.fromrequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

dateRange.torequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

timezonerequiredstring
followedUntilrequiredTimestamp

Format: date-time

includerequiredobject
include.testrequiredboolean
include.internalrequiredboolean
include.botrequiredboolean
stepsrequiredFunnelStepResult[]
breakdownrequiredobject

may be null

extraBreakdownobject

may be null

warningsrequiredobject[]
warnings[].coderequiredstring

Values: ATTRIBUTION_NOT_CONVERSION, BREAKDOWN_TRUNCATED

warnings[].messagerequiredstring
seriesFunnelSeries

may be null

sideMetricsFunnelSideMetricResult[]
generatedAtrequiredTimestamp

Format: date-time

freshnessrequiredQueryFreshness
comparisonrequiredobject

may be null

FunnelSectionobject

FunnelSection
FieldTypeDescription
idstring

Pattern: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 characters

titlestring

may be null

sizestring

Values: kpi, half, full

typerequiredstring

Constant: funnel

funnelIdrequiredstring

Default: null · may be null

countingModestring

Values: event_date, cohort

breakdownstring

Values: channel, source, medium, campaign, device_type, country, attributed_channel, attributed_source, attributed_campaign, os, browser, region, app_version, language, channel_group

FunnelSeriesobject

FunnelSeries
FieldTypeDescription
granularityrequiredstring

Values: day, week, month

basisrequiredstring

Values: step_date, entry_date

pointsrequiredobject[]
points[].daterequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

points[].startrequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

points[].endrequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

points[].stepsrequiredinteger[]
points[].completeboolean
points[].beforeTrackingboolean
afterRangerequiredinteger[]

FunnelSideMetricRecordobject

FunnelSideMetricRecord
FieldTypeDescription
eventrequiredstring

may be null

rolerequiredstring

may be null

filtersrequiredPropertyFilterRecord[]
labelrequiredstring

may be null

withoutrequiredobject

may be null

FunnelSideMetricResultobject

FunnelSideMetricResult
FieldTypeDescription
indexrequiredinteger
labelrequiredstring

may be null

eventrequiredstring

may be null

rolerequiredstring

may be null

countrequiredinteger
ofEnteredrequirednumber

may be null

pendingrequiredinteger

may be null

withinDaysrequiredinteger

may be null

FunnelStepRecordobject

FunnelStepRecord
FieldTypeDescription
eventrequiredstring

may be null

rolerequiredstring

may be null

filtersrequiredPropertyFilterRecord[]
labelrequiredstring

may be null

FunnelStepResultobject

FunnelStepResult
FieldTypeDescription
indexrequiredinteger
labelrequiredstring

may be null

eventrequiredstring

may be null

rolerequiredstring

may be null

countrequiredinteger
ofFirstrequirednumber

may be null

ofPreviousrequirednumber

may be null

dropOffrequiredinteger

may be null

timeFromPreviousrequiredTimeToConvert

may be null

timeFromFirstrequiredTimeToConvert

may be null

Idstring

Invitationobject

Invitation
FieldTypeDescription
idrequiredId

Format: uuid

emailrequiredstring
rolerequiredRoleSummary
appScoperequiredstring

Values: all, selected

appIdsrequiredId[]
statusrequiredstring

Values: pending, accepted, revoked, expired

invitedByrequiredId

may be null

expiresAtrequiredTimestamp

Format: date-time

acceptedAtrequiredTimestamp

may be null

revokedAtrequiredTimestamp

may be null

createdAtrequiredTimestamp

Format: date-time

InvitationPageobject

InvitationPage
FieldTypeDescription
itemsrequiredInvitation[]
nextCursorrequiredstring

may be null

JsonSchemaDocumentobject

KpiSectionobject

KpiSection
FieldTypeDescription
idstring

Pattern: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 characters

titlestring

may be null

sizestring

Values: kpi, half, full

typerequiredstring

Constant: kpi

metricrequiredstring

Pattern: ^(?:[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 characters

sparkrequiredboolean

Default: true

filtersrequiredQueryFilter[]

at most 10 items · Default: []

segmentIdstring

may be null

LabelledValueobject

LabelledValue
FieldTypeDescription
keyrequiredstring
labelrequiredstring
descriptionstring

Leadobject

Lead
FieldTypeDescription
idrequiredId

Format: uuid

kindrequiredstring

Values: demo_request, lead, contact_click

statusrequiredstring

Values: new, contacted, qualified, won, lost, spam

stagestring
dueAtTimestamp

may be null

overdueboolean
statusReasonrequiredstring

may be null

assigneerequiredLeadAssignee

may be null

eventIdrequiredId

Format: uuid

eventNamerequiredstring
occurredAtrequiredTimestamp

Format: date-time

personIdrequiredId

may be null

userIdrequiredstring

may be null

groupIdrequiredstring

may be null

sourcerequiredLeadSource
attributionrequiredLeadAttribution

may be null

lastClickLeadLastClick

may be null

propertiesrequiredobject

Free-form keys

isTestrequiredboolean
isInternalrequiredboolean
noteCountrequiredinteger
statusChangedAtrequiredTimestamp

may be null

createdAtrequiredTimestamp

Format: date-time

updatedAtrequiredTimestamp

Format: date-time

LeadAssigneeobject

LeadAssignee
FieldTypeDescription
idrequiredId

Format: uuid

namerequiredstring

LeadAttributionobject

LeadAttribution
FieldTypeDescription
modelrequiredstring

Values: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

windowDaysrequiredinteger
firstTouchrequiredAttributedTouch

may be null

lastTouchrequiredAttributedTouch

may be null

lastNonDirectrequiredAttributedTouch

may be null

methodstring

may be null

LeadDetailobject

LeadDetail
FieldTypeDescription
idrequiredId

Format: uuid

kindrequiredstring

Values: demo_request, lead, contact_click

statusrequiredstring

Values: new, contacted, qualified, won, lost, spam

stagestring
dueAtTimestamp

may be null

overdueboolean
statusReasonrequiredstring

may be null

assigneerequiredLeadAssignee

may be null

eventIdrequiredId

Format: uuid

eventNamerequiredstring
occurredAtrequiredTimestamp

Format: date-time

personIdrequiredId

may be null

userIdrequiredstring

may be null

groupIdrequiredstring

may be null

sourcerequiredLeadSource
attributionrequiredLeadAttribution

may be null

lastClickLeadLastClick

may be null

propertiesrequiredobject

Free-form keys

isTestrequiredboolean
isInternalrequiredboolean
noteCountrequiredinteger
statusChangedAtrequiredTimestamp

may be null

createdAtrequiredTimestamp

Format: date-time

updatedAtrequiredTimestamp

Format: date-time

notesrequiredLeadNote[]
statusHistoryrequiredLeadStatusChange[]

LeadLastClickobject

LeadLastClick
FieldTypeDescription
atrequiredTimestamp

Format: date-time

pathrequiredstring

may be null

selectorrequiredstring

may be null

labelrequiredstring

may be null

kindrequiredstring

may be null

sectionrequiredstring

may be null

contactrequiredstring

may be null

tagstring

may be null

hrefstring

may be null

LeadNoteobject

LeadNote
FieldTypeDescription
idrequiredId

Format: uuid

bodyrequiredstring
authorrequiredLeadAssignee

may be null

createdAtrequiredTimestamp

Format: date-time

editedAtrequiredTimestamp

may be null

LeadPageobject

LeadPage
FieldTypeDescription
itemsrequiredLead[]
nextCursorrequiredstring

may be null

totalrequiredinteger
countsrequiredobject

Free-form keys

stageCountsobject

Free-form keys

overdueinteger

LeadSourceobject

LeadSource
FieldTypeDescription
sessionIdrequiredstring

may be null

channelrequiredstring

may be null

sourcerequiredstring

may be null

mediumrequiredstring

may be null

campaignrequiredstring

may be null

referrerHostrequiredstring

may be null

entryPathrequiredstring

may be null

pagePathrequiredstring

may be null

deviceTyperequiredstring

may be null

countryrequiredstring

may be null

LeadStatusChangeobject

LeadStatusChange
FieldTypeDescription
idrequiredId

Format: uuid

fromrequiredstring

may be null

torequiredstring

Values: new, contacted, qualified, won, lost, spam

fromStagestring

may be null

toStagestring

may be null

reasonrequiredstring

may be null

changedByrequiredLeadAssignee

may be null

changedAtrequiredTimestamp

Format: date-time

ListMembersResultobject

ListMembersResult
FieldTypeDescription
addedrequiredinteger
removedrequiredinteger
notFoundrequiredinteger

LocalDatestring

LocalizedNamesobject

LocalizedNames
FieldTypeDescription
trstring

at most 200 characters

enstring

at most 200 characters

LocalizedNamesRecordobject

LocalizedNamesRecord
FieldTypeDescription
trrequiredstring

may be null

enrequiredstring

may be null

ManagementConsentRequestobject

ManagementConsentRequest
FieldTypeDescription
contactIdstring

Format: uuid

emailstring

at most 320 characters

phonestring

at most 40 characters

userIdstring

1–200 characters

channelrequiredstring

Values: email, sms

kindrequiredstring

Values: none, merchant, opt_in, opt_out

reasonstring

may be null

evidencestring

may be null

formstring

may be null

occurredAtstring

Format: date-time

ManagementListMembersRequestobject

ManagementListMembersRequest
FieldTypeDescription
addContactReference[]

at most 1000 items · Default: []

removeContactReference[]

at most 1000 items · Default: []

ManagementSuppressionRequestobject

ManagementSuppressionRequest
FieldTypeDescription
channelrequiredstring

Values: email, sms

emailstring

at most 320 characters

phonestring

at most 40 characters

actionstring

Values: add, remove · Default: add

reasonstring

Values: hard_bounce, complaint, unsubscribe, manual, invalid_address · Default: manual

Memberobject

Member
FieldTypeDescription
idrequiredId

Format: uuid

userrequiredobject
user.idrequiredId

Format: uuid

user.emailrequiredstring
user.namerequiredstring
rolerequiredRoleSummary
appScoperequiredstring

Values: all, selected

appIdsrequiredId[]
statusrequiredstring

Values: active, disabled

invitedByrequiredId

may be null

lastSignInAtTimestamp

may be null

twoFactorEnabledboolean
createdAtrequiredTimestamp

Format: date-time

updatedAtrequiredTimestamp

Format: date-time

MemberPageobject

MemberPage
FieldTypeDescription
itemsrequiredMember[]
nextCursorrequiredstring

may be null

MessageCampaignobject

MessageCampaign
FieldTypeDescription
idrequiredId

Format: uuid

channelrequiredstring

Values: email, sms

namerequiredstring
slugrequiredstring
utmrequiredobject
utm.sourcerequiredstring
utm.mediumrequiredstring
utm.campaignrequiredstring
templateIdrequiredId

may be null

subjectrequiredstring

may be null

preheaderrequiredstring

may be null

bodyrequiredstring
senderIdrequiredId

may be null

audiencerequiredobject
audience.listIdsrequiredId[]
audience.segmentIdrequiredId

may be null

localerequiredstring

Values: tr, en

statusrequiredstring

Values: draft, awaiting_approval, scheduled, sending, paused, sent, cancelled, failed

schedulerequiredobject

may be null

startrequiredobject

may be null

throttlePerMinuterequiredinteger

may be null

confirmationrequiredobject
confirmation.testSentAtrequiredTimestamp

may be null

confirmation.testSentByrequiredId

may be null

confirmation.testCurrentrequiredboolean
confirmation.confirmedAtrequiredTimestamp

may be null

confirmation.confirmedByrequiredId

may be null

approvalrequiredobject

may be null

countsrequiredCampaignCounts
skippedByReasonrequiredobject

Free-form keys

progressrequirednumber

may be null

errorCoderequiredstring

may be null

createdByrequiredId

may be null

createdAtrequiredTimestamp

Format: date-time

updatedAtrequiredTimestamp

Format: date-time

startedAtrequiredTimestamp

may be null

finishedAtrequiredTimestamp

may be null

MessageCampaignPageobject

MessageCampaignPage
FieldTypeDescription
itemsrequiredMessageCampaign[]
nextCursorrequiredstring

may be null

totalrequiredinteger

MessagingLocalTimeobject

MessagingLocalTime
FieldTypeDescription
daterequiredstring
timerequiredstring

Pattern: ^([01]\d|2[0-3]):[0-5]\d$ · 5–5 characters

NamingIssueobject

NamingIssue
FieldTypeDescription
coderequiredstring

Values: missing_prefix, too_few_parts, too_many_parts, empty_part, value_not_allowed, invalid_date, too_long, invalid_characters, test_in_live_name

severityrequiredstring

Values: error, warning

tokenrequiredstring

may be null

positionrequiredinteger

may be null

valuerequiredstring

may be null

expectedrequiredstring[]

may be null

NoteSectionobject

NoteSection
FieldTypeDescription
idstring

Pattern: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 characters

titlestring

may be null

sizestring

Values: kpi, half, full

typerequiredstring

Constant: note

textrequiredstring

1–4000 characters

formatstring

Values: plain, markdown

OriginalSpendobject

OriginalSpend
FieldTypeDescription
amountrequirednumber
currencyrequiredstring

OverviewTileobject

OverviewTile
FieldTypeDescription
metricrequiredstring
breakdownrequiredstring

may be null

OverviewTileRequestobject

OverviewTileRequest
FieldTypeDescription
metricrequiredstring

Pattern: ^(?:[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 characters

breakdownstring

Default: null · may be null

PersonConversionobject

PersonConversion
FieldTypeDescription
eventIdrequiredId

Format: uuid

atrequiredTimestamp

Format: date-time

eventNamerequiredstring
rolesrequiredstring[]
revenuerequirednumber

may be null

sessionIdrequiredstring

may be null

channelrequiredstring

may be null

lastClickstring

may be null

PersonEventobject

PersonEvent
FieldTypeDescription
idrequiredId

Format: uuid

atrequiredTimestamp

Format: date-time

typerequiredstring

Values: track, page, screen, identify, group, alias

eventNamerequiredstring
rolesrequiredstring[]
conversionrequiredboolean
revenuerequirednumber

may be null

pathrequiredstring

may be null

sessionIdrequiredstring

may be null

propertiesrequiredobject

Free-form keys

PersonEventPageobject

PersonEventPage
FieldTypeDescription
itemsrequiredPersonEvent[]
nextCursorrequiredstring

may be null

PersonLeadobject

PersonLead
FieldTypeDescription
idrequiredId

Format: uuid

kindrequiredstring

Values: demo_request, lead, contact_click

statusrequiredstring

Values: new, contacted, qualified, won, lost, spam

eventNamerequiredstring
eventAtrequiredTimestamp

Format: date-time

PersonMergeobject

PersonMerge
FieldTypeDescription
personIdrequiredId

Format: uuid

reasonrequiredstring

Values: identify, alias, manual

mergedAtrequiredTimestamp

Format: date-time

rewrittenrequiredboolean

PersonPageobject

PersonPage
FieldTypeDescription
itemsrequiredPersonSummary[]
nextCursorrequiredstring

may be null

totalinteger

PersonProfileobject

PersonProfile
FieldTypeDescription
requestedIdrequiredId

Format: uuid

personrequiredobject
person.idrequiredId

Format: uuid

person.userIdrequiredstring

may be null

person.traitsrequiredobject

Free-form keys

person.firstSeenAtrequiredTimestamp

Format: date-time

person.lastSeenAtrequiredTimestamp

Format: date-time

person.firstChannelrequiredstring

may be null

person.firstTouchrequiredPersonTouch

may be null

person.lastNonDirectTouchrequiredPersonTouch

may be null

person.eventCountrequiredinteger
person.sessionCountrequiredinteger
person.isTestrequiredboolean
person.isInternalrequiredboolean
person.mergedFromrequiredId[]
identitiesrequiredobject[]
identities[].kindrequiredstring

Values: anonymous_id, user_id

identities[].valuerequiredstring
identities[].firstSeenAtrequiredTimestamp

Format: date-time

groupsrequiredobject[]
groups[].groupIdrequiredstring
groups[].traitsrequiredobject

Free-form keys

groups[].memberCountrequiredinteger
groups[].firstSeenAtrequiredTimestamp

Format: date-time

groups[].lastSeenAtrequiredTimestamp

Format: date-time

rolesrequiredstring[]
sessionsrequiredSessionSummary[]
eventsrequiredPersonEvent[]
summaryobject
summary.sessionsrequiredinteger
summary.eventsrequiredinteger
summary.conversionsrequiredinteger
summary.revenuerequirednumber
summary.refundsrequirednumber
summary.netRevenuerequirednumber
summary.currencyrequiredstring
summary.leadsrequiredinteger

may be null

conversionsPersonConversion[]
leadsPersonLead

may be null

mergesPersonMerge[]
withheldTraitsstring[]

PersonSummaryobject

PersonSummary
FieldTypeDescription
idrequiredId

Format: uuid

userIdrequiredstring

may be null

firstSeenAtrequiredTimestamp

Format: date-time

lastSeenAtrequiredTimestamp

Format: date-time

firstChannelrequiredstring

may be null

eventCountrequiredinteger
sessionCountrequiredinteger
isTestrequiredboolean
isInternalrequiredboolean
isBotboolean

PersonTouchobject

PropertyDefinitionobject

PropertyDefinition
FieldTypeDescription
keyrequiredstring

Pattern: ^[A-Za-z_][A-Za-z0-9_]{0,99}$

typerequiredstring

Values: string, number, integer, boolean, datetime, money, currency, enum, object, array

itemTypestring

Values: string, number, integer, boolean, datetime, money, currency, enum, object, array

requiredrequiredboolean
descriptionstring

at most 1000 characters

piiClassrequiredstring

Values: none, pseudonymous, personal, sensitive

piiActionrequiredstring

Values: allow, hash, drop, reject

enumValuesstring[]

at most 500 items

maxLengthinteger

above 0, at most 10000

minimumnumber
maximumnumber
exampleany

PropertyDefinitionInputobject

PropertyDefinitionInput
FieldTypeDescription
keyrequiredstring

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

typerequiredstring

Values: string, number, integer, boolean, datetime, money, currency, enum, object, array

itemTypestring

may be null

requiredboolean

Default: false

descriptionstring

may be null

piiClassstring

Values: none, pseudonymous, personal, sensitive · Default: none

piiActionstring

Values: allow, hash, drop, reject · Default: allow

enumValuesstring[]

may be null

maxLengthinteger

may be null

minimumnumber

may be null

maximumnumber

may be null

exampleany
displayNamesLocalizedNames

PropertyDefinitionRecordobject

PropertyDefinitionRecord
FieldTypeDescription
idrequiredId

Format: uuid

scoperequiredstring

Values: event, trait, group_trait

keyrequiredstring
typerequiredstring

Values: string, number, integer, boolean, datetime, money, currency, enum, object, array

itemTyperequiredstring

may be null

requiredrequiredboolean
descriptionrequiredstring

may be null

piiClassrequiredstring

Values: none, pseudonymous, personal, sensitive

piiActionrequiredstring

Values: allow, hash, drop, reject

enumValuesrequiredstring[]

may be null

maxLengthrequiredinteger

may be null

minimumrequirednumber

may be null

maximumrequirednumber

may be null

examplerequiredany
sortOrderrequiredinteger
displayNamesLocalizedNamesRecord
createdAtrequiredTimestamp

Format: date-time

updatedAtrequiredTimestamp

Format: date-time

PropertyFilterRecordobject

PropertyFilterRecord
FieldTypeDescription
propertyrequiredstring
oprequiredstring

Values: eq, neq, in, not_in, contains, not_contains, starts_with, is_empty, is_not_empty, gt, gte, lt, lte

valuerequiredstring | number | boolean | string[]

may be null

QueryApiRequestobject

QueryApiRequest
FieldTypeDescription
appIdrequiredstring

Format: uuid

metricsrequiredstring[]

1–20 items

dimensionsstring[]

at most 3 items · Default: []

filtersQueryFilterInput[]

at most 20 items · Default: []

dateRangerequiredDateRange
comparestring

Values: none, previous_period, previous_year, custom · Default: none

compareRangeDateRange
includeTrafficInclude
granularitystring

Values: day, week, month

attributionModelstring

Values: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

orderByobject
orderBy.metricrequiredstring

Pattern: ^(?:[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 characters

orderBy.directionstring

Values: asc, desc · Default: desc

limitinteger

1–10000 · Default: 1000

segmentIdstring

Format: uuid

definitionsDraftMetricDefinition[]

at most 5 items

QueryBucketobject

QueryBucket
FieldTypeDescription
startrequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

endrequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

daysrequiredinteger
completerequiredboolean
beforeTrackingrequiredboolean

QueryDeltaobject

QueryDelta
FieldTypeDescription
previousrequirednumber

may be null

absoluterequirednumber

may be null

relativerequirednumber

may be null

moderequiredstring

Values: relative, absolute, points

directionrequiredstring

Values: up, down, flat

tonerequiredstring

Values: positive, negative, neutral

comparablerequiredboolean
reasonrequiredstring

may be null

QueryDeltasobject

QueryFilterobject

QueryFilter
FieldTypeDescription
dimensionrequiredstring

Pattern: ^(?:[a-z][a-z_]{1,30}|property:[A-Za-z_][A-Za-z0-9_]{0,99})$ · 1–120 characters

oprequiredstring

Values: eq, neq, in, not_in, contains, not_contains, starts_with, is_empty, is_not_empty

valuestring | string[]

QueryFilterInputobject

QueryFilterInput
FieldTypeDescription
dimensionrequiredstring

Pattern: ^(?:[a-z][a-z_]{1,30}|property:[A-Za-z_][A-Za-z0-9_]{0,99})$ · 1–120 characters

oprequiredstring

Values: eq, neq, in, not_in, contains, not_contains, starts_with, is_empty, is_not_empty

valuestring | string[]

QueryFilterRecordobject

QueryFilterRecord
FieldTypeDescription
dimensionrequiredstring
oprequiredstring

Values: eq, neq, in, not_in, contains, not_contains, starts_with, is_empty, is_not_empty

valuerequiredstring | string[]

may be null

QueryFreshnessobject

QueryFreshness
FieldTypeDescription
processedUntilrequiredTimestamp

may be null

lastEventReceivedAtrequiredTimestamp

may be null

upToDaterequiredboolean
updatedAtrequiredTimestamp

may be null

pendingRollupDaysrequiredinteger

QueryMetaobject

QueryMeta
FieldTypeDescription
appIdrequiredId

Format: uuid

timezonerequiredstring
currencyrequiredstring
dateRangerequiredobject
dateRange.fromrequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

dateRange.torequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

comparerequiredstring

Values: none, previous_period, previous_year, custom

comparisonRangerequiredobject

may be null

includerequiredobject
include.testrequiredboolean
include.internalrequiredboolean
include.botrequiredboolean
trackingStartedOnrequiredLocalDate

may be null

freshnessrequiredQueryFreshness
countingModesrequiredobject

Free-form keys

sourcesrequiredobject

Free-form keys

conversionRolesrequiredstring[]
attributionrequiredobject

may be null

warningsrequiredQueryWarning[]
truncatedrequiredboolean
generatedAtrequiredTimestamp

Format: date-time

segmentobject

may be null

QueryMetricMetaobject

QueryMetricMeta
FieldTypeDescription
keyrequiredstring
unitrequiredstring

Values: count, duration_ms, percent, currency, ratio, number

goodDirectionrequiredstring

Values: higher, lower, neutral

aggregationrequiredstring

Values: sum, distinct, ratio, last

countingModerequiredstring

Values: event_date, cohort

sourcerequiredstring

Values: rollup, raw, none

labelstring

QueryRowobject

QueryRow
FieldTypeDescription
dimensionsrequiredobject

Free-form keys

valuesrequiredQueryValues
bucketrequiredQueryBucket

may be null

previousrequiredQueryValues

may be null

previousBucketrequiredobject

may be null

deltasrequiredQueryDeltas

may be null

sharesQueryValues

QueryValuesobject

QueryWarningobject

QueryWarning
FieldTypeDescription
coderequiredstring

Values: 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

messagerequiredstring
metricrequiredstring

may be null

dimensionrequiredstring

may be null

Reportobject

Report
FieldTypeDescription
idrequiredId

Format: uuid

namerequiredstring
descriptionrequiredstring

may be null

appIdsrequiredId[]
appsrequiredobject[]
apps[].idrequiredId

Format: uuid

apps[].slugrequiredstring
apps[].namerequiredstring
apps[].timezonerequiredstring
apps[].currencyrequiredstring
sectionsrequiredReportSection[]
periodrequiredReportPeriod
comparerequiredstring

Values: none, previous_period, previous_year

filtersrequiredQueryFilterRecord[]
segmentIdId

may be null

includerequiredobject
include.testrequiredboolean
include.internalrequiredboolean
include.botrequiredboolean
attributionModelrequiredstring

may be null

localerequiredstring

Values: tr, en

timezonerequiredstring
subtitlerequiredstring

may be null

templateKeyrequiredstring

may be null

lastSnapshotrequiredobject

may be null

schedulesrequiredinteger
shareLinksrequiredobject
shareLinks.activerequiredinteger
shareLinks.totalrequiredinteger
createdByrequiredId

may be null

createdAtrequiredTimestamp

Format: date-time

updatedAtrequiredTimestamp

Format: date-time

ReportCalendarobject

ReportCalendar
FieldTypeDescription
itemsrequiredReportCalendarItem[]
totalrequiredinteger
countsrequiredobject
counts.publishedrequiredinteger
counts.plannedrequiredinteger
counts.blogrequiredinteger

ReportCalendarItemobject

ReportCalendarItem
FieldTypeDescription
kindrequiredstring

Values: social_planned, social_direct, blog

postIdrequiredId

may be null

daterequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

timerequiredstring
atrequiredTimestamp

Format: date-time

platformrequiredstring

may be null

statusrequiredstring
formatrequiredstring

may be null

excerptrequiredstring
permalinkrequiredstring

may be null

campaignKeyrequiredstring

may be null

ReportForecastobject

ReportForecast
FieldTypeDescription
scenariorequiredobject

may be null

resultrequiredForecastResult
actualsrequiredobject[]

may be null

ReportFreshnessobject

ReportFreshness
FieldTypeDescription
appIdrequiredId

Format: uuid

processedUntilrequiredTimestamp

may be null

lastEventReceivedAtrequiredTimestamp

may be null

upToDaterequiredboolean
pendingRollupDaysrequiredinteger
adsSyncedAtrequiredTimestamp

may be null

ReportMetricLabelobject

ReportMetricLabel
FieldTypeDescription
keyrequiredstring
labelrequiredstring
descriptionrequiredstring

may be null

unitrequiredstring

Values: count, duration_ms, percent, currency, ratio, number

goodDirectionrequiredstring

Values: higher, lower, neutral

countingModerequiredstring

Values: event_date, cohort

sourcestring

Values: metrics, ad_platform, ga4, search_console, social_platform, messaging, mixed

sourcesstring[]

ReportNoteBlockobject

ReportNoteSpanobject

ReportNoteSpan
FieldTypeDescription
textrequiredstring
marksstring[]
hrefstring

ReportPageobject

ReportPage
FieldTypeDescription
itemsrequiredReport[]
nextCursorrequiredstring

may be null

totalrequiredinteger

ReportPeriodobject

ReportSectionKpiSection | TimeseriesSection | TableSection | FunnelSection | AttributionSection | AdsTableSection | AdFunnelSection | SummarySection | NoteSection | AdConversionsListSection | ContentCalendarSection | ForecastSection

ReportSectionResultobject

ReportSectionResult
FieldTypeDescription
idrequiredstring
typerequiredstring

Values: kpi, timeseries, table, funnel, attribution, ads_table, ad_funnel, summary, note, ad_conversions_list, content_calendar, forecast

titlerequiredstring
subtitlerequiredstring

may be null

sizerequiredstring

Values: kpi, half, full

definitionrequiredReportSection
metricsrequiredReportMetricLabel[]
countingModesrequiredstring[]
textrequiredstring

may be null

blocksReportNoteBlock

may be null

dataDelayHintSectionDataDelay

may be null

appsrequiredSectionAppResult[]

ReportSnapshotobject

ReportSnapshot
FieldTypeDescription
idrequiredId

Format: uuid

reportIdrequiredId

may be null

namerequiredstring
subtitlerequiredstring

may be null

triggerrequiredstring

Values: manual, schedule, api, preview

periodrequiredobject
period.fromrequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

period.torequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

period.presetrequiredstring

may be null

comparisonrequiredobject

may be null

timezonerequiredstring
localerequiredstring

Values: tr, en

generatedAtrequiredTimestamp

Format: date-time

createdByrequiredId

may be null

scheduleIdrequiredId

may be null

appsrequiredobject[]
apps[].idrequiredId

Format: uuid

apps[].slugrequiredstring
apps[].namerequiredstring
apps[].timezonerequiredstring
apps[].currencyrequiredstring
filtersrequiredQueryFilterRecord[]
includerequiredobject
include.testrequiredboolean
include.internalrequiredboolean
include.botrequiredboolean
attributionModelrequiredstring

may be null

freshnessrequiredReportFreshness[]
sectionsrequiredReportSectionResult[]
aiSummaryrequiredAiSummary

ReportSnapshotPageobject

ReportSnapshotPage
FieldTypeDescription
itemsrequiredReportSnapshotSummary[]
nextCursorrequiredstring

may be null

ReportSnapshotSummaryobject

ReportSnapshotSummary
FieldTypeDescription
idrequiredId

Format: uuid

reportIdrequiredId

may be null

namerequiredstring
subtitlerequiredstring

may be null

triggerrequiredstring

Values: manual, schedule, api, preview

periodrequiredobject
period.fromrequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

period.torequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

period.presetrequiredstring

may be null

comparisonrequiredobject

may be null

timezonerequiredstring
localerequiredstring

Values: tr, en

generatedAtrequiredTimestamp

Format: date-time

createdByrequiredId

may be null

scheduleIdrequiredId

may be null

aiSummaryStatusrequiredstring

Values: disabled, not_configured, pending, ready, failed

RevokeSourceKeyRequestobject

RevokeSourceKeyRequest
FieldTypeDescription
graceMinutesinteger

0–10080 · Default: 0

Roleobject

Role
FieldTypeDescription
idrequiredId

Format: uuid

keyrequiredstring
namerequiredstring
descriptionrequiredstring

may be null

permissionsrequiredstring[]
builtInrequiredboolean
createdAtrequiredTimestamp

Format: date-time

updatedAtrequiredTimestamp

Format: date-time

RoleListobject

RoleList
FieldTypeDescription
itemsrequiredRole[]

RoleSummaryobject

RoleSummary
FieldTypeDescription
idrequiredId

Format: uuid

keyrequiredstring
namerequiredstring
builtInrequiredboolean

SchemaBundleobject

SchemaBundle
FieldTypeDescription
formatVersionrequirednumber

Constant: 1

apprequiredobject
app.idrequiredstring
app.slugrequiredstring
app.namerequiredstring
schemaModerequiredstring

Values: strict, lenient, discover

revisionrequiredinteger

at least 0

generatedAtrequiredstring

Format: date-time

eventsrequiredEventDefinition[]
traitsrequiredPropertyDefinition[]
groupTraitsrequiredPropertyDefinition[]

SectionAppResultobject

SectionAppResult
FieldTypeDescription
appIdrequiredId

Format: uuid

statusrequiredstring

Values: ok, not_available, not_connected, failed

messagerequiredstring

may be null

resultsrequiredobject

Free-form keys

funnelrequiredFunnelResult

may be null

labelsrequiredobject

Free-form keys

linesrequiredstring[]
derivedrequiredSectionDerived
conversionsobject
conversions.itemsrequiredAdConversion[]
conversions.totalrequiredinteger
conversions.soldrequiredinteger
calendarReportCalendar
forecastReportForecast

SectionDataDelayobject

SectionDataDelay
FieldTypeDescription
daysrequiredinteger
sourcesrequiredobject[]
sources[].sourcerequiredstring

Values: metrics, ad_platform, ga4, search_console, social_platform, messaging

sources[].daysrequiredinteger
affectsPeriodrequiredboolean
textrequiredstring

SectionDerivedobject

SectionDerived
FieldTypeDescription
sharerequiredobject

may be null

stepsrequiredobject[]

may be null

stackrequiredobject

may be null

SendCampaignRequestobject

SendCampaignRequest
FieldTypeDescription
contentReviewedrequiredboolean

Constant: true

confirmrequiredboolean

Constant: true

scheduleMessagingLocalTime

may be null

notestring

may be null

SessionSummaryobject

SessionSummary
FieldTypeDescription
idrequiredstring
personIdrequiredId

may be null

anonymousIdrequiredstring

may be null

userIdrequiredstring

may be null

startedAtrequiredTimestamp

Format: date-time

endedAtrequiredTimestamp

Format: date-time

durationMsrequiredinteger
activeMsrequiredinteger
pageviewsrequiredinteger
screenViewsrequiredinteger
eventsrequiredinteger
interactionsrequiredinteger
rageClicksrequiredinteger
deadClicksrequiredinteger
errorsrequiredinteger
entryPathrequiredstring

may be null

exitPathrequiredstring

may be null

channelrequiredstring

may be null

sourcerequiredstring

may be null

mediumrequiredstring

may be null

campaignrequiredstring

may be null

referrerHostrequiredstring

may be null

deviceTyperequiredstring

may be null

osrequiredstring

may be null

browserrequiredstring

may be null

countryrequiredstring

may be null

regionrequiredstring

may be null

cityrequiredstring

may be null

isEngagedrequiredboolean
isBouncerequiredboolean
rolesrequiredstring[]
convertedrequiredboolean
revenuerequirednumber
isTestrequiredboolean
isInternalrequiredboolean
isBotrequiredboolean
quickBacksinteger
errorClicksinteger
excessiveScrollsinteger

SmsSegmentsobject

SmsSegments
FieldTypeDescription
encodingrequiredstring

Values: gsm7, gsm7_turkish, ucs2

charactersrequiredinteger
unitsrequiredinteger
partsrequiredinteger
perPartrequiredinteger
remainingrequiredinteger
creditsrequiredinteger
unsupportedrequiredstring[]

SocialAccountobject

SocialAccount
FieldTypeDescription
idrequiredId

Format: uuid

platformrequiredstring

Values: instagram, facebook, linkedin

statusrequiredstring

Values: active, needs_reauth, disconnected

connectionIdrequiredId

may be null

externalIdrequiredstring
usernamerequiredstring

may be null

namerequiredstring
profilerequiredobject
profile.biorequiredstring

may be null

profile.websiterequiredstring

may be null

profile.avatarUrlrequiredstring

may be null

profile.pageUrlrequiredstring

may be null

followersrequiredinteger

may be null

mediaCountrequiredinteger

may be null

autoPublishrequiredboolean
capabilitiesrequiredobject
capabilities.insightsrequiredboolean
capabilities.publishrequiredboolean
capabilities.formatsrequiredstring[]
capabilities.autoPublishFormatsrequiredstring[]
freshnessrequiredobject
freshness.lastSyncedAtrequiredTimestamp

may be null

freshness.nextSyncAtrequiredTimestamp

may be null

freshness.lastErrorrequiredobject

may be null

createdAtrequiredTimestamp

Format: date-time

updatedAtrequiredTimestamp

Format: date-time

SocialAccountListobject

SocialAccountList
FieldTypeDescription
itemsrequiredSocialAccount[]

SocialAccountRefobject

SocialAccountRef
FieldTypeDescription
idrequiredId

Format: uuid

platformrequiredstring

Values: instagram, facebook, linkedin

namerequiredstring
usernamerequiredstring

may be null

lastSyncedAtrequiredTimestamp

may be null

SocialKpiobject

SocialKpi
FieldTypeDescription
metricrequiredstring
labelrequiredstring
descriptionrequiredstring
unitrequiredstring

Values: count, duration_ms, percent, currency, ratio, number

goodDirectionrequiredstring

Values: higher, lower, neutral

countingModerequiredstring

Values: event_date, cohort

valuerequirednumber

may be null

previousrequirednumber

may be null

deltarequiredQueryDelta

may be null

unavailablerequiredSocialUnavailable

may be null

notAdditiverequiredboolean

SocialOverviewobject

SocialOverview
FieldTypeDescription
scoperequiredobject
scope.platformrequiredstring

Values: all, instagram, facebook, linkedin

scope.accountIdsrequiredId[]
accountsrequiredSocialAccountRef[]
kpisrequiredSocialKpi[]
seriesrequiredAnalyticsQueryResult
warningsrequiredQueryWarning[]
postsrequiredinteger

may be null

uniqueByAccountrequiredobject[]
uniqueByAccount[].accountIdrequiredId

Format: uuid

uniqueByAccount[].kpisrequiredobject[]
uniqueByAccount[].kpis[].metricrequiredstring
uniqueByAccount[].kpis[].valuerequirednumber

may be null

uniqueByAccount[].kpis[].previousrequirednumber

may be null

uniqueByAccount[].kpis[].deltarequiredQueryDelta

may be null

uniqueByAccount[].kpis[].unavailablerequiredSocialUnavailable

may be null

SocialPostMetricsobject

SocialPostMetrics
FieldTypeDescription
likesrequirednumber

may be null

commentsrequirednumber

may be null

sharesrequirednumber

may be null

savesrequirednumber

may be null

reachrequirednumber

may be null

viewsrequirednumber

may be null

clicksrequirednumber

may be null

engagementrequirednumber

may be null

engagementRaterequirednumber

may be null

SocialPostSnapshotobject

SocialPostSnapshot
FieldTypeDescription
capturedAtrequiredTimestamp

Format: date-time

likesrequirednumber

may be null

commentsrequirednumber

may be null

sharesrequirednumber

may be null

savesrequirednumber

may be null

reachrequirednumber

may be null

viewsrequirednumber

may be null

clicksrequirednumber

may be null

SocialPublishedPostobject

SocialPublishedPost
FieldTypeDescription
idrequiredId

Format: uuid

accountIdrequiredId

Format: uuid

platformrequiredstring

Values: instagram, facebook, linkedin

externalIdrequiredstring
typerequiredstring

Values: image, carousel, video, reel, story, text, link, other

captionrequiredstring

may be null

permalinkrequiredstring

may be null

publishedAtrequiredTimestamp

Format: date-time

publishedLocalrequiredobject
publishedLocal.daterequiredLocalDate

Pattern: ^\d{4}-\d{2}-\d{2}$

publishedLocal.timerequiredstring
thumbnailUrlrequiredstring

may be null

metricsrequiredSocialPostMetrics
unavailablerequiredobject

Free-form keys

plannedPostIdrequiredId

may be null

campaignKeyrequiredstring

may be null

metricsUpdatedAtrequiredTimestamp

may be null

nextRefreshAtrequiredTimestamp

may be null

SocialPublishedPostDetailobject

SocialPublishedPostDetail
FieldTypeDescription
postrequiredSocialPublishedPost
historyrequiredSocialPostSnapshot[]

SocialPublishedPostPageobject

SocialPublishedPostPage
FieldTypeDescription
itemsrequiredSocialPublishedPost[]
nextCursorrequiredstring

may be null

countingModerequiredstring

Values: event_date, cohort

totalrequiredinteger

SocialUnavailableobject

SocialUnavailable
FieldTypeDescription
reasonrequiredstring

Values: not_provided, period_limited, history_limited, permission_missing, not_connected, no_data

messagerequiredstring

Sourceobject

Source
FieldTypeDescription
idrequiredId

Format: uuid

appIdrequiredId

Format: uuid

namerequiredstring
kindrequiredstring

Values: web, ios, android, server, other

environmentrequiredstring

Values: production, staging, development

statusrequiredstring

Values: active, disabled

requireSignaturerequiredboolean
allowedOriginsrequiredstring[]
consentModerequiredstring

Values: required, implied, none

excludedPathsrequiredstring[]
maskSelectorsrequiredstring[]
ignoreSelectorsrequiredstring[]
stripQueryParamsrequiredstring[]
sessionTimeoutMinutesrequiredinteger
interactionSampleRaterequirednumber
autocapturerequiredAutocapture
dataLayerEventsrequiredstring[]
createdAtrequiredTimestamp

Format: date-time

updatedAtrequiredTimestamp

Format: date-time

SourceHealthobject

SourceHealth
FieldTypeDescription
sourceIdrequiredId

Format: uuid

staterequiredstring

Values: no_data, receiving, quiet

lastEventAtrequiredTimestamp

may be null

lastRejectionAtrequiredTimestamp

may be null

lastLibraryrequiredstring

may be null

rejectionsLast24hrequiredinteger

at least 0

eventsLast24hinteger

at least 0

warningsLast24hinteger

at least 0

rejectionRatenumber

may be null

SourceKeyobject

SourceKey
FieldTypeDescription
idrequiredId

Format: uuid

kindrequiredstring

Values: write, signing

moderequiredstring

Values: live, test

maskedKeyrequiredstring
displayPrefixrequiredstring
last4requiredstring
staterequiredstring

Values: active, expiring, revoked

revokedAtrequiredTimestamp

may be null

createdByrequiredId

may be null

createdAtrequiredTimestamp

Format: date-time

SourceKeyListobject

SourceKeyList
FieldTypeDescription
itemsrequiredSourceKey[]

SourcePageobject

SourcePage
FieldTypeDescription
itemsrequiredSource[]
nextCursorrequiredstring

may be null

SummarySectionobject

SummarySection
FieldTypeDescription
idstring

Pattern: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 characters

titlestring

may be null

sizestring

Values: kpi, half, full

typerequiredstring

Constant: summary

scoperequiredstring

Values: overall, ads · Default: overall

SuppressionResultobject

SuppressionResult
FieldTypeDescription
suppressedrequiredboolean
channelrequiredstring

Values: email, sms

changedrequiredboolean

TableSectionobject

TableSection
FieldTypeDescription
idstring

Pattern: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 characters

titlestring

may be null

sizestring

Values: kpi, half, full

typerequiredstring

Constant: table

dimensionsrequiredstring[]

1–2 items

metricsrequiredstring[]

1–8 items

limitrequiredinteger

1–50 · Default: 10

orderBystring

Pattern: ^(?:[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 characters

directionrequiredstring

Values: asc, desc · Default: desc

sharerequiredboolean

Default: false

filtersrequiredQueryFilter[]

at most 10 items · Default: []

segmentIdstring

may be null

TestSendRequestobject

TestSendRequest
FieldTypeDescription
recipientsrequiredstring[]

1–5 items

contactIdstring

Format: uuid

TestSendResultobject

TestSendResult
FieldTypeDescription
resultsrequiredobject[]
results[].torequiredstring
results[].statusrequiredstring

Values: sent, failed

results[].errorCoderequiredstring

may be null

smsrequiredSmsSegments

may be null

campaignrequiredMessageCampaign

TimeToConvertobject

TimeToConvert
FieldTypeDescription
countrequiredinteger
averageSecondsrequirednumber

may be null

medianSecondsrequirednumber

may be null

p75Secondsrequirednumber

may be null

p90Secondsrequirednumber

may be null

histogramrequiredobject[]
histogram[].upToSecondsrequirednumber

may be null

histogram[].countrequiredinteger

TimeseriesSectionobject

TimeseriesSection
FieldTypeDescription
idstring

Pattern: ^[a-z0-9][a-z0-9_-]{0,39}$ · 1–40 characters

titlestring

may be null

sizestring

Values: kpi, half, full

typerequiredstring

Constant: timeseries

metricsrequiredstring[]

1–4 items

granularityrequiredstring

Values: day, week, month · Default: day

breakdownstring

Pattern: ^(?:[a-z][a-z_]{1,30}|property:[A-Za-z_][A-Za-z0-9_]{0,99})$ · 1–120 characters

breakdownLimitrequiredinteger

2–8 · Default: 6

chartrequiredstring

Values: line, bar, stacked_bar · Default: line

filtersrequiredQueryFilter[]

at most 10 items · Default: []

segmentIdstring

may be null

Timestampstring

TrafficIncludeobject

TrafficInclude
FieldTypeDescription
testboolean

Default: false

internalboolean

Default: false

botboolean

Default: false

TraitListobject

TraitList
FieldTypeDescription
itemsrequiredPropertyDefinitionRecord[]

UpdateAppRequestobject

UpdateAppRequest
FieldTypeDescription
slugstring

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

namestring

1–200 characters

descriptionstring

may be null

websiteUrlstring

may be null

iconUrlstring

may be null

timezonestring

at most 64 characters

currencystring

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

schemaModestring

Values: strict, lenient, discover

attributionModelstring

Values: first_touch, last_touch, last_non_direct, linear, position_based, time_decay, last_paid

attributionWindowDaysinteger

1–365

conversionRolesstring[]

1–16 items

leadContactClicksboolean
retentionobject
retention.eventsMonthsrequiredinteger

1–120

retention.interactionsMonthsrequiredinteger

1–60

retention.sessionsMonthsrequiredinteger

1–120

internalIpRangesstring[]

at most 100 items

internalCookiestring

may be null

revenueBasisstring

Values: gross, net

pricesIncludeTaxboolean
overviewTilesOverviewTileRequest[]

at most 12 items

adsKpisstring[]

at most 12 items

modulesstring[]

at most 6 items

defaultAlertRecipientsAlertRecipients
searchBrandTermsstring[]

at most 50 items

UpdateEventDefinitionRequestobject

UpdateEventDefinitionRequest
FieldTypeDescription
displayNamestring

1–200 characters

descriptionstring

may be null

categorystring

may be null

rolesstring[]

at most 16 items

aliasesstring[]

at most 20 items

propertiesPropertyDefinitionInput[]

at most 200 items

displayNamesLocalizedNames

UpdateMessageCampaignRequestobject

UpdateMessageCampaignRequest
FieldTypeDescription
namestring

1–200 characters

subjectstring

may be null

preheaderstring

may be null

bodystring

at most 20000 characters

senderIdstring

may be null

audienceobject
audience.listIdsstring[]

at most 20 items · Default: []

audience.segmentIdstring

may be null

localestring

Values: tr, en

throttlePerMinuteinteger

may be null

utmSourcestring

1–100 characters

UpdateSourceRequestobject

UpdateSourceRequest
FieldTypeDescription
namestring

1–200 characters

environmentstring

Values: production, staging, development

statusstring

Values: active, disabled

requireSignatureboolean
allowedOriginsstring[]

at most 100 items

consentModestring

Values: required, implied, none

excludedPathsstring[]

at most 200 items

maskSelectorsstring[]

at most 100 items

ignoreSelectorsstring[]

at most 100 items

stripQueryParamsstring[]

at most 100 items

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[]

at most 100 items

UpdateTraitRequestobject

UpdateTraitRequest
FieldTypeDescription
typestring

Values: string, number, integer, boolean, datetime, money, currency, enum, object, array

itemTypestring

may be null

requiredboolean
descriptionstring

may be null

piiClassstring

Values: none, pseudonymous, personal, sensitive

piiActionstring

Values: allow, hash, drop, reject

enumValuesstring[]

may be null

maxLengthinteger

may be null

minimumnumber

may be null

maximumnumber

may be null

exampleany
displayNamesLocalizedNames

UpsertContactRequestobject

UpsertContactRequest
FieldTypeDescription
namestring

may be null

emailstring

may be null

phonestring

may be null

mobilestring

may be null

landlinestring

may be null

companystring

may be null

titlestring

may be null

citystring

may be null

districtstring

may be null

userIdstring

may be null

localestring

may be null

tagsstring[]

at most 30 items

consentsobject
consents.emailConsentChange
consents.smsConsentChange
listIdsstring[]

at most 50 items

UpsertContactResultobject

UpsertContactResult
FieldTypeDescription
contactIdrequiredId

Format: uuid

createdrequiredboolean
consentsrequiredobject
consents.emailrequiredstring

Values: none, merchant, opt_in, opt_out

consents.smsrequiredstring

Values: none, merchant, opt_in, opt_out