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

Postlip Metrics Tracking API

Ürünlerin Postlip Metrics'e olay göndermesi için sözleşme — Segment Tracking API Spec uyumlu (aynı uçlar, mesaj alanları ve kimlik doğrulama; Segment/RudderStack istemcileri host ayarıyla kullanılabilir). Ayrıntı ve örnekler: docs/api/tracking-api.md. Kimlik: kaynağın yazma anahtarı (pk_live_… / pk_test_…) HTTP Basic kullanıcı adı olarak, Authorization: Bearer ile ya da tarayıcı beacon'ında gövdede writeKey. Sunucu kaynakları isteği Metrics-Signature başlığıyla imzalar (kaynakta zorunlu kılınabilir). İdempotentlik: messageId — aynı gerçek olay için aynı kimliği üretin; tekrar eden mesaj bir kez saklanır.

Sürüm 1.0.0OpenAPI 3.1.0OpenAPI belgesini indir

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

Sunucular

AdresAçıklama
https://collect.metrics.exampleTracking API
http://localhost:7110Yerel geliştirme

Kimlik doğrulama

AdYöntemAçıklama
writeKeyBasicHTTP BasicKullanıcı adı = yazma anahtarı, şifre boş (Segment uyumlu).
writeKeyBearerBearer belirteci (pk_…)Yazma anahtarı.
signatureBaşlık: Metrics-Signatureİstek imzası (sunucu kaynakları).

Sınırlar

SınırDeğer
Mesaj boyutuen çok 32 KB
Parti boyutuen çok 500 KB
Partideki mesaj sayısıen çok 500
Geçmişe dönük zaman damgasıen çok 31 gün
İleri tarihli zaman damgasıen çok 3600 sn
İmza zaman penceresi±300 sn
userId, anonymousId, groupId uzunluğuen çok 200 karakter
messageId uzunluğuen çok 100 karakter
Olay adı uzunluğuen çok 200 karakter
Düzendeki öğe sayısı ($layout)en çok 300
Tıklama koordinatı ölçeği0–1000 (belgenin genişlik ve yüksekliğine göre)
Kaynak başına hız sınırıdakikada 60.000 mesaj; aşılınca 429 ve Retry-After
Kısa süreli yoğunluk payıbir anda en çok 10.000 mesaj

Olay gönderimi

7 uç

track, identify, page, screen, group, alias ve toplu gönderim.

POST/v1/track

Olay (track)

Kullanıcının yaptığı bir eylem. event uygulamanın olay kataloğuna göre doğrulanır (strict/lenient/discover). $ ile başlayan adlar SDK sistem olaylarıdır (bkz. x-system-events).

Parametreler

AdYerTipAçıklama
Metrics-Signaturebaşlıkstringt=<unix saniye>,v1=<hex>; v1 = HMAC-SHA256(imza anahtarı sk_…, t + "." + hamGövde). ±300 sn. Anahtar yenilenirken birden çok v1= olabilir.

Desen: ^t=\d{1,12}(,v1=[0-9a-fA-F]{64})+$

İstek gövdesiGövde zorunlu

application/jsonTrackMessage

AlanTipAçıklama
messageIdstring

Desen: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Biçim: date-time

sentAtstring

Biçim: date-time

contextContext
integrationsobject

Serbest anahtarlar

typestring

Sabit: track

eventzorunlustring

1–200 karakter

propertiesobject

Serbest anahtarlar

Örnek · JSON
{
  "messageId": "string",
  "anonymousId": "string",
  "userId": "string",
  "timestamp": "2026-11-06T14:46:00+03:00",
  "sentAt": "2026-11-06T14:46:00+03:00",
  "context": {
    "ip": "string",
    "userAgent": "string"
  },
  "integrations": {},
  "type": "track",
  "event": "string",
  "properties": {}
}

text/plainstring

Aynı JSON, metin olarak (tarayıcı beacon).

Yanıtlar

  • 200

    İşlendi.

    application/jsonTrackingResponse

    Örnek · JSON
    {
      "success": true,
      "accepted": 0,
      "rejected": [
        {
          "index": 0,
          "errors": [
            {
              "code": "invalid_message",
              "path": "string",
              "message": "string"
            }
          ]
        }
      ],
      "warnings": [
        {
          "index": 0,
          "code": "invalid_message",
          "path": "string"
        }
      ]
    }
  • 400

    Gövde okunamadı ya da bütün mesajlar reddedildi (all_rejected, rejected listesiyle). Tekrar etmeyin.

    application/jsonRefusal

  • 401

    Anahtar yok/yanlış (missing_key, invalid_key) ya da imza (signature_required, signature_invalid, signature_expired). Anahtarı ve sunucu saatini denetleyin.

    application/jsonRefusal

  • 403

    Origin kaynağın izinli alan adlarında değil (origin_not_allowed).

    application/jsonRefusal

  • 413

    Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.

    application/jsonRefusal

  • 429

    Kaynağın hız sınırı aşıldı (rate_limited; mesaj sayısıyla, varsayılan dakikada 60.000, bir anda 10.000): hiçbir mesaj saklanmadı. Retry-After saniye bekleyip aynı partiyi yeniden gönderin.

    Yanıt başlıkları

    • Retry-Afterinteger

      Yeniden denemeden önce beklenecek saniye.

      en az 1

    application/jsonRefusal

  • 5XX

    Geçici hata: üstel geri çekilmeyle tekrar deneyin (1 dk, 5 dk, 30 dk, 2 sa… en fazla 24 sa).

