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:46 UTC

[09/29] incubator-usergrid git commit: Added sdk-outline.md with possible outline for Client SDK docs.

Added sdk-outline.md with possible outline for Client SDK docs.


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

Branch: refs/heads/asf-site
Commit: 02fe92936766f35fa23bd6b97c6f7c743710d253
Parents: fa4c74a
Author: Dave Johnson <sn...@apache.org>
Authored: Fri Aug 7 13:50:11 2015 -0400
Committer: Dave Johnson <sn...@apache.org>
Committed: Fri Aug 7 13:50:11 2015 -0400

----------------------------------------------------------------------
 docs/sdks/ios-new.md            | 982 +++++++++++++++++++++++++++++++++++
 docs/sdks/java.md               |   1 -
 docs/sdks/javascript.md         |   3 -
 docs/sdks/sdk-outline.md        | 111 ++++
 docs/sdks/usage.md              |  16 -
 sdks/android/README.md          |   3 +-
 sdks/html5-javascript/README.md |   2 +
 sdks/ios/README.md              |   3 +-
 sdks/nodejs/readme.md           |   2 +
 sdks/ruby/README.md             |   2 +-
 10 files changed, 1101 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/02fe9293/docs/sdks/ios-new.md
----------------------------------------------------------------------
diff --git a/docs/sdks/ios-new.md b/docs/sdks/ios-new.md
new file mode 100644
index 0000000..0f5b3fe
--- /dev/null
+++ b/docs/sdks/ios-new.md
@@ -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/02fe9293/docs/sdks/java.md
----------------------------------------------------------------------
diff --git a/docs/sdks/java.md b/docs/sdks/java.md
deleted file mode 100644
index a2a5086..0000000
--- a/docs/sdks/java.md
+++ /dev/null
@@ -1 +0,0 @@
-# Java SDK
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/02fe9293/docs/sdks/javascript.md
----------------------------------------------------------------------
diff --git a/docs/sdks/javascript.md b/docs/sdks/javascript.md
deleted file mode 100644
index 685d42d..0000000
--- a/docs/sdks/javascript.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# JavaScript/HTML5 SDK
-
-

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/02fe9293/docs/sdks/sdk-outline.md
----------------------------------------------------------------------
diff --git a/docs/sdks/sdk-outline.md b/docs/sdks/sdk-outline.md
new file mode 100644
index 0000000..48bd3fc
--- /dev/null
+++ b/docs/sdks/sdk-outline.md
@@ -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/02fe9293/docs/sdks/usage.md
----------------------------------------------------------------------
diff --git a/docs/sdks/usage.md b/docs/sdks/usage.md
deleted file mode 100644
index 2d2f139..0000000
--- a/docs/sdks/usage.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# SDKs & Tools
-
-## SDKs
-
-* [iOS SDK](https://github.com/apache/incubator-usergrid/tree/master/sdks/ios)
-* [Android SDK](https://github.com/apache/incubator-usergrid/tree/master/sdks/android)
-* [HTML5 / JavaScript SDK](https://github.com/apache/incubator-usergrid/tree/master/sdks/html5-javascript)
-* [Windows 8 / Windows Phone / .net SDK](https://github.com/apache/incubator-usergrid/tree/master/sdks/dotnet)
-* [Ruby gem](https://github.com/apache/incubator-usergrid/tree/master/sdks/ruby)
-* [Ruby on Rails gem](https://github.com/apache/incubator-usergrid/tree/master/sdks/ruby-on-rails)
-* [PHP library](https://github.com/apache/incubator-usergrid/tree/master/sdks/php)
-* [Java library](https://github.com/apache/incubator-usergrid/tree/master/sdks/java)
-* [Perl module](https://github.com/apache/incubator-usergrid/tree/master/sdks/perl)
-
-## Tools
-[ugc — the Command-line Client](https://github.com/apache/incubator-usergrid/tree/master/ugc#usergrid-command-line-ugc)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/02fe9293/sdks/android/README.md
----------------------------------------------------------------------
diff --git a/sdks/android/README.md b/sdks/android/README.md
index 4fe667a..0218763 100755
--- a/sdks/android/README.md
+++ b/sdks/android/README.md
@@ -1,5 +1,4 @@
-Usergrid Android SDK Overview
-=======================
+# Android SDK 
 
 Installing the SDK
 --------------------

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/02fe9293/sdks/html5-javascript/README.md
----------------------------------------------------------------------
diff --git a/sdks/html5-javascript/README.md b/sdks/html5-javascript/README.md
index 2b87573..bebc955 100755
--- a/sdks/html5-javascript/README.md
+++ b/sdks/html5-javascript/README.md
@@ -1,3 +1,5 @@
+# HTML5-JavaScript SDK
+
 ##Quickstart
 Detailed instructions follow but if you just want a quick example of how to get started with this SDK, here’s a minimal HTML5 file that shows you how to include & initialize the SDK, as well as how to read & write data from Usergrid with it.
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/02fe9293/sdks/ios/README.md
----------------------------------------------------------------------
diff --git a/sdks/ios/README.md b/sdks/ios/README.md
index 2377222..b0ba069 100644
--- a/sdks/ios/README.md
+++ b/sdks/ios/README.md
@@ -1,3 +1,5 @@
+# iOS SDK
+
 ##Version
 
 Current Version: **0.9.2**
@@ -6,7 +8,6 @@ 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:
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/02fe9293/sdks/nodejs/readme.md
----------------------------------------------------------------------
diff --git a/sdks/nodejs/readme.md b/sdks/nodejs/readme.md
index f3342ee..b394551 100755
--- a/sdks/nodejs/readme.md
+++ b/sdks/nodejs/readme.md
@@ -1,3 +1,5 @@
+# Node.js SDK
+
 ##Version
 
 Current Version: **0.10.8**

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/02fe9293/sdks/ruby/README.md
----------------------------------------------------------------------
diff --git a/sdks/ruby/README.md b/sdks/ruby/README.md
index d719a49..2f6c594 100644
--- a/sdks/ruby/README.md
+++ b/sdks/ruby/README.md
@@ -1,4 +1,4 @@
-# Usergrid_iron
+# Ruby SDK
 
 Usergrid_iron enables simple, low-level Ruby access to Apigee's App Services (aka Usergrid)
 REST API with minimal dependencies.