You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2015/07/29 18:06:33 UTC

[2/9] incubator-usergrid git commit: Continuing the conversion of Usegrid documentation to Markdown.

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/installation/deploy-local.md
----------------------------------------------------------------------
diff --git a/docs/installation/deploy-local.md b/docs/installation/deploy-local.md
new file mode 100644
index 0000000..0b417da
--- /dev/null
+++ b/docs/installation/deploy-local.md
@@ -0,0 +1,179 @@
+# Deploying to local Tomcat & Cassandra
+
+This is a guide that explains how to install and run Usergrid using stock Tomcat and Cassandra on a single computer.
+
+NOTE: running Cassandra on a single computer is something you should do ONLY for testing purposes. You don't want to run one node in production even just to start out. To get the benefit of Cassandra's architecture, which is designed to support linear scalability. You should be running a Cassandra cluster with at least three nodes. 
+
+For more information:
+
+* [Cassandra FAQ: Can I Start With a Single Node?](http://planetcassandra.org/blog/post/cassandra-faq-can-i-start-with-a-single-node/)
+* [Why don't you start off with a “single & small” Cassandra server](http://stackoverflow.com/questions/18462530/why-dont-you-start-off-with-a-single-small-cassandra-server-as-you-usually)
+
+## Requirements
+
+* [JDK 1.7](http://www.oracle.com/technetwork/java/javase/downloads/index.html)
+* [Maven](http://maven.apache.org/)
+
+## Download
+
+Use GitHub to clone the [apache/incubator-usergrid](https://github.com/apache/incubator-usergrid) repo.
+
+Or you can start by [downloading our latest code](https://github.com/apache/incubator-usergrid/archive/master.zip) and extract it.
+
+## Building
+
+From the command line, navigate to `stack` directory and type the following:
+
+    mvn clean package -DskipTests=true
+
+Once you are done the Usergrid application will be package as a Java EE WAR file at the location __stack/rest/target/ROOT.war__.
+
+Install and configure Cassandra
+---
+
+Install Cassandra, don't edit configuration files as we just want default values for this simple setup. Here are the [instructions for installing Cassandra](http://wiki.apache.org/cassandra/GettingStarted)
+
+Install and configure Tomcat
+---
+
+Follow instructions, don't edit configuration files as we just want default values for this simple setup. Here are the [instructions for installing Tomcat 7](http://tomcat.apache.org/tomcat-7.0-doc/setup.html)
+
+Add Usergrid WAR to Tomcat
+---
+
+Remove the existing `tomcat/webapps/ROOT` directory. 
+
+Place the Usergrid `ROOT.war` file into the `tomcat/webapps` directory
+
+Add Usergrid configuration file to Tomcat
+---
+
+Create a ____usergrid-custom.properties____ file and place it in Tomcat's __lib__ directory. You can find an example properties file below  that should work well for a local Tomcat & Cassandra setup. You will probably only need to change the properties below to use your email address and preferred password for the install.
+
+
+    usergrid.sysadmin.login.allowed=true
+    usergrid.sysadmin.login.name=superuser
+    usergrid.sysadmin.login.password=pw123
+    usergrid.sysadmin.email=me@example.com
+    usergrid.sysadmin.login.email=myself@example.com
+    usergrid.management.mailer=Myself<my...@example.com>
+    usergrid.test-account.admin-user.email=myself@example.com
+    usergrid.test-account.admin-user.password=test
+
+Run Usergrid Database & Super User Setup
+---
+
+Start Tomcat and use your web browser to visit the URLs below. While you do this you might want to watch the logs under tomcat/logs for clues, just in case anything goes wrong. 
+
+Database setup URL - [http://localhost:8080/system/database/setup](http://localhost:8080/system/database/setup)
+
+When prompted to login use the sysadmin credentials that you specified in your __usergrid-custom.properties__ file. Based on the example above that would be superuser and pw123. If the operation is successful you should a message like the one below in your browser. If not, check your logs for clues about what went wrong.
+
+    {
+      "action" : "cassandra setup",
+      "status" : "ok",
+      "timestamp" : 1379424622947,
+      "duration" : 76
+    }
+
+Superuser setup URL - [http://localhost:8080/system/superuser/setup](http://localhost:8080/system/superuser/setup)
+
+You should not be prompted for login because you already logged into for the Database Setup. If setup works, you should see a message like this:
+
+    {
+      "action" : "superuser setup",
+      "status" : "ok",
+      "timestamp" : 1379424667936,
+      "duration" : 2
+    }
+
+Build the Usergrid Console
+---
+The Usergrid Console is an admin interface written in JavaScript that connects to your running Usergrid instance. For evaluation purposes, you can run it within Tomcat. Build it by following the steps [here](https://github.com/apache/incubator-usergrid/blob/master/portal/README.md). Once built, copy the directory _portal/build/usergrid-portal_ to _tomcat/webapps_.
+
+
+Login to the Usergrid Console & get started
+---
+You should now be able to login to the Usergrid console and start configuring applications, users and more. 
+
+You can use an static version of the portal to get started:
+
+http://localhost:8080/usergrid-portal/(http://localhost:8080/usergrid-portal)
+
+
+Example __usergrid-custom.properties__ file
+---
+Here's a complete example properties file to get you started.
+
+    # Minimal Usergrid configuration properties for local Tomcat and Cassandra 
+    #
+    # The cassandra configuration options. 
+
+    # The cassandra host to use
+    cassandra.url=localhost:9160
+
+    # if your cassandra instance requires username/password
+    cassandra.username=someuser
+    cassandra.password=somepassword
+    
+    # The strategy to use when creating the keyspace. This is the default. 
+    # We recommend creating the keyspace with this default, then editing it 
+    # via the cassandra CLI to meet the client's needs.
+    cassandra.keyspace.strategy=org.apache.cassandra.locator.SimpleStrategy
+     
+    # The default replication factor for the simple strategy. Again, leave the 
+    # default, create the app, then use the cassandra cli to set the replication 
+    # factor options. This can become complicated with different topologies and 
+    # is more a Cassandra administration issue than a UG issue.
+    cassandra.keyspace.strategy.options.replication_factor=1
+     
+    ######################################################
+    # Custom mail transport. Not usually used for local testing
+
+    #mail.transport.protocol=smtps
+    #mail.smtps.host=email-smtp.us-east-1.amazonaws.com
+    #mail.smtps.port=465
+    #mail.smtps.auth=true
+    #mail.smtps.quitwait=false
+    #mail.smtps.username=
+    #mail.smtps.password=
+
+    ######################################################
+    # Admin and test user setup (change these to be their super user
+
+    usergrid.sysadmin.login.name=superuser
+    usergrid.sysadmin.login.email=myself@example.com     <--- Change this
+    usergrid.sysadmin.login.password=pw123               <--- Change this
+    usergrid.sysadmin.login.allowed=true
+    usergrid.sysadmin.email=myself@example.com           <--- Change this
+    
+    # Enable or disable this to require superadmin approval of users
+    usergrid.sysadmin.approve.users=false
+
+    ######################################################
+    # Auto-confirm and sign-up notifications settings
+
+    usergrid.management.admin_users_require_confirmation=false
+    usergrid.management.admin_users_require_activation=false
+    usergrid.management.organizations_require_activation=false
+    usergrid.management.notify_sysadmin_of_new_organizations=false
+    usergrid.management.notify_sysadmin_of_new_admin_users=false
+
+    ######################################################
+    # URLs
+    # Redirect path when request come in for TLD
+
+    usergrid.redirect_root=https://localhost:8080/status
+    usergrid.view.management.organizations.organization.activate=https://localhost:8080/accounts/welcome
+    usergrid.view.management.organizations.organization.confirm=https://localhost:8080/accounts/welcome
+    usergrid.view.management.users.user.activate=https://localhost:8080/accounts/welcome
+    usergrid.view.management.users.user.confirm=https://localhost:8080/accounts/welcome
+    usergrid.organization.activation.url=https://localhost:8080/management/organizations/%s/activate
+    usergrid.admin.activation.url=https://localhost:8080/management/users/%s/activate
+    usergrid.admin.resetpw.url=https://localhost:8080/management/users/%s/resetpw
+    usergrid.admin.confirmation.url=https://localhost:8080/management/users/%s/confirm
+    usergrid.user.activation.url=https://localhost:8080%s/%s/users/%s/activate
+    usergrid.user.confirmation.url=https://localhost:8080/%s/%s/users/%s/confirm
+    usergrid.user.resetpw.url=https://localhost:8080/%s/%s/users/%s/resetpw
+ 
+ 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/installation/get-2.0-running-locally.md
----------------------------------------------------------------------
diff --git a/docs/installation/get-2.0-running-locally.md b/docs/installation/get-2.0-running-locally.md
new file mode 100644
index 0000000..f1ff71c
--- /dev/null
+++ b/docs/installation/get-2.0-running-locally.md
@@ -0,0 +1,165 @@
+# Get 2.0 Running Locally
+
+## Requirements
+
+* [JDK 1.8](http://www.oracle.com/technetwork/java/javase/downloads/index.html)
+* [Maven 3.2+](http://maven.apache.org/)
+* [Tomcat 7+](https://tomcat.apache.org/download-70.cgi)
+* [Cassandra 1.2.1*](http://cassandra.apache.org/download/)
+* [ElasticSearch 1.4+](https://www.elastic.co/downloads/elasticsearch) 
+* [Usergrid 2.0](https://github.com/apache/incubator-usergrid/tree/two-dot-o)
+
+##Running
+
+
+1. Start up Cassandra [^1]
+	a. To do this you can navigate to the cassandra folder and run ```./bin/cassandra ```
+2. Start up Elasticsearch
+	a. To do this you can navigate to the folder where you extracted elasticsearch and run ```/bin/elasticsearch``` 	
+
+###Running Usergrid	
+
+####Build The Java Sdk
+
+1. Navigate to where you cloned the usergrid repo
+2. Navigate to the ```sdks/java``` directory
+3. Run ```mvn clean install```
+
+####Build The Stack Itself
+
+1. Navigate to the ```stack``` directory.
+2. Run ```mvn clean install -DskipTests```
+3. This will generate a war at ```rest/target/ROOT.war```
+
+####Deploying the Stack Locally
+1. Take this war and deploy it on downloaded tomcat.
+1. In the lib directory of the tomcat you must also put usergrid-deployment.properties. ( An example file is provided below)
+1. Start up Tomcat
+	a. To do this you can navigate to folder where Tomcat is install and run ```./bin/catalina.sh start```
+1. Go to a web browser and input the following to initilizing the database ```localhost:8080/system/database/setup```. 
+	a. The credentials it asks for are the admin credentialls and password as defined in the usergrid-deployment.properties. 
+	b. You can also do a curl call with basic auth to automatically authenticate the call instead of using the web browser.
+1. Then using the same steps as before call ```localhost:8080/system/superuser/setup```
+
+The stack is now ready to be queried against, but to get the most out of it you'll need to initilize and use our portal!
+
+####Running The Portal Locally
+#####Requirments 
+[nodejs 0.10+](https://nodejs.org/download/) 
+
+1. Make sure you've installed node.js above. Any version above .10 or .10 should work fine.
+2. Navigate to ```incubator-usergrid/portal```.
+3. Open config.js and make sure the override URL is pointing to your local tomcat.
+4. Now in the portal folder run the following command ```./build.sh dev``` 
+5. The portal should automatically open ready for use!
+
+Now usergrid is fully ready to use! Feel free to query against it or use it however you like!
+
+
+
+Example __usergrid-deployment.properties__ file
+---
+```
+# core persistence properties
+
+cassandra.embedded=false
+cassandra.version=1.2.18
+cassandra.timeout=2000
+
+collections.keyspace=Usergrid_Applications
+collections.keyspace.strategy.options=replication_factor:1
+collections.keyspace.strategy.class=org.apache.cassandra.locator.SimpleStrategy
+
+collection.stage.transient.timeout=60
+
+hystrix.threadpool.graph_user.coreSize=40
+hystrix.threadpool.graph_async.coreSize=40
+
+elasticsearch.embedded=false
+elasticsearch.cluster_name=elasticsearch
+elasticsearch.index_prefix=usergrid
+elasticsearch.hosts=127.0.0.1
+elasticsearch.port=9300
+
+elasticsearch.force_refresh=true
+
+index.query.limit.default=100
+
+# Max Cassandra connections, applies to both CP and EM
+cassandra.connections=600
+
+######################################################
+# Minimal Usergrid configuration properties for local Tomcat and Cassandra 
+#
+
+cassandra.url=127.0.0.1:9160
+
+cassandra.keyspace.strategy=org.apache.cassandra.locator.SimpleStrategy
+cassandra.keyspace.strategy.options.replication_factor=1
+
+######################################################
+# Custom mail transport 
+
+mail.transport.protocol=smtps
+mail.smtps.host=smtp.gmail.com
+mail.smtps.port=465
+mail.smtps.auth=true
+mail.smtps.username=
+mail.smtps.password=
+mail.smtps.quitwait=false
+
+
+######################################################
+# Admin and test user setup
+
+usergrid.sysadmin.login.name=superuser
+usergrid.sysadmin.login.email=myself@example.com     <--- Change this
+usergrid.sysadmin.login.password=pwHERE               <--- Change this
+usergrid.sysadmin.login.allowed=true
+usergrid.sysadmin.email=myself@example.com           <--- Change this
+
+usergrid.sysadmin.approve.users=false
+usergrid.sysadmin.approve.organizations=false
+
+# Base mailer account - default for all outgoing messages
+usergrid.management.mailer=User <my...@example.com>    <--- Change this
+
+usergrid.setup-test-account=true
+
+usergrid.test-account.app=test-app
+usergrid.test-account.organization=test-organization
+usergrid.test-account.admin-user.username=test
+usergrid.test-account.admin-user.name=Test User
+usergrid.test-account.admin-user.email=myself@example.com    <---Change this
+usergrid.test-account.admin-user.password=test
+
+######################################################
+# Auto-confirm and sign-up notifications settings
+
+usergrid.management.admin_users_require_confirmation=false
+usergrid.management.admin_users_require_activation=false
+
+usergrid.management.organizations_require_activation=false
+usergrid.management.notify_sysadmin_of_new_organizations=true
+usergrid.management.notify_sysadmin_of_new_admin_users=true
+######################################################
+# URLs
+
+# Redirect path when request come in for TLD
+usergrid.redirect_root=http://localhost:8080/status
+
+usergrid.view.management.organizations.organization.activate=http://localhost:8080/accounts/welcome
+usergrid.view.management.organizations.organization.confirm=http://localhost:8080/accounts/welcome
+usergrid.view.management.users.user.activate=http://localhost:8080/accounts/welcome
+usergrid.view.management.users.user.confirm=http://localhost:8080/accounts/welcome
+
+usergrid.organization.activation.url=http://localhost:8080/management/organizations/%s/activate
+usergrid.admin.activation.url=http://localhost:8080/management/users/%s/activate
+usergrid.admin.resetpw.url=http://localhost:8080/management/users/%s/resetpw
+usergrid.admin.confirmation.url=http://localhost:8080/management/users/%s/confirm
+usergrid.user.activation.url=http://localhost:8080%s/%s/users/%s/activate
+usergrid.user.confirmation.url=http://localhost:8080/%s/%s/users/%s/confirm
+usergrid.user.resetpw.url=http://localhost:8080/%s/%s/users/%s/resetpw
+``` 
+
+[^1]: You can start up cassandra and elasticsearch in any order but for the sake of ordered lists I put Cassandra first. 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/installation/getting-up-and-running-locally.md
----------------------------------------------------------------------
diff --git a/docs/installation/getting-up-and-running-locally.md b/docs/installation/getting-up-and-running-locally.md
new file mode 100644
index 0000000..ba7ffcc
--- /dev/null
+++ b/docs/installation/getting-up-and-running-locally.md
@@ -0,0 +1,72 @@
+# Getting Up & Running Locally
+
+## Requirements
+
+* [JDK 1.7](http://www.oracle.com/technetwork/java/javase/downloads/index.html)
+* [Maven](http://maven.apache.org/)
+
+## Download
+
+### Download2
+
+Start by [downloading our latest code](https://github.com/apache/incubator-usergrid/archive/master.zip) and extract it.
+
+#### Building 3
+
+From the command line, navigate to stack directory and type the following:
+
+    mvn clean install -DskipTests=true
+
+## Running
+
+Usergrid-core contains the persistence layer and shared utilities for powering the Usergrid service. The services layer is contained in usergrid-services and exposes a higher-level API that's used by the usergrid-rest web services tier.
+
+You can run Usergrid from the command-line from the
+jar in the usergrid/standalone project:
+
+    cd launcher; java -jar target/usergrid-launcher-*.jar
+
+After startup, your instance will be available on localhost, port 8080.
+To check it’s running properly, you can try loading our status page:
+
+    curl http://localhost:8080/status
+
+You can also run it as a webapp in Tomcat, by deploying the ROOT.war file generated in the usergrid/rest project.
+
+## Getting Started with the HTTP API
+
+Start by creating an Organization. It’s the top-level structure in Usergrid:
+all Apps and Administrators must belong to an Organization. Here’s how you create one:
+
+    curl -X POST  \
+         -d 'organization=myfirstorg&username=myadmin&name=Admin&email=admin@example.com&password=password' \
+         http://localhost:8080/management/organizations
+
+You can see that creating an Organization creates an Administrator in the process. Let’s authenticate as him:
+
+    curl 'http://localhost:8080/management/token?grant_type=password&username=myadmin&password=password'
+
+This will return an access\_token. We’ll use this to authenticate the next two calls.
+Next, let’s create an Application:
+
+    curl -H "Authorization: Bearer [the management token from above]" \
+         -H "Content-Type: application/json" \
+         -X POST -d '{ "name":"myapp" }' \
+         http://localhost:8080/management/orgs/myfirstorg/apps
+
+… And a User for the Application:
+
+    curl -H "Authorization: Bearer [the management token from above]" \
+         -X POST "http://localhost:8080/myfirstorg/myapp/users" \
+         -d '{ "username":"myuser", "password":"mypassword", "email":"user@example.com" }'
+
+Let’s now generate an access token for this Application User:
+
+    curl 'http://localhost:8080/myfirstorg/myapp/token?grant_type=password&username=myuser&password=mypassword'
+
+This will also send back an access\_token, but limited in scope.
+Let’s use it to create a collection with some data in it:
+
+    curl -H "Authorization: Bearer [the user token]" \
+         -X POST -d '[ { "cat":"fluffy" }, { "fish": { "gold":2, "oscar":1 } } ]' \
+         http://localhost:8080/myfirstorg/myapp/pets

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/installation/upgrading.md
----------------------------------------------------------------------
diff --git a/docs/installation/upgrading.md b/docs/installation/upgrading.md
new file mode 100644
index 0000000..0df0935
--- /dev/null
+++ b/docs/installation/upgrading.md
@@ -0,0 +1,3 @@
+# Upgrading from Previous Versions
+
+If you built and used a previous version of Usergrid, that may be using a different schema, we have an easy built-in tool to audit your Cassandra column family structure and upgrade the dataset as necessary. Once you have pulled, built and launched the new version of Usergrid, just hit [http://localhost:8080/system/database/setup](http://localhost:8080/system/database/setup) to run the upgrade tool.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/introduction/async-vs-sync.md
----------------------------------------------------------------------
diff --git a/docs/introduction/async-vs-sync.md b/docs/introduction/async-vs-sync.md
new file mode 100644
index 0000000..064665a
--- /dev/null
+++ b/docs/introduction/async-vs-sync.md
@@ -0,0 +1,25 @@
+# Asynchronous vs. synchronous calls
+The Apigee SDKs work by making RESTful API calls from your application to the API. In some cases, both synchronous and asynchronous calls are supported for most methods, as in the case of the Apigee Android SDK, while in others only asynchronous calls are supported, as in the Apigee JavaScript SDK. The following is a brief explanation of synchronous vs. asynchronous API calls.
+
+## Synchronous
+If an API call is synchronous, it means that code execution will block (or wait) for the API call to return before continuing. This means that until a response is returned by the API, your application will not execute any further, which could be perceived by the user as latency or performance lag in your app. Making an API call synchronously can be beneficial, however, if there if code in your app that will only execute properly once the API response is received.
+
+## Asynchronous
+Asynchronous calls do not block (or wait) for the API call to return from the server. Execution continues on in your program, and when the call returns from the server, a "callback" function is executed. For example, in the following code using the Apigee JavScript SDK, the function called dogCreateCallback will be called when the create dog API call returns from the server. Meanwhile, execution will continue:
+
+    function dogCreateCallback(err, dog) {
+        alert('I will probably be called second');
+        if (err) {
+            //Error - Dog not created
+        } else {
+            //Success - Dog was created
+
+        }
+    }
+
+    client.createEntity({type:'dogs'}, dogCreateCallback);
+    alert('I will probably be called first');
+    
+The result of this is that we cannot guarantee the order of the two alert statements. Most likely, the alert right after the createEntity function call will be called first since the API call will take a second or so to complete.
+
+The important point is that program execution will continue, and asynchronously, the callback function will be called once program execution completes.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/introduction/data-model.md
----------------------------------------------------------------------
diff --git a/docs/introduction/data-model.md b/docs/introduction/data-model.md
new file mode 100644
index 0000000..67f7355
--- /dev/null
+++ b/docs/introduction/data-model.md
@@ -0,0 +1,76 @@
+# Usergrid Data model
+
+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 data model, and is intended to help you understand how data is stored, managed and accessed.
+
+## Organizations
+An organization contains one or more applications, and represents administrator-level access. Multiple accounts may be given administrator access to an organization. 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. By default, you are assigned as the administrator of this organization.
+
+## Applications
+In 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 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 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
+The BaaS stores all data entities in uniquely-named collections. Collections are created automatically 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 rigid schema that defines what they can store and how they can be related to each other, Usergrid entities are very flexible. This makes 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 Usergrid. For more details, see Default Data Entity Types.
+
+* 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 for every entity when it is created. You can also create custom entities and entity properties; however, Usergrid reserves certain entity types with pre-defined properties by default. For a complete list of reserved entities and properties, see Default Data Entity Types.
+
+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 in milliseconds of when the entity was created        |
++------------+--------+---------------------------------------------------------------------+
+| modified   | long   | UTC timestamp in milliseconds of when the entity was last modified  |
++------------+--------+---------------------------------------------------------------------+
+
+Custom entities also have an optional name property that is a string identifier.

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/introduction/usergrid-features.md
----------------------------------------------------------------------
diff --git a/docs/introduction/usergrid-features.md b/docs/introduction/usergrid-features.md
new file mode 100644
index 0000000..afb3bcb
--- /dev/null
+++ b/docs/introduction/usergrid-features.md
@@ -0,0 +1,81 @@
+# Usergrid Features
+
+Edge Developer Services includes a backend-as-a-service (BaaS) solution that provides developers with access to a flexible data store and enables you to quickly integrate valuable features into your app, including social graphs, user management, data storage, push notifications, performance monitoring, and more.
+
+Using Usergrid, you can set up your own cloud-based data platform in minutes instead of months – no server-side coding or back-end development needed. This allows your team to focus on developing the rich features and user experience that truly differentiate your app, rather than on the time-consuming details of implementing core back-end services and infrastructure.
+
+## Data storage & management
+
+### Application data
+
+At the core of Usergrid is a flexible platform that can store any type of application data, from simple records like a catalog of books to complex associations like user relationships. No matter what type of data drives your app, you can store it as collections of data entities and immediately perform complex queries or full-text searches on any field. You can also create custom entities with custom properties, giving you the ability to store data and context in a way that makes sense for your app.
+
+To learn more about entities and collections, see Usergrid Data model.
+
+For a complete list of the default data entities available, see Default Data Entity Types.
+
+### Files & assets
+
+Images, video, and audio are key components of a great app experience. With Usergrid, you can upload and retrieve binary objects from the same data store as the rest of your application data, eliminating the need to set up content delivery networks (CDNs) and easing implementation. We handle all the back-end details that keep your content quickly accessible.
+
+To learn more about files and asset storage, see Uploading files and assets .
+
+## Flexible data querying
+
+One of Usergrid' most powerful features is the ability to perform SQL-style queries and full-text searches on data entities, as well as their properties. This lets you quickly retrieve specific data entities based on multiple criteria, then utilize that data to power social features, target push notifications, perform user analysis, and more.
+
+Learn more about querying app data, see Data query overview.
+
+## Social
+
+### Entity relationships
+
+You can create relationships between data entities to help build features, improve user experience, and contextualize data. For example, you might associate a user with their devices to capture valuable geolocation data, create relationships between users to build social graphs, or implement popular features such as activity streams.
+
+To learn more about entity relationships, see Entity connections.
+
+### Activity streams
+
+A key aspect of social networking apps is the ability to provide and publish data streams of user actions, such as ongoing lists of comments, activities, and tweets. Usergrid simplifies management and routing of these data streams by providing an activity entity that is specifically designed to automatically create a relationship between activities and the user who created them.
+
+To learn more about activities and activity feeds, see Activity feeds.
+
+## User management
+
+### Registration and login
+
+You can easily add and manage users by providing the core services necessary to handle secure registration and log in, including OAuth 2.0-compliant client authentication. In addition, any number of default or custom data entities and properties can be associated with a user entity to create complete user profiles.
+
+To learn more about user management, see User.
+
+To learn more about authentication, see Authenticating users and application clients.
+
+### Roles & permissions
+
+Applications often require the ability to configure fine-grain control of user access to data, features and functionality. Usergrid solves the implementation details of user access with roles and permissions. Simply create roles that represent user types or access levels, such as Administrator, then assign the necessary permissions to that role. With a single API call, you can then associate your roles with any user or group of users.
+
+To learn more about user roles and permissions, see Managing access by defining permission rules.
+
+### Groups
+
+Groups are a flexible way to organize your users based on any number of criteria. For example, you might group users based on interests or location to more effectively deliver relevant content, target offers, or customize campaigns. You can also take advantage of the groups entity to enable group-based social networking activities, such as allowing your users to create private information feeds or circles of friends.
+
+To learn more about groups, see Working with group data.
+
+### Third-party authentication
+
+In addition to supporting user management and OAuth-based login for your app, Usergrid also makes it easy to integrate third-party authentication through such popular services as Facebook, Twitter and other OAuth-enabled accounts. Providing third-party sign-in can improve user experience, while increasing adoption, giving you access to valuable information from social networks and services.
+
+To learn more about using third-party sign-in, see Facebook sign in.
+
+## Geolocation
+
+The device entity allows you to capture geolocation data from your users' GPS-enabled devices to more effectively target campaigns, push notifications, offers and more. Geolocation also gives you an important data point for contextualizing and analyzing trends and user behavior.
+
+To learn more about geolocation, see Geolocation.
+
+## Push notifications
+
+Push notifications are the most effective way to engage your users with relevant content, and thanks to Usergrid, implementing them can be done in minutes. Simply register your app and your user's devices with a notification provider, such as Apple Push Notification Service or Google Cloud Messaging, then use the API BaaS notification entity to send millions of push notifications a month at no cost. When used in conjunction with queries of user and application data, push notifications become a powerful tool for leveraging user data, ensuring relevancy and driving engagement.
+
+To learn more about push notifications, see Push notifications overview.

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/organizations-admins.md
----------------------------------------------------------------------
diff --git a/docs/organizations-admins.md b/docs/organizations-admins.md
deleted file mode 100644
index 6886de3..0000000
--- a/docs/organizations-admins.md
+++ /dev/null
@@ -1,55 +0,0 @@
-Organizations & Admins
-==================================================
-
-.. toctree::
-	concepts/applications
-	concepts/events-and-counters
-	concepts/roles-and-permissions
-	concepts/relationships
-	concepts/collections
-	concepts/query-language
-	concepts/users-devices
-	concepts/groups
-	concepts/activity
-	concepts/assets
-
-Organizations
-             
-
-An organization represents the highest level of the Apache Usergrid data
-hierarchy. It contains applications (and the entities and collections
-they contain) and is associated with one or more administrators. An
-organization can be representative of a company, team, or project. It
-allows multiple applications  to be shared within the organization with
-other administrators.
-
-+----------------+----------+--------------------------------------------------------------------------------------+
-| Property       | Type     | Description                                                                          |
-+================+==========+======================================================================================+
-| uuid           | UUID     | Organization’s unique entity ID                                                      |
-+----------------+----------+--------------------------------------------------------------------------------------+
-| type           | string   | "organization"                                                                       |
-+----------------+----------+--------------------------------------------------------------------------------------+
-| created        | long     | `UNIX timestamp <http://en.wikipedia.org/wiki/Unix_time>`__ of entity creation       |
-+----------------+----------+--------------------------------------------------------------------------------------+
-| modified       | long     | `UNIX timestamp <http://en.wikipedia.org/wiki/Unix_time>`__ of entity modification   |
-+----------------+----------+--------------------------------------------------------------------------------------+
-| organization   | string   | The name of the organization.                                                        |
-+----------------+----------+--------------------------------------------------------------------------------------+
-| username       | string   | The username of the administrator.                                                   |
-+----------------+----------+--------------------------------------------------------------------------------------+
-| name           | string   | The name of the administrator.                                                       |
-+----------------+----------+--------------------------------------------------------------------------------------+
-| email          | string   | The email address of the administrator.                                              |
-+----------------+----------+--------------------------------------------------------------------------------------+
-| password       | string   | The password of the administrator. (create-only)                                     |
-+----------------+----------+--------------------------------------------------------------------------------------+
-
-Admins
-      
-
-An admin user has full access to perform any operation on all
-organization accounts of which the admin user is a member. Using the App
-services API, you can create, update, or retrieve an admin user. You can
-also set or reset an admin user's password, activite or reactivate an
-admin user, and get an admin user's activity feed.

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/orgs-and-apps/applications.md
----------------------------------------------------------------------
diff --git a/docs/orgs-and-apps/applications.md b/docs/orgs-and-apps/applications.md
new file mode 100644
index 0000000..262ef2b
--- /dev/null
+++ b/docs/orgs-and-apps/applications.md
@@ -0,0 +1,78 @@
+# Applications
+
+You can create a new application in an organization through the [Admin
+portal](/admin-portal). The Admin portal creates the new application by
+issuing a post against the management endpoint (see the "Creating an
+organization application" section in [Organization](/organization) for
+details). If you need to create an application programmatically in your
+app, you can also use the API to do this. You can access application
+entities using your app name or UUID, prefixed with the organization
+name or UUID:
+
+[https://api.usergrid.com](http://api.usergrid.com/)/{org\_name|uuid}/{app\_name|uuid}
+
+Most mobile apps never access the application entity directly. For
+example you might have a server-side web app that accesses the
+application entity for configuration purposes. If you want to access
+your application entity programmatically, you can use the API.
+
+### Application properties
+
+The following are the system-defined properties for application
+entities. You can create application-specific properties for an
+application entity in addition to the system-defined properties. The
+system-defined properties are reserved. You cannot use these names to
+create other properties for an application entity. In addition the
+applications name is reserved for the applications collection — you
+can't use it to name another collection.
+
+The look-up properties for the entities of type application are uuid and
+name, that is, you can use the uuid and name properties to reference an
+application entity in an API call. However, you can search on a role
+using any property of the application entity. See [Queries and
+parameters](/queries-and-parameters) for details on searching.
+
+  Property                                Type      Description
+  --------------------------------------- --------- ---------------------------------------------------------------------------------
+  uuid                                    UUID      Application’s unique entity ID
+  type                                    string    "application"
+  created                                 long      [UNIX timestamp](http://en.wikipedia.org/wiki/Unix_time) of entity creation
+  modified                                long      [UNIX timestamp](http://en.wikipedia.org/wiki/Unix_time) of entity modification
+  name                                    string    Application name (mandatory)
+  title                                   string    Application title
+  description                             string    Application description
+  activated                               boolean   Whether application is activated
+  disabled                                boolean   Whether application is administratively disabled
+  allowOpenRegistration                   boolean   Whether application allows any user to register
+  registrationRequiresEmailConfirmation   boolean   Whether registration requires email confirmation
+  registrationRequiresAdminApproval       boolean   Whether registration requires admin approval
+  accesstokenttl                          long      Time to live value for an access token obtained within the application
+
+### Set properties
+
+The set properties for applications are listed in the table below.
+
+  Set              Type     Description
+  ---------------- -------- ----------------------------------------------------
+  collections      string   Set of collections
+  rolenames        string   Set of roles assigned to an application
+  counters         string   Set of counters assigned to an application
+  oauthproviders   string   Set of OAuth providers for the application
+  credentials      string   Set of credentials required to run the application
+
+### Collections
+
+The collections for applications are listed in the table below.
+
+  Collection      Type           Description
+  --------------- -------------- ----------------------------------------------------------------------------------
+  users           user           Collection of users
+  groups          group          Collection of groups
+  folders         folder         Collection of assets that represent folder-like objects
+  events          event          Collection of events posted by the application
+  assets          asset          Collection of assets that represent file-like objects
+  activities      activity       Collection of activity stream actions
+  devices         device         Collection of devices in the service
+  notifiers       notifier       Collection of notifiers used for push notifications
+  notifications   notification   Collection of push notifications that have been sent or are scheduled to be sent
+  receipts        receipt        Collection of receipts from push notifications that were sent
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/orgs-and-apps/organizations-admins.md
----------------------------------------------------------------------
diff --git a/docs/orgs-and-apps/organizations-admins.md b/docs/orgs-and-apps/organizations-admins.md
new file mode 100644
index 0000000..cbbbc99
--- /dev/null
+++ b/docs/orgs-and-apps/organizations-admins.md
@@ -0,0 +1,43 @@
+Organizations & Admins
+==================================================
+
+Organizations
+             
+
+An organization represents the highest level of the Apache Usergrid data
+hierarchy. It contains applications (and the entities and collections
+they contain) and is associated with one or more administrators. An
+organization can be representative of a company, team, or project. It
+allows multiple applications  to be shared within the organization with
+other administrators.
+
++----------------+----------+--------------------------------------------------------------------------------------+
+| Property       | Type     | Description                                                                          |
++================+==========+======================================================================================+
+| uuid           | UUID     | Organization’s unique entity ID                                                      |
++----------------+----------+--------------------------------------------------------------------------------------+
+| type           | string   | "organization"                                                                       |
++----------------+----------+--------------------------------------------------------------------------------------+
+| created        | long     | `UNIX timestamp <http://en.wikipedia.org/wiki/Unix_time>`__ of entity creation       |
++----------------+----------+--------------------------------------------------------------------------------------+
+| modified       | long     | `UNIX timestamp <http://en.wikipedia.org/wiki/Unix_time>`__ of entity modification   |
++----------------+----------+--------------------------------------------------------------------------------------+
+| organization   | string   | The name of the organization.                                                        |
++----------------+----------+--------------------------------------------------------------------------------------+
+| username       | string   | The username of the administrator.                                                   |
++----------------+----------+--------------------------------------------------------------------------------------+
+| name           | string   | The name of the administrator.                                                       |
++----------------+----------+--------------------------------------------------------------------------------------+
+| email          | string   | The email address of the administrator.                                              |
++----------------+----------+--------------------------------------------------------------------------------------+
+| password       | string   | The password of the administrator. (create-only)                                     |
++----------------+----------+--------------------------------------------------------------------------------------+
+
+Admins
+      
+
+An admin user has full access to perform any operation on all
+organization accounts of which the admin user is a member. Using the App
+services API, you can create, update, or retrieve an admin user. You can
+also set or reset an admin user's password, activite or reactivate an
+admin user, and get an admin user's activity feed.

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/presentations-and-videos.md
----------------------------------------------------------------------
diff --git a/docs/presentations-and-videos.md b/docs/presentations-and-videos.md
deleted file mode 100644
index 84ea3db..0000000
--- a/docs/presentations-and-videos.md
+++ /dev/null
@@ -1,7 +0,0 @@
-***************
-Presentations & Videos
-***************
-
-.. toctree::
-   presentations-and-videos/presentations
-   presentations-and-videos/videos
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/presentations-and-videos/presentations.md
----------------------------------------------------------------------
diff --git a/docs/presentations-and-videos/presentations.md b/docs/presentations-and-videos/presentations.md
deleted file mode 100644
index 76c2a46..0000000
--- a/docs/presentations-and-videos/presentations.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# Presentations
-
-## How to Contribute to Apache Usergrid
-- David Johnson, [ApacheCon NA 2014](http://apacheconnorthamerica2014.sched.org/event/29971aabd3c86398be2ae93403c7d1d2)
-
-<iframe src="http://www.slideshare.net/slideshow/embed_code/33275731" width="600" height="400" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe>
-
-## Apache Usergrid Internals
-- Sungju Jin
-
-<iframe src="http://speakerdeck.com/player/f0cd95108c150131a1e7669157168c6d" width="600" height="400" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe>
-
-## Open Source Mobile Backend on Cassandra
-- Ed Anuff
-
-<iframe src="http://www.slideshare.net/slideshow/embed_code/13919079" width="600" height="400" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe>
-
-## Usergrid Overview
-- Ed Anuff
-
-<iframe src="http://www.slideshare.net/slideshow/embed_code/9476483" width="600" height="400" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/presentations-and-videos/videos.md
----------------------------------------------------------------------
diff --git a/docs/presentations-and-videos/videos.md b/docs/presentations-and-videos/videos.md
deleted file mode 100644
index bc814f5..0000000
--- a/docs/presentations-and-videos/videos.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Videos
-
-## How to Contribute to Apache Usergrid
-- David Johnson, [ApacheCon NA 2014](http://apacheconnorthamerica2014.sched.org/event/29971aabd3c86398be2ae93403c7d1d2)
-
-<iframe width="640" height="360" src="http://www.youtube.com/embed/cfwGmvUhFzY?rel=0" frameborder="0" allowfullscreen></iframe>
-
-## C* 2012: Cassandra at Apigee: Usergrid Powering Mobile
-- Ed Anuff
-
-<iframe width="640" height="360" src="http://www.youtube.com/embed/RuJwIBu3jvs?rel=0" frameborder="0" allowfullscreen></iframe>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/push-notifications/users-devices.md
----------------------------------------------------------------------
diff --git a/docs/push-notifications/users-devices.md b/docs/push-notifications/users-devices.md
new file mode 100644
index 0000000..4b1c2b6
--- /dev/null
+++ b/docs/push-notifications/users-devices.md
@@ -0,0 +1,108 @@
+# Users & Devices
+
+Users and Devices are the primary ways to identify access to the system. Devices are great to track anonymous access, while Users allow you to model signing up, signing in, etc. 
+
+Users
+-----
+
+## Properties
+
+Property     Type      Description
+------------ --------- ---------------------------------------------------------------------------------
+  uuid         UUID      User’s unique entity ID
+  type         string    Type of entity, in this case “user”
+  created      long      [UNIX timestamp](http://en.wikipedia.org/wiki/Unix_time) of entity creation
+  modified     long      [UNIX timestamp](http://en.wikipedia.org/wiki/Unix_time) of entity modification
+  username     string    Valid and unique string username (mandatory)
+  password     string    User password
+  email        string    Valid and unique email address
+  name         string    User display name
+  activated    boolean   Whether the user account is activated
+  disabled     boolean   Whether the user account is administratively disabled
+  firstname    string    User first name
+  middlename   string    User middle name
+  lastname     string    User last name
+  picture      string    User picture
+
+
+## Sets
+
+  Set           Type     Description
+  ------------- -------- ---------------------------------------
+  connections   string   Set of connection types (e.g., likes)
+  rolenames     string   Set of roles assigned to a user
+  permissions   string   Set of user permissions
+  credentials   string   Set of user credentials
+
+## Relationshops
+
+  Collection   Type       Description
+  ------------ ---------- -----------------------------------------------------
+  groups       group      Collection of groups to which a user belongs
+  devices      device     Collection of devices in the service
+  activities   activity   Collection of activities a user has performed
+  feed         activity   Inbox of activity notifications a user has received
+  roles        role       Set of roles assigned to a user
+
+## Facebook Sign-in
+
+You can authenticate your Apache Usergrid requests by logging into
+Facebook. To access Apache Usergrid resources, you need to provide an
+access token with each request (unless you use the sandbox app). You can
+get an access token by connecting to an appropriate web service endpoint
+and providing the correct client credentials — this is further described
+in [Authenticating users and application
+clients](/authenticating-users-and-application-clients). However, you
+can also obtain an access token by logging into Facebook.
+
+To enable authentication to Apache Usergrid through Facebook, do the
+following in your app:
+
+1.  Make a login call to the Facebook API (do this using the [Facebook
+    SDK](https://developers.facebook.com/docs/sdks/) or
+    [API](https://developers.facebook.com/docs/facebook-login/)). If the
+    login succeeds, a Facebook access token is returned.
+2.  Send the Facebook access token to Apache Usergrid. If the Facebook
+    access token is valid and the user does not already exist in App
+    Services, Apache Usergrid provisions a new Apache Usergrid user. It also
+    returns an Apache Usergrid access token, which you can use for
+    subsequent Apache Usergrid API calls. Behind the scenes, Apache Usergrid
+    uses the Facebook access token to retrieve the user's profile
+    information from Facebook.
+
+    If the Facebook access token is invalid, Facebook returns an OAuth
+    authentication error, and the login does not succeed.
+
+The request to authenticate to Apache Usergrid using a Facebook access
+token is:
+
+    GET https://api.usergrid.com/{my_org}/{my_app}/auth/facebook?fb_access_token={fb_access_token}
+
+where:
+
+* {my\_org} is the organization UUID or organization name.\
+* {my\_app} is the application UUID or application name.\
+* {fb\_access\_token} is the Facebook access token.
+
+
+Devices
+-------
+
+## Properties
+
+Property   Type     Description
+---------- -------- ---------------------------------------------------------------------------------
+  uuid       UUID     Entity unique ID
+  type       string   Entity type (e.g., device)
+  created    long     [UNIX timestamp](http://en.wikipedia.org/wiki/Unix_time) of entity creation
+  modified   long     [UNIX timestamp](http://en.wikipedia.org/wiki/Unix_time) of entity modification
+  name       string   Device name (mandatory)
+
+
+## Relationships
+
+Devices have the following associated collection.
+
+  Collection   Type   Description
+  ------------ ------ -----------------------------------------------
+  users        user   Collection of users to which a device belongs

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/reference/presentations.md
----------------------------------------------------------------------
diff --git a/docs/reference/presentations.md b/docs/reference/presentations.md
new file mode 100644
index 0000000..76c2a46
--- /dev/null
+++ b/docs/reference/presentations.md
@@ -0,0 +1,21 @@
+# Presentations
+
+## How to Contribute to Apache Usergrid
+- David Johnson, [ApacheCon NA 2014](http://apacheconnorthamerica2014.sched.org/event/29971aabd3c86398be2ae93403c7d1d2)
+
+<iframe src="http://www.slideshare.net/slideshow/embed_code/33275731" width="600" height="400" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe>
+
+## Apache Usergrid Internals
+- Sungju Jin
+
+<iframe src="http://speakerdeck.com/player/f0cd95108c150131a1e7669157168c6d" width="600" height="400" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe>
+
+## Open Source Mobile Backend on Cassandra
+- Ed Anuff
+
+<iframe src="http://www.slideshare.net/slideshow/embed_code/13919079" width="600" height="400" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe>
+
+## Usergrid Overview
+- Ed Anuff
+
+<iframe src="http://www.slideshare.net/slideshow/embed_code/9476483" width="600" height="400" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/reference/videos.md
----------------------------------------------------------------------
diff --git a/docs/reference/videos.md b/docs/reference/videos.md
new file mode 100644
index 0000000..bc814f5
--- /dev/null
+++ b/docs/reference/videos.md
@@ -0,0 +1,11 @@
+# Videos
+
+## How to Contribute to Apache Usergrid
+- David Johnson, [ApacheCon NA 2014](http://apacheconnorthamerica2014.sched.org/event/29971aabd3c86398be2ae93403c7d1d2)
+
+<iframe width="640" height="360" src="http://www.youtube.com/embed/cfwGmvUhFzY?rel=0" frameborder="0" allowfullscreen></iframe>
+
+## C* 2012: Cassandra at Apigee: Usergrid Powering Mobile
+- Ed Anuff
+
+<iframe width="640" height="360" src="http://www.youtube.com/embed/RuJwIBu3jvs?rel=0" frameborder="0" allowfullscreen></iframe>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/sdks/ios.md
----------------------------------------------------------------------
diff --git a/docs/sdks/ios.md b/docs/sdks/ios.md
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/sdks/java.md
----------------------------------------------------------------------
diff --git a/docs/sdks/java.md b/docs/sdks/java.md
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/sdks/javascript.md
----------------------------------------------------------------------
diff --git a/docs/sdks/javascript.md b/docs/sdks/javascript.md
new file mode 100644
index 0000000..28e490a
--- /dev/null
+++ b/docs/sdks/javascript.md
@@ -0,0 +1,24 @@
+iOS SDK
+==================================================
+
+.. toctree::
+    ios/create-a-collection
+    ios/retrieve-a-collection
+    ios/update-a-collection
+    ios/delete-a-collection
+    ios/create-an-entity
+    ios/retrieve-an-entity
+    ios/update-an-entity
+    ios/delete-an-entity
+    ios/query-your-data
+    ios/connecting-entities
+    ios/retrieving-connections
+    ios/disconnecting-entities
+    ios/assigning-permissions
+    ios/creating-roles
+    ios/assigning-roles
+    ios/application-user-auth
+    ios/application-client-auth
+    ios/admin-user-auth
+    ios/revoking-tokens
+    

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

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/security-and-auth/roles-and-permissions.md
----------------------------------------------------------------------
diff --git a/docs/security-and-auth/roles-and-permissions.md b/docs/security-and-auth/roles-and-permissions.md
new file mode 100644
index 0000000..d237c13
--- /dev/null
+++ b/docs/security-and-auth/roles-and-permissions.md
@@ -0,0 +1,18 @@
+# Roles & Permissions
+
+## Roles
+
+A role represents a set of permissions that enable certain operations to
+be performed on a specific endpoint. You can assign a user to a role,
+and in this way give the user the permissions associated with that role.
+
+**Note:** The /rolenames endpoint is no longer valid. If your code currently
+makes calls to /rolenames, you need to change the calls to use /roles.
+
+## Permissions
+
+Each role contains multiple permissions. Permissions work by whitelisting by default, meaning any permission that is not explicitely granted is denied by default. Permission is an HTTP verb (GET to allow reads, POST to allow creation, PUT to allow edits and DELETE to allow deletes) combined with a path, with optional wildcards. For example the permission put:/users/* allows editing any user.
+
+Permissions can be added to roles, groups or to users directly, and a user’s permission is the combination of its personal permissions and the permissions of any role he’s been assigned, and the permissions of any group he’s a member of.
+
+Permissions are only valid within the scope of a single application, so the permission paths do not need to be prefixed with /org\_name\_or\_uuid/app\_name\_or\_uuid.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/07d14c88/docs/upgrading.md
----------------------------------------------------------------------
diff --git a/docs/upgrading.md b/docs/upgrading.md
deleted file mode 100644
index 0df0935..0000000
--- a/docs/upgrading.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Upgrading from Previous Versions
-
-If you built and used a previous version of Usergrid, that may be using a different schema, we have an easy built-in tool to audit your Cassandra column family structure and upgrade the dataset as necessary. Once you have pulled, built and launched the new version of Usergrid, just hit [http://localhost:8080/system/database/setup](http://localhost:8080/system/database/setup) to run the upgrade tool.
\ No newline at end of file

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