Ana içeriğe geç

E-posta ve parola değişiklikleri

Bir hesabın e-posta adresini veya parolasını değiştirmek birkaç adım sürer. TEBHOS bir bilet açar, bir doğrulama kodunu e-postayla gönderir ve sonraki her adım bu bileti o ana kadar toplanan kodlar ve kanıtlarla birlikte gönderir. Adresi posta sağlayıcısı tarafından reddedilmiş bir hesap bunun yerine geri dönen e-posta kurtarma akışını kullanır.

Bu sayfadaki tüm yollar yalnızca kullanıcıya yöneliktir. Kullanıcı oturumu token'ı (Authorization: Bearer <token>) gerektirirler. Geçerli bir Bot <token> kimlik bilgisi 403 ACCESS_DENIED ile reddedilir.

Sıradan e-posta değişikliği ve parola değişikliği /auth altında bulunur. Geri dönen e-posta kurtarma /users/@me/email-change/bounced altında bulunur. TEBHOS web istemcisinin kullandığı yollar bunlardır.

Kısmi /users/@me takma adları

TEBHOS ayrıca POST /users/@me/email-change/start, /users/@me/email-change/resend-original, /users/@me/email-change/resend-new, /users/@me/email-change/verify-new ve /users/@me/password-change/resend yollarını da yanıtlar. Bu yollar biletlerini /auth yollarından ayrı bir depoda tutar. Özgün adresi doğrulamak, yeni adres istemek, e-posta token'ı uygulamak ya da parola değişikliğini başlatmak, doğrulamak veya tamamlamak için bir /users/@me yolu yoktur. Bir ailede açılan bilet diğerinde tamamlanamaz; bu yüzden ikisini karıştırmayın. Aşağıda belgelenen /auth yollarını kullanın.

Bilet ve kod sözleşmesi

Bilet tanımlayıcısı, 4. sürüm bir UUID'dir. TEBHOS onu akış başladığında üretir ve sonraki her adım onu düz bir dize olarak geri gönderir. Bilet, onu açan hesaba aittir. Başka bir hesaba ait, bilinmeyen veya süresi dolmuş bir bilet 400 BAD_REQUEST ile başarısız olur. Akışı yeniden başlatmak yeni bir bilet üretir ve önceki bileti süresi dolana kadar kullanılabilir bırakır.

Doğrulama kodu, büyük harf Latin alfabesinden ve ondalık rakamlardan oluşan sekiz karakterdir; kısa çizgiyle ayrılmış dörder karakterlik iki grup olarak yazılır, örneğin 7KQ2-M9XD. Her kod gönderildiği andan itibaren 10 dakika geçerlidir ve her yeniden gönderim önceki kodun yerine geçer. TEBHOS gönderilen kodun başındaki ve sonundaki boşlukları kırpar ve kalanı birebir karşılaştırır.

Küçük harfli kod hiçbir zaman eşleşmez

Serbest biçimli girdi kabul eden bir istemci, kodu göndermeden önce değeri büyük harfe çevirir ve kısa çizgiyi korur.

Kanıt, TEBHOS'un bilet hakkında bir olguyu doğrulayan her adımdan döndürdüğü 4. sürüm bir UUID'dir. E-posta değişikliği akışı özgün adres için original_proof üretir ve bunu Yeni e-posta iste ile E-posta değişikliğini tamamla adımlarında ister. Parola değişikliği akışı e-postayla gönderilen kod için verification_proof üretir ve bunu Parola değişikliğini tamamla adımında ister. Bir kanıt 10 dakika geçerlidir. Aynı kodu yeniden doğrulamak yeni bir kanıt üretir ve öncekini geçersiz kılar.

TEBHOS, aynı kodun önceki gönderiminden sonraki 30 saniye boyunca yeniden gönderimi reddeder. Ret, bir sonraki gönderime izin verilene kadar kalan saniyeleri sayan bir Retry-After başlığıyla birlikte HTTP 429 RATE_LIMITED şeklindedir. Bu bekleme süresi, yol kovalarından ve aşağıdaki e-posta gönderim denetimlerinden ayrıdır.

Biletler, kodlar ve kanıtlar kimlik bilgisidir

