This is a copy of the documentation that was formally at code.google.com/apis/wave - to navigate, use the subpages at the bottom of each page.
TODO: Update these documents to match the capabilities of Wave-in-a-Box,.
The Google Wave API is an open platform allowing developers to extend the functionality of Google Wave itself, or extend other applications with waves. As a developer, you can think of Google Wave as three pieces:
This developer guide discusses the Wave APIs and how you can use them to augment Google Wave through extensions or augment third-party web applications by embedding Google Wave within them. This overview discusses the elements that make up the "waves" in the Google Wave model.
Programming effectively using the Google Wave APIs requires understanding some basic wave concepts.
A wave is a threaded conversation, consisting of one or more participants (which may include both human participants and robots). The wave is a dynamic entity which contains state and stores historical information. A wave is a living thing, with participants communicating and modifying the wave in real time. Significantly, a wave serves only as a container for one or more wavelets defined below; the "wave" itself is simply a group of wavelets
A wavelet is a threaded conversation that is spawned from a wave (including the initial conversation). Wavelets serve as the container for one or more documents (of which the basic conversational document is known as a blip). The wavelet is the basic unit of access control for data in the wave. All participants on a wavelet have full read/write access to all of the content within the wavelet. As well, all events that occur within the Google Wave APIs operate on wavelet level or lower. When you spawn a wavelet from within a wave, you do not inherit any access permissions from the parent wavelet. During the lifetime of a wave, you may spawn private conversations, which become separate wavelets, but are bundled together within the same "wave."
A document is a unit of content attached to a wavelet. Two basic types of documents exist within the Wave API:
Although blips and data documents are each "documents," in practice, you treat them quite separately. Each blip consists of markup (similar to XML) which can be retrieved, modified or added by the API. Generally, you manage the blip through convenience methods rather than through direct manipulation of the XML data structure. Blips are very structured, while data documents may have no intrinsic schema (though often contain their oen self-defined structure).
The "Wave API" actually consists of several APIs which provide different functionality (and may be combined together). Three primary types of development are available within the Wave API:
In addition to the developer's guide and the reference material, you may wish to check out the sample code.
Developers using Google Wave may work with two instances
of Google Wave: the development version of Google Wave known as the
Sandbox (available at
All initial Wave API development should take place in the sandbox. The sandbox is a developer-only instance of Google Wave where you can freely test and debug extensions you develop with other developers. You can request developer access to the sandbox using this form. When they are ready to share your application with the general population, you will want to deploy your extensions to Wave Preview. You can access Wave Preview using any Google account.
The sandbox is similar to the Google Wave Preview at
Additionally, the Google Wave Preview instance provides a few bells and whistles you won't find in Wave Sandbox, including additional default Wave content, the Extensions Gallery, and operability with Wave servers running under Google Apps domains.
Once you've thoroughly experimented and tested your extensions on the Sandbox, you will want to package an extension up into an Extension Installer and test it with other developers. Once your application is ready for the real world, you can deploy it to the Google Wave Preview instance and share it with your friends or colleagues. If you want your extension to be in the public extensions gallery, so that all users can install it, then submit it here.