<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/xsl' href='./OpenSocial.xslt' ?>
<?rfc toc="yes"?>
<?rfc-ext allow-markup-in-artwork="yes"?>
<!DOCTYPE rfc PUBLIC "-//IETF//DTD RFC 2629//EN"
"http://xml.resource.org/authoring/rfc2629.dtd">
<rfc ipr="full3978"
     docName="opensocial-social-data-specification-2-5-1"
     xmlns:x="http://purl.org/net/xml2rfc/ext">
 <front>
  <title>OpenSocial Social Data Specification 2.5.1</title>
  <author fullname='OpenSocial and Gadgets Specification Group'>
   <address>
    <email>opensocial-and-gadgets-spec@googlegroups.com</email>
   </address>
  </author>
  <date month="August" year="2013" />
  <abstract>
   <t>This document defines all the data objects used in the
   OpenSocial APIs. Objects defined here make use of the <xref
   target="CoreData">Core Data</xref> objects. The structure of the
   data is used by many different APIs: 
   <list style="symbols">
     <t>JavaScript within the gadget is done using osapi APIs,
     defined in the <xref target="SocialGadget">Social Gadget
     Specification</xref></t>
     <t>REST and RPC access is done using APIs defined in the
     <xref target="SocialServer">Social API Server Spec</xref></t>
   </list>
   </t> 
  </abstract>
 </front>
 <middle>
  <section title="Notation and Conventions">
    <t>Domain name examples use <xref target="RFC2606">RFC2606</xref>.</t>
   <section title="Requirements">
    <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
    document are to be interpreted as described in 
    <xref target="RFC2119">RFC2119</xref>.</t>
    <t>An implementation is not compliant if it fails to satisfy one or more of
    the MUST or REQUIRED level requirements for the protocols it
    implements.</t>
   </section>
   <section title="Augmented BNF">
    <t>The grammatical rules in this document are to be interpreted as
    described in <xref target="RFC2234">RFC2234</xref> (Augmented Backus-Naur 
    Form).</t>   
    <t>The following constructs are introduced in this document to augment 
    RFC2234:</t>
    <list style="hanging">
     <t hangText="{rule1 rule2}">
      <t>Elements enclosed in braces (squiggly brackets) are treated as a
      single, UNORDERED element. Its contents may occur in any order. Hence: 
      <artwork type="abnf" xml:space="preserve">{elem foo} bar</artwork>
      would match (elem foo bar) and (foo elem bar).</t>
      <t>NOTE: Specifying alternatives is quite different from specifying set
      grouping. Alternatives indicate the matching of exactly one (sub-)rule
      out of the total grouping. The set mechanism indicates the matching of a
      string which contains all of the elements within the group; however the
      elements may occur in any order.</t>
     </t>
     <t hangText="#rule">A construct "#" is defined, similar to "*", for
     defining lists of elements. The full form is "&lt;n&gt;#&lt;m&gt;element"
     indicating at least &lt;n&gt; and at most &lt;m&gt; elements, each
     separated by one or more commas (",") and OPTIONAL linear white space
     (LWS). This makes the usual form of lists very easy; a rule such as 
     <artwork type="inline" xml:space="preserve">( *LWS element *( *LWS "," *LWS element ))</artwork>
     can be shown as 
     <artwork type="inline" xml:space="preserve">1#element</artwork>
     Wherever this construct is used, null elements are allowed, but do
     not contribute to the count of elements present. That is, "(element), ,
     (element) " is permitted, but counts as only two elements. Therefore, 
     where at least one element is required, at least one non-null element MUST 
     be present.  Default values are 0 and infinity so that "#element" allows 
     any number, including zero; "1#element" requires at least one; and 
     "1#2element" allows one or two.</t>
     <t hangText="&amp;rule">A construct "&amp;" is defined, similar to "#",
     which uses an ampersand (&amp;) instead of commas, and MUST NOT include
     linear white space between elements.</t>
     <t hangText="implied *LWS">The grammar described by this specification is
     word-based. Except where noted otherwise, linear white space (LWS) can be
     included between any two adjacent words (token or quoted-string), and
     between adjacent words and separators, without changing the interpretation
     of a field. At least one delimiter (LWS and/or separators) MUST exist
     between any two tokens, since they would otherwise be interpreted as a
     single token.</t>
    </list>
   </section>
   <section title="Basic Rules">
    <t>The following rules are used throughout this specification to describe
    basic parsing constructs. The US-ASCII coded character set is defined by 
    <xref target="RFC20" /> </t>
    <artwork type="abnf"
         xml:space="preserve">
<![CDATA[
OCTET          = <any 8-bit sequence of data>
CHAR           = <any US-ASCII character (octets 0 - 127)>
UPALPHA        = <any US-ASCII uppercase letter "A".."Z">
LOALPHA        = <any US-ASCII lowercase letter "a".."z">
ALPHA          = UPALPHA / LOALPHA
DIGIT          = <any US-ASCII digit "0".."9">
CTL            = <any US-ASCII control character (octets 0 - 31) and DEL (127)>
CR             = <US-ASCII CR, carriage return (13)>
LF             = <US-ASCII LF, linefeed (10)>
SP             = <US-ASCII SP, space (32)>
HT             = <US-ASCII HT, horizontal-tab (9)>
<">            = <US-ASCII double-quote mark (34)>
CRLF           = CR LF
LWS            = [CRLF] 1*( SP / HT )
TEXT           = <any OCTET except CTLs, but including LWS>
COMMA          = <US-ASCII comma (44)>
      ]]>
</artwork>
   </section>
  </section>
  <section title="Primary Social Data"
           anchor="primary-social-data">
    <t>Primary Social Data objects represent objects that are directly
    addressable through top level API calls, such as osapi, RPC, REST
    and Pipelining tags.</t>
   <section title="Activity" anchor="Activity">
    <x:deprecated note="Deprecated in OpenSocial 2.0.  Will be removed in future version; use Activity Streams instead.">
    <t>An OpenSocial Activity represents a short summary or notification of a
    timestamped event, often with pointers for more information.</t>
    <t>Activities are rendered with a title and an optional activity body.  The title and body may be set directly as strings when calling
     opensocial.newActivity. However, it is usually beneficial to create
     activities using Message Templates for the title and body.</t>
     <t>Users have many activities in their activity streams, and
     containers may not show every activity that is visible to a user. To help
     display large numbers of activities, containers summarize a list of
     activities from a given source to a single entry.</t>
     <t>You can provide Activity Summaries to customize the text shown when
     multiple activities are summarized. If no customization is provided, a
     container may ignore your activities altogether or provide default text
     such as "Bob changed his status message + 20 other events like this."</t>
     <list style="symbols">
      <t>Activity Summaries always summarize around a specific key in a
      key/value pair. This is so that the summary can say something concrete
      (this is clearer in the example below).</t>
      <t>Other variables have synthetic "Count" variables created with the
      total number of items summarized.</t>
      <t>Message ID of the summary is the message ID of the main template + ":"
      + the data key</t>
     </list>
     <t>Example summaries: 
     <figure>
      <artwork xml:space="preserve">
&lt;messagebundle&gt;
    &lt;msg name="LISTEN_TO_THIS_SONG:Artist"&gt;
        ${Subject.Count} of your friends have suggested listening to songs
        by ${Artist}!
    &lt;/msg&gt;
    &lt;msg name="LISTEN_TO_THIS_SONG:Song"&gt;
        ${Subject.Count} of your friends have suggested listening to ${Song}
    !&lt;/msg&gt;
    &lt;msg name="LISTEN_TO_THIS_SONG:Subject"&gt;
        ${Subject.DisplayName} has recommended ${Song.Count} songs to you.
    &lt;/msg&gt;
&lt;/messagebundle&gt;
</artwork>
     </figure></t>
     <texttable>
      <ttcol align="left" width="15%">Field Name</ttcol>
      <ttcol align="left" width="21%">Field Type</ttcol>
      <ttcol align="left">Description</ttcol>
      <c>appId</c>
      <c><eref target="./Core-Data.xml#Object-Id">Object-Id</eref></c>
      <c>Specifying the application that this activity is associated with.</c>
      <c>body</c>
      <c>string</c>
      <c>Specifying an optional expanded version of an
      activity. Bodies may only have the following HTML tags: &lt;b&gt; &lt;i&gt;,
      &lt;a&gt;, &lt;span&gt;. The container may ignore this formatting when
      rendering the activity.</c>
      <c>bodyId</c>
      <c><eref target="./Core-Data.xml#Object-Id">Object-Id</eref></c>
      <c>Specifying the body template message ID in the gadget spec.</c>
      <c>externalId</c>
      <c><eref target="./Core-Data.xml#Object-Id">Object-Id</eref></c>
      <c>An optional ID generated by the posting application.</c>
      <c>id</c>
      <c><eref target="./Core-Data.xml#Object-Id">Object-Id</eref></c>
      <c>An ID that is permanently associated with this activity.</c>
      <c>mediaItems</c>
      <c>Array&lt;<x:ref>MediaItem</x:ref>&gt;</c>
      <c>Any photos, videos, or images that should be associated with
      the activity. Higher priority ones are higher in the list.</c>
      <c>postedTime</c>
      <c>string</c>
      <c>Specifying the time at which this activity took place in
      milliseconds since the epoch.</c>
      <c>priority</c>
      <c>number</c>
      <c>A number between 0 and 1 representing the relative priority
      of this activity in relation to other activities from the same
      source.</c>
      <c>streamFaviconUrl</c>
      <c>string</c>
      <c>Specifying the URL for the stream's favicon.</c>
      <c>streamSourceUrl</c>
      <c>string</c>
      <c>Specifying the stream's source URL.</c>
      <c>streamTitle</c>
      <c>string</c>
      <c>Specifing the title of the stream.</c>
      <c>streamUrl</c>
      <c>string</c>
      <c>Specifying the stream's URL.</c>
      <c>templateParams</c>
      <c></c>
      <c>A map of custom key/value pairs associated with this
      activity. These are used for evaluation in templates. The
      data has type Map&lt;String, Object&gt;. The object may be either a
      String or an opensocial.Person. When passing in a person with
      key PersonKey, can use the following replacement variables in
      the template:
       <list style="symbols">
        <t>PersonKey.DisplayName - Display name for the person</t>
        <t>PersonKey.ProfileUrl. URL of the person's profile</t>
        <t>PersonKey.Id - The ID of the person</t>
        <t>PersonKey - Container may replace with DisplayName, but may also
        optionally link to the user.</t>
       </list>
      </c> 
      <c>title</c>
      <c>string</c>
      <c>Specifying the primary text of an activity. Titles may only
      have the following HTML tags: &lt;b&gt; &lt;i&gt;, &lt;a&gt;,
      &lt;span&gt;. The container may ignore this formatting when
      rendering the activity.</c>
      <c>url</c>
      <c>string</c>
      <c>Specifying the URL that represents this activity.</c>
      <c>userId</c>
      <c><eref target="./Core-Data.xml#Object-Id">Object-Id</eref></c>
      <c>ID of the user who this activity is for.</c>
     </texttable>
    <t>A minimal Activity example: 
    <figure>
     <preamble>application/json representation:</preamble>
     <artwork xml:space="preserve">
{
 "id" : "http://example.org/activities/example.org:87ead8dead6beef/self/af3778",
 "title" : "&lt;a href=\"foo\"&gt;some activity&lt;/a&gt;",
 "updated" : "2008-02-20T23:35:37.266Z",
 "body" : "Some details for some activity",
 "bodyId" : "383777272",
 "url" : "http://api.example.org/activity/feeds/.../af3778",
 "userId" : "example.org:34KJDCSKJN2HHF0DW20394"
}      
</artwork>
    </figure>
    <figure>
     <preamble>application/xml representation:</preamble>
     <artwork xml:space="preserve">
&lt;activity xmlns="http://ns.opensocial.org/2008/opensocial"&gt;
  &lt;id&gt;http://example.org/activities/example.org:87ead8dead6beef/self/af3778&lt;/id&gt;
  &lt;title&gt;&lt;a href=\"foo\"&gt;some activity&lt;/a&gt;&lt;/title&gt;
  &lt;updated&gt;2008-02-20T23:35:37.266Z&lt;/updated&gt;
  &lt;body&gt;Some details for some activity&lt;/body&gt;
  &lt;bodyId&gt;383777272&lt;/bodyId&gt;
  &lt;url&gt;http://api.example.org/activity/feeds/.../af3778&lt;/url&gt;
  &lt;userId&gt;example.org:34KJDCSKJN2HHF0DW20394&lt;/userId&gt;
&lt;/activity&gt;
</artwork>
    </figure>
    <t>Activities have extensive Atom hoisting rules to ensure maximum compatibility with standard feed processing code: </t>
    <list style="symbols">
     <t>atom:entry/atom:title aliases "title"</t>
     <t>atom:entry/atom:summary aliases "body"</t>
     <t>atom:entry/atom:link@rel="self" aliases "url"</t>
     <t>atom:entry/atom:icon aliases "faviconUrl"</t>
     <t>atom:entry/atom:source/atom:title aliases "streamTitle"</t>
     <t>atom:entry/atom:source/atom:link@rel="self" aliases "streamUrl"</t>
     <t>atom:entry/atom:generator/atom:uri aliases "appId"</t>
     <t>atom:entry/atom:author/atom:uri aliases "userId"</t>
    </list>
    <figure>
     <preamble>application/atom+xml representation:</preamble>
     <artwork xml:space="preserve">
