Ubuntu One APIs

Registered by Joshua Hoover on 2010-10-18

Ubuntu One has APIs available but they need to be easy for those building new applications or wanting to integrate Ubuntu One services into existing applications. This includes providing wrapper APIs on existing Ubuntu One functionality (across the various services, files, contacts, etc.) along with reference documentation and examples.

APIs should be available to the Ubuntu desktop, to mobiles, to web applications: everyone should be able to make their apps better with Ubuntu One.

Part of this session is about not just which APIs applications need, but also where those APIs should be talked about; documentation for those APIs, where should it live? How do we get the word out to application developers? Which applications would be good to point out as "flagships", that demonstrate how to do this? If you're an application developer, what do you need from Ubuntu One?

Suggested APIs to provide, for discussion:

Desktop APIs:

 * publish file
 * share folder/unshare folder
 * add/remove a folder to/from ubuntu one
 * stream music (?)
 * desktopcouch
 * desktopcouch-health-monitor program to show which DBs are synced and when
   they last synced, to help debugging and awareness
 * start up signup window to allow someone to join U1 (you choose "sync my
   data using Ubuntu One" in the app, but you're not signed up/signed in)
 * is Ubuntu One available on this machine? (makes it easy to hide U1 features
   on Fedora)
 * get a u1ms link and preview URL for a given song (if you have song
   metadata: title, artist, album; musicbrainz id) (wrapper around web API)

Web APIs:

 * REST file API
 * share a folder (for vds fullcircle idea)
 * document /phones/creds/{android,ios}
 * SSO and how to get a token valid for U1 in your app
 * get a u1ms link and preview URL for a given song (if you have song
   metadata: title, artist, album; musicbrainz id)
 * CouchDB per-db access, readonly access (needs admin on website to see and
 remove tokens granted to an application)

Blueprint information

Status:
Started
Approver:
John Lenton
Priority:
Undefined
Drafter:
Joshua Hoover
Direction:
Needs approval
Assignee:
Stuart Langridge
Definition:
Approved
Series goal:
Accepted for natty
Implementation:
Started
Milestone target:
milestone icon natty-alpha-3
Started by
Joshua Hoover on 2010-11-30

Related branches

Sprints

Whiteboard

== apps that could use u1 integration ==

 * music (rhythmbox, amarok, ...)
   * ratings
   * playlists
   * playcounts
   * podcast lists
 * evolution mail filters
 * screenshots
 * empathy logs
 * gourmet recipe database & shopping list
 * recipe mamager
 * irc logs synced
 * bash history
 * sync a folder from inside an app - this is good for backing up projects for apps like eclipse or a game's save..etc
 * contacts
 * gvfs(?) thing for opening/saving remotely via rest
 * tasks - GTG
 * evolution calendar, thunderbird calendar
 * achievement syncing
 * ssh public keys
 * aranduka/calibre (ebook reader) integration
 * gnote notes syncing (probably using the same api we use for tomboy?)

== Where it goes ==

Listed from one.ubuntu.com itself, a developer section with help, howtos, and examples
docs in devhelp
push to people who want it with filesync

== flagships ==

tasks: desktop + web + mobile
music playlists (ratings are just as important): desktop + mobile
recipe & shopping list

== Desktopcouch wishlist features ==
  * means to temporary databases for use in tests
      (Chad's answer: c = desktopcouch.local_files.Context(data_dir="/foo")
       and then when creating database, use parameter ctx=c . See also
       desktopcouch/tests/__init__.py )
 * developer-friendly description of desktopcouch so people get it. (Build atop
      of description in Free Desktop dot org wiki.)

(?)

Work Items