anchor.diff:  # SnapBundle™ Platform API
   SnapBundle™ is a platform purposefully built to be an application's contextual data store.
   
  -NOTE: This document is a **work in progress**.
  +**NOTE:** This document is a **work in progress**.
  +
  +## General Design Notes
  +### URNs as Keys
  +All SnapBundle™ objects are keyed off of a **UUID**, represented using the standard URN nomenclature for a UUID:  **urn:uuid:<opaque key>**
  +
  +> Any API call that requires a `{referenceUrn}` parameter must provide a full URN UUID reference, e.g. *urn:uuid:66b7d3e9-69e1-499e-a867-9c4a939c6f7d*
  +
  +### Tracking Modification Timestamps
  +All SnapBundle objects maintain a `lastModifiedTimestamp` field to track when the record was last updated. The purpose of this timestamp is to provide a valid eTag for HTTP cache support.
  +
  +### Moniker: Arbitrary External System Alias
  +All SnapBundle objects support a `moniker` field that can be used as the developer sees fit. This field is **never** interpreted by the platform, and it may be null if the developer chooses not to use it (null is the default value if the field is omitted in a **PUT** call).
  +
  +> The SnapBundle authors promise developers that the platform itself will never rely on the moniker value for any feature, now or in the future, leaving it entirely available for 3rd party developers to use as they see fit in their applications.
  +
  +A popular usage of the `moniker` field is to provide a logical link between an SnapBundle object, say an RFID Object record, and some type of proprietary (abstract) key in your back office account, e.g. ADDR-123-43-2013. This could be a link to a legacy key, or a JSON or XML stanza for more structure content.
  +
  +**NOTE:** The `moniker` field is **limited to a maximum of 2048 characters** at this time. If you need more space than that, create a **File** and use the moniker to store the file's system-assigned URN.
  +
  +### JSON Serialization Views
  +Every **GET** endpoint allows the developer to control the verbosity of the JSON response. Generally, this fact is encapsulated and of little concern to most developers. However, it is possible in rare situations to observe the same identical object, as indicated by its URN key, serialized with more (or less) fields. The serialization levels supported by the platform include:
  +
  +   * **Published** - Publicly accessible fields (specific to the Extension Framework)
  +
  +   * **Minimum** - All Published fields, plus highly pertinent fields
  +
  +   * **Standard** - [**default**] All Minimum fields, plus additional contextual fields
  +
  +   * **Full** - All Standard fields, plus fields rarely referenced
  +
  +
  +   * **Restricted** - Opaque fields accessible only to the SnapBundle platform's cloud-side code and *never transmitted over the wire* under any circumstance. These fields are *never updatable* by the developer. If a `view` query parameter is set to **Restricted**, it returns **Standard**.
  +
  +#### Requesting a Specific Serialization View
  +Every **GET** endpoint is serialized using the **Standard* JSON view by default, but can be overrode by the developer by including a `view` query string parameter set to the case-sensitive name of one of the serialization views.
  +
  +The query string parameter `view` must be a case-sensitive value matching one of the following: {`Published`, `Minimum`, `Standard`, or `Full`}. _Any value outside of this range automatically defaults to `Standard`. 
  +
  +**NOTE:** The default serialization view for any POST that returns a response is `Standard` and cannot be changed at this time.
  +
  +## Support
  +The fastest way to obtain support is by emailing <engineering@tagdynamics.net>.
   
   # Group Registration Endpoints
   Every SnapBundle Account belongs to a _security realm_. By default, the registration endpoint will extract the domain name from your email address. However, if you are using a popular email service like GMail or Yahoo, you **must** provide a custom realm name at registation. Use the **Realm Availability** endpoint to see if your desired realm name is available.   
  
positive.code: 
      + Headers
  
              SnapBundle-Event: AccountAccessed
              
      + Body
      
  
negative.code:             }
  
  ## Change Your Password [/account/password/change]
  ### Change the authenticated user's password, presuming they know their existing password to change to a new password. [POST]
  
  + Request (application/json)
  
  