anchor.diff:                      "activeFlag" : true
                   }
               ]
  -
  -# Group User Endpoints
  -## User Endpoint Security
  -SnapBundle only permits users with a `roleType` of **Administrator** to set or reset other user account passwords.
  -
  -## Overview
  -The initial registration account is automatically defined with a `roleType` of **Administrator**. Additional users can be 
  -created using any valid email address.
  -
  -### SnapBundle is not a directory service 
  -The only metadata collected about a user includes first name, last name, email address, and role type. The use of the email 
  -address is expected to provide a suitable means of identification of an actual user within the account.
  -
  -The platform's default directory service plugin relies on the [Stormpath](http://stormpath.com "Stormpath Web Site") 
  -authentication and authorization PaaS as its default directory service provider. **This means that SnapBundle doesn't manage 
  -any user credentials, delegating all of this responsibility to Stormpath.**
  -
  -Direct access to an account's Stormpath data is prohibited. For example, password self-service is only accessible via the 
  -SnapBundle Account Management self-service endpoints.  
  -  
  -**It is impossible to retrieve credentials through the API since it is neither stored nor managed by SnapBundle**.  
  -
  -## User Fields
  -Field | Data Type | Required | Can Update | Serialization Level | Default Value
  ------------- | ------------- | ------------ | ------------ | ------------ | ------------
  -urn | String  | true | false | Minimum | Generated
  -account | IAccount  | true | fase | Full | Generated
  -lastModifiedTimestamp | long   | true | false | Standard | Generated
  -moniker | String  | false | true | Full | null
  -emailAddress | String  | true | false | Minimum | 
  -givenName | String | false | true | Full | null
  -surname | String | false | true | Full | null
  -roleType | RoleType  | true  | true | Minimum | User 
  -
  -### Field Notes
  -- The `roleType` field is used as a security filter that may restrict the user from certain sensitive operations 
  -*in future API versions*. The only supported values at this time are *Administrator* and *User*. 
  -
  -## User Management [/users]
  -### Create a new user associated with the specified email address   [PUT]
  -
  -The following user fields may be used to create a new record:
  -
  -- `emailAddress` is required and constrained to 128 characters 
  -- `roleType` is required and constrained to the case-sensitive values of **Administrator** or **User**
  -- `givenName` is optional and constrained to 50 characters and defaults to **null**
  -- `surname` is optional and constrained to 50 characters; it defaults to **null**
  -- `moniker` is optional and constrained to 2048 characters may be omitted; defaults to **null**
  -
  -#### Idempotent Behavior
  -This endpoint is idempotent and will respond with an appropriate HTTP status code to indicate the actual result 
  -
  -- **201 SUCCESS_CREATED** if the record is new
  -- **200 SUCCESS_OK** if a User with the given `emailAddress` already existed in the database, in which 
  -case **no data is merged; existing record is left as-is**
  -
  -+ Request (application/json)
  -
  -    + Headers
  -
  -            Authorization: Basic eW91QGZvby5jb20gOiBOM3dzM2NyM3Q/
  -            
  -    + Body
  -    
  -            {
  -                "emailAddress": "coworker@foo.com",
  -                "roleType": "User"
  -            }
  -            
  -+ Response 201 (application/json)
  -
  -    + Headers
  -
  -            SnapBundle-Event : UserDefined
  -            
  -    + Body
  -    
  -            {
  -                "code" : 1,
  -                "message" : "r@nd0mP@ssword!"
  -            }
  -            
  -+ Response 200 (application/json)
  -
  -    + Headers
  -
  -            SnapBundle-Event : UserAccessed
  -            
  -    + Body
  -    
  -            {
  -                "code" : 1,
  -                "message" : "urn:uuid:66b7d3e9-69e1-499e-a867-9c4a939c6f7d"
  -            }
  -
  -+ Response 400 (application/json)
  -
  -    + Body
  -    
  -            {
  -                "code" : -5,
  -                "message" : "JSON is missing a required field: emailAddress"
  -            }
  -            
  -
  -### Update an existing user [POST]
  -
  -The request body must include a valid `emailAddress` field. Only those fields being updated need to 
  -be included in the JSON body. For example, if you only want to update the `surname` of the user, only 
  -include that field in the request body.
  -
  -+ Request (application/json)
  -
  -    + Headers
  -
  -            Authorization: Basic eW91QGZvby5jb20gOiBOM3dzM2NyM3Q/
  -            
  -    + Body
  -    
  -            {
  -                "emailAddress": "coworker@foo.com",
  -                "givenName": "Homeslice",
  -                "surname": "Simpson"
  -            }
  -            
  -+ Response 204
  -
  -    + Headers
  -
  -            SnapBundle-Event : UserUpdated    
  -
  -            
  -+ Response 400 (application/json)
  -
  -    + Body
  -    
  -            {
  -                "code" : -5,
  -                "message" : "JSON is missing a required field: identification"
  -            }
  -            
  -## Lookup Specific User by URN [/users/{urn}{?view}]
  -### Lookup a specific user by its system-assigned URN key [GET]
  -
  -+ Parameters
  -    + urn (required, string, `urn:uuid:66b7d3e9-69e1-499e-a867-9c4a939c6f7d`) ... System-assigned URN assigned at creation
  -    + view (optional, string, `Standard`) ... A valid JSON Serialization View name (case-sensitive)
  -
  -+ Request
  -    
  -    + Headers
  -
  -            Authorization: Basic eW91QGZvby5jb20gOiBOM3dzM2NyM3Q/
  -            
  -+ Response 200 (application/json)
  -
  -    + Headers
  -
  -            SnapBundle-Event : UserAccessed
  -            SnapBundle-View : Standard
  -            
  -    + Body
  -    
  -            {
  -                "urn": "urn:uuid:66b7d3e9-69e1-499e-a867-9c4a939c6f7d",
  -                "lastModifiedTimestamp" : 1390607277299,
  -                "emailAddress" : "coworker@foo.com",
  -                "roleType" : "User"
  -            }
  -
  -
  -+ Response 204 
  - 
  -
  -## Lookup Specific User by Email Address [/users/user/{emailAddress}{?view}]
  -### Lookup a specific user by their email address [GET]
  -
  -+ Parameters
  -    + emailAddress (required, string, `coworker@foo.com`) ... Exact case-sensitive email address to locate
  -    + view (optional, string, `Standard`) ... A valid JSON Serialization View name (case-sensitive)
  -
  -+ Request
  -
  -    + Headers
  -
  -            Authorization: Basic eW91QGZvby5jb20gOiBOM3dzM2NyM3Q/
  -            
  -+ Response 200 (application/json)
  -
  -    + Headers
  -
  -            SnapBundle-Event : UserAccessed
  -            SnapBundle-View : Standard
  -            
  -    + Body
  -    
  -            {
  -                "urn": "urn:uuid:66b7d3e9-69e1-499e-a867-9c4a939c6f7d",
  -                "lastModifiedTimestamp" : 1390607277299,
  -                "emailAddress" : "coworker@foo.com",
  -                "roleType" : "User"
  -            }
  -
  -## Change or Reset User Password [/users/user]
  -### Initiate a reset password workflow or specifically define the user's password [POST]
  -
  -The request body must include a valid `emailAddress` field. If the body only includes an `emailAddress` then
  -the password reset workflow will be initiated. However, if the body also includes a `newPassword` field, then
  -the user's password will be changed to that password.
  -
  -+ Request (application/json)
  -
  -    + Headers
  -
  -            Authorization: Basic eW91QGZvby5jb20gOiBOM3dzM2NyM3Q/
  -            
  -    + Body
  -    
  -            {
  -                "emailAddress": "coworker@foo.com",
  -            }
  -            
  -+ Response 200
  -
  -    + Headers
  -
  -            SnapBundle-Event : UserPasswordReset    
  -
  -    + Body
  -    
  -            {
  -                "code" : 1,
  -                "message" : "Password has been reset"
  -            }
  -            
  -+ Response 400 (application/json)
  -
  -    + Body
  -    
  -            {
  -                "code" : -5,
  -                "message" : "JSON is missing a required field: emailAddress"
  -            }
   
   # Group Object Endpoints
   ## Overview
  