POST/v1/identify

Kişiyi tanıt (identify)

Anonim kimliği kullanıcı kimliğine bağlar; traits kişi özellikleridir.

Parametreler

AdYerTipAçıklama
Metrics-Signaturebaşlıkstringt=<unix saniye>,v1=<hex>; v1 = HMAC-SHA256(imza anahtarı sk_…, t + "." + hamGövde). ±300 sn. Anahtar yenilenirken birden çok v1= olabilir.

Desen: ^t=\d{1,12}(,v1=[0-9a-fA-F]{64})+$

İstek gövdesiGövde zorunlu

application/jsonIdentifyMessage

AlanTipAçıklama
messageIdstring

Desen: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Biçim: date-time

sentAtstring

Biçim: date-time

contextContext
integrationsobject

Serbest anahtarlar

typestring

Sabit: identify

traitsobject

Serbest anahtarlar

Örnek · JSON
{
  "messageId": "string",
  "anonymousId": "string",
  "userId": "string",
  "timestamp": "2026-11-06T14:46:00+03:00",
  "sentAt": "2026-11-06T14:46:00+03:00",
  "context": {
    "ip": "string",
    "userAgent": "string"
  },
  "integrations": {},
  "type": "identify",
  "traits": {}
}

text/plainstring

Aynı JSON, metin olarak (tarayıcı beacon).

Yanıtlar

  • 200

    İşlendi.

    application/jsonTrackingResponse

    Örnek · JSON
    {
      "success": true,
      "accepted": 0,
      "rejected": [
        {
          "index": 0,
          "errors": [
            {
              "code": "invalid_message",
              "path": "string",
              "message": "string"
            }
          ]
        }
      ],
      "warnings": [
        {
          "index": 0,
          "code": "invalid_message",
          "path": "string"
        }
      ]
    }
  • 400

    Gövde okunamadı ya da bütün mesajlar reddedildi (all_rejected, rejected listesiyle). Tekrar etmeyin.

    application/jsonRefusal

  • 401

    Anahtar yok/yanlış (missing_key, invalid_key) ya da imza (signature_required, signature_invalid, signature_expired). Anahtarı ve sunucu saatini denetleyin.

    application/jsonRefusal

  • 403

    Origin kaynağın izinli alan adlarında değil (origin_not_allowed).

    application/jsonRefusal

  • 413

    Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.

    application/jsonRefusal

  • 429

    Kaynağın hız sınırı aşıldı (rate_limited; mesaj sayısıyla, varsayılan dakikada 60.000, bir anda 10.000): hiçbir mesaj saklanmadı. Retry-After saniye bekleyip aynı partiyi yeniden gönderin.

    Yanıt başlıkları

    • Retry-Afterinteger

      Yeniden denemeden önce beklenecek saniye.

      en az 1

    application/jsonRefusal

  • 5XX

    Geçici hata: üstel geri çekilmeyle tekrar deneyin (1 dk, 5 dk, 30 dk, 2 sa… en fazla 24 sa).

POST/v1/page

Sayfa görüntüleme (page)

Web sayfası görüntüleme. properties.url ya da context.page.url gönderin.

Parametreler

AdYerTipAçıklama
Metrics-Signaturebaşlıkstringt=<unix saniye>,v1=<hex>; v1 = HMAC-SHA256(imza anahtarı sk_…, t + "." + hamGövde). ±300 sn. Anahtar yenilenirken birden çok v1= olabilir.

Desen: ^t=\d{1,12}(,v1=[0-9a-fA-F]{64})+$

İstek gövdesiGövde zorunlu

application/jsonPageMessage

AlanTipAçıklama
messageIdstring

Desen: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Biçim: date-time

sentAtstring

Biçim: date-time

contextContext
integrationsobject

Serbest anahtarlar

typestring

Sabit: page

namestring

en çok 500 karakter

categorystring

en çok 200 karakter

propertiesobject

Serbest anahtarlar

