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 |
| 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 400INVALID_FORM_BODYile başarısız olur.- Herhangi bir hesabın zaten sahip olduğu bir adres, çağıranın kendi mevcut adresi dahil, 409
CONFLICTile 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_BODYile 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_BODYile başarısız olur. @içermeyen, 6 karakterden kısa veya 254 karakterden uzun bir adres 400INVALID_FORM_BODYile başarısız olur.- Başka bir hesabın sahip olduğu bir adres 409
CONFLICTile 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