&lt;entry xmlns="http://www.w3.org/2005/Atom"&gt;
 &lt;id&gt;http://example.org/activities/example.org:87ead8dead6beef/self/af3778&lt;/id&gt;
 &lt;title&gt;some activity&lt;/title&gt;&lt;!-- activity.title or activity.titleId --&gt;
 &lt;updated&gt;2008-02-20T23:35:37.266Z&lt;/updated&gt;&lt;!-- postedTime, or datetime.utcnow() --&gt;
 &lt;author&gt;
   &lt;uri&gt;urn:guid:example.org:34KJDCSKJN2HHF0DW20394&lt;/uri&gt;
   &lt;name&gt;John Smith&lt;/name&gt; 
 &lt;/author&gt;
 &lt;link rel="self" type="application/atom+xml" href="http://api.example.org/activity/feeds/.../af3778" /&gt;
 &lt;link rel="alternate" type="application/json" href="http://example.org/activities/example.org:87ead8dead6beef/self/af3778" /&gt;&lt;!-- alternate JSON response --&gt;
 &lt;content type="application/xml"&gt;
    &lt;activity xmlns="http://ns.opensocial.org/2008/opensocial"&gt;
      &lt;id&gt;http://example.org/activities/example.org:87ead8dead6beef/self/af3778&lt;/id&gt;
      &lt;title type="html"&gt;&lt;a href=\"foo\"&gt;some activity&lt;/a&gt;&lt;/title&gt;
      &lt;updated&gt;2008-02-20T23:35:37.266Z&lt;/updated&gt;
      &lt;body&gt;Some details for some activity&lt;/body&gt;
      &lt;bodyId&gt;383777272&lt;/bodyId&gt;
      &lt;url&gt;http://api.example.org/activity/feeds/.../af3778&lt;/url&gt;
      &lt;userId&gt;example.org:34KJDCSKJN2HHF0DW20394&lt;/userId&gt;
    &lt;/activity&gt;
 &lt;/content&gt;
&lt;/entry&gt;       
</artwork>
    </figure>Note: The title field is a string that may only have the following
    html tags: &lt;b&gt;, &lt;i&gt;, &lt;a&gt;, &lt;span&gt;. The container may
    ignore this formatting when rendering the activity.</t>
   </x:deprecated>
   </section>

  <section title="Activity Streams Support" anchor="ActivityStreamsSupport">
   <xref target='Issue-1140'>Discussion</xref>
       <t>
           As a person's actions become increasingly distributed, it is
           important
           to achieve a level of interoperability betweent the systems
           that they
           interact with. The Activity Streams specification has been
           incorporated in order to improve interoperability with other systems
           that may not be based on OpenSocial. This will provide implementors and
           developers a wide range of options for incorporating social data within
           their applications.
       </t>
       <t>
           OpenSocial introduces support for the Activity Streams 1.0 specification following the pattern of support for
           Portable Contacts. The data structures for ActivityObject and ActivityEntry are brought into Social-Data, an
           new service is introduced in Social-API-Server, and application APIs are defined in Social-Gadget. In the
           case of Activity Streams, there are several constructs that exist in OpenSocial that will be present in the
           activity stream information that flows within a container and between external Activity Stream endpoints.
           Included in the definition of the Activity Stream data structures in this specification are mappings to the
           existing OpenSocial objects.
       </t>


       <section title="ActivityEntry" anchor="ActivityEntry">

    
    <t>In its simplest form, an activity consists of an actor, a verb,
	an an object, and a target. It tells the story of a person performing
	an action on or with an object -- "Geraldine posted a photo to her
	album" or "John shared a video". </t>
           <texttable>
               <ttcol align="left" width="15%">Field Name</ttcol>
               <ttcol align="left" width="21%">Field Type</ttcol>
               <ttcol align="left">Description</ttcol>
               <c>actor</c>
               <c>
                   <eref target="./Social-Data.xml#ActivityObject">ActivityObject</eref>
               </c>
               <c>Describes the entity that performed the activity. An activity MUST contain one actor property whose
                   value is a single <eref target="./Social-Data.xml#ActivityObject">ActivityObject</eref>.
               </c>
               <c>content</c>
               <c>string</c>
               <c>Natural-language description of the activity encoded as a single JSON String containing HTML markup.
                   Visual elements such as thumbnail images MAY be included. An activity MAY contain a content property.
               </c>
               <c>generator</c>
               <c>
                   <eref target="./Social-Data.xml#ActivityObject">ActivityObject</eref>
               </c>
               <c>Describes the application that generated the activity. An activity MAY contain a generator property
                   whose value is a single <eref target="./Social-Data.xml#ActivityObject">ActivityObject</eref>.
                   OpenSocial note: If an OpenSocial application created the Activity Entry, this value SHOULD be the <xref
                           target="App-Id">appId</xref>.
               </c>
               <c>icon</c>
               <c>
                   <eref target="./Social-Data.xml#MediaLink">MediaLink</eref>
               </c>
               <c>Description of a resource providing a visual representation of the object, intended for human
                   consumption. The image SHOULD have an aspect ratio of one (horizontal) to one (vertical) and SHOULD
                   be suitable for presentation at a small size. An activity MAY have an icon property.
               </c>
               <c>id</c>
               <c>string</c>
               <c>Provides a permanent, universally unique identifier for the activity in the form of an absolute IRI.
                   An activity SHOULD contain a single id property. If an activity does not contain an id property,
                   consumers MAY use the value of the url property as a less-reliable, non-unique identifier. OpenSocial
                   note: The value of id MUST be the IRI form of the <eref target="./Core-Data.xml#MGlobal-Id">Global-Id</eref>.
               </c>
               <c>object</c>
               <c>
                   <eref target="./Social-Data.xml#ActivityObject">ActivityObject</eref>
               </c>
               <c>Describes the primary object of the activity. For instance, in the activity, "John saved a movie to
                   his wishlist", the object of the activity is "movie". An activity SHOULD contain an object property
                   whose value is a single Object. If the object property is not contained, the primary object of the
                   activity MAY be implied by context.
               </c>
               <c>published</c>
               <c>string</c>
               <c>The date and time at which the activity was published. An activity MUST contain a published
                   property.
               </c>
               <c>provider</c>
               <c>
                   <eref target="./Social-Data.xml#ActivityObject">ActivityObject</eref>
               </c>
               <c>Describes the application that published the activity. Note that this is not necessarily the same
                   entity that generated the activity. An activity MAY contain a provider property whose value is a
                   single <eref target="./Social-Data.xml#ActivityObject">ActivityObject</eref>. OpenSocial note: The
                   provider SHOULD be URL of the domain part of the Global-Id plus the OpenSocial service. Example:
                   http://mySocialNetwork.com/activitystreams
               </c>
               <c>target</c>
               <c>
                   <eref target="./Social-Data.xml#ActivityObject">ActivityObject</eref>
               </c>
               <c>Describes the target of the activity. The precise meaning of the activity's target is dependent on the
                   activities verb, but will often be the object the English preposition "to". For instance, in the
                   activity, "John saved a movie to his wishlist", the target of the activity is "wishlist". The
                   activity target MUST NOT be used to identity an indirect object that is not a target of the activity.
                   An activity MAY contain a target property whose value is a single <eref
                           target="./Social-Data.xml#ActivityObject">ActivityObject</eref>.
               </c>
               <c>title</c>
               <c>string</c>
               <c>Natural-language title or headline for the activity encoded as a single JSON String containing HTML
                   markup. An activity MAY contain a title property.
               </c>
               <c>updated</c>
               <c>string</c>
               <c>The date and time at which a previously published activity has been modified. An Activity MAY contain
                   an updated property.
               </c>
               <c>url</c>
               <c>string</c>
               <c>An IRI identifying a resource providing an HTML representation of the activity. An activity MAY
                   contain a url property.
               </c>
               <c>verb</c>
               <c>string</c>
               <c>Identifies the action that the activity describes. An activity SHOULD contain a verb property whose
                   value is a JSON String that is non-empty and matches either the "isegment-nz-nc" or the "IRI"
                   production in RFC3339. Note that the use of a relative reference other than a simple name is not
                   allowed. If the verb is not specified, or if the value is null, the verb is assumed to be "post".
               </c>

           </texttable>
           <section title="OpenSocial Extensions" anchor="ActivityStreamOpenSocialExtensions">
             
   <t>OpenSocial adds an
  additional fields to the data model, for example "actionLinks".
  Because these are extensions, they are contained in an enclosing
  namespace, "openSocial".  OpenSocial defined extensions to the 
  Activity Streams data model are defined below.</t>

               <texttable>
               <ttcol align="left" width="15%">Field Name</ttcol>
               <ttcol align="left" width="21%">Field Type</ttcol>
               <ttcol align="left">Description</ttcol>
               <c>actionLinks</c>
               <c>Array&lt;<eref target="./Social-Data.xml#ActionLink">ActionLink</eref>&gt;
               </c>
               <c>An "openSocial" namespaced array of actionLinks associated with this Activity.</c>
               <c>deliverTo:</c>
	           <c>
	               <eref target="./Core-Data.xml#Array">Array&lt;</eref>
	               <eref target="./Core-Data.xml#Global-Id">Global-Id&gt;</eref>
	           </c>
	           <c>Many social business systems incorporate the idea that an activity may not be public. By including the
	               "deliverTo:" field, a specific user(s) will receive the activity. The Activity MUST be delivered to the
	               recipients specified in the deliverTo: Array
	           </c>    
               <c>embed</c>
               <c><eref target="./Core-Gadget.xml#Embedded-Experiences">Embedded Experience</eref>
               </c>
               <c>An "openSocial" namespaced <eref target="./Core-Gadget.xml#Embedded-Experiences">Embedded Experience data model</eref> associated with this Activity.</c>
               </texttable>
        <xref target="Issue-1319">Discussion</xref> <xref target="Issue-1236">Discussion</xref> <xref target="Issue-1318">Discussion</xref>
           </section>
    A complete ActivityEntry example
    <figure>
     <preamble>application/json representation:</preamble>
     <artwork xml:space="preserve">
{
  provider: {
    url: "http://example.org/activity-stream"
  },
  object: {
    summary: "Photo posted",
    image: {
      height: 250,
      width: 250,
      url: "http://example.org/album/my_fluffy_cat_thumb.jpg"
    },
    downstreamDuplicates: [
      "downstream1",
      "downstream2"
    ],
    url: "http://example.org/album/my_fluffy_cat.jpg",
    id: "object2",
    upstreamDuplicates: [
      "upstream1",
      "upstream2"
    ],
    attachments: [
      {
        id: "attachment1",
        objectType: "attachment"
      },
      {
        id: "attachment2",
        objectType: "attachment"
      }
    ],
    objectType: "photo"
  },
  actor: {
    image: {
      height: 250,
      width: 250,
      url: "http://example.org/martin/image"
    },
    url: "http://example.org/john",
    id: "john.doe",
    displayName: "John Doe",
    objectType: "person"
  },
  id: "activity2",
  title: "John posted a new video to his album.",
  verb: "post",
  target: {
    image: {
      height: 250,
      width: 250,
      url: "http://example.org/album/thumbnail.jpg"
    },
    url: "http://example.org/album/",
    id: "target2",
    displayName: "John's Photo Album",
    objectType: "photo-album"
  },
  generator: {
    url: "http://example.org/activities-app"
  },
  published: "2011-02-10T15:04:55Z",
  openSocial: {
    actionLinks:[{
      caption: "Add Friend",
      target: "http://example.org/friends/jane.doe",
      httpVerb: "POST"
    }]
  }
}</artwork>
    </figure>
    <figure>
     <preamble>application/xml representation:</preamble>
     <artwork xml:space="preserve">
&lt;activityEntry xmlns="http://ns.opensocial.org/2008/opensocial"&gt;
  &lt;actor&gt;
    &lt;displayName&gt;John Doe&lt;/displayName&gt;
    &lt;id&gt;john.doe&lt;/id&gt;
    &lt;image&gt;
      &lt;height&gt;250&lt;/height&gt;
      &lt;url&gt;http://example.org/john/image&lt;/url&gt;
      &lt;width&gt;250&lt;/width&gt;
    &lt;/image&gt;
    &lt;objectType&gt;person&lt;/objectType&gt;
    &lt;url&gt;http://example.org/john&lt;/url&gt;
  &lt;/actor&gt;
  &lt;generator&gt;
    &lt;url&gt;http://example.org/activities-app&lt;/url&gt;
  &lt;/generator&gt;
  &lt;id&gt;activity2&lt;/id&gt;
  &lt;object&gt;
    &lt;attachments&gt;
      &lt;object&gt;
        &lt;id&gt;attachment1&lt;/id&gt;
        &lt;objectType&gt;attachment&lt;/objectType&gt;
      &lt;/object&gt;
      &lt;object&gt;
        &lt;id&gt;attachment2&lt;/id&gt;
        &lt;objectType&gt;attachment&lt;/objectType&gt;
      &lt;/object&gt;
    &lt;/attachments&gt;
    &lt;downstreamDuplicate&gt;downstream1&lt;/downstreamDuplicate&gt;
    &lt;downstreamDuplicate&gt;downstream2&lt;/downstreamDuplicate&gt;
    &lt;id&gt;object2&lt;/id&gt;
    &lt;image&gt;
      &lt;height&gt;250&lt;/height&gt;
      &lt;url&gt;http://example.org/album/my_fluffy_cat_thumb.jpg&lt;/url&gt;
      &lt;width&gt;250&lt;/width&gt;
    &lt;/image&gt;
    &lt;objectType&gt;photo&lt;/objectType&gt;
    &lt;summary&gt;Photo posted&lt;/summary&gt;
    &lt;upstreamDuplicate&gt;upstream1&lt;/upstreamDuplicate&gt;
    &lt;upstreamDuplicate&gt;upstream2&lt;/upstreamDuplicate&gt;
    &lt;url&gt;http://example.org/album/my_fluffy_cat.jpg&lt;/url&gt;
  &lt;/object&gt;
  &lt;provider&gt;
    &lt;url&gt;http://example.org/activity-stream&lt;/url&gt;
  &lt;/provider&gt;
  &lt;published&gt;2011-02-10T15:04:55Z&lt;/published&gt;
  &lt;target&gt;
    &lt;displayName&gt;John&apos;s Photo Album&lt;/displayName&gt;
    &lt;id&gt;target2&lt;/id&gt;
    &lt;image&gt;
      &lt;height&gt;250&lt;/height&gt;
      &lt;url&gt;http://example.org/album/thumbnail.jpg&lt;/url&gt;
      &lt;width&gt;250&lt;/width&gt;
    &lt;/image&gt;
    &lt;objectType&gt;photo-album&lt;/objectType&gt;
    &lt;url&gt;http://example.org/album/&lt;/url&gt;
  &lt;/target&gt;
  &lt;title&gt;John posted a new video to his album.&lt;/title&gt;
  &lt;verb&gt;post&lt;/verb&gt;