Örnek · JSON
{
  "messageId": "string",
  "anonymousId": "string",
  "userId": "string",
  "timestamp": "2026-11-06T14:46:00+03:00",
  "sentAt": "2026-11-06T14:46:00+03:00",
  "context": {
    "ip": "string",
    "userAgent": "string"
  },
  "integrations": {},
  "type": "page",
  "name": "string",
  "category": "string",
  "properties": {}
}

text/plainstring

Aynı JSON, metin olarak (tarayıcı beacon).

Yanıtlar

  • 200

    İşlendi.

    application/jsonTrackingResponse

    Örnek · JSON
    {
      "success": true,
      "accepted": 0,
      "rejected": [
        {
          "index": 0,
          "errors": [
            {
              "code": "invalid_message",
              "path": "string",
              "message": "string"
            }
          ]
        }
      ],
      "warnings": [
        {
          "index": 0,
          "code": "invalid_message",
          "path": "string"
        }
      ]
    }
  • 400

    Gövde okunamadı ya da bütün mesajlar reddedildi (all_rejected, rejected listesiyle). Tekrar etmeyin.

    application/jsonRefusal

  • 401

    Anahtar yok/yanlış (missing_key, invalid_key) ya da imza (signature_required, signature_invalid, signature_expired). Anahtarı ve sunucu saatini denetleyin.

    application/jsonRefusal

  • 403

    Origin kaynağın izinli alan adlarında değil (origin_not_allowed).

    application/jsonRefusal

  • 413

    Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.

    application/jsonRefusal

  • 429

    Kaynağın hız sınırı aşıldı (rate_limited; mesaj sayısıyla, varsayılan dakikada 60.000, bir anda 10.000): hiçbir mesaj saklanmadı. Retry-After saniye bekleyip aynı partiyi yeniden gönderin.

    Yanıt başlıkları

    • Retry-Afterinteger

      Yeniden denemeden önce beklenecek saniye.

      en az 1

    application/jsonRefusal

  • 5XX

    Geçici hata: üstel geri çekilmeyle tekrar deneyin (1 dk, 5 dk, 30 dk, 2 sa… en fazla 24 sa).

POST/v1/screen

Ekran görüntüleme (screen)

Mobil uygulama ekranı.

Parametreler

AdYerTipAçıklama
Metrics-Signaturebaşlıkstringt=<unix saniye>,v1=<hex>; v1 = HMAC-SHA256(imza anahtarı sk_…, t + "." + hamGövde). ±300 sn. Anahtar yenilenirken birden çok v1= olabilir.

Desen: ^t=\d{1,12}(,v1=[0-9a-fA-F]{64})+$

İstek gövdesiGövde zorunlu

application/jsonScreenMessage

AlanTipAçıklama
messageIdstring

Desen: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Biçim: date-time

sentAtstring

Biçim: date-time

contextContext
integrationsobject

Serbest anahtarlar

typestring

Sabit: screen

namestring

en çok 500 karakter

categorystring

en çok 200 karakter

propertiesobject

Serbest anahtarlar

Örnek · JSON
{
  "messageId": "string",
  "anonymousId": "string",
  "userId": "string",
  "timestamp": "2026-11-06T14:46:00+03:00",
  "sentAt": "2026-11-06T14:46:00+03:00",
  "context": {
    "ip": "string",
    "userAgent": "string"
  },
  "integrations": {},
  "type": "screen",
  "name": "string",
  "category": "string",
  "properties": {}
}

text/plainstring

Aynı JSON, metin olarak (tarayıcı beacon).

Yanıtlar

  • 200

    İşlendi.

    application/jsonTrackingResponse

    Örnek · JSON
    {
      "success": true,
      "accepted": 0,
      "rejected": [
        {
          "index": 0,
          "errors": [
            {
              "code": "invalid_message",
              "path": "string",
              "message": "string"
            }
          ]
        }
      ],
      "warnings": [
        {
          "index": 0,
          "code": "invalid_message",
          "path": "string"
        }
      ]
    }
  • 400

    Gövde okunamadı ya da bütün mesajlar reddedildi (all_rejected, rejected listesiyle). Tekrar etmeyin.

    application/jsonRefusal

  • 401

    Anahtar yok/yanlış (missing_key, invalid_key) ya da imza (signature_required, signature_invalid, signature_expired). Anahtarı ve sunucu saatini denetleyin.

    application/jsonRefusal

  • 403

    Origin kaynağın izinli alan adlarında değil (origin_not_allowed).

    application/jsonRefusal

  • 413

    Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.

    application/jsonRefusal

  • 429

    Kaynağın hız sınırı aşıldı (rate_limited; mesaj sayısıyla, varsayılan dakikada 60.000, bir anda 10.000): hiçbir mesaj saklanmadı. Retry-After saniye bekleyip aynı partiyi yeniden gönderin.

    Yanıt başlıkları

    • Retry-Afterinteger

      Yeniden denemeden önce beklenecek saniye.

      en az 1

    application/jsonRefusal

  • 5XX

    Geçici hata: üstel geri çekilmeyle tekrar deneyin (1 dk, 5 dk, 30 dk, 2 sa… en fazla 24 sa).

