Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Services Index #19

Closed
michaelsena opened this issue May 22, 2020 · 1 comment
Closed

Services Index #19

michaelsena opened this issue May 22, 2020 · 1 comment

Comments

@michaelsena
Copy link
Member

michaelsena commented May 22, 2020

cip: 17
title: Services Index
author: Michael Sena (@michaelsena), Joel Thorstensson (@oed)
status: Draft
category: Standards
type: RFC
created: 2020-05-22
requires: Tile Doctype (CIP-8), StringMap (CIP-9)

Simple Summary

Services Index stores a list of documents which contain information about a DID's preferred services, such as notifications or backup.

Abstract

Add more detail here.

Services Index is a subdirectory of the Identity Index (IDX) (CIP-11) and is often linked from the Root Index (CIP-12).

Motivation

  • Identity-centric services are an important aspect to the user-centric web, where users employ/permission specific services to act on their behalf and any application can make use of these services
  • These services need to exist independent from any single application or platform
  • There will be many different types of services lists
  • There should be a standard interface for apps to discover services lists so they can locate and interact with these services

Specification

The Services Index specification consists of a doctype, schema, table, and tags.

Doctype

Services Index is a Tile Doctype (CIP-8).

Schema

Services Index utilizes the String Map (CIP-9) schema, which simply stores a list of strings which map to other strings. In this context, the key string should represent the category of service, and the value string should represent a document that stores a list of services within that category. A reference to this schema should be included in your Services Index document when it is created.

Table

The Services Index Table (to be created at a later time) contains the standard set of properties that may be contained in any given Services Index. New properties can be added to the table by following the steps below. Additional properties not found in this table may be stored in any Services Index, however they may be less interoperable since others may not know what they represent. Here are some common examples of properties stored in the Services Index:

  • notifications: the DocId of a Notifications Service List, which contains a list of notification services used by this DID
  • backup: the DocId of a Backup Service List, which contains a list of data backup services used by this DID
  • consent: the DocId of a Consent Services List, which contains a list of privacy management services used by this DID

How to add a new property to the Services Index Table

  1. Choose a unique, descriptive property name.
  2. Add a description for your property.
  3. Submit a PR to the CIP repository updating the Services Index Table with your property.
  4. Mention the authors of this CIP in the comments of your PR.

Tags

When creating a Services Index document, add ServicesIndex to the tags field.

Example

An example Services Index document.

"doctype": "tile"
"schema": "<insert canonical schema for String Map>"
"tags": ["ServicesIndex", "StringMap"]
"content": {
  "notifications": "ceramic://bafyljsdf1...",
  "backup": "ceramic://bafysdfoijwe2...",
  "consent": "ceramic://bafysdfoijwe3..."
}

Suggested Usage

Root Index: Services Index provides a directory of services lists, however services are just one type of resource that can be associated with a DID. The Root Index (CIP-12) provides a top-level root directory for resources, and can contain a property called services which stores a link to a Services Index document. The recommended path for mapping from a DID to the Services Index is: DID/Root Index/Services Index.

Rationale

Extensibility & Flexibility: It is impossible to predict all of the types of services that need to be associated with any particular DID. Therefore Services Index was designed to be an infinitely extensible directory that can support any number of services lists.

Decentralization & Trust: Services directory information is data that needs to be globally-available, censorship-resistant, and live permissionlessly in the public domain (not on any single server). Additionally this information should be owned by a DID and will need to be updated from time to time. These requirements make Ceramic the most appropriate platform for publishing this content.

Implementation

String Map Schema: Find the String Map Schema here.

Services Index Table: Find the table containing standard Services Index properties here (to be updated when available).

Libraries: Not yet available.

Copyright

Copyright and related rights waived via CC0.

@michaelsena michaelsena changed the title CRC: Services Document CRC: Services Schema May 23, 2020
@michaelsena michaelsena changed the title CRC: Services Schema CRC: Services Document May 25, 2020
@michaelsena michaelsena mentioned this issue May 25, 2020
@michaelsena michaelsena changed the title CRC: Services Document Services Index Jul 6, 2020
@oed
Copy link
Member

oed commented Sep 28, 2020

Stale, closing.

@oed oed closed this as completed Sep 28, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants