| | | | | | | | | | | | | | | | | | | | |
. | Status | Last Updated | Proposal Id | Code Change | Summary | Thread link | | | | | | | | | | | | | | |
. | This is only a structured local copy of the mailing list. It just summarizes everything that has taken place there. See http://groups.google.com/group/opensocial-and-gadgets-spec for more info. | | | | Note: the templates discussion is separate from 0.8. It will most likely end up as a feature and not part of the main spec | | | | | | | | | | | | | | | |
. | | | | | | | | | | | | | | | | | | | | |
. | | | OpenSocial related things... | | | | | | | | | | | | | | | | | |
. | Spec agreed upon; 7 + votes, 0 - votes | 4/28/2008 | RESTFUL-001 | http://docs.google.com/View?docid=dc43mmng_2g6k9qzfb | Add support for RESTful urls so that app developers can get data outside of the javascript apis; see also "RESTful details" tab below. | http://groups.google.com/group/opensocial-and-gadgets-spec/browse_thread/thread/5b61cef7f36b45c0/29bd8eff3978dafe?lnk=gst&q=RESTful#29bd8eff3978dafe | | | | | | | | | | | | | | |
. | A zillion votes | 4/20/2008 | PERSON-001 | opensocial.Person.Field = { ... /** * A boolean indicating whether the person has used the current app. * @member opensocial.Person.Field */ HAS_APP : 'hasApp', ... }
opensocial.DataRequest.FilterType = { ... /** * Retrieves all friends that use this application. * * Note: Containers may define "use" in any manner they deem appropriate for * their functionality, and it is not expected that this field will have the exact * same semantics across containers * * @member opensocial.DataRequest.FilterType */ HAS_APP : 'hasApp' }; | Add a new person field called "HAS_APP". If supported by a container and requested by a gadget, will return true if the person has the app installed, and false otherwise. | http://groups.google.com/group/opensocial-and-gadgets-spec/browse_frm/thread/9c55f77cdd5873b2# | | | | | | | | | | | | | | |
. | 5 Positive Votes | 5/1/2008 | REQUEST_SHARE_APP-001 | 1. make an opensocial.NavigationParameters object, fields are "view", "parameters", "owner". 2. add an opt_params parameter to both the requestShareApp and the requestSendMessage methods 3. add two values that will be recognized in the opt_params bucket for both methods = "viewerDestination", "recipientDestination". these will both have type opensocial.NavigationParameters. 4. containers are free to ignore whichever parts of these new optional params they want but of course will make their gadget developers happier if they respect more of the params. this way, orkut doesn't have to change the view if it doesn't want to, but it can still respect the passed in params. on the other hand, hi5 could theoretically respect the view type, but always have viewer = owner (or whatever) | I'd propose we consider for 0.8 the addition on a params field to requestShareApp, similar to view-params in gadgets.views.requestNavigateTo. | http://groups.google.com/group/opensocial-and-gadgets-spec/browse_frm/thread/3f257fa792254f4c | | | | | | | | | | | | | | |
. | Closed for 0.8 | April 30 - didn't get consensus | REQUEST_SHARE_APP-002 | * @param {Function} opt_callback ... it will be passed a ResponseItem... * The data on the response item may be set. If there was no error and the * response item is not null, then it will be an array of person ids * (Array<String>) indicating which people were successfully asked to use * the app. * * @member opensocial */ opensocial.requestShareApp = function(recipients, reason, opt_callback) {}; | The 0.7 spec says that no data will be set on the ResponseItem for the request* calls. Has there been any discussion on adding data to successful responses? For example, our API servers will return the following response for a call to send notifications:
{"notification_response":{"sent_ids":1000}}
If we standardized on some sort of similar response we could set the ResponseItem data field and thereby notify developers which users actually received their messages, which is something we've had requests for and is a feature of the FB platform.
Is a standard response for activity and messages part of the REST API proposal? And if so, is it stable enough for hi5 to implement that response format for launch? | http://groups.google.com/group/opensocial-and-gadgets-spec/browse_frm/thread/04d654c18fc52c06# | | | | | | | | | | | | | | |
. | Closed for 0.8 | April 30 - didn't get consensus | REQUEST_SEND_MESSAGE-001 | * @param {Function} opt_callback ... it will be passed a ResponseItem... * The data on the response item may be set. If there was no error and the * response item is not null, then it will be an array of person ids * (Array<String>) indicating which people were successfully sent * a message. * * @member opensocial opensocial.requestSendMessage = function(recipients, message, opt_callback) {}; | See REQUEST_SHARE_APP-002 | http://groups.google.com/group/opensocial-and-gadgets-spec/browse_frm/thread/04d654c18fc52c06# | | | | | | | | | | | | | | |
. | Closed for 0.8 | April 30 - didn't get consensus | REQUEST_CREATE_ACTIVITY-001 | * @param {Function} opt_callback ... it will be passed a ResponseItem... * The data on the response item may be set. If there was no error and the * response item is not null, then it will be ??????? * * @member opensocial opensocial.requestCreateActivity... | See REQUEST_SHARE_APP-002 - what is the response type though? | http://groups.google.com/group/opensocial-and-gadgets-spec/browse_frm/thread/04d654c18fc52c06# | | | | | | | | | | | | | | |
. | 5 Positive Votes | 4/25/2008 | IS_FRIEND-001 | opensocial.DataRequest.PeopleRequestFields = { // profileDetails, sortOrder, filter, etc ... /** * Additional options to be passed into the Filter. Specified as a Map<String, Object>. */ FILTER_OPTIONS: 'filterOptions' ... }
opensocial.DataRequest.FilterType = { // currently just all and hasApp ... /** * Will filter the people requested by checking if they are friends with * the given idSpec. Expects a filterOptions parameter to be passed with the following fields defined: * - idSpec The idSpec that each person must be friends with. * - networkDistance An optional parameter, used to specify how long the connection can be for * two people to be considered friends. Defaults to 1 (they must be the same person or directly be friends). Containers * can choose which values of this parameter they will support. * As an example, 2 would mean "friend of a friend". */ IS_FRIENDS_WITH: 'isFriendsWith' } | This issue was raised by a gadget developer
The PhotoAttack app restricts attacking to just friends - this is a wise product choice to avoid spam. Say Abby attacks Bob. Bob gets the attack but before he can attack back, the app needs to check if Abby is still Bob's friend. Currently, the app needs to fetch all of Bob's friends and confirm that Abby is on that list before allowing Bob to attack her back.Fetching all friends (upto 1000) is an expensive operation. So, the ask is to support an IsFriend method.
It seems like this problem can be handled in a number of ways..
1. Implement a DataRequest.newFetchAreFriends(<user spec>,<user spec>, opt_callback)
2. Add support for a filter on DataRequest.newFetchPeopleRequest that computes the intersection of two user specs e.g. DataRequest.newFetchPeopleRequest(<id spec> , {..., intersect : <id spec>, ...}) This would allow for checking if the viewer was the owner friend by DataRequest.newFetchPeopleRequest(OWNER_FRIENDS, {..., intersect : VIEWER ...})
In general I think I prefer the 2nd approach as its a more general pattern and has a lower impact on the API. It does however imply a general join facility that may be expense/difficult for containers to implement and enforce quota constraints on. | http://groups.google.com/group/opensocial-and-gadgets-spec/browse_frm/thread/95570a27ab945f6d# | | | | | | | | | | | | | | |
. | 5 Positive Votes | 5/1/2008 | PERSON-002 | /** * @static * @class * The enum keys used by the presence field. * <p><b>See also:</b> * <a href="opensocial.Person.Field.html"> * opensocial.Person.Field.Presence</a> * </p> * * @name opensocial.Enum.Presence */ opensocial.Enum.Presence = { /** * The entity or resource is off line. * @member opensocial.Enum.Presence */ OFFLINE : 'OFFLINE', /** * The entity or resource is on line. * @member opensocial.Enum.Presence */ ONLINE : 'ONLINE', /** * The entity or resource is temporarily away. * @member opensocial.Enum.Presence */ AWAY : 'AWAY', /** * The entity or resource is actively interested in chatting. * @member opensocial.Enum.Presence */ CHAT : 'CHAT', /** * The entity or resource is busy (dnd = "Do Not Disturb"). * @member opensocial.Enum.Presence */ DND : 'DND', /** * The entity or resource is away for an extended period * (xa = "eXtended Away"). * @member opensocial.Enum.Presence */ XA : 'XA' };
/** * Person's current network status. Specified as an Enum with the enum's * key referencing opensocial.Enum.Presence. * Not supported by all containers. * * @member opensocial.Person.Field */ NETWORK_PRESENCE : 'networkPresence', | Somehow add presence info, maybe an enum, maybe a filter etc | http://groups.google.com/group/opensocial-and-gadgets-spec/browse_frm/thread/75303d2a347ea9f5# | | | | | | | | | | | | | | |
. | 5 Positive Votes | 4/24/2008 | RESPONSE_ITEM-001 | opensocial.ResponseItem.Error = { ...
/** * The gadget passed a quota on the request. Example quotas include a * max number of calls per day, calls per user per day, calls within a * certain time period and so forth. * * @member opensocial.ResponseItem.Error */ LIMIT_EXCEEDED : 'limitExceeded',
... } | Add a limit exceeded error value to allow developers to treat that scenario differently. | http://groups.google.com/group/opensocial-and-gadgets-spec/browse_frm/thread/e58410c6054eec7a | | | | | | | | | | | | | | |
. | Positive Votes | 5/1/2008 | DATA_STORE-001 | 1. For 0.8, we change the default type for all app data from String to Json. 2. For 0.9, we can discuss the pros and cons of having explicit types that developers can use. Thankfully, the 0.8 change doesn't prevent this from happening.. it just changes the default type. | Somehow handling json data better in the app data store | http://groups.google.com/group/opensocial-and-gadgets-spec/browse_frm/thread/4ed634f97029f0cd# | | | | | | | | | | | | | | |
. | 5 Positive Votes | 4/28/2008 | PERSON-003 | /** * @static * @class * The enum keys used by the lookingFor field. * <p><b>See also:</b> * <a href="opensocial.Person.Field.html"> * opensocial.Person.Field.LookingFor</a> * </p> * * @name opensocial.Enum.LookingFor */ opensocial.Enum.LookingFor = { /** @member opensocial.Enum.LookingFor */ DATING : 'DATING', /** @member opensocial.Enum.LookingFor */ FRIENDS : 'FRIENDS', /** @member opensocial.Enum.LookingFor */ RELATIONSHIP : 'RELATIONSHIP', /** @member opensocial.Enum.LookingFor */ NETWORKING : 'NETWORKING', /** @member opensocial.Enum.LookingFor */ ACTIVITY_PARTNERS : 'ACTIVITY_PARTNERS', /** @member opensocial.Enum.LookingFor */ RANDOM : 'RANDOM' };
/** * Person's statement about who or what they are looking for, or what they are * interested in meeting people for. Specified as an Array<Enum> with the enum's * key referencing opensocial.Enum.LookingFor. * Not supported by all containers. * * @member opensocial.Person.Field */ LOOKING_FOR : 'lookingFor', | Make the "interested in" field more structured. | http://groups.google.com/group/opensocial-and-gadgets-spec/browse_thread/thread/6b91c66efbb7ccb1 | | | | | | | | | | | | | | |
. | 5 Positive Votes | April 124 - 5 votes | IDSPEC-001 | 1. Add a new opensocial.IdSpec object. opensocial.IdSpec = function() {}; opensocial.IdSpec.Field = { USER_ID : 'userId', GROUP_ID : 'groupId', NETWORK_DISTANCE : 'networkDistance', } opensocial.IdSpec.prototype.getField = function(key) {};
2. Change all IdSpec references to be opensocial.IdSpec
3. Change the filtering proposal to get rid of the networkDistance param as it is now within the idSpec
| Generalize the idSpec model so that we can handle more types of people requests. | http://groups.google.com/group/opensocial-and-gadgets-spec/browse_thread/thread/6b2ba00f8a38cb45 | | | | | | | | | | | | | | |
. | 7 Positive votes | April 27 - 7 votes | FILTER_TYPE-001 | opensocial.DataRequest.FilterType = { /** * Retrieves only the user's top friends. * * @member opensocial.DataRequest.FilterType */ TOP_FRIENDS : 'topFriends', ... } | Top friends should be a filter as well as a sort | http://groups.google.com/group/opensocial-and-gadgets-spec/browse_thread/thread/ae406a39198ecd31 | | | | | | | | | | | | | | |
. | 5 Positive Votes | 4/30/2008 | FETCH_ACTIVITIES-001 | Get rid of the "activities" pointer in the fetchActivities request instead of: (datarequest.js line 328) * When processed, returns an object whose "activities" property is a Collection<Activity> object. do this: * When processed, returns an Collection<Activity> object. | get rid of activities pointer on fetch activities and add paging | http://groups.google.com/group/opensocial-and-gadgets-spec/browse_thread/thread/bfba9d321b5be7d1 | | | | | | | | | | | | | | |
. | 5 Positive Votes | 5/1/2008 | URL_TEMPLATES-001 | opensocial.getContainerUrlTemplate = function() { ... }
This returns a string containing "${}" variables. The four supported variables are: - name: the name or id of the application - owner: the id of the owner of the page - path: an application-defined path string - params: application-defined parameters, query-encoded.
Examples of URL template strings: http://container.com/apps/${name}/${owner}/${path}?${params} http://apps.container.com/${name}#${path}?${params} http://container.com/?app=${name}&owner=${owner}&path=${path}&${params} | Gadget developers need real urls and not just js calls in order to make their apps better. | http://groups.google.com/group/opensocial-and-gadgets-spec/browse_thread/thread/bfb8c9aaee0ef762 | | | | | | | | | | | | | | |
. | 5 Positive Votes | 4/27/2008 | ESCAPING_DATA-001 | opensocial.DataRequest.prototype.newFetchPersonAppDataRequest = function(idSpec, keys, opt_params) {}
plus a new enum...
opensocial.DataRequest.DataRequestFields = { /** * An escape type enum specifying whether or not to automatically * escape all of the data returned. Defaults to true. * * @member opensocial.DataRequest.PeopleRequestFields */ ESCAPE_VALUES : 'escapeValues', }
ESCAPE_TYPE: 'htmlEscape', // default value 'none', // use this if you want to enable XSS worms to attack your users. | Add a flag to turn off auto-escaping of data | http://groups.google.com/group/opensocial-and-gadgets-spec/browse_thread/thread/974695cf0d0140ff | | | | | | | | | | | | | | |