POST/v1/group

Hesaba bağla (group)

Kişiyi bir hesaba (şirket, büro, site…) bağlar; traits hesap özellikleridir.

Parametreler

AdYerTipAçıklama
Metrics-Signaturebaşlıkstringt=<unix saniye>,v1=<hex>; v1 = HMAC-SHA256(imza anahtarı sk_…, t + "." + hamGövde). ±300 sn. Anahtar yenilenirken birden çok v1= olabilir.

Desen: ^t=\d{1,12}(,v1=[0-9a-fA-F]{64})+$

İstek gövdesiGövde zorunlu

application/jsonGroupMessage

AlanTipAçıklama
messageIdstring

Desen: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Biçim: date-time

sentAtstring

Biçim: date-time

contextContext
integrationsobject

Serbest anahtarlar

typestring

Sabit: group

groupIdzorunlustring | number
traitsobject

Serbest anahtarlar

Örnek · JSON
{
  "messageId": "string",
  "anonymousId": "string",
  "userId": "string",
  "timestamp": "2026-11-06T14:46:00+03:00",
  "sentAt": "2026-11-06T14:46:00+03:00",
  "context": {
    "ip": "string",
    "userAgent": "string"
  },
  "integrations": {},
  "type": "group",
  "groupId": "string",
  "traits": {}
}

text/plainstring

Aynı JSON, metin olarak (tarayıcı beacon).

Yanıtlar

  • 200

    İşlendi.

    application/jsonTrackingResponse

    Örnek · JSON
    {
      "success": true,
      "accepted": 0,
      "rejected": [
        {
          "index": 0,
          "errors": [
            {
              "code": "invalid_message",
              "path": "string",
              "message": "string"
            }
          ]
        }
      ],
      "warnings": [
        {
          "index": 0,
          "code": "invalid_message",
          "path": "string"
        }
      ]
    }
  • 400

    Gövde okunamadı ya da bütün mesajlar reddedildi (all_rejected, rejected listesiyle). Tekrar etmeyin.

    application/jsonRefusal

  • 401

    Anahtar yok/yanlış (missing_key, invalid_key) ya da imza (signature_required, signature_invalid, signature_expired). Anahtarı ve sunucu saatini denetleyin.

    application/jsonRefusal

  • 403

    Origin kaynağın izinli alan adlarında değil (origin_not_allowed).

    application/jsonRefusal

  • 413

    Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.

    application/jsonRefusal

  • 429

    Kaynağın hız sınırı aşıldı (rate_limited; mesaj sayısıyla, varsayılan dakikada 60.000, bir anda 10.000): hiçbir mesaj saklanmadı. Retry-After saniye bekleyip aynı partiyi yeniden gönderin.

    Yanıt başlıkları

    • Retry-Afterinteger

      Yeniden denemeden önce beklenecek saniye.

      en az 1

    application/jsonRefusal

  • 5XX

    Geçici hata: üstel geri çekilmeyle tekrar deneyin (1 dk, 5 dk, 30 dk, 2 sa… en fazla 24 sa).

POST/v1/alias

Kimlik birleştir (alias)

previousId ile userId aynı kişidir.

Parametreler

AdYerTipAçıklama
Metrics-Signaturebaşlıkstringt=<unix saniye>,v1=<hex>; v1 = HMAC-SHA256(imza anahtarı sk_…, t + "." + hamGövde). ±300 sn. Anahtar yenilenirken birden çok v1= olabilir.

Desen: ^t=\d{1,12}(,v1=[0-9a-fA-F]{64})+$

İstek gövdesiGövde zorunlu

application/jsonAliasMessage

AlanTipAçıklama
messageIdstring

Desen: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdzorunlustring | number
timestampstring

Biçim: date-time

sentAtstring

Biçim: date-time

contextContext
integrationsobject

Serbest anahtarlar

typestring

Sabit: alias

previousIdzorunlustring | number
Örnek · JSON
{
  "messageId": "string",
  "anonymousId": "string",
  "userId": "string",
  "timestamp": "2026-11-06T14:46:00+03:00",
  "sentAt": "2026-11-06T14:46:00+03:00",
  "context": {
    "ip": "string",
    "userAgent": "string"
  },
  "integrations": {},
  "type": "alias",
  "previousId": "string"
}

text/plainstring

Aynı JSON, metin olarak (tarayıcı beacon).