&lt;/activityEntry&gt;</artwork>
    </figure>
    </section>
   </section>


   <section title="AppData" anchor="AppData">
     <t>OpenSocial defines a data store that applications can use to
     read and write user-specific data. This data store can be read by
     anyone who can see the gadget, but only the VIEWER's data is
     writable.</t>
     <t>The keys that developers specify to index this data must only
     contain alphanumeric (A-Za-z0-9) characters, underscore(_),
     dot(.) or dash(-).</t>
     <t>Since application data is often created based on user inputs,
     OpenSocial containers perform automatic HTML escaping of all
     application data. However, developers have the option of turning
     off this escaping by setting the escapeType parameter on
     newFetchPersonAppData and getField calls.</t>
     <t>Because of the potential for abuse, containers MAY implement
     quotas or rate limits to preserve their disk space.</t>
     <texttable>
      <ttcol align="left" width="15%">Field Name</ttcol>
      <ttcol align="left" width="21%">Field Type</ttcol>
      <ttcol align="left">Description</ttcol>
      <c>key</c>
      <c>string</c>
      <c>A unique value with respect to the context it is being stored
      within (typically a person).</c>
      <c>value</c>
      <c>string</c>
      <c>An arbitary string.</c>
     </texttable>
    <section title="An isolated AppData example."
             anchor="appdataIsolatedExample">
     <t>The first example is of a collection of key/value pairs for a
     particular application/user pair: 
     <figure>
      <preamble>application/json representation:</preamble>
      <artwork xml:space="preserve">
{
 "pokes" : 3,
 "last_poke" : "2008-02-13T18:30:02Z"
}        
</artwork>
     </figure>
     <figure>
      <preamble>application/xml representation:</preamble>
      <artwork xml:space="preserve">
&lt;appData xmlns="http://ns.opensocial.org/2008/opensocial"&gt;
  &lt;entry&gt;
    &lt;key&gt;pokes&lt;/key&gt;
    &lt;value&gt;3&lt;/value&gt;
  &lt;/entry&gt;
  &lt;entry&gt;
    &lt;key&gt;last_poke&lt;/key&gt;
    &lt;value&gt;2008-02-13T18:30:02Z&lt;/value&gt;
  &lt;/entry&gt;
&lt;/appData&gt;        
</artwork>
     </figure>
     <figure>
      <preamble>application/atom+xml representation:</preamble>
      <artwork xml:space="preserve">
&lt;entry xmlns="http://www.w3.org/2005/Atom"&gt;
 &lt;content type="application/xml"&gt;
   &lt;appData xmlns="http://ns.opensocial.org/2008/opensocial"&gt;  
       &lt;pokes&gt;3&lt;/pokes&gt;
       &lt;last_poke&gt;2008-02-13T18:30:02Z&lt;/last_poke&gt;
   &lt;/appData&gt;
 &lt;/content&gt;
 &lt;title/&gt;
 &lt;updated&gt;2003-12-13T18:30:02Z&lt;/updated&gt;
 &lt;author&gt;
   &lt;url&gt;urn:guid:example.org:34KJDCSKJN2HHF0DW20394&lt;/url&gt;
   &lt;name&gt;John Smith&lt;/name&gt;  
 &lt;/author&gt;
 &lt;id&gt;urn:guid:example.org:34KJDCSKJN2HHF0DW20394&lt;/id&gt;
&lt;/entry&gt;        
</artwork>
     </figure></t>
    </section>
    <section title="An AppData Collection Example">
     <t>In this example, a client has requested a collection of data that spans
     multiple users. The result is a collection which, by default, is given a
     special default JSON representation as a mapping from users to their data.
     
     <figure>
      <preamble>application/json representation:</preamble>
      <artwork xml:space="preserve">
{
 "entry" : {
   "example.org:34KJDCSKJN2HHF0DW20394" : {"pokes" : 3, "last_poke" : "2008-02-13T18:30:02Z" },
   "example.org:58UIDCSIOP233FDKK3HD44" : {"pokes" : 2, "last_poke" : "2007-12-16T18:30:02Z" }
 }
}        
</artwork>
     </figure>
     <figure>
      <preamble>application/xml representation:</preamble>
      <artwork xml:space="preserve">
&lt;entry&gt;
 &lt;appData xmlns="http://ns.opensocial.org/2008/opensocial"&gt;
   &lt;personId&gt;example.org:34KJDCSKJN2HHF0DW20394&lt;/personId&gt;
   &lt;entry&gt;
     &lt;key&gt;pokes&lt;/key&gt;
     &lt;value&gt;3&lt;/value&gt;
   &lt;/entry&gt;
   &lt;entry&gt;
     &lt;key&gt;last_poke&lt;/key&gt;
     &lt;value&gt;2008-02-13T18:30:02Z&lt;/value&gt;
   &lt;/entry&gt;
 &lt;/appData&gt;        
 &lt;appData xmlns="http://ns.opensocial.org/2008/opensocial"&gt;
   &lt;personId&gt;example.org:58UIDCSIOP233FDKK3HD44&lt;/personId&gt;
   &lt;entry&gt;
     &lt;key&gt;pokes&lt;/key&gt;
     &lt;value&gt;2&lt;/value&gt;
   &lt;/entry&gt;
   &lt;entry&gt;
     &lt;key&gt;last_poke&lt;/key&gt;
     &lt;value&gt;2007-12-16T18:30:02Z&lt;/value&gt;
   &lt;/entry&gt;
 &lt;/appData&gt;
&lt;/entry&gt;
</artwork>
     </figure>
     <figure>
      <preamble>application/atom+xml representation:</preamble>
      <artwork xml:space="preserve">
&lt;feed xmlns="http://www.w3.org/2005/Atom&gt;
 &lt;id&gt;...&lt;/id&gt;
 &lt;title&gt;...&lt;/title&gt;
 &lt;entry&gt;
   &lt;content type="text/xml"&gt;
     &lt;appData&gt;
       &lt;pokes&gt;3&lt;/pokes&gt;
       &lt;last_poke&gt;"2008-02-13T18:30:02Z"&lt;/last_poke&gt;
     &lt;/appData&gt;
   &lt;/content&gt;
   &lt;title/&gt;
   &lt;updated&gt;2008-02-13T18:30:02Z&lt;/updated&gt;
   &lt;author&gt;&lt;url&gt;urn:guid:example.org:34KJDCSKJN2HHF0DW20394&lt;/url&gt;&lt;/author&gt;
   &lt;id&gt;urn:guid:example.org:34KJDCSKJN2HHF0DW20394&lt;/id&gt;
 &lt;/entry&gt;
 &lt;entry&gt;
   &lt;content type="text/xml"&gt;
     &lt;appData&gt;
       &lt;pokes&gt;2&lt;/pokes&gt;
       &lt;last_poke&gt;"2007-12-16T18:30:02Z"&lt;/last_poke&gt;
     &lt;/appData&gt;
   &lt;/content&gt;
   &lt;title/&gt;
   &lt;updated&gt;2007-12-16T18:30:02Z&lt;/updated&gt;
   &lt;author&gt;&lt;url&gt;uurn:guid:example.org:58UIDCSIOP233FDKK3HD44&lt;/url&gt;&lt;/author&gt;
   &lt;id&gt;urn:guid:example.org:58UIDCSIOP233FDKK3HD44&lt;/id&gt;  
 &lt;/entry&gt;
&lt;/feed&gt;        
</artwork>
     </figure></t>
    </section>
   </section>
   <section title="Group"
            anchor="Group">
    <t>OpenSocial Groups are owned by people, and are used to tag or categorize
    people and their relationships. Each group has a display name, an identifier which is unique within the
    groups owned by that person, and a URI link.  A group may be a private, invitation-only, public or a personal group used to organize friends.</t>
     <texttable align="left">
      <ttcol align="left" width="15%">Field Name</ttcol>
      <ttcol align="left" width="21%">Field Type</ttcol>
      <ttcol align="left">Description</ttcol>
      <c>id</c>
      <c><x:ref>Group-Id</x:ref></c>
      <c>Unique ID for this group <x:highlight>Required</x:highlight>.</c>
      <c>title</c>
      <c>String</c>
      <c>Title of group <x:highlight>Required.</x:highlight></c>
      <c>description</c>
      <c>String</c>
      <c>Description of group <x:highlight>Optional</x:highlight>.</c>
     </texttable>
<xref target="Issue-1239">Discussion</xref>
<t> A Group example: </t>
    <figure>
     <preamble>application/json representation:</preamble>
     <artwork xml:space="preserve">
{
 "id" : "example.org:34KJDCSKJN2HHF0DW20394/friends",
 "title" : "Peeps",
}       
</artwork>
    </figure>
    <figure>
     <preamble>application/xml representation:</preamble>
     <artwork xml:space="preserve">
&lt;group xmlns="http://ns.opensocial.org/2008/opensocial"&gt;
  &lt;id&gt;example.org:34KJDCSKJN2HHF0DW20394/friends&lt;/id&gt;
  &lt;title&gt;Peeps&lt;/title&gt;
&lt;/group&gt;       
</artwork>
    </figure>
    <figure>
     <preamble>application/atom+xml representation:</preamble>
     <artwork xml:space="preserve">
&lt;entry xmlns="http://www.w3.org/2005/Atom"&gt;
 &lt;id&gt;example.org:34KJDCSKJN2HHF0DW20394/friends&lt;/id&gt;&lt;!-- group.id --&gt;
 &lt;title&gt;Friends of John Smith&lt;/title&gt;&lt;!-- group.title + person.displayName --&gt;
 &lt;updated&gt;2008-03-15T10:00:00Z&lt;/updated&gt;&lt;!-- last significant group change, or datetime.utcnow() --&gt;
 &lt;author&gt;&lt;name&gt;John Smith&lt;/name&gt;&lt;/author&gt;&lt;!-- person.displayName --&gt;
 &lt;link rel="alternate" type="application/json" href="http://example.org/people/example.org:34KJDCSKJN2HHF0DW20394/@friends" /&gt;
 &lt;link rel="alternate" type="application/atom+xml" href="http://example.org/people/example.org:34KJDCSKJN2HHF0DW20394/@friends?format=atom" /&gt;
 &lt;link rel="alternate" type="application/xml" href="http://example.org/people/example.org:34KJDCSKJN2HHF0DW20394/@friends?format=xml" /&gt;
 &lt;content type="application/xml"&gt;
   &lt;group xmlns="http://ns.opensocial.org/2008/opensocial"&gt;
     &lt;id&gt;example.org:34KJDCSKJN2HHF0DW20394/friends&lt;/id&gt;
     &lt;title&gt;Peeps&lt;/title&gt;
   &lt;/group&gt;
&lt;/entry&gt;
</artwork>
    </figure>
   </section>
   <section title="Message"
            anchor="Message">
     <t>Valid definitions for Message-Field are listed in the table below.</t>
     <xref target="Issue-1180">Discussion</xref>
     <texttable>
      <ttcol align="left" width="15%">Field Name</ttcol>
      <ttcol align="left" width="21%">Field Type</ttcol>
      <ttcol align="left">Description</ttcol>
      <c>appUrl</c>
      <c>string</c>
      <c>Identifies the application that generated this message.</c>
      <c>body</c>
      <c>string</c>
      <c>The main text of the message. HTML attributes are allowed and
      are sanitized by the container.</c>
      <c>bodyId</c>
      <c>string</c>
      <c>The main text of the message as a message template. Specifies
      the message ID to use in the gadget xml.</c>
      <c>collectionIds</c>
      <c>Array &lt;string&gt;</c>
      <c>Identifies the messages collection IDs this message is
      contained in.</c>
      <c>id</c>
      <c>string</c>
      <c>Unique ID for this message.</c>
      <c>inReplyTo</c>
      <c>string</c>
      <c>Message ID of a parent resource, use for threaded comments/messages. References the
      semantics of the Atom Threading model defined in rfc4685. URLs
      should be mapped to Atom &lt;link rel="type" .../&gt;</c>
      <c>recipients</c>
      <c>Array &lt;string&gt;</c>
      <c>Array of person IDs.</c>
      <c>replies</c>
      <c>Array &lt;string&gt;</c>
      <c>Array of message ids indicating responses to this message. References the semantics
      of the Atom Threading model defined in rfc4685. URLs should be mapped to
      Atom &lt;link rel="type" .../&gt;</c>
      <c>senderId</c>
      <c>string</c>
      <c>Id of person who sent the message.</c>
      <c>status</c>
      <c>string</c>
      <c>Status of the message. (NEW, READ, DELETED).</c>
      <c>timeSent</c>
      <c><eref target="./Core-Data.xml#Date">Date</eref></c>
      <c>UTC time message was sent.</c>
      <c>title</c>
      <c>string</c>
      <c>The title of the message. HTML attributes are allowed and are
      sanitized by the container.</c>
      <c>titleId</c>
      <c>string</c>
      <c>The title of the message as a message template. Specifies the
      message ID to use in the gadget xml.</c>
      <c>type</c>
      <c>string</c>
      <c>The type of the message.</c>
      <c>updated</c>
      <c><eref target="./Core-Data.xml#Date">Date</eref></c>
      <c>Last update for this message.</c>
      <c>urls</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>List of related URLs for this message. Supported URL types
      include 'alternate', alternate for for this mailbox (text/html
      being the most common).</c>
     </texttable>
     <xref target="Issue-1279">Discussion</xref>
    <t>A Message example follows. For brevity, details of the 'sender' field,
    an OpenSocial Person, are omitted. </t>
    <figure>
     <preamble>application/json representation</preamble>
     <artwork xml:space="preserve">
{
 "id" : "http://example.org/inbox/message/{msgid}",
  "recipients" : ["example.org:AD38B3886625AAF", "example.org:997638BAA6F25AD"],
 "sender" : "{ "id" : ... }",
 "title" : "You have a new messge from Joe",
 "titleId" : "541141091700",
 "body" : "Short message from Joe to some friend\/s",
 "bodyId" : "5491155811231",  
 "type" : "privateMessage",
 "status" : "unread",
 "data" : "..."
}
</artwork>
    </figure>
    <figure>
     <preamble>application/xml representation</preamble>
     <artwork xml:space="preserve">
