Gizlilik API
Gizlilik modülünün tüm işlemleri (7) ve veri modelleri (1): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.
Kişisel veri talepleri — müşterinin verisini dışa aktarın veya silin, kaydı tutulsun.
Modül kodu privacy · 7 işlem · 1 veri modeli · 6 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ı: privacy (hepsi), privacy:read (yalnız okuma) ya da privacy:<yetenek>.
Kaynaklar
| Kaynak | Tablo | Listeleme ve okuma | POST | PATCH | DELETE |
|---|---|---|---|---|---|
privacy_requests | privacy_request | /api/v1/privacy_requests |
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 |
|---|---|---|
privacy.approve_erasure | privacy:approve | Onayla ve sil |
privacy.cancel_erasure | privacy:write | Silme talebini geri çek |
privacy.export_data | privacy:export | Kişisel veriyi dışa aktar |
privacy.purge_exports | privacy:manage | Dışa aktarım saklama kuralını uygula |
privacy.reject_erasure | privacy:approve | Silme talebini reddet |
privacy.request_erasure | privacy:write | Kişisel verinin silinmesini talep et |
privacy.request_my_erasure | privacy:write | Verilerimin silinmesini iste |
privacy.approve_erasure
Onayla ve sil — Bir silme talebini onaylar. Müşterinin adı, iletişim bilgileri, kimlikleri ve kayıtlı adresleri temizlenir.
Gereken izin privacy:approve · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır) · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/privacy_requests/actions/approve_erasure- Asıl adres:
POST /api/v1/actions/privacy.approve_erasure
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Talep |
note | string | Not · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
request_not_found | Silme talebi bu çalışma alanında bulunmalı. |
request_not_pending | Yalnızca bekleyen bir talep karara bağlanabilir. |
self_approval | Çalışma alanı izin vermedikçe talep eden kişi onaylayamaz. |
Yayımladığı olaylar: privacy.erasure_approved
Neye yazar: privacy_request (update) — Marks the request approved and carried out
curl -X POST https://app.getera.io/api/v1/privacy_requests/actions/approve_erasure \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"ID_ID"}'{
"ok": true,
"result": "…",
"events": [
"privacy.erasure_approved"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.privacyRequests.approveErasure({
id: "ID_ID"
})era privacy_requests approve_erasure \
--id "ID_ID"{
"name": "era__privacy__approve_erasure",
"arguments": {
"id": "ID_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde privacy:approve izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 request_not_found, request_not_pending, self_approval · 429 çok sık istek
privacy.cancel_erasure
Silme talebini geri çek — Bekleyen bir silme talebini geri çeker (müşteri fikrini değiştirdi ya da yanlışlıkla açıldı).
Gereken izin privacy:write · siler ya da geri alınamaz
https://app.getera.io/api/v1/privacy_requests/actions/cancel_erasure- Asıl adres:
POST /api/v1/actions/privacy.cancel_erasure
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Talep |
note | string | Not · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
request_not_found | Silme talebi bu çalışma alanında bulunmalı. |
request_not_pending | Yalnızca bekleyen bir talep geri çekilebilir. |
Yayımladığı olaylar: privacy.erasure_cancelled
Neye yazar: privacy_request (update) — Marks the request cancelled
curl -X POST https://app.getera.io/api/v1/privacy_requests/actions/cancel_erasure \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"ID_ID"}'{
"ok": true,
"result": "…",
"events": [
"privacy.erasure_cancelled"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.privacyRequests.cancelErasure({
id: "ID_ID"
})era privacy_requests cancel_erasure \
--id "ID_ID"{
"name": "era__privacy__cancel_erasure",
"arguments": {
"id": "ID_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde privacy:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 request_not_found, request_not_pending · 429 çok sık istek
privacy.export_data
Kişisel veriyi dışa aktar — Bu çalışma alanının bir müşteri hakkında tuttuğu her satırı indirilebilir tek bir dosyada toplar ve bunu kaydeder.
Gereken izin privacy:export · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)
https://app.getera.io/api/v1/privacy_requests/actions/export_data- Asıl adres:
POST /api/v1/actions/privacy.export_data
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
customer_id | uuid | evet | Müşteri |
reason | string | Neden (ör. talebin referansı) · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
customer_not_found | Müşteri bu çalışma alanında bulunmalı. |
Yayımladığı olaylar: privacy.exported
Neye yazar: privacy_request (insert) — A completed export in the register, with the collected rows
curl -X POST https://app.getera.io/api/v1/privacy_requests/actions/export_data \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"customer_id":"CUSTOMER_ID"}'{
"ok": true,
"result": "…",
"events": [
"privacy.exported"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.privacyRequests.exportData({
customer_id: "CUSTOMER_ID"
})era privacy_requests export_data \
--customer-id "CUSTOMER_ID"{
"name": "era__privacy__export_data",
"arguments": {
"customer_id": "CUSTOMER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde privacy:export izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 customer_not_found · 429 çok sık istek
privacy.purge_exports
Dışa aktarım saklama kuralını uygula — Saklama süresini geçmiş dışa aktarımların toplanan verisini siler. Kayıt satırı ve sayıları kalır.
Gereken izin privacy:manage · siler ya da geri alınamaz
https://app.getera.io/api/v1/privacy_requests/actions/purge_exports- Asıl adres:
POST /api/v1/actions/privacy.purge_exports
Girdi
Bu işlem girdi almaz.
Yayımladığı olaylar: privacy.exports_purged
Neye yazar: privacy_request (update) — Clears export_payload on expired exports
curl -X POST https://app.getera.io/api/v1/privacy_requests/actions/purge_exports \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"privacy.exports_purged"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.privacyRequests.purgeExports()era privacy_requests purge_exports{
"name": "era__privacy__purge_exports",
"arguments": {}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde privacy:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 429 çok sık istek
privacy.reject_erasure
Silme talebini reddet — Bir silme talebini nedeniyle (örneğin açık bir sözleşme veya yasal saklama) reddeder.
Gereken izin privacy:approve · veriyi değiştirir
https://app.getera.io/api/v1/privacy_requests/actions/reject_erasure- Asıl adres:
POST /api/v1/actions/privacy.reject_erasure
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Talep |
note | string | evet | Neden · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
request_not_found | Silme talebi bu çalışma alanında bulunmalı. |
request_not_pending | Yalnızca bekleyen bir talep karara bağlanabilir. |
Yayımladığı olaylar: privacy.erasure_rejected
Neye yazar: privacy_request (update) — Marks the request rejected
curl -X POST https://app.getera.io/api/v1/privacy_requests/actions/reject_erasure \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"ID_ID","note":"Reason"}'{
"ok": true,
"result": "…",
"events": [
"privacy.erasure_rejected"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.privacyRequests.rejectErasure({
id: "ID_ID",
note: "Reason"
})era privacy_requests reject_erasure \
--id "ID_ID" \
--note "Reason"{
"name": "era__privacy__reject_erasure",
"arguments": {
"id": "ID_ID",
"note": "Reason"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde privacy:approve izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 request_not_found, request_not_pending · 429 çok sık istek
privacy.request_erasure
Kişisel verinin silinmesini talep et — Bir müşteri için silme talebi açar. Onaylanana kadar hiçbir şey silinmez.
Gereken izin privacy:write · veriyi değiştirir
https://app.getera.io/api/v1/privacy_requests/actions/request_erasure- Asıl adres:
POST /api/v1/actions/privacy.request_erasure
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
customer_id | uuid | evet | Müşteri |
reason | string | Neden (ör. talebin referansı) · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
customer_not_found | Müşteri bu çalışma alanında bulunmalı. |
already_anonymized | Verisi zaten silinmiş bir müşteri yeniden silinemez. |
erasure_already_open | Müşteri başına tek açık silme talebi. |
Yayımladığı olaylar: privacy.erasure_requested
Neye yazar: privacy_request (insert) — A pending erasure in the register
curl -X POST https://app.getera.io/api/v1/privacy_requests/actions/request_erasure \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"customer_id":"CUSTOMER_ID"}'{
"ok": true,
"result": "…",
"events": [
"privacy.erasure_requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.privacyRequests.requestErasure({
customer_id: "CUSTOMER_ID"
})era privacy_requests request_erasure \
--customer-id "CUSTOMER_ID"{
"name": "era__privacy__request_erasure",
"arguments": {
"customer_id": "CUSTOMER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde privacy:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 customer_not_found, already_anonymized, erasure_already_open · 429 çok sık istek
privacy.request_my_erasure
Verilerimin silinmesini iste — Giriş yapmış müşteri, işletmeden kişisel verilerinin silinmesini ister. Onaylanana kadar hiçbir şey silinmez.
Gereken izin privacy:write · veriyi değiştirir · Yayındaki bir siteden de çağrılabilir (customer)
/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/privacy_requests/actions/request_my_erasure- Asıl adres:
POST /api/v1/actions/privacy.request_my_erasure
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
reason | string | Neden · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
erasure_already_open | Müşteri başına tek açık silme talebi. |
Yayımladığı olaylar: privacy.erasure_requested
Neye yazar: privacy_request (insert) — A pending erasure in the register
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde privacy:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 erasure_already_open · 429 çok sık istek
Veri modelleri
PrivacyRequest
Tablo privacy_request · Kaynak privacy_requests
GET /api/v1/privacy_requestsGET /api/v1/privacy_requests/{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 | ||
customer_id | string (uuid) · uuid | |||
subject_label | string · text | |||
kind | string · text | export, erase | ||
status | string · text | pending, completed, rejected, cancelled | ||
reason | string · text | evet | ||
requested_by | string (uuid) · uuid | evet | app_user | |
requested_at | string (date-time) · timestamptz | |||
decided_by | string (uuid) · uuid | evet | app_user | |
decided_at | string (date-time) · timestamptz | evet | ||
decision_note | string · text | evet | ||
completed_at | string (date-time) · timestamptz | evet | ||
export_summary | object · jsonb | evet | ||
export_expires_at | string (date-time) · timestamptz | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Olaylar
İş akışları ve webhook'lar bu olaylara tepki verir.
| Olay | Ne olur | Taşıdığı alanlar |
|---|---|---|
privacy.erasure_approved | Bir silme onaylandı; veriyi tutan modüller onu temizler. | id, customerId |
privacy.erasure_cancelled | Bir silme isteği geri çekildi. | id, customerId |
privacy.erasure_rejected | Bir silme isteği reddedildi. | id, customerId |
privacy.erasure_requested | Bir silme isteği açıldı. | id, customerId |
privacy.exported | Bir müşterinin kişisel verileri dışa aktarıldı. | id, customerId, tables, rows |
privacy.exports_purged | Süresi dolan dışa aktarımlar temizlendi. | removed |