You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by ti...@apache.org on 2013/11/18 19:51:22 UTC
svn commit: r1543106 [5/23] - in /incubator/usergrid/site: ./ content/
content/bootstrap/ content/community/ content/css/ content/docs/
content/font/ content/img/ content/img/check_flat/ content/js/
content/static/ layouts/ lib/ lib/helpers/ publish/ p...
Added: incubator/usergrid/site/content/docs/basic-query-syntax.md
URL: http://svn.apache.org/viewvc/incubator/usergrid/site/content/docs/basic-query-syntax.md?rev=1543106&view=auto
==============================================================================
--- incubator/usergrid/site/content/docs/basic-query-syntax.md (added)
+++ incubator/usergrid/site/content/docs/basic-query-syntax.md Mon Nov 18 18:51:18 2013
@@ -0,0 +1,102 @@
+---
+title: Basic query syntax
+category: docs
+layout: docs
+---
+
+Basic query syntax
+==================
+
+Queries of Apigee data for Apache Usergrid are made up of two kinds of
+statements: the path to the collection you want to query, followed by
+the query language statement containing your query. These two statements
+are separated by "?ql=" to indicate where the query language statement
+starts.
+
+> **Note:**Query examples in this content are shown unencoded to make
+> them easier to read. Keep in mind that you might need to encode query
+> strings if you're sending them as part of URLs, such as when you're
+> executing them with the cURL tool.
+
+> **Note:** The syntax of Apache Usergrid queries only *resembles* SQL to
+> make queries familiar and easier to write. However, the language isn't
+> SQL. Only the syntax items documented here are supported.
+
+Basic syntax
+------------
+
+To retrieve items from a collection, you would use a syntax such as the
+following:
+
+ /<collection>?ql=<query_statement>
+
+In the following example, the query is retrieving all users whose name
+is Gladys Kravitz.
+
+ /users?ql=select * where name = 'Gladys Kravitz'
+
+The following example selects all items except those that have an a
+property value of 5:
+
+ /items?ql=select * where NOT a = 5
+
+Note that there is a shortcut available when your query selects all
+items matching certain criteria -- in other words, where you use a
+statement that starts "select \* where". In this case, you can omit the
+first part of the statement and abbreviate it this way:
+
+ /items?ql=NOT a = 5
+
+Supported operators
+-------------------
+
+The following table lists more of the operators that you can use in
+queries. Others are described later in this section.
+
+Category
+
+Component Name
+
+Example
+
+Equality operations
+
+Less than
+
+ '<' or 'lt'
+
+Less than equal
+
+ '<=' or 'lte'
+
+Equal
+
+ '=' or 'eq'
+
+Greater than equal
+
+ '>=' or 'gte'
+
+Greater than
+
+ '>' or 'gt'
+
+Not equal
+
+ NOT <some_expression>
+
+Logical operations
+
+Intersection of results
+
+ and
+
+Union of results
+
+ or
+
+Subtraction of results
+
+ not
+
+Â
Added: incubator/usergrid/site/content/docs/client-authorization.md
URL: http://svn.apache.org/viewvc/incubator/usergrid/site/content/docs/client-authorization.md?rev=1543106&view=auto
==============================================================================
--- incubator/usergrid/site/content/docs/client-authorization.md (added)
+++ incubator/usergrid/site/content/docs/client-authorization.md Mon Nov 18 18:51:18 2013
@@ -0,0 +1,114 @@
+---
+title: Client authorization
+category: docs
+layout: docs
+---
+
+Client authorization
+====================
+
+[See all management
+resources](/docs/usergrid/content/management-resources)[![](/docs/sites/docs/files/learnmore%20arrow_0.png)](/docs/usergrid/content/management-resources)
+
+Using the App services API, you can authorize a client.
+
+Authorizing a client
+--------------------
+
+Use the GETÂ method to authorize a client.
+
+### Request URI
+
+GET
+/management/authorize?response\_type={response\_type}&client\_id={client\_id}
+
+### Parameters
+
+ Parameter Description
+ ----------------------- -------------------------------------------------------------------------------------------------
+ string response\_type The [OAuth 2.0 response type](http://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-3.1.1).
+ string client\_id Organization client ID
+
+Â
+
+### Example - Request
+
+- [cURL](#curl_auth_client)
+- [JavaScript (HTML5)](#javascript_auth_client)
+- [Ruby](#ruby_auth_client)
+- [Node.js](#nodejs_auth_client)
+
+<!-- -->
+
+ curl -X GET "https://api.usergrid.com/management/authorize?response_type=token&client_id=b0U5N81ME96NSeG78xIxQFxelQ"
+
+It is recommended that you use the [Admin
+Portal](http://apigee.com/usergrid) for administrative activities
+instead of using JavaScript to do them programmatically in your app.
+
+**Note:**You can see the response below in the Admin Portal by using the
+[JavaScript
+Console](/docs/usergrid/content/displaying-app-services-api-calls-curl-commands).
+
+The example assumes use of the [Ruby
+SDK](https://github.com/scottganyo/usergrid_iron).
+
+ mgmt = Usergrid::Management.new 'https://api.usergrid.com/'
+ mgmt['authorize'].get params: { response_type: 'token', client_id: 'b0U5N81ME96NSeG78xIxQFxelQ'}
+
+The example assumes use of the [Node.js
+module](https://github.com/apigee/usergrid-node-module).
+
+ var options = {
+ method:'GET',
+ endpoint:'management/authorize',
+ qs:{response_type:'token', client_id:'b0U5N81ME96NSeG78xIxQFxelQ'}
+ };
+ client.request(options, function (err, data) {
+ if (err) {
+ //error â GET failed
+ } else {
+ //success â data will contain raw results from API call
+ }
+ });
+
+### Example - Response
+
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+ <html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title>Sign In</title>
+ <link rel="stylesheet" type="text/css" href="../css/styles.css" />
+ </head>
+ <body>
+
+ <div class="dialog-area">
+
+ <form class="dialog-form" action="" method="post">
+ <input type="hidden" name="response_type" value="token">
+ <input type="hidden" name="client_id" value="b3U6M90FY80MEeG89xIxPRxEkQ">
+ <input type="hidden" name="redirect_uri" value="">
+ <input type="hidden" name="scope" value="">
+ <input type="hidden" name="state" value="">
+ <fieldset>
+ <p>
+ <label for="username">Username</label>
+ </p>
+ <p>
+ <input class="text_field" id="username" name="username" type="text" />
+ </p>
+ <p>
+ <label for="password">Password</label>
+ </p>
+ <p>
+ <input class="text_field" id="password" name="password" type="password" />
+ </p>
+ <p class="buttons">
+ <button type="submit">Submit</button>
+ </p>
+ </fieldset>
+ </form>
+ </div>
+
+Â
Added: incubator/usergrid/site/content/docs/creating-collections.md
URL: http://svn.apache.org/viewvc/incubator/usergrid/site/content/docs/creating-collections.md?rev=1543106&view=auto
==============================================================================
--- incubator/usergrid/site/content/docs/creating-collections.md (added)
+++ incubator/usergrid/site/content/docs/creating-collections.md Mon Nov 18 18:51:18 2013
@@ -0,0 +1,340 @@
+---
+title: Creating Collections
+category: docs
+layout: docs
+---
+
+Creating Collections
+====================
+
+This article describes how to create collections in Apache Usergrid. In App
+Services, all entities are automatically associated with a corresponding
+collection based on the `type` property of the entity. You may create
+empty collections if you wish, but creating an entity of a new type will
+automatically create a corresponding collection for you. For example,
+creating a new custom "item" entity, creates an "items" collection.
+
+**Note:** Although not shown in the API examples below, you need to
+provide a valid access token with each API call. See [Authenticating
+users and application
+clients](/authenticating-users-and-application-clients) for details.
+
+Creating a collection
+---------------------
+
+- [Admin Portal](#portal_create_collection)
+- [cURL](#curl_create_collection)
+- [iOS](#ios_create_collection)
+- [Android](#android_create_collection)
+- [JavaScript](#javascript_create_collection)
+- [Ruby](#ruby_create_collection)
+- [Node.js](#nodejs_create_collection)
+
+The easiest way to create a new, empty collection is by using the *Data
+Explorer* tool in the Apache Usergrid Admin Portal by doing the following:
+
+1. [Login](https://www.apigee.com/usergrid) to the Apache Usergrid Admin
+ Portal.
+2. In the left menu, click *Data Explorer*.
+3. In the middle column, click the *Add Collection* button.
+4. In the form, enter the name for the collection you want to create.
+ If the provided value is not a plural word, Apache Usergrid will
+ pluralize it.
+5. Click *Create*. The new collection will appear in the list.
+
+### Example Request/Response
+
+#### Request:
+
+ curl -X POST "https://api.usergrid.com/your-org/your-app/item"
+
+#### 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"
+ }
+
+### Request Syntax
+
+ curl -X POST https://api.usergrid.com/<org>/<app>/<collection_name>
+
+### Parameters
+
++--------------------------------------+--------------------------------------+
+| Parameter | Description |
++======================================+======================================+
+| org | Organization UUID or organization |
+| | name |
++--------------------------------------+--------------------------------------+
+| app | Application UUID or application name |
++--------------------------------------+--------------------------------------+
+| collection\_name | Name of the collection to create. If |
+| | the provided value is not a plural |
+| | word, Apache Usergrid will pluralize |
+| | it. |
+| | |
+| | For example, providing 'item' will |
+| | create a collection named 'items' |
+| | but providing 'items' will not |
+| | create 'itemses'. |
++--------------------------------------+--------------------------------------+
+
+This example uses the [Apache Usergrid iOS SDK](/app-services-sdks#ios).
+
+### 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"
+ }
+
+### 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> |
++--------------------------------------+--------------------------------------+
+| op | The HTTP method - in this case, |
+| | 'POST' |
++--------------------------------------+--------------------------------------+
+| opData | No data is being sent, so the value |
+| | is `nil` |
++--------------------------------------+--------------------------------------+
+
+Currently, creating an empty collection is not supported by the [App
+Services SDK for Android](/app-services-sdks#android).
+
+This example uses the [Apache Usergrid JavaScript (HTML5)
+SDK](/app-services-sdks#javascript).
+
+### Example Request/Response
+
+#### Request:
+
+ //create the basic client object
+ var dataClient = new Usergrid.Client({
+ orgName:'your-org',
+ appName:'your-app'
+ });
+
+ //options for the request
+ var options = {
+ endpoint:"items",
+ method:"POST"
+ }
+
+ dataClient.request(options,function (error,response) {
+
+ if (error) {
+ // Error
+ } else {
+ // Success
+ }
+
+ });
+
+
+#### Response:
+
+ Object {action: "post", application: "f34f4222-a166-11e2-a7f7-02e81adcf3d0", params: Object, path: "/items", uri: "http://api.usergrid.com/your-org/your-app/items"â¦}
+ action: "post"
+ application: "f34f4222-a166-11e2-a7f7-02e81adcf3d0"
+ applicationName: "your-app"
+ duration: 29
+ entities: Array[0]
+ organization: "your-org"
+ params: Object
+ path: "/items"
+ timestamp: 1378872945962
+ uri: "http://api.usergrid.com/your-org/your-app/items"
+ __proto__: Object
+
+
+### SDK Method
+
+ request(options, callback)
+
+### Parameters
+
++--------------------------------------+--------------------------------------+
+| Parameter | Description |
++======================================+======================================+
+| options | A JSON-formatted object containing |
+| | the following properties: |
+| | |
+| | - endpoint: the name of the |
+| | collection to be created |
+| | - method: the HTTP method for the |
+| | request, in this case *POST* |
++--------------------------------------+--------------------------------------+
+| callback | Callback function to handle the API |
+| | response |
++--------------------------------------+--------------------------------------+
+
+This example uses the [Apache Usergrid RubyGem](/app-services-sdks#ruby).
+
+### Example Request/Response
+
+#### Request:
+
+ #Create a client object
+ usergrid_api = 'https://api.usergrid.com'
+ organization = 'your-org'
+ application = 'your-app'
+
+ client = Usergrid::Application.new "#{usergrid_api}/#{organization}/#{application}"
+
+ begin
+ # Call create_entity to initiate the API call
+ # By specifying 'nil' for the request body, we get an empty collection
+ client.create_entity('item', nil)
+ rescue
+ #fail
+ end
+
+
+#### 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"
+ }
+
+### SDK Method
+
+ create_entity(type, properties)
+
+### Properties
+
+ Parameter Description
+ ------------ -----------------------------------------------------------------
+ type Custom entity type that will correspond to the collection
+ properties Object that contains the entity properties â in this case 'nil'
+
+This example uses the [Apache Usergrid Node.js
+module](/app-services-sdks#nodejs).
+
+### Example Request/Response
+
+#### Request:
+
+ //create the basic client object
+ var dataClient = new Usergrid.client({
+ orgName:'your-org',
+ appName:'your-app'
+ });
+
+ //options for the request
+ var options = {
+ endpoint:"items",
+ method:"POST"
+ }
+
+ dataClient.request(options,function (error,response) {
+
+ if (error) {
+ // Error
+ } else {
+ // Success
+ }
+
+ });
+
+
+#### Response:
+
+ { action: 'post',
+ application: 'f34f4222-a166-11e2-a7f7-02e81adcf3d0',
+ params: {},
+ path: '/items',
+ uri: 'http://api.usergrid.com/your-org/your-app/items',
+ entities: [],
+ timestamp: 1378873689426,
+ duration: 29,
+ organization: 'your-org',
+ applicationName: 'your-app' }
+
+
+### SDK Method
+
+ entity.request(options,callback)
+
+### Parameters
+
++--------------------------------------+--------------------------------------+
+| Parameter | Description |
++======================================+======================================+
+| options | A JSON-formatted object containing |
+| | the following properties: |
+| | |
+| | - endpoint: the name of the |
+| | collection to be created |
+| | - method: the HTTP method for the |
+| | request, in this case *POST* |
++--------------------------------------+--------------------------------------+
+| callback | Callback function to handle the API |
+| | response |
++--------------------------------------+--------------------------------------+
+
+Â
Added: incubator/usergrid/site/content/docs/creating-custom-data-entities.md
URL: http://svn.apache.org/viewvc/incubator/usergrid/site/content/docs/creating-custom-data-entities.md?rev=1543106&view=auto
==============================================================================
--- incubator/usergrid/site/content/docs/creating-custom-data-entities.md (added)
+++ incubator/usergrid/site/content/docs/creating-custom-data-entities.md Mon Nov 18 18:51:18 2013
@@ -0,0 +1,1639 @@
+---
+title: Creating Custom Data Entities
+category: docs
+layout: docs
+---
+
+Creating Custom Data Entities
+=============================
+
+This article describes how to create custom data entities and entity
+properties in Apache Usergrid. Entity types correspond to the name of
+collection to which they are posted. For example, if you create a new
+custom "dog" entity, a "dogs" collection will be created if one did not
+already exist. If a "dogs" collection already exists, the new "dog"
+entity will be saved in it. All user-defined properties are indexed, and
+strings that contain multiple words are keyword-indexed.
+
+The methods cited in this article should be used to create custom data
+entities. If you are using one of the [Apache Usergrid
+SDKs](/app-services-sdks), use one of the entity type-specific SDK
+methods to create [default data entities](/default-data-entities).
+
+**Note:** Although not shown in the API examples below, you need to
+provide a valid access token with each API call. See [Authenticating
+users and application
+clients](/authenticating-users-and-application-clients) for details.
+
+Creating a custom entity
+------------------------
+
+When a new entity is created, Apache Usergrid will automatically create a
+corresponding collection if one does not already exist. The collection
+will automatically be named with the plural form of the entity type. For
+example, creating a custom entity of type 'item' will automatically
+create a collection named 'items' in which all future 'item' entities
+will be saved.
+
+- [cURL](#curl_create_entity)
+- [iOS](#ios_create_entity)
+- [Android](#android_create_entity)
+- [JavaScript (HTML5)](#javascript_create_entity)
+- [Ruby](#ruby_create_entity)
+- [Node.js](#nodejs_create_entity)
+
+### Example Request/Response
+
+#### Request:
+
+ curl -X POST "https://api.usergrid.com/your-org/your-app/item" -d '{"name":"milk", "price":"3.25"}'
+
+#### 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"Â
+ }
+
+### Request Syntax
+
+ curl -X POST https://api.usergrid.com/<org>/<app>/<entity_type> -d '{<property>, <property>, ...}'
+
+### Parameters
+
+ Parameter Description
+ -------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ org Organization UUID or organization name
+ app Application UUID or application name
+ entity\_type Entity type to create. Apache Usergrid will create a corresponding collection if one does not already exist. To add an entity to an existing collections, use the pluralized collection name for entity\_type.
+ property Comma-separated list of entity properties, formatted as key-value pairs: \<property\>:\<value\> (for a full list of default properties, see [Default Data Entities](/default-data-entities))
+
+This example uses the [Apache Usergrid iOS SDK](/app-services-sdks#ios).
+
+### Example Request/Response
+
+#### 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"Â
+ }
+
+### SDK Method
+
+ (ApigeeClientResponse *)createEntity:(NSDictionary *)newEntity
+
+### Parameters
+
+ Parameter Description
+ ----------- ---------------------------------------------------------
+ newEntity NSDictionary object that contains the entity properties
+
+This example uses the [Apache Usergrid Android
+SDK](/app-services-sdks#android).
+
+### Example Request/Response
+
+#### Request:
+
+ //Create client entity
+ String ORGNAME = "your-org";
+ String APPNAME = "your-app";
+
+ ApigeeClient apigeeClient = new ApigeeClient(ORGNAME,APPNAME,this.getBaseContext());
+ DataClient client = apigeeClient.getDataClient();
+
+ //Create properties object
+ Map<String, Object> properties = new HashMap<String, Object>();
+ properties.put("type", "item");
+ properties.put("name", "milk");
+ properties.put("price", "3.25");
+
+ //call createEntityAsync to initiate the asynchronous API call
+ apigeeClient.createEntityAsync(properties, new ApiResponseCallback() {
+
+ //If createEntityAsync fails, catch the error
+ @Override
+ public void onException(Exception e) {
+ // Error
+ }
+
+ //If createEntityAsync is successful, handle the response object
+ @Override
+ public void onResponse(ApiResponse response) {
+ try {
+ if (response != null) {
+ // Success
+ }
+ } catch (Exception e) { //The API request returned an error
+ // Fail
+ }
+ }
+ });
+
+
+#### Response:
+
+ {
+ "action":"post",
+ "application":"f34f4222-a166-11e2-a7f7-02e81adcf3d0",
+ "entities":[{
+ "Client":{
+ "accessToken":null,
+ "apiUrl":"http://api.usergrid.com",
+ "applicationId":"your-app",
+ "clientId":null,
+ "clientSecret":null,
+ "currentOrganization":null,
+ "loggedInUser":null,
+ "organizationId":"your-org"
+ },
+ "type":"item",
+ "uuid":"fd29157a-e980-11e2-afcc-652a12f1ce72",
+ "created":1373475098695,
+ "modified":1373475098695,
+ "metadata":{
+ "path":"/items/fd29157a-e980-11e2-afcc-652a12f1ce72"
+ }
+ }],
+
+ "params":{},
+ "path":"/items",
+ "rawResponse":"{
+ "action" : "post",
+ "application" : "f34f4222-a166-11e2-a7f7-02e81adcf3d0",
+ "params" : { },
+ "path" : "/items",
+ "uri" : "http://api.usergrid.com/your-org/your-app/items",
+ "entities" : [ {
+ "uuid" : "fd29157a-e980-11e2-afcc-652a12f1ce72",
+ "type" : "item",
+ "created" : 1373475098695,
+ "modified" : 1373475098695,
+ "metadata" : {
+ "path" : "/items/fd29157a-e980-11e2-afcc-652a12f1ce72"
+ }
+ } ],
+ "timestamp" : 1373475098689,
+ "duration" : 24,
+ "organization" : "your-org",
+ "applicationName" : "your-app"
+ }",
+ "uri":"http://api.usergrid.com/your-org/your-app/items",
+ "timestamp":1373475098689,
+ "entityCount":1,
+ "firstEntity":{
+ "Client":{
+ "accessToken":null,
+ "apiUrl":"http://api.usergrid.com",
+ "applicationId":"your-app",
+ "clientId":null,
+ "clientSecret":null,
+ "currentOrganization":null,
+ "loggedInUser":null,
+ "organizationId":"your-org"
+ },
+ "type":"item",
+ "uuid":"fd29157a-e980-11e2-afcc-652a12f1ce72",
+ "created":1373475098695,
+ "modified":1373475098695,
+ "metadata":{
+ "path":"/items/fd29157a-e980-11e2-afcc-652a12f1ce72"
+ }
+ },
+ "lastEntity":{
+ "Client":{
+ "accessToken":null,
+ "apiUrl":"http://api.usergrid.com",
+ "applicationId":"your-app",
+ "clientId":null,
+ "clientSecret":null,
+ "currentOrganization":null,
+ "loggedInUser":null,
+ "organizationId":"your-org"
+ },
+ "type":"item",
+ "uuid":"fd29157a-e980-11e2-afcc-652a12f1ce72",
+ "created":1373475098695,
+ "modified":1373475098695,
+ "metadata":{
+ "path":"/items/fd29157a-e980-11e2-afcc-652a12f1ce72"
+ }
+ },
+ "organization":"your-org",
+ "duration":24,
+ "applicationName":"your-app"
+ }
+
+
+### SDK Method
+
+Asynchronous:
+
+ createEntityAsync(Map<String, Object> properties, ApiResponseCallback callback)
+
+Synchronous:
+
+ ApiResponse createEntity(Map<String, Object> properties)
+
+### Parameters
+
+ Parameter Description
+ ------------ ----------------------------------------------------------------------------------
+ properties Map object that contains the entity properties. The 'type' property is required.
+ callback Callback function (Asynchronous calls only)
+
+This example uses the [Apache Usergrid JavaScript (HTML5)
+SDK](/app-services-sdks#javascript).
+
+### Example Request/Response
+
+#### Request:
+
+
+ //Create your client object
+ var dataClient = new Usergrid.Client({
+ orgName:'your-org',
+ appName:'your-app'
+ });
+
+
+ //Set the properties of the entity
+ var options = {
+ type:'item', //required
+ name:'milk',
+ price:'3.25'
+ };
+
+ //Create the entity and process the results
+ client.createEntity(options, function (err, result) {
+ if (err) {
+ //error
+ } else {
+ //success
+ }
+ });
+
+
+#### Response:
+
+ "_client": //Information on the client object used to initiate the call
+ "URI":"https://api.usergrid.com",
+ "orgName":"your-org",
+ "appName":"your-app",
+ "buildCurl":false,
+ "logging":false,
+ "_callTimeout":30000,
+ "_callTimeoutCallback":null,
+ "logoutCallback":null,
+ "_start":1373482218757,
+ "_end":1373482219070,
+ "_data": //Information on the successfully created entity
+ "type":"item",
+ "name":"milk",
+ "price":"3.25",
+ "uuid":"9124211a-e991-11e2-ba6c-e55e3ffa12ef",
+ "created":1373482218913,
+ "modified":1373482218913,
+ "metadata":
+ "path":"/items/9124211a-e991-11e2-ba6c-e55e3ffa12ef"
+
+
+### SDK Method
+
+ createEntity(properties, callback)
+
+### Parameters
+
+ Parameter Description
+ ------------ ------------------------------------------------------------------------------
+ properties Object that contains the entity properties. The `type` property is required.
+ callback Callback function
+
+This example uses the [Apache Usergrid RubyGem](/app-services-sdks#ruby).
+
+### Example Request/Response
+
+#### Request:
+
+ #Create a client object
+ usergrid_api = 'https://api.usergrid.com'
+ organization = 'your-org'
+ application = 'your-app'
+
+ client = Usergrid::Application.new "#{usergrid_api}/#{organization}/#{application}"
+
+ begin
+ # Call create_entity to initiate the API call
+ # and save the response
+ client.create_entity('item', {'name' => 'milk', 'price' => '3.25'})
+ rescue
+ #fail
+ end
+
+
+#### 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"Â
+ }
+
+### SDK Method
+
+ create_entity(type, properties)
+
+### Properties
+
+ Parameter Description
+ ------------ --------------------------------------------
+ type Custom entity type to create
+ properties Object that contains the entity properties
+
+The example assumes use of the [Node.js
+module](/app-services-sdks#nodejs).
+
+### Example Request/Response
+
+#### Request:
+
+ //Create a client object
+ var dataClient = new Usergrid.client({
+ orgName:'your-org',
+ appName:'your-app'
+ });
+
+ //Set the properties for your entity
+ var properties = {
+ type:"item", //Requried. Type of entity to create.
+ name:"milk",
+ price:"3.25"
+ };
+
+ //Call createEntity to initiate the API call
+ client.createEntity(properties, function(error, result){
+ if(error) {
+ //error
+ } else {
+ //success
+ }
+ });
+
+
+#### Response:
+
+ {
+ type: 'item',
+ name: 'milk',
+ price: '3.25',
+ uuid: '126e29aa-eb40-11e2-85a8-355b0e586a1a',
+ created: 1373667119418,
+ modified: 1373667119418,
+ metadata: { path: '/items/126e29aa-eb40-11e2-85a8-355b0e586a1a' }
+ }
+
+
+### SDK Method
+
+ createEntity(properties, callback)
+
+### Parameters
+
+ Parameter Description
+ ------------ ------------------------------------------------------------------------------
+ properties Object that contains the entity properties. The 'type' property is required.
+ callback Callback function
+
+Creating multiple custom entities
+---------------------------------
+
+- [cURL](#curl_create_multiple_entities)
+- [iOS](#ios_create_multiple_entities)
+- [Android](#android_create_multiple_entities)
+- [JavaScript (HTML5)](#javascript_create_multiple_entities)
+- [Ruby](#ruby_create_multiple_entities)
+- [Node.js](#nodejs_create_multiple_entities)
+
+### Example Request/Response
+
+#### 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"
+ }
+
+### 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. Apache Usergrid 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\>
+
+This example uses the [Apache Usergrid iOS SDK](/app-services-sdks#ios).
+
+### Example Request/Response
+
+#### Request:
+
+
+ -(NSString*)newMultipleEntities {
+
+ //apiRequest requires us to form the full API request, including base URL, org name, and app name.
+ //Note that we specify the target collection in the URL string
+ NSString * url = @"https://api.usergrid.com/your-org/your-app/items";
+ NSString * http_method = @"POST";
+ NSString * properties = @"[{\"name\":\"milk\",\"price\":\"3.25\"},{\"name\":\"bread\",\"price\":\"2.50\"}]"; //We escape the double quotes in the request body
+
+ //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:http_method data:properties];
+
+ @try {
+
+ //success
+
+ }
+ @catch (NSException * e) {
+ //fail
+ }
+
+ }
+
+
+#### 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"
+ }
+
+### SDK Method
+
+The iOS SDK does not have a dedicated method for creating multiple
+entities. Instead, you can use the generic apiRequest method to form the
+API request manually.
+
+ (ApigeeClientResponse *)apiRequest: (NSString *)url operation:(NSString *)http_method data:(NSString *)properties
+
+### Parameters
+
++--------------------------------------+--------------------------------------+
+| Parameter | Description |
++======================================+======================================+
+| url | Fully-formed request URL in the |
+| | format: |
+| | |
+| | https://api.usergrid.com/<your-o |
+| | rg>/<your-app>/<collection> |
++--------------------------------------+--------------------------------------+
+| http\_method | HTTP Method â in this case POST |
++--------------------------------------+--------------------------------------+
+| properties | A JSON array, containing a JSON |
+| | object of entity properties for each |
+| | entity to be created. The 'type' |
+| | property is required for each |
+| | entity. |
++--------------------------------------+--------------------------------------+
+
+Currently, creating multiple entities is not supported by the [App
+Services Android SDK](/app-services-sdks#android).
+
+This example uses the [Apache Usergrid JavaScript (HTML5)
+SDK](/app-services-sdks#javascript).
+
+### Example Request/Response
+
+#### Request:
+
+ //Create a client object with your organization name and application name.
+ var dataClient = new Usergrid.Client({
+ orgName:'your-org',
+ appName:'your-app'
+ });
+
+ //Set the request options: http method, endpoint, body
+ var options = {
+ method:'POST',
+ endpoint:'items', //The collection name
+ body:[{"name":"milk", "price":"3.25"},{"name": "bread", "price":"3.25"}] //note the multiple JSON objects
+ };
+
+ //Call request() to initiate the API call and process the results
+ client.request(options, function (error, response) {
+ if (error) {
+ //error
+ } else {
+ //success
+ }
+ });
+
+
+#### Response:
+
+ Object {action: "post", application: "f34f4222-a166-11e2-a7f7-02e81adcf3d0", params: Object, path: "/items", uri: "http://api.usergrid.com/your-org/your-app/items"â¦}
+ action: "post"
+ application: "f34f4222-a166-11e2-a7f7-02e8js76g3d0" //your Apache Usergrid application uuid
+ applicationName: "your-app"
+ duration: 315
+ entities: Array[2] //array of entities successfully created
+ 0: Object //entity 1
+ created: 1374099532148
+ metadata: Object
+ modified: 1374099532148
+ name: "milk"
+ price: "3.25"
+ type: "item"
+ uuid: "dc80834a-ef2e-11e2-8a77-cf8d4c2dbd49"
+ __proto__: Object
+ 1: Object //entity 2
+ created: 1374099532344
+ metadata: Object
+ modified: 1374099532344
+ name: "bread"
+ price: "3.25"
+ type: "item"
+ uuid: "dc9e6b8a-ef2e-11e2-8e8b-e39a2d988c4f"
+ length: 2
+ organization: "your-org"
+ params: Object
+ __proto__: Object
+ path: "/items"
+ timestamp: 1374099532139
+ uri: "http://api.usergrid.com/your-org/your-app/items"
+
+
+### SDK Method
+
+ request(options, callback)
+
+### Parameters
+
++--------------------------------------+--------------------------------------+
+| Parameter | Description |
++======================================+======================================+
+| options | Object that contains the following |
+| | properties: |
+| | - endpoint: the collection to add |
+| | the entities to |
+| | - method: the HTTP method for the |
+| | request - in this case *POST* |
+| | - body: the body of the request â |
+| | in this case, a JSON-array |
+| | containing an object with |
+| | properties for each entity to be |
+| | created. |
++--------------------------------------+--------------------------------------+
+| callback | Callback function |
++--------------------------------------+--------------------------------------+
+
+This example uses the [Apache Usergrid RubyGem](/app-services-sdks#ruby).
+
+### Example Request/Response
+
+ #Create a client object
+ usergrid_api = 'https://api.usergrid.com'
+ organization = 'your-org'
+ application = 'your-app'
+
+ client = Usergrid::Application.new "#{usergrid_api}/#{organization}/#{application}"
+
+ begin
+ # Call create_entity to initiate the API call - note the multiple JSON objects
+ # and save the response
+ response = client.create_entity 'multi', [{'name'=> 'milk', 'price' => '3.25'},{'name'=> 'bread', 'price' => '2.50'}]
+ new_items=response.entity
+ rescue
+ #fail
+ end
+
+
+#### 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"
+ }
+
+### SDK Method
+
+ create_entity(type, properties)
+
+### Properties
+
+ Parameter Description
+ ------------ --------------------------------------------
+ type Custom entity type to create
+ properties Object that contains the entity properties
+
+The example uses the [Apache Usergrid Node.js
+module](/app-services-sdks#nodejs).
+
+### Example Request/Response
+
+#### Request:
+
+ //Create a client object
+ var dataClient = new Usergrid.client({
+ orgName:'your-org',
+ appName:'your-app'
+ });
+
+ //Set the request options: http method, endpoint, body
+ var options = {
+ method:'POST',
+ endpoint:'items', //The collection name
+ body:[{"name":"milk", "price":"3.25"},{"name": "bread", "price":"3.25"}] //note the multiple JSON objects
+ };
+
+ //Call request() to initiate the API call and process the results
+ client.request(options, function (error, result) {
+ if (error) {
+ //error
+ } else {
+ //success â result will contain raw results from API call
+ }
+ });
+
+
+
+#### Response:
+
+ {
+ "action": "post",
+ "application": "7fb8d891-477d-11e1-b2bd-22000a1c4e221",
+ "params": {},
+ "path": "/items",
+ "uri": "https://api.usergrid.com/22000a1c4e22-7fsii8t1-477d-11e1-b2bd/7fb8d891-477d-11e1-b2bd-22000a1c4e22/cats",
+ "entities": [
+ {
+ "uuid": "187d31d9-0742-11e2-a7b5-12313d21509c",
+ "type": "item",
+ "name": "milk",
+ "price" : "3.25"
+ "created": 1348599123463,
+ "modified": 1348599123463,
+ "metadata": {
+ "path": "/items/187d31d9-0742-11e2-a7b5-12313d21509c"
+ }
+ },
+ {
+ "uuid": "188f815b-0742-11e2-a7b5-12313d21509c",
+ "type": "items",
+ "name": "bread",
+ "price" : "2.50"
+ "created": 1348599123583,
+ "modified": 1348599123583,
+ "metadata": {
+ "path": "/cats/187d31d9-0742-11e2-a7b5-12313d21509c"
+ }
+ }
+ ],
+ "timestamp": 1348599123461,
+ "duration": 415,
+ "organization": "your-org",
+ "applicationName": "your-app"
+ }
+
+
+### SDK Method
+
+ request(options, callback)
+
+### Parameters
+
++--------------------------------------+--------------------------------------+
+| Parameter | Description |
++======================================+======================================+
+| options | Object that contains the following |
+| | properties: |
+| | - endpoint: the collection to add |
+| | the entities to |
+| | - method: the HTTP method for the |
+| | request â in this case *POST* |
+| | - body: the body of the request. |
+| | In this case, a JSON-formatted |
+| | set of objects containing entity |
+| | properties. |
++--------------------------------------+--------------------------------------+
+| callback | Callback function |
++--------------------------------------+--------------------------------------+
+
+Creating an entity with sub-properties
+--------------------------------------
+
+Any valid JSON object can be stored in an entity, regardless of the
+level of complexity, including sub-properties. For example, suppose you
+have an 'items' collection that contains an entity named 'milk'. You
+might store the different varieties of milk as sub-properties of a
+'varieties' property:
+
+ {
+ "type" : "item"
+ "name" : "milk"
+ "varieties" : [ {
+ "name" : "1%",
+ "price" : "3.25",
+ "sku" : "0393847575533445"
+ }, {
+ "name" : "whole",
+ "price" : "3.85",
+ "sku" : "0393394956788445"
+ }, {
+ "name" : "skim",
+ "price" : "4.00",
+ "sku" : "0390299933488445"
+ } ]
+ }
+
+
+The following examples show how to create a new entity that contains an
+entity with sub-properties.
+
+#### Updating sub-properties
+
+An array of sub-properties is treated as a single object in App
+Services. This means that sub-properties cannot be updated atomically.
+All sub-properties of a given property must be updated as a set.
+
+For more on updating an existing sub-property, see [Updating Data
+Entities](/updating-data-entities#update_nested).
+
+- [cURL](#curl_create_subproperties)
+- [iOS](#ios_create_subproperties)
+- [Android](#android_create_subproperties)
+- [JavaScript (HTML5)](#javascript_create_subproperties)
+- [Ruby](#ruby_create_subproperties)
+- [Node.js](#nodejs_create_subproperties)
+
+### Example Request/Response
+
+#### Request:
+
+ //Note the use of square brackets for specifying multiple nested objects
+ curl -X POST "https://api.usergrid.com/your-org/your-app/items" -d '{"varieties":[{"name":"1%","price" : "3.25", "sku" : "0393847575533445"},{"name" : "whole", "price" : "3.85", "sku" : "0393394956788445"}, {"name" : "skim", "price" : "4.00", "sku" : "0390299933488445"}]}'
+
+#### 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"
+ }
+
+### Request Syntax
+
+ curl -X POST https://api.usergrid.com/<org>/<app>/<collection>/ -d '{"name" : <entity_name>, <property> : [{<sub_property>}, {<sub_property>}...]}'
+
+### Parameters
+
+ -----------------------------------------------------------------------------------------------------
+ Parameter Description
+ --------------- -------------------------------------------------------------------------------------
+ org Organization UUID or name
+
+ app Application UUID or name
+
+ collection The UUID or name of the collection to add the new entity to
+
+ entity\_name The name of the new entity
+
+ property The name of the entity property that will contain the nested JSON object or array
+
+ sub\_property Entity properties of the nested object, as a set of key-value pairs in the format:\
+ *{\<property\> : \<value\>, \<property\> : \<value\> ...}*
+ -----------------------------------------------------------------------------------------------------
+
+This example uses the [Apache Usergrid iOS SDK](/app-services-sdks#ios).
+
+### Example Request/Response
+
+#### 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"
+ }
+
+### SDK Method
+
+ (ApigeeClientResponse *)createEntity:(NSDictionary *)newEntity
+
+### Parameters
+
+ Parameter Description
+ ----------- ----------------------------------------------------------------
+ newEntity NSMutableDictionary object that contains the entity properties
+
+This example uses the [Apache Usergrid Android
+SDK](/app-services-sdks#android).
+
+### Example Request/Response
+
+#### Request:
+
+ //Create client entity
+ String ORGNAME = "your-org";
+ String APPNAME = "your-app";
+
+ ApigeeClient apigeeClient = new ApigeeClient(ORGNAME,APPNAME,this.getBaseContext());
+ DataClient client = apigeeClient.getDataClient();
+
+ //Create hashmap object for the properties of the new 'item' entity
+ Map<String, Object> properties = new HashMap<String, Object>();
+
+ //Create hashmap object for the each nested 'variety' object
+ Map<String, Object> variety_1 = new HashMap<String, Object>();
+ Map<String, Object> variety_2 = new HashMap<String, Object>();
+ Map<String, Object> variety_3 = new HashMap<String, Object>();
+
+ //Add properties for each nested object
+ variety_1.put("name","1%");
+ variety_1.put("price","3.25");
+ variety_1.put("sku","0393847575533445");
+
+ variety_2.put("name","whole");
+ variety_2.put("price","3.85");
+ variety_2.put("sku","0393394956788445");
+
+ variety_3.put("name","skim");
+ variety_3.put("price","4.00");
+ variety_3.put("sku","0390299933488445");
+
+ //Create an ArrayList of the 'variety' objects
+ ArrayList<Map<String, Object>> variety_list = new ArrayList<Map<String, Object>>();
+ variety_list .add(variety_1);
+ variety_list .add(variety_2);
+ variety_list .add(variety_3);
+
+ //Add the required properties for the 'item' entity
+ properties.put("name", "milk");
+ properties.put("type", "item");
+
+ //Add 'variety_list' as the value of the 'varieties' property
+ properties.put("varieties", variety_list);
+
+ //call createEntityAsync to initiate the asynchronous API call
+ dataClient.createEntityAsync(properties, new ApiResponseCallback() {
+
+ //If createEntityAsync fails, catch the error
+ @Override
+ public void onException(Exception e) {
+ // Error
+ }
+
+ //If createEntityAsync is successful, handle the response object
+ @Override
+ public void onResponse(ApiResponse response) {
+ try {
+ if (response != null) {
+ // Success
+ }
+ } catch (Exception e) { //The API request returned an error
+ // Fail
+ }
+ }
+ });
+
+
+#### Response:
+
+ {
+ "action":"post",
+ "application":"f34f4222-a166-11e2-a7f7-02e81adcf3d0",
+ "entities":[{
+ "Client":{
+ "accessToken":null,
+ "apiUrl":"http://api.usergrid.com",
+ "applicationId":"your-app",
+ "clientId":null,
+ "clientSecret":null,
+ "currentOrganization":null,
+ "loggedInUser":null,
+ "organizationId":"your-org"
+ },
+ "type":"item",
+ "uuid":"fd29157a-e980-11e2-afcc-652a12f1ce72",
+ "created":1373475098695,
+ "modified":1373475098695,
+ "metadata":{
+ "path":"/items/fd29157a-e980-11e2-afcc-652a12f1ce72"
+ }
+ }],
+
+ "params":{},
+ "path":"/items",
+ "rawResponse":"{
+ "action" : "post",
+ "application" : "f34f4222-a166-11e2-a7f7-02e81adcf3d0",
+ "params" : { },
+ "path" : "/items",
+ "uri" : "http://api.usergrid.com/your-org/your-app/items",
+ "entities" : [ {
+ "uuid" : "fd29157a-e980-11e2-afcc-652a12f1ce72",
+ "type" : "item",
+ "created" : 1373475098695,
+ "modified" : 1373475098695,
+ "metadata" : {
+ "path" : "/items/fd29157a-e980-11e2-afcc-652a12f1ce72"
+ }
+ "varieties": [
+ {
+ "sku": "0393847575533445",
+ "price": "3.25",
+ "name": "1%"
+ },
+ {
+ "sku": "0393394956788445",
+ "price": "3.85",
+ "name": "whole"
+ },
+ {
+ "sku": "0390299933488445",
+ "price": "4.00",
+ "name": "skim"
+ }
+ ]
+ } ],
+ "timestamp" : 1373475098689,
+ "duration" : 24,
+ "organization" : "your-org",
+ "applicationName" : "your-app"
+ }",
+ "uri":"http://api.usergrid.com/your-org/your-app/items",
+ "timestamp":1373475098689,
+ "entityCount":1,
+ "firstEntity":{
+ "Client":{
+ "accessToken":null,
+ "apiUrl":"http://api.usergrid.com",
+ "applicationId":"your-app",
+ "clientId":null,
+ "clientSecret":null,
+ "currentOrganization":null,
+ "loggedInUser":null,
+ "organizationId":"your-org"
+ },
+ "type":"item",
+ "uuid":"fd29157a-e980-11e2-afcc-652a12f1ce72",
+ "created":1373475098695,
+ "modified":1373475098695,
+ "metadata":{
+ "path":"/items/fd29157a-e980-11e2-afcc-652a12f1ce72"
+ }
+ },
+ "lastEntity":{
+ "Client":{
+ "accessToken":null,
+ "apiUrl":"http://api.usergrid.com",
+ "applicationId":"your-app",
+ "clientId":null,
+ "clientSecret":null,
+ "currentOrganization":null,
+ "loggedInUser":null,
+ "organizationId":"your-org"
+ },
+ "type":"item",
+ "uuid":"fd29157a-e980-11e2-afcc-652a12f1ce72",
+ "created":1373475098695,
+ "modified":1373475098695,
+ "metadata":{
+ "path":"/items/fd29157a-e980-11e2-afcc-652a12f1ce72"
+ }
+ },
+ "organization":"your-org",
+ "duration":24,
+ "applicationName":"your-app"
+ }
+
+
+### SDK Method
+
+Asynchronous:
+
+ createEntityAsync(Map<String, Object> properties, ApiResponseCallback callback)
+
+Synchronous:
+
+ ApiResponse createEntity(Map<String, Object> properties)
+
+### Parameters
+
+ Parameter Description
+ ------------ ---------------------------------------------
+ properties Object that contains the entity properties
+ callback Callback function (asynchronous calls only)
+
+This example uses the [Apache Usergrid JavaScript (HTML5)
+SDK](/app-services-sdks#javascript).
+
+### Example Request/Response
+
+#### Request:
+
+ //Create a client object with your organization name and application name.
+ var dataClient = new Usergrid.Client({
+ orgName:'your-org',
+ appName:'your-app'
+ });
+
+
+ var options = {
+ method:'POST',
+ endpoint:'items',
+ body:{
+ name:'milk',
+ "varieties" : [
+
+ {
+ "name" : "1%",
+ "price" : "3.25",
+ "sku" : "0393847575533445"
+ },
+ {
+ "name" : "whole",
+ "price" : "3.85",
+ "sku" : "0393394956788445"
+ },
+ {
+ "name" : "skim",
+ "price" : "4.00",
+ "sku" : "0390299933488445"
+ }
+ ]
+ }
+ };
+
+ client.createEntity(options, function (error, cat) {
+
+ if (error) {
+ //error
+ } else {
+ //success
+ }
+ });
+
+
+#### Response:
+
+ Object {action: "post", application: "f34f4222-a166-11e2-a7f7-02e81adcf3d0", params: Object, path: "/items", uri: "http://api.usergrid.com/your-org/your-app/items"â¦}
+ action: "post"
+ application: "f34f4222-a166-11e2-a7f7-02e8js76g3d0" //your Apache Usergrid application uuid
+ applicationName: "your-app"
+ duration: 315
+ entities: Array[1] //array of entities successfully created
+ 0: Object //entity 1
+ created: 1374099532148
+ metadata: Object
+ modified: 1374099532148
+ name: "milk"
+ price: "3.25"
+ type: "item"
+ uuid: "dc80834a-ef2e-11e2-8a77-cf8d4c2dbd49"
+ varieties: Array[3] //array of variety objects from variety_list
+ 0: Object
+ sku: "0393847575533445"
+ name: "1%"
+ price: "3.25"
+ 1: Object
+ sku: "0393394956788445"
+ name: "whole"
+ price: "3.85"
+ 2: Object
+ sku: "0390299933488445"
+ name: "skim"
+ price: "4.00"
+ length: 3
+ organization: "your-org"
+ params: Object
+ __proto__: Object
+ path: "/items"
+ timestamp: 1374099532139
+ uri: "http://api.usergrid.com/your-org/your-app/items"
+
+
+### SDK Method
+
+ request(options, callback)
+
+### Parameters
+
++--------------------------------------+--------------------------------------+
+| Parameter | Description |
++======================================+======================================+
+| options | Object that contains the following |
+| | properties: |
+| | - endpoint: the collection to add |
+| | the entities to |
+| | - method: the HTTP method for the |
+| | request â in this case *POST* |
+| | - body: the body of the request. |
+| | In this case, a JSON-formatted |
+| | set of objects containing entity |
+| | properties. |
++--------------------------------------+--------------------------------------+
+| callback | Callback function |
++--------------------------------------+--------------------------------------+
+
+This example uses the [Apache Usergrid RubyGem](/app-services-sdks#ruby).
+
+### Example Request/Response
+
+#### Request:
+
+
+ #Create a client object
+ usergrid_api = 'https://api.usergrid.com'
+ organization = 'your-org'
+ application = 'your-app'
+
+ client = Usergrid::Application.new "#{usergrid_api}/#{organization}/#{application}"
+
+ properties = {
+ name:'milk',
+ varieties:[{
+ name:'1%',
+ price:'3.25',
+ sku:'0393847575533445'
+ },{
+ name:'whole',
+ price:'3.85',
+ sku:'0393394956788445'
+ },{
+ name:'skim',
+ price:'4.00',
+ sku:'0390299933488445'
+ }]
+ }
+
+ begin
+ # Call create_entity to initiate the API call
+ # and save the response
+ response = client.create_entity 'item', #{properties}
+ new_item=response.entity
+ rescue
+ #fail
+ end
+
+
+#### 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"
+ }
+
+### SDK Method
+
+ create_entity(type, properties)
+
+### Properties
+
+ Parameter Description
+ ------------ --------------------------------------------
+ type Entity type to create
+ properties Object that contains the entity properties
+
+The example uses the [Apache Usergrid Node.js
+module](/app-services-sdks#nodejs).
+
+### Example Request/Response
+
+#### Request:
+
+ //Create a client object
+ var dataClient = new Usergrid.client({
+ orgName:'your-org',
+ appName:'your-app'
+ });
+
+ var options = {
+ method:'POST',
+ endpoint:'items',
+ body:{
+ name:'milk',
+ varieties : [
+
+ {
+ name : "1%",
+ price : "3.25",
+ sku : "0393847575533445"
+ },
+ {
+ name : "whole",
+ price : "3.85",
+ sku : "0393394956788445"
+ },
+ {
+ name : "skim",
+ price : "4.00",
+ sku : "0390299933488445"
+ }
+ ]
+ }
+ };
+
+ client.createEntity(options, function (error, cat) {
+
+ if (error) {
+ //error
+ } else {
+ //success
+ }
+ });
+
+
+#### Response:
+
+ { action: 'post',
+ application: 'f34f4222-a166-11e2-a7f7-02e81adcf3d0',
+ params: {},
+ path: '/items',
+ uri: 'http://api.usergrid.com/your-org/your-app/items',
+ entities:
+ [ { uuid: 'b3aad0a4-f322-11e2-a9c1-999e12039f87',
+ type: 'item',
+ name: 'milk',
+ created: 1374534114329,
+ modified: 1374534114329,
+ metadata: [Object],
+ varieties: [Object] } ],
+ timestamp: 1374534114326,
+ duration: 109,
+ organization: 'your-org',
+ applicationName: 'your-app' }
+
+
+### SDK Method
+
+ createEntity(properties, callback)
+
+### Parameters
+
+ Parameter Description
+ ------------ --------------------------------------------
+ properties Object that contains the entity properties
+ callback Callback function
+
+Add new comment
+---------------
+
+Your name
+
+Email
+
+Provide your email address if you wish to be contacted offline about
+your comment.\
+We will not display your email address as part of your comment.
+
+Comment \*
+
+We'd love your feedback and perspective! Please be as specific as
+possible.
+
+Word verification \*
+
+![Type the characters you see in this
+picture.](http://173.193.242.189:80/v1/captcha/131019b0bb7096f3fa.png)
+([verify using audio](#))
+
+Type the characters you see in the picture above; if you can't read
+them, submit the form and a new image will be generated. Not case
+sensitive.
Added: incubator/usergrid/site/content/docs/creating-new-application-admin-console.md
URL: http://svn.apache.org/viewvc/incubator/usergrid/site/content/docs/creating-new-application-admin-console.md?rev=1543106&view=auto
==============================================================================
--- incubator/usergrid/site/content/docs/creating-new-application-admin-console.md (added)
+++ incubator/usergrid/site/content/docs/creating-new-application-admin-console.md Mon Nov 18 18:51:18 2013
@@ -0,0 +1,55 @@
+---
+title: Creating a New Application with the Admin Console
+category: docs
+layout: docs
+---
+
+Creating a New Application with the Admin Console
+=================================================
+
+You can use the admin portal to create Apache Usergrid applications. An App
+Services application represents the data associated with your app.
+Through an application, you handle the entities associated with your
+app, including users, devices, events, and so on.
+
+> For more about how data in Apache Usergrid fits together, see [App
+> Services Data model](/app-services-data-model-1).
+
+Conceptually speaking, an application is like a database. You can create
+multiple applications within your Apache Usergrid organization.Â
+
+Â
+
+Youâll typically have one Apache Usergrid application for each of your
+apps. But you might want to create different applications representing
+sandbox, development, and production instances of your app.
+
+To create a new application with the admin console:
+
+1. In the admin console, from the dropdown menu at the far top left,
+ select the organization to which you will add the new application.
+2. Click the **ADD NEW APP** button, located at the top of the screen,
+ next to the application drop-down.
+3. In the dialog box, enter a new application name, then click the
+ **Create** button.
+4. Your new application will automatically be selected in the
+ applications drop-down menu.
+
+### Next Steps
+
+After you've created a new application, finish up by thinking about the
+following:
+
+- Have you taken steps to make your application secure?
+
+ If this is going to be a production application used by an app
+ publicly, be sure to configure security roles that provide only the
+ level of access your users will need. (You should never use a
+ sandbox application as a public database. A sandbox is for
+ experimenting with example data.)
+
+ For more on security, see [Securing your app](/securing-your-app).
+ For more about sandbox applications, see [Using a Sandbox
+ Application](/using-sandbox-application).
+
+
Added: incubator/usergrid/site/content/docs/data-model.md
URL: http://svn.apache.org/viewvc/incubator/usergrid/site/content/docs/data-model.md?rev=1543106&view=auto
==============================================================================
--- incubator/usergrid/site/content/docs/data-model.md (added)
+++ incubator/usergrid/site/content/docs/data-model.md Mon Nov 18 18:51:18 2013
@@ -0,0 +1,146 @@
+---
+title: Apache Usergrid Data model
+category: docs
+layout: docs
+---
+
+Apache Usergrid Data model
+==========================
+
+Apache Usergrid models the data for your apps as application-specific
+collections of data entities managed within an organization. The
+following is an overview of the component hierarchy that makes up the
+Apache Usergrid data model, and is intended to help you understand how data
+is stored, managed and accessed in Apache Usergrid.
+
+Organizations
+-------------
+
+An *organization* contains one or more applications, and represents
+administrator-level access to Apache Usergrid. Multiple Apache Usergrid
+accounts may be given administrator access to an organization. App
+Services accounts can also be members of multiple organizations.
+
+An organization with the same name as your username is automatically
+created for you when you sign up for Apache Usergrid. By default, you are
+assigned as the administrator of this organization.
+
+Applications
+------------
+
+In Apache Usergrid, you can create one or more *applications* within an
+organization. Applications represent an instance of application data
+associated with an app, and you may create as many applications as you
+wish. This allows you to utilize the Apache Usergrid backend in a way that
+corresponds to your development process. For example, you might create
+separate applications for development and production instances of your
+app. By default, all organization have a sandbox application (see [Using
+a Sandbox Application](/using-sandbox-application) for important
+information regarding the default sandbox application).
+
+Each application provides the infrastructure for storing, retrieving,
+updating and deleting the entities and collections associated with a
+specific app instance.
+
+Collections
+-----------
+
+Apache Usergrid stores all data entities in uniquely-named *collections*.
+Collections are created automatically by Apache Usergrid for every entity
+type, including custom entities, and are named using the plural form of
+the entity type they store. For example, all user entities are stored in
+the /users collection, and all device entities in the /devices
+collection. An entity can belong to only one collection.
+
+Currently, collections cannot be renamed or deleted; however, all of the
+data entities in a collection can be updated or deleted.
+
+Entities
+--------
+
+An *entity* represents a basic, JSON-formatted data object that is used
+by your app, such as a user, device, event or asset. Unlike records in
+conventional database tables, which have a very rigid schema that
+defines what they can store and how they can be related to each other,
+Apache Usergrid entities are very flexible. This makes Apache Usergrid a
+powerful solution for managing data for modern applications, where
+people, places, and content often need to be associated in a way that is
+most appropriate from a user perspective.
+
+Here is a simple example of an entity:
+
+ {
+ "uuid" : "5c0c1789-d503-11e1-b36a-12313b01d5c1",
+ "type" : "user",
+ "created" : 1343074620374,
+ "modified" : 1355442681264,
+ "username" : "john.doe",
+ "email" : "jdoe57@mail.com",
+ "name" : "John Doe"
+ }
+
+### Default entities
+
+The following entity types are predefined in Apache Usergrid. For more
+details, see [Default Data Entities](/default-data-entities).
+
+- user
+- group
+- role
+- application
+- activity
+- device
+- asset
+- folder
+- event
+- notifier
+- notification
+- receipt
+
+Properties
+----------
+
+A data entity is a set of *properties*, which can each contain any
+JSON-representable value, including a nested JSON document. All entities
+have predefined properties, but you are free to define any number of
+custom properties for any entity. Default properties require specific
+data types for validation purposes, while custom properties can be any
+JSON data type. Most predefined and all application-defined entity
+properties are indexed, allowing you to query collections quickly and
+easily.
+
+Individual or multiple properties can be updated in a single operation;
+however, partial updating of nested JSON documents is not supported.
+This means that all properties of a nested document must be provided in
+a PUT request for the update of the nested document to be processed,
+even if the some of the values have not changed.
+
+### Default properties
+
+At a minimum, each entity is defined by two properties, both of which
+are strings: type and UUID. The entity 'type' is the singular form of
+the collection the entity is stored in. For example, an entity in the
+'users' collection has an entity type of 'user'. The entity 'UUID' is an
+immutable universally unique identifier, which can be used to reference
+the entity. A UUID is automatically generated by Apache Usergrid for every
+entity when it is created. You can also create custom entities and
+entity properties; however, Apache Usergrid reserves certain entity types
+with pre-defined properties by default. For a complete list of reserved
+entities and properties, see [Default Data
+Entities](/default-data-entities).
+
+When you access the system via the API, youâll always provide your
+organization UUID or name, application UUID or name, and typically the
+UUID or name of the entity youâre modifying or retrieving.
+
+All entities have the following default properties:
+
+ Property Type Description
+ ---------- -------- -------------------------------------------------------------------------------------------------------------------------------
+ uuid UUID Entity unique id
+ type string entity type (for example, user)
+ created long [UTC timestamp](http://en.wikipedia.org/wiki/Coordinated_Universal_Time) in milliseconds of when the entity was created
+ modified long [UTC timestamp](http://en.wikipedia.org/wiki/Coordinated_Universal_Time) in milliseconds of when the entity was last modified
+
+Dynamic entities also have an optional name property that is a string
+identifier.