System Event Options
System events is a special kind of server-side events. A system event always starts with the sv
namespace and they can only be emitted by Sitevision, not by RESTApps. System events has a category that groups related operations. RESTApps can act on the operation as well as the category (but never on the namespace).
sv:category:operation
The documentation of the specific system event must be consulted to properly handle the event options fully. Though, all system events always contain some properties that are added automatically when they are emitted:
// Event options present in all system events
{
event: 'sv:publishing:publish', // The full name of the event
emitter: '247.12121212', // The JCR identifier of the emitting user [@since 4.5.5]
timestamp: 12345678890123456, // The timestamp when the event was emitted
...
}
Note that the timestamp
might differ from model time data!
For example: the timestamp
of a sv:publishing:publish
event is not guaranteed to be the exact same reference in time as the lastPublishDate
property of the sv:page
that was published!
sv:publishing
Sitevision emits system events in the publishing category whenever a publishing-related operation is performed (e.g. page is published or unpublished).
sv:publishing:publish
Emitted when something (typically a page) is published.
// sv:publishing:publish options example
{
event: 'sv:publishing:publish', // The full name of the event
emitter: '247.12121212', // The JCR identifier of the emitting user [@since 4.5.5]
timestamp: 12345678890123456, // The timestamp when the event was emitted
node: '4.121212121212' // The JCR identifier of the Node that was published
}
sv:publishing:unpublish
Emitted when something (typically a page) is unpublished.
// sv:publishing:unpublish options example
{
event: 'sv:publishing:unpublish', // The full name of the event
emitter: '247.12121212', // The JCR identifier of the emitting user [@since 4.5.5]
timestamp: 12345678890123456, // The timestamp when the event was emitted
node: '4.121212121212' // The JCR identifier of the Node that was unpublished
}
sv:simpleuser
Sitevision emits system events in the simpleuser category whenever a operation related to a simple user is performed.
sv:simpleuser:create
Emitted when a simple user is created.
// sv:simpleuser:create options example
{
event: 'sv:simpleuser:create', // The full name of the event
emitter: '247.12121212', // The JCR identifier of the emitting user [@since 4.5.5]
timestamp: 12345678890123456, // The timestamp when the event was emitted
user: '255.121212121212' // The JCR identifier of the simple user that was created
}
sv:simpleuser:update
Emitted when a simple user is updated.
// sv:simpleuser:update options example
{
event: 'sv:simpleuser:update', // The full name of the event
emitter: '247.12121212', // The JCR identifier of the emitting user [@since 4.5.5]
timestamp: 12345678890123456, // The timestamp when the event was emitted
user: '255.121212121212' // The JCR identifier of the simple user that was updated
}
sv:simpleuser:session:destroy [@since 2024.04.1]
Emitted when the http session for a simple user is destroyed (e.g. session timed out).
// sv:simpleuser:session:destroy options example
{
event: 'sv:simpleuser:session:destroy', // The full name of the event
emitter: 'anonymous', // No user is emitting the event
timestamp: 12345678890123456, // The timestamp when the event was emitted
user: '255.121212121212' // The JCR identifier of the simple user whose session was destroyed
}
The destroy event is not emitted by a specific user. This means that anything performed inside the event is done as Anonymous which in turn means there are no rights and permissions. Acting on the destroy event would therefore typically imply usage of the privileged functionality.
sv:structure [@since 6.1]
Sitevision emits system events in the structure category whenever a structure-related operation is performed (e.g. page is moved).
sv:structure:move
Emitted when something (typically a page) is moved.
// sv:structure:move options example
{
event: 'sv:structure:move', // The full name of the event
emitter: '247.12121212', // The JCR identifier of the emitting user
timestamp: 12345678890123456, // The timestamp when the event was emitted
node: '4.121212121212', // The JCR identifier of the Node that was moved
from: '19.32323232323', // The JCR identifier of the old parent Node
to: '19.45454545454' // The JCR identifier of the new parent Node
}
sv:trashcan [@since 5.1]
Sitevision emits system events in the trashcan category whenever an item is added to the trashcan or restored from the trashcan.
sv:trashcan:add
Emitted when something (typically a page/article/file/image) is added to the trashcan.
// sv:trashcan:add options example
{
event: 'sv:trashcan:add', // The full name of the event
emitter: '247.12121212', // The JCR identifier of the emitting user
timestamp: 12345678890123456, // The timestamp when the event was emitted
node: '4.121212121212' // The JCR identifier of the Node that was trashed
}
sv:trashcan:restore
Emitted when something (typically a page/article/file/image) is restored from the trashcan.
// sv:trashcan:restore options example
{
event: 'sv:trashcan:restore', // The full name of the event
emitter: '247.12121212', // The JCR identifier of the emitting user
timestamp: 12345678890123456, // The timestamp when the event was emitted
node: '4.121212121212' // The JCR identifier of the Node that was restored
}
sv:binary [@since 7.2]
Sitevision emits system events in the binary category whenever a file or an image is added or modified.
sv:binary:create
Emitted when a file or an image is added to a repository or folder.
// sv:binary:create options example
{
event: 'sv:binary:create', // The full name of the event
emitter: '247.12121212', // The JCR identifier of the emitting user
timestamp: 12345678890123456, // The timestamp when the event was emitted
node: '18.121212121212' // The JCR identifier of the file that has been created
}
sv:binary:update:content
Emitted when the content for a file or an image has been updated.
// sv:binary:update:content options example
{
event: 'sv:binary:update:content', // The full name of the event
emitter: '247.12121212', // The JCR identifier of the emitting user
timestamp: 12345678890123456, // The timestamp when the event was emitted
node: '18.121212121212' // The JCR identifier of the file that was updated
}
sv:binary:update:metadata
Emitted when metadata for a file or an image has been updated.
// sv:binary:update:metadata options example
{
event: 'sv:binary:update:metadata', // The full name of the event
emitter: '247.12121212', // The JCR identifier of the emitting user
timestamp: 12345678890123456, // The timestamp when the event was emitted
node: '18.121212121212' // The JCR identifier of the file that has updated metadata
}
sv:binary:update:name
Emitted when the name of a file or an image has been changed.
// sv:binary:update:name options example
{
event: 'sv:binary:update:name', // The full name of the event
emitter: '247.12121212', // The JCR identifier of the emitting user
timestamp: 12345678890123456, // The timestamp when the event was emitted
node: '18.121212121212' // The JCR identifier of the file that has been renamed
}
sv:binary:update:tags
Emitted when tags for a file or an image has been changed.
// sv:binary:update:tags options example
{
event: 'sv:binary:update:tags', // The full name of the event
emitter: '247.12121212', // The JCR identifier of the emitting user
timestamp: 12345678890123456, // The timestamp when the event was emitted
node: '18.121212121212' // The JCR identifier of the file that was changed
}
sv:binary:update:version:create
Emitted when a new version of a file has been created.
// sv:binary:update:version:create options example
{
event: 'sv:binary:update:version:create', // The full name of the event
emitter: '247.12121212', // The JCR identifier of the emitting user
timestamp: 12345678890123456, // The timestamp when the event was emitted
node: '18.121212121212' // The JCR identifier of the file that has av new version
}
sv:binary:update:version:delete
Emitted when a version of a file has been deleted.
// sv:binary:update:version:delete options example
{
event: 'sv:binary:update:version:delete', // The full name of the event
emitter: '247.12121212', // The JCR identifier of the emitting user
timestamp: 12345678890123456, // The timestamp when the event was emitted
node: '18.121212121212' // The JCR identifier of the file that has a deleted version
}
sv:binary:update:version:select
Emitted when a version of a file has been selected.
// sv:binary:update:version:select options example
{
event: 'sv:binary:update:version:select', // The full name of the event
emitter: '247.12121212', // The JCR identifier of the emitting user
timestamp: 12345678890123456, // The timestamp when the event was emitted
node: '18.121212121212' // The JCR identifier of the file that has a new version selected
}
Timer events [@since 5.2]
Sitevision periodically emits timer events in five intervals:
sv:every-5-minutes
sv:every-15-minutes
sv:every-30-minutes
sv:every-hour
sv:every-day
Timer events are system global, hence triggered on all websites and not emitted by a specific user. This means that anything done inside the event is done as Anonymous which in turn means there are no rights and permissions. A RESTApp that acts on a timer event must finish its execution before next event interval occurs.
Executing code as a specified user is available as of Sitevision 7 via the privileged functionality.
// sv:every-hour options example
{
event: 'sv:every-hour', // The full name of the event
emitter: 'anonymous', // No user is emitting the event
timestamp: 12345678890123456 // The timestamp when the event was emitted
}
Execution of a timer event must be completed within the specific event interval!
A RESTApp that acts on a timer event and executes longer than the interval for that event, will cause all RESTApps on that site to not receive any further timer events of that specific type, until its execution is completed. E.g. if execution of a 5-minutes event takes 12 minutes, all RESTApps on that site will miss two 5-minutes events.
Beware of overlap when acting on more than one timer event!
Timer events are executed periodically and intervals will overlap each other every now and then (e.g. for every third 5-minutes event, there will also be a 15-minutes event).
Timer events has no category since it has no semantic meaning!
RESTApps that are interested in "all timer events" can act on the most frequently emitted sv:every-5-minutes
event and do its custom time-related logic.