You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2015/08/04 22:20:13 UTC

[2/3] incubator-usergrid git commit: User management section converted.

User management section converted.


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/5770cbc3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/5770cbc3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/5770cbc3

Branch: refs/heads/ug2-doc-update
Commit: 5770cbc3ba631b46a35be11eb2fdc7f4d0a95e33
Parents: be02dd0
Author: Dave Johnson <sn...@apache.org>
Authored: Tue Aug 4 15:35:01 2015 -0400
Committer: Dave Johnson <sn...@apache.org>
Committed: Tue Aug 4 15:35:01 2015 -0400

----------------------------------------------------------------------
 docs/user-management/activity.md         | 1057 +++++--------------------
 docs/user-management/group.md            |  365 +++++++++
 docs/user-management/iOS10seeusermsg.jpg |  Bin 0 -> 47979 bytes
 docs/user-management/iOS1chooseapp.jpg   |  Bin 0 -> 43752 bytes
 docs/user-management/iOS2register.jpg    |  Bin 0 -> 47339 bytes
 docs/user-management/iOS4signin.jpg      |  Bin 0 -> 46093 bytes
 docs/user-management/iOS5emptyfeed.jpg   |  Bin 0 -> 42009 bytes
 docs/user-management/iOS6newmsg.jpg      |  Bin 0 -> 55357 bytes
 docs/user-management/iOS7feed1msg.jpg    |  Bin 0 -> 45070 bytes
 docs/user-management/iOS9follow.jpg      |  Bin 0 -> 57938 bytes
 docs/user-management/login.png           |  Bin 0 -> 162318 bytes
 docs/user-management/messagee-example.md |  135 +++-
 docs/user-management/portal1.png         |  Bin 0 -> 202277 bytes
 docs/user-management/portal2.png         |  Bin 0 -> 178318 bytes
 docs/user-management/portal3.png         |  Bin 0 -> 486403 bytes
 docs/user-management/portal4.png         |  Bin 0 -> 166079 bytes
 docs/user-management/portal5.png         |  Bin 0 -> 217950 bytes
 docs/user-management/user-connections.md |   39 +
 18 files changed, 726 insertions(+), 870 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5770cbc3/docs/user-management/activity.md
----------------------------------------------------------------------
diff --git a/docs/user-management/activity.md b/docs/user-management/activity.md
index b992f6a..0534e64 100644
--- a/docs/user-management/activity.md
+++ b/docs/user-management/activity.md
@@ -40,324 +40,140 @@ activity entities. See You do not have access to view this node for
 descriptions of these APIs.
 
 **Note:** Although not shown in the API examples below, you need to
-provide a valid access token with each API call. See [Authenticating
-users and application
-clients](/authenticating-users-and-application-clients) for details.
+provide a valid access token with each API call. See 
+[Authenticating users and application clients](../security-and-auth/authenticating-users-and-application-clients.html) for details.
 
-Creating an activity {dir="ltr"}
---------------------
 
-Use the  POST method to create an activity in the activities collection.
+## Posting activities
+
+Posting a user activity
+
+Use the  POST method to create an activity in the activities collection.
 
 ### Request URI
 