Bu değerlerin her biri güvenlik açısından hassas bir hesap değişikliğini ilerletebilir. Onları günlüklerin, analitiğin, URL'lerin ve istenmeyen alıcılara giden mesajların dışında tutun. Opak değerlerdir; birebir koruyun ve içeriklerinden hiçbir şey türetmeyin.

Hatalar

TEBHOS bu akışlardaki hataları genel amaçlı kodlarla bildirir. message alanı insan tarafından okunabilir Türkçe bir cümledir; bu yüzden dallanmayı mesaj metnine göre değil, her zaman HTTP durumuna ve code değerine göre yapın.

Durum code Koşul
400 BAD_REQUEST Bilet bilinmiyor, süresi dolmuş, zaten tamamlanmış veya başka bir hesaba ait; kod ya da kanıt eşleşmiyor; kod hiç gönderilmemiş
400 INVALID_FORM_BODY Bir alan doğrulamadan geçemiyor; örneğin hatalı biçimli bir adres veya 8-256 karakter aralığı dışında bir parola
403 FORBIDDEN Geri dönen e-posta kurtarma yolu, geri dönmüş olarak işaretlenmemiş bir hesap tarafından çağrıldı
409 CONFLICT İstenen adres zaten bir hesaba ait
429 RATE_LIMITED Bir yol kovası, bir e-posta gönderim denetimi veya 30 saniyelik yeniden gönderim bekleme süresi isteği reddetti

TEBHOS'ta desteklenmez

Bu yollarda INVALID_VERIFICATION_CODE, VERIFICATION_CODE_EXPIRED, TICKET_ALREADY_COMPLETED veya EMAIL_ALREADY_IN_USE gibi ayrıntılı kodlar ve alan başına yollar içeren bir errors dizisi yoktur.

E-posta gönderim denetimleri

E-posta gönderen her işlem kendi yol kovasından ve bundan ayrı olarak hesabın 15 dakikalık e-posta gönderim denetiminden düşülür. Herhangi birinin tükenmesi, diğerinde yer olsa bile HTTP 429 üretir.

Denetim Hak İşlemler
Özgün adres 15 dakikada 3 gönderim E-posta değişikliğini başlat (yalnızca kod gönderildiğinde) ve Özgün e-posta kodunu yeniden gönder
Yeni adres 15 dakikada 5 gönderim Yeni e-posta iste ve Yeni e-posta kodunu yeniden gönder
Parola değişikliği başlatma 15 dakikada 3 gönderim Parola değişikliğini başlat
Parola değişikliği yeniden gönderim 15 dakikada 3 gönderim Parola değişikliği kodunu yeniden gönder
Geri dönen e-posta kurtarma 15 dakikada 5 gönderim Geri dönen adres için yedek e-posta iste ve Yedek e-posta kodunu yeniden gönder

E-posta değişikliği akışı

E-posta değişikliği en fazla dört adım sürer.

Adım İşlem Sonuç
1 E-posta değişikliğini başlat Bir bilet; mevcut adres doğrulanmışsa o adrese gönderilen bir kod
2 Özgün e-postayı doğrula original_proof. Başlatma yanıtı zaten bir kanıt taşıyorsa atlanır
3 Yeni e-posta iste Yeni adrese gönderilen bir kod
4 E-posta değişikliğini tamamla Yeni adres hesaba yazılır

Özgün adres doğrulaması yalnızca hesapta doğrulanmış bir e-posta adresi varsa uygulanır. Diğer tüm hesaplar için E-posta değişikliğini başlat doğrudan original_proof döndürür ve istemci 2. adımı atlar.

E-posta değişikliği başlatma nesnesi

Yeni oluşturulmuş bir e-posta değişikliği biletinin durumu.

Yapı

Alan Tür Açıklama
ticket string Bu akışın sonraki her adımının gönderdiği tanımlayıcı
require_original boolean Yeni adres istenebilmeden önce özgün adresin doğrulanması gerekip gerekmediği. Yalnızca hesapta doğrulanmış bir e-posta adresi varsa true olur
original_email ?string Hesaptaki adres; hesabın adresi yoksa null
original_proof ?string Özgün adres aşamasının kanıtı. Tam olarak require_original false olduğunda ayarlanır, aksi hâlde null
original_code_expires_at ?ISO8601 zaman damgası Özgün adrese gönderilen kodun süresinin dolduğu an; gönderimden 10 dakika sonra. require_original false ise null
resend_available_at ?ISO8601 zaman damgası Özgün adres kodunun en erken yeniden gönderilebileceği an; gönderimden 30 saniye sonra. require_original false ise null

