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
falseve
error` 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"
}
Bazı bağlantılar
jami-nameservice
: `ns.jami.net tarafından kullanılan ve Ethereum düğümünü sorgulayan referans NodeJS uygulaması.