&lt;message xmlns="http://ns.opensocial.org/2008/opensocial"&gt;
    &lt;id&gt;http://example.org/inbox/message/{msgid}&lt;/id&gt;
    &lt;recipient&gt;example.org:AD38B3886625AAF&lt;/recipient&gt;
        &lt;recipient&gt;example.org:997638BAA6F25AD&lt;/recipient&gt;
        &lt;sender&gt;
           &lt;person&gt;...&lt;/person&gt;
        &lt;/sender&gt;
        &lt;title&gt;You have a new messge from Joe&lt;/title&gt;
        &lt;titleId&gt;541141091700&lt;/titleId&gt;
        &lt;updated&gt;2008-09-29T23:35:37.266Z&lt;/updated&gt;
        &lt;body&gt;Short message from Joe to some friend\/s&lt;/body&gt;
        &lt;bodyId&gt;5491155811231&lt;/bodyId&gt;
        &lt;type&gt;privateMessage&lt;/type&gt;
        &lt;status&gt;unread&lt;/status&gt;
        &lt;data&gt;...&lt;/data&gt;
&lt;/message&gt;
</artwork>
    </figure>
    <figure>
     <preamble>application/atom+xml representation</preamble>
     <artwork xml:space="preserve">
&lt;entry xmlns="http://www.w3.org/2005/Atom" xmlns:osapi="http://opensocial.org/2008/opensocialapi"&gt;
    &lt;osapi:recipient&gt;example.org:AD38B3886625AAF&lt;/osapi:recipient&gt;
    &lt;osapi:recipient&gt;example.org:997638BAA6F25AD&lt;/osapi:recipient&gt;
    &lt;sender&gt;&lt;person&gt;...&lt;/person&gt;&lt;/sender&gt;
    &lt;title&gt;You have a new message from Joe&lt;/title&gt;
    &lt;id&gt;http://example.org/inbox/message/{msgid}&lt;/id&gt;
    &lt;link rel="alternate" href="http://app.example.org/inbox/message/{msgid}"/&gt;
    &lt;content&gt;Short message from Joe to some friend/s&lt;/content&gt;
    &lt;status&gt;UNREAD&lt;/status&gt;
    &lt;data&gt;...&lt;/data&gt;
&lt;/entry&gt;
</artwork>
    </figure>
    <t>The recipient may also include a type identifier. The osapi:recipient
    supports two formats: </t>
    <list style="numbers">
     <t>For people: [container]:[identifier]</t>
     <t>Specifying a group or a person:
     [container]:[group|person]:[identifier]</t>
    </list>
    <figure>
     <artwork xml:space="preserve">
&lt;entry xmlns="http://www.w3.org/2005/Atom"
        xmlns:osapi="http://opensocial.org/2008/opensocialapi"&gt;
 &lt;osapi:recipient&gt;example.org:group:AD38B3886625AAF&lt;/osapi:recipient&gt;
 &lt;osapi:recipient&gt;example.org:person:997638BAA6F25AD&lt;/osapi:recipient&gt;
 &lt;osapi:recipient&gt;example.org:6221226&lt;/osapi:recipient&gt;
 &lt;title&gt;You have an invitation from Joe&lt;/title&gt;
 &lt;id&gt;{msgid}&lt;/id&gt;
 &lt;link rel="alternate" href="http://app.example.org/invites/{msgid}"/&gt;
 &lt;content&gt;Click &lt;a href="http://app.example.org/invites/{msgid}"&gt;here&lt;/a&gt; to review your invitation.&lt;/content&gt;
&lt;/entry&gt;
</artwork>
    </figure>
    <t>The 'sender' field in the message representations is only needed when
    receiving a message with a GET request. It is not required when POSTING a
    new message as this information is represented by the {guid}. Using a
    Person for the sender field allows a gadget to present meaningful
    information about the message sender without requiring a separate request
    for this information.</t>
    <t>The 'data' field is used for information specific to the gadget that is
    sending or displaying the message. It may be omitted in most messages. An
    example is a message from a user asking to join a group. In the received
    message to the group's owner(s), the 'data' field could contain the JSON or
    XML representation of an OpenSocial Group.</t>

    <figure>
     <preamble>Sample JSON for Message</preamble>
     <artwork xml:space="preserve">
{
   "recipients" : ["example.org:AD38B3886625AAF", "example.org:997638BAA6F25AD"],
   "title" : "You have an invitation from Joe",
   "body" : "Some content",
   "type" : "EMAIL"
}
</artwork>
    </figure>
   </section>
   <section title="Person"
            anchor="Person">
     <t>Each person returned MUST include the "id" and "name" fields 
     with non-empty values, but all other fields
     are optional, and it is recognized that not all Service Providers
     are able to provide data for all the supported fields. The field
     list below is broad so that there is a standard field name
     available among Service Providers that do support any of these
     fields. <xref target="Issue-1218">Discussion</xref></t>
     <t>There are two special Person objects that can be requested
     directly: the VIEWER and the OWNER. To understand the
     distinction, imagine you're checking out a coworker's profile on
     Orkut. In this case, you are the VIEWER and your coworker is the
     OWNER. It's also common to view your own profile, in which case
     you are both the VIEWER and the OWNER, and some applications may
     choose to handle this case differently. OpenSocial also provides
     for the case of anonymous viewing, where the gadget will not be
     able to access the VIEWER's information.</t>
     <artwork type="abnf">
       <x:highlight>Person</x:highlight>   = "{"
                      "id :" User-ID ","
                      "displayName :" string ","
                      [ #Person-Field ]
                  "}"</artwork>
                  
     

         <t>OpenSocial defines many common attributes associated with a person and is aligned with the Portable Contacts
             specification. However, only display name and id are required and all others are optional. In practice,
             support for these fields varies greatly among containers. As OpenSocial continues to be adopted as an
             enterprise programming model, many of these fields are not appropriate based on the considerations of Human
             Resource guidelines.  <xref target='Issue-1132'>Discussion</xref></t>

             <t>In an attempt to balance the needs of consumer vs corporate
             focused OpenSocial applications, and increase interoperability, the specification is refining attempting to
             provide clarity around attributes that are broadly applicable across both the consumer and enterprise
             domain, and those that are more appropriate for consumer oriented systems.  
         </t>

         <t>The generally applicable field definitions for Person are listed in the table below.</t>
     
     <texttable>
      <ttcol align="left" width="15%">Field Name</ttcol>
      <ttcol align="left" width="21%">Field Type</ttcol>
      <ttcol align="left">Description</ttcol>
      <c>aboutMe</c>
      <c>string</c>
      <c>A general statement about the person.</c>
      <c>accounts</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;<x:ref>Account</x:ref>&gt;</c>
      <c>An online account held by this Person.</c>
      <c>addresses</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;<x:ref>Address</x:ref>&gt;</c>
      <c>A physical mailing address for this Person.</c>
      <c>alternateNames</c>
      <c><eref target="//Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;<x:ref>Name</x:ref>&gt;</c>
      <c>List of alternative names. These may include known aliases, maiden-names, nicknames, acceptable
      alternative forms of the same name (e.g. "James", "Jim", "Jimmy"), etc.</c>
      <c>appData</c>
      <c><eref
      target="./Core-Data.xml#Plural-Field">Plural-Field</eref>
      &lt;<x:ref>AppData</x:ref>&gt;</c>
      <c>A collection of AppData keys and values.</c>
      <c>connected</c>
      <c><eref target="./Core-Data.xml#Boolean">Boolean</eref></c>
      <c>Boolean value indicating whether the user and this Person have
      established a bi-directionally asserted connection of some kind on the
      Service Provider's service. The value MUST be either true or false. The
      value MUST be true if and only if there is at least one value for the
      relationships field indicating that some type of bi-directional relationship exists,
	  and is thus intended as a summary value for Consumers that aren't interested in the
      specific nature of that relationship. For traditional address books, in which a user
      stores information about other contacts without their explicit acknowledgment,
      or for services in which users choose to "follow" other users without
      requiring mutual consent, this value will always be false. <xref target='Issue-1132'>Discussion</xref><xref target='Issue-1333'>Discussion</xref></c>
      <c>contactPreference</c>
      <c>string</c>
      <c>Human-readable summarization of the Person's contact preferences. For instance,
      a person may choose to specify something along the lines of, "Please 
      use instant messaging to contact me prior to calling."</c>
      <c>dn</c>
      <c>string</c>
      <c>This Person's X.500 'Distinguished Name'</c>
      <c>displayName</c>
      <c>string</c>
      <c><x:highlight>Required.</x:highlight> The name of this Person, suitable for display to end-users. Each
      Person returned MUST include a non-empty displayName value. The name
      SHOULD be the full name of the Person being described if known (e.g.
      Cassandra Doll or Mrs. Cassandra Lynn Doll, Esq.), but MAY be a username
      or handle, if that is all that is available (e.g. doll). The value
      provided SHOULD be the primary textual label by which this Person is
      normally displayed by the Service Provider when presenting it to
      end-users.</c>
      <c>emails</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>E-mail address for this Person. The value SHOULD be canonicalized by
      the Service Provider, e.g.joseph@plaxo.com instead of
      joseph@PLAXO.COM.</c>
      <c>hasApp</c>
      <c><eref target="./Core-Data.xml#Boolean">Boolean</eref></c>
      <c>Indicating whether the user has application installed.</c>
      <c>id</c>
      <c><eref target="./Core-Data.xml#Object-Id">Object-Id</eref></c>
      <c><x:highlight>Required.</x:highlight> Unique identifier for
      the Person.</c>
      <c>ims</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Instant messaging address for this Person. No official
      canonicalization rules exist for all instant messaging addresses, but
      Service Providers SHOULD remove all whitespace and convert the address to
      lowercase, if this is appropriate for the service this IM address is used
      for. Instead of the standard Canonical Values for type, this field
      defines the following Canonical Values to represent currently popular IM
      services: aim, gtalk, icq, xmpp,msn, skype, qq, and yahoo.</c>
      <c>location</c>
      <c>string</c>
      <c></c>
      <c>name</c>
      <c><x:ref>Name</x:ref></c>
      <c>The broken-out components and fully formatted version of the person's
      real name.</c>
      <c>nativeName</c>
      <c><x:ref>Name</x:ref></c>
      <c>The broken-out components and fully formatted, native-language version
      of the person's real name.</c>
      <c>networkPresence</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Person's current network status. Specified as one of: AWAY,
      CHAT, DND, OFFLINE, ONLINE OR XA.</c>
      <c>organizations</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;<x:ref>Organization</x:ref>&gt;</c>
      <c>A current or past organizational affiliation of this Person.</c>
      <c>phoneNumbers</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Phone number for this Person. No canonical value is assumed here. In
      addition to the standard Canonical Values for type, this field also
      defines the additional Canonical Values mobile, fax, and pager.</c>
      <c>photos</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>URL of a photo of this person. The value SHOULD be a canonicalized
      URL, and MUST point to an actual image file (e.g. a GIF, JPEG, or PNG
      image file) rather than to a web page containing an image. Service
      Providers MAY return the same image at different sizes, though it is
      recognized that no standard for describing images of various sizes
      currently exists. Note that this field SHOULD NOT be used to send down
      arbitrary photos taken by this user, but specifically profile photos of
      the contact suitable for display when describing the contact.</c>
      <c>preferredName</c>
      <c><x:ref>Name</x:ref></c>
      <c>The broken-out components and fully formatted version
      of the person's preferred name.</c>
      <c>preferredUsername</c>
      <c>string</c>
      <c>The preferred username of this person on sites that ask for a username
      (e.g. jsmarr or daveman692). This field may be more useful for describing
      the owner (i.e. the value when /@me/@self is requested) than the user's
      person, e.g. Consumers MAY wish to use this value to pre-populate a
      username for this user when signing up for a new service.</c>
      <c>profileUrl</c>
      <c>string</c>
      <c>Person's profile URL, specified as a string. This URL must be
      fully qualified. Relative URLs will not work in gadgets.</c>
      <c>published</c>
      <c><eref target="./Core-Data.xml#Date">Date</eref></c>
      <c>The date this Person was first added to the user's address book or
      friends list (i.e. the creation date of this entry). The value MUST be a
      valid <eref target="./Core-Data.xml#Date">Date</eref>.</c>
      <c>relationships</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>A string value consisting in one or more relationship types that were established
      between the user and this person by the Service Provider, which MAY or MAY NOT have been
      bi-directionally confirmed. Values "friends", "followers" and "following" SHOULD be reserved
      and have the same meaning as the corresponding GroupId. Note that this field is a parallel
      set of category labels to the tags field, but tags are asserted by the user without
      acknowledgment by this Person. <xref target='Issue-1132'>Discussion</xref><xref target='Issue-1333'>Discussion</xref></c>
      <c>status</c>
      <c>string</c>
      <c>Person's status, headline or shoutout.</c>
      <c>tags</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>A user-defined category label for this person, e.g. "favorite" or
      "web20". These values SHOULD be case-insensitive, and there SHOULD NOT be
      multiple tags provided for a given person that differ only in case. Note
      that this field consists only of a string value.</c>
      <c>thumbnailUrl</c>c>
      <c>string</c>
      <c>Person's photo thumbnail URL, specified as a string. This URL
      must be fully qualified. Relative URLs will not work in
      gadgets.</c>
      <c>updated</c>
      <c><eref target="./Core-Data.xml#Date">Date</eref></c>
      <c>The most recent date the details of this Person were updated (i.e. the
      modified date of this entry). The value MUST be a valid 
      <eref target="./Core-Data.xml#Date">Date</eref>. If this Person
      has never been modified since its initial creation, the value MUST be the
      same as the value of published. Note the updatedSince Query Parameter can
      be used to select only people whose updated value is equal to or more
      recent than a given <eref
      target="./Core-Data.xml#Date">Date</eref>. This enables
      Consumers to repeatedly
      access a user's data and only request newly added or updated contacts
      since the last access time.</c>
      <c>urls</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>URL of a web page relating to this Person. The value SHOULD be
      canonicalized by the Service Provider, e.g.http://josephsmarr.com/about/
      instead of JOSEPHSMARR.COM/about/. In addition to the standard Canonical
      Values for type, this field also defines the additional Canonical Values
      blog and profile.</c>
      <c>utcOffset</c>
      <c><eref target="./Core-Data.xml#Date-UTC-Offset">Date-UTC-Offset</eref></c>
      <c>The offset from UTC of this Person's current time zone, as of the time
      this response was returned. The value MUST conform to the <eref
      target="./Core-Data.xml#Date-UTC-Offset">Date-UTC-Offset</eref>. Note that this value MAY
      change over time due to daylight saving time, and is thus meant to
      signify only the current value of the user's timezone offset.</c>
     </texttable>
     
     <t>In addition to the table above, the socially oriented fields definition of the
     Person include the following. Note that all extended properties are optional and may not be appropriate for use in all applications.  <xref target='Issue-1132'>Discussion</xref></t>
     
     <texttable>
      <ttcol align="left" width="15%">Field Name</ttcol>
      <ttcol align="left" width="21%">Field Type</ttcol>
      <ttcol align="left">Description</ttcol>
      <c>activities</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Person's favorite activities.</c>
      <c>age</c>
      <c>number</c>
      <c>The age of this person. Sometimes sites might want to show
      age without revealing the specific birthday.</c>     
      <c>anniversary</c>
      <c><eref target="./Core-Data.xml#Date">Date</eref></c>
      <c>The wedding anniversary of this person. The value MUST be a
      valid <eref
      target="./Core-Data.xml#Date">Date</eref>. The
      year value MAY be set to 0000 when the year is not
      available.</c>
      <c>birthday</c>
      <c><eref target="./Core-Data.xml#Date">Date</eref></c>
      <c>The birthday of this person. The value MUST be a valid <eref
      target="./Core-Data.xml#Date">Date</eref>. The
      year value MAY be set to 0000 when the age of the Person is
      private or the year is not available.</c>
      <c>bodyType</c>
      <c>string</c>
      <c>Person's body characteristics.</c>
      <c>books</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Person's favorite books.</c>
      <c>cars</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Person's favorite cars.</c>
      <c>children</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Description of the person's children.</c>
      <c>drinker</c>
      <c>string</c>
      <c>Person's drinking status.</c>
      <c>ethnicity</c>
      <c>string</c>
      <c>Person's ethnicity.</c>
      <c>fashion</c>
      <c>string</c>
      <c>Person's thoughts on fashion.</c>
      <c>food</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Person's favorite food.</c>
      <c>gender</c>
      <c>string</c>
      <c>The gender of this person. Service Providers SHOULD return one of the
      following Canonical Values, if appropriate:male, female, or undisclosed,
      and MAY return a different value if it is not covered by one of these
      Canonical Values.</c>
      <c>happiestWhen</c>
      <c>string</c>
      <c>Describes when the person is happiest.</c>
      <c>heroes</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Person's favorite heroes.</c>
      <c>humor</c>
      <c>string</c>
      <c>Person's thoughts on humor.</c>
      <c>interests</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Person's interests, hobbies or passions.</c>
      <c>jobInterests</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Person's favorite jobs, or job interests and skills.</c>
      <c>languagesSpoken</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>List of the languages that the person speaks as ISO 639-1 codes.</c>
      <c>livingArrangement</c>
      <c>string</c>
      <c>Description of the person's living arrangement.</c>
      <c>lookingFor</c>
      <c>string</c>
      <c>Person's statement about who or what they are looking for, or
      what they are interested in meeting people for.</c>
      <c>movies</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Person's favorite movies.</c>
      <c>music</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Person's favorite music.</c>
      <c>nickname</c>
      <c>string</c>
      <c>The casual way to address this Person in real life, e.g. "Bob" or
      "Bobby" instead of "Robert". This field SHOULD NOT be used to represent a
      user's username (e.g. jsmarr or daveman692); the latter should be
      represented by the preferredUsername field.</c>
      <c>note</c>
      <c>string</c>
      <c>Notes about this person, with an unspecified meaning or usage
      (normally notes by the user about this person). This field MAY contain
      newlines.</c>
      <c>pets</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Description of the person's pets</c>
      <c>orgIdentifier</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Listing of this person's organizational identifiers (e.g. employee serial number, 
      student number, etc)</c>
      <c>politicalViews</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Person's political views.</c>
      <c>profileSong</c>
      <c>string</c>
      <c>URL of a person's profile song.</c>
      <c>profileVideo</c>
      <c>string</c>
      <c>URL of a person's profile video.</c>
      <c>quotes</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Person's favorite quotes</c>
      <c>relationshipStatus</c>
      <c>string</c>
      <c>Person's relationship status.</c>
      <c>religion</c>
      <c>string</c>
      <c>Person's relgion or religious views.</c>
      <c>romance</c>
      <c>string</c>
      <c>Person's comments about romance.</c>
      <c>scaredOf</c>
      <c>string</c>
      <c>What the person is scared of.</c>
      <c>sexualOrientation</c>
      <c>string</c>
      <c>Person's sexual orientation.</c>
      <c>smoker</c>
      <c>string</c>
      <c>Person's smoking status.</c>
      <c>sports</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Person's favorite sports</c>
      <c>turnOffs</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Person's turn offs.</c>
      <c>turnOns</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Person's turn ons.</c>
      <c>tvShows</c>
      <c><eref target="./Core-Data.xml#Plural-Field">Plural-Field</eref> &lt;string&gt;</c>
      <c>Person's favorite TV shows.</c>
     </texttable>
     
    <t>A minimal Person example: 
    <figure>
     <preamble>application/json representation:</preamble>
     <artwork xml:space="preserve">
{
 "id" : "example.org:34KJDCSKJN2HHF0DW20394",
 "displayName" : "Janey",
 "name" : {"formatted" : "Jane Doe"}
}       
</artwork>
    </figure>
    
    <figure>
     <preamble>application/xml representation:</preamble>
     <artwork xml:space="preserve">