Örnek

{
  "ticket": "6f1a4c9e-3d52-4a77-9b0e-2c8f5d41ab30",
  "require_original": true,
  "original_email": "[email protected]",
  "original_proof": null,
  "original_code_expires_at": "2026-03-04T18:10:00+00:00",
  "resend_available_at": "2026-03-04T18:00:30+00:00"
}

Yeni e-posta isteği nesnesi

Yeni bir adresin bağlandığı ve o adrese bir kod gönderilmiş bir biletin durumu.

Yapı

Alan Tür Açıklama
ticket string İstekte adı geçen bilet. Geri dönen adres için yedek e-posta iste işleminde, o işlemin oluşturduğu bilettir
new_email string Artık bilete bağlı olan adres
new_code_expires_at ISO8601 zaman damgası Yeni adrese gönderilen kodun süresinin dolduğu an; gönderimden 10 dakika sonra
resend_available_at ISO8601 zaman damgası Kodun en erken yeniden gönderilebileceği an; gönderimden 30 saniye sonra

Özgün e-posta doğrulama nesnesi

Yapı

Alan Tür Açıklama
original_proof string Yeni e-posta iste ve E-posta değişikliğini tamamla adımlarının istediği kanıt

E-posta değişikliği tamamlama nesnesi

Yapı

Alan Tür Açıklama
message string İnsan tarafından okunabilir bir onay
email string Artık hesapta saklanan adres

Parola değişikliği başlatma nesnesi

Yeni oluşturulmuş bir parola değişikliği biletinin durumu.

Yapı

Alan Tür Açıklama
ticket string Bu akışın sonraki her adımının gönderdiği tanımlayıcı
code_expires_at ISO8601 zaman damgası E-postayla gönderilen kodun süresinin dolduğu an; gönderimden 10 dakika sonra
resend_available_at ISO8601 zaman damgası Kodun en erken yeniden gönderilebileceği an; gönderimden 30 saniye sonra

Parola doğrulama nesnesi

Yapı

Alan Tür Açıklama
verification_proof string Parola değişikliğini tamamla adımının tükettiği kanıt

Parola değişikliği tamamlama nesnesi

Parola değişikliğini tamamla adımının parola yazıldıktan sonra döndürdüğü yeni oturum.

Yapı

Alan Tür Açıklama
token string Yeni oturumun oturum token'ı. İsteğin kimlik doğrulamasında kullanılan token çalışmayı bırakır; bu yüzden sonraki her isteği bu değerle gönderin
auth_session_id_hash string Yeni oturumun onaltılık (hex) kodlanmış hash'i

E-posta değişikliğini başlat

POST /auth/email-change/start

Bir e-posta değişikliği bileti oluşturur. Başarılı olursa bir e-posta değişikliği başlatma nesnesi döndürür.

Hesapta doğrulanmış bir e-posta adresi varsa TEBHOS bileti özgün-adres-bekleniyor aşamasında oluşturur ve o adrese bir doğrulama kodu gönderir. Aksi hâlde bileti original_proof önceden üretilmiş olarak oluşturur ve hiçbir şey göndermez.

JSON gövdesi

Boş bir nesne ({}) gönderin. TEBHOS hiçbir alanı okumaz.

Yanıt

Durum Gövde Koşul
200 e-posta değişikliği başlatma nesnesi Bilet oluşturuldu

Hız sınırı

Kod gönderildiğinde, user:email_change:start kovasında kimliği doğrulanmış her kullanıcı için dakikada 10 istek, artı özgün adres denetimi. Özgün aşamayı atlayan bir bilete hız sınırı uygulanmaz.

Özgün e-posta kodunu yeniden gönder

POST /auth/email-change/resend-original

Hâlâ özgün-adres-bekleniyor aşamasındaki bir bilet için hesabın mevcut adresine yeni bir doğrulama kodu gönderir. Boş gövdeyle 204 döndürür.

Özgün aşamayı atlamış bir biletin özgün kodu yoktur; bu yüzden bu işlem böyle bir bilette 400 BAD_REQUEST ile başarısız olur.

