Adı Server protokolü

Jami tarafından bir ismi sorgulama ve kayıt için kullanılan protokol, HTTP [REST] (https://en.wikipedia.org/wiki/Representational_state_transfer) API’siyle JSON belgeleri ve düzenli HTTP durum kodları ile taleplere cevap verir.

Halk ad sunucusu ns.jami.net adresinde barındırılır ve arka uç olarak bir blok zinciri kullanır. Başka bir uygulamanın ad sunucusu protokolünü tekrar kullanılabilir hale getiren herhangi bir başka veritabanı veya dizin hizmetini kullanabileceği.

Kendi isim sunucunuzu çalıştırırsanız, username@example.com şeklinde bir kullanıcı adı aramak username isimini username.com adresindeki isim sunucusu ile arayacaktır.

Ad biçimlendirme kuralları

Kullanıcı isimleri, formatları hakkında bazı kurallar sağlamak için regex tarafından kontrol edilir:

  • Uzunluk 3 ile 32 karakter arasında olmalıdır.

  • Those characters must be alphanumerical with dashes - being also accepted.

Bir isim sormak

Bu bir isim sunucusu tarafından sağlanan ana hizmet. Bir kullanıcı adına karşılık gelen Jami Kimliğini elde etmeni sağlar.

İstek

foobar isimli bir talepte GET isimli bir talepte /name/foobar olarak URI’dir.

Cevap (Başarılı)

Eğer isim bulunursa, durum kodu 200 OK olan bir cevap, Content-type alanı application/json olarak belirlenerek müşterine gönderilmelidir.

Vücut, 2 satırlı bir JSON belgesidir: name ve addr. name istenen birine eşit ve addr Jami ID’nin 0x ile önleştirilen altı onluk bir temsilidir.

Örnekte JSON cevabı şöyle olacaktır:

{
    "name":"foobar",
    "addr":"0x29347542eb07159f316577e1ae16243d152f6b7b"
}

Cevap (Bilmedi)

Eğer isim bulunmazsa, durum kodu 404 Not Found olan bir cevap, Content-type alanı ile müşterine application/json olarak belirtilmelidir.

Bu özellik, hatayı açıklayan bir hata mesajıyla (ve gelecekte istemcide görüntülenebilir) doldurulur.

Referans uygulanması ile ilgili olarak, geri gönderilen belge:

{
    "error":"name not registred"
}

Adres sorgulaması

Bu hizmet ters bir arama. Adres sorarsanız bir kullanıcı adı adı sunucusunda kayıtlı ise geri verilir.

İstek

ID jami:29347542eb07159f316577e1ae16243d152f6b7b için yapılan bir talebe GET /addr/*29347542eb07159f316577e1ae16243d152f6b7b`* olarak URI’nin bulunduğu bir talebe sahiptir.

Cevap (Başarılı)

Adres kullanıcı adına karşılık gelirse, durum kodu 200 OK olan bir cevap, Content-type alanı ile application/json olarak belirtilmiş olarak müşteriye gönderilmelidir.

Bu alanın değeri bu adreste kayıtlı olan isimdir.

Örnekte JSON cevabı şöyle olacaktır:

{
    "name":"foobar"
}

Cevap (Bilmedi)

Eğer adres bulunmazsa, durum kodu 404 Not Found ile bir cevap, Content-type alanı ile müşterine gönderilmelidir.

Bu özellik, hatayı açıklayan bir hata mesajıyla (ve gelecekte istemcide görüntülenebilir) doldurulur.

Referans uygulanması ile ilgili olarak, geri gönderilen belge:

{
    "error":"address not registred"
}

Bir isim kaydetmek

Protokolün bu kısmı yeni bir isim/ağıt çiftini kaydetmek için kullanılır. Ana kamu kayıtlarında kullanılır, ancak özel bir uygulamada seçkin olabilir.

İstek

foobar adı kayıt için bir talep POST /name/*foobar* olarak URI'dir. Başlık özelliği Content-type application/json olarak ayarlanmalıdır.

İstek gövdesinde 2 satırlı bir JSON belgesidir: addr ve owner. addr, 0x ve owner ile önceden belirtilen Jami ID içerir.

foobar için bir örnek:

{
    "addr":"0x29347542eb07159f316577e1ae16243d152f6b7b",
    "owner":"foobar"
}

Cevap (Başarılı)

Ad/Adress çiftinin başarılı bir şekilde kaydedildiği takdirde, durum kodu 200 OK olan bir cevap, Content-type alanı application/json olarak belirtilen müşterine gönderilmelidir.

Beden, 1 boolean özelliği success ile true olarak ayarlanmış bir JSON belgesini içerir.

Örnek olarak:

{
    "success":true
}

Adı veya adresi sormak için daha fazla girişim başarılı olmalıdır.

Cevap (kötü talep)

Kayıt, talepte bir hata (formatlama, eksik nitelik vb.) nedeniyle gerçekleşemezse, durum kodu 400 Bad Request ile bir cevap, Content-type alanı ile application/json olarak belirtilmeli.

Vücut, 2 özelliğe sahip bir JSON belgesidir: success bu bir boolean ve error bu bir dizilerdir. success falseveerror` olarak ayarlanmıştır.

Kullanıcı adının geçersiz biçimlendirilmesi için, vücut:

{
    "success": false,
    "error": "invalid name"
}

Cevap (Yasaklanmış)

Kayıt, adı zaten alınmış olması nedeniyle gerçekleşemezse, 403 Forbidden statü kodu ile bir cevap, Content-type alanı application/json olarak belirtilen müşterine gönderilmelidir.

Vücut, 3 özelliği olan bir JSON belgesidir: success, bu da orijinal istekten çoğaltılan her iki ip olan false, name ve addr’ye boolean bir seti.

Bu kayıt, zaten kayıtlı olduğu için aşağıdaki tepkiye yol açacaktır:

{
    "success": false,
    "name":"foobar",
    "addr":"0x29347542eb07159fdeadbeefae16243d152f6b7b"
}