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.