Yanıtlar

  • 200

    İşlendi.

    application/jsonTrackingResponse

    Örnek · JSON
    {
      "success": true,
      "accepted": 0,
      "rejected": [
        {
          "index": 0,
          "errors": [
            {
              "code": "invalid_message",
              "path": "string",
              "message": "string"
            }
          ]
        }
      ],
      "warnings": [
        {
          "index": 0,
          "code": "invalid_message",
          "path": "string"
        }
      ]
    }
  • 400

    Gövde okunamadı ya da bütün mesajlar reddedildi (all_rejected, rejected listesiyle). Tekrar etmeyin.

    application/jsonRefusal

  • 401

    Anahtar yok/yanlış (missing_key, invalid_key) ya da imza (signature_required, signature_invalid, signature_expired). Anahtarı ve sunucu saatini denetleyin.

    application/jsonRefusal

  • 403

    Origin kaynağın izinli alan adlarında değil (origin_not_allowed).

    application/jsonRefusal

  • 413

    Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.

    application/jsonRefusal

  • 429

    Kaynağın hız sınırı aşıldı (rate_limited; mesaj sayısıyla, varsayılan dakikada 60.000, bir anda 10.000): hiçbir mesaj saklanmadı. Retry-After saniye bekleyip aynı partiyi yeniden gönderin.

    Yanıt başlıkları

    • Retry-Afterinteger

      Yeniden denemeden önce beklenecek saniye.

      en az 1

    application/jsonRefusal

  • 5XX

    Geçici hata: üstel geri çekilmeyle tekrar deneyin (1 dk, 5 dk, 30 dk, 2 sa… en fazla 24 sa).

POST/v1/batch

Toplu gönderim (batch)

En fazla 500 mesaj, karışık tiplerde; her mesajda type zorunlu. Tarayıcıdan text/plain gövdeyle ve writeKey gövdede gönderilebilir (CORS ön isteği yok).

Parametreler

AdYerTipAçıklama
Metrics-Signaturebaşlıkstringt=<unix saniye>,v1=<hex>; v1 = HMAC-SHA256(imza anahtarı sk_…, t + "." + hamGövde). ±300 sn. Anahtar yenilenirken birden çok v1= olabilir.

Desen: ^t=\d{1,12}(,v1=[0-9a-fA-F]{64})+$

İstek gövdesiGövde zorunlu

application/jsonBatchRequest

AlanTipAçıklama
batchzorunlu(TrackMessage | IdentifyMessage | PageMessage | ScreenMessage | GroupMessage | AliasMessage)[]

1–500 öğe

writeKeystringYalnız tarayıcı beacon'ı için (başlık gönderilemediğinde).
sentAtstring

Biçim: date-time

contextContextKendi context'i olmayan mesajlara uygulanır.
Örnek · JSON
{
  "batch": [
    {
      "type": "track",
      "event": "string"
    }
  ],
  "writeKey": "string",
  "sentAt": "2026-11-06T14:46:00+03:00",
  "context": {
    "ip": "string",
    "userAgent": "string"
  }
}

text/plainstring

Aynı JSON, metin olarak (tarayıcı beacon).

Yanıtlar

  • 200

    İşlendi.

    application/jsonTrackingResponse

    Örnek · JSON
    {
      "success": true,
      "accepted": 0,
      "rejected": [
        {
          "index": 0,
          "errors": [
            {
              "code": "invalid_message",
              "path": "string",
              "message": "string"
            }
          ]
        }
      ],
      "warnings": [
        {
          "index": 0,
          "code": "invalid_message",
          "path": "string"
        }
      ]
    }
  • 400

    Gövde okunamadı ya da bütün mesajlar reddedildi (all_rejected, rejected listesiyle). Tekrar etmeyin.

    application/jsonRefusal

  • 401

    Anahtar yok/yanlış (missing_key, invalid_key) ya da imza (signature_required, signature_invalid, signature_expired). Anahtarı ve sunucu saatini denetleyin.

    application/jsonRefusal

  • 403

    Origin kaynağın izinli alan adlarında değil (origin_not_allowed).

    application/jsonRefusal

  • 413

    Mesaj > 32 KB ya da parti > 500 KB / 500 mesaj. Partiyi bölün.

    application/jsonRefusal

  • 429

    Kaynağın hız sınırı aşıldı (rate_limited; mesaj sayısıyla, varsayılan dakikada 60.000, bir anda 10.000): hiçbir mesaj saklanmadı. Retry-After saniye bekleyip aynı partiyi yeniden gönderin.

    Yanıt başlıkları

    • Retry-Afterinteger

      Yeniden denemeden önce beklenecek saniye.

      en az 1

    application/jsonRefusal

  • 5XX

    Geçici hata: üstel geri çekilmeyle tekrar deneyin (1 dk, 5 dk, 30 dk, 2 sa… en fazla 24 sa).

Kurulum

4 uç

Bağlantı testi, SDK uzak yapılandırması, web SDK paketi, sağlık.

POST/v1/ping

Bağlantı testi

Anahtarı ve (gönderildiyse ya da kaynak istiyorsa) imzayı doğrular; hiçbir şey kaydetmez. Gövde {}.