positive.code:             }
              
  + Response 204 
  
  # Group Geospatial Endpoints
  ## Overview
  
negative.code:             {
                  "code" : 1,
                  "message": "Password reset email has been sent"
              }
  
  # Group User Endpoints
  ## User Endpoint Security
  SnapBundle only permits users with a `roleType` of **Administrator** to set or reset other user account passwords.
  
  ## Overview
  The initial registration account is automatically defined with a `roleType` of **Administrator**. Additional users can be
  created using any valid email address.
  
  ### SnapBundle is not a directory service
  The only metadata collected about a user includes first name, last name, email address, and role type. The use of the email
  address is expected to provide a suitable means of identification of an actual user within the account.
  
  The platform's default directory service plugin relies on the [Stormpath](http://stormpath.com "Stormpath Web Site")
  authentication and authorization PaaS as its default directory service provider. **This means that SnapBundle doesn't manage
  any user credentials, delegating all of this responsibility to Stormpath.**
  
  Direct access to an account's Stormpath data is prohibited. For example, password self-service is only accessible via the
  SnapBundle Account Management self-service endpoints.
  
  **It is impossible to retrieve credentials through the API since it is neither stored nor managed by SnapBundle**.
  
  ## User Fields
  Field | Data Type | Required | Can Update | Serialization Level | Default Value
  ------------ | ------------- | ------------ | ------------ | ------------ | ------------
  urn | String  | true | false | Minimum | Generated
  account | IAccount  | true | fase | Full | Generated
  lastModifiedTimestamp | long   | true | false | Standard | Generated
  moniker | String  | false | true | Full | null
  emailAddress | String  | true | false | Minimum |
  givenName | String | false | true | Full | null
  surname | String | false | true | Full | null
  roleType | RoleType  | true  | true | Minimum | User
  
  ### Field Notes
  - The `roleType` field is used as a security filter that may restrict the user from certain sensitive operations
  *in future API versions*. The only supported values at this time are *Administrator* and *User*.
  
  ## User Management [/users]
  ### Create a new user associated with the specified email address   [PUT]
  
  The following user fields may be used to create a new record:
  
  - `emailAddress` is required and constrained to 128 characters
  - `roleType` is required and constrained to the case-sensitive values of **Administrator** or **User**
  - `givenName` is optional and constrained to 50 characters and defaults to **null**
  - `surname` is optional and constrained to 50 characters; it defaults to **null**
  - `moniker` is optional and constrained to 2048 characters may be omitted; defaults to **null**
  
  #### Idempotent Behavior
  This endpoint is idempotent and will respond with an appropriate HTTP status code to indicate the actual result
  
  - **201 SUCCESS_CREATED** if the record is new
  - **200 SUCCESS_OK** if a User with the given `emailAddress` already existed in the database, in which
  case **no data is merged; existing record is left as-is**
  
  + Request (application/json)
  
      + Headers
  
              Authorization: Basic eW91QGZvby5jb20gOiBOM3dzM2NyM3Q/
  
      + Body
  
              {
                  "emailAddress": "coworker@foo.com",
                  "roleType": "User"
              }
  
  + Response 201 (application/json)
  
      + Headers
  
              SnapBundle-Event : UserDefined
  
      + Body
  
              {
                  "code" : 1,
                  "message" : "r@nd0mP@ssword!"
              }
  
  + Response 200 (application/json)
  
      + Headers
  
              SnapBundle-Event : UserAccessed
  
      + Body
  
              {
                  "code" : 1,
                  "message" : "urn:uuid:66b7d3e9-69e1-499e-a867-9c4a939c6f7d"
              }
  
  + Response 400 (application/json)
  
      + Body
  
              {
                  "code" : -5,
                  "message" : "JSON is missing a required field: emailAddress"
              }
  
  
  ### Update an existing user [POST]
  
  The request body must include a valid `emailAddress` field. Only those fields being updated need to
  be included in the JSON body. For example, if you only want to update the `surname` of the user, only
  include that field in the request body.
  
  + Request (application/json)
  
      + Headers
  
              Authorization: Basic eW91QGZvby5jb20gOiBOM3dzM2NyM3Q/
  
      + Body
  
              {
                  "emailAddress": "coworker@foo.com",
                  "givenName": "Homeslice",
                  "surname": "Simpson"
              }
  
  + Response 204
  
      + Headers
  
              SnapBundle-Event : UserUpdated
  
  
  + Response 400 (application/json)
  
      + Body
  
              {
                  "code" : -5,
                  "message" : "JSON is missing a required field: identification"
              }
  
  ## Lookup Specific User by URN [/users/{urn}{?view}]
  ### Lookup a specific user by its system-assigned URN key [GET]
  
  + Parameters
      + urn (required, string, `urn:uuid:66b7d3e9-69e1-499e-a867-9c4a939c6f7d`) ... System-assigned URN assigned at creation
      + view (optional, string, `Standard`) ... A valid JSON Serialization View name (case-sensitive)
  
  + Request
  
      + Headers
  
              Authorization: Basic eW91QGZvby5jb20gOiBOM3dzM2NyM3Q/
  
  + Response 200 (application/json)
  
      + Headers
  
              SnapBundle-Event : UserAccessed
              SnapBundle-View : Standard
  
      + Body
  
              {
                  "urn": "urn:uuid:66b7d3e9-69e1-499e-a867-9c4a939c6f7d",
                  "lastModifiedTimestamp" : 1390607277299,
                  "emailAddress" : "coworker@foo.com",
                  "roleType" : "User"
              }
  
  
  + Response 204
  
  
  ## Lookup Specific User by Email Address [/users/user/{emailAddress}{?view}]
  ### Lookup a specific user by their email address [GET]
  
  + Parameters
      + emailAddress (required, string, `coworker@foo.com`) ... Exact case-sensitive email address to locate
      + view (optional, string, `Standard`) ... A valid JSON Serialization View name (case-sensitive)
  
  + Request
  
      + Headers
  
              Authorization: Basic eW91QGZvby5jb20gOiBOM3dzM2NyM3Q/
  
  + Response 200 (application/json)
  
      + Headers
  
              SnapBundle-Event : UserAccessed
              SnapBundle-View : Standard
  
      + Body
  
              {
                  "urn": "urn:uuid:66b7d3e9-69e1-499e-a867-9c4a939c6f7d",
                  "lastModifiedTimestamp" : 1390607277299,
                  "emailAddress" : "coworker@foo.com",
                  "roleType" : "User"
              }
  
  ## Change or Reset User Password [/users/user]
  ### Initiate a reset password workflow or specifically define the user's password [POST]
  
  The request body must include a valid `emailAddress` field. If the body only includes an `emailAddress` then
  the password reset workflow will be initiated. However, if the body also includes a `newPassword` field, then
  the user's password will be changed to that password.
  
  + Request (application/json)
  
      + Headers
  
              Authorization: Basic eW91QGZvby5jb20gOiBOM3dzM2NyM3Q/
  
      + Body
  
              {
                  "emailAddress": "coworker@foo.com",
              }
  
  + Response 200
  
      + Headers
  
              SnapBundle-Event : UserPasswordReset
  
      + Body
  
              {
                  "code" : 1,
                  "message" : "Password has been reset"
              }
  
  + Response 400 (application/json)
  
      + Body
  
              {
                  "code" : -5,
                  "message" : "JSON is missing a required field: emailAddress"
              }
  
  # Group Device Endpoints
  