Giter VIP home page Giter VIP logo

dciddp's Introduction

Decentralised Identity Dispatch Protocol (DCIDDP)

Introduction

The Decentralised Identity Dispatch Protocol (DCIDDP) is a protocol that allows for dispenson of name and pronoun information in a decentralised manner, for rendering in a user interface. The protocol is designed to be simple, lightweight, and easy to implement.

Protocol

The Protocol can function over HTTP, HTTPS, or any other protocol that supports the transmission of JSON data. The protocol is based on a few JSON data types, which are described below.

JSON Data Types

The System

System objects represent entire plural systems and contain the following fields:

  • id (string): A unique identifier for the system.
  • homeserver (string): The homeserver of the system.
  • name (string): The name of the system.
  • members (array of Member objects): The members of the system.
  • collectivePronouns (array of Pronoun objects): The collective pronouns of the system.
  • collectiveName (string): The collective name of the system.
  • isSinglet (boolean): Whether the system is a singlet system.

Member

Member objects represent individual members of a system and contain the following fields:

  • id (string): A unique identifier for the member.
  • names (array of string): The names of the member.
  • pronouns (array of Pronoun objects): The pronouns of the member.
  • description (string): A description of the member.
  • additionalInfo (object): Additional information about the member. This can be any JSON object.

Pronoun

Pronoun objects represent pronouns and contain the following fields:

  • subject (string): The subject pronoun.
  • object (string): The object pronoun.
  • possessiveDeterminer (string): The possessive determiner.
  • possessivePronoun (string): The possessive pronoun.
  • reflexive (string): The reflexive pronoun.

Certain pronoun pairs can be used as a shorthand for common pronouns:

  • he/him is equivalent to he/him/his/his/himself.
  • she/her is equivalent to she/her/her/hers/herself.
  • they/them is equivalent to they/them/their/theirs/themself.
  • it/it is equivalent to it/it/its/its/itself.
  • he/they is equivalent to he/him/his/his/himself and they/them/their/theirs/themself.
  • she/they is equivalent to she/her/her/hers/herself and they/them/their/theirs/themself.
  • he/she is equivalent to he/him/his/his/himself and she/her/her/hers/herself.
  • he/she/they is equivalent to he/him/his/his/himself, she/her/her/hers/herself, and they/them/their/theirs/themself.
  • any is a special pronoun that can be used to indicate that any pronoun is acceptable.

Singlet Members

Not all people have to be parts of plural systems, but the designation of the protocol assumes everyone as a part of a system. The isSinglet field in the System object can be used to indicate that the system is a singlet system, and the members field must have exactly one Member object in that case.

Endpoints

This is a decentralised protocol and every server-side implentation can have its own endpoints. However, there must be a few endpoints that are common to all implementations:

  • GET /systems: This endpoint must return a list of all systems that are registered with the server.
  • GET /system/<systemName>: This endpoint must return the system object for the system with the name <systemName>.
  • GET /member/<systemName>/<memberName>: This endpoint must return the member object for the member with the name <memberName> in the system with the name <systemName>.

The following endpoints are also required, but they require authentication:

  • POST /system/new: This endpoint must use a partial system object that has no members to register a new system with the server.
Partial System Object
  • name (string): The name of the system.

  • collectivePronouns (array of Pronoun objects): The collective pronouns of the system.

  • collectiveName (string): The collective name of the system.

  • isSinglet (boolean): Whether the system is a singlet system.

  • POST /member/<systemName>/new: This endpoint must use a member object to register a new member with the server.

Retrieval of Remote Members

Just like Fediverse, DCIDPP uses the format @systemname@homeserver to refer to a system registered on a different server. And remote members on remote systems are denoted as @membername@systemname@homeserver.

dciddp's People

Contributors

sparkysimp avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.