Parametreler

AdYerTipAçıklama
Metrics-Signaturebaşlıkstringt=<unix saniye>,v1=<hex>; v1 = HMAC-SHA256(imza anahtarı sk_…, t + "." + hamGövde). ±300 sn. Anahtar yenilenirken birden çok v1= olabilir.

Desen: ^t=\d{1,12}(,v1=[0-9a-fA-F]{64})+$

İstek gövdesi

application/jsonobject

Örnek · JSON
{}

Yanıtlar

  • 200

    Anahtar (ve imza) geçerli.

    application/jsonPingResponse

    Örnek · JSON
    {
      "success": true,
      "sourceId": "string",
      "appId": "string",
      "environment": "string",
      "test": true,
      "signature": "valid"
    }
  • 401

    Anahtar yok/yanlış (missing_key, invalid_key) ya da imza (signature_required, signature_invalid, signature_expired). Anahtarı ve sunucu saatini denetleyin.

    application/jsonRefusal

GET/v1/config/{writeKey}

SDK uzak yapılandırması

Panelde kaynak için yapılan yakalama ayarları (hariç yollar, rıza kipi, otomatik yakalama, örnekleme…). ttlSeconds kadar önbelleğe alınabilir; istek başarısızsa SDK varsayılanlarla çalışır.

Kimlik
Kimlik gerekmez

Parametreler

AdYerTipAçıklama
writeKeyzorunluyolstringKaynağın yazma anahtarı (pk_…).
schemaHintssorgustring1: yanıtta ayrıca schemaHints — uygulamanın olay planının özeti (planlanmış olaylar ve zorunlu özellikleri, engellenen olaylar, şema kipi). Web SDK debug kipinde ister; parametresiz yanıt değişmez.

Değerler: 1

Yanıtlar

  • 200

    Yapılandırma.

    application/jsonRemoteConfig

    Örnek · JSON
    {
      "sourceId": "string",
      "appId": "string",
      "kind": "web",
      "environment": "production",
      "test": true,
      "ttlSeconds": 1,
      "consentMode": "required",
      "excludedPaths": [
        "string"
      ],
      "maskSelectors": [
        "string"
      ],
      "ignoreSelectors": [
        "string"
      ],
      "stripQueryParams": [
        "string"
      ],
      "sessionTimeoutMinutes": 5,
      "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"
      ],
      "schemaHints": {
        "mode": "strict",
        "events": [
          {
            "name": "string",
            "required": []
          }
        ],
        "blocked": [
          "string"
        ],
        "truncated": true
      }
    }
  • 404

    Anahtar tanınmadı.

    application/jsonRefusal

GET/m.js

Web SDK (pixel)

Kurulum kodunun yüklediği tarayıcı SDK'sı (@metrics/web, ≤ 12 KB gzip). ETag ile önbelleklenir.

Kimlik
Kimlik gerekmez

Yanıtlar

  • 200

    JavaScript.

  • 304

    Değişmedi.

GET/v1/health

Sağlık

Kimlik
Kimlik gerekmez

Yanıtlar

  • 200

    Süreç ve veritabanı çalışıyor.

    application/jsonobject

    Örnek · JSON
    {
      "status": "string",
      "database": "string"
    }

Şemalar

İsteklerde ve yanıtlarda adıyla anılan şemalar.

TrackingResponseobject

TrackingResponse
AlanTipAçıklama
successzorunluboolean

Sabit: true

acceptedzorunluintegerMesajlardan kabul edilenlerin sayısı (tekrar edenler dahil; tekrar eden bir kez saklanır).
rejectedzorunluobject[]Reddedilenler. Düzeltmeden tekrar göndermeyin.
rejected[].indexzorunluinteger
rejected[].messageIdstring
rejected[].errorszorunluobject[]
rejected[].errors[].codezorunlustring

Değerler: invalid_message, unknown_type, event_name_missing, identity_missing, event_unplanned, event_blocked, property_required, property_type, property_unplanned, property_too_long, pii_detected, timestamp_invalid, timestamp_out_of_range, message_too_large, currency_unknown, property_out_of_range

rejected[].errors[].pathzorunlustring
rejected[].errors[].messagezorunlustring
warningszorunluobject[]Kabul edildi ama dikkat: planlanmamış özellik, kişisel veri maskelendi…
warnings[].indexzorunluinteger
warnings[].codezorunlustring

Değerler: invalid_message, unknown_type, event_name_missing, identity_missing, event_unplanned, event_blocked, property_required, property_type, property_unplanned, property_too_long, pii_detected, timestamp_invalid, timestamp_out_of_range, message_too_large, currency_unknown, property_out_of_range

warnings[].pathzorunlustring

Refusalobject

Refusal
AlanTipAçıklama
successzorunluboolean