JSON gövdesi

Alan Tür Açıklama
ticket string E-posta değişikliğini başlat tarafından döndürülen tanımlayıcı

Yanıt

Durum Gövde Koşul
204 boş Yeni bir kod gönderildi ve önceki kod çalışmayı bıraktı

Hız sınırı

user:email_change:resend_original kovasında kimliği doğrulanmış her kullanıcı için dakikada 10 istek, artı özgün adres denetimi ve 30 saniyelik bekleme süresi.

Özgün e-postayı doğrula

POST /auth/email-change/verify-original

Mevcut adrese gönderilen kodu denetler. Başarılı olursa bir özgün e-posta doğrulama nesnesi döndürür.

Kod süresi dolana kadar geçerli kalır; bu yüzden yeniden doğrulamak başarılı olur ve öncekinin yerine geçen yeni bir kanıt üretir.

JSON gövdesi

Alan Tür Açıklama
ticket string E-posta değişikliğini başlat tarafından döndürülen tanımlayıcı
code string Mevcut adrese gönderilen kod

Yanıt

Durum Gövde Koşul
200 özgün e-posta doğrulama nesnesi Özgün adres doğrulandı
400 hata yanıtı Bilet veya kod reddedildi

Hız sınırı

user:email_change:verify_original kovasında kimliği doğrulanmış her kullanıcı için dakikada 20 istek.

Yeni e-posta iste

POST /auth/email-change/request-new

Bilete yeni bir adres bağlar ve o adrese bir doğrulama kodu gönderir. Başarılı olursa bir yeni e-posta isteği nesnesi döndürür.

TEBHOS adresi kırpar ve küçük harfe çevirir, ardından sırayla denetler:

  • @ içermeyen, 6 karakterden kısa veya 254 karakterden uzun bir adres 400 INVALID_FORM_BODY ile başarısız olur.
  • Herhangi bir hesabın zaten sahip olduğu bir adres, çağıranın kendi mevcut adresi dahil, 409 CONFLICT ile başarısız olur.

İstek adresi rezerve etmez. Sahiplik E-posta değişikliğini tamamla adımında yeniden denetlenir. Bu işlemi farklı bir adresle yeniden çağırmak, 30 saniyelik bekleme süresine tabi olarak aynı bilet üzerindeki bekleyen adresin yerine geçer.

JSON gövdesi

Alan Tür Açıklama
ticket string E-posta değişikliğini başlat tarafından döndürülen tanımlayıcı
original_proof string E-posta değişikliğini başlat veya Özgün e-postayı doğrula adımından gelen kanıt
new_email string Bilete bağlanacak adres (6-254 karakter)

Yanıt

Durum Gövde Koşul
200 yeni e-posta isteği nesnesi Adres bağlandı ve bir kod gönderildi
400 hata yanıtı Kanıt reddedildi veya adres hatalı biçimli
409 hata yanıtı Adres zaten kullanımda

Hız sınırı

user:email_change:request_new kovasında kimliği doğrulanmış her kullanıcı için dakikada 10 istek, artı yeni adres denetimi ve 30 saniyelik bekleme süresi.

Yeni e-posta kodunu yeniden gönder

POST /auth/email-change/resend-new

Bilete zaten bağlı olan adrese yeni bir doğrulama kodu gönderir. Boş gövdeyle 204 döndürür.

Adres istenmemiş bir bilet 400 BAD_REQUEST ile başarısız olur.

JSON gövdesi

Alan Tür Açıklama
ticket string E-posta değişikliğini başlat tarafından döndürülen tanımlayıcı

Yanıt

Durum Gövde Koşul
204 boş Yeni bir kod gönderildi ve önceki kod çalışmayı bıraktı

Hız sınırı

user:email_change:resend_new kovasında kimliği doğrulanmış her kullanıcı için dakikada 10 istek, artı yeni adres denetimi ve 30 saniyelik bekleme süresi.

E-posta değişikliğini tamamla

POST /auth/email-change/complete

Yeni adrese gönderilen kodu denetler ve aynı çağrıda o adresi hesaba yazar. Başarılı olursa bir e-posta değişikliği tamamlama nesnesi döndürür. Çağıranın oturumlarına bir User Update Gateway olayı yayınlar.