&lt;person xmlns="http://ns.opensocial.org/2008/opensocial"&gt;
  &lt;id&gt;example.org:34KJDCSKJN2HHF0DW20394&lt;/id&gt;
  &lt;displayName&gt;Janey&lt;/displayName&gt;
  &lt;name&gt;
    &lt;formatted&gt;Jane Doe&lt;/formatted&gt;
  &lt;/name&gt;
&lt;/person&gt;       
</artwork>
    </figure>
    <figure>
     <preamble>application/atom+xml representation:</preamble>
     <artwork xml:space="preserve">
&lt;entry xmlns="http://www.w3.org/2005/Atom"&gt;
 &lt;id&gt;example.org:34KJDCSKJN2HHF0DW20394&lt;/id&gt;&lt;!-- person.id --&gt;
 &lt;title&gt;Janey&lt;/title&gt;&lt;!-- person.displayName --&gt;
 &lt;updated&gt;2008-03-15T10:00:00Z&lt;/updated&gt;&lt;!-- last profile edit, or datetime.utcnow() --&gt;
 &lt;author&gt;&lt;name&gt;Janey&lt;/name&gt;&lt;/author&gt;&lt;!-- person.displayName --&gt;
 &lt;content type="application/xml"&gt;
   &lt;person xmlns="http://ns.opensocial.org/2008/opensocial"&gt;
     &lt;id&gt;example.org:34KJDCSKJN2HHF0DW20394&lt;/id&gt;
     &lt;displayName&gt;Janey&lt;/displayName&gt;
     &lt;name&gt;
       &lt;formatted&gt;Jane Doe&lt;/formatted&gt;
     &lt;/name&gt;
   &lt;/person&gt;
 &lt;/content&gt;
