Message: 3
Date: Tue, 27 Jan 2009 17:36:28 +0100
From: Evan Prodromou <[email protected]>
Subject: [Laconica-dev] Public site directory
To: [email protected]
Message-ID: <[email protected]>
Content-Type: text/plain; charset="iso-8859-1"; Format="flowed"
One thing that's come up recently for API clients is being able to let
users sign up for an account on a public Laconica site. We have quite a
few, and the number is growing. It's not always easy for users to add in
the API root to general-purpose interfaces (like Twitterfeeds), nor is
it easy for client developers to special-case each and every Laconica
site in their software.
I'd like to propose a mechanism that would let client developers find
public Laconica sites that their users can register on or log into an
existing account.
The API would be rooted at dir.laconi.ca. It would be Twitter-like
(RESTy, JSON and XML supported), with the following API elements:
1. http://dir.laconi.ca/providers.[xml|json] would be a full list of
all providers. It would support a "since" parameter to only show
providers listed more recently than some date.
2. http://dir.laconi.ca/providers/<provider-id>.[xml|json] would give
data on a single provider.
3. http://dir.laconi.ca/providers/<provider-nickname>.[xml|json]
would give data on a single provider.
4. http://dir.laconi.ca/providers/search.[xml|json]?q=<search term>
would return a list of providers whose full name, nickname, or
description contains <search term> as a substring. This might be
useful for type-ahead directory interfaces. It would also take an
hl=[code] parameter to limit results to descriptions or names in a
particular language.
Updating profile information would be out-of-band; we'd probably have a
Web UI for site admins to keep this data up-to-date.
Each provider is described by a data structure as follows:
* ID - a unique numerical ID. Example: 3, 35015.
* nickname - a unique nickname, lowercase ASCII alphanum, 1-64
chars. Example: "identica", "bleeper", "twitarmy".
* fullname - a more descriptive name, UTF-8, up to 255 chars.
Example: "Identi.ca", "Twit Army Canteen", "Saigonica".
* minilogo - URL of a logo image, 24x24 pixels
* streamlogo - URL of a logo image, 48x48 pixels
* profilelogo - URL of a logo image, 96x96 pixels
* rooturl - root URL, like "http://bleeper.de/"
* registrationurl - URL for a registration page, optional
* apirooturl - URL for the Twitter-like API root, like
"http://identi.ca/api".
* description - a text description of the provider. Typically 1-3
sentences.
"fullname" and "description" could have multiple values, varying by
human language. For the XML representation, we'd use xml:lang to
differentiate; I'm not sure what to do for JSON. Something like
"description_en", "description_no"?
Finally: participation for this directory would be voluntary. It would
initially only contain Laconica sites, but other sites that support the
Twitter API could also be listed in the future. Code for the directory
would be Free Software under a liberal Apache 2.0 license, and the data
would be CC0 (public domain-ish).
Any ideas or comments? Anyone want to do a fun little piece of work?
-Evan
I think this is a great idea, and I would add this capability to my
client App right now if it was available. The only change I would
propose is the addition of categories. This could be either a single
field, or a couple of levels (primary category, secondary category).
When we end up with thousands of laconi.ca instances to let the user
choose from, I think having a way to filter them by categories will be
very helpful.
-Tom
_______________________________________________
Laconica-dev mailing list
[email protected]
http://mail.laconi.ca/mailman/listinfo/laconica-dev