Sudo kipi gerekmez. E-postayla gönderilen iki kod, iki adresin de denetimde olduğunun kanıtıdır.

TEBHOS yeni adresin sahipliğini yeniden denetler; bu yüzden Yeni e-posta iste adımından bu yana başka bir hesabın aldığı bir adres 409 CONFLICT ile başarısız olur.

JSON gövdesi

Alan Tür Açıklama
ticket string E-posta değişikliğini başlat tarafından döndürülen tanımlayıcı
original_proof string E-posta değişikliğini başlat veya Özgün e-postayı doğrula adımından gelen kanıt
code string Yeni adrese gönderilen kod

Yanıt

Durum Gövde Koşul
200 e-posta değişikliği tamamlama nesnesi Yeni adres yazıldı
400 hata yanıtı Bilet, kanıt veya kod reddedildi
409 hata yanıtı Adres zaten kullanımda

Yan etkiler

Hesabın e-postası değiştirilir ve önceki adres diğer hesaplar için serbest bırakılır. E-postanın doğrulanmış durumu olduğu gibi bırakılır. TEBHOS değişikliği hesabın iletişim değişikliği kaydına yazar ve bileti siler; bu yüzden ikinci bir çağrı 400 BAD_REQUEST ile başarısız olur.

Bu yolda hiçbir kimlik bilgisi iptal edilmez; oturumlar ve OAuth2 token'ları geçerli kalır. Önceki adrese bildirim gönderilmez.

Hız sınırı

user:email_change:apply kovasında kimliği doğrulanmış her kullanıcı için dakikada 20 istek.

Örnek

curl -X POST https://tebhos.com/api/v1/auth/email-change/complete \
  -H "Authorization: Bearer $TEBHOS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ticket": "6f1a4c9e-3d52-4a77-9b0e-2c8f5d41ab30",
    "original_proof": "0b7e2c41-58a9-4d0f-9c3e-7a1d64f2e5b8",
    "code": "7KQ2-M9XD"
  }'

Geri dönen e-posta kurtarma

Saklanan adresi posta sağlayıcısı tarafından reddedilmiş bir hesabın kullanıcı nesnesinde email_bounced ayarlıdır. Aşağıdaki işlemler bir yedek adres bağlar ve onu özgün adres aşaması olmadan yazar.

Bunların her biri geri dönme işaretini gerektirir. Bu işarete sahip olmayan bir hesap 403 FORBIDDEN ile reddedilir; hiç adresi olmayan bir hesap ise 400 INVALID_FORM_BODY ile başarısız olur.

Akış ayrıca saklanan adresin doğrulanmış olarak işaretlenmemiş olmasını gerektirir. İşaretliyse Geri dönen adres için yedek e-posta iste 400 BAD_REQUEST ile başarısız olur ve bu hesap adresini bunun yerine sıradan e-posta değişikliği akışıyla değiştirir.

Kodlar ve 30 saniyelik bekleme süresi bilet ve kod sözleşmesine uyar.

Geri dönen adres için yedek e-posta iste

POST /users/@me/email-change/bounced/request-new

Bir kurtarma bileti oluşturur ve aynı çağrıda yedek adresi bağlar. Başarılı olursa bir yeni e-posta isteği nesnesi döndürür.

TEBHOS adresi kırpar ve sırayla denetler:

  • Boş bir adres 400 INVALID_FORM_BODY ile başarısız olur.
  • Büyük/küçük harf farkı gözetilmeden geri dönen adrese eşit bir adres 400 INVALID_FORM_BODY ile başarısız olur.
  • @ içermeyen, 6 karakterden kısa veya 254 karakterden uzun bir adres 400 INVALID_FORM_BODY ile başarısız olur.
  • Başka bir hesabın sahip olduğu bir adres 409 CONFLICT ile başarısız olur.

Başarısız bir deneme yine de e-posta gönderebilir

Saklanan adres hâlâ doğrulanmış olarak işaretliyse TEBHOS bileti oluşturur, saklanan adrese bir kod gönderir (bunu özgün adres denetiminden düşer) ve ancak ondan sonra isteği 400 BAD_REQUEST ile başarısız kılar.

JSON gövdesi

Alan Tür Açıklama
new_email string Geri dönen adresin yerine geçecek adres (6-254 karakter)

