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/07 23:06:13 UTC

[19/21] incubator-usergrid git commit: Update website with latest docs.

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7662bc94/content/docs/_sources/sdks/ios-new.txt
----------------------------------------------------------------------
diff --git a/content/docs/_sources/sdks/ios-new.txt b/content/docs/_sources/sdks/ios-new.txt
new file mode 100644
index 0000000..0f5b3fe
--- /dev/null
+++ b/content/docs/_sources/sdks/ios-new.txt
@@ -0,0 +1,982 @@
+# Usergrid iOS SDK
+
+## Getting Started
+
+### Installing the SDK 
+### Building from Source
+
+# Usergrid SDK Reference with Examples
+
+The 66 topics listed below are each documented in the Usergrid documentation and 
+for each the docs provide an API reference and example for each of these clients:
+curl, iOS, Android, JavaScript, Ruby and Node.js.
+
+## Working with Collections
+
+### 1. Creating collections 
+
+SDK Method
+
+    (ApigeeClientResponse *)apiRequest: (NSString *)url operation:(NSString *)op data:(NSString *)opData
+  
+Parameters
+
+Parameter Description
+--------- ----------- 
+url	      A fully-formed url in the following format: https://api.usergrid.com/<org>/<app>/<collection>
+op	      The HTTP method - in this case, 'POST'
+opData	  No data is being sent, so the value is nil
+
+Example Request/Response
+
+Request:
+
+    -(NSString*)createCollection {
+
+    NSString *url = @"https://api.usergrid.com/your-org/your-app/items";
+    NSString *op = @"POST";
+    NSString *opData = nil;
+
+        //we recommend you call ApigeeClient from your AppDelegate. 
+        //for more information see the iOS SDK install guide: http://apigee.com/docs/app-services/content/installing-apigee-sdk-ios
+        //create an instance of AppDelegate
+        AppDelegate *appDelegate = (AppDelegate *)[ [UIApplication sharedApplication] delegate];
+        
+        //call createEntity to initiate the API call
+        ApigeeClientResponse *response = [appDelegate.dataClient apiRequest: url operation: op data: opData];
+
+    @try {
+        //success
+    }
+    @catch (NSException * e) {
+        //fail
+    }
+
+    }
+				
+Response:
+
+    {
+      "action" : "post",
+      "application" : "f34f4222-a166-11e2-a7f7-02e81adcf3d0",
+      "params" : { },
+      "path" : "/items",
+      "uri" : "http://api.usergrid.com/your-org/your-app/items",
+      "entities" : [ ],
+      "timestamp" : 1378857079220,
+      "duration" : 31,
+      "organization" : "your-org",
+      "applicationName" : "your-app"
+    }
+    
+### 2. Retrieving collections
+
+SDK Method
+
+    (ApigeeCollection*)getCollection:(NSString*)type
+    
+Parameters
+
+Parameter	Description
+---------   -----------
+type	    The entity type associated with the collection to be retrieved
+
+Example Request/Response
+
+Request:
+
+    -(NSString*)getCollection {
+
+        //specify the entity type that corresponds to the collection to be retrieved
+        NSString *type = @"item";
+        
+        //we recommend you call ApigeeClient from your AppDelegate. 
+        //for more information see the iOS SDK install guide: http://apigee.com/docs/app-services/content/installing-apigee-sdk-ios
+
+        //create an instance of AppDelegate
+        AppDelegate *appDelegate = (AppDelegate *)[ [UIApplication sharedApplication] delegate];
+        
+        //Call getCollection: to initiate the API GET request 
+        ApigeeCollection *collection = [appDelegate.dataClient getCollection:@"book"];	
+    }
+                        
+Response:
+
+    {
+          "action" : "get",
+          "application" : "f34f4222-a166-11e2-a7f7-02e81adcf3d0",
+          "params" : { },
+          "path" : "/items",
+          "uri" : "http://api.usergrid.com/your-org/your-app/items",
+          "entities" : [ {
+                "uuid" : "5bb76bca-1657-11e3-903f-9ff6c621a7a4",
+                "type" : "item",
+                "name" : "milk",
+                "created" : 1378405020796,
+                "modified" : 1378405020796,
+                "metadata" : {
+                      "path" : "/items/5bb76bca-1657-11e3-903f-9ff6c621a7a4"
+                },
+                "name" : "milk",
+                "price" : "3.25"
+          }, {
+            "uuid" : "1a9356ba-1682-11e3-a72a-81581bbaf055",
+            "type" : "item",
+            "name" : "bread",
+            "created" : 1378423379867,
+            "modified" : 1378423379867,
+            "metadata" : {
+                  "path" : "/items/1a9356ba-1682-11e3-a72a-81581bbaf055"
+            },
+            "name" : "bread",
+            "price" : "2.50"
+          } ],
+          "timestamp" : 1378426821261,
+          "duration" : 35,
+          "organization" : "your-org",
+          "applicationName" : "your-app",
+          "count" : 2
+    }
+
+### 3. Updating collections
+
+SDK Method
+(ApigeeClientResponse *)apiRequest: (NSString *)url operation:(NSString *)op data:(NSString *)opData
+Properties
+Parameter	Description
+url	A fully-formed request url in the following format:
+https://api.usergrid.com/<org>/<app>/<collection>/?ql=
+Note that you must include an empty '?ql=' query string at the end of the URL
+
+op	The HTTP method - in this case, 'PUT'
+opData	A JSON-formatted string that contains the entity properties to be updated
+Example Request/Response
+Show Code
+Request:
+-(NSString*)updateCollection {
+
+	NSString *url = @"https://api.usergrid.com/your-org/your-app/items/?ql";
+	NSString *op = @"PUT";
+	NSString *opData = @"{\"availability\":\"in-stock\"}"; //we escape the quotes
+	
+	//we recommend you call ApigeeClient from your AppDelegate. 
+	//for more information see the iOS SDK install guide: http://apigee.com/docs/app-services/content/installing-apigee-sdk-ios
+	//create an instance of AppDelegate
+	AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+	
+	//call apiRequest to initiate the API call
+	ApigeeClientResponse *response = [appDelegate.dataClient apiRequest: url operation: op data: opData];
+	
+	@try {
+	    //success
+	}
+	@catch (NSException * e) {
+	    //fail
+	}
+
+}
+				
+Response:
+{
+  "action" : "put",
+  "application" : "f34f4222-a166-11e2-a7f7-02e81adcf3d0",
+  "params" : {
+    "ql" : [ "" ]
+  },
+  "path" : "/items",
+  "uri" : "http://api.usergrid.com/your-org/your-app/items",
+  "entities" : [ {
+    "uuid" : "31847b9a-1a62-11e3-be04-8d05e96f700d",
+    "type" : "item",
+    "name" : "milk",
+    "price" : "3.25",
+    "availability" : "in-stock"
+    "created" : 1378849479113,
+    "modified" : 1378849567301,
+    "name" : "milk",
+  }, {
+    "uuid" : "3192ac6a-1a62-11e3-a24f-496ca1d42ce7",
+    "type" : "item",
+    "name" : "bread",
+    "price" : "4.00",
+    "availability" : "in-stock"
+    "created" : 1378849479206,
+    "modified" : 1378849567351,
+    "name" : "bread",
+  } ],
+  "timestamp" : 1378849567280,
+  "duration" : 207,
+  "organization" : "your-org",
+  "applicationName" : "your-app"
+}
+
+### 4. Deleting collections
+
+SDK Method
+(ApigeeClientResponse *)apiRequest: (NSString *)url operation:(NSString *)op data:(NSString *)opData
+Properties
+Parameter	Description
+url	A fully-formed url in the following format:
+https://api.usergrid.com/<org>/<app>/<collection>/?ql=
+Note that you must include an empty '?ql=' query string at the end of the URL
+
+op	The HTTP method - in this case, 'DELETE'
+opData	No data is being sent, so the value is nil
+Example Request/Response
+The following example will delete the first 5 entities in a collection.
+
+Show Code
+Request:
+-(NSString*)deleteCollection {
+
+	NSString *url = @"https://api.usergrid.com/your-org/your-app/items/?ql='limit=5'";
+	NSString *op = @"DELETE";
+	NSString *opData = nil;
+	
+	//we recommend you call ApigeeClient from your AppDelegate. 
+	//for more information see the iOS SDK install guide: http://apigee.com/docs/app-services/content/installing-apigee-sdk-ios
+	//create an instance of AppDelegate
+	AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+	
+	//call createEntity to initiate the API call
+	ApigeeClientResponse *response = [appDelegate.dataClient apiRequest: url operation: op data: opData];
+	
+	@try {
+	    //success
+	}
+	@catch (NSException * e) {
+	    //fail
+	}
+
+}
+				
+Response:
+{
+  "action" : "delete",
+  "application" : "f34f4222-a166-11e2-a7f7-02e81adcf3d0",
+  "params" : {
+    "ql" : [ "" ]
+  },
+  "path" : "/items",
+  "uri" : "http://api.usergrid.com/your-org/your-app/items",
+  "entities" : [ {
+    "uuid" : "53fe3700-0abe-11e3-b1f7-1bd100b8059e",
+    "type" : "item",
+    "name" : "milk",
+    "price" : "3.25",
+    "created" : 1377129832047,
+    "modified" : 1377129832047,
+    "metadata" : {
+      "path" : "/items/53fe3700-0abe-11e3-b1f7-1bd100b8059e"
+    },
+    "name" : "milk"
+  }, {
+    "uuid" : "5ae1fa7a-0abe-11e3-89ab-6be0003c809b",
+    "type" : "item",
+    "name" : "bread",
+    "price" : "4.00",
+    "created" : 1377129843607,
+    "modified" : 1377129843607,
+    "metadata" : {
+      "path" : "/items/5ae1fa7a-0abe-11e3-89ab-6be0003c809b"
+    },
+    "name" : "bread"
+  } ],
+  "timestamp" : 1378848117272,
+  "duration" : 12275,
+  "organization" : "your-org",
+  "applicationName" : "your-app"
+}
+
+## Working with Entities
+
+### 5. Creating a custom entity
+
+SDK Method
+(ApigeeClientResponse *)createEntity:(NSDictionary *)newEntity
+Parameters
+Parameter	Description
+newEntity	NSDictionary object that contains the entity properties
+Example Request/Response
+Show Code
+Request:
+-(NSString*)newEntity {
+	
+	//create an entity object	
+	NSMutableDictionary *entity = [[NSMutableDictionary alloc] init ];
+	
+	//Set entity properties
+	[entity setObject:@"item" forKey:@"type"]; //Required. New entity type to create
+	[entity setObject:@"milk" forKey:@"name"];
+	[entity setObject:@"3.25" forKey:@"price"];
+	
+	//we recommend you call ApigeeClient from your AppDelegate. 
+	//for more information see the iOS SDK install guide: http://apigee.com/docs/app-services/content/installing-apigee-sdk-ios
+	//create an instance of AppDelegate
+	AppDelegate *appDelegate = (AppDelegate *)[ [UIApplication sharedApplication] delegate];
+	
+	//call createEntity to initiate the API call
+	ApigeeClientResponse *response = [appDelegate.dataClient createEntity:entity];
+	
+	@try {	    
+	    //success	    
+	}
+	@catch (NSException * e) {
+	    //fail
+	}
+    
+}
+				
+Response:
+    { 
+        "action" : "post", 
+        "application" : "4a1edb70-d7a8-11e2-9ce3-f315e5aa568a", 
+        "params" : { }, 
+        "path" : "/items", "uri" : "http://api.usergrid.com/my-org/my-app/items", 
+        "entities" : [ { 
+            "uuid" : "83e9b7ea-e8f5-11e2-84df-e94123890c7a", 
+            "type" : "item", 
+            "name" : "milk", 
+            "created" : 1373415195230, 
+            "modified" : 1373415195230, 
+            "metadata" : { 
+
+                "path" : "/items/83e9b7ea-e8f5-11e2-84df-e94123890c7a" 
+            }, 
+            "name" : "milk", 
+            "price" : "3.25"
+        } ], 
+        "timestamp" : 1373415195225, 
+        "duration" : 635, 
+        "organization" : "my-org", 
+        "applicationName" : "my-app" 
+    }
+    
+    
+### 6. Creating multiple custom entities
+
+Request Syntax
+curl -X POST https://api.usergrid.com/<org>/<app>/<entity_type>/ -d '[{<entity>}, {<entity>}, ...]'
+Parameters
+Parameter	Description
+org	Organization UUID or name
+app	Application UUID or name
+entity_type	Custom entity type to create. API Services will create a corresponding collection if one does not already exist. To add an entity to an existing collections, use the collection name or colleciton UUID in place of the entity type.
+entity	Comma-separated list of entity objects to create. Each object should be formatted as a comma-separated list of entity properties, formatted as key-value pairs in the format <property>:<value>
+Example Request/Response
+Show Code
+Request:
+curl -X POST "https://api.usergrid.com/your-org/your-app/item" -d '[{"name":"milk", "price":"3.25"}, {"name":"bread", "price":"2.50"}]'
+Response:
+{
+    "action" : "post",
+    "application" : "f34f4222-a166-11e2-a7f7-02e9sjwsf3d0",
+    "params" : { },
+    "path" : "/items",
+    "uri" : "http://api.usergrid.com/your-org/your-app/items",
+    "entities" : [ {
+        "uuid" : "f3a8061a-ef0b-11e2-9e92-5f4a65c16193",
+        "type" : "item",
+        "name" : "milk",
+        "price" : "3.25",
+        "created" : 1374084538609,
+        "modified" : 1374084538609,
+        "metadata" : {
+            "path" : "/multis/f3a8061a-ef0b-11e2-9e92-5f4a65c16193"
+        },
+        "name" : "milk"
+    }, {
+        "uuid" : "f3be262a-ef0b-11e2-a51b-6715d5ef47a6",
+        "type" : "item",
+        "name" : "bread",
+        "price" : "2.50",
+        "created" : 1374084538754,
+        "modified" : 1374084538754,
+        "metadata" : {
+            "path" : "/items/f3be262a-ef0b-11e2-a51b-6715d5ef47a6"
+        },
+        "name" : "bread"
+    } ],
+    "timestamp" : 1374084538584,
+    "duration" : 388,
+    "organization" : "your-org",
+    "applicationName" : "your-app"
+}
+
+### 7. Creating an entity with sub-properties
+
+SDK Method
+(ApigeeClientResponse *)createEntity:(NSDictionary *)newEntity
+Parameters
+Parameter	Description
+newEntity	NSMutableDictionary object that contains the entity properties
+Example Request/Response
+Show Code
+Request:
+-(NSString*)newEntity {
+    
+	//Initialize an object for the new entity to be created
+	NSMutableDictionary *entity = [ [NSMutableDictionary alloc] init ];
+	
+	//Initialize an object for each nested variety object
+	NSMutableDictionary *variety_1 = [ [NSMutableDictionary alloc] init ];
+    NSMutableDictionary *variety_2 = [ [NSMutableDictionary alloc] init ];
+    NSMutableDictionary *variety_3 = [ [NSMutableDictionary alloc] init ];
+        
+    //Initialize an array to hold the nested variety objects
+    NSMutableArray *variety_list = [ [NSMutableArray alloc] init];
+	
+    [variety_1 setObject:@"1%" forKey:@"name"];
+    [variety_1 setObject:@"3.25" forKey:@"price"];
+	[variety_1 setObject:@"0393847575533445" forKey:@"sku"];    
+	
+    [variety_2 setObject:@"whole" forKey:@"name"];
+    [variety_2 setObject:@"3.85" forKey:@"price"];
+	[variety_2 setObject:@"0393394956788445" forKey:@"sku"];
+	
+	[variety_3 setObject:@"skim" forKey:@"name"];
+    [variety_3 setObject:@"4.00" forKey:@"price"];
+	[variety_3 setObject:@"0390299933488445" forKey:@"sku"];
+	
+	//Add the variety objects to the array
+    [variety_list addObject:variety_1];
+    [variety_list addObject:variety_2];
+    [variety_list addObject:variety_3];
+    
+    //Set the item entity properties
+	[entity setObject:@"item" forKey:@"type"]; //Required. New entity type to create
+	[entity setObject:@"milk" forKey:@"name"];
+	
+	//Set the variety_list array as the value of the 'varieties' property
+	[entity setObject:variety_list forKey:@"varieties"];
+	
+	//we recommend you call ApigeeClient from your AppDelegate. 
+	//for more information see the iOS SDK install guide: http://apigee.com/docs/app-services/content/installing-apigee-sdk-ios
+	//create an instance of AppDelegate
+	AppDelegate *appDelegate = (AppDelegate *)[ [UIApplication sharedApplication] delegate];
+	
+	//call createEntity to initiate the API call
+	ApigeeClientResponse *response = [appDelegate.dataClient createEntity:entity];
+	
+	@try {
+	    //success
+	}
+	@catch (NSException * e) {
+	    //fail
+	}
+    
+}
+				
+Response:
+{ 
+	"action" : "post", 
+	"application" : "f34f4222-a166-11e2-a7f7-02e81adcf3d0", 
+	"params" : { }, 
+	"path" : "/items", 
+	"uri" : "http://api.usergrid.com/your-org/your-app/items", 
+	"entities" : [ { 
+		"uuid" : "0d7cf92a-effb-11e2-917d-c5e707256e71", 
+		"type" : "item", 
+		"name" : "milk", 
+		"created" : 1374187231666, 
+		"modified" : 1374187231666, 
+		"metadata" : { 
+			"path" : "/items/0d7cf92a-effb-11e2-917d-c5e707256e71" 
+		}, 
+		"name" : "milk", 
+		"varieties" : [ { 
+			"name" : "1%", 
+			"price" : "3.25", 
+			"SKU" : "0393847575533445" 
+		}, { 
+			"name" : "whole", 
+			"price" : "3.85", 
+			"SKU" : "0393394956788445" 
+		}, { 
+			"name" : "skim", 
+			"price" : "4.00", 
+			"SKU" : "0390299933488445" 
+		} ] 
+	} ], 
+	"timestamp" : 1374187450826, 
+	"duration" : 50, 
+	"organization" : "your-org", 
+	"applicationName" : "your-app" 
+}
+
+
+### 8. Retrieving an entity
+
+SDK Method
+
+    (ApigeeClientResponse *)getEntities: (NSString *)endpoint query:(NSString *)query
+    
+Properties
+
+Parameter	Description
+---------   -----------
+endpoint	The collection and entity identifier of the entity to be retrieved.
+query	    An optional query string. Requests for a specific entity should set the value to nil
+ 
+Endpoint exported in the following format: <collection>/<entity_UUID_or_name>
+
+Example Request/Response
+
+Request:
+
+    -(NSString*)getEntity {
+
+        //specify the entity collection and UUID or name to be retrieved	
+        NSString *endpoint = @"items/b3aad0a4-f322-11e2-a9c1-999e12039f87";	
+        
+        NSString *query = nil;
+        
+        //we recommend you call ApigeeClient from your AppDelegate. 
+        //for more information see the iOS SDK install guide: http://apigee.com/docs/app-services/content/installing-apigee-sdk-ios
+        //create an instance of AppDelegate
+        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+        
+        //call getEntities to initiate the API call
+        ApigeeClientResponse *response = [appDelegate.dataClient getEntities:endpoint queryString:query];
+        
+        @try {
+            //success
+        }
+        
+        @catch (NSException * e) {
+            //fail
+        }
+
+    }				
+				
+Response:
+
+    {
+        "action" : "get",
+        "application" : "f34f4222-a166-11e2-a7f7-02e81adcf3d0",
+        "params" : { },
+        "path" : "/items",
+        "uri" : "http://api.usergrid.com/amuramoto/sandbox/items",
+        "entities" : [ {
+            "uuid" : "5bb76bca-1657-11e3-903f-9ff6c621a7a4",
+            "type" : "item",
+            "name" : "milk",
+            "created" : 1378405020796,
+            "modified" : 1378405020796,
+            "metadata" : {
+                  "path" : "/items/5bb76bca-1657-11e3-903f-9ff6c621a7a4"
+            },
+            "name" : "milk",
+            "price" : "3.25"
+        } ],
+        "timestamp" : 1378405025763,
+        "duration" : 31,
+        "organization" : "amuramoto",
+        "applicationName" : "sandbox"
+    }
+
+### 9. Retrieving multiple entities
+
+SDK Method
+
+    (ApigeeClientResponse *)getEntities: (NSString *)type queryString:(NSString *)queryString
+    
+Properties
+
+Parameter	Description
+---------   -----------
+type	    The entity type being retrieved
+queryString	A query string of entity properties to be matched for the entities to be retrieved.
+ 
+Query string is expected in the following format: <property>=<value> OR <property>=<value> OR ...
+
+Example Request/Response
+
+Request:
+
+    -(NSString*)getEntity {
+
+    //specify the entity type to be retrieved	
+    NSString *type = @"item";
+
+    //specify the uuid of the entity to be retrieved in a query string
+    NSString *query = @"uuid = b3aad0a4-f322-11e2-a9c1-999e12039f87 or name = 'bread'";
+
+        //we recommend you call ApigeeClient from your AppDelegate. 
+        //for more information see the iOS SDK install guide: http://apigee.com/docs/app-services/content/installing-apigee-sdk-ios
+        //create an instance of AppDelegate
+        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+        
+        //call createEntity to initiate the API call
+        ApigeeClientResponse *response = [appDelegate.dataClient getEntities:type queryString:query];
+
+    @try {
+        //success
+    }
+    @catch (NSException * e) {
+        //fail
+    }
+
+    }
+				
+Response:
+
+    {
+          "action" : "get",
+          "application" : "f34f4222-a166-11e2-a7f7-02e81adcf3d0",
+          "params" : {
+                "ql" : [ "name='milk' OR UUID=1a9356ba-1682-11e3-a72a-81581bbaf055" ]
+          },
+          "path" : "/items",
+          "uri" : "http://api.usergrid.com/your-org/your-app/items",
+          "entities" : [ {
+                "uuid" : "5bb76bca-1657-11e3-903f-9ff6c621a7a4",
+                "type" : "item",
+                "name" : "milk",
+                "created" : 1378405020796,
+                "modified" : 1378405020796,
+                "metadata" : {
+                      "path" : "/items/5bb76bca-1657-11e3-903f-9ff6c621a7a4"
+            },
+                "name" : "milk",
+                "price" : "3.25"
+          }, {
+            "uuid" : "1a9356ba-1682-11e3-a72a-81581bbaf055",
+            "type" : "item",
+            "name" : "bread",
+            "created" : 1378423379867,
+            "modified" : 1378423379867,
+            "metadata" : {
+                  "path" : "/items/1a9356ba-1682-11e3-a72a-81581bbaf055"
+            },
+                "name" : "bread",
+                "price" : "2.50"
+          } ],
+          "timestamp" : 1378423793729,
+          "duration" : 63,
+          "organization" : "your-org",
+          "applicationName" : "your-app",
+          "count" : 2
+    }
+
+
+### 10. Updating an entity
+
+SDK Method
+
+    (ApigeeClientResponse *)updateEntity: (NSString *)entityID entity:(NSDictionary *)updatedEntity
+
+Parameters
+
+Parameter	    Description
+---------       ----------- 
+entityID	    UUID of the entity to be updated
+updatedEntity	NSMutableDictionary containing the properties to be updated
+
+Example Request/Response
+
+Request:
+
+    -(NSString*)updateEntity {
+
+        //UUID of the entity to be updated
+        NSString *entityID = @"f42752aa-08fe-11e3-8268-5bd5fa5f701f";
+        
+        //Create an entity object
+        NSMutableDictionary *updatedEntity = [ [NSMutableDictionary alloc] init ];
+        
+        //Set entity properties to be updated
+        [updatedEntity setObject:@"item" forKey:@"type"]; //Required - entity type
+        [updatedEntity setObject:@"in-stock" forKey:@"availability"];
+        [updatedEntity setObject:@"4.00" forKey:@"price"];
+
+        //we recommend you call ApigeeClient from your AppDelegate. 
+        //for more information see the iOS SDK install guide: http://apigee.com/docs/app-services/content/installing-apigee-sdk-ios
+        //create an instance of AppDelegate
+        AppDelegate *appDelegate = (AppDelegate *)[ [UIApplication sharedApplication] delegate];
+        
+        //call updateEntity to initiate the API call
+        ApigeeClientResponse *response = [appDelegate.dataClient updateEntity:entityID entity:updatedEntity];
+
+        @try {
+            
+           //success
+            
+        }
+        @catch (NSException * e) {
+            //fail
+        }
+        
+    }
+				
+Response:
+
+    {
+      "action" : "put",
+      "application" : "f34f4222-a166-11e2-a7f7-02e81adcf3d0",
+      "params" : { },
+      "path" : "/items",
+      "uri" : "http://api.usergrid.com/your-org/your-app/items",
+      "entities" : [ {
+        "uuid" : "5bb76bca-1657-11e3-903f-9ff6c621a7a4",
+        "type" : "item",
+        "name" : "milk",
+        "created" : 1378405020796,
+        "modified" : 1378505705077,
+        "availability" : "in-stock",
+        "metadata" : {
+          "path" : "/items/5bb76bca-1657-11e3-903f-9ff6c621a7a4"
+        },
+        "name" : "milk",
+        "price" : "4.00"
+      } ],
+      "timestamp" : 1378505705050,
+      "duration" : 87,
+      "organization" : "your-org",
+      "applicationName" : "your-app"
+    }
+
+
+### 11. Updating a sub-property
+
+SDK Method
+
+    (ApigeeClientResponse *)updateEntity: (NSString *)entityID entity:(NSDictionary *)updatedEntity
+
+Parameters
+
+Parameter	    Description
+---------       ----------- 
+entityID	    UUID of the entity to be updated
+updatedEntity	Entity object containing the properties to be updated
+
+Example Request/Response
+
+Request:
+
+    -(NSString*)updateEntity {
+
+        //UUID of the entity to be updated
+        NSString *entityID = @"f42752aa-08fe-11e3-8268-5bd5fa5f701f";
+            
+        //Define our two sub-properties to include in the update
+        NSMutableDictionary *subproperty1 = [ [NSMutableDictionary alloc] init];
+        NSMutableDictionary *subproperty2 = [ [NSMutableDictionary alloc] init];
+        [subproperty1 setObject:@"1%" forKey:@"name"];
+        [subproperty1 setObject:@"3.25" forKey:@"price"];
+        [subproperty2 setObject:@"whole" forKey:@"name"];
+        [subproperty2 setObject:@"4.00" forKey:@"price"];
+        
+        //Put our sub-properties into an NSArray
+        NSArray *subproperties = [ [NSArray alloc] initWithObjects:props1,props2, nil];
+
+        //Create an NSMutableDictionary to hold our updates
+        NSMutableDictionary *updatedEntity = [ [NSMutableDictionary alloc] init ];
+
+        //Set the properties to be updated
+        [updatedEntity setObject:@"item" forKey:@"type"]; //Required - entity type
+        [updatedEntity setObject:props forKey:@"varieties"];
+        
+        //we recommend you call ApigeeClient from your AppDelegate. 
+        //for more information see the iOS SDK install guide: http://apigee.com/docs/app-services/content/installing-apigee-sdk-ios
+        //create an instance of AppDelegate
+        AppDelegate *appDelegate = (AppDelegate *)[ [UIApplication sharedApplication] delegate];
+        
+        //call createEntity to initiate the API call
+        ApigeeClientResponse *response = [appDelegate.dataClient updateEntity:entityID entity:updatedEntity];
+
+        @try {
+            
+           //success
+            
+        }
+        @catch (NSException * e) {
+            //fail
+        }
+        
+    }
+				
+Response:
+
+    {
+      "action" : "put",
+      "application" : "f34f4222-a166-11e2-a7f7-02e81adcf3d0",
+      "params" : { },
+      "path" : "/items",
+      "uri" : "http://api.usergrid.com/your-org/your-app/items",
+      "entities" : [ {
+        "uuid" : "5bb76bca-1657-11e3-903f-9ff6c621a7a4",
+        "type" : "item",
+        "name" : "milk",
+        "created" : 1378405020796,
+        "modified" : 1378761459069,
+        "availability" : "in-stock",
+        "metadata" : {
+          "path" : "/items/5bb76bca-1657-11e3-903f-9ff6c621a7a4"
+        },
+        "name" : "milk",
+        "uri" : "http://api.usergrid.com/your-org/your-app/items/5bb76bca-1657-11e3-903f-9ff6c621a7a4",
+        "varieties" : [ {
+          "name" : "1%",
+          "price" : "3.25"
+        }, {
+          "name" : "whole",
+          "price" : "4.00"
+        } ]
+      } ],
+      "timestamp" : 1378761459047,
+      "duration" : 62,
+      "organization" : "your-org",
+      "applicationName" : "your-app"
+    }
+
+
+### 12. Deleting data entities
+
+SDK Method
+
+    (ApigeeClientResponse *)removeEntity: (NSString *)type entityID:(NSString *)entityID
+    
+Properties
+
+Parameter	Description
+---------   -----------
+type	    The entity type being deleted
+entityID	The UUID or name of the entity to be removed
+
+Example Request/Response
+
+Request:
+
+    -(NSString*)deleteEntity {
+
+        //specify the entity type to be deleted	
+        NSString *type = @"item";
+        
+        //specify the uuid or name of the entity to be deleted
+        NSString *entityId = @"milk";
+        
+        //we recommend you call ApigeeClient from your AppDelegate. 
+        //for more information see the iOS SDK install guide: http://apigee.com/docs/app-services/content/installing-apigee-sdk-ios
+        //create an instance of AppDelegate
+        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+        
+        //call removeEntity to initiate the API call
+        ApigeeClientResponse *response = [appDelegate.dataClient removeEntity:type entityID:entityId];
+        
+        @try {
+            //success
+        }
+        @catch (NSException * e) {
+            //fail
+        }
+    }
+				
+Response:
+
+    {
+      "action" : "delete",
+      "application" : "f34f4222-a166-11e2-a7f7-02e81adcf3d0",
+      "params" : { },
+      "path" : "/items",
+      "uri" : "http://api.usergrid.com/your-org/your-app/items",
+      "entities" : [ {
+        "uuid" : "328fe64a-19a0-11e3-8a2a-ebc6f49d1fc4",
+        "type" : "item",
+        "name" : "milk",
+        "created" : 1378766158500,
+        "modified" : 1378766158500,
+        "metadata" : {
+          "path" : "/items/328fe64a-19a0-11e3-8a2a-ebc6f49d1fc4"
+        },
+        "name" : "milk",
+        "price" : "3.25"
+      } ],
+      "timestamp" : 1378766172016,
+      "duration" : 324,
+      "organization" : "your-org",
+      "applicationName" : "your-app"
+    }
+
+
+## Data Queries
+
+### 13. Querying your data 
+
+## Entity Connections
+
+### 14. Connecting users other data
+### 15. Retrieving user connection data
+### 16. Disconnecting entities
+
+## Permissions & Roles
+
+### 17. Assigning permissions
+### 18. Removing permissions
+### 19. Assigning permissions
+### 20. Removing permissions
+### 21. Creating roles 
+### 22. Assigning roles
+### 23. Removing roles 
+	
+## Authentication
+	
+### 24. Application user authentication (user login)
+### 25. Application client authentication
+### 26. Admin user authentication
+### 27. Organization client authentication
+### 28. Revoking tokens (user logout)
+
+# Working with Users & Groups
+
+### 29. Creating users
+### 30. Retrieving user data
+### 31. Setting or updating password
+### 32. Creating groups
+### 33. Retrieving group data
+### 34. Retrieving a group's users
+### 35. Adding users groups
+### 36. Deleting user group
+
+## Activities & Feeds
+
+### 37. Posting a user activity
+### 38. Posting an activity to a group
+### 39. Creating an activity for a user's followers in a group	
+### 40. Retrieving a user's activity feed
+### 41. Retrieving a group's activity feed
+
+## Events & Counters
+
+### 42. Creating & incrementing counters
+### 43. Retrieving counters
+### 44. Retrieving counters by time interval
+
+## Managing Orgs & Apps
+
+### 46. Creating an organization
+### 47. Getting an organization
+### 48. Activating an organization
+### 49. Reactivating an organization
+### 50. Generating organization client credentials
+### 51. Retrieving organization client credentials
+### 52. Getting an organization's activity feed
+### 53. Getting the applications in an organization
+### 54. Getting the admin users in an organization
+### 55. Removing an admin user from an organization
+### 56. Creating an organization application	
+### 57. Generating application credentials
+### 58. Getting application credentials
+
+## Managing Admin Users
+
+### 59. Creating an admin user
+### 60. Updating an admin user
+### 61. Getting an admin user
+### 62. Setting an admin user's password
+### 63. Resetting an admin user's password
+### 64. Activating an admin user
+### 65. Reactivating an admin user
+### 66. Getting an admin user's activity feed
+	
+	
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7662bc94/content/docs/_sources/sdks/ios.txt
----------------------------------------------------------------------
diff --git a/content/docs/_sources/sdks/ios.txt b/content/docs/_sources/sdks/ios.txt
index 328b09a..b0ba069 100644
--- a/content/docs/_sources/sdks/ios.txt
+++ b/content/docs/_sources/sdks/ios.txt
@@ -1 +1,107 @@
-# iOS SDK
\ No newline at end of file
+# iOS SDK
+
+##Version
+
+Current Version: **0.9.2**
+
+Change log:
+
+<https://github.com/apigee/usergrid-javascript-sdk/blob/master/changelog.md>
+
+##Overview
+This open source SDK simplifies writing iOS applications that connect to App Services (Usergrid). The repo is located here:
+
+<https://github.com/apigee/usergrid-ios-sdk>
+
+You can download the SDK here:
+
+* Download as a zip file: <https://github.com/apigee/usergrid-ios-sdk/archive/master.zip>
+* Download as a tar.gz file: <https://github.com/apigee/usergrid-ios-sdk/archive/master.tar.gz>
+
+
+To find out more about App Services, which is Apigee's hosted Usergrid solution, see:
+
+<http://apigee.com/about/developers>
+
+To view the Apigee App Services documentation, see:
+
+<http://apigee.com/docs/app_services>
+
+
+##Installing
+Once you have downloaded the SDK, add the UGAPI folder to your project by dragging and dropping it into your project. 
+
+**Note:** Make sure you check the "Copy items into destination group's folder", and also make sure the appropriate boxes are checked next to "Add to targets".
+
+
+##Getting started
+If you haven't done so, make sure you know your organization name and your application name. Your organization name will be the same as the username you signed up with.  
+
+Within your organization, you can have multiple application namespaces.  By default, an application named "Sandbox" has been created for you to use for testing, but you can also log into the [Admin Portal](http://apigee.com/usergrid) and create an application with any name you want.
+
+Once you have your application name, you will want to create a UGClient object like so: 
+
+	//configure the org and app
+	NSString * orgName = @"ApigeeOrg";
+	NSString * appName = @"MessageeApp";
+
+	//make new client
+	usergridClient = [[UGClient alloc]initWithOrganizationId: orgName withApplicationID: appName];
+
+Now use the usergridClient object to invoke other methods that access the API.  For example, to log a user in:
+
+	[usergridClient logInUser:username password:password];
+	UGUser *user = [usergridClient getLoggedInUser];
+
+Or, to create a user:
+
+	UGClientResponse *response = [usergridClient addUser:@"myusername" email:@"email@email.com" name:@"my name" password:@"mypassword"];
+    if (response.transactionState == 0) {
+    	//user created!
+    } 
+
+
+##Sample Code
+If you are ready to look at a fully functional app that uses this SDK, check out our Messagee application.  It is a twitter-type app that exercises many parts of the API including: Login / Authentication, GET and POST operations, activities (tweets), and social features such as following relationships. 
+
+The Messagee Xcode project is located here:
+
+<https://github.com/apigee/usergrid-sample-ios-messagee>
+
+##Running Tests
+
+The iOS SDK unit tests are written with Nu. You'll need to install the language itself to run the tests, and use the Nukefile to create a Usergrid.framework. For installation directions go [here](https://github.com/timburks/nu)
+
+To compile the Usergrid SDK as an Objective-C framework simple type `nuke` to build the framework and then `nuke install` to install it in the /Library/Frameworks path.
+
+To run the unit tests written for the SDK use the command `nuke test` this will run all tests.
+
+## Contributing
+We welcome your enhancements!
+
+Like [Usergrid](https://github.com/apigee/usergrid-node-module), the Usergrid Objective-C SDK is open source and licensed under the Apache License, Version 2.0.
+
+1. Fork it
+2. Create your feature branch (`git checkout -b my-new-feature`)
+3. Commit your changes (`git commit -am 'Added some feature'`)
+4. Push your changes to the upstream branch (`git push origin my-new-feature`)
+5. Create new Pull Request (make sure you describe what you did and why your mod is needed)
+
+##More information
+For more information on Apigee App Services, visit <http://apigee.com/about/developers>.
+
+
+## Copyright
+Copyright 2013 Apigee Corporation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+<http://www.apache.org/licenses/LICENSE-2.0>
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7662bc94/content/docs/_sources/sdks/sdk-outline.txt
----------------------------------------------------------------------
diff --git a/content/docs/_sources/sdks/sdk-outline.txt b/content/docs/_sources/sdks/sdk-outline.txt
new file mode 100644
index 0000000..48bd3fc
--- /dev/null
+++ b/content/docs/_sources/sdks/sdk-outline.txt
@@ -0,0 +1,111 @@
+# Usergrid SDK Documentation outline
+
+## Getting Started
+
+### Installing the SDK 
+### Building from Source
+
+# Usergrid SDK Reference with Examples
+
+The 66 topics listed below are each documented in the Usergrid documentation and 
+for each the docs provide an API reference and example for each of these clients:
+curl, iOS, Android, JavaScript, Ruby and Node.js.
+
+## Working with Collections
+
+### 1. Creating collections 
+### 2. Retrieving collections
+### 3. Updating collections
+### 4. Deleting collections
+
+## Working with Entities
+
+### 5. Creating a custom entity
+### 6. Creating multiple custom entities
+### 7. Creating an entity with sub-properties
+### 8. Retrieving an entity
+### 9. Retrieving multiple entities
+### 10. Updating an entity
+### 11. Updating a sub-property
+### 12. Deleting data entities
+
+## Data Queries
+
+### 13. Querying your data 
+
+## Entity Connections
+
+### 14. Connecting users other data
+### 15. Retrieving user connection data
+### 16. Disconnecting entities
+
+## Permissions & Roles
+
+### 17. Assigning permissions
+### 18. Removing permissions
+### 19. Assigning permissions
+### 20. Removing permissions
+### 21. Creating roles 
+### 22. Assigning roles
+### 23. Removing roles 
+	
+## Authentication
+	
+### 24. Application user authentication (user login)
+### 25. Application client authentication
+### 26. Admin user authentication
+### 27. Organization client authentication
+### 28. Revoking tokens (user logout)
+
+# Working with Users & Groups
+
+### 29. Creating users
+### 30. Retrieving user data
+### 31. Setting or updating password
+### 32. Creating groups
+### 33. Retrieving group data
+### 34. Retrieving a group's users
+### 35. Adding users groups
+### 36. Deleting user group
+
+## Activities & Feeds
+
+### 37. Posting a user activity
+### 38. Posting an activity to a group
+### 39. Creating an activity for a user's followers in a group	
+### 40. Retrieving a user's activity feed
+### 41. Retrieving a group's activity feed
+
+## Events & Counters
+
+### 42. Creating & incrementing counters
+### 43. Retrieving counters
+### 44. Retrieving counters by time interval
+
+## Managing Orgs & Apps
+
+### 46. Creating an organization
+### 47. Getting an organization
+### 48. Activating an organization
+### 49. Reactivating an organization
+### 50. Generating organization client credentials
+### 51. Retrieving organization client credentials
+### 52. Getting an organization's activity feed
+### 53. Getting the applications in an organization
+### 54. Getting the admin users in an organization
+### 55. Removing an admin user from an organization
+### 56. Creating an organization application	
+### 57. Generating application credentials
+### 58. Getting application credentials
+
+## Managing Admin Users
+
+### 59. Creating an admin user
+### 60. Updating an admin user
+### 61. Getting an admin user
+### 62. Setting an admin user's password
+### 63. Resetting an admin user's password
+### 64. Activating an admin user
+### 65. Reactivating an admin user
+### 66. Getting an admin user's activity feed
+	
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7662bc94/content/docs/_sources/security-and-auth/authenticating-api-requests.txt
----------------------------------------------------------------------
diff --git a/content/docs/_sources/security-and-auth/authenticating-api-requests.txt b/content/docs/_sources/security-and-auth/authenticating-api-requests.txt
index af52bf6..d29e4cb 100644
--- a/content/docs/_sources/security-and-auth/authenticating-api-requests.txt
+++ b/content/docs/_sources/security-and-auth/authenticating-api-requests.txt
@@ -4,7 +4,7 @@ With the exception of the 'sandbox' application that is created with every Userg
 
 This article describes how to use access tokens to access the Usergrid API, and how to manage access tokens, including revoking and changing token time to live.
 
-For information on generating access tokens/authenticating users and clients, see Authenticating users and application clients.
+For information on generating access tokens/authenticating users and clients, see [Authenticating users and application clients](../security-and-auth/authenticating-users-and-application-clients.html).
 
 ## Authenticating with access tokens
 When you obtain an access token, you must provide it with every subsequent API call that you make. There are two ways to provide your access token.
@@ -18,7 +18,7 @@ You can include the token in an HTTP authorization header:
     Authorization: Bearer {access_token}
 
 <div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">

-Note: The Usergrid documentation assumes you are providing a valid access token with every API call whether or not it is shown explicitly in the examples. Unless the documentation specifically says that you can access an API endpoint without an access token, you should assume that you must provide it. One application that does not require an access token is the sandbox application. The Guest role has been given full permissions (/** for GET, POST, PUT, and DELETE) for this application. This eliminates the need for a token when making application level calls to the sandbox app. For further information on specifying permissions, see Managing access by defining permission rules.
+Note: The Usergrid documentation assumes you are providing a valid access token with every API call whether or not it is shown explicitly in the examples. Unless the documentation specifically says that you can access an API endpoint without an access token, you should assume that you must provide it. One application that does not require an access token is the sandbox application. The Guest role has been given full permissions (/** for GET, POST, PUT, and DELETE) for this application. This eliminates the need for a token when making application level calls to the sandbox app. For further information on specifying permissions, see [Using Permissions](security-and-auth/using-permissions.html).
 </p></div>
 
 ## Authenticating with client ID and client secret
@@ -27,7 +27,7 @@ Another option for authenticating your API requests is using either your organiz
 
 <div class="admonition warning"> <p class="first admonition-title">WARNING</p> <p class="last">

 Warning: For server-side use only
-You should never authenticate this way from a client-side app such as a mobile app. A hacker could analyze your app and extract the credentials for malicious use even if those credentials are compiled and in binary format. See Security best practices for additional considerations in keeping access to your app and its data secure.
+You should never authenticate this way from a client-side app such as a mobile app. A hacker could analyze your app and extract the credentials for malicious use even if those credentials are compiled and in binary format. See [Security Best Practices](../security-and-auth/securing-your-app.html) for additional considerations in keeping access to your app and its data secure.
 </p></div>
 
 This can be a convenient way to authenticate API requests, since there is no need to generate and manage an access token, but please note that you should be very cautious when implementing this type of authentication. Organization-level authentication grants full permission to perform any supported call against your organization and every application in it, and application-level authentication grants full permission to perform any supported call against all of the resources in an application. Should your client id and client secret be compromised, a malicious user would gain broad access to your organization or application.

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7662bc94/content/docs/_sources/security-and-auth/authenticating-users-and-application-clients.txt
----------------------------------------------------------------------
diff --git a/content/docs/_sources/security-and-auth/authenticating-users-and-application-clients.txt b/content/docs/_sources/security-and-auth/authenticating-users-and-application-clients.txt
index eaa52f4..e1ada48 100644
--- a/content/docs/_sources/security-and-auth/authenticating-users-and-application-clients.txt
+++ b/content/docs/_sources/security-and-auth/authenticating-users-and-application-clients.txt
@@ -49,7 +49,7 @@ The results include the access token needed to make subsequent API requests on b
 Using your app’s client id and client secret values, your app can connect to the Usergrid application endpoint to request an access token. The client ID and secret for your app can be found in 'Getting Started' section of the API Services admin portal, under 'Server App Credentials'.
 
 <div class="admonition warning"> <p class="first admonition-title">WARNING</p> <p class="last">

-Warning: You should never authenticate this way from a client-side app such as a mobile app. A hacker could analyze your app and extract the credentials for malicious use even if those credentials are compiled and in binary format. See "safe mobile access" in [Authenticating API requests](authenticating-api-requests.html) for additional considerations in keeping access to your app and its data secure.
+Warning: You should never authenticate this way from a client-side app such as a mobile app. A hacker could analyze your app and extract the credentials for malicious use even if those credentials are compiled and in binary format. See [Security Best Practices](../security-and-auth/securing-your-app.html) for additional considerations in keeping access to your app and its data secure.
 </p></div>
 
 ### Request syntax
@@ -76,7 +76,7 @@ The results include the access token needed to make subsequent API requests on b
 If you do require admin user access, your app can connect to the Usergrid management endpoint to request an access token. Your app supplies the username and password of an admin user in the request.
 
 <div class="admonition warning"> <p class="first admonition-title">WARNING</p> <p class="last">

-Warning: Authenticating as an admin user grants full access to one or more organizations and all of the applications contained in those organizations. Due to this, be cautious when implementing this type of authentication in client-side code. Instead, consider implementing admin user access in server-side code only. See "safe mobile access" in [Authenticating API requests](authenticating-api-requests.html) for additional considerations in keeping access to your app and its data secure.
+Warning: Authenticating as an admin user grants full access to one or more organizations and all of the applications contained in those organizations. Due to this, be cautious when implementing this type of authentication in client-side code. Instead, consider implementing admin user access in server-side code only. See [Security Best Practices](../security-and-auth/securing-your-app.html) for additional considerations in keeping access to your app and its data secure.
 </p></div>
 
 ### Request syntax
@@ -103,7 +103,7 @@ The results include the access token needed to make subsequent API requests on b
 If you do require organization level access, your app can connect to the Usergrid management endpoint to request an access token. Access to an organization requires the client id and client secret credentials. The client ID and secret for your organization can be found on the 'Org Administration' page of the API Services admin console under 'Organization API Credentials'.
 
 <div class="admonition warning"> <p class="first admonition-title">WARNING</p> <p class="last">

-Warning: You should never authenticate this way from a client-side app such as a mobile app. A hacker could analyze your app and extract the credentials for malicious use even if those credentials are compiled and in binary format. See "safe mobile access" in [Authenticating API requests](authenticating-api-requests.html for additional considerations in keeping access to your app and its data secure.
+Warning: You should never authenticate this way from a client-side app such as a mobile app. A hacker could analyze your app and extract the credentials for malicious use even if those credentials are compiled and in binary format. See [Security Best Practices](../security-and-auth/securing-your-app.html) for additional considerations in keeping access to your app and its data secure.
 </p></div>
 
 ### Request syntax

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7662bc94/content/docs/_sources/security-and-auth/facebook-sign.txt
----------------------------------------------------------------------
diff --git a/content/docs/_sources/security-and-auth/facebook-sign.txt b/content/docs/_sources/security-and-auth/facebook-sign.txt
index e2c7411..970cb33 100644
--- a/content/docs/_sources/security-and-auth/facebook-sign.txt
+++ b/content/docs/_sources/security-and-auth/facebook-sign.txt
@@ -21,7 +21,7 @@ where:
 ## Facebook login example
 The Facebook technical guides for login present detailed information on how to add Facebook login to your app. Instructions are provided for JavaScript, iOS, and Android.
 
-In brief, here are the steps for JavaScript. You can see these steps implemented in the Facebook login example packaged with the JavaScript SDK for Usergrid (which you can download in ZIP format or tar.gz format). The Facebook login example is in the /examples/facebook directory of the extracted download. The code example snippets shown below are taken from the Facebook login example.
+In brief, here are the steps for JavaScript. You can see these steps implemented in the Facebook login example packaged with the JavaScript SDK for Usergrid (which you can download in ZIP format or tar.gz format). The Facebook login example is in the ``/examples/facebook`` directory of the extracted download. The code example snippets shown below are taken from the Facebook login example.
 
 ### Step 1: Create a Facebook app
 Create a new app on the Facebook App Dashboard. Enter your app's basic information. Once created, note the app ID shown at the top of the dashboard page.

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7662bc94/content/docs/_sources/security-and-auth/user-authentication-types.txt
----------------------------------------------------------------------
diff --git a/content/docs/_sources/security-and-auth/user-authentication-types.txt b/content/docs/_sources/security-and-auth/user-authentication-types.txt
index 1a14f50..d02e8d3 100644
--- a/content/docs/_sources/security-and-auth/user-authentication-types.txt
+++ b/content/docs/_sources/security-and-auth/user-authentication-types.txt
@@ -5,7 +5,7 @@ Usergrid supports four levels of authentication, but only one of them is used wh
 ## Configuring authentication levels
 Access permissions can only be configured for the 'application user' – this can be done both programmatically and in the admin portal. The application, organization and admin clients cannot be configured, and can only be accessed programmatically via the API.
 
-For more about creating and managing roles and permissions for application users, see Managing access by defining permission rules. For a look at how security features fit together, see App Security Overview.
+For more about creating and managing roles and permissions for application users, see [Using Permissions](security-and-auth/using-permissions.html) and [Using Roles](security-and-auth/using-roles.html). For a look at how security features fit together, see [App Security Overview](../security-and-auth/app-security.html).
 
 ## User authentication level
 
@@ -16,14 +16,14 @@ For more about creating and managing roles and permissions for application users
 </tr>
 <tr>
     <td>Application user</td>
-    <td>This is the standard authentication type you will use to implement user login for your app. The application user level allows access to your Usergrid application as governed by the permission rules you create and associated with users and user groups. For more on setting permissions see Managing access by defining permission rules. Each Application User is represented by a User entity in your Usergrid application. For more about the User entity, see User.</td>
+    <td>This is the standard authentication type you will use to implement user login for your app. The application user level allows access to your Usergrid application as governed by the permission rules you create and associated with users and user groups. For more on setting permissions see [Using Permissions](security-and-auth/using-permissions.html). Each Application User is represented by a User entity in your Usergrid application. For more about the User entity, see User.</td>
 </tr>
 </table>
 
 ## Admin authentication levels
 
 <div class="admonition warning"> <p class="first admonition-title">WARNING</p> <p class="last">

-Warning: Safe use of admin authentication levels. Never use client ID and client secret, or any hard-coded credentials to authenticate this way from a client-side app, such as a mobile app. A hacker could analyze your app and extract the credentials for malicious use even if those credentials are compiled and in binary format. Even when authenticating with username and password, be cautious when using these authentication levels since they grant broad access to your Usergrid account. See "safe mobile access" in Authenticating API requests for additional considerations in keeping access to your app and its data secure.</p></div>
+Warning: Safe use of admin authentication levels. Never use client ID and client secret, or any hard-coded credentials to authenticate this way from a client-side app, such as a mobile app. A hacker could analyze your app and extract the credentials for malicious use even if those credentials are compiled and in binary format. Even when authenticating with username and password, be cautious when using these authentication levels since they grant broad access to your Usergrid account. See [Security Best Practices](../security-and-auth/securing-your-app.html) for additional considerations in keeping access to your app and its data secure.</p></div>
 
 <table class="usergrid-table">
 <tr>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7662bc94/content/docs/_sources/security-and-auth/using-permissions.txt
----------------------------------------------------------------------
diff --git a/content/docs/_sources/security-and-auth/using-permissions.txt b/content/docs/_sources/security-and-auth/using-permissions.txt
index 34ec664..1454d11 100644
--- a/content/docs/_sources/security-and-auth/using-permissions.txt
+++ b/content/docs/_sources/security-and-auth/using-permissions.txt
@@ -33,7 +33,7 @@ Complex paths can be defined using [Apache Ant pattern syntax](http://ant.apache
 </table>
 
 ## Assigning permissions
-Permissions can only be assigned to user, group or role entities. Assigning permissions to roles can be particularly useful, as it allows you to create sets of permissions that represent complex access definitions, which can then be assigned to user and group entities. For more on roles, see Using roles.
+Permissions can only be assigned to user, group or role entities. Assigning permissions to roles can be particularly useful, as it allows you to create sets of permissions that represent complex access definitions, which can then be assigned to user and group entities. For more on roles, see [Using Roles](security-and-auth/using-roles.html).
        
 ### Request syntax
 
@@ -47,7 +47,7 @@ org	        Organization UUID or organization name
 app	        Application UUID or application name
 collection	The collection of the entity that the permissions are to be assigned to. 
 entity	    The UUID of the entity to assign the permissions to. For users, username and for groups, name are also accepted.
-permissions	The permissions to assign to the entity. See Permissions syntax for format.
+permissions	The permissions to assign to the entity. See [Permissions syntax](security-and-auth/using-permissions.html#permissions-syntax) for format.
 
 For collections, Valid values are users and groups.
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7662bc94/content/docs/_sources/security-and-auth/using-roles.txt
----------------------------------------------------------------------
diff --git a/content/docs/_sources/security-and-auth/using-roles.txt b/content/docs/_sources/security-and-auth/using-roles.txt
new file mode 100644
index 0000000..2a794e3
--- /dev/null
+++ b/content/docs/_sources/security-and-auth/using-roles.txt
@@ -0,0 +1,304 @@
+# Using roles
+Roles are named sets of one or more permissions, and are useful for defining specific access levels to resources in your Usergrid data store. Multiple roles can be assigned to a user or group, giving you a great deal of flexibility in how access to resources are defined.
+
+For example, in a blogging app you might create a 'reviewer' role that allows GET and PUT access to an articles collection to allow the user to retrieve and update articles, but not allow them to create new articles.
+
+## Default roles
+While you can create as many custom roles as you want per application, all Usegrid applications include three default roles. These roles each serve a special purpose and should not be deleted; however, you can and should adjust the permissions assigned to these roles to suit the needs of you app.
+
+The following table describes each pre-defined role, and the permissions that are assigned to them by default.
+
+<table class="usergrid-table">
+<tr>
+  <th>Role</th>
+  <th class="usergrid-30"> Permissions</th>
+  <th>Description</th>
+</tr>
+<tr>
+  <td>Guest</td>
+  <td>
+  
+* post: /devices
+* post: /users
+* put: /devices/*
+  
+  </td>
+  <td>
+  
+  Assigned to all unauthenticated requests. Includes a basic set of permissions that are commonly needed by unregistered or unauthenticated users. 
+  <p>Grants permission for a user to create a user account and for their device to be registered.
+      
+  </td>
+</tr>
+<tr>
+  <td>Default</td>
+  <td>
+  
+* get, post, put, delete: /**
+
+  </td>
+  <td>
+  
+Default for authenticated users. Assigns the associated permissions to all users whose requests are authenticated with a valid access token.
+
+<div class="admonition warning"> <p class="first admonition-title">WARNING</p> <p class="last">

+By default, __grants full access for all resources in your application__. A first task in securing your application should be to restrict access by redefining this role to narrow the access it provides. Remove the default full permission rule and add restrictive permission rules for a production deployment. 
+</p></div>
+  
+  </td>
+</tr>
+<tr>
+  <td>Administrator</td>
+  <td>None</td>
+  <td>
+ 
+Unused until you associate it with users or groups. By default, includes no permissions that provide access. Grants no access. Consider this a blank slate. Add permission rules and associate this role with users and groups as needed.
+<div class="admonition note"> <p class="first admonition-title">NOTE</p> <p class="last">

+The Administrator role is <i>not</i> the same as an organization administrator, that is, someone who authenticates as an Admin User. The Admin User is an implicit user created when you create an organization. After authenticating, the Admin User has full access to all of the administration features of the Usergrid API. By comparison, the Administrator role is simply a role (initially without permissions) that can be assigned to any user.
+</p></div> 
+  
+  </td>
+</tr>
+</table>
+
+## Creating roles
+Generally, it is easiest to a create a role for each access type you want to enable in your app. You may, however, assign multiple roles to any user or group entity, so you have the flexibility to define any schema for applying roles that you like.
+
+The following shows how to create a new role and assign permissions to it.
+
+### Request syntax
+With cURL requests a role entity is created with a POST request, then permissions must be assigned to it with a separate request. For more on assigning permissions with cURL, see [Using Permissions](security-and-auth/using-permissions.html).
+
+The following details how to create a new role entity.
+
+    curl -X POST https://api.usergrid.com/<org>/<app>/roles -d '{"name":<roleName>}'
+    
+Parameters
+
+Parameter Description
+--------- -----------
+org	      Organization UUID or organization name
+app	      Application UUID or application name
+roleName  The name of the role to be created
+
+### Example request
+
+    curl -X POST "https://api.usergrid.com/my-org/my-app/roles/ -d '{"name":"manager"}'
+
+### Example response
+
+    {
+      "action" : "post",
+      "application" : "f34f4222-a166-11e2-a7f7-02e81adcf3d0",
+      "params" : { },
+      "path" : "/roles",
+      "uri" : "https://api.usergrid.com/your-org/your-app/roles",
+      "entities" : [ {
+        "uuid" : "382d0991-74bb-3548-8166-6b07e44495ef",
+        "type" : "role",
+        "name" : "manager",
+        "created" : 1402612783104,
+        "modified" : 1402612783104,
+        "roleName" : "manager",
+        "title" : "manager",
+        "inactivity" : 0,
+        "metadata" : {
+          "path" : "/roles/382d0991-74bb-3548-8166-6b07e44495ef",
+          "sets" : {
+            "permissions" : "/roles/382d0991-74bb-3548-8166-6b07e44495ef/permissions"
+          },
+          "collections" : {
+            "groups" : "/roles/382d0991-74bb-3548-8166-6b07e44495ef/groups",
+            "users" : "/roles/382d0991-74bb-3548-8166-6b07e44495ef/users"
+          }
+        }
+      } ],
+      "timestamp" : 1402612783102,
+      "duration" : 30,
+      "organization" : "your-org",
+      "applicationName" : "your-app"
+    }		
+    
+    
+### Creating Roles in the Admin Portal
+
+1. In the left sidebar of the Usergrid portal, click Users > Roles. This displays the roles defined for the application.
+Click the '+' button.
+2. In the dialog box, provide a 'title' and 'role name.' A title is an alias for the role name.
+3. Click 'Create'. The role will be created, but will not have any permissions assigned to it.
+4. Click the role you created in the list.
+5. Click the 'Add permissions' button.
+6. In the dialog box, click the check boxes for the HTTP methods you want to grant permissions for, and enter the resource path in the 'Path' field.
+7. The 'Inactivity' field lets you control automatic user logout during periods of inactivity. Set a number of seconds of inactivity before users assigned to this role are automatically logged out.
+		
+## Assigning roles
+Once you have created some roles, you will need to explicitly assign them to a user or group entity. The permissions associated with that role will be granted to the entity immediately for any requests they send that are authenticated by a valid access token. Please note that assigning a role to a group will grant the associated permissions to every user in that group.
+
+The following shows how to assign a role to an entity.
+
+### Request syntax
+
+    curl -X POST https://api.usergrid.com/<org>/<app>/roles/<roleName>/<entityType>/<entityID>
+
+Parameters
+
+Parameter	Description
+---------   -----------
+org	        Organization UUID or organization name
+app	        Application UUID or application name
+roleName	The name of the role to be created
+entityType	The type of the entity the role is being assigned to. 'Group' and 'user' are valid values.
+entityID	The UUID of the entity the role is being assigned to. 
+
+For groups, the 'name' property can be used. For users, the 'username' property can be used.
+
+### Example request
+
+    curl -X POST "https://api.usergrid.com/my-org/my-app/roles/manager/users/someUser
+    
+
+### Example response
+
+    {
+      "action" : "post",
+      "application" : "f34f4222-a166-11e2-a7f7-02e81adcf3d0",
+      "params" : { },
+      "path" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users",
+      "uri" : "https://api.usergrid.com/your-org/your-app/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users",
+      "entities" : [ {
+        "uuid" : "410b213a-b379-11e3-a0e5-9953085ea376",
+        "type" : "user",
+        "name" : "someUser",
+        "created" : 1395681911491,
+        "modified" : 1399070010291,
+        "username" : "someUser",
+        "activated" : true,
+        "file" : "fobnszewobnioerabnoiawegbrn\n",    
+        "metadata" : {
+          "connecting" : {
+            "friends" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/connecting/friends",
+            "likes" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/connecting/likes"
+          },
+          "path" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376",
+          "sets" : {
+            "rolenames" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/roles",
+            "permissions" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/permissions"
+          },
+          "connections" : {
+            "completed" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/completed",
+            "follows" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/follows"
+          },
+          "collections" : {
+            "activities" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/activities",
+            "devices" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/devices",
+            "feed" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/feed",
+            "groups" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/groups",
+            "roles" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/roles",
+            "following" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/following",
+            "followers" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/followers"
+          }
+        }
+      } ],
+      "timestamp" : 1402965083889,
+      "duration" : 41,
+      "organization" : "your-org",
+      "applicationName" : "your-app"
+    }		
+    
+    
+### Assigning Roles in the Admin Portal
+
+The easiest way to assign roles to user or group entities is to use the 'Users' tab of the Usergrid admin portal, by doing the following:
+
+1. In the left sidebar of the admin portal, click Users > Users or Users > Groups to display either the list of users or groups in your application.
+2. In the list, click the name of the user or group entity you want to assign roles to to display its details in the right pane.
+3. Click the 'Roles & Permissions' tab above the right pane.
+4. Click the 'Add Role' button.
+5. In the popup, select a role from the drop down menu.
+6. Click the 'Add' button.
+
+		
+## Removing roles
+At times it may be necessary to remove a role from a user or group entity, for example if a user changes jobs, or the duties of a group are altered. Please note that removing a role from a group will remove the associated permissions from every user in that group.
+
+The following shows how to remove a role from an entity.
+
+### Request syntax
+
+    curl -X DELETE https://api.usergrid.com/<org>/<app>/roles/<roleName>/<entityType>/<entityID>
+    
+Parameters
+
+Parameter	Description
+---------   -----------
+org	        Organization UUID or organization name
+app	        Application UUID or application name
+roleName	The name of the role to be created
+entityType	The type of the entity the role is being removed from. 'Group' and 'user' are valid values.
+entityID	The UUID of the entity the role is being removed from. 
+
+For groups, the 'name' property can be used. For users, the 'username' property can be used.
+
+### Example request
+
+    curl -X DELETE https://api.usergrid.com/my-org/my-app/roles/manager/users/someUser
+    
+
+### Example response
+
+    {
+      "action" : "delete",
+      "application" : "f34f4222-a166-11e2-a7f7-02e81adcf3d0",
+      "params" : { },
+      "path" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users",
+      "uri" : "https://api.usergrid.com/your-org/your-app/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users",
+      "entities" : [ {
+        "uuid" : "410b213a-b379-11e3-a0e5-9953085ea376",
+        "type" : "user",
+        "name" : "someUser",
+        "created" : 1395681911491,
+        "modified" : 1399070010291,
+        "username" : "someUser",
+        "activated" : true,
+        "metadata" : {
+          "connecting" : {
+            "friends" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/connecting/friends",
+            "likes" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/connecting/likes"
+          },
+          "path" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376",
+          "sets" : {
+            "rolenames" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/roles",
+            "permissions" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/permissions"
+          },
+          "connections" : {
+            "completed" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/completed",
+            "follows" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/follows"
+          },
+          "collections" : {
+            "activities" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/activities",
+            "devices" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/devices",
+            "feed" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/feed",
+            "groups" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/groups",
+            "roles" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/roles",
+            "following" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/following",
+            "followers" : "/roles/348388de-a5c5-3c1e-9de5-9efc8ad529d8/users/410b213a-b379-11e3-a0e5-9953085ea376/followers"
+          }
+        }
+      } ],
+      "timestamp" : 1403214283808,
+      "duration" : 358,
+      "organization" : "your-org",
+      "applicationName" : "your-app"
+    }	
+    
+### Removing Roles in the Admin Portal
+
+The easiest way to remove roles from user or group entities is to use the 'Users' tab of the Usergrid admin portal, by doing the following:
+
+1. In the left sidebar of the Usergrid admin portal, click Users > Users or Users > Groups to display either the list of users or groups in your application.
+2. In the list, click the name of the user or group entity you want to remove roles from to display its details in the right pane.
+3. Click the 'Roles & Permissions' tab above the right pane.
+4. Click the role you created in the list.
+5. Under 'Roles', click the checkbox beside the role you want to remove from the entity.
+6. Click the 'Leave roles' button.
+    
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7662bc94/content/docs/_sources/user-management/activity.txt
----------------------------------------------------------------------
diff --git a/content/docs/_sources/user-management/activity.txt b/content/docs/_sources/user-management/activity.txt
index 2703ab8..4f09c8b 100644
--- a/content/docs/_sources/user-management/activity.txt
+++ b/content/docs/_sources/user-management/activity.txt
@@ -16,13 +16,13 @@ information about these actions).
 When a user creates an activity, it creates a relationship between the
 activity and the user who created it. Because this relationship exists,
 the activity will appear in the feed of any of the user’s followers.
-Think of the Activities endpoint (/users/{uuid|username}/activities) as
+Think of the Activities endpoint (``/users/{uuid|username}/activities``) as
 an "outbox" of news items created by the user. Think of the Feed
-endpoint (/users/{uuid|username}/feed) as an "inbox" of news items meant
+endpoint (``/users/{uuid|username}/feed``) as an "inbox" of news items meant
 to be seen or consumed by the user.
 
 A user can also post an activity to a group (located at
-/groups/{uuid|groupname}/activities). This allows you to emulate
+``/groups/{uuid|groupname}/activities``). This allows you to emulate
 Facebook-style group functionality, where a limited number of users can
 share content on a common "wall". In any of these cases, there is no
 need to construct publish/subscribe relationships manually.
@@ -36,10 +36,9 @@ to the user's activity stream for display as well as to the activity
 streams of any of the user's followers.
 
 Using Usergrid APIs you can create, retrieve, update, and delete
-activity entities. See You do not have access to view this node for
-descriptions of these APIs.
+activity entities. 
 
-**Note:** Although not shown in the API examples below, you need to
+__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](../security-and-auth/authenticating-users-and-application-clients.html) for details.
 
@@ -131,13 +130,13 @@ The ``/users/me`` endpoint is accessible only if you provide an access token wit
 
 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.
+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 [Activity entity properties](../rest-endpoints/api-doc.html#activity) ). 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.
+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
 
@@ -223,7 +222,7 @@ 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 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
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7662bc94/content/docs/_sources/user-management/group.txt
----------------------------------------------------------------------
diff --git a/content/docs/_sources/user-management/group.txt b/content/docs/_sources/user-management/group.txt
index 4f76cb6..a48606b 100644
--- a/content/docs/_sources/user-management/group.txt
+++ b/content/docs/_sources/user-management/group.txt
@@ -10,7 +10,7 @@ See the [Group Model section of the API Reference](../rest-endpoints/api-docs.ht
 
 ## 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.
+A group entity represents an application group of users. You can create, retrieve, update, delete, and query group entities. See [User entity properties](../rest-endpoints/api-doc.html#user) for a list of the system-defined  properties for group entities. In addition, you can create group properties specific to your application.
 
 ### Request Syntax
 
@@ -39,7 +39,7 @@ The ``path`` property is required and must be unique, it may include forward sla
 
 ### 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.
+__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](../security-and-auth/authenticating-users-and-application-clients.html) for details.
 
 ### Request
 
@@ -104,7 +104,7 @@ 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.
+query_string      A data store query. For more on queries, see [Data queries](../data-queries/querying-your-data.html).
 
 ### Request
 
@@ -225,11 +225,9 @@ For more information and code samples, see [Deleting Data Entities](../data-stor
 
 ## 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.
+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](../security-and-auth/app-security.html).
 
 Use the POST method to add a user to a group. If the named group does not yet exist, an error message is returned.
 
@@ -252,7 +250,7 @@ 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.
+__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](../security-and-auth/authenticating-users-and-application-clients.html) for details.
 
 ### Request
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7662bc94/content/docs/_sources/user-management/messagee-example.txt
----------------------------------------------------------------------
diff --git a/content/docs/_sources/user-management/messagee-example.txt b/content/docs/_sources/user-management/messagee-example.txt
index eb3e560..1401d8c 100644
--- a/content/docs/_sources/user-management/messagee-example.txt
+++ b/content/docs/_sources/user-management/messagee-example.txt
@@ -8,7 +8,7 @@ There are three client versions of Messagee:
 * [An Android client version](https://github.com/apigee/usergrid-sample-android-messagee)
 * [An HTML5 client](https://github.com/apigee/usergrid-sample-html5-messagee)
 
-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 Usergrid admin portal, a user interface that streamlines data and application management in the Usergrid system. The portal is also a reference application that shows how to incorporate Usergrid APIs with JavaScript. For a more detailed discussion of the portal's functionality, see Admin portal.
+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 Usergrid admin portal, a user interface that streamlines data and application management in the Usergrid system. The portal is also a reference application that shows how to incorporate Usergrid APIs with JavaScript. 
 
 ## Creating a user account in Usergrid
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7662bc94/content/docs/_sources/user-management/working-user-data.txt
----------------------------------------------------------------------
diff --git a/content/docs/_sources/user-management/working-user-data.txt b/content/docs/_sources/user-management/working-user-data.txt
index a7603fd..5e2b63d 100644
--- a/content/docs/_sources/user-management/working-user-data.txt
+++ b/content/docs/_sources/user-management/working-user-data.txt
@@ -1,7 +1,7 @@
 # Working with User Data
 You can store and manage user data as User entities. With user data in your application, you can add support for a wide variety of features common to mobile apps. For example, you can:
 
-* Control access to data by defining permission rules. (See Security & token authentication for more.)
+* Control access to data by defining permission rules. (See [Security & token authentication](../security-and-auth/app-security.html) for more.)
 * Present content specific to each user, such as their list of favorites.
 * Support social features, such as letting users "follow" one another, for example.
 
@@ -9,7 +9,7 @@ In mobile applications, data about users is typically added by users themselves
 
 ## Creating users
 
-A user entity represents an application user. Using API Services you can create, retrieve, update, delete, and query user entities. See User entity properties for a list of the system-defined  properties for user entities. In addition, you can create user properties specific to your application.
+A user entity represents an application user. Using API Services you can create, retrieve, update, delete, and query user entities. See [User entity properties](../rest-endpoints/api-doc.html#user) for a list of the system-defined  properties for user entities. In addition, you can create user properties specific to your application.
 
 ### Request Syntax
 
@@ -38,13 +38,13 @@ The username is mandatory and must be unique. Here's an example:
         "password" : "test1234"
     }
 
-Although the password parameter is not mandatory, if you don't specify it, the user will not be able to log in using username and password credentials. If a password is not specified for the user, and you're an Admin, you can set a password for the user (see Setting a password).
+Although the password parameter is not mandatory, if you don't specify it, the user will not be able to log in using username and password credentials. If a password is not specified for the user, and you're an Admin, you can set a password for the user (see [Changing a User Password](#changing-a-user-password)).
 
 __ Note__: The username can contain any combination of characters, including those that represent letters, numbers, and symbols.
 
 ### 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.
+__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](../security-and-auth/authenticating-users-and-application-clients.html) for details.
 
 ### Request
 
@@ -96,7 +96,7 @@ __Note__: Although not shown in the API examples below, you need to provide a va
 
 You can retrieve data about users through cURL or one of the SDKs. Each provides a way to filter the list of users by data associated with the user, such as username or UUID, or other properties in the user entity.
 
-See User entity properties for a list of the system-defined  properties for user entities. In addition, you can create user properties specific to your application.
+See [User entity properties](../rest-endpoints/api-doc.html#user) for a list of the system-defined  properties for user entities. In addition, you can create user properties specific to your application.
 
 ### Request Syntax
 
@@ -116,7 +116,7 @@ uuid | org_id	Organization UUID or organization name
 uuid | app_id	Application UUID or application name
 user identifier User UUID, username, or email address. 
 
-The alias ``/users/me`` can be used in place of the current user’s uuid, username, or email address. Note: The ``/users/me`` endpoint is accessible only if you provide an access token with the request (see Authenticating users and application clients). If you make an anonymous ("guest") call, the system will not be able to determine which user to return as /users/me.
+The alias ``/users/me`` can be used in place of the current user’s uuid, username, or email address. Note: The ``/users/me`` endpoint is accessible only if you provide an access token with the request (see [Authenticating users and application clients](../security-and-auth/authenticating-users-and-application-clients.html)). If you make an anonymous ("guest") call, the system will not be able to determine which user to return as ``/users/me``.
 
 __Note__: The username can contain any combination of characters, including those that represent letters, numbers, and symbols.