The Service Catalogue is a proposal for Discovery and Maintenance of a list of services that a particular person may own around the web. This is page is intended to document what this might look like leading to a more formal specification.
A User U owns a Service Catalogue (SC). It's held at Site P (provider) which may or may not be owned by the User.
This SC contains a list of places where the user has data and services such as the Social Graph (SG) of their contacts at a site with Social Networking features. eg Twitter.
Process Flow
An example of process flow follows for a site to obtain a contact list from another site.
User U goes to Site A and gives it the URL for the SC.
Site A reads the service catalogue for User U and finds an entry for the Social Graph of User U at Site B.
Site A requests the SG-U-B (Social Graph for User U at Site B) from B.
Site A reads it and matches entries at A to create a Social Graph for U. Call this SG-U-A.
Implications
Site B needs to provide an API to allow sites to GET SG-U-B. This has to be in a format that Site A can understand and have identifiers in it that can be matched with local identifiers. The obvious format for this is FOAF. With mbox, mbox_sha1sum and OpenID as identifiers. It could also be an HTML document containing XFN. In this case the entry in the SC is just the URI for that FOAF.
If the FOAF requires authentication to access then oAuth discovery and negotiation can be used to point Site A at the oAuth endpoint.
The obvious format for the Service Catalogue is XRDS. Standards need to be developed to define the common data formats and services that are needed for Dataportability within an XRDS file.
Initially, the Service Catalogue is likely to be maintained by hand in the same way that OpenID YADIS files are maintained by hand. While this is ok for developers it needs more automation. There needs to be an API to Add, Modify and Delete entries. For instance, in the above example we would like Site A to be able to add itself to the service catalogue at P.
The catalogue should have a discovery mechanism so that a person can just quote a simple URL and Site A can then find the catalogue from that. XRDS/Yadis already has this with a convention for embedding the location in the head of an html page.
Actions
- Decide on a Service Catalogue format
Define standards for entering common services in the catalogue
- Define an API for updating the catalogue