Sabit: false

errorzorunluobject
error.codezorunlustring
error.messagezorunlustring
rejectedobject[]
rejected[].indexzorunluinteger
rejected[].messageIdstring
rejected[].errorszorunluobject[]
rejected[].errors[].codezorunlustring

Değerler: invalid_message, unknown_type, event_name_missing, identity_missing, event_unplanned, event_blocked, property_required, property_type, property_unplanned, property_too_long, pii_detected, timestamp_invalid, timestamp_out_of_range, message_too_large, currency_unknown, property_out_of_range

rejected[].errors[].pathzorunlustring
rejected[].errors[].messagezorunlustring

PingResponseobject

PingResponse
AlanTipAçıklama
successzorunluboolean

Sabit: true

sourceIdzorunlustring
appIdzorunlustring
environmentzorunlustring
testzorunluboolean
signaturezorunlustring

Değerler: valid, absent

RemoteConfigobject

RemoteConfig
AlanTipAçıklama
sourceIdzorunlustring
appIdzorunlustring
kindzorunlustring

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

environmentzorunlustring

Değerler: production, staging, development

testzorunluboolean
ttlSecondszorunluinteger

0 üstü

consentModezorunlustring

Değerler: required, implied, none

excludedPathszorunlustring[]
maskSelectorszorunlustring[]
ignoreSelectorszorunlustring[]
stripQueryParamszorunlustring[]
sessionTimeoutMinuteszorunluinteger

5–240

interactionSampleRatezorunlunumber

0–1

autocapturezorunluobject
autocapture.pageviewszorunluboolean
autocapture.pageleavezorunluboolean
autocapture.clickszorunluboolean
autocapture.rageClickszorunluboolean
autocapture.deadClickszorunluboolean
autocapture.scrollzorunluboolean
autocapture.errorszorunluboolean
autocapture.formszorunluboolean
autocapture.layoutzorunluboolean
autocapture.outboundLinkszorunluboolean
autocapture.downloadszorunluboolean
autocapture.webVitalszorunluboolean
dataLayerEventszorunlustring[]
schemaHintsobject
schemaHints.modezorunlustring

Değerler: strict, lenient, discover

schemaHints.eventszorunluobject[]
schemaHints.events[].namezorunlustring
schemaHints.events[].requiredzorunlustring[]
schemaHints.blockedzorunlustring[]
schemaHints.truncatedzorunluboolean

Contextobject

Context
AlanTipAçıklama
ipstring

en çok 64 karakter

userAgentstring

en çok 1000 karakter

localestring

en çok 35 karakter

timezonestring

en çok 64 karakter

groupIdstring | number
traitsobject

Serbest anahtarlar

pageobject
page.urlstring

en çok 4000 karakter

page.pathstring

en çok 2000 karakter

page.titlestring

en çok 1000 karakter

page.referrerstring

en çok 4000 karakter

page.searchstring

en çok 2000 karakter

campaignobject
campaign.sourcestring

en çok 200 karakter

campaign.mediumstring

en çok 200 karakter

campaign.namestring

en çok 300 karakter

campaign.contentstring

en çok 300 karakter

campaign.termstring

en çok 300 karakter

campaign.idstring

en çok 200 karakter

appobject
app.namestring

en çok 200 karakter

app.versionstring

en çok 100 karakter

app.buildstring

en çok 100 karakter

app.namespacestring

en çok 300 karakter

deviceobject
device.typestring

en çok 50 karakter

device.manufacturerstring

en çok 100 karakter

device.modelstring

en çok 100 karakter

device.idstring

en çok 200 karakter

device.advertisingIdstring

en çok 200 karakter

osobject
os.namestring

en çok 100 karakter

os.versionstring

en çok 100 karakter

screenobject
screen.widthnumber

en az 0

screen.heightnumber

en az 0

screen.densitynumber

0 üstü

libraryobject
library.namestring

en çok 100 karakter

library.versionstring

en çok 50 karakter

viewportobject
viewport.widthnumber

en az 0

viewport.heightnumber

en az 0

clickIdsobject
clickIds.gclidstring

en çok 500 karakter

clickIds.gbraidstring

en çok 500 karakter

clickIds.wbraidstring

en çok 500 karakter

clickIds.dclidstring

en çok 500 karakter

clickIds.fbclidstring

en çok 500 karakter

clickIds.fbcstring

en çok 500 karakter

clickIds.fbpstring

en çok 500 karakter

clickIds.li_fat_idstring

en çok 500 karakter

clickIds.msclkidstring

en çok 500 karakter

clickIds.ttclidstring

en çok 500 karakter

clickIds.yclidstring

en çok 500 karakter

clickIds.gclid_atstring | number
attributionobject
attribution.first_touchobject
attribution.first_touch.sourcestring

en çok 200 karakter

attribution.first_touch.mediumstring