Yanıt

Durum Gövde Koşul
200 yeni e-posta isteği nesnesi Yedek adres bağlandı ve bir kod gönderildi
403 hata yanıtı Hesap geri dönmüş olarak işaretlenmemiş
409 hata yanıtı Adres zaten kullanımda

Döndürülen ticket değerini saklayın; kalan adımlar başka bir tanımlayıcı almaz.

Hız sınırı

user:email_change:bounced:request_new kovasında kimliği doğrulanmış her kullanıcı için dakikada 10 istek, artı geri dönen e-posta kurtarma denetimi.

Yedek e-posta kodunu yeniden gönder

POST /users/@me/email-change/bounced/resend-new

Bir kurtarma biletine bağlı yedek adrese yeni bir doğrulama kodu gönderir. Boş gövdeyle 204 döndürür.

JSON gövdesi

Alan Tür Açıklama
ticket string Geri dönen adres için yedek e-posta iste tarafından döndürülen tanımlayıcı

Yanıt

Durum Gövde Koşul
204 boş Yeni bir kod gönderildi ve önceki kod çalışmayı bıraktı
403 hata yanıtı Hesap geri dönmüş olarak işaretlenmemiş

Hız sınırı

user:email_change:bounced:resend_new kovasında kimliği doğrulanmış her kullanıcı için dakikada 10 istek, artı geri dönen e-posta kurtarma denetimi ve 30 saniyelik bekleme süresi.

Geri dönen adres için yedek e-postayı doğrula

POST /users/@me/email-change/bounced/verify-new

Kodu denetler ve aynı çağrıda yedek adresi hesaba yazar. Başarılı olursa güncellenmiş kullanıcı nesnesini döndürür. Bir User Update Gateway olayı yayınlar.

Sudo doğrulaması uygulanmaz.

JSON gövdesi

Alan Tür Açıklama
ticket string Geri dönen adres için yedek e-posta iste tarafından döndürülen tanımlayıcı
code string Yedek adrese gönderilen kod

Yanıt

Durum Gövde Koşul
200 kullanıcı nesnesi Yedek adres doğrulandı ve yazıldı
400 hata yanıtı Bilet veya kod reddedildi ya da kodun süresi doldu
403 hata yanıtı Hesap geri dönmüş olarak işaretlenmemiş

Yan etkiler

Hesap, doğrulanmış olarak işaretlenmiş yedek adresi alır; email_bounced false olur ve doğrulanmış bir e-postanın karşıladığı şüpheli etkinlik gereksinimleri required_actions listesinden temizlenir. Bilet tamamlanır ve yeniden kullanılamaz. Değişiklik iletişim değişikliği kaydına yazılır. Geri dönen adrese bildirim gönderilmez.

Hız sınırı

user:email_change:bounced:verify_new kovasında kimliği doğrulanmış her kullanıcı için dakikada 20 istek.

Parola değişikliğini başlat

POST /auth/password-change/start

Bir parola değişikliği bileti oluşturur ve hesabın e-posta adresine bir doğrulama kodu gönderir. Başarılı olursa bir parola değişikliği başlatma nesnesi döndürür.

Not

Kod yalnızca saklanan bir adrese ulaşabilir. TEBHOS e-posta adresi olmayan bir hesabın isteğini reddetmez, ancak böyle bir hesap hiçbir zaman kod almaz.

JSON gövdesi

Boş bir nesne ({}) gönderin. TEBHOS hiçbir alanı okumaz.

Yanıt

Durum Gövde Koşul
200 parola değişikliği başlatma nesnesi Bilet oluşturuldu ve bir kod gönderildi

Hız sınırı

user:password_change:start kovasında kimliği doğrulanmış her kullanıcı için dakikada 10 istek, artı parola değişikliği başlatma denetimi.

Parola değişikliği kodunu yeniden gönder

POST /auth/password-change/resend

Etkin bir parola değişikliği bileti için yeni bir doğrulama kodu gönderir. Boş gövdeyle 204 döndürür.

JSON gövdesi

Alan Tür Açıklama
ticket string Parola değişikliğini başlat tarafından döndürülen tanımlayıcı

Yanıt