&lt;/entry&gt;
</artwork>

    </figure>Note: The atom:summary element is the appropriate place to put a
    text or HTML representation of the structured data present in the content
    element, and the atom:title element is the appropriate place to copy a
    short descriptive name for the entry, such as name.unstructured. Servers
    MAY choose to add these or other fields to make their feeds more useful for
    generic aggregators or tools.</t>
    
   </section>
 


   </section>
  <section title="Additional Social Data">
    <t>Additional Social Data objects are data objects that are
    contained within other Social Data object. These do not stand
    alone, and are not directly accessable by API calls such as osapi,
    REST, RPC and Pipelining.</t>
   <section title="Account" anchor="Account">
     <t>Describes an account held by this Person, which MAY be on the Service
     Provider's service, or MAY be on a different service. Consumers SHOULD NOT
     assume that this account has been verified by the Service Provider to
     actually belong to this Person. For each account, the domain is the
     top-most authoritative domain for this account, e.g. yahoo.com or
     reader.google.com, and MUST be non-empty. Each account must also contain a
     non-empty value for either username or userId, and MAY contain both, in
     which case the two values MUST be for the same account. These accounts can
     be used to determine if a user on one service is also known to be the same
     person on a different service, to facilitate connecting to people the user
     already knows on different services. If Consumers want to turn these
     accounts into profile URLs, they can use an open-source library like 
     <xref target="Social-Graph-Node-Mapper" />.</t> 
     <texttable>
      <ttcol align="left" width="15%">Field Name</ttcol>
      <ttcol align="left" width="21%">Field Type</ttcol>
      <ttcol align="left">Description</ttcol>
      <c>domain</c>
      <c>string</c>
      <c>The top-most authoritative domain for this account, e.g.
      "twitter.com". This is the Primary Sub-Field for this field, for the
      purposes of sorting and filtering.</c>
      <c>username</c>
      <c>string</c>
      <c>An alphanumeric user name, usually chosen by the user, e.g.
      "jsmarr".</c>
      <c>userId</c>
      <c><eref target="./Core-Data.xml#Object-Id">Object-Id</eref></c>
      <c>A user ID associated with this account.</c>
     </texttable>
   </section>
   <section title="ActionLink" anchor="ActionLink">
     <t>An ActionLink encompasses an action that a user may perform against an actionable resource.
     It defines a caption for the action to perform, a URL to identify the target actionable resource,
     and the HTTP operation to invoke the resource with.</t>
     <t>For example, an "Add Friend" button has a caption
     (namely, "Add Friend") and references the resource that will be invoked when the button is clicked.</t>
     <texttable>
      <ttcol align="left" width="15%">Field Name</ttcol>
      <ttcol align="left" width="21%">Field Type</ttcol>
      <ttcol align="left">Description</ttcol>
      <c>caption</c>
      <c>string</c>
      <c>Represents a hint that MAY be used by the presentation layer to allow interaction with the user, e.g. a button that invokes an POST.</c>
      <c>target</c>
      <c>string</c>
      <c>URL which represents the target web hook endpoint that can be invoked using the specified HTTP verb.</c>
      <c>httpVerb</c>
      <c>string</c>
      <c>Identifies the HTTP operation to perform against the actionable resource.  Should be one of "GET", "PUT", "POST", "DELETE", or other standard HTTP verb.  The HTTP verb is optional, and if omitted defaults to "GET".</c>
     </texttable>
         <figure>
     <preamble>application/json representation:</preamble>
     <artwork xml:space="preserve">
{
  caption: "Add Friend",
  target: "http://example.org/friends/jane.doe",
  httpVerb: "POST"
}</artwork>
    </figure>
   </section>
   <section title="ActivityObject" anchor="ActivityObject">
    <xref target='Issue-1140'>Discussion</xref>
    
    <t>An object is a thing, real or imaginary, which participates in an
	activity. It may be the entity performing the activity, or the entity
	on which the activity was performed. Because Activity Streams are often
	used in the context of a social platform, OpenSocial adds an
	additional field to the data model, "deliverTo:".
	Because these are extensions, they are contained in an enclosing
	namespace "openSocial". <xref target="Issue-1317">Discussion</xref></t>
  
       <texttable>
           <ttcol align="left" width="15%">Field Name</ttcol>
           <ttcol align="left" width="21%">Field Type</ttcol>
           <ttcol align="left">Description</ttcol>
           <c>attachments</c>
           <c>Array&lt;<eref target="./Social-Data.xml#ActivityObject">ActivityObject</eref>&gt;
           </c>
           <c>A collection of one or more additional, associated objects, similar to the concept of attached files in an
               email message. An object MAY have an attachments property whose value is a JSON Array of <eref
                       target="./Social-Data.xml#ActivityObject">ActivityObjects</eref>.
           </c>
           <c>author</c>
           <c>
               <eref target="./Social-Data.xml#ActivityObject">ActivityObject</eref>
           </c>
           <c>Describes the entity that created or authored the object. An object MAY contain a single author property
               whose value is an
               <eref target="./Social-Data.xml#ActivityObject">ActivityObject</eref>
               of any type. Note that the author field identifies the entity that created the object and does not
               necessarily identify the entity that published the object. For instance, it may be the case that an
               object created by one person is posted and published to a system by an entirely different entity.
               OpenSocial note: A common use case is for the "author" to be an OpenSocial. Containers SHOULD use the IRI
               form of the
               <eref target="./Core-Data.xml#Global-Id">Global-Id</eref>
               as the value.
           </c>
           <c>content</c>
           <c>string</c>
           <c>Natural-language description of the object encoded as a single JSON String containing HTML markup. Visual
               elements such as thumbnail images MAY be included. An object MAY contain a content property.
           </c>
           <c>displayName</c>
           <c>string</c>
           <c>A natural-language, human-readable and plain-text name for the object. HTML markup MUST NOT be included.
               An object MAY contain a displayName property. If the object does not specify an objectType property, the
               object SHOULD specify a displayName.
           </c>
           <c>downstreamDuplicates</c>
           <c>Array&lt;string&gt;</c>
           <c>A JSON Array of one or more absolute IRI's [RFC3987] identifying objects that duplicate this object's
               content. An object SHOULD contain a downstreamDuplicates property when there are known objects, possibly
               in a different system, that duplicate the content in this object. This MAY be used as a hint for
               consumers to use when resolving duplicates between objects received from different sources.
           </c>
           <c>id</c>
           <c>string</c>
           <c>Provides a permanent, universally unique identifier for the object in the form of an absolute IRI
               [RFC3987]. An object SHOULD contain a single id property. If an object does not contain an id property,
               consumers MAY use the value of the url property as a less-reliable, non-unique identifier.
           </c>
           <c>image</c>
           <c>
               <eref target="./Social-Data.xml#MediaLink">MediaLink</eref>
           </c>
           <c>Description of a resource providing a visual representation of the object, intended for human consumption.
               An object MAY contain an image property whose value is a<eref target="./Social-Data.xml#MediaLink">
                   MediaLink</eref>.
           </c>
           <c>objectType</c>
           <c>string</c>
           <c>Identifies the type of object. An object MAY contain an objectType property whose value is a JSON String
               that is non-empty and matches either the "isegment-nz-nc" or the "IRI" production in [RFC3987]. Note that
               the use of a relative reference other than a simple name is not allowed. If no objectType property is
               contained, the object has no specific type.
           </c>
           <c>published</c>
           <c>string</c>
           <c>The date and time at which the object was published. An object MAY contain a published property.</c>
           <c>summary</c>
           <c>string</c>
           <c>Natural-language summarization of the object encoded as a single JSON String containing HTML markup.
               Visual elements such as thumbnail images MAY be included. An activity MAY contain a summary property.
           </c>
           <c>updated</c>
           <c>string</c>
           <c>The date and time at which a previously published object has been modified. An Object MAY contain an
               updated property.
           </c>
           <c>upstreamDuplicates</c>
           <c>Array&lt;string&gt;</c>
           <c>A JSON Array of one or more absolute IRI's [RFC3987] identifying objects that duplicate this object's
               content. An object SHOULD contain an upstreamDuplicates property when a publisher is knowingly
               duplicating with a new ID the content from another object. This MAY be used as a hint for consumers to
               use when resolving duplicates between objects received from different sources.
           </c>
           <c>url</c>
           <c>string</c>
           <c>An IRI [RFC3987] identifying a resource providing an HTML representation of the object. An object MAY
               contain a url property
           </c>
       </texttable>
     
    <t>An example ActivityObject</t>
    
    <figure>
     <preamble>application/json representation:</preamble>
     <artwork xml:space="preserve">
{
  summary: "Photo posted",
  image: {
    height: 250,
    width: 250,
    url: "http://example.org/album/my_fluffy_cat_thumb.jpg"
  },
  downstreamDuplicates: [
    "downstream1",
    "downstream2"
  ],
  url: "http://example.org/album/my_fluffy_cat.jpg",
  id: "object2",
  upstreamDuplicates: [
    "upstream1",
    "upstream2"
  ],
  attachments: [
    {
      id: "attachment1",
      objectType: "attachment"
    },
    {
      id: "attachment2",
      objectType: "attachment"
    }
  ],
  objectType: "photo",
    opensSocial:{
  	deliverTo:["1245:MySpace.com"]
  }
}</artwork>
    </figure>
    <xref target="Issue-1317">Discussion</xref>
    
    <figure>
     <preamble>application/xml representation:</preamble>
     <artwork xml:space="preserve">
&lt;object&gt;
  &lt;attachments&gt;
    &lt;object&gt;
      &lt;id&gt;attachment1&lt;/id&gt;
      &lt;objectType&gt;attachment&lt;/objectType&gt;
    &lt;/object&gt;
    &lt;object&gt;
      &lt;id&gt;attachment2&lt;/id&gt;
      &lt;objectType&gt;attachment&lt;/objectType&gt;
    &lt;/object&gt;
  &lt;/attachments&gt;
  &lt;downstreamDuplicate&gt;downstream1&lt;/downstreamDuplicate&gt;
  &lt;downstreamDuplicate&gt;downstream2&lt;/downstreamDuplicate&gt;
  &lt;id&gt;object2&lt;/id&gt;
  &lt;image&gt;
    &lt;height&gt;250&lt;/height&gt;
    &lt;url&gt;http://example.org/album/my_fluffy_cat_thumb.jpg&lt;/url&gt;
    &lt;width&gt;250&lt;/width&gt;
  &lt;/image&gt;
  &lt;objectType&gt;photo&lt;/objectType&gt;
  &lt;summary&gt;Photo posted&lt;/summary&gt;
  &lt;upstreamDuplicate&gt;upstream1&lt;/upstreamDuplicate&gt;
  &lt;upstreamDuplicate&gt;upstream2&lt;/upstreamDuplicate&gt;
  &lt;url&gt;http://example.org/album/my_fluffy_cat.jpg&lt;/url&gt;
  
&lt;/object&gt;</artwork>
    </figure>    
    </section>
   <section title="Address" anchor="Address">
     <t>The components of a physical mailing address. Service
     Providers MAY return just the full address as a single string in
     the formattedsub-field, or they MAY return just the individual
     component fields using the other sub-fields, or they MAY return
     both. If both variants are returned, they SHOULD be describing
     the same address, with the formatted address indicating how the
     component fields should be combined.</t>
     <t>
     
     <texttable>
      <ttcol align="left" width="15%">Field Name</ttcol>
      <ttcol align="left" width="21%">Field Type</ttcol>
      <ttcol align="left">Description</ttcol>
      <c>building</c>
      <c>string</c>
      <c>The building identifier. <xref target='Issue-1132'>Discussion</xref></c>
      <c>country</c>
      <c>string</c>
      <c>The country name component.</c>
      <c>floor</c>
      <c>string</c>
      <c>The floor identifier.  <xref target='Issue-1132'>Discussion</xref></c>
      <c>formatted</c>
      <c>string</c>
      <c>The full mailing address, formatted for display or use with a mailing
      label. This field MAY contain newlines. This is the Primary Sub-Field for
      this field, for the purposes of sorting and filtering.</c>
      <c>latitude</c>
      <c>string</c>
      <c>Expresses the latitude of the location on a map.</c>
      <c>locality</c>
      <c>string</c>
      <c>The city or locality component.</c>
      <c>longitude</c>
      <c>string</c>
      <c>Expresses the longitude of the location on a map.</c>
      <c>postalCode</c>
      <c>string</c>
      <c>The zipcode or postal code component.</c>
      <c>region</c>
      <c>string</c>
      <c>The state or region component.</c>
      <c>streetAddress</c>
      <c>string</c>
      <c>The full street address component, which may include house number,
      street name, PO BOX, and multi-line extended street address information.
      This field MAY contain newlines.</c>
      <c>type</c>
      <c>string</c>
      <c>The address type or label. Examples include 'work', 'home'.</c>
     </texttable>
     </t>
   </section>
   <section title="Album"
            anchor="Album">
     <t>Albums support collections of media items (video, image, sound).</t>
     <texttable>
      <ttcol align="left" width="15%">Field Name</ttcol>
      <ttcol align="left" width="21%">Field Type</ttcol>
      <ttcol align="left">Description</ttcol>
      <c>description</c>
      <c>string</c>
      <c>Description of the album</c>
      <c>id</c>
      <c><eref target="./Core-Data.xml#Object-Id">Object-Id</eref></c>
      <c>Unique identifier for the album.</c>
      <c>location</c>
      <c><x:ref>Address</x:ref></c>
      <c>Location corresponding to the album.</c>
      <c>mediaItemCount</c>
      <c>integer</c>
      <c>Number of items in the album.</c>
      <c>mediaMimeType</c>
      <c>Array &lt;string&gt;</c>
      <c>Array of strings identifying the mime-types of media items in
      the Album.</c>
      <c>mediaType</c>
      <c>Array &lt;string&gt;</c>
      <c>Array of MediaItem types, types are one of: audio, image, video.</c>
      <c>owernId</c>
      <c><eref target="./Core-Data.xml#Object-Id">Object-Id</eref></c>
      <c>ID of the owner of the album.</c>
      <c>thumbnailUrl</c>
      <c>string</c>
      <c>URL to a thumbnail cover of the album.</c>
      <c>title</c>
      <c>string</c>
      <c>the title of the album.</c>
     </texttable>
     <figure>
      <preamble>application/json representation:</preamble>
      <artwork xml:space="preserve">
{
  "id" : "44332211",
  "thumbnailUrl" : "http://pages.example.org/albums/4433221-tn.png",
  "title" : "Example Album",
  "description" : "This is an example album, and this text is an example description",
  "location" : { "latitude": 0, "longitude": 0 },
  "ownerId" : "example.org:55443322"
}       
</artwork>
     </figure>
     <figure>
      <preamble>application/xml representation:</preamble>
      <artwork xml:space="preserve">
&lt;album xmlns="http://ns.opensocial.org/2008/opensocial"&gt;
  &lt;id&gt;44332211&lt;/id&gt;
  &lt;thumbnailUrl&gt;http://pages.example.org/albums/4433221-tn.png&lt;/thumbnailUrl&gt;
  &lt;title&gt;Example Album&lt;/title&gt;
  &lt;description&gt;This is an example album, and this text is an example description&lt;/description&gt;
  &lt;location&gt;
     &lt;latitude&gt;0&lt;/latitude&gt;
     &lt;longitude&gt;0&lt;/longitude&gt;
  &lt;/location&gt;
  &lt;ownerId&gt;example.org:55443322&lt;/ownerId&gt;
&lt;/album&gt;       
</artwork>
     </figure>
     <figure>
      <preamble>application/atom+xml representation:</preamble>
      <artwork xml:space="preserve">
&lt;entry xmlns="http://www.w3.org/2005/Atom"&gt;
 &lt;content type="application/xml"&gt;
   &lt;album xmlns="http://ns.opensocial.org/2008/opensocial"&gt;
     &lt;id&gt;44332211&lt;/id&gt;
     &lt;thumbnailUrl&gt;http://pages.example.org/albums/4433221-tn.png&lt;/thumbnailUrl&gt;
     &lt;title&gt;Example Album&lt;/title&gt;
     &lt;description&gt;This is an example album, and this text is an example description&lt;/description&gt;
     &lt;location&gt;
       &lt;latitude&gt;0&lt;/latitude&gt;
       &lt;longitude&gt;0&lt;/longitude&gt;
     &lt;/location&gt;
     &lt;ownerId&gt;example.org:55443322&lt;/ownerId&gt;
   &lt;/album&gt;
 &lt;/content&gt;
 &lt;title/&gt;
 &lt;updated&gt;2003-12-13T18:30:02Z&lt;/updated&gt;
 &lt;author&gt;&lt;url&gt;example.org:55443322&lt;/url&gt;&lt;/author&gt;
 &lt;id&gt;urn:guid:example.org:44332211&lt;/id&gt;
&lt;/entry&gt;    
</artwork>
     </figure>
	 <t>
	 For backwards compatibility with the 0.9 REST data format, the "caption" 
	 field should be included in the response for an Album and have the same 
	 value as the "title" field.  Caption is deprecated for 1.0 and will be fully 
	 removed from the data format in a future version of the spec.
	 </t>
     <figure>
      <preamble>application/json representation with caption for backwards-compatibility:</preamble>
      <artwork xml:space="preserve">
{
  "id" : "44332211",
  "thumbnailUrl" : "http://pages.example.org/albums/4433221-tn.png",
  "title" : "Example Album",
  "caption" : "Example Album",
  "description" : "This is an example album, and this text is an example description",
  "location" : { "latitude": 0, "longitude": 0 },
  "ownerId" : "example.org:55443322"
}       
</artwork>
     </figure>
   </section>
   
   <section title="App Id" anchor="App-Id">
    
     <t>The app Id is an <eref target="./Core-Data.xml#Object-Id">Object-Id</eref> for the application.  There are reserved values for common cases.  <xref target='Issue-1140'>Discussion</xref></t>
    <artwork type="abnf"
         xml:space="preserve">