en çok 200 karakter

attribution.first_touch.campaignstring

en çok 300 karakter

attribution.first_touch.contentstring

en çok 300 karakter

attribution.first_touch.termstring

en çok 300 karakter

attribution.first_touch.campaign_idstring

en çok 200 karakter

attribution.first_touch.landing_pathstring

en çok 2000 karakter

attribution.first_touch.referrer_hoststring

en çok 300 karakter

attribution.first_touch.atstring

Biçim: date-time

attribution.last_non_direct_touchobject
attribution.last_non_direct_touch.sourcestring

en çok 200 karakter

attribution.last_non_direct_touch.mediumstring

en çok 200 karakter

attribution.last_non_direct_touch.campaignstring

en çok 300 karakter

attribution.last_non_direct_touch.contentstring

en çok 300 karakter

attribution.last_non_direct_touch.termstring

en çok 300 karakter

attribution.last_non_direct_touch.campaign_idstring

en çok 200 karakter

attribution.last_non_direct_touch.landing_pathstring

en çok 2000 karakter

attribution.last_non_direct_touch.referrer_hoststring

en çok 300 karakter

attribution.last_non_direct_touch.atstring

Biçim: date-time

attribution.session_touchobject
attribution.session_touch.sourcestring

en çok 200 karakter

attribution.session_touch.mediumstring

en çok 200 karakter

attribution.session_touch.campaignstring

en çok 300 karakter

attribution.session_touch.contentstring

en çok 300 karakter

attribution.session_touch.termstring

en çok 300 karakter

attribution.session_touch.campaign_idstring

en çok 200 karakter

attribution.session_touch.landing_pathstring

en çok 2000 karakter

attribution.session_touch.referrer_hoststring

en çok 300 karakter

attribution.session_touch.atstring

Biçim: date-time

attribution.methodstring

Değerler: consent, same_visit

consentobject
consent.analyticszorunluboolean
consent.marketingzorunluboolean
sessionobject
session.idzorunlustring

1–100 karakter

session.startboolean
tabobject
tab.idzorunlustring

1–100 karakter

testboolean
internalboolean
gaobject
ga.clientIdstring

Desen: ^\d{1,20}\.\d{1,20}$

ga.sessionIdstring

Desen: ^\d{1,20}$

TrackMessageobject

TrackMessage
AlanTipAçıklama
messageIdstring

Desen: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Biçim: date-time

sentAtstring

Biçim: date-time

contextContext
integrationsobject

Serbest anahtarlar

typestring

Sabit: track

eventzorunlustring

1–200 karakter

propertiesobject

Serbest anahtarlar

IdentifyMessageobject

IdentifyMessage
AlanTipAçıklama
messageIdstring

Desen: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Biçim: date-time

sentAtstring

Biçim: date-time

contextContext
integrationsobject

Serbest anahtarlar

typestring

Sabit: identify

traitsobject

Serbest anahtarlar

PageMessageobject

PageMessage
AlanTipAçıklama
messageIdstring

Desen: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Biçim: date-time

sentAtstring

Biçim: date-time

contextContext
integrationsobject

Serbest anahtarlar

typestring

Sabit: page

namestring

en çok 500 karakter

categorystring

en çok 200 karakter

propertiesobject

Serbest anahtarlar

ScreenMessageobject

ScreenMessage
AlanTipAçıklama
messageIdstring

Desen: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Biçim: date-time

sentAtstring

Biçim: date-time

contextContext
integrationsobject

Serbest anahtarlar

typestring

Sabit: screen

namestring

en çok 500 karakter

categorystring

en çok 200 karakter

propertiesobject

Serbest anahtarlar

GroupMessageobject

GroupMessage
AlanTipAçıklama
messageIdstring

Desen: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdstring | number
timestampstring

Biçim: date-time

sentAtstring

Biçim: date-time

contextContext
integrationsobject

Serbest anahtarlar

typestring

Sabit: group

groupIdzorunlustring | number
traitsobject

Serbest anahtarlar

AliasMessageobject

AliasMessage
AlanTipAçıklama
messageIdstring

Desen: ^[\x21-\x7e]{1,100}$

anonymousIdstring | number
userIdzorunlustring | number
timestampstring

Biçim: date-time

sentAtstring

Biçim: date-time

contextContext
integrationsobject

Serbest anahtarlar

typestring

Sabit: alias

previousIdzorunlustring | number

BatchRequestobject

BatchRequest
AlanTipAçıklama
batchzorunlu(TrackMessage | IdentifyMessage | PageMessage | ScreenMessage | GroupMessage | AliasMessage)[]

1–500 öğe

writeKeystringYalnız tarayıcı beacon'ı için (başlık gönderilemediğinde).
sentAtstring

Biçim: date-time

contextContextKendi context'i olmayan mesajlara uygulanır.