Müşteriler API
Müşteriler modülünün tüm işlemleri (27) ve veri modelleri (6): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.
Her müşteri için tek kayıt; tüm modüller aynı kaydı kullanır.
Modül kodu customers · 27 işlem · 6 veri modeli · 18 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ı: customers (hepsi), customers:read (yalnız okuma) ya da customers:<yetenek>.
Kaynaklar
| Kaynak | Tablo | Listeleme ve okuma | POST | PATCH | DELETE |
|---|---|---|---|---|---|
addresses | address | /api/v1/addresses | customers.add_address | ||
customer_addresses | customer_address | /api/v1/customer_addresses | |||
customer_identities | customer_identity | /api/v1/customer_identities | |||
customer_login_codes | customer_login_code | /api/v1/customer_login_codes | |||
customer_logins | customer_login | /api/v1/customer_logins | |||
customers | customer | /api/v1/customers | customers.capture | customers.update | customers.archive |
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 |
|---|---|---|
customers.add_address | customers:write | Adres ekle |
customers.add_identity | customers:write | Bu kişiyi tanımanın bir yolunu ekle |
customers.add_my_address | customers:write | Hesabıma adres ekle |
customers.archive | customers:delete | Müşteriyi arşivle |
customers.capture | customers:write | Müşteri ekle veya tanı |
customers.capture_site_guest | customers:write | Web alıcısını tanı |
customers.confirm_email_change | customers:write | Yeni e-postamı onayla |
customers.disable_login | customers:manage | Site hesabını kapat |
customers.enable_login | customers:manage | Site hesabını yeniden aç |
customers.export | customers:export | Müşterileri dışa aktar |
customers.merge | customers:manage | İki müşteriyi birleştir |
customers.remove_address | customers:delete | Adresi arşivle |
customers.remove_identity | customers:write | Bu kişiyi tanıma yolunu kaldır |
customers.remove_my_address | customers:write | Hesabımdan adresi kaldır |
customers.request_email_change | customers:write | Giriş e-postamı değiştir |
customers.request_sign_in_code | customers:write | Giriş kodu gönder |
customers.restore | customers:delete | Müşteriyi geri yükle |
customers.send_sign_in_link | customers:write | Site giriş bağlantısı gönder |
customers.set_default_address | customers:write | Varsayılan adresi belirle |
customers.set_my_password | customers:write | Şifremi belirle |
customers.set_parent | customers:write | Bir şirkete bağla |
customers.sign_in_with_password | customers:write | Şifreyle giriş yap |
customers.sign_out | customers:write | Çıkış yap |
customers.update | customers:write | Müşteriyi düzenle |
customers.update_address | customers:write | Adresi düzenle |
customers.update_my_profile | customers:write | Bilgilerimi güncelle |
customers.verify_sign_in_code | customers:write | Kodla giriş yap |
customers.add_address
Adres ekle — Kişinin adres defterine bir teslimat veya fatura adresi koyar.
Gereken izin customers:write · veriyi değiştirir
https://app.getera.io/api/v1/addresses/actions/add_address- REST kısayolu:
POST /api/v1/addresses - Asıl adres:
POST /api/v1/actions/customers.add_address
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Müşteri · kimliği: customer |
label | string | Etiket · Ev, Ofis — seçicide görünen ad. · en çok 60 | |
firstName | string | Ad · en çok 256 | |
lastName | string | Soyad · en çok 256 | |
companyName | string | Şirket · en çok 256 | |
streetAddress1 | string | Sokak · en çok 256 | |
streetAddress2 | string | Sokak (satır 2) · en çok 256 | |
cityArea | string | İlçe · en çok 128 | |
city | string | Şehir · en çok 256 | |
countryArea | string | İl / eyalet · en çok 128 | |
postalCode | string | Posta kodu · en çok 20 | |
country | string | Ülke · ISO kodu, ör. TR. · en çok 2 | |
phone | phone | Telefon | |
raw | string | Adres (yazıldığı gibi) · Henüz kimsenin bölmediği bir adres ve adres yapısı tanımlı olmayan ülkeler için geçiş alanı. · en çok 2000 | |
validationSkipped | boolean | Doğrulanmadan kabul edildi | |
isDefaultShipping | boolean | Teslimat için varsayılan | |
isDefaultBilling | boolean | Fatura için varsayılan |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Kayıt bulunmalı. |
already_merged | Birleştirilmiş bir kayıt, kalan kaydı üzerinden düzenlenir. |
empty_address | İçi boş bir adres kayıt değildir. |
Yayımladığı olaylar: customers.address_changed
Neye yazar: address (insert) — Writes the address; customer_address (upsert) — Links it to the person
curl -X POST https://app.getera.io/api/v1/addresses/actions/add_address \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"CUSTOMER_ID"}'{
"ok": true,
"result": "…",
"events": [
"customers.address_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.addresses.create({
id: "CUSTOMER_ID"
})era addresses create \
--id "CUSTOMER_ID"{
"name": "era__customers__add_address",
"arguments": {
"id": "CUSTOMER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_merged, empty_address · 429 çok sık istek
customers.add_identity
Bu kişiyi tanımanın bir yolunu ekle — Bir müşteri için başka bir e-posta, telefon, alan adı veya harici anahtar kaydeder.
Gereken izin customers:write · veriyi değiştirir
https://app.getera.io/api/v1/customer_identities/actions/add_identity- Asıl adres:
POST /api/v1/actions/customers.add_identity
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Müşteri · kimliği: customer |
kind | string (enum) | evet | Tür · İzin verilen değerler: email, phone, domain, external, app_user, channel |
value | string | evet | Değer · en çok 320 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Kayıt bulunmalı. |
already_merged | Birleştirilmiş bir kayıt, kalan kaydı üzerinden düzenlenir. |
empty_identity | Değer boş olmamalı. |
identity_already_present | Kayıt bu anahtarı zaten taşımamalı. |
identity_taken | Başka birine ait bir anahtar düzenleme değil, birleştirmedir. |
Yayımladığı olaylar: customers.identity_changed
Neye yazar: customer_identity (insert) — Adds the key
curl -X POST https://app.getera.io/api/v1/customer_identities/actions/add_identity \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"CUSTOMER_ID","kind":"email","value":"Value"}'{
"ok": true,
"result": "…",
"events": [
"customers.identity_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.customerIdentities.addIdentity({
id: "CUSTOMER_ID",
kind: "email",
value: "Value"
})era customer_identities add_identity \
--id "CUSTOMER_ID" \
--kind "email" \
--value "Value"{
"name": "era__customers__add_identity",
"arguments": {
"id": "CUSTOMER_ID",
"kind": "email",
"value": "Value"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_merged, empty_identity, identity_already_present, identity_taken · 429 çok sık istek
customers.add_my_address
Hesabıma adres ekle — Giriş yapmış müşteri, kendi adres defterine bir teslimat veya fatura adresi kaydeder.
Gereken izin customers: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/addresses/actions/add_my_address- Asıl adres:
POST /api/v1/actions/customers.add_my_address
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
label | string | Etiket · en çok 60 | |
firstName | string | Ad · en çok 256 | |
lastName | string | Soyad · en çok 256 | |
streetAddress1 | string | Sokak · en çok 256 | |
streetAddress2 | string | Sokak (satır 2) · en çok 256 | |
cityArea | string | İlçe · en çok 128 | |
city | string | Şehir · en çok 256 | |
countryArea | string | İl · en çok 128 | |
postalCode | string | Posta kodu · en çok 20 | |
country | string | Ülke · en çok 2 | |
phone | phone | Telefon | |
isDefaultShipping | boolean | Teslimat için varsayılan | |
isDefaultBilling | boolean | Fatura için varsayılan |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
empty_address | Adreste en az sokak, şehir ya da posta kodu olmalı. |
Yayımladığı olaylar: customers.address_changed
Neye yazar: address (insert) — The address; customer_address (insert) — In their own book
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 empty_address · 429 çok sık istek
customers.archive
Müşteriyi arşivle — Hiçbir şeyi silmeden kaydı listelerden ve seçicilerden çıkarır.
Gereken izin customers:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/customers/{id}/actions/archive- REST kısayolu:
DELETE /api/v1/customers/{id} - Asıl adres:
POST /api/v1/actions/customers.archive
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Müşteri · kimliği: customer |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Kayıt bulunmalı. |
already_merged | Birleştirilmiş kayıt zaten kullanımdan çıktı. |
already_archived | Kayıt hâlâ aktif olmalı. |
Yayımladığı olaylar: customers.archived
Neye yazar: customer (update) — Stamps archived_at
curl -X POST https://app.getera.io/api/v1/customers/CUSTOMER_ID/actions/archive \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"customers.archived"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.customers.archive("CUSTOMER_ID")era customers archive CUSTOMER_ID{
"name": "era__customers__archive",
"arguments": {
"id": "CUSTOMER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_merged, already_archived · 429 çok sık istek
customers.capture
Müşteri ekle veya tanı — Bir e-posta veya telefon numarasını tek bir müşteri kaydına bağlar; yalnızca yeniyse oluşturur.
Gereken izin customers:write · veriyi değiştirir
https://app.getera.io/api/v1/customers/actions/capture- REST kısayolu:
POST /api/v1/customers - Asıl adres:
POST /api/v1/actions/customers.capture
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
name | string | evet | Ad · en çok 200 |
firstName | string | Ad · en çok 100 | |
lastName | string | Soyad · en çok 100 | |
phoneCountryCode | number | Ülke telefon kodu · en az 1 · en çok 9999 | |
country | string | Ülke · ISO kodu, ör. TR. · en çok 2 | |
locale | string | Dil · en çok 35 | |
email | E-posta | ||
phone | phone | Telefon | |
notes | string | Notlar · en çok 2000 | |
kind | string (enum) | Tür · İzin verilen değerler: person, company | |
identities | object / array | Diğer anahtarlar · E-posta ve telefon dışındaki anahtarlar: bir kanal kimliği, harici bir referans, bir şirket alan adı. |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
no_identity | Kişiyi tanımanın en az bir yolu gerekli. |
unknown_identity_kind | Her anahtar bilinen bir türde olmalı. |
Yayımladığı olaylar: customers.created, customers.recognised
Neye yazar: customer (upsert) — Creates the customer when the identity is new; customer_identity (upsert) — Records every way this person reaches you
curl -X POST https://app.getera.io/api/v1/customers/actions/capture \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name"}'{
"ok": true,
"result": "…",
"events": [
"customers.created",
"customers.recognised"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.customers.create({
name: "Name"
})era customers create \
--name "Name"{
"name": "era__customers__capture",
"arguments": {
"name": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 no_identity, unknown_identity_kind · 429 çok sık istek
customers.capture_site_guest
Web alıcısını tanı — Ödemenin iletişim adımı: giriş yapmış müşteri ya da e-postasıyla tanınan misafir; teslimat adresi bu siparişin kendi kopyası olarak yazılır.
Gereken izin customers: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/customers/actions/capture_site_guest- Asıl adres:
POST /api/v1/actions/customers.capture_site_guest
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
email | string | evet | E-posta · en çok 320 |
firstName | string | Ad · en çok 100 | |
lastName | string | Soyad · en çok 100 | |
phone | string | Telefon · en çok 40 | |
streetAddress1 | string | Sokak · en çok 256 | |
streetAddress2 | string | Sokak (satır 2) · en çok 256 | |
cityArea | string | İlçe · en çok 128 | |
city | string | Şehir · en çok 256 | |
countryArea | string | İl · en çok 128 | |
postalCode | string | Posta kodu · en çok 20 | |
country | string | Ülke · en çok 2 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
invalid_email | E-posta adresi geçerli olmalı. |
name_missing | Ad ve soyad girilmeli. |
Yayımladığı olaylar: customers.recognised, customers.created
Neye yazar: customer (insert) — A new guest, when the email is not known; address (insert) — The delivery address, as the order’s own copy
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_email, name_missing · 429 çok sık istek
customers.confirm_email_change
Yeni e-postamı onayla — Yeni gelen kutusuna gelen kod, site hesabını ve müşteri kaydını o adrese taşır.
Gereken izin customers:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır) · 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/customer_login_codes/actions/confirm_email_change- Asıl adres:
POST /api/v1/actions/customers.confirm_email_change
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
email | evet | Yeni e-posta | |
code | string | evet | Kod · en çok 12 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_signed_in | E-postanızı değiştirmek için giriş yapmış olmalısınız. |
login_disabled | İşletme bu hesabı kapattı. |
same_email | Yeni adres mevcut adresten farklı olmalı. |
email_taken | Bu adres bu arada başka bir hesap tarafından alındı. |
code_expired | Değişiklik kodu on dakika geçerlidir. |
Yayımladığı olaylar: customers.login_changed, customers.updated
Neye yazar: customer_login_code (update) — Counts the attempt or uses the code up; customer_login (update) — Moves the sign-in to the new address; customer (update) — Their record gets the new address
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_signed_in, login_disabled, same_email, email_taken, code_expired · 429 çok sık istek
customers.disable_login
Site hesabını kapat — Müşterinin web sitenize girişini durdurur ve tüm cihazlarda oturumunu kapatır. Kaydı ve geçmişi korunur.
Gereken izin customers:manage · 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/customer_logins/actions/disable_login- Asıl adres:
POST /api/v1/actions/customers.disable_login
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Müşteri · kimliği: customer |
reason | string | Neden · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Müşteri bulunmalı. |
no_login | Bu müşterinin site hesabı yok. |
already_disabled | Bu hesap zaten kapalı. |
Yayımladığı olaylar: customers.login_changed
Neye yazar: customer_login (update) — Switched off, with the reason; customer_session (update) — Every open session revoked
curl -X POST https://app.getera.io/api/v1/customer_logins/actions/disable_login \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"CUSTOMER_ID"}'{
"ok": true,
"result": "…",
"events": [
"customers.login_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.customerLogins.disableLogin({
id: "CUSTOMER_ID"
})era customer_logins disable_login \
--id "CUSTOMER_ID"{
"name": "era__customers__disable_login",
"arguments": {
"id": "CUSTOMER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, no_login, already_disabled · 429 çok sık istek
customers.enable_login
Site hesabını yeniden aç — Müşterinin web sitenize yeniden giriş yapmasına izin verir.
Gereken izin customers:manage · veriyi değiştirir
https://app.getera.io/api/v1/customer_logins/actions/enable_login- Asıl adres:
POST /api/v1/actions/customers.enable_login
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Müşteri · kimliği: customer |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Müşteri bulunmalı. |
no_login | Bu müşterinin site hesabı yok. |
not_disabled | Bu hesap zaten açık. |
Yayımladığı olaylar: customers.login_changed
Neye yazar: customer_login (update) — Switched back on
curl -X POST https://app.getera.io/api/v1/customer_logins/actions/enable_login \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"CUSTOMER_ID"}'{
"ok": true,
"result": "…",
"events": [
"customers.login_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.customerLogins.enableLogin({
id: "CUSTOMER_ID"
})era customer_logins enable_login \
--id "CUSTOMER_ID"{
"name": "era__customers__enable_login",
"arguments": {
"id": "CUSTOMER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, no_login, not_disabled · 429 çok sık istek
customers.export
Müşterileri dışa aktar — Filtrelenmiş hâliyle müşteri listesi; müşteriler ekranı bunu CSV veya Excel dosyasına dönüştürür.
Gereken izin customers:export · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)
https://app.getera.io/api/v1/actions/customers.exportGirdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
q | string | Ara · en çok 200 | |
kind | string (enum) | Tür · İzin verilen değerler: person, company | |
ids | object / array | Yalnızca bu müşteriler | |
excludeIds | object / array | Bu müşterileri hariç tut |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
invalid_filter | Dahil edilecek ya da hariç tutulacak müşteri listesi müşteri kimliklerinden oluşmalı. |
Yayımladığı olaylar: customers.exported
curl -X POST https://app.getera.io/api/v1/actions/customers.export \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"q":"Search"}'{
"ok": true,
"result": "…",
"events": [
"customers.exported"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.actions.run("customers.export", {
q: "Search"
})era run customers.export \
--q "Search"{
"name": "era__customers__export",
"arguments": {
"q": "Search"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:export izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_filter · 429 çok sık istek
customers.merge
İki müşteriyi birleştir — Bir kaydı diğerine katar; kimliklerini ve geçmişini taşır.
Gereken izin customers:manage · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/customers/{id}/actions/merge- Asıl adres:
POST /api/v1/actions/customers.merge
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
keepId | uuid | evet | Doldurulduğu yer: adresteki {id} · Tut · kimliği: customer |
mergeId | uuid | evet | Birleştirilip kaldırılacak · kimliği: customer |
resolved | object / array | Seçilen değerler · İki kayıt farklıysa, kalan kaydın tutacağı değer: name, firstName, lastName, email, phone, phoneCountryCode, country, locale, notes. |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | İki kayıt da bulunmalı. |
same_record | İki kayıt farklı olmalı. |
already_merged | Birleştirilen kayıt hâlâ etkin olmalı. |
keep_is_merged | Kalacak kayıt hâlâ etkin olmalı. |
company_has_members | Bir şirkete bağlı kişiler yalnızca o şirketle birlikte başka bir şirkete taşınabilir. |
Yayımladığı olaylar: customers.merged
Neye yazar: customer (update) — Tombstones the merged record and applies the chosen values; customer_identity (update) — Moves identities to the survivor; customer_address (update) — Moves the address book to the survivor
curl -X POST https://app.getera.io/api/v1/customers/CUSTOMER_ID/actions/merge \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"mergeId":"CUSTOMER_ID"}'{
"ok": true,
"result": "…",
"events": [
"customers.merged"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.customers.merge("CUSTOMER_ID", {
mergeId: "CUSTOMER_ID"
})era customers merge CUSTOMER_ID \
--merge-id "CUSTOMER_ID"{
"name": "era__customers__merge",
"arguments": {
"keepId": "CUSTOMER_ID",
"mergeId": "CUSTOMER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, same_record, already_merged, keep_is_merged, company_has_members · 429 çok sık istek
customers.remove_address
Adresi arşivle — Adresi, onu kullanan belgelere dokunmadan defterden çıkarır.
Gereken izin customers:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/addresses/{id}/actions/remove_address- Asıl adres:
POST /api/v1/actions/customers.remove_address
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
addressId | uuid | evet | Doldurulduğu yer: adresteki {id} · Adres · kimliği: address |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
address_not_found | Adres bulunmalı. |
address_is_snapshot | Belgedeki kopya belgeye aittir. |
already_archived | Adres hâlâ adres defterinde olmalı. |
Yayımladığı olaylar: customers.address_changed
Neye yazar: address (update) — Stamps archived_at; customer_address (update) — Clears the defaults
curl -X POST https://app.getera.io/api/v1/addresses/ADDRESSE_ID/actions/remove_address \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"customers.address_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.addresses.removeAddress("ADDRESSE_ID")era addresses remove_address ADDRESSE_ID{
"name": "era__customers__remove_address",
"arguments": {
"addressId": "ADDRESSE_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 address_not_found, address_is_snapshot, already_archived · 429 çok sık istek
customers.remove_identity
Bu kişiyi tanıma yolunu kaldır — Bir anahtarı bırakır; geriye kalan tek anahtar değilse.
Gereken izin customers:write · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/customer_identities/actions/remove_identity- Asıl adres:
POST /api/v1/actions/customers.remove_identity
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Müşteri · kimliği: customer |
kind | string (enum) | evet | Tür · İzin verilen değerler: email, phone, domain, external, app_user, channel |
value | string | evet | Değer · en çok 320 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Kayıt bulunmalı. |
already_merged | Birleştirilmiş bir kayıt, kalan kaydı üzerinden düzenlenir. |
identity_not_found | Anahtar bu kayıtta olmalı. |
last_identity | Bir kaydın tanınmanın en az bir yolu kalmalı. |
Yayımladığı olaylar: customers.identity_changed
Neye yazar: customer_identity (delete) — Removes the key
curl -X POST https://app.getera.io/api/v1/customer_identities/actions/remove_identity \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"CUSTOMER_ID","kind":"email","value":"Value"}'{
"ok": true,
"result": "…",
"events": [
"customers.identity_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.customerIdentities.removeIdentity({
id: "CUSTOMER_ID",
kind: "email",
value: "Value"
})era customer_identities remove_identity \
--id "CUSTOMER_ID" \
--kind "email" \
--value "Value"{
"name": "era__customers__remove_identity",
"arguments": {
"id": "CUSTOMER_ID",
"kind": "email",
"value": "Value"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_merged, identity_not_found, last_identity · 429 çok sık istek
customers.remove_my_address
Hesabımdan adresi kaldır — Giriş yapmış müşteri, kendi adres defterinden bir adresi çıkarır.
Gereken izin customers:write · siler ya da geri alınamaz · 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/addresses/{id}/actions/remove_my_address- Asıl adres:
POST /api/v1/actions/customers.remove_my_address
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
addressId | uuid | evet | Doldurulduğu yer: adresteki {id} · Adres · kimliği: address |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
address_not_on_customer | Bu adres adres defterinizde bulunamadı. |
Yayımladığı olaylar: customers.address_changed
Neye yazar: address (update) — Archived — orders that used it keep their copy; customer_address (update) — No longer a default
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 address_not_on_customer · 429 çok sık istek
customers.request_email_change
Giriş e-postamı değiştir — Giriş yapmış müşteri başka bir adresle giriş yapmak ister; adresin kendisine ait olduğunu kanıtlaması için o adrese bir kod gider.
Gereken izin customers:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır) · 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/customer_login_codes/actions/request_email_change- Asıl adres:
POST /api/v1/actions/customers.request_email_change
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
email | evet | Yeni e-posta | |
sourceIp | string | Gönderen adresi · en çok 64 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_signed_in | E-postanızı değiştirmek için giriş yapmış olmalısınız. |
login_disabled | İşletme bu hesabı kapattı. |
same_email | Yeni adres mevcut adresten farklı olmalı. |
email_taken | Bu adres başka bir hesap tarafından kullanılıyor. |
too_many_codes | Bir adrese saatte en fazla beş kod gönderilebilir. |
Yayımladığı olaylar: customers.sign_in_code_requested
Neye yazar: customer_login_code (insert) — Stores the hash of a ten-minute change code
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_signed_in, login_disabled, same_email, email_taken, too_many_codes · 429 çok sık istek
customers.request_sign_in_code
Giriş kodu gönder — Ziyaretçinin siteye girmek için yazacağı altı haneli bir kodu e-postayla gönderir; şifre gerekmez.
Gereken izin customers: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/customer_login_codes/actions/request_sign_in_code- Asıl adres:
POST /api/v1/actions/customers.request_sign_in_code
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
email | evet | E-posta | |
sourceIp | string | Gönderen adresi · en çok 64 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
login_disabled | İşletme bu hesabı kapattı. |
too_many_codes | Bir adrese saatte en fazla beş kod gönderilebilir. |
Yayımladığı olaylar: customers.sign_in_code_requested
Neye yazar: customer_login_code (insert) — Stores the hash of a ten-minute code
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 login_disabled, too_many_codes · 429 çok sık istek
customers.restore
Müşteriyi geri yükle — Arşivlenmiş bir kaydı geri getirir.
Gereken izin customers:delete · veriyi değiştirir
https://app.getera.io/api/v1/customers/{id}/actions/restore- Asıl adres:
POST /api/v1/actions/customers.restore
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Müşteri · kimliği: customer |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Kayıt bulunmalı. |
already_merged | Birleştirilmiş bir kayıt, kalan kaydı üzerinden geri yüklenir. |
not_archived | Kayıt arşivlenmiş olmalı. |
Yayımladığı olaylar: customers.restored
Neye yazar: customer (update) — Clears archived_at
curl -X POST https://app.getera.io/api/v1/customers/CUSTOMER_ID/actions/restore \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"customers.restored"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.customers.restore("CUSTOMER_ID")era customers restore CUSTOMER_ID{
"name": "era__customers__restore",
"arguments": {
"id": "CUSTOMER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_merged, not_archived · 429 çok sık istek
customers.send_sign_in_link
Site giriş bağlantısı gönder — Müşteriye web sitenize giriş yapması için bir bağlantı e-postayla gönderir; ilk seferde ya da giriş yapamadığında. Kendi kodunu orada alır.
Gereken izin customers:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)
https://app.getera.io/api/v1/actions/customers.send_sign_in_linkGirdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Müşteri · kimliği: customer |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Müşteri bulunmalı. |
already_merged | Birleştirilmiş bir kayıt üzerinde değil, birleştiği kayıt üzerinde işlem yapılır. |
no_email | Müşterinin bir e-posta adresi olmalı. |
login_disabled | Kapalı bir hesaba, yeniden açılana kadar bağlantı gönderilmez. |
Yayımladığı olaylar: customers.sign_in_link_sent
curl -X POST https://app.getera.io/api/v1/actions/customers.send_sign_in_link \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"CUSTOMER_ID"}'{
"ok": true,
"result": "…",
"events": [
"customers.sign_in_link_sent"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.actions.run("customers.send_sign_in_link", {
id: "CUSTOMER_ID"
})era run customers.send_sign_in_link \
--id "CUSTOMER_ID"{
"name": "era__customers__send_sign_in_link",
"arguments": {
"id": "CUSTOMER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_merged, no_email, login_disabled · 429 çok sık istek
customers.set_default_address
Varsayılan adresi belirle — Aksi söylenmedikçe teslimat veya fatura için hangi adresin kullanılacağı.
Gereken izin customers:write · veriyi değiştirir
https://app.getera.io/api/v1/customer_addresses/actions/set_default_address- Asıl adres:
POST /api/v1/actions/customers.set_default_address
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Müşteri · kimliği: customer |
addressId | uuid | evet | Adres · kimliği: address |
shipping | boolean | Teslimat için varsayılan | |
billing | boolean | Fatura için varsayılan |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Kayıt bulunmalı. |
already_merged | Birleştirilmiş bir kayıt, kalan kaydı üzerinden düzenlenir. |
address_not_on_customer | Adres bu kişinin adres defterinde olmalı. |
address_archived | Arşivlenmiş bir adres varsayılan olamaz. |
nothing_to_set | Hangi varsayılanın kastedildiğini belirtin. |
Yayımladığı olaylar: customers.address_default_changed
Neye yazar: customer_address (update) — Moves the default
curl -X POST https://app.getera.io/api/v1/customer_addresses/actions/set_default_address \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"CUSTOMER_ID","addressId":"ADDRESS_ID"}'{
"ok": true,
"result": "…",
"events": [
"customers.address_default_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.customerAddresses.setDefaultAddress({
id: "CUSTOMER_ID",
addressId: "ADDRESS_ID"
})era customer_addresses set_default_address \
--id "CUSTOMER_ID" \
--address-id "ADDRESS_ID"{
"name": "era__customers__set_default_address",
"arguments": {
"id": "CUSTOMER_ID",
"addressId": "ADDRESS_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_merged, address_not_on_customer, address_archived, nothing_to_set · 429 çok sık istek
customers.set_my_password
Şifremi belirle — Giriş yapmış müşteri, site hesabının şifresini belirler veya değiştirir.
Gereken izin customers: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/customer_logins/actions/set_my_password- Asıl adres:
POST /api/v1/actions/customers.set_my_password
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
password | string | evet | Yeni şifre · en çok 200 |
currentPassword | string | Mevcut şifre · en çok 200 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_signed_in | Şifrenizi değiştirmek için giriş yapmış olmalısınız. |
password_too_short | Şifre en az sekiz karakter olmalı. |
wrong_password | Şifreyi değiştirmek için mevcut şifre doğru girilmeli. |
Yayımladığı olaylar: customers.login_changed
Neye yazar: customer_login (update) — Stores the scrypt hash of the password
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_signed_in, password_too_short, wrong_password · 429 çok sık istek
customers.set_parent
Bir şirkete bağla — Bu kişinin hangi şirkete ait olduğunu belirtir ya da bağlantıyı kaldırır.
Gereken izin customers:write · veriyi değiştirir
https://app.getera.io/api/v1/customers/{id}/actions/set_parent- Asıl adres:
POST /api/v1/actions/customers.set_parent
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Müşteri · kimliği: customer |
parentId | uuid | Şirket · kimliği: customer |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | İki kayıt da bulunmalı. |
already_merged | Birleştirilmiş bir kayıt, kalan kaydı üzerinden düzenlenir. |
self_parent | Bir kayıt kendine ait olamaz. |
parent_not_a_company | Yalnızca bir şirkete kişi bağlanabilir. |
parent_cycle | İki şirket birbirini içeremez. |
Yayımladığı olaylar: customers.parent_changed
Neye yazar: customer (update) — Sets the company link
curl -X POST https://app.getera.io/api/v1/customers/CUSTOMER_ID/actions/set_parent \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"parentId":"CUSTOMER_ID"}'{
"ok": true,
"result": "…",
"events": [
"customers.parent_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.customers.setParent("CUSTOMER_ID", {
parentId: "CUSTOMER_ID"
})era customers set_parent CUSTOMER_ID \
--parent-id "CUSTOMER_ID"{
"name": "era__customers__set_parent",
"arguments": {
"id": "CUSTOMER_ID",
"parentId": "CUSTOMER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_merged, self_parent, parent_not_a_company, parent_cycle · 429 çok sık istek
customers.sign_in_with_password
Şifreyle giriş yap — Müşteriyi hesabında belirlediği şifreyle siteye giriş yaptırır.
Gereken izin customers: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/customer_logins/actions/sign_in_with_password- Asıl adres:
POST /api/v1/actions/customers.sign_in_with_password
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
email | evet | E-posta | |
password | string | evet | Şifre · en çok 200 |
sourceIp | string | Gönderen adresi · en çok 64 | |
userAgent | string | Tarayıcı · en çok 400 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
wrong_credentials | E-posta veya şifre hatalı. |
login_disabled | İşletme bu hesabı kapattı. |
Yayımladığı olaylar: customers.signed_in
Neye yazar: customer_session (insert) — A thirty-day site session; customer_login (update) — Last sign-in
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 wrong_credentials, login_disabled · 429 çok sık istek
customers.sign_out
Çıkış yap — Müşterinin bu cihazdaki site oturumunu kapatır.
Gereken izin customers: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/actions/customers.sign_outGirdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
sessionId | uuid | evet | Oturum |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
session_not_found | Bu oturum bulunamadı ya da zaten kapanmış. |
Yayımladığı olaylar: customers.signed_out
Neye yazar: customer_session (update) — Revoked
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 session_not_found · 429 çok sık istek
customers.update
Müşteriyi düzenle — Kişinin bilgilerini değiştirir ve sistemin geri kalanına bildirir.
Gereken izin customers:write · veriyi değiştirir
https://app.getera.io/api/v1/customers/{id}/actions/update- REST kısayolu:
PATCH /api/v1/customers/{id} - Asıl adres:
POST /api/v1/actions/customers.update
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Müşteri · kimliği: customer |
name | string | Ad · en çok 200 | |
firstName | string | Ad · en çok 100 | |
lastName | string | Soyad · en çok 100 | |
phoneCountryCode | number | Ülke telefon kodu · en az 1 · en çok 9999 | |
country | string | Ülke · ISO kodu, ör. TR. · en çok 2 | |
locale | string | Dil · en çok 35 | |
email | E-posta | ||
phone | phone | Telefon | |
notes | string | Notlar · en çok 2000 | |
kind | string (enum) | Tür · İzin verilen değerler: person, company |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Kayıt bulunmalı. |
already_merged | Birleştirilmiş bir kayıt, kalan kaydı üzerinden düzenlenir. |
company_has_members | Kişi bağlı bir şirket kişiye dönüşemez. |
Yayımladığı olaylar: customers.updated
Neye yazar: customer (update) — Updates the record
curl -X POST https://app.getera.io/api/v1/customers/CUSTOMER_ID/actions/update \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name"}'{
"ok": true,
"result": "…",
"events": [
"customers.updated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.customers.update("CUSTOMER_ID", {
name: "Name"
})era customers update CUSTOMER_ID \
--name "Name"{
"name": "era__customers__update",
"arguments": {
"id": "CUSTOMER_ID",
"name": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_merged, company_has_members · 429 çok sık istek
customers.update_address
Adresi düzenle — Defterdeki bir adresi değiştirir. Bir belgede dondurulmuş kopya değişmez.
Gereken izin customers:write · veriyi değiştirir
https://app.getera.io/api/v1/addresses/{id}/actions/update_address- Asıl adres:
POST /api/v1/actions/customers.update_address
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
addressId | uuid | evet | Doldurulduğu yer: adresteki {id} · Adres · kimliği: address |
label | string | Etiket · en çok 60 | |
firstName | string | Ad · en çok 256 | |
lastName | string | Soyad · en çok 256 | |
companyName | string | Şirket · en çok 256 | |
streetAddress1 | string | Sokak · en çok 256 | |
streetAddress2 | string | Sokak (satır 2) · en çok 256 | |
cityArea | string | İlçe · en çok 128 | |
city | string | Şehir · en çok 256 | |
countryArea | string | İl / eyalet · en çok 128 | |
postalCode | string | Posta kodu · en çok 20 | |
country | string | Ülke · ISO kodu, ör. TR. · en çok 2 | |
phone | phone | Telefon | |
raw | string | Adres (yazıldığı gibi) · Henüz kimsenin bölmediği bir adres ve adres yapısı tanımlı olmayan ülkeler için geçiş alanı. · en çok 2000 | |
validationSkipped | boolean | Doğrulanmadan kabul edildi |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
address_not_found | Adres bulunmalı. |
address_is_snapshot | Bir belgedeki adres kopyası asla değişmez. |
empty_address | İçi boş bir adres kayıt değildir. |
Yayımladığı olaylar: customers.address_changed
Neye yazar: address (update) — Updates the address; customer_address (update) — Updates its label
curl -X POST https://app.getera.io/api/v1/addresses/ADDRESSE_ID/actions/update_address \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"label":"Label"}'{
"ok": true,
"result": "…",
"events": [
"customers.address_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.addresses.updateAddress("ADDRESSE_ID", {
label: "Label"
})era addresses update_address ADDRESSE_ID \
--label "Label"{
"name": "era__customers__update_address",
"arguments": {
"addressId": "ADDRESSE_ID",
"label": "Label"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 address_not_found, address_is_snapshot, empty_address · 429 çok sık istek
customers.update_my_profile
Bilgilerimi güncelle — Giriş yapmış müşteri kendi adını, telefonunu ve dilini düzeltir.
Gereken izin customers: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/customers/actions/update_my_profile- Asıl adres:
POST /api/v1/actions/customers.update_my_profile
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
firstName | string | Ad · en çok 100 | |
lastName | string | Soyad · en çok 100 | |
phone | phone | Telefon | |
locale | string | Dil · en çok 35 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
name_required | Ad boş bırakılamaz. |
Yayımladığı olaylar: customers.updated
Neye yazar: customer (update) — Their own record
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 name_required · 429 çok sık istek
customers.verify_sign_in_code
Kodla giriş yap — E-postayla gelen kodu doğrular ve ziyaretçiyi içeri alır; ilk seferde hesabını açar ve işletmenin zaten tanıdığı müşteriye bağlar.
Gereken izin customers: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/customer_logins/actions/verify_sign_in_code- Asıl adres:
POST /api/v1/actions/customers.verify_sign_in_code
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
email | evet | E-posta | |
code | string | evet | Kod · en çok 12 |
name | string | Ad · en çok 200 | |
acceptTerms | boolean | Gizlilik bildirimini kabul etti | |
sourceIp | string | Gönderen adresi · en çok 64 | |
userAgent | string | Tarayıcı · en çok 400 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
code_expired | Kod yalnızca bir kez ve on dakika içinde kullanılabilir. |
login_disabled | İşletme bu hesabı kapattı. |
Yayımladığı olaylar: customers.signed_in, customers.sign_in_failed, customers.login_created, customers.created, customers.recognised
Neye yazar: customer_login_code (update) — Counts the attempt or uses the code up; customer_login (upsert) — Makes the login the first time; marks the email verified; customer (insert) — A new customer when nobody with this email is known; customer_identity (insert) — The email, as a way of recognising them; customer_session (insert) — A thirty-day site session
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde customers:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 code_expired, login_disabled · 429 çok sık istek
Veri modelleri
Address
Tablo address · Kaynak addresses
GET /api/v1/addressesGET /api/v1/addresses/{id}POST /api/v1/addresses→customers.add_address
| 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 | ||
first_name | string · text | evet | ||
last_name | string · text | evet | ||
company_name | string · text | evet | ||
street_address_1 | string · text | evet | ||
street_address_2 | string · text | evet | ||
city_area | string · text | evet | ||
city | string · text | evet | ||
country_area | string · text | evet | ||
postal_code | string · text | evet | ||
country | string · bpchar | evet | en çok 2 | |
phone | string · text | evet | ||
raw | string · text | evet | ||
validation_skipped | boolean · bool | |||
is_snapshot | boolean · bool | |||
archived_at | string (date-time) · timestamptz | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK ((COALESCE(street_address_1, city, postal_code, raw, company_name) IS NOT NULL))CHECK ((NOT (is_snapshot AND (archived_at IS NOT NULL))))
CustomerAddress
Tablo customer_address · Kaynak customer_addresses
GET /api/v1/customer_addressesGET /api/v1/customer_addresses/{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 | customer | ||
address_id | string (uuid) · uuid | address | ||
is_default_shipping | boolean · bool | |||
is_default_billing | boolean · bool | |||
label | string · text | evet | ||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: customer_id, address_id
CustomerIdentity
Tablo customer_identity · Kaynak customer_identities
GET /api/v1/customer_identitiesGET /api/v1/customer_identities/{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 | customer | ||
kind | string · text | email, phone, domain, external, app_user, channel | ||
value | string · text | |||
source | string · text | |||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK (( CASE kind WHEN 'email'::text THEN (value = lower(value)) WHEN 'domain'::text THEN (value = lower(value)) ELSE true END AND (value = btrim(value)) AND (length(value) > 0)))
CustomerLoginCode
Tablo customer_login_code · Kaynak customer_login_codes
GET /api/v1/customer_login_codesGET /api/v1/customer_login_codes/{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 | evet | site | |
login_id | string (uuid) · uuid | evet | customer_login | |
channel | string · text | email, sms | ||
destination | string · text | |||
attempts | integer · int4 | |||
expires_at | string (date-time) · timestamptz | |||
consumed_at | string (date-time) · timestamptz | evet | ||
source_ip | string · text | evet | ||
created_at | string (date-time) · timestamptz | |||
purpose | string · text | sign_in, email_change |
Birincil anahtar: id
CustomerLogin
Tablo customer_login · Kaynak customer_logins
GET /api/v1/customer_loginsGET /api/v1/customer_logins/{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 | customer | ||
email | string · text | evet | ||
phone | string · text | evet | ||
email_verified_at | string (date-time) · timestamptz | evet | ||
phone_verified_at | string (date-time) · timestamptz | evet | ||
terms_accepted_at | string (date-time) · timestamptz | evet | ||
disabled_at | string (date-time) · timestamptz | evet | ||
disabled_reason | string · text | evet | ||
last_sign_in_at | string (date-time) · timestamptz | evet | ||
sign_in_count | integer · int4 | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK (((email IS NOT NULL) OR (phone IS NOT NULL)))CHECK (((email IS NULL) OR ((email = lower(btrim(email))) AND (POSITION(('@'::text) IN (email)) > 1))))CHECK (((disabled_reason IS NULL) OR (length(disabled_reason) <= 500)))
Customer
Tablo customer · Kaynak customers
GET /api/v1/customersGET /api/v1/customers/{id}POST /api/v1/customers→customers.capturePATCH /api/v1/customers/{id}→customers.updateDELETE /api/v1/customers/{id}→customers.archive
| 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 | ||
kind | string · text | person, company | ||
name | string · text | |||
email | string · text | evet | ||
phone | string · text | evet | ||
notes | string · text | evet | ||
owner_user_id | string (uuid) · uuid | evet | app_user | |
merged_into_id | string (uuid) · uuid | evet | customer | |
archived_at | string (date-time) · timestamptz | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
first_name | string · text | evet | ||
last_name | string · text | evet | ||
phone_country_code | integer · int2 | evet | ||
country | string · bpchar | evet | en çok 2 | |
parent_customer_id | string (uuid) · uuid | evet | customer | |
locale | string · text | evet | ||
avatar_file_id | string (uuid) · uuid | evet | file | |
anonymized_at | string (date-time) · timestamptz | evet |
Birincil anahtar: id
Olaylar
İş akışları ve webhook'lar bu olaylara tepki verir.
| Olay | Ne olur | Taşıdığı alanlar |
|---|---|---|
customers.address_changed | Bir adres eklendi, düzenlendi ya da arşivlendi. | id, addressId, added |
customers.address_default_changed | Varsayılan teslimat ya da fatura adresi değişti. | id, addressId, shipping, billing |
customers.archived | Bir müşteri kullanımdan kaldırıldı. | id |
customers.created | Yeni bir müşteri eklendi. | id, name |
customers.exported | Müşteri listesi dosya olarak indirildi. | count, truncated |
customers.identity_changed | Bir müşterinin tanımlayıcı bilgilerinden biri eklendi ya da kaldırıldı. | id, kind, added, removed |
customers.login_changed | Bir site hesabı kapatıldı ya da açıldı veya şifresi değişti. | id, customerId, change |
customers.login_created | Bir müşteri sitede hesap açtı. | id, customerId, recognised |
customers.merged | İki kayıt tek kayıtta birleştirildi. | id, mergedId |
customers.parent_changed | Biri bir şirkete bağlandı ya da şirketten ayrıldı. | id, parentId |
customers.recognised | Gelen biri mevcut bir müşteriyle eşleşti. | id |
customers.restored | Arşivlenmiş bir müşteri geri getirildi. | id |
customers.sign_in_code_requested | Siteye giriş kodu gönderildi. | loginId, codeId |
customers.sign_in_failed | Yanlış giriş kodu yazıldı. | codeId, burnt |
customers.sign_in_link_sent | Bir ekip üyesi müşteriye siteye giriş bağlantısını e-postayla gönderdi. | id, loginId |
customers.signed_in | Bir müşteri siteye giriş yaptı. | loginId, customerId, method |
customers.signed_out | Bir müşteri siteden çıkış yaptı. | customerId, sessionId |
customers.updated | Bir müşterinin bilgileri değişti. | id, name |