X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=spec%2Fzot-2012.txt;h=2e1f3c3c49d1452278eb16e1d48aad7ef9a446c1;hb=886c3d14728ac62fed0d437388c14250ff44ca76;hp=d2a4a5815420c42567b1ac0a9a472d1719c85c59;hpb=3e461abe6e93424ab8558ad21553fc6f268e750f;p=friendica.git diff --git a/spec/zot-2012.txt b/spec/zot-2012.txt index d2a4a58154..2e1f3c3c49 100644 --- a/spec/zot-2012.txt +++ b/spec/zot-2012.txt @@ -1,4 +1,10 @@ +Initial cut at Zot-2012 protocol. This is a very rough draft of some very rough ideas and concepts. +It is not yet intended to be a definitive specification and many things like the security handshakes are yet to be specified precisely. + +All communications are https + + First create a global unique userid @@ -17,6 +23,18 @@ You will also obtain a password upon introducing yourself to a site. This can be used to edit locations in the future. You will always keep your global unique userid +The steps to connect with somebody are to first register your location with their site. +Then introduce yourself to the person. This contains flags for the desired relationship. +At some future time, they may confirm and adjust the relationship based on their comfort level. +Lack of confirmation is tantamount to denial. + +You can set either or both of FOLLOW and SHARE which indicates the relationship from your viewpoint. +They may do likewise. + +A relationship is based on you as a person and provided you register new locations with the site you can post from anywhere. +You do not need to register locations with each person, only with the site. + + Introduce yourself to a site: @@ -41,14 +59,14 @@ Returns: Add location --- -POST https://example.com +POST https://example.com/post { 'type' => 'location' 'person' => $guuid 'address' => $new_gduid 'site' => 'https://newsite.com' -'info' => 'mike@macgirvin.com' +'info' => 'mike@newsite.com' 'pass' => me_encrypt($gduid . '.' . $pass) } @@ -63,7 +81,7 @@ Returns: Remove location --- -POST https://example.com +POST https://example.com/post { 'type' => 'remove_location' @@ -83,17 +101,19 @@ Returns: ------------ Make friends ------------ -This message may be reversed/repeated by the destination site to confirm +This message may be reversed/repeated by the destination site to confirm. +flags is the desired friendship bits. The same message may be used with different flags +to edit or remove a relationship. POST https://example.com/post { -'type' => 'contact_add' +'type' => 'contact' 'person' => $gduid 'address' => $guuid 'target' => 'bobjones@example.com' -'flags' => HIDDEN=0,FOLLOW=1,SHARE=1 +'flags' => HIDDEN=0,FOLLOW=1,SHARE=1,NOHIDDEN=1,NOFOLLOW=0,NOSHARE=0 'confirm' => me_encrypt($guuid . '.' . $pass) } @@ -102,6 +122,7 @@ Returns: { 'success' => 'true' 'message' => 'OK' +'flags' => PENDING=1 } @@ -114,6 +135,12 @@ Returns: Message ------- +Passing messages is done asynchronously. This may (potentially) relieve a lot of the burden of distribution from the posting site. If you're on site 'A' and make a post, site 'A' just contacts any downstream sites and informs them that there is new content (via a $post_id). The downstream site initiates the actual data transfer. + + + + + POST https://example.com/post { @@ -134,9 +161,10 @@ Returns: Callback -------- -POST https://macgirvin.com +POST https://macgirvin.com/post { +'type' => 'retrieve' 'retrieve' => $post_id 'challenge' => you_encrypt('abc123') 'verify' => me_encrypt('xyz456' . '.' . $gduid)