# 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/// 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////?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////?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//// -d '[{}, {}, ...]' 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 : 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: / 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: = OR = 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