OpenSocialDraft

Recent site activity

Release Notes for v 0.9

Primary focus of this version

The focus of this version is split between the following high level items:
  • The addition of a markup language, OpenSocial Markup Language.
  • Support of proxied content.
  • Formal definition of the fetch/cache/invalidate model

OpenSocial specification changes

  • Added API for Albums in REST and JavaScript. 
  • Added OpenSocial Templates, OSML Tags: a standard approach to applying items in markup with minimal coding.
  • Added a simplified JS API

Incompatible changes

  • opensocial.requestShareApp: List of recipients replaced with opensocial.IdSpec.
  • opensocial.requestSendMessage: List of recipients replaced with opensocial.IdSpec.

RESTful protocol changes

  • Album Support: Added the Albums type, which also exposes MediaItems.
  • Aligned the JS and REST specs to add a latitude, longitude, and type to an Address element.
  • Aligned with Portable Contacts. This included an update to the XSD to be compatible with the Portable Contacts specification and a paragraph in the spec indicating the intent to stay compatible with Portable Contacts.
  • Defined default viewer. Indicated that the ID for the default viewer is -1. When this is used as the {guid}, the default viewer must be returned. 
  • Updated Messaging to define special IDs for a group or a person as well as extensions to the messaging formats to support reading mail from mailboxes.
  • Content upload: Standardized the mechanism where a resource can be uploaded to a container using REST.
  • IS_FRIENDS_WITH: Added text explaining how a Person request could determine if two people are friends or find the set of mutual friends between two people.
  • Added an endpoint that takes a list of invalidation keys to clear cached items.
  • Added UserPrefs to the REST API so that an application can consume and update user preferences used on the canvas, profile, or home surface elsewhere in the application.

RPC protocol changes

  • Album support: Added two new services to support fetching Albums and MediaItems with the Album and MediaItem services.
  • Content upload: Standardized the mechanism where a resource can be uploaded to a container using JSON-RPC.

opensocial.* JavaScript changes

  • opensocial.requestShareApp: List of recipients replaced with opensocial.IdSpec.
  • opensocial.requestSendMessage: List of recipients replaced with opensocial.IdSpec.
  • opensocial.DataRequest.ActivityRequestFields: Added to support paging through activities
  • Added support to get/create/update/delete Albums. An album is a collection of MediaItem. This includes a new class:
    • opensocial.DataRequest.AlbumRequestFields: Common request fields for paging through a collection of albums.
Updates to an existing class: MediaItem. MediaItem gets several new fields (ID, TITLE, CREATED, LAST_UPDATED, THUMBNAIL_URL, DESCRIPTION, DURATION, LOCATION, LANGUAGE, ALBUM_ID, FILE_SIZE, START_TIME, RATING,
NUM_VOTES, NUM_VIEWS, NUM_COMMENTS, TAGS, TAGGED_PEOPLE) to more fully describe an individual media item.
  • opensocial.DataRequest: Added new methods to support MediaItems and Albums: newFetchAlbumsRequest, newCreateAlbumRequest, newUpdateAlbumRequest, newDeleteAlbumRequest, newFetchMediaItemsRequest, newCreateMediaItemRequest, newUpdateMediaItemRequest, newDeleteMediaItemRequest.
  • opensocial.Person Default Viewer: Identified the ID of the default viewer as -1.
  • Support for reading and writing from mail. Added class opensocial.MessageCollection and enhanced opensocial.Message to contain more fields.
  • Updated the documentation to require that all callbacks will fire only after the existing call stack has completed.
  • opensocial.requestUploadItem: A container can display a dialog that allows the user to upload 1 or more files to the site. 
  • Added a lightweight JavaScript API that integrates better with the REST JSON return values, allowing for less code to access data.
  • opensocial.invalidateKeys: API that invalidates a set of cached items by key name for the application.
  • Simplified the AppData API. This deprecates opensocial.DataRequest.DataRequestFields, adds new fields to opensocial.DataRequest.PeopleRequestFiends (APP_DATA, ESCAPE_TYPE), adds opensocial.DataRequest.prototype.newRemovePersonAppDataRequest and opensocial.Person.prototype.getAppData(key).

gadgets.* JavaScript changes

  • gadgets.log: Added a standard logging API. This API will allow developers to do their own logging through OpenSocial. The primary purpose behind the feature is to allow OpenSocial containers to log and then alert users to what, if anything, is going on in the application.
  • gadgets.i18n: Added a standard set of libraries to handle internationalization formatting of numbers, dates, times, and currency.
  • gadgets.oauth: Added a standard OAuth popup to the JavaScript libraries.
  • gadgets.views now part of the core.
  • gadgets.views.getSupportedViews, gadgets.views.requestNavigateTo:  updated getSupportedViews to state that it only returns the primary views (Canvas, Home, Profile). This allows for secondary views to exist and be navigated to via requestNavigateTo. Also, changed requestNavigateTo to accept a View or a string as the View parameter.

Gadgets XML changes

  • Content Rewriter: Many of the containers already support content rewriting to reduce the size of CSS, HTML, and JavaScript as well as reduce the number of requests for data. This feature standardizes the behavior across containers. The feature allows the user to add and remove URLs from rewriting.
  • Data Pipelining: Adds a new set of tags where the can populate a proxied request or surface with a set of JSON objects. Tags allow you to get the viewer, owner, a list of people, activities, or perform a makeRequest. For the same surface, the items appear in a JavaScript object accessible from opensocial.data.getDataContext().getDataSet('key for object').
  • Added an element to /ModulePrefs, Rating, that allows an application developer to self rate an application. Default value is age, in years, for a person to be allowed to install the application. Can also accept container dependent values, such as ESRB rating or other ratings.
  • Made the Views feature a Core part of the spec. 
  • Proxied content: Added language explaining the usage of href parameter on a <Content> tag and how that tag maps to an external resource.
  • Specified that the contaienr owns the page fragment identifier.
  • Added an application manifest that allows developers to specify which version of the application to use on different containers; which versions are development, testing, or production; and which versions correspond to different versions of OpenSocial.