Google Data APIs and OpenSearch


I'm briefly surfacing from my first vacation in, well, ever, to quickly comment on what Niall IM'ed me about last night. As far as I know, Niall had the scoop on Google's new data API called GData.

The Google Data APIs are an attempt to consolidate and generalize Google's approach to read/write web services. To Google's credit, GData is built almost entirely by extending other popular web standards and formats, such as RSS, Atom Syndication, Atom Publishing, OpenSearch, and others. A caveat -- I haven't spent enough time with the GData specifications to know whether or not these formats and standards are supported well, just that they appear to be at first glance.

The first Google application to be explicitly exposed via GData is the new Google Calendar. I expect to see support for other read/write applications in the near future. If they expose a GData API for Gmail, then they will have beaten me to the punch on something I want to do with the Houston message store. (SMTP is so 1982.)

The Google Data API Protocol includes OpenSearch Response elements in the document format. One potential point of confusion is that the specifications refer to OpenSearch 1.1 elements, whereas the examples use the older 1.0 schema. I will talk to someone on the GData team about that and ask them to clarify. I'd also love to see some way of using the OpenSearch Query Syntax and OpenSearch Description documents with the GData APIs. I have some ideas in mind, but I'll need to play with everything for a bit first.

Not coincidentally, I planned on contacting Google about their event datatypes when I returned from vacation anyway. As some people noticed before, when Google Calendar launched it included the OpenSearch namespace in the RSS feeds. This got me to thinking that someone really needs to define a convention for including event data in search results. As OpenSearch is intentionally open-ended and based on common usage -- i.e., nearly everything is an extension, not part of the core spec -- having a popular convention certainly helps to get people pointing in the same direction. If the Google Calendar datatypes are good, and they certainly appear to be, I'll look at recommending the GData calendar elements for event data in OpenSearch-based search results.

Another interesting bit is that Google is now opening up some sort of official authentication API to the public. The Google Data APIs Protocol page says:

A web-based client, such as a third-party front end to a GData service, should use a Google-specific authentication system called Proxy Authentication for Web Applications. This system is not yet available for use.


Which in turn references a new Account Authentication page. They are now offering a client-side "ClientLogin" API. But perhaps more interesting, they are offering a "Account Authentication Proxy for Web Applications" that has an "expected release in late April."

Authentication for web services is a difficult problem, and I am very curious to see what Google has come up with to help tackle it.

And a tip of my hat to Joe Gregorio and all of the Atom Publishing Protocol community for creating a format so valuable that it is worth using even while still in draft form. I hope that Joe posts his thoughts on GData soon. [Update: He did.]

Back to vacation!