Durum Gövde Koşul
204 boş Yeni bir kod gönderildi ve önceki kod çalışmayı bıraktı
400 hata yanıtı Bilet bilinmiyor, süresi dolmuş veya başka bir hesaba ait

Hız sınırı

user:password_change:resend kovasında kimliği doğrulanmış her kullanıcı için dakikada 10 istek, artı parola değişikliği yeniden gönderim denetimi ve 30 saniyelik bekleme süresi.

Parola değişikliği kodunu doğrula

POST /auth/password-change/verify

E-postayla gönderilen kodu denetler. Başarılı olursa bir parola doğrulama nesnesi döndürür. Hesabın parolası hâlâ değişmemiştir.

JSON gövdesi

Alan Tür Açıklama
ticket string Parola değişikliğini başlat tarafından döndürülen tanımlayıcı
code string Hesap adresine gönderilen kod

Yanıt

Durum Gövde Koşul
200 parola doğrulama nesnesi Kod kabul edildi
400 hata yanıtı Bilet veya kod reddedildi

Hız sınırı

user:password_change:verify kovasında kimliği doğrulanmış her kullanıcı için dakikada 20 istek.

Parola değişikliğini tamamla

POST /auth/password-change/complete

Hesabın parolasını ve çağıranın oturumunu değiştirir. Başarılı olursa bir parola değişikliği tamamlama nesnesi döndürür.

Sudo doğrulaması uygulanmaz. verification_proof ile kanıtlanan, e-postayla gönderilmiş kod yetkilendirmenin kendisidir.

JSON gövdesi

Alan Tür Açıklama
ticket string Parola değişikliğini başlat tarafından döndürülen tanımlayıcı
verification_proof string Parola değişikliği kodunu doğrula adımından gelen kanıt
new_password string Yeni parola (8-256 karakter)

Yanıt

Durum Gövde Koşul
200 parola değişikliği tamamlama nesnesi Parola değiştirildi
400 hata yanıtı Kanıt reddedildi (BAD_REQUEST) veya parola uzunluğu aralık dışında (INVALID_FORM_BODY)

Diğer tüm oturumlar kapatılır

Parola değişikliğini tamamlamak hesaptaki diğer tüm oturumları siler ve isteği yapan oturumu yenisiyle değiştirir. İsteğin kullandığı token hemen çalışmayı bırakır. Başka bir şey göndermeden önce döndürülen token değerine geçin.

Yan etkiler

Parola değiştirilir; bilet, kanıtı ve bekleme süresi silinir. TEBHOS kullanıcıya bir Auth Session Change Gateway olayı gönderir; böylece açık diğer istemciler oturumun kapatıldığını fark eder. OAuth2 erişim token'ları ve yenileme token'ları geçerli kalır.

Hız sınırı

user:password_change:complete kovasında kimliği doğrulanmış her kullanıcı için dakikada 10 istek.

Örnek

const base = "https://tebhos.com/api/v1";
const headers = {
  Authorization: `Bearer ${token}`,
  "Content-Type": "application/json",
};

const start = await fetch(`${base}/auth/password-change/start`, {
  method: "POST", headers, body: "{}",
}).then((r) => r.json());

// The user reads the code from their inbox.
const { verification_proof } = await fetch(`${base}/auth/password-change/verify`, {
  method: "POST", headers,
  body: JSON.stringify({ ticket: start.ticket, code: codeFromEmail.trim().toUpperCase() }),
}).then((r) => r.json());

const done = await fetch(`${base}/auth/password-change/complete`, {
  method: "POST", headers,
  body: JSON.stringify({ ticket: start.ticket, verification_proof, new_password: newPassword }),
}).then((r) => r.json());

token = done.token; // the old token no longer works
import requests

base = "https://tebhos.com/api/v1"
s = requests.Session()
s.headers["Authorization"] = f"Bearer {token}"

start = s.post(f"{base}/auth/password-change/start", json={}).json()

# The user reads the code from their inbox.
proof = s.post(
    f"{base}/auth/password-change/verify",
    json={"ticket": start["ticket"], "code": code_from_email.strip().upper()},
).json()["verification_proof"]

done = s.post(
    f"{base}/auth/password-change/complete",
    json={"ticket": start["ticket"], "verification_proof": proof, "new_password": new_password},
).json()

token = done["token"]  # the old token no longer works