App-Id = <eref target="./Core-Data.xml#Object-Id">Object-Id</eref> / "@app"
</artwork>
     <t>The reserved values are defined in the following table:</t>
     <texttable align="left">
       <ttcol>Value</ttcol>
       <ttcol>Description</ttcol>
       <c>@app</c>
       <c>The application currently in use.</c>
       <c>@all</c>
       <c>All (or "any") application(s). For example, using @all when requesting activity streams would return the entries that are visible to the user no matter which application generated it.</c>
     </texttable>
     <xref target="Issue-1320">Discussion</xref>
     <xref target="Issue-1239">Discussion</xref>
     <xref target='Issue-1223'>Discussion</xref>
   </section>



   <section title="FieldMetadata" anchor="FieldMetadata">
    <x:incubating note="Issue 1261: Metadata Service" href="http://code.google.com/p/opensocial-resources/issues/detail?id=1261">
     <t>Each FieldMetadata instance represents a field that MAY be present in a particular entity of the containing object type</t>
      <texttable align="left" >
      <ttcol align="left" width="15%">Field</ttcol>
      <ttcol align="left" width="25%">Type</ttcol>
      <ttcol align="left" >Description</ttcol>
      <c>availability</c>
      <c>String</c>
      <c>Description on when this field is available on a particular object.</c>
      <c>description</c>
      <c>String</c>
      <c>The textual description of this field.</c>
      <c>editable</c>
      <c>Boolean</c>
      <c>Flag indicating whether this field is modifiable on create and update operations.</c>
      <c>name</c>
      <c>String</c>
      <c>Name of the key under which this field will be present.</c>
      <c>required</c>
      <c>Boolean</c>
      <c>Flag indicating whether this field is required on create and update operations.</c>
      <c>since</c>
      <c>String</c>
      <c>OpenSocial version in which this object is initially available.</c>
      <c>type</c>
      <c>String</c>
      <c>Object type of this field.</c>
     </texttable> 
    </x:incubating>
   </section>






     <section anchor="Group-Id" title="Group Id">
       <t>The group Id must only contain alphanumeric (A-Za-z0-9) characters,
       underscore(_), dot(.) or dash(-), and must uniquely identify the group
       in a container.</t>
<x:incubating href="http://code.google.com/p/opensocial-resources/issues/detail?id=1281" note="Issue 1281: Add @followers/@following/@colleagues/@reports/@manager">
       <artwork type="abnf" xml:space="preserve"><![CDATA[
Group-Id = ]]><eref target="./Core-Data.xml#Object-Id">Object-Id</eref><![CDATA[ / "@self" / "@friends" / "@all" / "@followers" / "@following" / "@colleagues" / "@reports" / "@manager"
]]></artwork>
       <section title="Canonical Group Id Values">
         <t>OpenSocial defines the following cannonical group
         identifiers.</t>
         <texttable>
           <ttcol>Group ID</ttcol>
           <ttcol>Definition</ttcol>
           <c>@all</c>
           <c>The inclusive set of information visible to a user. For
           example, using @all when requesting activity streams would return
           all of the entries that are visible to the user. </c>
           <c>@followers</c>
           <c>A uni-directional relationship that specifies the collection of
           people (or a single person) that are interested in receiving
           information, e.g. activity streams, about a specific person.</c>
           <c>@following</c>
           <c>A uni-directional relationship that specifies the collection of
           people that the user is interested in receiving information about.
           </c>
           <c>@friends</c>
           <c>A bi-directional relationship that indicates that both parties
           have entered into. </c>
           <c>@self</c>
           <c>Represents the user who is issuing the request.</c>
           <c>@summary</c>
           <c>A container defined collection of fields that serves to provide
           an abbreviated view of the requested object. For example, simply
           requesting the information about a user would return their ID and
           thumbnail. When @summary is requested, the container may provide
           the public profile. Use of @summary avoids the need to specify a
           subset of fields. </c>
         </texttable>
         <section title="Organization Chart">
           <t>Increasingly, OpenSocial is being used in enterprise settings.
           To enable easy retrieval of organization structure information,
           the specification defines the following values to represent the
           org chart.</t>
           <texttable>
             <ttcol>Group Id</ttcol>
             <ttcol>Definition</ttcol>
             <c>@colleagues</c>
             <c>All the people that report to the same manager as identified
             by the User Id.</c>
             <c>@manager</c>
             <c>The manager(s) of the person specified by the User Id.
             Typicially, this will be a single person, however, it may be
             possible that their be multiple managers of a person. This
             should not be confused with using the network distance parameter
             on the query, which may </c>
             <c>@reports</c>
             <c>The person or collection of people who are managed by the
             &lt;userid&gt; of the request.</c>
           </texttable>
         </section>
       </section>
       </x:incubating>
     </section>

   <section title="MediaItem"
            anchor="MediaItem">
     <t>Represents images, movies, and audio.
     <texttable>
      <ttcol align="left" width="15%">Field Name</ttcol>
      <ttcol align="left" width="21%">Field Type</ttcol>
      <ttcol align="left">Description</ttcol>
       <c>album_id</c>
       <c><eref target="./Core-Data.xml#Object-Id">Object-Id</eref></c>
       <c>Album to which the media item belongs.</c>
       <c>created</c>
       <c>string</c>
       <c>Creation datetime associated with the media item -
       assigned by container in UTC.</c>
       <c>description</c>
       <c>string</c>
       <c>Description of the media item.</c>
       <c>duration</c>
       <c>integer</c>
       <c>For audio/video clips - playtime length in
       seconds. set to -1/not defined if unknown.</c>
       <c>file_size</c>
       <c>long</c>
       <c>Number of bytes (set to -1/undefined if unknown).</c>
       <c>id</c>
       <c><eref target="./Core-Data.xml#Object-Id">Object-Id</eref></c>
       <c>Id Associated with the media item.</c>
       <c>language</c>
       <c>string</c>
       <c>Language associated with the media item in ISO
       639-3 format.</c>
       <c>last_updated</c>
       <c>string</c>
       <c>Update datetime associated with the media item -
       assigned by container in UTC.</c>
       <c>location</c>
       <c>Address</c>
       <c>Location corresponding to the media item.</c>
       <c>mime_type</c>
       <c>string</c>
       <c>The MIME type of media, specified as a string.</c>
       <c>num_comments</c>
       <c>integer</c>
       <c>Number of comments on the media item.</c>
       <c>num_views</c>
       <c>integer</c>
       <c>Number of views for the media item.</c>
       <c>num_votes</c>
       <c>integer</c>
       <c>Number of votes received for voting.</c>
       <c>rating</c>
       <c>integer</c>
       <c>Average rating of the media item on a scale of 0-10.</c>
       <c>start_time</c>
       <c>string</c>
       <c>For streaming/live content, datetime when the
       content is available.</c>
       <c>tagged_people</c>
       <c>Array&lt;string&gt;</c>
       <c>Array of string (IDs) of people tagged
       in the media item.</c>
       <c>tags</c>
       <c>Array&lt;string&gt;</c>
       <c>Tags associated with this media item.</c>
       <c>thumbnail_url</c>
       <c>string</c>
       <c>URL to a thumbnail image of the media item.</c>
       <c>title</c>
       <c>string</c>
       <c>Describing the media item.</c>
       <c>type</c>
       <c>string</c>
       <c>The type of media, specified as a <x:ref>MediaItem</x:ref>.Type object.</c>
       <c>url</c>
       <c>string</c>
       <c>Specifying the URL where the media can be found.</c>
     </texttable>
     </t>
     <figure>
      <preamble>application/json representation:</preamble>
      <artwork xml:space="preserve">
{
  "id" : "11223344",
  "thumbnail_url" : "http://pages.example.org/images/11223344-tn.png",
  "mime_type" : "image/png",
  "type" : "image",
  "url" : "http://pages.example.org/images/11223344.png",
  "album_id" : "44332211"
}        
</artwork>
     </figure>
     <figure>
      <preamble>application/xml representation:</preamble>
      <artwork xml:space="preserve">
&lt;MediaItem xmlns="http://ns.opensocial.org/2008/opensocial"&gt;
  &lt;id&gt;11223344&lt;/id&gt;
  &lt;thumbnail_url&gt;http://pages.example.org/images/11223344-tn.png&lt;/thumbnail_url&gt;
  &lt;mimeType&gt;image/png&lt;/mimeType&gt;
  &lt;type&gt;image&lt;/type&gt;
  &lt;url&gt;http://pages.example.org/images/11223344.png&lt;/url&gt;
  &lt;albumId&gt;44332211&lt;/albumId&gt;
&lt;MediaItem&gt;        
</artwork>
     </figure>
     <figure>
      <preamble>application/atom+xml representation:</preamble>
      <artwork xml:space="preserve">
&lt;entry xmlns="http://www.w3.org/2005/Atom"&gt;
 &lt;content type="application/xml"&gt;
   &lt;mediaItem xmlns="http://ns.opensocial.org/2008/opensocial"&gt;
     &lt;id&gt;11223344&lt;/id&gt;
     &lt;thumbnail_url&gt;http://pages.example.org/images/11223344-tn.png&lt;/thumbnail_url&gt;
     &lt;mimeType&gt;image/png&lt;/mimeType&gt;
     &lt;type&gt;image&lt;/type&gt;
     &lt;url&gt;http://pages.example.org/images/11223344.png&lt;/url&gt;
     &lt;albumId&gt;44332211&lt;/albumId&gt;
   &lt;mediaItem&gt;
 &lt;/content&gt;
 &lt;title/&gt;
 &lt;updated&gt;2003-12-13T18:30:02Z&lt;/updated&gt;
 &lt;author&gt;&lt;url&gt;example.org:55443322&lt;/url&gt;&lt;/author&gt;
 &lt;id&gt;urn:guid:example.org:11223344&lt;/id&gt;
&lt;/entry&gt;        
</artwork>
     </figure>
   </section>
   <section title="MediaLink" anchor="MediaLink">
    <xref target='Issue-1140'>Discussion</xref>
    <t>Some types of objects may have an alternative visual representation in the form of an image, video or embedded HTML fragments. A Media Link represents a hyperlink to such resources.</t>
       <texttable>
           <ttcol align="left" width="15%">Field Name</ttcol>
           <ttcol align="left" width="21%">Field Type</ttcol>
           <ttcol align="left">Description</ttcol>
           <c>duration</c>
           <c>integer</c>
           <c>A hint to the consumer about the length, in seconds, of the media resource identified by the url property.
               A media link MAY contain a "duration" property when the target resource is a time-based media item such
               as an audio or video.
           </c>
           <c>height</c>
           <c>integer</c>
           <c>A hint to the consumer about the height, in pixels, of the media resource identified by the url property.
               A media link MAY contain a height property when the target resource is a visual media item such as an
               image, video or embeddable HTML page.
           </c>
           <c>url</c>
           <c>string</c>
           <c>The IRI of the media resource being linked. A media link MUST have a url property. OpenSocial note: Many
               OpenSocial containers currently use
               <eref target="./Social-Data.xml#MediaItem">Media Items</eref>
               as defined by this specification. When a container creates a Media Link that is based on a Media Item,
               the Media Link URL MUST match the URL of the Media Item.
           </c>
           <c>width</c>
           <c>integer</c>
           <c>A hint to the consumer about the width, in pixels, of the media resource identified by the url property. A
               media link MAY contain a width property when the target resource is a visual media item such as an image,
               video or embeddable HTML page.
           </c>
           <c>mediaItemId</c>
           <c>string</c>
           <c>Optional. Provides a mapping from an Activity Streams MediaLink to an OpenSocial<eref
                   target="./Social-Data.xml#MediaItem">MediaItem</eref>. Identifies the corresponding MediaItem that
               this MediaLink maps to, if any. This field is namespaced as an "openSocial" extension.
           </c>
       </texttable>
       <t>An example MediaLink</t>
    <figure>
     <preamble>application/json representation:</preamble>
     <artwork xml:space="preserve">
{
  "url": "http://www.example.com/johnsalbum/cover.jpg",
  "width": 400,
  "height": 300,
  "duration": 93,
  "openSocial": {
    "mediaItemId": "mediaItem123"
  }
}	</artwork>
    </figure>
    <figure>
     <preamble>application/xml representation:</preamble>
     <artwork xml:space="preserve">
&lt;image&gt;
  &lt;duration&gt;93&lt;/duration&gt;
  &lt;height&gt;300&lt;/height&gt;
  &lt;url&gt;http://www.example.com/johnsalbum/cover.jpg&lt;/url&gt;
  &lt;width&gt;400&lt;/width&gt;
  &lt;openSocial&gt;
    &lt;mediaItemId&gt;mediaItem123&lt;/mediaItemId&gt;
  &lt;/openSocial&gt;