-POST /{org\_id}/{app\_id}/users/{uuid|username}/activities {request
-body}
-
-### Parameters
-
-+--------------------------------------+--------------------------------------+
-| Parameter                            | Description                          |
-+======================================+======================================+
-| arg uuid|string org\_id              | Organization UUID or organization    |
-|                                      | name                                 |
-+--------------------------------------+--------------------------------------+
-| arg uuid|string app\_id              | Application UUID or application name |
-+--------------------------------------+--------------------------------------+
-| request body                         | One or more sets of activity         |
-|                                      | properties:                          |
-|                                      |                                      |
-|                                      |     {                                |
-|                                      |       "actor":                       |
-|                                      |         {                            |
-|                                      |         "displayName":"John Doe",    |
-|                                      |         "uuid":"1f3567aa-da83-11e1-a |
-|                                      | fad-12313b01d5c1",                   |
-|                                      |         "username":"john.doe",       |
-|                                      |         "image":{                    |
-|                                      |           "duration":0,              |
-|                                      |           "height":80,               |
-|                                      |           "url":"http://www.gravatar |
-|                                      | .com/avatar/","width":80},           |
-|                                      |       "email":"john.doe@gmail.com"}, |
-|                                      |       "verb":"post",                 |
-|                                      |       "content":"Hello World!"       |
-|                                      |     }                                |
-+--------------------------------------+--------------------------------------+
+    POST /<org_id>/<app_id>/users/<uuid | username>/activities { request body }
 
-### Example - Request
+Parameters
 
--   [cURL](#curl_create_activity)
--   [JavaScript (HTML5)](#javascript_create_activity)
--   [Ruby](#ruby_create_activity)
--   [Node.js](#nodejs_create_activity)
-
-<!-- -->
-
-    curl -X POST "https://api.usergrid.com/my-org/my-app/users/john.doe/activities" -d '{"actor":{"displayName":"John Doe","uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1","username":"john.doe",
-    "image":{"duration":0,"height":80,"url":"http://www.gravatar.com/avatar/","width":80},
-    "email":"john.doe@gmail.com"},"verb":"post","content":"Hello World!"}'
-
-The example assumes use of the [JavaScript (HTML5)
-SDK](https://github.com/apigee/usergrid-javascript-sdk).
-
-    var options = {
-        method:'POST',
-        endpoint:'users/john.doe/activities',
-        body:{"actor":
-               {"displayName":"John Doe",
-                "uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1",
-                "username":"john.doe",
-                "image":
-                 {"duration":0,
-                  "height":80,
-                  "url":"http://www.gravatar.com/avatar/",
-                  "width":80},
-                  "email":"john.doe@gmail.com"},
-                 "verb":"post",
-                 "content":"Hello World!"}
-    };
-    client.request(options, function (err, data) {
-        if (err) {
-            //error — POST failed
-        } else {
-            // success — POST worked. Data will contain raw results from API call        
-        }
-    });
-
-The example assumes use of the [Ruby
-SDK](https://github.com/scottganyo/usergrid_iron).
-
-    app = Usergrid::Application.new 'https://api.usergrid.com/my-org/my-app/'
-    app.create_activity { actor: { displayName: 'John Doe', uuid: '1f3567aa-da83-11e1-afad-12313b01d5c1', username: 'john.doe', image: { duration: 0, height: 80, url: 'http://www.gravatar.com/avatar/', width: 80 }, email: 'john.doe@gmail.com' }, verb: 'post', content: 'Hello World!' }
-
-The example assumes use of the [Node.js
-module](https://github.com/apigee/usergrid-node-module).
-
-    var options = {
-        method:'POST',
-        endpoint:'users/john.doe/activities',
-        body:{"actor":
-               {"displayName":"John Doe",
-                "uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1",
-                "username":"john.doe",
-                "image":
-                 {"duration":0,
-                  "height":80,
-                  "url":"http://www.gravatar.com/avatar/",
-                  "width":80},
-                  "email":"john.doe@gmail.com"},
-                 "verb":"post",
-                 "content":"Hello World!"}
-    };
-    client.request(options, function (err, data) {
-        if (err) {
-            //error — POST failed
-        } else {
-            // success — POST worked. Data will contain raw results from API call        
+Parameter	            Description
+---------               -----------
+arg uuid|string org_id	Organization UUID or organization name
+arg uuid|string app_id	Application UUID or application name
+request body	        One or more sets of activity properties
+
+Here's an example request body:
+
+    {
+        "actor":{
+            "displayName":"John Doe",
+            "uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1",
+            "username":"john.doe",
+            "image":{
+                "duration":0,
+                "height":80,
+                "url":"http://www.gravatar.com/avatar/","width":80},
+                "email":"john.doe@gmail.com"
+            },
+            "verb":"post",
+            "content":"Hello World!"
         }
-    });
+    }
+    
+### Example - Request
 
+    curl -X POST "https://api.usergrid.com/my-org/my-app/users/john.doe/activities" -d '{"actor":{"displayName":"John Doe","uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1","username":"john.doe", "image":{"duration":0,"height":80,"url":"http://www.gravatar.com/avatar/","width":80}, "email":"john.doe@gmail.com"},"verb":"post","content":"Hello World!"}'
+    
 ### Example - Response
 
     {
-     "action" : "post",
-     "application" : "5111c463-6a42-11e1-b6dd-1231380a0284",
-     "params" : {
-     },
-     "path" : "/users/1f3567aa-da83-11e1-afad-12313b01d5c1/activities",
-     "uri" : "https://api.usergrid.com/5111c463-6a42-11e1-b6dd-1231380a0284/users/1f3567aa-da83-11e1-afad-12313b01d5c1/activities",
-     "entities" : [ {
-       "uuid" : "da448955-f3aa-11e1-8042-12313d331ae8",
-       "type" : "activity",
-       "created" : 1346445092974,
-       "modified" : 1346445092974,
-       "actor" : {
-         "displayName" : "John Doe",
-         "uuid" : "1f3567aa-da83-11e1-afad-12313b01d5c1",
-         "username" : "john.doe",
-         "image" : {
-           "duration" : 0,
-           "height" : 80,
-           "url" : "http://www.gravatar.com/avatar/",
-           "width" : 80
-         },
-         "email" : "john.doe@gmail.com"
-       },
-       "content" : "Hello World!",
-       "metadata" : {
-         "path" : "/users/1f3567aa-da83-11e1-afad-12313b01d5c1/activities/da448955-f3aa-11e1-8042-12313d331ae8"
-       },
-       "published" : 1346445092974,
-       "verb" : "post"
-     } ],
-     "timestamp" : 1346445092827,
-     "duration" : 1406,
-     "organization": "my-org",
-     "applicationName": "my-app"
+        "action" : "post",
+        "application" : "5111c463-6a42-11e1-b6dd-1231380a0284",
+         "params" : {
+        },
+        "path" : "/users/1f3567aa-da83-11e1-afad-12313b01d5c1/activities",
+        "uri" : "https://api.usergrid.com/5111c463-6a42-11e1-b6dd-1231380a0284/users/1f3567aa-da83-11e1-afad-12313b01d5c1/activities",
+        "entities" : [ {
+            "uuid" : "da448955-f3aa-11e1-8042-12313d331ae8",
+            "type" : "activity",
+            "created" : 1346445092974,
+            "modified" : 1346445092974,
+            "actor" : {
+                "displayName" : "John Doe",
+                "uuid" : "1f3567aa-da83-11e1-afad-12313b01d5c1",
+                "username" : "john.doe",
+                "image" : {
+                    "duration" : 0,
+                    "height" : 80,
+                    "url" : "http://www.gravatar.com/avatar/",
+                    "width" : 80
+                },
+                "email" : "john.doe@gmail.com"
+            },
+            "content" : "Hello World!",
+            "metadata" : {
+                "path" : "/users/1f3567aa-da83-11e1-afad-12313b01d5c1/activities/da448955-f3aa-11e1-8042-12313d331ae8"
+            },
+            "published" : 1346445092974,
+            "verb" : "post"
+        } ],
+        "timestamp" : 1346445092827,
+        "duration" : 1406,
+        "organization": "my-org",
+        "applicationName": "my-app"
     }
 
-**Note:** Anytime a logged-in user makes a request, you can substitute
-"me" for the uuid or username. So the format of a request to create an
-activity for the currently logged-in user would look like this:
-
-POST /{org\_id}/{app\_id}/users/me/activities {request body}
-
-The users/me endpoint is accessible only if you provide an access token
-with the request. If you don't provide an access token with the request,
-that is, you make an anonymous (or "guest") call, the system will not be
-able to determine which user to return as /users/me.
-
-When you create an activity it creates a relationship between the
-activity and the user who created it. In other words, the newly created
-activity above belongs to john.doe. Another way of saying this is the
-user "owns" the activity. And because this relationship exists, the
-activity will appear in the feed of any of the user’s followers (in this
-example, anyone who is following john.doe). However, it will not appear
-in the feed of people the user follows. The activity is accessible at
-the /activites endpoint to users who have the permission to read that
-endpoint.
-
-Notice the properties specified in the request body in the previous
-example are *actor*, *verb*, and *content*. The *actor*, *verb*, and
-*content* properties are built into the Activity entity (see
-[System-defined activity properties](#properties)). The actor property
-specifies properties of the entity that performs the action (here, user
-john.doe). The gravatar URL is used to create an icon for the
-activity. And because an Activity is simply an Apache Usergrid entity, you
-can also create custom properties.
-
-The *verb* parameter is descriptive. You can use it to indicate what
-type of activity is posted, for example, an image versus text. The
-value*post* is defined in the JSON Activity Streams specification as
-“the act of authoring an object and then publishing it online.“
-
-Posting an activity to a group {dir="ltr"}
-------------------------------
-
-Use the POST method to post an activity to a specific group. In this
-case the activity is created in the activities collection and is
-accessible at the /activities endpoint to users who have the permission
-to read that endpoint. In addition, a relationship is established
-between the activity and the group, and because of that, the activity
-will appear in the group’s feed. The group "owns" the activity. Also,
-the activity will be published in the feed of all users that are members
-of the group.
-
-Request URI
-
-POST /{org\_id}/{app\_id}/groups/{uuid|groupname}/activities {request
-body}
-
-### Parameters
-
-+--------------------------------------+--------------------------------------+
-| Parameter                            | Description                          |
-+======================================+======================================+
-| arg uuid|string org\_id              | Organization UUID or organization    |
-|                                      | name                                 |
-+--------------------------------------+--------------------------------------+
-| arg uuid|string app\_id              | Application UUID or application name |
-+--------------------------------------+--------------------------------------+
-| arg uuid|string groupname            | UUID or name of the group            |
-+--------------------------------------+--------------------------------------+
-| request body                         | One or more sets of activity         |
-|                                      | properties:                          |
-|                                      |                                      |
-|                                      |     {                                |
-|                                      |       "actor":                       |
-|                                      |         {                            |
-|                                      |         "displayName":"John Doe",    |
-|                                      |         "uuid":"1f3567aa-da83-11e1-a |
-|                                      | fad-12313b01d5c1",                   |
-|                                      |         "username":"john.doe",       |
-|                                      |         "image":{                    |
-|                                      |           "duration":0,              |
-|                                      |           "height":80,               |
-|                                      |           "url":"http://www.gravatar |
-|                                      | .com/avatar/","width":80},           |
-|                                      |       "email":"john.doe@gmail.com"}, |
-|                                      |       "verb":"post",                 |
-|                                      |       "content":"Hello World!"       |
-|                                      |     }                                |
-+--------------------------------------+--------------------------------------+
+__Note__: Anytime a logged-in user makes a request, you can substitute "me" for the uuid or username. So the format of a request to create an activity for the currently logged-in user would look like this:
 
-### Example - Request
+    POST /<org_id>/<app_id>/users/me/activities { request body }
 
--   [cURL](#curl_post_activity_group)
--   [JavaScript (HTML5)](#javascript_post_activity_group)
--   [Ruby](#ruby_post_activity_group)
--   [Node.js](#nodejs_post_activity_group)
-
-<!-- -->
-
-    curl -X POST "https://api.usergrid.com/my-org/my-app/groups/mygroup/activities" -d '{"actor":{"displayName":"John Doe","uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1","username":"john.doe",
-    "image":{"duration":0,"height":80,"url":"http://www.gravatar.com/avatar/","width":80},
-    "email":"john.doe@gmail.com"},"verb":"post","content":"Hello World!"}'
-
-The example assumes use of the [JavaScript (HTML5)
-SDK](https://github.com/apigee/usergrid-javascript-sdk).
-
-    var options = {
-        method:'POST',
-        endpoint:'groups/mygroup/activities',
-        body:{"actor":
-               {"displayName":"John Doe",
-                "uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1",
-                "username":"john.doe",
-                "image":
-                 {"duration":0,
-                  "height":80,
-                  "url":"http://www.gravatar.com/avatar/",
-                  "width":80},
-                  "email":"john.doe@gmail.com"},
-                 "verb":"post",
-                 "content":"Hello World!"}
-    };
-    client.request(options, function (err, data) {
-        if (err) {
-            //error — POST failed
-        } else {
-            //success — POST worked. Data will contain raw results from API call.        
-        }
-    });
-
-The example assumes use of the [Ruby
-SDK](https://github.com/scottganyo/usergrid_iron).
-
-    app = Usergrid::Application.new 'https://api.usergrid.com/my-org/my-app/'
-    app['groups/mygroup/activities'].post { actor:{ displayName: 'John Doe', uuid : '1f3567aa-da83-11e1-afad-12313b01d5c1', username: 'john.doe', image: { duration: 0, height: 80, url: 'http://www.gravatar.com/avatar/', width: 80 }, email: 'john.doe@gmail.com' }, verb: 'post', content: 'Hello World!' }
-
-The example assumes use of the [Node.js
-module](https://github.com/apigee/usergrid-node-module).
-
-    var options = {
-        method:'POST',
-        endpoint:'groups/mygroup/activities',
-        body:{"actor":
-               {"displayName":"John Doe",
-                "uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1",
-                "username":"john.doe",
-                "image":
-                 {"duration":0,
-                  "height":80,
-                  "url":"http://www.gravatar.com/avatar/",
-                  "width":80},
-                  "email":"john.doe@gmail.com"},
-                 "verb":"post",
-                 "content":"Hello World!"}
-    };
-    client.request(options, function (err, data) {
-        if (err) {
-            //error — POST failed
-        } else {
-            //success — POST worked. Data will contain raw results from API call.        
-        }
-    });
+The ``/users/me`` endpoint is accessible only if you provide an access token with the request. If you don't provide an access token with the request, that is, you make an anonymous (or "guest") call, the system will not be able to determine which user to return as ``/users/me``.
 
-Because this relationship exists, this activity will appear in the feed
-of all users who are members of mygroup. It won't appear in the feeds of
-the group members’ followers or in feeds of users they follow.
+When you create an activity it creates a relationship between the activity and the user who created it. In other words, the newly created activity above belongs to john.doe. Another way of saying this is the user "owns" the activity. And because this relationship exists, the activity will appear in the feed of any of the user’s followers (in this example, anyone who is following john.doe). However, it will not appear in the feed of people the user follows. The activity is accessible at the ``/activities`` endpoint to users who have the permission to read that endpoint.
+
+Notice the properties specified in the request body in the previous example are actor, verb, and content. The actor, verb, and content properties are built into the Activity entity (see Default Data Entity Types). The actor property specifies properties of the entity that performs the action (here, user john.doe). The gravatar URL is used to create an icon for the activity. And because an Activity is simply an API Services data entity, you can also create custom properties.
+
+The verb parameter is descriptive. You can use it to indicate what type of activity is posted, for example, an image versus text. The value post is defined in the JSON Activity Streams specification as “the act of authoring an object and then publishing it online.“
+
+## Posting an activity to a group
+
+Use the POST method to post an activity to a specific group. In this case the activity is created in the activities collection and is accessible at the /activities endpoint to users who have the permission to read that endpoint. In addition, a relationship is established between the activity and the group, and because of that, the activity will appear in the group’s feed. The group "owns" the activity. Also, the activity will be published in the feed of all users that are members of the group.
+
+### Request URI
+
+    POST /{org_id}/{app_id}/groups/{uuid|groupname}/activities {request body}
+
+Parameters
+
+Parameter	               Description
+---------                  -----------
+arg uuid|string org_id	   Organization UUID or organization name
+arg uuid|string app_id	   Application UUID or application name
+arg uuid|string groupname  UUID or name of the group
+request body	           One or more sets of activity properties.
+
+Here's a sample request body:
+
+    {
+      "actor":
+        {
+        "displayName":"John Doe",
+        "uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1",
+        "username":"john.doe",
+        "image":{
+          "duration":0,
+          "height":80,
+          "url":"http://www.gravatar.com/avatar/","width":80},
+      "email":"john.doe@gmail.com"},
+      "verb":"post",
+      "content":"Hello World!"    
+    }
+    
+### Example - Request
+
+    curl -X POST "https://api.usergrid.com/my-org/my-app/groups/mygroup/activities" -d '{"actor":{"displayName":"John Doe","uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1","username":"john.doe", "image":{"duration":0,"height":80,"url":"http://www.gravatar.com/avatar/","width":80}, "email":"john.doe@gmail.com"},"verb":"post","content":"Hello World!"}'
+    
+Because this relationship exists, this activity will appear in the feed of all users who are members of mygroup. It won't appear in the feeds of the group members’ followers or in feeds of users they follow.
 
 ### Example - Response
 
@@ -397,148 +213,53 @@ the group members’ followers or in feeds of users they follow.
       "duration": 81,
       "organization": "my-org",
       "applicationName": "my-app"
+    }
 
-Creating an activity for a user's followers in a group {dir="ltr"}
-------------------------------------------------------
+## Creating an activity for a user's followers in a group
 
-Use the POST method to create an activity that will be published only in
-the feeds of users who (1) follow you, and (2) are in the same group to
-which you posted the activity. This is useful if you want to create
-specific groups of friends (for example, acquaintances or colleagues)
-and publish content to them with more precise privacy settings. This
-allows you to re-create a privacy model similar to Google+’s Circles or
-Facebook current privacy system.
+Use the POST method to create an activity that will be published only in the feeds of users who (1) follow you, and (2) are in the same group to which you posted the activity. This is useful if you want to create specific groups of friends (for example, acquaintances or colleagues) and publish content to them with more precise privacy settings. This allows you to re-create a privacy model similar to Google+’s Circles or Facebook current privacy system.
 
 When you create an activity for a user’s followers in a group:
 
--   The activity is accessible at the /activities endpoint to users who
-    have the permission to read that endpoint. The activity will not be
-    cross-posted to the group’s activity endpoint
-    (/groups/{uuid|groupname}/activities)
--   A relationship is automatically created between the activity entity
-    that was just created and the user within that group
-    (/groups/{uuid|groupname}/users/{uuid|username})
--   The user within the group
-    (/groups/{uuid|groupname}/users/{uuid|username}) becomes the owner
-    of the activity (through the owner property in the activity).
+The activity is accessible at the ``/activities`` endpoint to users who have the permission to read that endpoint. The activity will not be cross-posted to the group’s activity endpoint (``/groups/{uuid|groupname}/activities``)
+A relationship is automatically created between the activity entity that was just created and the user within that group (``/groups/{uuid|groupname}/users/{uuid|username}``)
+The user within the group (``/groups/{uuid|groupname}/users/{uuid|username}```) becomes the owner of the activity (through the owner property in the activity).
 
 ### Request URI
 
-POST
-/{org\_id}/{app\_id}/groups/{uuid|groupname}/users/{uuid|username}/activities
-{request body}
-
-### Parameters
-
-+--------------------------------------+--------------------------------------+
-| Parameter                            | Description                          |
-+======================================+======================================+
-| arg uuid|string org\_id              | Organization UUID or organization    |
-|                                      | name                                 |
-+--------------------------------------+--------------------------------------+
-| arg uuid|string app\_id              | Application UUID or application name |
-+--------------------------------------+--------------------------------------+
-| arg uuid|string groupname            | UUID or name of the group            |
-+--------------------------------------+--------------------------------------+
-| arg uuid|string username             | UUID or name of the user             |
-+--------------------------------------+--------------------------------------+
-| request body                         | One or more sets of activity         |
-|                                      | properties:                          |
-|                                      |                                      |
-|                                      |     {                                |
-|                                      |       "actor":                       |
-|                                      |         {                            |
-|                                      |         "displayName":"John Doe",    |
-|                                      |         "uuid":"1f3567aa-da83-11e1-a |
-|                                      | fad-12313b01d5c1",                   |
-|                                      |         "username":"john.doe",       |
-|                                      |         "image":{                    |
-|                                      |           "duration":0,              |
-|                                      |           "height":80,               |
-|                                      |           "url":"http://www.gravatar |
-|                                      | .com/avatar/","width":80},           |
-|                                      |       "email":"john.doe@gmail.com"}, |
-|                                      |       "verb":"post",                 |
-|                                      |       "content":"Hello World!"       |
-|                                      |     }                                |
-+--------------------------------------+--------------------------------------+
+    POST /{org_id}/{app_id}/groups/{uuid|groupname}/users/{uuid|username}/activities {request body}
 
-### Example - Request
+Parameters
 
--   [cURL](#curl_post_activity_user_group)
--   [JavaScript (HTML5)](#javascript_post_activity_user_group)
--   [Ruby](#ruby_post_activity_user_group)
--   [Node.js](#nodejs_post_activity_user_group)
-
-<!-- -->
-
-    curl -X POST "https://api.usergrid.com/my-org/my-app/groups/mygroup/users/john.doe/activities" -d '{"actor":{"displayName":"John Doe","uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1","username":"john.doe",
-    "image":{"duration":0,"height":80,"url":"http://www.gravatar.com/avatar/","width":80},
-    "email":"john.doe@gmail.com"},"verb":"post","content":"Hello World!"}'
-
-The example assumes use of the [JavaScript (HTML5)
-SDK](https://github.com/apigee/usergrid-javascript-sdk).
-
-    var options = {
-        method:'POST',
-        endpoint:'groups/mygroup/users/john.doe/activities',
-        body:{"actor":
-               {"displayName":"John Doe",
-                "uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1",
-                "username":"john.doe",
-                "image":
-                 {"duration":0,
-                  "height":80,
-                  "url":"http://www.gravatar.com/avatar/",
-                  "width":80},
-                  "email":"john.doe@gmail.com"},
-                 "verb":"post",
-                 "content":"Hello World!"}
-    };
-    client.request(options, function (err, data) {
-        if (err) {
-            //error — POST failed
-        } else {
-            //success — POST worked. Data will contain raw results from API call.        
-        }
-    });
-
-The example assumes use of the [Ruby
-SDK](https://github.com/scottganyo/usergrid_iron).
-
-    app = Usergrid::Application.new 'https://api.usergrid.com/my-org/my-app/'
-    app['groups/mygroup/users/john.doe/activities'].post { actor:{ displayName: 'John Doe', uuid : '1f3567aa-da83-11e1-afad-12313b01d5c1', username: 'john.doe', image: { duration: 0, height: 80, url: 'http://www.gravatar.com/avatar/', width: 80 }, email: 'john.doe@gmail.com' }, verb: 'post', content: 'Hello World!' }
-
-The example assumes use of the [Node.js
-module](https://github.com/apigee/usergrid-node-module).
-
-    var options = {
-        method:'POST',
-        endpoint:'groups/mygroup/users/john.doe/activities',
-        body:{"actor":
-               {"displayName":"John Doe",
-                "uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1",
-                "username":"john.doe",
-                "image":
-                 {"duration":0,
-                  "height":80,
-                  "url":"http://www.gravatar.com/avatar/",
-                  "width":80},
-                  "email":"john.doe@gmail.com"},
-                 "verb":"post",
-                 "content":"Hello World!"}
-    };
-    client.request(options, function (err, data) {
-        if (err) {
-            //error — POST failed
-        } else {
-            //success — POST worked. Data will contain raw results from API call.        
-        }
-    });
+Parameter	                Description
+arg uuid|string org_id	    Organization UUID or organization name
+arg uuid|string app_id	    Application UUID or application name
+arg uuid|string groupname	UUID or name of the group
+arg uuid|string username	UUID or name of the user
+request body	            One or more sets of activity properties
+
+Example request body:
 
-Because this relationship exists, this activity will appear in the feed
-of all users who are members of mygroup. It won't appear in the feeds of
-the group members’ followers or in feeds of users they follow.
+    {
+      "actor":
+        {
+        "displayName":"John Doe",
+        "uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1",
+        "username":"john.doe",
+        "image":{
+          "duration":0,
+          "height":80,
+          "url":"http://www.gravatar.com/avatar/","width":80},
+      "email":"john.doe@gmail.com"},
+      "verb":"post",
+      "content":"Hello World!"    
+    }
+    
+### Example - Request
+
+    curl -X POST "https://api.usergrid.com/my-org/my-app/groups/mygroup/users/john.doe/activities" -d '{"actor":{"displayName":"John Doe","uuid":"1f3567aa-da83-11e1-afad-12313b01d5c1","username":"john.doe", "image":{"duration":0,"height":80,"url":"http://www.gravatar.com/avatar/","width":80}, "email":"john.doe@gmail.com"},"verb":"post","content":"Hello World!"}'
+    
+Because this relationship exists, this activity will appear in the feed of all users who are members of mygroup. It won't appear in the feeds of the group members’ followers or in feeds of users they follow.
 
 ### Example - Response
 
@@ -577,324 +298,30 @@ the group members’ followers or in feeds of users they follow.
       "duration" : 95,
       "organization" : "my-org",
       "applicationName" : "my-app"
-
-Getting a user’s activities {dir="ltr"}
----------------------------
-
-Use the GET method to retrieve a user’s activities. This returns the
-activities posted on the user (that is, to
-/users/{uuid|username}/activities), but not the activities of the people
-that user follows. To retrieve the user’s activities and activities of
-the users he follows, you need to get the user’s feed.
-
-### Request URI
-
-GET /{org\_id}/{app\_id}/users/{uuid|username}/activities
-
-### Parameters
-
-  Parameter                  Description
-  -------------------------- ----------------------------------------
-  arg uuid|string org\_id    Organization UUID or organization name
-  arg uuid|string app\_id    Application UUID or application name
-  arg uuid|string username   UUID or name of the user
-
-### Example - Request
-
--   [cURL](#curl_get_user_activities)
--   [JavaScript (HTML5)](#javascript_get_user_activities)
--   [Ruby](#ruby_get_user_activities)
--   [Node.js](#nodejs_get_user_activities)
-
-<!-- -->
-
-    curl -X GET "https://api.usergrid.com/my-org/my-app/users/john.doe/activities"
-
-The example assumes use of the [JavaScript (HTML5)
-SDK](https://github.com/apigee/usergrid-javascript-sdk).
-
-    var options = {
-        method:'GET',
-        endpoint:'users/john.doe/activities'
-    };
-    client.request(options, function (err, data) {
-        if (err) {
-            //error — GET failed
-        } else {
-            //success GET worked. Data will contain raw results from API call.       
-        }
-    });
-
-The example assumes use of the [Ruby
-SDK](https://github.com/scottganyo/usergrid_iron).
-
-    app = Usergrid::Application.new 'https://api.usergrid.com/my-org/my-app/'
-    app['users/john.doe/activities'].get
-
-The example assumes use of the [Node.js
-module](https://github.com/apigee/usergrid-node-module).
-
-    var options = {
-        method:'GET',
-        endpoint:'users/john.doe/activities'
-    };
-    client.request(options, function (err, data) {
-        if (err) {
-            //error — GET failed
-        } else {
-            //success GET worked. Data will contain raw results from API call.       
-        }
-    });
-
-### Example - Response
-
-    {
-      "action" : "get",
-      "application" : "3400ba10-cd0c-11e1-bcf7-12313d1c4491",
-      "params" : { },
-      "path" : "/users/5c0c1789-d503-11e1-b36a-12313b01d5c1/activities",
-      "uri" : "https://api.usergrid.com/my-org/my-app/users/5c0c1789-d503-11e1-b36a-12313b01d5c1/activities",
-      "entities" : [ {
-        "uuid" : "d57e5b00-37f1-11e2-a0f7-02e81ae640dc",
-        "type" : "activity",
-        "created" : 1353952258301,
-        "modified" : 1353952258301,
-        "actor" : {
-          "displayName" : "John Doe",
-          "image" : {
-            "duration" : 0,
-            "height" : 80,
-            "url" : "http://www.gravatar.com/avatar/",
-            "width" : 80
-          },
-          "uuid" : "1f3567aa-da83-11e1-afad-12313b01d5c1",
-          "email" : "john.doe@gmail.com",
-          "username" : "john.doe"
-        },
-        "content" : "Hello World!",
-        "metadata" : {
-          "path" : "/users/5c0c1789-d503-11e1-b36a-12313b01d5c1/activities/d57e5b00-37f1-11e2-a0f7-02e81ae640dc"
-        },
-        "published" : 1353952258301,
-        "verb" : "post"
-      }, 
-      "timestamp" : 1355933909077,
-      "duration" : 39,
-      "organization" : "my-org",
-      "applicationName" : "my-app"}
-
-Getting a group’s activities {dir="ltr"}
-----------------------------
-
-Use the GET method to retrieve a group’s activities. This returns the
-activities created on or by the group (that is, to
-/groups/{uuid|groupname}/activities), but not the activities of
-followers of group members. To retrieve the group’s activities and
-activities of followers, you need to get the group’s feed.
-
-### Request URI
-
-GET /{org\_id}/{app\_id}/groups/{uuid|groupname}/activities
-
-### Parameters
-
-  Parameter                   Description
-  --------------------------- ----------------------------------------
-  arg uuid|string org\_id     Organization UUID or organization name
-  arg uuid|string app\_id     Application UUID or application name
-  arg uuid|string groupname   UUID or name of the group
-
-### Example - Request
-
--   [cURL](#curl_get_group_activities)
--   [JavaScript (HTML5)](#javascript_get_group_activities)
--   [Ruby](#ruby_get_group_activities)
--   [Node.js](#nodejs_get_group_activities)
-
-<!-- -->
-
-    curl -X GET "https://api.usergrid.com/my-org/my-app/groups/mygroup/activities"
-
-The example assumes use of the [JavaScript (HTML5)
-SDK](https://github.com/apigee/usergrid-javascript-sdk).
-
-    var options = {
-        method:'GET',
-        endpoint:'groups/mygroup/activities'
-    };
-    client.request(options, function (err, data) {
-        if (err) {
-            //error — GET failed
-        } else {
-            //success GET worked. Data will contain raw results from API call.       
-        }
-    });
-
-The example assumes use of the [Ruby
-SDK](https://github.com/scottganyo/usergrid_iron).
-
-    app = Usergrid::Application.new 'https://api.usergrid.com/my-org/my-app/'
-    app['groups/mygroup/activities'].get
-
-The example assumes use of the [Node.js
-module](https://github.com/apigee/usergrid-node-module).
-
-    var options = {
-        method:'GET',
-        endpoint:'groups/mygroup/activities'
-    };
-    client.request(options, function (err, data) {
-        if (err) {
-            //error — GET failed
-        } else {
-            //success GET worked. Data will contain raw results from API call.       
-        }
-    });
-
-### Example - Response
-
-    {
-      "action" : "get",
-      "application" : "3400ba10-cd0c-11e1-bcf7-12313d1c4491",
-      "params" : { },
-      "path" : "/groups/d87edec7-fc4d-11e1-9917-12313d1520f1/activities",
-      "uri" : "https://api.usergrid.com/my-org/my-app//groups/d87edec7-fc4d-11e1-9917-12313d1520f1/activities",
-      "entities" : [ {
-        "uuid" : "e7a47a41-4310-11e2-8861-02e81adcf3d0",
-        "type" : "activity",
-        "created" : 1355175065939,
-        "modified" : 1355175065939,
-        "actor" : {
-          "displayName" : "Martin Smith",
-          "id" : "tag:example.org,2011:martin",
-          "image" : {
-            "duration" : 0,
-            "height" : 250,
-            "url" : "http://example.org/martin/image",
-            "width" : 250
-          },
-          "objectType" : "person",
-          "url" : "http://example.org/martin"
-        },
-        "metadata" : {
-          "path" : "/groups/d87edec7-fc4d-11e1-9917-12313d1520f1/activities/e7a47a41-4310-11e2-8861-02e81adcf3d0"
-        },
-        "object" : {
-          "id" : "tag:example.org,2011:abc123/xyz",
-          "url" : "http://example.org/blog/2011/02/entry"
-        },
-        "published" : 1355175065939,
-        "target" : {
-          "url" : "http://example.org/blog/",
-          "objectType" : "blog",
-          "id" : "tag:example.org,2011:abc123",
-          "displayName" : "Martin's Blog"
-        },
-        "verb" : "post"
-      }, {
-        "uuid" : "563f5d96-37f3-11e2-a0f7-02e81ae640dc",
-        "type" : "activity",
-        "created" : 1353952903811,
-        "modified" : 1353952903811,
-        "actor" : {
-          "displayName" : "John Doe",
-          "image" : {
-            "duration" : 0,
-            "height" : 80,
-            "url" : "http://www.gravatar.com/avatar/",
-            "width" : 80
-          },
-          "uuid" : "1f3567aa-da83-11e1-afad-12313b01d5c1",
-          "email" : "john.doe@gmail.com",
-          "username" : "john.doe"
-        },
-        "content" : "Hello World!",
-        "metadata" : {
-          "path" : "/groups/d87edec7-fc4d-11e1-9917-12313d1520f1/activities/563f5d96-37f3-11e2-a0f7-02e81ae640dc"
-        },
-        "published" : 1353952903811,
-        "verb" : "post"
-      } ],
-      "timestamp" : 1355934203039,
-      "duration" : 141,
-      "organization" : "my-org",
-      "applicationName" : "my-app"
     }
 
-Getting a user’s feed {dir="ltr"}
----------------------
+## Retrieving activity feeds
+
+Retrieving a user's activity feed
 
 Use the GET method to retrieve a user’s feed.
 
 ### Request URI
 
-GET /{org\_id}/{app\_id}/users/{uuid|username}/feed
-
-### Parameters
-
-  Parameter                  Description
-  -------------------------- ----------------------------------------
-  arg uuid|string org\_id    Organization UUID or organization name
-  arg uuid|string app\_id    Application UUID or application name
-  arg uuid|string username   UUID or name of the user
+    GET /{org_id}/{app_id}/users/{uuid|username}/feed
 
 ### Example - Request
 
--   [cURL](#curl_get_user_feed)
--   [JavaScript (HTML5)](#javascript_get_user_feed)
--   [Ruby](#ruby_get_user_feed)
--   [Node.js](#nodejs_get_user_feed)
-
-<!-- -->
-
     curl -X GET "https://api.usergrid.com/my-org/my-app/users/john.doe/feed"
-
-The example assumes use of the [JavaScript (HTML5)
-SDK](https://github.com/apigee/usergrid-javascript-sdk).
-
-    var options = {
-        method:'GET',
-        endpoint:'users/john.doe/feed'
-    };
-    client.request(options, function (err, data) {
-        if (err) {
-            //error — GET failed
-        } else {
-            //success GET worked. Data will contain raw results from API call.       
-        }
-    });
-
-The example assumes use of the [Ruby
-SDK](https://github.com/scottganyo/usergrid_iron).
-
-    app = Usergrid::Application.new 'https://api.usergrid.com/my-org/my-app/'
-    app['users/john.doe/feed'].get
-
-The example assumes use of the [Node.js
-module](https://github.com/apigee/usergrid-node-module).
-
-    var options = {
-        method:'GET',
-        endpoint:'users/john.doe/feed'
-    };
-    client.request(options, function (err, data) {
-        if (err) {
-            //error — GET failed
-        } else {
-            //success GET worked. Data will contain raw results from API call.       
-        }
-    });
-
+    
 ### Example - Response
 
     {
       "action" : "get",
-      "application" : "5111c463-6a42-11e1-b6dd-1231380a0284",
-      "params" : {
-        "_" : [ "1346438183429" ]
-      },
-      "path" : "/users/1f3567aa-da83-11e1-afad-12313b01d5c1/feed",
-      "uri" : "https://api.usergrid.com/5111c463-6a42-11e1-b6dd-1231380a0284/users/1f3567aa-da83-11e1-afad-12313b01d5c1/feed",
+      "application" : "3400ba10-cd0c-11e1-bcf7-12313d1c44914",
+      "params" : {},
+      "path" : "/users/d9693ec3-61c9-11e2-9ffc-02e81adcf3d0/feed",
+      "uri" : "https://api.usergrid.com/3400ba10-cd0c-11e1-bcf7-12313d1c44914/users/d9693ec3-61c9-11e2-9ffc-02e81adcf3d0/feed",
       "entities" : [ {
         "uuid" : "ffd79647-f399-11e1-aec3-12313b06ae01",
         "type" : "activity",
@@ -908,14 +335,14 @@ module](https://github.com/apigee/usergrid-node-module).
             "url" : "http://www.gravatar.com/avatar/",
             "width" : 80
           },
-          "uuid" : "1f3567aa-da83-11e1-afad-12313b01d5c1",
+          "uuid" : "d9693ec3-61c9-11e2-9ffc-02e81adcf3d0",
           "email" : "john.doe@gmail.com",
           "username" : "john.doe"
         },
         "content" : "Hello World!",
         "metadata" : {
           "cursor" : "gGkAAQMAgGkABgE5ffM1aQCAdQAQ_9eWR_OZEeGuwxIxOwauAQCAdQAQABlaOvOaEeGuwxIxOwauAQA",
-          "path" : "/users/1f3567aa-da83-11e1-afad-12313b01d5c1/feed/ffd79647-f399-11e1-aec3-12313b06ae01"
+          "path" : "/users/d9693ec3-61c9-11e2-9ffc-02e81adcf3d0/feed/ffd79647-f399-11e1-aec3-12313b06ae01"
         },
         "published" : 1346437854569,
         "verb" : "post"
@@ -932,14 +359,14 @@ module](https://github.com/apigee/usergrid-node-module).
             "url" : "http://www.gravatar.com/avatar/",
             "width" : 80
           },
-          "uuid" : "1f3567aa-da83-11e1-afad-12313b01d5c1",
+          "uuid" : "d9693ec3-61c9-11e2-9ffc-02e81adcf3d0",
           "email" : "massoddb@mfdsadfdsaoabl.com",
           "username" : "moab"
         },
         "content" : "checking in code left and right!!",
         "metadata" : {
           "cursor" : "gGkAAQMAgGkABgE5MLFh7gCAdQAQJIKhxefQEeGW9hIxOwbREgCAdQAQJNEP6ufQEeGW9hIxOwbREgA",
-          "path" : "/users/1f3567aa-da83-11e1-afad-12313b01d5c1/feed/2482a1c5-e7d0-11e1-96f6-12313b06d112"
+          "path" : "/users/d9693ec3-61c9-11e2-9ffc-02e81adcf3d0/feed/2482a1c5-e7d0-11e1-96f6-12313b06d112"
         },
         "published" : 1345141694958,
         "verb" : "post"
@@ -950,84 +377,26 @@ module](https://github.com/apigee/usergrid-node-module).
       "applicationName": "my-app"
     }
 
-When a user creates an activity, a relationship is established between
-the activity and the user who created it. The activities in the user’s
-feed are based on this relationship as well as  any following
-relationships that the user has, and any groups in which the user
-belongs. So when a user asks to get his feed, what he gets is a list of
-(1) all the activities that the user owns, (2) all the activities posted
-by any users this user is following, and (3) any activities owned by any
-groups in which this user belongs.
-
-The user john.doe’s feed includes activities posted by user moab because
-john.doe follows moab.
+## Retrieving a group's activity feed
 
-Getting a group’s feed {dir="ltr"}
-----------------------
-
-Use the GET method to retrieve the feed for a group. This gets a list of
-all the activities that have been posted to this group, that is, the
-activities for which this group has a relationship (owns).
+Use the GET method to retrieve the feed for a group. This gets a list of all the activities that have been posted to this group, that is, the activities for which this group has a relationship (owns).
 
 ### Request URI
 
-GET /{org\_id}/{app\_id}/groups/{uuid|groupname}/feed
-
-### Parameters
+    GET /{org_id}/{app_id}/groups/{uuid|groupname}/feed
+    
+Parameters
 
-  Parameter                   Description
-  --------------------------- ----------------------------------------
-  arg uuid|string org\_id     Organization UUID or organization name
-  arg uuid|string app\_id     Application UUID or application name
-  arg uuid|string groupname   UUID or name of the group
+Parameter	Description
+---------   -----------
+arg uuid|string org_id	   Organization UUID or organization name
+arg uuid|string app_id	   Application UUID or application name
+arg uuid|string groupname  UUID or name of the group
 
 ### Example - Request
 
--   [cURL](#curl_get_group_feed)
--   [JavaScript (HTML5)](#javascript_get_group_feed)
--   [Ruby](#ruby_get_group_feed)
--   [Node.js](#nodejs_get_group_feed)
-
-<!-- -->
-
     curl -X GET "https://api.usergrid.com/my-org/my-app/groups/mygroup/feed"
-
-The example assumes use of the [JavaScript (HTML5)
-SDK](https://github.com/apigee/usergrid-javascript-sdk).
-
-    var options = {
-        method:'GET',
-        endpoint:'groups/mygroup/feed'
-    };
-    client.request(options, function (err, data) {
-        if (err) {
-            //error — GET failed
-        } else {
-            //success — GET worked. Data will contain raw results from API call.        
-        }
-    });
-
-The example assumes use of the [Ruby
-SDK](https://github.com/scottganyo/usergrid_iron).
-
-    app = Usergrid::Application.new 'https://api.usergrid.com/my-org/my-app/'
-    app['groups/mygroup/feed'].get
-
-The example assumes use of the [Node.js
-module](https://github.com/apigee/usergrid-node-module).
-
-    var options = {
-        method:'GET',
-        endpoint:'groups/mygroup/feed'
-    };
-    client.request(options, function (err, data) {
-        if (err) {
-            //error — GET failed
-        } else {
-            //success — GET worked. Data will contain raw results from API call.        
-        }
-    });
-
+    
 ### Example - Response
 
     {
@@ -1054,68 +423,18 @@ module](https://github.com/apigee/usergrid-node-module).
               "email": "john.doe@gmail.com",
             "username": "john.doe"
             },
-              "content": "Hello World!",
-              "metadata":  {
-                "cursor": "gGkAAQMAgGkABgE7PeHCgwCAdQAQVj9dljfzEeKg9wLoGuZA3ACAdQAQVkVRCTfzEeKg9wLoGuZA3AA",
-                "path": "/groups/d87edec7-fc4d-11e1-9917-12313d1520f1/feed/563f5d96-37f3-11e2-a0f7-02e81ae640dc"
-              },
-              "published": 1353952903811,
-              "verb": "post"
-            }
-          ],
+            "content": "Hello World!",
+            "metadata":  {
+              "cursor": "gGkAAQMAgGkABgE7PeHCgwCAdQAQVj9dljfzEeKg9wLoGuZA3ACAdQAQVkVRCTfzEeKg9wLoGuZA3AA",
+              "path": "/groups/d87edec7-fc4d-11e1-9917-12313d1520f1/feed/563f5d96-37f3-11e2-a0f7-02e81ae640dc"
+            },
+            "published": 1353952903811,
+            "verb": "post"
+          }
+        ],
       "timestamp": 1353953272756,
       "duration": 29,
       "organization": "my-org",
       "applicationName": "my-app"
-
-Activity properties
--------------------
-
-The following are the system-defined properties for activity entities.
-You can create application-specific properties for an activity entity in
-addition to the system-defined properties. The system-defined properties
-are reserved. You cannot use these names to create other properties for
-an activity entity. In addition the activities name is reserved for the
-activities collection — you can't use it to name another collection.
-
-  Property    Type             Description
-  ----------- ---------------- ------------------------------------------------------------------------------------------------------------------------------------------
-  uuid        UUID             Activity’s unique entity ID
-  type        string           "activity"
-  created     long             [UNIX timestamp](http://en.wikipedia.org/wiki/Unix_time) of entity creation
-  modified    long             [UNIX timestamp](http://en.wikipedia.org/wiki/Unix_time) of entity modification
-  actor       ActivityObject   Entity that performs the action of the activity (see [JSON Activity Streams 1.0 specification](http://activitystrea.ms/specs/json/1.0/))
-  content     string           Description of the activity
-  icon        MediaLink        Visual representation of a media link resource (see [JSON Activity Streams 1.0 specification](http://activitystrea.ms/specs/json/1.0/))
-  category    string           Category used to organize activities
-  verb        string           Action that the actor performs (for example, *post*)
-  published   long             [UNIX timestamp](http://en.wikipedia.org/wiki/Unix_time) when the activity was published
-  object      ActivityObject   Object on which the action is performed (see [JSON Activity Streams 1.0 specification](http://activitystrea.ms/specs/json/1.0/))
-  title       string           Title or headline for the activity
-
-Set property 
--------------
-
-Activities have the following set property.
-
-  Set           Type     Description
-  ------------- -------- -------------------------------------
-  connections   string   Set of connections for the activity
-
- 
-
-Sample app
-----------
-
-The Messagee sample app is a simple Twitter-style messaging application
-that leverages the activity stream functionality of App services. The
-source for the application is available in HTML5 (JavaScript), iOS, and
-Android. You can download the source from github at:
-
--   [https://github.com/apigee/usergrid-sample-html5-messagee](https://github.com/apigee/usergrid-sample-html5-messagee)
-     (HTML5)
--   [https://github.com/apache/incubator-usergrid-sample-ios-messagee](https://github.com/apache/incubator-usergrid-sample-ios-messagee)
-    (iOS)
--   [https://github.com/apigee/usergrid-sample-android-messagee](https://github.com/apigee/usergrid-sample-android-messagee)
-    (Android)
-
+    }  
+  
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5770cbc3/docs/user-management/group.md
----------------------------------------------------------------------
diff --git a/docs/user-management/group.md b/docs/user-management/group.md
index e69de29..4f76cb6 100644
--- a/docs/user-management/group.md
+++ b/docs/user-management/group.md
@@ -0,0 +1,365 @@
+# Working with group data
+
+You can organize app users into groups. Groups have their own Activity Feed, their own permissions and be a useful alternative to Roles, depending on how you model your data. Groups were originally designed to emulate Facebook Groups, so they will tend to function about the same way Facebook Groups would.
+
+Groups are hierarchical. Every member of the group ``/groups/california/san-francisco`` is also a member of the group ``/groups/california``.
+
+Groups are also a great way to model things such a topic subscriptions. For example, you could allow people to subscribe (i.e. become a member of the group and be alerted via Activities) to ``/groups/memes/dogs/doge`` or subscribe to all ``/groups/memes/dogs``.
+
+See the [Group Model section of the API Reference](../rest-endpoints/api-docs.html#group) for a list of the system-defined properties for group entities. In addition, you can create group properties specific to your application.
+
+## Creating groups
+
+A group entity represents an application group of users. You can create, retrieve, update, delete, and query group entities. See User entity properties for a list of the system-defined  properties for group entities. In addition, you can create group properties specific to your application.
+
+### Request Syntax
+
+    curl -X POST "https://api.usergrid.com/your-org/your-app/groups" '{ request body }'
+    
+Use the POST method to create a new group. Groups use paths to indicate their unique names. This allows you to create group hierarchies by using slashes. For this reason, you need to specify a path property for a new group.
+
+### Request URI
+
+    POST /{org_id}/{app_id}/groups
+
+Parameters
+
+Parameter	    Description
+---------       -----------
+uuid | org_id	Organization UUID or organization name
+uuid | app_id	Application UUID or application name
+request body	One or more sets of group properties of which path is mandatory.
+ 
+The ``path`` property is required and must be unique, it may include forward slashes to denote hierarchical relationships.
+
+    {
+        "path" : "somegroup/somesubgroup",
+        "title" : "Some SubGroup"
+    }
+
+### Example
+
+__Note__: Although not shown in the API examples below, you need to provide a valid access token with each API call. See Authenticating users and application clients for details.
+
+### Request
+
+    curl -X POST "https://api.usergrid.com/my-org/my-app/groups" -d '{"path":"mynewgroup"}'
+    
+### Response
+
+    {
+        "action": "post",
+        "application": "7fb8d891-477d-11e1-b2bd-22000a1c4e22",
+        "params": {},
+        "path": "/groups",
+        "uri": "https://api.usergrid.com/22000a1c4e22-7fb8d891-477d-11e1-b2bd/7fb8d891-477d-11e1-b2bd-22000a1c4e22/groups",
+        "entities": [{
+            "uuid": "a668717b-67cb-11e1-8223-12313d14bde7",
+            "type": "group",
+            "created": 1331066016571,
+            "modified": 1331066016571,
+            "metadata": {
+                "path": "/groups/a668717b-67cb-11e1-8223-12313d14bde7",
+                "sets": {
+                    "rolenames": "/groups/a668717b-67cb-11e1-8223-12313d14bde7/rolenames",
+                    "permissions": "/groups/a668717b-67cb-11e1-8223-12313d14bde7/permissions"
+                },
+                "collections": {
+                    "activities": "/groups/a668717b-67cb-11e1-8223-12313d14bde7/activities",
+                    "feed": "/groups/a668717b-67cb-11e1-8223-12313d14bde7/feed",
+                    "roles": "/groups/a668717b-67cb-11e1-8223-12313d14bde7/roles",
+                    "users": "/groups/a668717b-67cb-11e1-8223-12313d14bde7/users"
+                }
+            },
+            "path": "mynewgroup"
+        }],
+        "timestamp": 1331066016563,
+        "duration": 35,
+        "organization": "my-org",
+        "applicationName": "my-app"
+    }
+
+## Retrieving groups
+
+Retrieving group data
+
+You can retrieve data about groups through cURL or one of the SDKs. Each provides a way to filter the list of groups by data associated with the group, such as title or path, or other properties in the group entity.
+
+See the [Group Model section of the API Reference](../rest-endpoints/api-docs.html#group) for a list of the system-defined properties for group entities. In addition, you can create group properties specific to your application.
+
+### Request Syntax
+
+    curl -X GET "https://api.usergrid.com/my-org/my-app/groups/mynewgroup"
+    
+Use the GET method to retrieve group data.
+
+### Request URI
+
+    GET /<org_id | uuid>/<app_id | uuid>/groups</groupPath | uuid> | <?ql=query_string>
+
+Parameters
+
+Parameter	Description
+---------
+org_id | uuid	  Organization UUID or organization name
+app_id | uuid	  Application UUID or application name
+groupPath | uuid  Group UUID or group path, which must be unique.
+query_string      A data store query. For more on queries, see Data queries.
+
+### Request
+
+    # Get a group by the group path, "employees/managers".
+    curl -X GET "https://api.usergrid.com/my-org/my-app/groups/employees/managers"
+
+    # Get a group by UUID.
+    curl -X GET "https://api.usergrid.com/my-org/my-app/groups/a407b1e7-58e8-11e1-ac46-22000a1c5a67e"
+
+    # Get group data filtering by their title.
+    curl -X GET "https://api.usergrid.com/my-org/my-app/groups?ql=select%20*%20where%20title%3D'Management%20Employees'"
+
+### Response
+
+The following is an example of JSON returned by a query for a single group.
+
+    {
+        "action" : "get",
+        "application" : "db1e60a0-417f-11e3-9586-0f1ff3650d20",
+        "params" : { },
+        "path" : "/groups",
+        "uri" : "https://api.usergrid.com/steventraut/mynewapp/groups",
+        "entities" : [ {
+            "uuid" : "5005a0fa-6916-11e3-9c1b-b77ec8addc0d",
+            "type" : "group",
+            "created" : 1387503030399,
+            "modified" : 1387503030399,
+            "path" : "managers",
+            "metadata" : {
+                "path" : "/groups/5005a0fa-6916-11e3-9c1b-b77ec8addc0d",
+                "sets" : {
+                    "rolenames" : "/groups/5005a0fa-6916-11e3-9c1b-b77ec8addc0d/roles",
+                    "permissions" : "/groups/5005a0fa-6916-11e3-9c1b-b77ec8addc0d/permissions"
+                },
+                "collections" : {
+                    "activities" : "/groups/5005a0fa-6916-11e3-9c1b-b77ec8addc0d/activities",
+                    "feed" : "/groups/5005a0fa-6916-11e3-9c1b-b77ec8addc0d/feed",
+                    "roles" : "/groups/5005a0fa-6916-11e3-9c1b-b77ec8addc0d/roles",
+                    "users" : "/groups/5005a0fa-6916-11e3-9c1b-b77ec8addc0d/users"
+                }
+            },
+            "title" : "Management Employees"
+        } ],
+        "timestamp" : 1391020491701,
+        "duration" : 15,
+        "organization" : "my-org",
+        "applicationName" : "my-app"
+    }
+
+## Retrieving a group's users
+
+Use the GET method to retrieve all the users in a group.
+
+### Request URI
+
+    GET /{org_id}/{app_id}/groups/{uuid|groupname}/users
+    
+### Parameters
+
+Parameter	               Description
+---------                  --------------
+arg uuid|string org_id     Organization UUID or organization name
+arg uuid|string app_id     Application UUID or application name
+arg uuid|string groupname  UUID or name of the group
+
+### Example - Request
+
+    curl -X GET "https://api.usergrid.com/my-org/my-app/groups/mygroup/users"
+
+### Example - Response
+
+    {
+      "action" : "get",
+      "application" : "e7127751-6985-11e2-8078-02e81aeb2129",
+      "params" : { },
+      "path" : "/groups/d20976ff-802f-11e2-b690-02e81ae66238/users",
+      "uri" : "http://api.usergrid.com/myorg/sandbox/groups/d20976ff-802f-11e2-b690-02e81ae61238/users",
+      "entities" : [ {
+        "uuid" : "cd789b00-698b-11e2-a6e3-02e81ae236e9",
+        "type" : "user",
+        "name" : "barney",
+        "created" : 1359405994314,
+        "modified" : 1361894320470,
+        "activated" : true,
+        "email" : "barney@apigee.com",
+        "metadata" : {
+          "path" : "/groups/d20976ff-802f-11e2-b690-02e81ae66238/users/cd789b00-698b-11e2-a6e3-02e81aeb26e9",
+          "sets" : {
+            "rolenames" : "/groups/d20976ff-802f-11e2-b690-02e81ae66238/users/cd789b00-698b-11e2-a6e3-02e81aeb26e9/rolenames",
+            "permissions" : "/groups/d20976ff-802f-11e2-b690-02e81ae66238/users/cd789b00-698b-11e2-a6e3-02e81aeb26e9/permissions"
+          },
+          "collections" : {
+            "activities" : "/groups/d20976ff-802f-11e2-b690-02e81ae66238/users/cd789b00-698b-11e2-a6e3-02e81aeb26e9/activities",
+            "devices" : "/groups/d20976ff-802f-11e2-b690-02e81ae66238/users/cd789b00-698b-11e2-a6e3-02e81aeb26e9/devices",
+            "feed" : "/groups/d20976ff-802f-11e2-b690-02e81ae66238/users/cd789b00-698b-11e2-a6e3-02e81aeb26e9/feed",
+            "groups" : "/groups/d20976ff-802f-11e2-b690-02e81ae66238/users/cd789b00-698b-11e2-a6e3-02e81aeb26e9/groups",
+            "roles" : "/groups/d20976ff-802f-11e2-b690-02e81ae66238/users/cd789b00-698b-11e2-a6e3-02e81aeb26e9/roles",
+            "following" : "/groups/d20976ff-802f-11e2-b690-02e81ae66238/users/cd789b00-698b-11e2-a6e3-02e81aeb26e9/following",
+            "followers" : "/groups/d20976ff-802f-11e2-b690-02e81ae66238/users/cd789b00-698b-11e2-a6e3-02e81aeb26e9/followers"
+          }
+        },
+        "name" : "barney",
+        "picture" : "http://www.gravatar.com/avatar/00767101f6b4f2cf5d02ed510dbcf0b4",
+        "test" : "fred",
+        "username" : "barney"
+      } ],
+      "timestamp" : 1361903248398,
+      "duration" : 24,
+      "organization" : "myorg",
+      "applicationName" : "sandbox"
+    }
+
+## Deleting a group
+
+To delete a group, delete the associated group entity as you would any other entity. Note that this will only delete the group. Any entities in the group will be preserved.
+
+For more information and code samples, see [Deleting Data Entities](../data-storage/entities.html#deleting-data-entities).
+
+## Adding a user to a group
+
+See all application entities  
+
+You can add users to groups from client code using cURL commands or one of the SDKs, as described here.
+
+When setting up your application on the server, you might find it easier and more convenient to create and populate groups with the admin portal. There, you can create groups, create roles, and define permission rules that govern user access to data and services in your application. For more information, see Security & token authentication.
+
+Use the POST method to add a user to a group. If the named group does not yet exist, an error message is returned.
+
+### Request syntax
+
+    curl -X POST https://api.usergrid.com/<org_id>/<app_id>/groups/<uuid | groupname>/users/<uuid | username>
+
+### Request URI
+
+    POST /<org_id>/<app_id>/groups/<uuid | groupname>/users/<uuid | username>
+
+Parameters
+
+Parameter                   Description
+---------                   -----------
+arg uuid | string org_id	Organization UUID or organization name
+arg uuid | string app_id	Application UUID or application name
+arg uuid | string groupname	UUID or name of the group
+arg uuid | string username	UUID or username of user
+
+### Example
+
+__Note__: Although not shown in the API examples below, you need to provide a valid access token with each API call. See Authenticating users and application clients for details.
+
+### Request
+
+    curl -X POST "https://api.usergrid.com/my-org/my-app/groups/mynewgroup/users/john.doe"
+
+### Response
+
+    {
+        "action": "post",
+        "application": "7fb8d891-477d-11e1-b2bd-22000a1c4e22",
+        "params": {},
+        "path": "/groups/a668717b-67cb-11e1-8223-12313d14bde7/users",
+        "uri": "https://api.usergrid.com/22000a1c4e22-7fb8d891-477d-11e1-b2bd/7fb8d891-477d-11e1-b2bd-22000a1c4e22/groups/a668717b-67cb-11e1-8223-12313d14bde7/users",
+        "entities": [{
+            "uuid": "6fbc8157-4786-11e1-b2bd-22000a1c4e22",
+            "type": "user",
+            "name": "John Doe",
+            "created": 1327517852364015,
+            "modified": 1327517852364015,
+            "activated": true,
+            "email": "john.doe@mail.com",
+            "metadata": {
+                "connecting": {
+                    "owners":"/groups/a668717b-67cb-11e1-8223-12313d14bde7/users/6fbc8157-4786-11e1-b2bd-22000a1c4e22/connecting/owners"
+                },
+                "path": "/groups/a668717b-67cb-11e1-8223-12313d14bde7/users/6fbc8157-4786-11e1-b2bd-22000a1c4e22",
+                "sets": {
+                    "rolenames": "/groups/a668717b-67cb-11e1-8223-12313d14bde7/users/6fbc8157-4786-11e1-b2bd-22000a1c4e22/rolenames",
+                    "permissions": "/groups/a668717b-67cb-11e1-8223-12313d14bde7/users/6fbc8157-4786-11e1-b2bd-22000a1c4e22/permissions"
+                },
+                "collections":{
+                    "activities":"/groups/a668717b-67cb-11e1-8223-12313d14bde7/users/6fbc8157-4786-11e1-b2bd-22000a1c4e22/activities",
+                    "devices": "/groups/a668717b-67cb-11e1-8223-12313d14bde7/users/6fbc8157-4786-11e1-b2bd-22000a1c4e22/devices",
+                    "feed":"/groups/a668717b-67cb-11e1-8223-12313d14bde7/users/6fbc8157-4786-11e1-b2bd-22000a1c4e22/feed",
+                    "groups": "/groups/a668717b-67cb-11e1-8223-12313d14bde7/users/6fbc8157-4786-11e1-b2bd-22000a1c4e22/groups",
+                    "roles":"/groups/a668717b-67cb-11e1-8223-12313d14bde7/users/6fbc8157-4786-11e1-b2bd-22000a1c4e22/roles",
+                    "following": "/groups/a668717b-67cb-11e1-8223-12313d14bde7/users/6fbc8157-4786-11e1-b2bd-22000a1c4e22/following",
+                    "followers": "/groups/a668717b-67cb-11e1-8223-12313d14bde7/users/6fbc8157-4786-11e1-b2bd-22000a1c4e22/followers"
+                }
+            },
+            "picture": "https://www.gravatar.com/avatar/90f823ba15655b8cc8e3b4d63377576f",
+            "username": "john.doe"
+        }],
+        "timestamp": 1331066031380,
+        "duration": 64,
+        "organization" : "my-org",
+        "applicationName": "my-app"
+    }
+
+## Removing a user from a group
+
+Use the DELETE method to remove a user from the specified group.
+
+### Request syntax
+
+    curl -X DELETE https://api.usergrid.com/<org>/<app>/groups/<group>/users/<user>"
+
+Parameters
+
+Parameter	Description
+---------   -----------
+org	        Organization UUID or organization name
+app	        Application UUID or application name
+group	    UUID or name of the group
+user	    UUID, username or email of user to be deleted
+
+### Example request
+
+    curl -X DELETE https://api.usergrid.com/your-org/your-app/groups/someGroup/users/someUser
+
+### Example response
+
+    {
+      "action" : "delete",
+      "application" : "f34f4222-a166-11e2-a7f7-02e81adcf3d0",
+      "params" : { },
+      "path" : "/groups/cd796d0a-b90c-11e3-83de-83ceb9965c26/users",
+      "uri" : "https://api.usergrid.com/your-org/your-app/groups/cd796d0a-b90c-11e3-83de-83ceb9965c26/users",
+      "entities" : [ {
+        "uuid" : "74d2d7da-e694-11e3-b0c6-4d2664c8e0c3",
+        "type" : "user",
+        "name" : "someUser",
+        "created" : 1401301104077,
+        "modified" : 1401301104077,
+        "username" : "someUser",
+        "email" : "your-org@apigee.com",
+        "activated" : true,
+        "picture" : "http://www.gravatar.com/avatar/0455fc92de2636fc7a176cc5d298bb78",
+        "metadata" : {
+          "path" : "/groups/cd796d0a-b90c-11e3-83de-83ceb9965c26/users/74d2d7da-e694-11e3-b0c6-4d2664c8e0c3",
+          "sets" : {
+            "rolenames" : "/groups/cd796d0a-b90c-11e3-83de-83ceb9965c26/users/74d2d7da-e694-11e3-b0c6-4d2664c8e0c3/roles",
+            "permissions" : "/groups/cd796d0a-b90c-11e3-83de-83ceb9965c26/users/74d2d7da-e694-11e3-b0c6-4d2664c8e0c3/permissions"
+          },
+          "collections" : {
+            "activities" : "/groups/cd796d0a-b90c-11e3-83de-83ceb9965c26/users/74d2d7da-e694-11e3-b0c6-4d2664c8e0c3/activities",
+            "devices" : "/groups/cd796d0a-b90c-11e3-83de-83ceb9965c26/users/74d2d7da-e694-11e3-b0c6-4d2664c8e0c3/devices",
+            "feed" : "/groups/cd796d0a-b90c-11e3-83de-83ceb9965c26/users/74d2d7da-e694-11e3-b0c6-4d2664c8e0c3/feed",
+            "groups" : "/groups/cd796d0a-b90c-11e3-83de-83ceb9965c26/users/74d2d7da-e694-11e3-b0c6-4d2664c8e0c3/groups",
+            "roles" : "/groups/cd796d0a-b90c-11e3-83de-83ceb9965c26/users/74d2d7da-e694-11e3-b0c6-4d2664c8e0c3/roles",
+            "following" : "/groups/cd796d0a-b90c-11e3-83de-83ceb9965c26/users/74d2d7da-e694-11e3-b0c6-4d2664c8e0c3/following",
+            "followers" : "/groups/cd796d0a-b90c-11e3-83de-83ceb9965c26/users/74d2d7da-e694-11e3-b0c6-4d2664c8e0c3/followers"
+          }
+        }
+      } ],
+      "timestamp" : 1401751485776,
+      "duration" : 220,
+      "organization" : "your-org",
+      "applicationName" : "your-app"
+    }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5770cbc3/docs/user-management/iOS10seeusermsg.jpg
----------------------------------------------------------------------
diff --git a/docs/user-management/iOS10seeusermsg.jpg b/docs/user-management/iOS10seeusermsg.jpg
new file mode 100644
index 0000000..dfaee31
Binary files /dev/null and b/docs/user-management/iOS10seeusermsg.jpg differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5770cbc3/docs/user-management/iOS1chooseapp.jpg
----------------------------------------------------------------------
diff --git a/docs/user-management/iOS1chooseapp.jpg b/docs/user-management/iOS1chooseapp.jpg
new file mode 100644
index 0000000..e81153f
Binary files /dev/null and b/docs/user-management/iOS1chooseapp.jpg differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5770cbc3/docs/user-management/iOS2register.jpg
----------------------------------------------------------------------
diff --git a/docs/user-management/iOS2register.jpg b/docs/user-management/iOS2register.jpg
new file mode 100644
index 0000000..7666320
Binary files /dev/null and b/docs/user-management/iOS2register.jpg differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5770cbc3/docs/user-management/iOS4signin.jpg
----------------------------------------------------------------------
diff --git a/docs/user-management/iOS4signin.jpg b/docs/user-management/iOS4signin.jpg
new file mode 100644
index 0000000..aa79fa0
Binary files /dev/null and b/docs/user-management/iOS4signin.jpg differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5770cbc3/docs/user-management/iOS5emptyfeed.jpg
----------------------------------------------------------------------
diff --git a/docs/user-management/iOS5emptyfeed.jpg b/docs/user-management/iOS5emptyfeed.jpg
new file mode 100644
index 0000000..6b03c67
Binary files /dev/null and b/docs/user-management/iOS5emptyfeed.jpg differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5770cbc3/docs/user-management/iOS6newmsg.jpg
----------------------------------------------------------------------
diff --git a/docs/user-management/iOS6newmsg.jpg b/docs/user-management/iOS6newmsg.jpg
new file mode 100644
index 0000000..0fe6164
Binary files /dev/null and b/docs/user-management/iOS6newmsg.jpg differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5770cbc3/docs/user-management/iOS7feed1msg.jpg
----------------------------------------------------------------------
diff --git a/docs/user-management/iOS7feed1msg.jpg b/docs/user-management/iOS7feed1msg.jpg
new file mode 100644
index 0000000..f64d378
Binary files /dev/null and b/docs/user-management/iOS7feed1msg.jpg differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5770cbc3/docs/user-management/iOS9follow.jpg
----------------------------------------------------------------------
diff --git a/docs/user-management/iOS9follow.jpg b/docs/user-management/iOS9follow.jpg
new file mode 100644
index 0000000..59cfcd5
Binary files /dev/null and b/docs/user-management/iOS9follow.jpg differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5770cbc3/docs/user-management/login.png
----------------------------------------------------------------------
diff --git a/docs/user-management/login.png b/docs/user-management/login.png
new file mode 100644
index 0000000..565cf49
Binary files /dev/null and b/docs/user-management/login.png differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5770cbc3/docs/user-management/messagee-example.md
----------------------------------------------------------------------
diff --git a/docs/user-management/messagee-example.md b/docs/user-management/messagee-example.md
index 2817468..c258745 100644
--- a/docs/user-management/messagee-example.md
+++ b/docs/user-management/messagee-example.md
@@ -1 +1,134 @@
-# App Example - Messageea
+# App Example - Messagee
+
+Messagee is a simple Twitter-style messaging application that leverages the extensive functionality of App services. This section describes some of the features of Messagee.
+
+There are three client versions of Messagee:
+
+* An iOS client
+* An Android client
+* An HTML5 client
+
+The sections below describe how to create a new app, enter some test users, and run the app. You also learn how to use the App services admin portal, a user interface that streamlines data and application management in the App services system. The portal is also a reference application that shows how to incorporate App services APIs with JavaScript. For a more detailed discussion of the portal's functionality, see Admin portal.
+
+## Creating a user account in App services
+Go to [https://apigee.com/appservices/#!/] to access the login screen for the App services admin portal. If you are new to App services, sign up for an account to access the portal, specifying an organization (e.g., the name of your company or project team) and a username and password that you can use to authenticate. Because App services are designed for use by development teams, the same username can be associated with one or more organizations.
+
+If you create a new account, you receive a confirmation email that contains a URL that you must click to activate the account. After this, simply log in to the portal with your username and password.
+
+.. image:: login.png
+
+## Creating an app and users
+When you have logged in, you need to create a new application.
+
+.. image:: portal1.png
+
+### STEP 1
+
+Enter a unique application name. The name must be unique to avoid a conflict with another user running the same application.
+
+.. image:: portal2.png
+
+### STEP 2 
+
+Make sure that the portal shows the application name you entered as the active application beneath the Applications menu (1).
+
+If the correct name is not displayed, click the menu and select your application. Next, you need to populate a test user user-test-1 that is going to log in to your copy of the server-side Messagee app.
+
+### STEP 3
+
+Click the Users box on the left side of the console (2).
+
+.. image:: portal3.png
+
+### STEP 4
+
+Click the Add button and enter the user information for your application in the pop-up window (be sure to create a password you can remember), and then click the Create button. Repeat these steps to create a second username test-user-2.
+
+.. image:: portal4.png
+
+### STEP 5
+
+When you have finished all these steps, you have a new application and two new users.
+
+.. image:: portal5.png
+
+Now that you have created a uniquely named copy of the Messagee application as well as two user accounts (test-user-1 and test-user-2), you are ready to test out the Messagee app. Use test-user-1 to log in to the app, and test-user-2 as the user to follow.
+
+To continue with the example, follow the instructions for a client app (iOS client, Android client, or HTML5 client).
+
+## iOS client
+
+Messagee is available as an iPhone app that uses App Services and RestKit. The source for the iOS version of Messagee is available in the /samples/messagee directory of the App Services iOS SDK
+
+Here are the steps to run the Messagee app on iOS:
+
+### STEP 6
+
+Run Steps 1-5 under Creating an app and users. These steps create a unique instance of the Messagee app on the server and two test users, test-user-1 and test-user-2.
+
+### STEP 7
+
+Access the Messagee server app by typing a URL similar to the following into your iOS mobile client (replace <Messagee> with the unique name of your application):
+https://api.usergrid.com/<Messagee>/index.html
+
+.. image:: iOS1chooseapp.jpg
+
+### STEP 8
+
+On the mobile client, complete the registration information and click Register.
+
+.. image:: iOS2register.jpg
+
+### STEP 9
+
+Log in to the Messagee app by entering the test-user-1 account information created previously, and click the Sign in button.
+
+.. image:: iOS3signin.jpg
+
+### STEP 10 
+
+At this point, the message board is empty:
+
+.. image:: iOS5emptyfeed.jpg
+
+### STEP 11 
+
+To post a message using the app, click the top-right icon in the message board to create a message, write the message text, and send it by clicking Post.
+
+.. image:: iOS6newmsg.jpg
+
+Note: The posted message should appear in the message board within few seconds.
+
+.. image:: iOS7feed1msg.jpg
+
+### STEP 12 
+
+For your instance of the Messagee application to act like Twitter, you need to "follow" another user.
+
+In the message board, click Add People and add test-user-2 as a person that test-user-1 follows.
+
+.. image:: iOS9followme.jpg
+
+### STEP 6
+
+Log in as test-user-2 and post a message as this user to the message board.
+
+Go back and log in as user test-user-1.
+Because test-user-1 follows test-user-2, you should see the message sent by test-user-2 in the message board.
+
+.. image:: iOS10seeusermsg.jpg
+
+## iOS SDK
+If you want to write iOS applications that connect to App services, [download the App Services iOS SDK].
+
+__Note__: The Messagee iOS application uses RestKit, a popular REST framework for iOS, to communicate with App services. Because App services use a REST API, you can use any REST framework to talk with the service. However, the official App services iOS SDK provides a more convenient communication mechanism that you should use unless you're already using RestKit or some other framework in your project.
+
+## Android client and SDK
+Messagee is available as a sample Android app that acts as a App services client. The source for the Android version is packaged with the App Services Android SDK in the /samples/messagee directory.
+
+[Download the App Services Android SDK]
+
+## Javascript/HTML5 client and SDK
+Messagee is also available as a sample HTML5 app that behaves in much the same way as the two previous examples. The source for the HTML5 version is packaged with the App Services Javascript/HTML5 SDK in the /samples/messagee directory.
+
+[Download the App Services Javascript/HTML5 SDK]

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5770cbc3/docs/user-management/portal1.png
----------------------------------------------------------------------
diff --git a/docs/user-management/portal1.png b/docs/user-management/portal1.png
new file mode 100644
index 0000000..0298f12
Binary files /dev/null and b/docs/user-management/portal1.png differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5770cbc3/docs/user-management/portal2.png
----------------------------------------------------------------------
diff --git a/docs/user-management/portal2.png b/docs/user-management/portal2.png
new file mode 100644
index 0000000..71b787f
Binary files /dev/null and b/docs/user-management/portal2.png differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5770cbc3/docs/user-management/portal3.png
----------------------------------------------------------------------
diff --git a/docs/user-management/portal3.png b/docs/user-management/portal3.png
new file mode 100644
index 0000000..89136a9
Binary files /dev/null and b/docs/user-management/portal3.png differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5770cbc3/docs/user-management/portal4.png
----------------------------------------------------------------------
diff --git a/docs/user-management/portal4.png b/docs/user-management/portal4.png
new file mode 100644
index 0000000..be644e5
Binary files /dev/null and b/docs/user-management/portal4.png differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5770cbc3/docs/user-management/portal5.png
----------------------------------------------------------------------
diff --git a/docs/user-management/portal5.png b/docs/user-management/portal5.png
new file mode 100644
index 0000000..f8781c5
Binary files /dev/null and b/docs/user-management/portal5.png differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5770cbc3/docs/user-management/user-connections.md
----------------------------------------------------------------------
diff --git a/docs/user-management/user-connections.md b/docs/user-management/user-connections.md
index b2a15ef..fa3087e 100644
--- a/docs/user-management/user-connections.md
+++ b/docs/user-management/user-connections.md
@@ -1 +1,40 @@
 # Social Graph Connections
+
+One of the most useful features of Apigee's API BaaS is the ability to create connections between entities, which allow you to model arbitrary relationships between entities. This feature is particularly powerful when applied to user entities by allowing you to model complex social graphs between users as well as groups of users.
+
+## Following/followers
+To make the social graph possibilities of entity connections even easier to achieve, API BaaS also has special support for a default following/followers relationship, which offers these additional features:
+
+Reciprocal connection: If a following connection is made between a user and another user, a reciprocal followers relationship will be created automatically. In contrast, all of other entity connections are one-way, meaning any reciprocal relationship must be created manually.
+
+Activity feed subscription: The followed user's activities will automatically be posted to the following user's activity feed. For example, if Arthur is following Ford, then any activities published by Ford that Arthur is allowed to see will appear in Arthur's activity feed.
+
+## Creating a following/followers connection
+To create a following/followers connection between two entities, create the connection as you would any generic entity connection. For full details on creating connections, see [Connecting entities](../entity-connections/connecting-entities.html). 
+
+For example, the following request would create a following/followers relationship between two user entities with the usernames 'Fred' and 'Barney':
+
+    POST https://api.usergrid.com/your-org/your-app/users/barney/following/users/fred
+
+<div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">
+Please note that this only works when you ``POST`` a ``following`` connection. Creating a follower connection would not create a reciprocal following connection.
+</p></div>
+
+This would retrieve a list of the users that Barney is following:
+
+    GET https://api.usergrid.com/your-org/your-app/users/barney/following
+    
+And this would retrieve a list of users that are following Fred:
+
+    GET https://api.usergrid.com/your-org/your-app/users/fred/followers
+    
+# Creating other connections
+You can extend this connection structure to create connections using any relationship. For example, you could use likes to denote a connection between a user and his dog with this POST:
+
+    POST https://api.usergrid.com/your-org/your-app/users/Fred/likes/dogs/Dino
+    
+Note that in this case a reciprocal connection is not automatically created. To do so you would need to manually create the reciprocal connection with another POST such as:
+
+    POST https://api.usergrid.com/your-org/your-app/dogs/Dino/liked_by/users/Fred
+    
+For more information on using entity connections, see [Connecting entities](../entity-connections/connecting-entities.html).