http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/4a92ab09/content/docs/user-management/working-user-data.html ---------------------------------------------------------------------- diff --git a/content/docs/user-management/working-user-data.html b/content/docs/user-management/working-user-data.html new file mode 100644 index 0000000..58e40bc --- /dev/null +++ b/content/docs/user-management/working-user-data.html @@ -0,0 +1,700 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>Working with User Data — Apache Usergrid 1.0 documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + + + + + + <link rel="top" title="Apache Usergrid 1.0 documentation" href="../index.html"/> + <link rel="next" title="Working with group data" href="group.html"/> + <link rel="prev" title="User management & social graph" href="user-management.html"/> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav" role="document"> + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> Apache Usergrid + + + + </a> + + + + + <div class="version"> + 1.0 + </div> + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + <p class="caption"><span class="caption-text">Introduction</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../introduction/usergrid-features.html">Usergrid Features</a></li> +<li class="toctree-l1"><a class="reference internal" href="../introduction/data-model.html">Usergrid Data model</a></li> +<li class="toctree-l1"><a class="reference internal" href="../introduction/async-vs-sync.html">Async vs. sync calls</a></li> +</ul> +<p class="caption"><span class="caption-text">Getting Started</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../getting-started/creating-a-new-application.html">Creating a new application</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting-started/creating-account.html">Creating an Usergrid Account</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting-started/using-a-sandbox-app.html">Using a Sandbox Application</a></li> +<li class="toctree-l1"><a class="reference internal" href="../getting-started/using-the-api.html">Using the API</a></li> +</ul> +<p class="caption"><span class="caption-text">Data Storage</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../data-storage/data-store-dbms.html">The Usergrid Data Store</a></li> +<li class="toctree-l1"><a class="reference internal" href="../data-storage/optimizing-access.html">Data Store Best Practices</a></li> +<li class="toctree-l1"><a class="reference internal" href="../data-storage/collections.html">Collections</a></li> +<li class="toctree-l1"><a class="reference internal" href="../data-storage/entities.html">Entities</a></li> +</ul> +<p class="caption"><span class="caption-text">Data Queries</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../data-queries/querying-your-data.html">Querying your data</a></li> +<li class="toctree-l1"><a class="reference internal" href="../data-queries/query-parameters.html">Query parameters & clauses</a></li> +<li class="toctree-l1"><a class="reference internal" href="../data-queries/operators-and-types.html">Query operators & data types</a></li> +<li class="toctree-l1"><a class="reference internal" href="../data-queries/advanced-query-usage.html">Advanced query usage</a></li> +</ul> +<p class="caption"><span class="caption-text">Entity Connections</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../entity-connections/connecting-entities.html">Connecting entities</a></li> +<li class="toctree-l1"><a class="reference internal" href="../entity-connections/retrieving-entities.html">Retrieving connections</a></li> +<li class="toctree-l1"><a class="reference internal" href="../entity-connections/disconnecting-entities.html">Disconnecting entities</a></li> +</ul> +<p class="caption"><span class="caption-text">Security & Authentication</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../security-and-auth/app-security.html">Security & token authentication</a></li> +<li class="toctree-l1"><a class="reference internal" href="../security-and-auth/using-permissions.html">Using permissions</a></li> +<li class="toctree-l1"><a class="reference internal" href="../security-and-auth/authenticating-users-and-application-clients.html">Authenticating users & app clients</a></li> +<li class="toctree-l1"><a class="reference internal" href="../security-and-auth/user-authentication-types.html">Authentication levels</a></li> +<li class="toctree-l1"><a class="reference internal" href="../security-and-auth/changing-token-time-live-ttl.html">Changing token expiration (time-to-live)</a></li> +<li class="toctree-l1"><a class="reference internal" href="../security-and-auth/authenticating-api-requests.html">Authenticating API requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../security-and-auth/revoking-tokens-logout.html">Revoking tokens (logout)</a></li> +<li class="toctree-l1"><a class="reference internal" href="../security-and-auth/facebook-sign.html">Facebook sign in</a></li> +<li class="toctree-l1"><a class="reference internal" href="../security-and-auth/securing-your-app.html">Security best practices</a></li> +</ul> +<p class="caption"><span class="caption-text">User Management & Social Graph</span></p> +<ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="user-management.html">User management & social graph</a></li> +<li class="toctree-l1 current"><a class="current reference internal" href="">Working with User Data</a><ul> +<li class="toctree-l2"><a class="reference internal" href="#creating-users">Creating users</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#request-syntax">Request Syntax</a></li> +<li class="toctree-l3"><a class="reference internal" href="#request-uri">Request URI</a></li> +<li class="toctree-l3"><a class="reference internal" href="#example">Example</a></li> +<li class="toctree-l3"><a class="reference internal" href="#request">Request</a></li> +<li class="toctree-l3"><a class="reference internal" href="#response">Response</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#retrieving-user-data">Retrieving user data</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#id1">Request Syntax</a></li> +<li class="toctree-l3"><a class="reference internal" href="#id2">Request URI</a></li> +<li class="toctree-l3"><a class="reference internal" href="#id3">Example</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#updating-deleting-user-data">Updating & deleting user data</a></li> +<li class="toctree-l2"><a class="reference internal" href="#changing-a-user-password">Changing a user password</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#id4">Request syntax</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#resetting-a-user-password">Resetting a user password</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#step-1-get-the-password-reset-request-form">STEP 1: Get the password reset request form.</a></li> +<li class="toctree-l3"><a class="reference internal" href="#step-2-display-the-returned-password-reset-request-form-to-the-user">STEP 2: Display the returned password reset request form to the user.</a></li> +<li class="toctree-l3"><a class="reference internal" href="#step-3-let-usergrid-handle-the-rest">STEP 3: Let Usergrid handle the rest!</a></li> +</ul> +</li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="group.html">Working with group data</a></li> +<li class="toctree-l1"><a class="reference internal" href="activity.html">Activity</a></li> +<li class="toctree-l1"><a class="reference internal" href="user-connections.html">Social Graph Connections</a></li> +<li class="toctree-l1"><a class="reference internal" href="user-connections.html#creating-other-connections">Creating other connections</a></li> +<li class="toctree-l1"><a class="reference internal" href="messagee-example.html">App Example - Messagee</a></li> +</ul> +<p class="caption"><span class="caption-text">Geo-location</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../geolocation/geolocation.html">Geolocating your Entities</a></li> +</ul> +<p class="caption"><span class="caption-text">Assets & Files</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../asset-and-files/uploading-assets.html">Uploading assets</a></li> +<li class="toctree-l1"><a class="reference internal" href="../asset-and-files/retrieving-assets.html">Retrieving assets</a></li> +<li class="toctree-l1"><a class="reference internal" href="../asset-and-files/folders.html">Folders</a></li> +</ul> +<p class="caption"><span class="caption-text">Counters & Events</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../counters-and-events/events-and-counters.html">Counters & events</a></li> +<li class="toctree-l1"><a class="reference internal" href="../counters-and-events/creating-and-incrementing-counters.html">Creating & incrementing counters</a></li> +<li class="toctree-l1"><a class="reference internal" href="../counters-and-events/creating-and-incrementing-counters.html#decrementing-resetting-counters">Decrementing/resetting counters</a></li> +<li class="toctree-l1"><a class="reference internal" href="../counters-and-events/creating-and-incrementing-counters.html#using-counters-hierarchically">Using counters hierarchically</a></li> +<li class="toctree-l1"><a class="reference internal" href="../counters-and-events/retrieving-counters.html">Retrieving counters</a></li> +</ul> +<p class="caption"><span class="caption-text">Organizations & Applications</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../orgs-and-apps/managing.html">Organization & application management</a></li> +<li class="toctree-l1"><a class="reference internal" href="../orgs-and-apps/organization.html">Organization</a></li> +<li class="toctree-l1"><a class="reference internal" href="../orgs-and-apps/application.html">Application</a></li> +</ul> +<p class="caption"><span class="caption-text">API Reference</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../rest-endpoints/api-docs.html">Methods</a></li> +<li class="toctree-l1"><a class="reference internal" href="../rest-endpoints/api-docs.html#models">Models</a></li> +</ul> +<p class="caption"><span class="caption-text">Client SDKs</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../sdks/tbd.html">COMING SOON...</a></li> +</ul> +<p class="caption"><span class="caption-text">Installing the Stack</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../installation/ug1-deploy-to-tomcat.html">Usegrid 1: Deploying to Tomcat</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation/ug1-launcher-quick-start.html">Usegrid 1: Launcher Quick-start</a></li> +<li class="toctree-l1"><a class="reference internal" href="../installation/ug2-deploy-to-tomcat.html">Usergrid 2: Deploy to Tomcat</a></li> +</ul> +<p class="caption"><span class="caption-text">More about Usergrid</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../reference/presos-and-videos.html">Presentations & Videos</a></li> +<li class="toctree-l1"><a class="reference internal" href="../reference/contribute-code.html">How to Contribute Code & Docs</a></li> +</ul> + + + + </div> + + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">Apache Usergrid</a> + </nav> + + + + <div class="wy-nav-content"> + <div class="rst-content"> + <div role="navigation" aria-label="breadcrumbs navigation"> + <ul class="wy-breadcrumbs"> + <li><a href="../index.html">Docs</a> »</li> + + <li>Working with User Data</li> + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/user-management/working-user-data.txt" rel="nofollow"> View page source</a> + + + </li> + </ul> + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="working-with-user-data"> +<h1>Working with User Data<a class="headerlink" href="#working-with-user-data" title="Permalink to this headline">¶</a></h1> +<p>You can store and manage user data as User entities. With user data in +your application, you can add support for a wide variety of features +common to mobile apps. For example, you can:</p> +<ul class="simple"> +<li>Control access to data by defining permission rules. (See Security & +token authentication for more.)</li> +<li>Present content specific to each user, such as their list of +favorites.</li> +<li>Support social features, such as letting users “follow” one another, +for example.</li> +</ul> +<p>In mobile applications, data about users is typically added by users +themselves when they register through your app. The topics in this +section provide specific cURL and SDK-specific examples for getting +things done with user data.</p> +<div class="section" id="creating-users"> +<h2>Creating users<a class="headerlink" href="#creating-users" title="Permalink to this headline">¶</a></h2> +<p>A user entity represents an application user. Using API Services you can +create, retrieve, update, delete, and query user entities. See User +entity properties for a list of the system-defined properties for user +entities. In addition, you can create user properties specific to your +application.</p> +<div class="section" id="request-syntax"> +<h3>Request Syntax<a class="headerlink" href="#request-syntax" title="Permalink to this headline">¶</a></h3> +<div class="highlight-python"><div class="highlight"><pre>curl -X POST "https://api.usergrid.com/your-org/your-app/users" -d '{ "username": "john.doe", "email": "john....@gmail.com", "name": "John Doe", "password": "test1234" }' +</pre></div> +</div> +<p>Use the POST method to create a new user in the users collection.</p> +</div> +<div class="section" id="request-uri"> +<h3>Request URI<a class="headerlink" href="#request-uri" title="Permalink to this headline">¶</a></h3> +<div class="highlight-python"><div class="highlight"><pre>POST /<org_id>/<app_id>/users +</pre></div> +</div> +<p>Parameters</p> +<table border="1" class="docutils"> +<colgroup> +<col width="31%" /> +<col width="69%" /> +</colgroup> +<thead valign="bottom"> +<tr class="row-odd"><th class="head">Parameter</th> +<th class="head">Description</th> +</tr> +</thead> +<tbody valign="top"> +<tr class="row-even"><td>uuid | org_id</td> +<td>Organization UUID or organization name.</td> +</tr> +<tr class="row-odd"><td>uuid | app_id</td> +<td>Application UUID or application name.</td> +</tr> +<tr class="row-even"><td>request body</td> +<td>One or more sets of user properties.</td> +</tr> +</tbody> +</table> +<p>The username is mandatory and must be unique. Here’s an example:</p> +<div class="highlight-python"><div class="highlight"><pre><span class="p">{</span> + <span class="s">"username"</span> <span class="p">:</span> <span class="s">"john.doe"</span><span class="p">,</span> + <span class="s">"email"</span> <span class="p">:</span> <span class="s">"john....@gmail.com"</span><span class="p">,</span> + <span class="s">"name"</span> <span class="p">:</span> <span class="s">"John Doe"</span><span class="p">,</span> + <span class="s">"password"</span> <span class="p">:</span> <span class="s">"test1234"</span> +<span class="p">}</span> +</pre></div> +</div> +<p>Although the password parameter is not mandatory, if you don’t specify +it, the user will not be able to log in using username and password +credentials. If a password is not specified for the user, and you’re an +Admin, you can set a password for the user (see Setting a password).</p> +<p>__ Note__: The username can contain any combination of characters, +including those that represent letters, numbers, and symbols.</p> +</div> +<div class="section" id="example"> +<h3>Example<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h3> +<p><strong>Note</strong>: 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 for details.</p> +</div> +<div class="section" id="request"> +<h3>Request<a class="headerlink" href="#request" title="Permalink to this headline">¶</a></h3> +<div class="highlight-python"><div class="highlight"><pre>curl -X POST "https://api.usergrid.com/my-org/my-app/users" -d '{"username":"john.doe","email":"john....@gmail.com","name":"John Doe"}' +</pre></div> +</div> +</div> +<div class="section" id="response"> +<h3>Response<a class="headerlink" href="#response" title="Permalink to this headline">¶</a></h3> +<div class="highlight-python"><div class="highlight"><pre><span class="p">{</span> + <span class="s">"action"</span> <span class="p">:</span> <span class="s">"post"</span><span class="p">,</span> + <span class="s">"application"</span> <span class="p">:</span> <span class="s">"db1e60a0-417f-11e3-9586-0f1ff3650d20"</span><span class="p">,</span> + <span class="s">"params"</span> <span class="p">:</span> <span class="p">{</span> <span class="p">},</span> + <span class="s">"path"</span> <span class="p">:</span> <span class="s">"/users"</span><span class="p">,</span> + <span class="s">"uri"</span> <span class="p">:</span> <span class="s">"https://api.usergrid.com/steventraut/mynewapp/users"</span><span class="p">,</span> + <span class="s">"entities"</span> <span class="p">:</span> <span class="p">[</span> <span class="p">{</span> + <span class="s">"uuid"</span> <span class="p">:</span> <span class="s">"8ae8a6ea-84a5-11e3-884d-f18e8f6fb3bc"</span><span class="p">,</span> + <span class="s">"type"</span> <span class="p">:</span> <span class="s">"user"</span><span class="p">,</span> + <span class="s">"name"</span> <span class="p">:</span> <span class="s">"John Doe"</span><span class="p">,</span> + <span class="s">"created"</span> <span class="p">:</span> <span class="mi">1390533228622</span><span class="p">,</span> + <span class="s">"modified"</span> <span class="p">:</span> <span class="mi">1390533228622</span><span class="p">,</span> + <span class="s">"username"</span> <span class="p">:</span> <span class="s">"john.doe"</span><span class="p">,</span> + <span class="s">"email"</span> <span class="p">:</span> <span class="s">"john....@gmail.com"</span><span class="p">,</span> + <span class="s">"activated"</span> <span class="p">:</span> <span class="n">true</span><span class="p">,</span> + <span class="s">"picture"</span> <span class="p">:</span> <span class="s">"http://www.gravatar.com/avatar/e13743a7f1db7f4246badd6fd6ff54ff"</span><span class="p">,</span> + <span class="s">"metadata"</span> <span class="p">:</span> <span class="p">{</span> + <span class="s">"path"</span> <span class="p">:</span> <span class="s">"/users/8ae8a6ea-84a5-11e3-884d-f18e8f6fb3bc"</span><span class="p">,</span> + <span class="s">"sets"</span> <span class="p">:</span> <span class="p">{</span> + <span class="s">"rolenames"</span> <span class="p">:</span> <span class="s">"/users/8ae8a6ea-84a5-11e3-884d-f18e8f6fb3bc/roles"</span><span class="p">,</span> + <span class="s">"permissions"</span> <span class="p">:</span> <span class="s">"/users/8ae8a6ea-84a5-11e3-884d-f18e8f6fb3bc/permissions"</span> + <span class="p">},</span> + <span class="s">"collections"</span> <span class="p">:</span> <span class="p">{</span> + <span class="s">"activities"</span> <span class="p">:</span> <span class="s">"/users/8ae8a6ea-84a5-11e3-884d-f18e8f6fb3bc/activities"</span><span class="p">,</span> + <span class="s">"devices"</span> <span class="p">:</span> <span class="s">"/users/8ae8a6ea-84a5-11e3-884d-f18e8f6fb3bc/devices"</span><span class="p">,</span> + <span class="s">"feed"</span> <span class="p">:</span> <span class="s">"/users/8ae8a6ea-84a5-11e3-884d-f18e8f6fb3bc/feed"</span><span class="p">,</span> + <span class="s">"groups"</span> <span class="p">:</span> <span class="s">"/users/8ae8a6ea-84a5-11e3-884d-f18e8f6fb3bc/groups"</span><span class="p">,</span> + <span class="s">"roles"</span> <span class="p">:</span> <span class="s">"/users/8ae8a6ea-84a5-11e3-884d-f18e8f6fb3bc/roles"</span><span class="p">,</span> + <span class="s">"following"</span> <span class="p">:</span> <span class="s">"/users/8ae8a6ea-84a5-11e3-884d-f18e8f6fb3bc/following"</span><span class="p">,</span> + <span class="s">"followers"</span> <span class="p">:</span> <span class="s">"/users/8ae8a6ea-84a5-11e3-884d-f18e8f6fb3bc/followers"</span> + <span class="p">}</span> + <span class="p">}</span> + <span class="p">}],</span> + <span class="s">"timestamp"</span> <span class="p">:</span> <span class="mi">1390533228619</span><span class="p">,</span> + <span class="s">"duration"</span> <span class="p">:</span> <span class="mi">142</span><span class="p">,</span> + <span class="s">"organization"</span> <span class="p">:</span> <span class="s">"my-org"</span><span class="p">,</span> + <span class="s">"applicationName"</span> <span class="p">:</span> <span class="s">"my-app"</span> +<span class="p">}</span> +</pre></div> +</div> +</div> +</div> +<div class="section" id="retrieving-user-data"> +<h2>Retrieving user data<a class="headerlink" href="#retrieving-user-data" title="Permalink to this headline">¶</a></h2> +<p>You can retrieve data about users through cURL or one of the SDKs. Each +provides a way to filter the list of users by data associated with the +user, such as username or UUID, or other properties in the user entity.</p> +<p>See User entity properties for a list of the system-defined properties +for user entities. In addition, you can create user properties specific +to your application.</p> +<div class="section" id="id1"> +<h3>Request Syntax<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3> +<div class="highlight-python"><div class="highlight"><pre>curl -X GET "https://api.usergrid.com/your-org/your-app/users" +</pre></div> +</div> +<p>Use the GET method to retrieve user data.</p> +</div> +<div class="section" id="id2"> +<h3>Request URI<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h3> +<div class="highlight-python"><div class="highlight"><pre>GET /<org_id>/<app_id>/users/<uuid | username | email_address | ?ql=query_string> +</pre></div> +</div> +<p>Parameters</p> +<table border="1" class="docutils"> +<colgroup> +<col width="31%" /> +<col width="69%" /> +</colgroup> +<thead valign="bottom"> +<tr class="row-odd"><th class="head">Parameter</th> +<th class="head">Description</th> +</tr> +</thead> +<tbody valign="top"> +<tr class="row-even"><td>uuid | org_id</td> +<td>Organization UUID or organization name</td> +</tr> +<tr class="row-odd"><td>uuid | app_id</td> +<td>Application UUID or application name</td> +</tr> +<tr class="row-even"><td>user identifier</td> +<td>User UUID, username, or email address.</td> +</tr> +</tbody> +</table> +<p>The alias <code class="docutils literal"><span class="pre">/users/me</span></code> can be used in place of the current userâs uuid, +username, or email address. Note: The <code class="docutils literal"><span class="pre">/users/me</span></code> endpoint is +accessible only if you provide an access token with the request (see +Authenticating users and application clients). If you make an anonymous +(“guest”) call, the system will not be able to determine which user to +return as /users/me.</p> +<p><strong>Note</strong>: The username can contain any combination of characters, +including those that represent letters, numbers, and symbols.</p> +</div> +<div class="section" id="id3"> +<h3>Example<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h3> +<p><strong>Note</strong>: Although not shown in the API examples below, you need to +provide a valid access token with each API call. See <a class="reference external" href="../security-and-auth/authenticating-users-and-application-clients.html">Authenticating +users and application +clients</a> +for details.</p> +<p>Requests</p> +<div class="highlight-python"><div class="highlight"><pre># Get a user by username. +curl -X GET "https://api.usergrid.com/my-org/my-app/users/jane.doe" + +# Get a user by UUID. +curl -X GET "https://api.usergrid.com/my-org/my-app/users/a407b1e7-58e8-11e1-ac46-22000a1c5a67e" + +# Get a user by email. +curl -X GET "https://api.usergrid.com/my-org/my-app/users/jane....@gmail.com" + +# Get user data filtering by their city property value. +curl -X GET "https://api.usergrid.com/my-org/my-app/users?ql=select%20*%20where%20adr.city%3D'Chicago'" +</pre></div> +</div> +<p>Response</p> +<div class="highlight-python"><div class="highlight"><pre>{ + "action" : "get", + "application" : "1c8f60e4-da67-11e0-b93d-12313f0204bb8", + "params" : { + "_": [ + "1315524419746" + ] + }, + "path" : "https://api.usergrid.com/12313f0204bb-1c8f60e4-da67-11e0-b93d/1c8f60e4-da67-11e0-b93d-12313f0204bb/users", + "uri" : "https://api.usergrid.com/005056c00008-4353136f-e978-11e0-8264/4353136f-e978-11e0-8264-005056c00008/users", + "entities" : [ { + "uuid" : "78c54a82-da71-11e0-b93d-12313f0204b", + "type" : "user", + "created" : 1315524171347008, + "modified" : 1315524171347008, + "activated" : true, + "email" : "jane....@gmail.com", + "metadata" : { + "path" : "/users/78c54a82-da71-11e0-b93d-12313f0204bb", + "sets" : { + "rolenames" : "/users/78c54a82-da71-11e0-b93d-12313f0204bb/rolenames", + "permissions" : "/users/78c54a82-da71-11e0-b93d-12313f0204bb/permissions" + }, + "collections" : { + "activities" : "/users/78c54a82-da71-11e0-b93d-12313f0204bb/activities", + "devices" : "/users/78c54a82-da71-11e0-b93d-12313f0204bb/devices", + "feed" : "/users/78c54a82-da71-11e0-b93d-12313f0204bb/feed", + "groups" : "/users/78c54a82-da71-11e0-b93d-12313f0204bb/groups", + "roles" : "/users/78c54a82-da71-11e0-b93d-12313f0204bb/roles", + "following" : "/users/78c54a82-da71-11e0-b93d-12313f0204bb/following", + "followers" : "/users/78c54a82-da71-11e0-b93d-12313f0204bb/followers" + } + }, + "username" : "jane.doe" + } + ... Additional entities here if data for multiple users was returned... + ], + "timestamp" : 1315524421071, + "duration" : 107, + "organization" : "my-org", + "applicationName": "my-app" +} +</pre></div> +</div> +</div> +</div> +<div class="section" id="updating-deleting-user-data"> +<h2>Updating & deleting user data<a class="headerlink" href="#updating-deleting-user-data" title="Permalink to this headline">¶</a></h2> +<p>To update or delete a user, perform an update or delete on the +associated user entity as you would any other entity. For more +information and code samples, see <a class="reference external" href="../data-storage/entities.html#updating-data-entities">Updating Data +Entities</a> and +<a class="reference external" href="../data-storage/entities.html#deleting-data-entities">Deleting Data +Entities</a>.</p> +</div> +<div class="section" id="changing-a-user-password"> +<h2>Changing a user password<a class="headerlink" href="#changing-a-user-password" title="Permalink to this headline">¶</a></h2> +<p>Changing a user’s password</p> +<div class="section" id="id4"> +<h3>Request syntax<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h3> +<div class="highlight-python"><div class="highlight"><pre>curl -X PUT https://api.usergrid.com/<org>/<app>/users/<username_or_email>/password -d '{oldpassword:<old_password>,newpassword:<new_password>}' +</pre></div> +</div> +<p>Parameters</p> +<table border="1" class="docutils"> +<colgroup> +<col width="24%" /> +<col width="76%" /> +</colgroup> +<thead valign="bottom"> +<tr class="row-odd"><th class="head">Parameter</th> +<th class="head">Description</th> +</tr> +</thead> +<tbody valign="top"> +<tr class="row-even"><td>org</td> +<td>Organization UUID or organization name</td> +</tr> +<tr class="row-odd"><td>app</td> +<td>Application UUID or application name</td> +</tr> +<tr class="row-even"><td>username_or_email</td> +<td>Username or email of the user entity whose password you want to reset.</td> +</tr> +<tr class="row-odd"><td>old_password</td> +<td>User entity’s old password.</td> +</tr> +<tr class="row-even"><td>new_password</td> +<td>User entity’s new password.</td> +</tr> +</tbody> +</table> +<p><strong>Note</strong>: If your request is authenticated with an application-level +token, then <code class="docutils literal"><span class="pre">old_password</span></code> is not required. For more, see <a class="reference external" href="../security-and-auth/authenticating-users-and-application-clients.html#application-client-authentication">Application +client +authentication</a>.</p> +<p>Example request</p> +<div class="highlight-python"><div class="highlight"><pre>curl -X PUT https://api.usergrid.com/my-org/my-app/users/john.doe/password -d '{"newpassword":"foo9876a","oldpassword":"bar1234b"}' +</pre></div> +</div> +<p>Example response</p> +<div class="highlight-python"><div class="highlight"><pre><span class="p">{</span> + <span class="s">"action"</span><span class="p">:</span> <span class="s">"set user password"</span><span class="p">,</span> + <span class="s">"timestamp"</span><span class="p">:</span> <span class="mi">1355185897894</span><span class="p">,</span> + <span class="s">"duration"</span><span class="p">:</span> <span class="mi">47</span> +<span class="p">}</span> +</pre></div> +</div> +</div> +</div> +<div class="section" id="resetting-a-user-password"> +<h2>Resetting a user password<a class="headerlink" href="#resetting-a-user-password" title="Permalink to this headline">¶</a></h2> +<p>Resetting a user’s password</p> +<p>Usergrid provides a standard password reset flow that can be implemented +to allow a user to reset their password without having to provide their +old password. The most common use of this would be a ‘Forgot password?’ +feature in your app.</p> +<p>Note that you can also implement your own password reset flow using +application-level authentication and the /password endpoint. For more, +see <a class="reference external" href="#changing-a-user-password">Changing a user password</a>.</p> +<p>To use the Usergrid password reset flow, do the following:</p> +<div class="section" id="step-1-get-the-password-reset-request-form"> +<h3>STEP 1: Get the password reset request form.<a class="headerlink" href="#step-1-get-the-password-reset-request-form" title="Permalink to this headline">¶</a></h3> +<p>Make a GET request to the following:</p> +<div class="highlight-python"><div class="highlight"><pre>/users/<username>/resetpw +</pre></div> +</div> +<p>For example, using cURL, a request to reset the password for a user with +username ‘someUser’ would look like this:</p> +<div class="highlight-python"><div class="highlight"><pre>curl -x GET https://api.usergrid.com/your-org/your-app/users/someUser/resetpw +</pre></div> +</div> +</div> +<div class="section" id="step-2-display-the-returned-password-reset-request-form-to-the-user"> +<h3>STEP 2: Display the returned password reset request form to the user.<a class="headerlink" href="#step-2-display-the-returned-password-reset-request-form-to-the-user" title="Permalink to this headline">¶</a></h3> +<p>The request to <code class="docutils literal"><span class="pre">/resetpw</span></code> will return the HTML for the standard +Usergrid password reset request form that you will display to your user. +The request form requires the users to provide their username as well as +answer a standard CAPTCHA challenge:</p> +<div class="highlight-python"><div class="highlight"><pre><!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>Reset Password</title> +<link rel="stylesheet" type="text/css" href="/css/styles.css" /> +</head> +<body> + <div class="dialog-area"> + + <form class="dialog-form" action="" method="post"> + <fieldset> + <p> + Enter the captcha to have your password reset instructions sent to + someu...@adomain.com + </p> + <p id="human-proof"></p> + <script type="text/javascript" src="https://www.google.com/recaptcha/api/challenge?k=6LdSTNESAAAAAKHdVglHmMu86_EoYxsJjqQD1IpZ"></script> + + <p class="buttons"> + <input type="submit" value="submit" /> + </p> + </fieldset> + </form> + </div> +</body> +</html> +</pre></div> +</div> +<p>You can apply any additional styling you wish to the form to make it +match the style of your app before displaying it to the user.</p> +</div> +<div class="section" id="step-3-let-usergrid-handle-the-rest"> +<h3>STEP 3: Let Usergrid handle the rest!<a class="headerlink" href="#step-3-let-usergrid-handle-the-rest" title="Permalink to this headline">¶</a></h3> +<p>Once the user submits the form with their username, they will receive an +email from Usergrid that contains a link to the password reset form, +where they can specify a new password. The user entity will be updated +immediately.</p> +</div> +</div> +</div> + + + </div> + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="group.html" class="btn btn-neutral float-right" title="Working with group data" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="user-management.html" class="btn btn-neutral" title="User management & social graph" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2013-2015, Apache Usergrid. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'1.0', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + + + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.StickyNav.enable(); + }); + </script> + + +</body> +</html> \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/4a92ab09/content/index.html ---------------------------------------------------------------------- diff --git a/content/index.html b/content/index.html new file mode 100644 index 0000000..23096ce --- /dev/null +++ b/content/index.html @@ -0,0 +1,264 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="utf-8"> + <title>Apache Usergrid (incubating) â the BaaS not made for Hipsters</title> + <meta http-equiv="x-ua-compatible" content="ie=edge" /> + <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1" /> + <meta name="keywords" content="Apache Usergrid, Usergrid, BaaS, Backend-as-a-Service"> + <meta name="description" content="An open-source Backend-as-a-Service stack for web & mobile applications, based on RESTful APIs." /> + <meta property="og:title" content="Apache Usergrid" /> + <meta property="og:description" content="An open-source Backend-as-a-Service stack for web & mobile applications, based on RESTful APIs." /> + <!-- Loading Typekit --> + <script type="text/javascript" src="//use.typekit.net/ddl7izx.js"></script> + <script type="text/javascript">try{Typekit.load();}catch(e){}</script> + <!-- Loading Bootstrap --> + <link href="/bootstrap/bootstrap.min.css" rel="stylesheet" type='text/css'> + <link href="/css/bootflat.css" rel="stylesheet" type='text/css'> + <link href="/css/usergrid-site.css" rel="stylesheet" type='text/css'> + <link href="https://fonts.googleapis.com/css?family=Open+Sans:200,400,500,300,600,800,700,400italic,600italic,700italic,800italic,300italic" rel="stylesheet" type="text/css"> + <link href="/css/font-awesome.min.css" rel="stylesheet" type='text/css'> + + + + <!-- HTML5 shim, for IE6-8 support of HTML5 elements. All other JS at the end of file. --> + <!--[if lt IE 9]> + <script src="js/html5shiv.js"></script> + <script src="js/respond.min.js"></script> + <![endif]--> +</head> +<body> + + <header class="navbar navbar-inverse navbar-fixed-top bf-docs-nav " role="banner"> + <div class="container"> + <div class="navbar-header"> + <button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".bf-navbar-collapse"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + </div> + <a href="/" class="navbar-brand"> + <img id="home-logo" src="/img/apache_usergrid_logo_white_small.png" /> + </a> + <nav class="collapse navbar-collapse bf-navbar-collapse" role="navigation"> + <ul class="nav navbar-nav navbar-right"> + <li class=""><a href="/community/"><span class="icns icon-group"></span></a></li> + <li><a href="docs" target="_blank"><span class="icns icon-book"></span></a></li> + <li><a href="http://github.com/apache/incubator-usergrid" target="_blank"><span class="icns icon-github-sign"></span></a></li> + <!--<li><a href="https://trello.com/b/exQmJIOn/usergrid" target="_blank"><span class="icns icon-trello"></span></a></li>--> + <li><a href="https://issues.apache.org/jira/secure/RapidBoard.jspa?rapidView=23&view=planning&selectedIssue=USERGRID-362&epics=visible" + target="_blank"><span class="icns icon-bug"></span></a></li> + <li><a href="http://stackoverflow.com/search?q=usergrid" target="_blank"><span class="icns icon-stackexchange"></span></a></li> + <li><a href="/community/#live"><span class="icns icon-comments"></span></a></li> + <!--<li><a href="https://groups.google.com/forum/#!forum/usergrid" target="_blank"><span class="icns icon-envelope"></span></a></li>--> + <li><a href="https://twitter.com/usergrid" target="_blank"><span class="icns icon-twitter"></span></a></li> + <li><a href="https://cwiki.apache.org/confluence/display/usergrid/" target="_blank"><span class="icns icon-wiki"></span></a></li> + <li><a href="/releases/"><span class="icns icon-releases"></span></a></li> + </ul> + </nav> + </div> + </header> + + + + + +<section class="bf-masthead" id="content" role="main"> + <div class="bf-masthead-bg"> + <div class="container"> + <img class="logo-title img-responsive hidden-xs" src="img/apache_usergrid_logo_white.png" /> + <div class="text-container"> + <h2 class="tagline">The BaaS Framework <em>you</em> run</h2> + <p class="description">Build Apps not Servers! Whether you need to support one App or a hundred, Usergrid is <em>your</em> backend. As easy as a LAMP stack, but built for mobile. + Get Apps to production in record time and stop wasting cycles writing server-side code.<br/><br/> + Complete SDKs for iOS, Android, HTML5/JS, Node.js, Ruby, Java, .NET, and PHP. Open source since 2011.<br/><br/><em>Currently undergoing incubation at the Apache Software Foundation</em></p> + </div> + + <div class="btn-wrapper"> + <iframe class="social-btn" src="/static/github-btn.html?user=apache&repo=incubator-usergrid&type=watch&size=large" allowtransparency="true" frameborder="0" scrolling="0" width="85" height="30"></iframe> + <iframe class="social-btn" src="/static/github-btn.html?user=apache&repo=incubator-usergrid&type=fork&size=large" allowtransparency="true" frameborder="0" scrolling="0" width="85" height="30"></iframe> + <!--<p><span class="or">or</span> <a href="#">Download Usergrid</a></p>--> + </div> + + </div> + </div> +</section> + +<section class="bf-features"> + <div class="container"> + <div class="row"> + <div class="col-md-4"> + <div class="bf-icon-wrap"><i style="font-size:65px; vertical-align: -5px;" aria-hidden="true" class="icon-user"></i></div> + <h3>Users</h3> + <p>Sign up users, log in, reset passwords and more, in just one API call. You can put users in groups, assign roles or permissions, let users follow each other and access everything via OAuth 2.0, without writing a single line of server code.</p> + </div> + <div class="col-md-4"> + <div class="bf-icon-wrap"><i style="font-size:65px; vertical-align: -5px;" aria-hidden="true" class="icon-hdd"></i></div> + <h3>Data</h3> + <p>If you can express it in JSON, we can store it! Underneath everything is stored in a standard Cassandra instance, but weâve added the ability to retrieve data via an SQL-like syntax, manage collections and connections between entities.</p> + </div> + <div class="col-md-4"> + <div class="bf-icon-wrap"><i aria-hidden="true" class="icon-picture"></i></div> + <h3>Files</h3> + <p>Our asset storage can handle anything from text files to videos of several terrabytes, with automatic content-detection and full URL access control. In the back, everything goes Amazon S3 or other preferred cloud file store.</p> + </div> + </div> + <div class="row"> + <div class="col-md-4"> + <div class="bf-icon-wrap" style="font-size:40px; vertical-align: 15px;"><i aria-hidden="true" class="icon-apple"></i> <i aria-hidden="true" class="icon-android"></i></div> + <h3>SDKs</h3> + <p>We have full SDKs for <a href="https://github.com/apache/incubator-usergrid/tree/master/sdks/ios">iOS</a>, <a href="https://github.com/apache/incubator-usergrid/tree/master/sdks/android">Android</a>, and <a href="https://github.com/apache/incubator-usergrid/tree/master/sdks/html5-javascript">HTML5/JS</a> but also <a href="https://github.com/apache/incubator-usergrid/tree/master/sdks/nodejs">node.js</a>, <a href="https://github.com/apache/incubator-usergrid/tree/master/sdks/ruby-on-rails">Ruby on Rails</a>, pure <a href="https://github.com/apache/incubator-usergrid/tree/master/sdks/ruby">pure Ruby</a>, server-side <a href="https://github.com/apache/incubator-usergrid/tree/master/sdks/java">Java</a>, <a href="https://github.com/apache/incubator-usergrid/tree/master/sdks/dotnet">.NET / Windows</a> and <a href="https://github.com/apache/incubator-usergrid/tree/master/sdks/php">PHP</a>!</p> + </div> + <div class="col-md-4"> + <div class="bf-icon-wrap"><span style="font-size:60px" aria-hidden="true" class="icon-road"></span></div> + <h3>Java-based</h3> + <p>We build on standard Java components, such as Jersey, Jackson, Apache Cassandra and Lucene. That means you get operational predictability, all the benefits of the JVM, and easy extensibility.</p> + </div> + <div class="col-md-4"> + <div class="bf-icon-wrap"><i style="font-size:65px; vertical-align: -5px;" aria-hidden="true" class="icon-lock"></i></div> + <h3>Trusted</h3> + <p>Usergrid is deployed by <a href="https://baas.io/">Korea Telecom</a>, <a href="http://globo.com">Globo</a>, <a href="http://apigee.com">Apigee</a> and many Fortune 500 companies. Our biggest deployments have hundreds of nodes and handle millions of users.</p> + </div> + </div> + </div> + + </div> +</section> + +<section class="bf-questions"> + <div class="container"> + <div class="col-md-12 text-center cta"> + Interested? You can <a href="https://github.com/apache/incubator-usergrid/blob/master/stack#requirements" target="_blank" class="btn btn-inverse btn-lg">Try it on your Machine Now</a> <span class="avoidwrap">or <a href="/community/" class="btn btn-inverse btn-lg">Ask a Question on the Lists or at an Event Near You</a></span> + </div> + </div> +</section + +<section class="bf-news"> + <div class="container"> + + <div class="row"> + <div class="col-md-12 text-left"> + <h2>About the Project</h2> + <p>Apache Usergrid is currently undergoing Incubation at the Apache Software Foundation. Itâs an open-source Backend-as-a-Service (âBaaSâ or âmBaaSâ) composed of an integrated distributed NoSQL database, application layer and client tier with SDKs for developers looking to rapidly build web and/or mobile applications. It provides elementary services (user registration & management, data storage, file storage, queues) and retrieval features (full text search, geolocation search, joins) to power common app features.</p> + + <p>It is a multi-tenant system designed for deployment to public cloud environments (such as Amazon Web Services, Rackspace, etc.) or to run on traditional server infrastructures so that anyone can run their own private BaaS deployment.</p> + + <p>For architects and back-end teams, it aims to provide a distributed, easily extendable, operationally predictable and highly scalable solution. For front-end developers, it aims to simplify the development process by enabling them to rapidly build and operate mobile and web applications without requiring backend expertise.</p> + </div> + <!-- + <div class="col-md-4 text-left"> + <h2>Recent Releases</h2> + + + </div> + --> + </div> + + </div> +</section> + + + + +<footer class="bf-footer" role="contentinfo"> + <div class="container"> + <div class="row"> + <div class="col-md-2"> + <ul class="nav nav-list"> + <li class="nav-header"><a href="/">Home</a></li> + <li class="nav-header"><a href="/community/">Community</a></li> + <li><a href="/community/#events">Events</a></li> + <li><a href="/community/#mailing-lists">Mailing Lists</a></li> + <li><a href="/community/#deployments">Deployments</a></li> + <li><a href="/community/#committers">Commiters</a></li> + </ul> + </div> + <div class="col-md-2"> + <ul class="nav nav-list"> + <li class="nav-header"><a href="https://github.com/apache/incubator-usergrid/" target="_blank">Code</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/stack" target="_blank">Server Stack</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/portal" target="_blank">Admin Portal</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/ugc" target="_blank">ugc command line</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/sdks/ios" target="_blank">iOS SDK</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/sdks/android" target="_blank">Android SDK</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/sdks/html5-javascript" target="_blank">HTML5/JS SDK</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/sdks/nodejs" target="_blank">node.js module</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/sdks/ruby-on-rails" target="_blank">Ruby on Rails gem</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/sdks/ruby" target="_blank">Ruby gem</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/sdks/php" target="_blank">PHP SDK</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/sdks/java" target="_blank">Java SDK</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/sdks/dotnet" target="_blank">.NET / Windows SDK</a></li> + </ul> + </div> + <div class="col-md-2"> + <ul class="nav nav-list"> + <li class="nav-header">Resources</li> + <li><a href="http://github.com/apache/incubator-usergrid" target="_blank">GitHub Code</a></li> + <li><a href="docs" target="_blank">Docs</a></li> + <li><a href="https://issues.apache.org/jira/secure/RapidBoard.jspa?rapidView=23&view=planning&selectedIssue=USERGRID-362&epics=visible" target="_blank">JIRA Bug Tracker</a></li> + <li><a href="http://stackoverflow.com/search?q=usergrid" target="_blank">StackOverflow</a></li> + <li><a href="/community/#live">Live Chat</a></li> + <li><a href="https://twitter.com/usergrid" target="_blank">Twitter</a></li> + <li><a href="http://incubator.apache.org/projects/usergrid.html" target="_blank">Podling Listing</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/stack#requirements" target="_blank">Getting Started</a></li> + <li><a href="https://cwiki.apache.org/confluence/display/usergrid/GitHub+Based+Contribution+Workflow" target="_blank">Contribution Guidelines</a></li> + </ul> + </div> + <div class="col-md-2"> + <ul class="nav nav-list"> + <li class="nav-header">Apache</li> + <li><a href="http://www.apache.org/licenses/" target="_blank">License</a></li> + <li><a href="http://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship</a></li> + <li><a href="http://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a></li> + <li><a href="http://www.apache.org/security/">Security</a></li> + <li><a href="http://www.apache.org/" target="_blank">Apache Foundation</a></li> + </ul> + </div> + <div class="col-md-4"> + <a class="twitter-timeline" href="https://twitter.com/search?q=%23usergrid" data-widget-id="401499136807038976" data-related="usergrid" height="400px" style="overflow:hidden">Tweets about "usergrid"</a> + <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> + </div> + <!-- + <div class="col-md-4"> + <div class="input-group form-search"> + <input type="text" class="form-control search-query"> + <span class="input-group-btn"> + <button type="submit" class="btn btn-primary" data-type="last">Search</button> + </span> + </div> + </div> --> + </div> + <div class="row"> + <div id="copyright"> + <img src="/img/egg-logo.png" /><br/><br/> + <p>Apache Usergrid is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.</p> + <p>Copyright © 2013 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.<br> + Apache and the Apache feather logos are trademarks of The Apache Software Foundation.</p> + <p class="credits">Site designed & assembled with love by <a href="https://github.com/ryuneeee">@ryuneeee</a> + <a href="https://github.com/realbeast">@realbeast</a> + <a href="https://twitter.com/timanglade">@timanglade</a> + <a href="https://twitter.com/snoopdave">@snoopdave</a> .</p> + </div> + </div> + </div> +</footer> + +<script type="text/javascript" src="/js/head.js"></script> +<script type="text/javascript"> + head.js("/js/jquery-1.10.1.min.js", "/js/bootstrap.min.js", "/js/usergrid-site.js"); +</script> +<script> + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', 'UA-45815079-1', 'apache.org'); + ga('send', 'pageview'); + +</script> + + + +</body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/4a92ab09/content/releases/index.html ---------------------------------------------------------------------- diff --git a/content/releases/index.html b/content/releases/index.html new file mode 100644 index 0000000..a8579ef --- /dev/null +++ b/content/releases/index.html @@ -0,0 +1,235 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="utf-8"> + <title>Apache Usergrid (incubating) â </title> + <meta http-equiv="x-ua-compatible" content="ie=edge" /> + <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1" /> + <meta name="keywords" content="Apache Usergrid, Usergrid, BaaS, Backend-as-a-Service"> + <meta name="description" content="An open-source Backend-as-a-Service stack for web & mobile applications, based on RESTful APIs." /> + <meta property="og:title" content="Apache Usergrid" /> + <meta property="og:description" content="An open-source Backend-as-a-Service stack for web & mobile applications, based on RESTful APIs." /> + <!-- Loading Typekit --> + <script type="text/javascript" src="//use.typekit.net/ddl7izx.js"></script> + <script type="text/javascript">try{Typekit.load();}catch(e){}</script> + <!-- Loading Bootstrap --> + <link href="/bootstrap/bootstrap.min.css" rel="stylesheet" type='text/css'> + <link href="/css/bootflat.css" rel="stylesheet" type='text/css'> + <link href="/css/usergrid-site.css" rel="stylesheet" type='text/css'> + <link href="https://fonts.googleapis.com/css?family=Open+Sans:200,400,500,300,600,800,700,400italic,600italic,700italic,800italic,300italic" rel="stylesheet" type="text/css"> + <link href="/css/font-awesome.min.css" rel="stylesheet" type='text/css'> + + + + <!-- HTML5 shim, for IE6-8 support of HTML5 elements. All other JS at the end of file. --> + <!--[if lt IE 9]> + <script src="js/html5shiv.js"></script> + <script src="js/respond.min.js"></script> + <![endif]--> +</head> +<body> + + <header class="navbar navbar-inverse navbar-fixed-top bf-docs-nav " role="banner"> + <div class="container"> + <div class="navbar-header"> + <button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".bf-navbar-collapse"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + </div> + <a href="/" class="navbar-brand"> + <img id="home-logo" src="/img/apache_usergrid_logo_white_small.png" /> + </a> + <nav class="collapse navbar-collapse bf-navbar-collapse" role="navigation"> + <ul class="nav navbar-nav navbar-right"> + <li class=""><a href="/community/"><span class="icns icon-group"></span></a></li> + <li><a href="docs" target="_blank"><span class="icns icon-book"></span></a></li> + <li><a href="http://github.com/apache/incubator-usergrid" target="_blank"><span class="icns icon-github-sign"></span></a></li> + <!--<li><a href="https://trello.com/b/exQmJIOn/usergrid" target="_blank"><span class="icns icon-trello"></span></a></li>--> + <li><a href="https://issues.apache.org/jira/secure/RapidBoard.jspa?rapidView=23&view=planning&selectedIssue=USERGRID-362&epics=visible" + target="_blank"><span class="icns icon-bug"></span></a></li> + <li><a href="http://stackoverflow.com/search?q=usergrid" target="_blank"><span class="icns icon-stackexchange"></span></a></li> + <li><a href="/community/#live"><span class="icns icon-comments"></span></a></li> + <!--<li><a href="https://groups.google.com/forum/#!forum/usergrid" target="_blank"><span class="icns icon-envelope"></span></a></li>--> + <li><a href="https://twitter.com/usergrid" target="_blank"><span class="icns icon-twitter"></span></a></li> + <li><a href="https://cwiki.apache.org/confluence/display/usergrid/" target="_blank"><span class="icns icon-wiki"></span></a></li> + <li><a href="/releases/"><span class="icns icon-releases"></span></a></li> + </ul> + </nav> + </div> + </header> + + + + +<section class="bf-tagline"> + <div class="container"> + <div class="row"> + <div class="col-md-12"> + <h2>Usergrid Releases</h2> + </div> + </div> + </div> +</section> + +<section class="bf-releases"> + <div class="container"> + <div class="row"> + <div class="col-md-12" id="events"> + <h2 class="icns-download"><span>Releases</span></h2> + </div> + </div> + </br> + <div class="row"> + <div class="col-md-9 done"> + <p> + Releases of Usergrid are made available to the general public at no charge, under the <a href="http://apache.org/licenses/">Apache License</a>, in both binary and source distributions. + </p> + <p> + General Availability (GA) Releases - Usergrid 1.0.2 + </p> + <p> + Download the release from a <a href="http://www.apache.org/dyn/closer.cgi/incubator/usergrid/usergrid-1/v1.0.2">mirror: http://www.apache.org/dyn/closer.cgi/incubator/usergrid/usergrid-1/v1.0.2</a> + </p> + <p> + Project releases are approved by vote of the Apache Usergrid (incubating) Project Management Committee (PMC). Support for a release is provided by project volunteers on the project <a href="http://usergrid.incubator.apache.org/community/#mailing-lists">mailing lists</a>. Bugs found in a release may be discussed on the list and reported through the <a href="https://issues.apache.org/jira/browse/USERGRID">issue tracker</a>. The user mailing list and issue tracker are the only support options hosted by the Apache Usergrid project. + </p> + <p> + Note: When downloading from a mirror, please be sure to verify that checksums and signatures are correct. To do so, use the checksum and signature files from the main Apache site at <a href="https://dist.apache.org/repos/dist/release/incubator/usergrid/usergrid-1/v1.0.2/">https://dist.apache.org/repos/dist/release/incubator/usergrid/usergrid-1/v1.0.2/</a>. Find here the KEYS file, which contains all OpenPGP keys we use to sign releases here: <a href="https://dist.apache.org/repos/dist/release/incubator/usergrid/KEYS">https://dist.apache.org/repos/dist/release/incubator/usergrid/KEYS</a> + </p> + <p> + The PGP signatures can be verified using PGP or GPG. First download the <a href="https://dist.apache.org/repos/dist/release/incubator/usergrid/KEYS">KEYS</a> as well as the <a href="https://dist.apache.org/repos/dist/release/incubator/usergrid/usergrid-1/v1.0.2/">asc signature</a> file for the particular distribution. Then verify the signatures using: + </p> + <p> + % pgpk -a KEYS + </br></br> + % pgpv ${filename}.tar.gz.asc + </br></br> + or + </br></br> + % pgp -ka KEYS + </br></br> + % pgp ${filename}.tar.gz.asc + </br></br> + or + </br></br> + % gpg --import KEYS + </br></br> + % gpg --verify ${filename}.tar.gz.asc + </br></br> + </p> + <p> + Alternatively, you can verify the MD5 signature on the files. A Unix program called md5 or md5sum is included in many Unix distributions. It is also available as part of <a href="http://www.gnu.org/software/textutils/textutils.html">GNU Textutils</a>. Windows users can get binary md5 programs from <a href="http://www.fourmilab.ch/md5/">here</a>, <a href="http://www.pc-tools.net/win32/md5sums/">here</a>, or <a href="http://www.slavasoft.com/fsum/">here</a>. + <p> + If you want to build directly from the sources, please check the <a href="/docs/getting-up-and-running-locally/">Project Docs</a>. + </p> + </div> + </div> + </div> +</section> + + + + +<footer class="bf-footer" role="contentinfo"> + <div class="container"> + <div class="row"> + <div class="col-md-2"> + <ul class="nav nav-list"> + <li class="nav-header"><a href="/">Home</a></li> + <li class="nav-header"><a href="/community/">Community</a></li> + <li><a href="/community/#events">Events</a></li> + <li><a href="/community/#mailing-lists">Mailing Lists</a></li> + <li><a href="/community/#deployments">Deployments</a></li> + <li><a href="/community/#committers">Commiters</a></li> + </ul> + </div> + <div class="col-md-2"> + <ul class="nav nav-list"> + <li class="nav-header"><a href="https://github.com/apache/incubator-usergrid/" target="_blank">Code</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/stack" target="_blank">Server Stack</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/portal" target="_blank">Admin Portal</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/ugc" target="_blank">ugc command line</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/sdks/ios" target="_blank">iOS SDK</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/sdks/android" target="_blank">Android SDK</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/sdks/html5-javascript" target="_blank">HTML5/JS SDK</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/sdks/nodejs" target="_blank">node.js module</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/sdks/ruby-on-rails" target="_blank">Ruby on Rails gem</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/sdks/ruby" target="_blank">Ruby gem</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/sdks/php" target="_blank">PHP SDK</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/sdks/java" target="_blank">Java SDK</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/sdks/dotnet" target="_blank">.NET / Windows SDK</a></li> + </ul> + </div> + <div class="col-md-2"> + <ul class="nav nav-list"> + <li class="nav-header">Resources</li> + <li><a href="http://github.com/apache/incubator-usergrid" target="_blank">GitHub Code</a></li> + <li><a href="docs" target="_blank">Docs</a></li> + <li><a href="https://issues.apache.org/jira/secure/RapidBoard.jspa?rapidView=23&view=planning&selectedIssue=USERGRID-362&epics=visible" target="_blank">JIRA Bug Tracker</a></li> + <li><a href="http://stackoverflow.com/search?q=usergrid" target="_blank">StackOverflow</a></li> + <li><a href="/community/#live">Live Chat</a></li> + <li><a href="https://twitter.com/usergrid" target="_blank">Twitter</a></li> + <li><a href="http://incubator.apache.org/projects/usergrid.html" target="_blank">Podling Listing</a></li> + <li><a href="https://github.com/apache/incubator-usergrid/blob/master/stack#requirements" target="_blank">Getting Started</a></li> + <li><a href="https://cwiki.apache.org/confluence/display/usergrid/GitHub+Based+Contribution+Workflow" target="_blank">Contribution Guidelines</a></li> + </ul> + </div> + <div class="col-md-2"> + <ul class="nav nav-list"> + <li class="nav-header">Apache</li> + <li><a href="http://www.apache.org/licenses/" target="_blank">License</a></li> + <li><a href="http://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship</a></li> + <li><a href="http://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a></li> + <li><a href="http://www.apache.org/security/">Security</a></li> + <li><a href="http://www.apache.org/" target="_blank">Apache Foundation</a></li> + </ul> + </div> + <div class="col-md-4"> + <a class="twitter-timeline" href="https://twitter.com/search?q=%23usergrid" data-widget-id="401499136807038976" data-related="usergrid" height="400px" style="overflow:hidden">Tweets about "usergrid"</a> + <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> + </div> + <!-- + <div class="col-md-4"> + <div class="input-group form-search"> + <input type="text" class="form-control search-query"> + <span class="input-group-btn"> + <button type="submit" class="btn btn-primary" data-type="last">Search</button> + </span> + </div> + </div> --> + </div> + <div class="row"> + <div id="copyright"> + <img src="/img/egg-logo.png" /><br/><br/> + <p>Apache Usergrid is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.</p> + <p>Copyright © 2013 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.<br> + Apache and the Apache feather logos are trademarks of The Apache Software Foundation.</p> + <p class="credits">Site designed & assembled with love by <a href="https://github.com/ryuneeee">@ryuneeee</a> + <a href="https://github.com/realbeast">@realbeast</a> + <a href="https://twitter.com/timanglade">@timanglade</a> + <a href="https://twitter.com/snoopdave">@snoopdave</a> .</p> + </div> + </div> + </div> +</footer> + +<script type="text/javascript" src="/js/head.js"></script> +<script type="text/javascript"> + head.js("/js/jquery-1.10.1.min.js", "/js/bootstrap.min.js", "/js/usergrid-site.js"); +</script> +<script> + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', 'UA-45815079-1', 'apache.org'); + ga('send', 'pageview'); + +</script> + + + +</body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/4a92ab09/docs/README.md ---------------------------------------------------------------------- diff --git a/docs/README.md b/docs/README.md index 9f65b40..07ab32b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,8 +1,6 @@ # Apache Usergrid Documentation -Usergrid documentation is written in [Markdown](https://help.github.com/articles/markdown-basics/) -(*.md) and RST (.rst) formats and we use the Python based [Sphinx-Docs](http://sphinx-doc.org/) -documentation system to transform our Markdown and RST files to HTML format. +Usergrid documentation is written in [Markdown](https://help.github.com/articles/markdown-basics/) (*.md) and RST (.rst) formats and we use the Python based [Sphinx-Docs](http://sphinx-doc.org/) documentation system to transform our Markdown and RST files to HTML format. ## Prerequisites @@ -11,39 +9,45 @@ Sphinx requires Python and pip. Once you have Python, you can install sphinx and $ sudo easy_install sphinx $ sudo easy_install pip -## How to the Usergrid documentation using Sphinx +## How to build the Usergrid documentation using Sphinx Sphinx runs via a Makefile in this, the docs directory. So, cd to this directory and make html: cd $usergrid/docs make clean html -## How to update documentations in Usergrid site +## How to update the Usergrid docs -For most changes you simply edit the Markdown (.md) and reST (.rst) files where and -commit your changes to Git. +Find the Markdown (.md) or reST (.rst) files that you need to change, edit them and then run ``make clean html`` to generate the HTML into the ``target/html`` directory, where you can preview your changes. ### Note the difference between RST and Markdown files -Note that Sphinx's native format is [reStructuredText](http://docutils.sourceforge.net/rst.html) -(RST) and not Markdown. This causes some issues. For example, using Sphinx directives in -Markdown files sometimes works and sometimes does not. RST is a different format than Markdown -and it has a different set of directives, some very useful for organizing a large set of -documentation files. +Note that Sphinx's native format is [reStructuredText](http://docutils.sourceforge.net/rst.html) (RST) and not Markdown. This causes some issues. For example, using Sphinx directives in Markdown files sometimes works and sometimes does not. RST is a different format than Markdown and it has a different set of directives, some very useful for organizing a large set of documentation files. -### The Table of Contents +### Updating the Table of Contents The Table of Contents for the documentation is in index.rst, which ties everything together with a series of RST __toctree__ directives. All other files should be written in Markdown, unless they need some special RST directives that will not work in Markdown. -### Other Tables +### Dealing with other tables -A note about tables: simple tables are easy and you can find examples (e.g. connecting-entities.md) -but for tables with multiple lines in each cell, you'll probably want to use a raw HTML table, -and there are plenty of examples of that around too. +A note about tables. Markdown and reST do not have very good table support. Simple tables are easy to do and you can find examples (e.g. connecting-entities.md) but for tables with multiple lines in each cell, you'll probably want to use a raw HTML table, and there are plenty of examples of that around too. -### The REST API documentation +## How to publish the Usergrid docs to Usergrid website + +First you generate the HTML for the docs from the Markdown and reST sources like so: + + cd $usergrid/docs + make clean html + +To update the Usergrid website you must copy the udpated docs files from ``target/html`` directory to the website directory at the root of the Usergrid project, i.e. ``${usergrid-project-dir}/website/docs``. + +You can do this by running the script ``update-website.sh``. + +Once you've done that then you should follow the instructions in the website/README.md file, which explains how to update the website. + +## Updating the REST API reference The REST API documentation in ``rest-endpoints/api-docs.md`` is generated from a Swagger file in the directory ``src/main/resources``, so DO NOT edit that file directly. @@ -51,19 +55,16 @@ directory ``src/main/resources``, so DO NOT edit that file directly. If you need to update the REST API docs, you should edit the usergrid-swagger.yaml file and then re-generate the file. -If you need to change the formatting of the REST API docs, then you will need to edit the Mustache -templates in ``src/main/resource`` and you may need to edit the Groovy script that does the -generation: ``src/main/groovy/usergrid.ApiDocGenerator``. +If you need to change the formatting of the REST API docs, then you will need to edit the Mustache templates in ``src/main/resource`` and you may need to edit the Groovy script that does the generation: ``src/main/groovy/usergrid.ApiDocGenerator``. You will need: * Groovy 2.x * [Mustache.java](https://github.com/spullara/mustache.java) -Unfortunately, you will have to Git Clone Mustatche.java before you can run the generation script. +__NOTE__: Mustache.hava is not in Maven Central so unfortunately, you will have to Git Clone Mustache.java before you can run the generation script. This is the command to run the generation: groovy src/main/groovy/usergrid.ApiDocGenerator.groovy -The script will update the file ``rest-endpoints/api-docs.md`` and when you are happy with your -update you should commit and push that file with Git. +The script will update the file ``rest-endpoints/api-docs.md`` and when you are happy with your update you should commit and push that file with Git. http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/4a92ab09/docs/update-api-docs.sh ---------------------------------------------------------------------- diff --git a/docs/update-api-docs.sh b/docs/update-api-docs.sh index e07eabf..0885773 100755 --- a/docs/update-api-docs.sh +++ b/docs/update-api-docs.sh @@ -1,2 +1,4 @@ -groovy src/main/groovy/ApiDocGenerator.groovy +#!/usr/bin/env bash +# Updating API Docs requires Mustache.java +groovy src/main/groovy/ApiDocGenerator.groovy http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/4a92ab09/docs/update-website.sh ---------------------------------------------------------------------- diff --git a/docs/update-website.sh b/docs/update-website.sh new file mode 100755 index 0000000..691e3cf --- /dev/null +++ b/docs/update-website.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +# make dcoumenatation and copy to website directry +make clean html +cp -r target/html/* ../content/docs + http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/4a92ab09/website/README.md ---------------------------------------------------------------------- diff --git a/website/README.md b/website/README.md new file mode 100644 index 0000000..bea925e --- /dev/null +++ b/website/README.md @@ -0,0 +1,54 @@ +# Apache Usergrid Website + +This directory contains the source files for the project website. Website content is written in [Markdown](https://help.github.com/articles/markdown-basics) and the site files are generated from that source by a tool called [Pandoc](http://johnmacfarlane.net/pandoc). + +Source files for the website are in ``${usergrid-project-dir}/website/content`` + +Generated files for the website are in ``${usergrid-project-dir}/content`` + +The website is updated by a "sync" tool that monitors the __asf-site__ branch of our Git repo, so after to make changes you must push your updated source and generated files to that branch. +The content will be published to the [Usegrid website](http://usergrid.incubator.apache.org), after a 5-20 minute delay. + +## Prerequsites + +To generate the site locally, you need Ruby, Python, Pandoc and a couple of Ruby Gems. + +Install Pandoc (Haskell-based markup format converter): + + http://johnmacfarlane.net/pandoc/installing.html + +Install Pygments (Python-basd syntax coloring library): + + $ sudo easy_install Pygments + +Install Nanoc and other Ruby Gems needed: + + $ sudo gem install nanoc pygments.rb htmlentities pandoc-ruby nokogiri rack mime-types + +## How to change/update the website + +### 1. Find and edit the source files you need to change + +Generally, you should make your changes in the __master__ branch unless you have a very good reason to do otherwise. When you're ready to publish, merge them to the __asf-site__ branch. + +If you are changing the actual content of the site, then find Markdown file that you need to edit under the ``content/docs`` directory and make your change. + +If you need to change the layout or styling of the site, then you will probably need to change an HTML, JS or CSS file under the ``content`` directory. + +## 2. Test your changes locally + +To test locally, you can use the autocompiler (will build changes on every request) and check the website at [http://0.0.0.0:3000](http://0.0.0.0:3000) + + $ nanoc autocompile + +## 3. Publish your changes to the site + +Run the nanoc compiler to generate the . It is configured via the ``nanoc.yaml`` to place website files into the ``content`` directory at the top + + $ nanoc compile + +Run ``git status`` and you should see your changes plus some update files under the ``${usergrid-project-dir}/content`` directory. + +Once you are happy with your changes, commit them, merge to the __asf-site__ branch and push. + +The site should update in 5-10 minutes and if not [file a JIRA against the INFRA project](https://issues.apache.org/jira/browse/INFRA) or ask for advice on the Infrastructure project's HipChat room [#asfinfra](https://www.hipchat.com/g4P84gemn).