Açılır pencereler API
Açılır pencereler modülünün tüm işlemleri (4) ve veri modelleri (2): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.
Web sitesi açılır pencereleri, hedefleme ve A/B dönüşüm ölçümleri.
Modül kodu popups · 4 işlem · 2 veri modeli · 2 olay. Bir anahtar ya da token, arkasındaki kişinin bu modülde yapabildiğinden fazlasını asla yapamaz; satır düzeyindeki güvenlik uygulamadakiyle birebir aynıdır. Yetki kapsamları: popups (hepsi), popups:read (yalnız okuma) ya da popups:<yetenek>.
Kaynaklar
| Kaynak | Tablo | Listeleme ve okuma | POST | PATCH | DELETE |
|---|---|---|---|---|---|
popup_events | popup_event | /api/v1/popup_events | |||
popups | popup | /api/v1/popups |
Listeler limit (en çok 200), cursor, order (ör. -created_at), fields ve q alır; diğer her sorgu parametresi bir sütun süzgecidir: ?status=paid, ?total[gte]=100, ?id[in]=a,b, ?x=null.
İşlemler
| İşlem | Gereken izin | Ne yapar |
|---|---|---|
popups.delete | popups:delete | Açılır pencereyi sil |
popups.save | popups:manage | Açılır pencere oluştur ya da düzenle |
popups.submit | popups:write | Açılır pencere formunu gönder |
popups.track | popups:write | Açılır pencere etkileşimini say |
popups.delete
Açılır pencereyi sil — Açılır pencereyi ve anonim ölçümlerini siler.
Gereken izin popups:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/popups/actions/delete- Asıl adres:
POST /api/v1/actions/popups.delete
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Açılır pencere |
Yayımladığı olaylar: popups.deleted
Neye yazar: popup (delete) — Deletes the popup; popup_event (delete) — Deletes its counts
curl -X POST https://app.getera.io/api/v1/popups/actions/delete \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"ID_ID"}'{
"ok": true,
"result": "…",
"events": [
"popups.deleted"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.popups.delete({
id: "ID_ID"
})era popups delete \
--id "ID_ID"{
"name": "era__popups__delete",
"arguments": {
"id": "ID_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde popups:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 429 çok sık istek
popups.save
Açılır pencere oluştur ya da düzenle — Web sitenizde ziyaretçilere gösterilecek açılır pencereyi, hedeflemesini ve A/B içeriğini kaydeder.
Gereken izin popups:manage · veriyi değiştirir
https://app.getera.io/api/v1/popups/actions/save- Asıl adres:
POST /api/v1/actions/popups.save
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | Açılır pencere | |
name | string | evet | Ad · en çok 200 |
siteId | uuid | evet | Web sitesi · kimliği: site |
formId | uuid | Potansiyel müşteri formu · kimliği: public_form | |
active | boolean | Yayında | |
config | object / array | evet | İçerik ve hedefleme · JSON: {a:{title,text,image,ctaLabel,ctaUrl},b:{title,text,image,ctaLabel,ctaUrl},split:0,trigger:"arrival",threshold:5,pages:["/"],visitor:"all",device:"all",frequency:"session"}. İki içerik varyantı da gereklidir; isteğe bağlı içerik metinleri boş olabilir. split, B’ye giden trafiktir (0–100). trigger: arrival/delay/exit/scroll; threshold: saniye (delay) veya yüzde (scroll). visitor: all/new/returning; device: all/mobile/desktop; frequency: session/daily/once. |
startsAt | date-time | Başlangıç | |
endsAt | date-time | Bitiş |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
popup_invalid | İçerik, site, form ve zamanlama geçerli olmalı ve bu çalışma alanında bulunmalı. |
Yayımladığı olaylar: popups.saved
Neye yazar: popup (upsert) — Saves the popup as a new revision
curl -X POST https://app.getera.io/api/v1/popups/actions/save \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name","siteId":"SITE_ID","config":{}}'{
"ok": true,
"result": "…",
"events": [
"popups.saved"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.popups.save({
name: "Name",
siteId: "SITE_ID",
config: {}
})era popups save --data '{"name":"Name","siteId":"SITE_ID","config":{}}'{
"name": "era__popups__save",
"arguments": {
"name": "Name",
"siteId": "SITE_ID",
"config": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde popups:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 popup_invalid · 429 çok sık istek
popups.submit
Açılır pencere formunu gönder — Form motoruyla bir potansiyel müşteri oluşturur ve başarılı gönderimi A/B ölçümüne ekler.
Gereken izin popups:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır) · Yayındaki bir siteden de çağrılabilir (visitor)
/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).https://app.getera.io/api/v1/popup_events/actions/submit- Asıl adres:
POST /api/v1/actions/popups.submit
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Açılır pencere |
revision | number | evet | Revizyon · en az 1 |
impressionId | uuid | evet | Gösterim |
variant | string (enum) | evet | Varyant · İzin verilen değerler: A, B |
answers | object / array | Yanıtlar | |
meta | object / array | Form bilgileri |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
popup_invalid | Yayında bir açılır pencere, önceki görüntülenmesi ve etkin bir potansiyel müşteri formu gerekir. |
Neye yazar: popup_event (insert) — A successful form send
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde popups:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 popup_invalid · 429 çok sık istek
popups.track
Açılır pencere etkileşimini say — Anonim bir görüntülemeyi ya da tıklamayı bir kez kaydeder.
Gereken izin popups:write · veriyi değiştirir · Yayındaki bir siteden de çağrılabilir (visitor)
/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).https://app.getera.io/api/v1/popup_events/actions/track- Asıl adres:
POST /api/v1/actions/popups.track
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Açılır pencere |
revision | number | evet | Revizyon · en az 1 |
impressionId | uuid | evet | Gösterim |
variant | string (enum) | evet | Varyant · İzin verilen değerler: A, B |
kind | string (enum) | evet | Etkileşim · İzin verilen değerler: view, click |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
popup_invalid | Açılır pencere bu sitede yayında olmalı; tıklamadan önce görüntülenmiş olmalı. |
Neye yazar: popup_event (insert) — One interaction
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde popups:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 popup_invalid · 429 çok sık istek
Veri modelleri
PopupEvent
Tablo popup_event · Kaynak popup_events
GET /api/v1/popup_eventsGET /api/v1/popup_events/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
popup_id | string (uuid) · uuid | popup | ||
revision | integer · int4 | |||
impression_id | string (uuid) · uuid | |||
variant | string · text | A, B | ||
kind | string · text | view, click, submit | ||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: popup_id, revision, impression_id, kind
Popup
Tablo popup · Kaynak popups
GET /api/v1/popupsGET /api/v1/popups/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
site_id | string (uuid) · uuid | site | ||
form_id | string (uuid) · uuid | evet | public_form | |
name | string · text | |||
is_active | boolean · bool | |||
revision | integer · int4 | |||
config | object · jsonb | |||
starts_at | string (date-time) · timestamptz | evet | ||
ends_at | string (date-time) · timestamptz | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK (((ends_at IS NULL) OR (starts_at IS NULL) OR (ends_at > starts_at)))
Olaylar
İş akışları ve webhook'lar bu olaylara tepki verir.
| Olay | Ne olur | Taşıdığı alanlar |
|---|---|---|
popups.deleted | Bir açılır pencere silindi. | id |
popups.saved | Bir açılır pencere kaydedildi. | id |