&lt;/image&gt;</artwork>
    </figure>
    </section> 
    
    
   <section title="Name"
            anchor="Name">
            
     
            
     <t>The components of the person's real name. Providers MAY return just the
     full name as a single string in the formatted sub-field, or they MAY
     return just the individual component fields using the other sub-fields, or
     they MAY return both. If both variants are returned, they SHOULD be
     describing the same name, with the formatted name indicating how the
     component fields should be combined. 
     <texttable>
      <ttcol align="left" width="15%">Field Name</ttcol>
      <ttcol align="left" width="21%">Field Type</ttcol>
      <ttcol align="left">Description</ttcol>
      <c>familyName</c>
      <c>string</c>
      <c>he family name of this Person, or "Last Name" in most Western
      languages (e.g. Smarr given the full name Mr. Joseph Robert Smarr,
      Esq.).</c>
      <c>formatted</c>
      <c>string</c>
      <c>The full name, including all middle names, titles, and suffixes as
      appropriate, formatted for display (e.g. Mr. Joseph Robert Smarr, Esq.).
      This is the Primary Sub-Field for this field, for the purposes of sorting
      and filtering.</c>
      <c>givenName</c>
      <c>string</c>
      <c>The given name of this Person, or "First Name" in most Western
      languages (e.g. Joseph given the full name Mr. Joseph Robert Smarr,
      Esq.).</c>
      <c>honorificPrefix</c>
      <c>string</c>
      <c>The honorific prefix(es) of this Person, or "Title" in most Western
      languages (e.g. Mr. given the full name Mr. Joseph Robert Smarr,
      Esq.).</c>
      <c>honorificSuffix</c>
      <c>string</c>
      <c>The honorifix suffix(es) of this Person, or "Suffix" in most Western
      languages (e.g. Esq. given the full name Mr. Joseph Robert Smarr,
      Esq.).</c>
      <c>middleName</c>
      <c>string</c>
      <c>The middle name(s) of this Person (e.g. Robert given the full name Mr.
      Joseph Robert Smarr, Esq.).</c>
      
      <c>pronunciation</c>
      <c>string</c>
      <c>A string describing the appropriate natural-language pronunciation of the name. <xref target='Issue-1132'>Discussion</xref></c>
      
      <c>pronunciationUrl</c>
      <c>string</c>
      <c>An IRI to an audio resource illustrating the appropriate natural-language
      pronunciation of the name. <xref target='Issue-1132'>Discussion</xref></c>
      
     </texttable></t>
     
     
   </section>
   
   <section title="ObjectMetadata" anchor="ObjectMetadata">
    <x:incubating note="Issue 1261: Metadata Service" href="http://code.google.com/p/opensocial-resources/issues/detail?id=1261">
     <t>Each ObjectMetadata instance represents all of the metadata associated with a particular object type.</t>
      <texttable align="left" >
      <ttcol align="left" width="15%">Field</ttcol>
      <ttcol align="left" width="25%">Type</ttcol>
      <ttcol align="left" >Description</ttcol>
      <c>description</c>
      <c>String</c>
      <c>The textual description of this object.</c>
      <c>fields</c>
      <c>FieldMetadata[]</c>
      <c>Description of all possible fields that may appear in this object represented as an Array of FieldMetadata.</c>
      <c>name</c>
      <c>String</c>
      <c>Formal name of this object type.</c>
      <c>resourceLinks</c>
      <c>ResourceMetadata[]</c>
      <c>Description of all possible resource links that may appear in this object.</c>
      <c>since</c>
      <c>String</c>
      <c>OpenSocial version in which this object is initially available.</c>
     </texttable> 
    </x:incubating>
   </section>
   
   
   
   
   <section title="Organization" anchor="Organization">
<t>Describes a current or past organizational affiliation of this contact.
     Service Providers that support only a single Company Name and Job Title
     field should represent them with a single organization element with name
     and title properties, respectively. 
     <texttable>
      <ttcol align="left" width="15%">Field Name</ttcol>
      <ttcol align="left" width="21%">Field Type</ttcol>
      <ttcol align="left">Description</ttcol>
      <c>address</c>
      <c><x:ref>Address</x:ref></c>
      <c>The physical address of this organization.</c>
      <c>department</c>
      <c>string</c>
      <c>The department within this organization.</c>
      <c>description</c>
      <c>string</c>
      <c>A textual description of the role this Person played in this
      organization. This field MAY contain newlines.</c>
      <c>endDate</c>
      <c><eref target="./Core-Data.xml#Date">Date</eref> or string</c>
      <c>The date this Person left this organization or the role specified by
      title within this organization. This value SHOULD be a valid 
      <eref target="./Core-Data.xml#Date">Date</eref> if possible, but MAY be an unformatted
      string, since it is recognized that this field is often presented as
      free-text.</c>
      <c>field</c>
      <c>string</c>
      <c>The field the Organization is in.</c>
      <c>location</c>
      <c>string</c>
      <c>The physical location of this organization. This is an
      abbreviated location like "San Francisco". The container could
      choose to implement either "address" or "location" field, or
      both.</c>
      <c>name</c>
      <c>string</c>
      <c>The name of the organization (e.g. company, school, or other
      organization). This field MUST have a non-empty value for each
      organization returned. This is the Primary Sub-Field for this field, for
      the purposes of sorting and filtering.</c>
      <c>salary</c>
      <c>string</c>
      <c>The salary the person receieves from the organization</c>
      <c>startDate</c>
      <c><eref target="./Core-Data.xml#Date">Date</eref> or string</c> 
      <c>The date this Person joined this organization. This value SHOULD be a
      valid <eref target="./Core-Data.xml#Date">Date</eref>
      if possible, but MAY be an unformatted
      string, since it is recognized that this field is often presented as
      free-text.</c>
      <c>subfield</c>
      <c>string</c>
      <c>The subfield the Organization is in.</c>
      <c>title</c>
      <c>string</c>
      <c>The job title or organizational role within this
      organization.</c>
      <c>type</c>
      <c>string</c>
      <c>The type of organization, with Canonical Values job and school.</c>
      <c>webpage</c>
      <c>string</c>
      <c>A webpage related to the organization.</c>
     </texttable></t>
   </section>
 
   <section title="File" anchor="File">
      <x:incubating note="Simple File Object" href="http://code.google.com/p/opensocial-resources/issues/detail?id=1190">  
     <t>Describes a generic file or document.
          <texttable>
      <ttcol align="left" width="15%">Field Name</ttcol>
      <ttcol align="left" width="21%">Field Type</ttcol>
      <ttcol align="left">Description</ttcol>
      <c>author</c>
      <c><x:ref>Person</x:ref></c>
      <c>The person who created the file</c>
      <c>displayName</c>
      <c>string</c>
      <c>The natural-language, human-readable and plain-text title of the file.</c>
      <c>fileUrl</c>
      <c>string</c>
      <c>The IRI of the file described by this object</c>
      <c>id</c>
      <c>string</c>
      <c>The unique identifier for the file object</c>
      <c>published</c>
      <c>string</c>
      <c>The optional time the file object was created in the form of an [RFC3339] "date-time"</c>
      <c>mimeType</c>
      <c>string</c>
      <c>The MIME type of the file described by the object.</c>
      <c>updated</c>
      <c>string</c>
      <c>The optional time the file object was last updated in the form of an [RFC3339] "date-time".</c>
      <c>url</c>
      <c>string</c>
      <c>The permanent IRI of the file's HTML representation.</c>
     </texttable>
     </t>
        </x:incubating>
   </section>
   
   <section title="PropertyMetadata" anchor="PropertyMetadata">
    <x:incubating note="Issue 1261: Metadata Service" href="http://code.google.com/p/opensocial-resources/issues/detail?id=1261">
     <t>Each PropertyMetadata instance represents a configuration value for this social container.</t>
      <texttable align="left" >
      <ttcol align="left" width="15%">Field</ttcol>
      <ttcol align="left" width="25%">Type</ttcol>
      <ttcol align="left" >Description</ttcol>
      <c>description</c>
      <c>String</c>
      <c>A textual description of the property</c>
      <c>name</c>
      <c>String</c>
      <c>The name of the metadta property</c>
      <c>type</c>
      <c>String</c>
      <c>Object type of this property value</c>
      <c>value</c>
      <c>Object</c>
      <c>The current value of this property</c>
     </texttable> 
    </x:incubating>
   </section>
   <section title="Message Collection Id" anchor="Message-Collection-Id">
     <t>The Message-Collection-Id is an <eref target="./Core-Data.xml#Object-Id">Object-Id</eref> for the message collection. There are reserved values for common cases.</t>
       <artwork type="abnf" xml:space="preserve"><![CDATA[
Message-Collection-Id = ]]><eref target="./Core-Data.xml#Object-Id">Object-Id</eref><![CDATA[ / "@inbox" / "@outbox"
]]></artwork>
     <t>The reserved values are defined in the following table:</t>
     <texttable align="left">
       <ttcol>Value</ttcol>
       <ttcol>Description</ttcol>
       <c>@inbox</c>
       <c>The user inbox to access incoming messages</c>
       <c>@outbox</c>
       <c>The user outbox where to send outgoing messages</c>
     </texttable>
   </section>
   <xref target='Issue-1279'>Discussion</xref>
  </section>
 </middle>
 <back>
   <references title="Discussion">
  <!-- Spec change issues/discussion -->
   <reference anchor='Issue-1140'
              target="http://code.google.com/p/opensocial-resources/issues/detail?id=1140">
    <front>
     <title>Incorporate ActivityStreams 1.0 into OpenSocial</title>
    </front>
   </reference>
   <reference anchor='Issue-1132'
              target="http://code.google.com/p/opensocial-resources/issues/detail?id=1132">
    <front>
     <title>Proposal to Modify the Social Data Model in OS 2.0</title>
    </front>
   </reference>
   <reference anchor='Issue-1218'
              target="http://code.google.com/p/opensocial-resources/issues/detail?id=1218">
    <front>
     <title>Person required fields inconsistency</title>
    </front>
   </reference>
   <reference anchor='Issue-1180'
              target="http://code.google.com/p/opensocial-resources/issues/detail?id=1180">
    <front>
     <title>Missing datatypes in message section</title>
    </front>
   </reference> 
   <reference anchor='Issue-1223'
              target="http://code.google.com/p/opensocial-resources/issues/detail?id=1223">
    <front>
     <title>App-Id &amp; @app definitions missing</title>
    </front>
   </reference> 
   <reference anchor='Issue-1236'
              target="http://code.google.com/p/opensocial-resources/issues/detail?id=1236">
    <front>
     <title>Clarify how Activity Streams are extended with Embedded Experiences</title>
    </front>
   </reference> 
   <reference anchor='Issue-1319'
              target="http://code.google.com/p/opensocial-resources/issues/detail?id=1319">
    <front>
     <title>Add embed as a field in the activityEntry</title>
    </front>
   </reference> 
   <reference anchor='Issue-1318'
              target="http://code.google.com/p/opensocial-resources/issues/detail?id=1318">
    <front>
     <title>deliverTo: incorrectly specified on ActivityObject</title>
    </front>
   </reference> 
   <reference anchor='Issue-1317'
              target="http://code.google.com/p/opensocial-resources/issues/detail?id=1317">
    <front>
     <title>Change the namespace for activityStrea.ms support from org.opensocial to openSocial</title>
    </front>
   </reference> 
   <reference anchor='Issue-1239'
              target="http://code.google.com/p/opensocial-resources/issues/detail?id=1239">
    <front>
     <title>Broken links in spec for app id / group id</title>
    </front>
   </reference> 
   <reference anchor='Issue-1333'
              target="http://code.google.com/p/opensocial-resources/issues/detail?id=1333">
    <front>
     <title>Relationship indication in Person object</title>
    </front>
   </reference>
   <reference anchor='Issue-1279'
              target="http://code.google.com/p/opensocial-resources/issues/detail?id=1279">
    <front>
     <title>Message-Collection-Id definition</title>
    </front>
   </reference>
       <reference anchor='Issue-1320'
                  target="http://code.google.com/p/opensocial-resources/issues/detail?id=1320">
           <front>
               <title>Activity Stream service defects</title>
           </front>
       </reference>
  </references>
  <references>
   <reference anchor='RFC2119'>
    <front>
     <title>Key words for use in RFCs to Indicate Requirement Levels</title>
     <author initials='S.'
             surname='Bradner'
             fullname='Scott Bradner'>
      <organization abbrev='HarvardU'>Harvard University</organization>
     </author>
     <date month='March'
           year='1997' />
    </front>
    <seriesInfo name='RFC' value='2119' />
   </reference>
   <reference anchor='RFC2606'>
    <front>
     <title>Reserved Top Level DNS Names</title>
     <author initials='D.'
             surname='Eastlake'
             fullname='Donald E. Eastlake 3rd'>
      <organization abbrev='IBM'>IBM</organization>
     </author>
     <author initials='A.'
             surname='Panitz'
             fullname='Aliza R. Panitz'></author>
     <date month='June'
           year='1999' />
    </front>
    <seriesInfo name='RFC'
                value='2606' />
   </reference>
   <reference anchor='RFC2234'>
    <front>
     <title>Augmented BNF for Syntax Specifications: ABNF</title>
    </front>
    <seriesInfo name='RFC'
                value='2234' />
   </reference>
   <reference anchor='RFC20'>
    <front>
     <title>ASCII format for Network Interchange</title>
    </front>
    <seriesInfo name='RFC'
                value='20' />
   </reference>
   <reference anchor='Social-Graph-Node-Mapper'
              target='http://code.google.com/p/google-sgnodemapper/'>
    <front>
     <title>Social Graph Node Mapper</title>
    </front>
   </reference>
   <reference anchor='CoreData'
              target="./Core-Data.xml">
    <front>
     <title>OpenSocial Core Data Specification</title>
     <author fullname='OpenSocial and Gadgets Specification Group
                       &lt;opensocial-and-gadgets-spec@googlegroups.com&gt;'></author>
     <date month='August'
           year='2011' />
    </front>
   </reference>
   <reference anchor='SocialGadget'
              target="./Social-Gadget.xml">
    <front>
     <title>OpenSocial Social Gadget Specification</title>
     <author fullname='OpenSocial and Gadgets Specification Group
                       &lt;opensocial-and-gadgets-spec@googlegroups.com&gt;'></author>
     <date month='August'
           year='2011' />
    </front>
   </reference>
   <reference anchor='SocialServer'
              target="./Social-API-Server.xml">
    <front>
     <title>OpenSocial Social API Server Specification</title>
     <author fullname='OpenSocial and Gadgets Specification Group
                       &lt;opensocial-and-gadgets-spec@googlegroups.com&gt;'></author>
     <date month='August'
           year='2011' />
    </front>
   </reference>
  </references>
 </back>
</rfc>

