System Metadata

Cloud CMS automatically tracks system metadata for all of the objects that you create within it. System metadata consists of non-data values that describe things like who created an object and when it was modified.

System Metadata

This system metadata is tracked under the special _system key at the root of your objects. This system metadata is read-only in so far as it is tracked by Cloud CMS automatically.

It is available for any object returned by any of the Cloud CMS APIs by simply specifying metadata=true as a request parameter.

System metadata can be used within your queries just like any other key/value pair within your data set. For nodes, system metadata does not participate in schema validation.

Creation

Cloud CMS automatically tracks system metadata around the creation of every object:

Key Type Description
_system.created_on.timestamp string Creation datetime (UST) in friendly format ("dd-MMM-yyyy HH:mm:ss")
_system.created_on.iso_8601 string Creation datetime (UST) in ISO 8601 format ("yyyy-MM-dd'T'HH:mm:ssXXX")
_system.created_on.year number Creation datetime (UST) year
_system.created_on.month number Creation datetime (UST) month
_system.created_on.day_of_month number Creation datetime (UST) day of month (0 - 30)
_system.created_on.hour number Creation datetime (UST) hour
_system.created_on.minute number Creation datetime (UST) minute
_system.created_on.second number Creation datetime (UST) second
_system.created_on.millisecond number Creation datetime (UST) millisecond
_system.created_on.ms number Creation datetime (UST) milliseconds since Unix epoch (current time millis)
_system.created_by string The user name of the principal who created this object
_system.created_by_principal_id string The ID of the principal who created this object
_system.created_by_principal_domain_id string The Domain ID of the principal who created this object

Last Modification

Cloud CMS automatically tracks system metadata around the last modification of every object:

Key Type Description
_system.modified_on.timestamp string Last modification datetime (UST) in friendly format ("dd-MMM-yyyy HH:mm:ss")
_system.modified_on.iso_8601 string Last modification datetime (UST) in ISO 8601 format ("yyyy-MM-dd'T'HH:mm:ssXXX")
_system.modified_on.year number Last modification datetime (UST) year
_system.modified_on.month number Last modification datetime (UST) month
_system.modified_on.day_of_month number Last modification datetime (UST) day of month (0 - 30)
_system.modified_on.hour number Last modification datetime (UST) hour
_system.modified_on.minute number Last modification datetime (UST) minute
_system.modified_on.second number Last modification datetime (UST) second
_system.modified_on.millisecond number Last modification datetime (UST) millisecond
_system.modified_on.ms number Last modification datetime (UST) milliseconds since Unix epoch (current time millis)
_system.modified_by string The user name of the principal who last modified this object
_system.modified_by_principal_id string The ID of the principal who last modified this object
_system.modified_by_principal_domain_id string The Domain ID of the principal who last modified this object

Last Edit

In addition to last modification (which includes modifications by any user, including system users), Cloud CMS automatically tracks last intentional modifications by editorial users. This is to say, Cloud CMS separately tracks modification information concerning changes made deliberately by editorial users.

Suppose an editorial user saves a change to a document a 1:00:00 pm. After the save, a rule might trigger that runs an AWS Transcoder job that converts video described by input keys on the document. The resulting output keys would later be written back to the document at, say, 1:02:47 pm. In this case, the editor last modification timestamp would be 1:00:00 pm (because, from the editor's standpoint, that's when they last made a change). However, the modified last modification timestamp would be 1:02:47 pm (because, technically, that's the last moment in time when the document was updated - even if it was by a system process).

Key Type Description
_system.edited_on.timestamp string Last edit datetime (UST) in friendly format ("dd-MMM-yyyy HH:mm:ss")
_system.edited_on.iso_8601 string Last edit datetime (UST) in ISO 8601 format ("yyyy-MM-dd'T'HH:mm:ssXXX")
_system.edited_on.year number Last edit datetime (UST) year
_system.edited_on.month number Last edit datetime (UST) month
_system.edited_on.day_of_month number Last edit datetime (UST) day of month (0 - 30)
_system.edited_on.hour number Last edit datetime (UST) hour
_system.edited_on.minute number Last edit datetime (UST) minute
_system.edited_on.second number Last edit datetime (UST) second
_system.edited_on.millisecond number Last edit datetime (UST) millisecond
_system.edited_on.ms number Last edit datetime (UST) milliseconds since Unix epoch (current time millis)
_system.edited_by string The user name of the principal who last edited this object
_system.edited_by_principal_id string The ID of the principal who last edited this object
_system.edited_by_principal_domain_id string The Domain ID of the principal who last edited this object

Nodes

Content nodes in Cloud CMS also track a few additional system metadata properties. Unlike other objects in Cloud CMS, content nodes are versioned using changesets and so things like changeset IDs and deletion state are captured as system metadata.

Key Type Description
_system.deleted boolean Whether this node was deleted (written onto its changeset as a delete)
_system.changeset string The ID of the changeset upon which this node was written

API

In using the Cloud CMS API, you can request system metadata properties by adding the following to your call:

?metadata=true

System metadata properties will be available under the special _system key. Here is an example:

{
    "title": "My Article",
    "description": "My Article Description",
    "_type": "my:article",
    "_doc": "5bfefc440497b4cf546d",
    "_system": {
        "deleted": false,
        "changeset": "40:84e03c7bbb4813a2e16e",
        "created_on": {
            "timestamp": "04-May-2016 10:08:20",
            "year": 2016,
            "month": 4,
            "day_of_month": 4,
            "hour": 10,
            "minute": 8,
            "second": 20,
            "millisecond": 821,
            "ms": 1462370900821
        },
        "created_by": "joesmith",
        "created_by_principal_id": "cc4c84b0d0de2849de4b",
        "created_by_principal_domain_id": "default",
        "modified_on": {
            "timestamp": "04-May-2016 10:08:20",
            "year": 2016,
            "month": 4,
            "day_of_month": 4,
            "hour": 10,
            "minute": 8,
            "second": 20,
            "millisecond": 853,
            "ms": 1462370900853
        },
        "modified_by": "admin",
        "modified_by_principal_id": "cc4c84b0d0de2849de4b",
        "modified_by_principal_domain_id": "default"
    },
    "_qname": "o:5bfefc440497b4cf546d",
}

You can use system metadata properties in your queries. For example, you might query for all nodes that were modified in 2016, with a query like this:

{
    "_system.modified_on.year": 2016
}

Or all nodes that were created by a particular user:

{
    "_system.created_by": "joesmith"
}