Search…
Audit
Add audit logging for custom objects using the scripting API.

Static method

record(title, objectId, action, options)

Arguments
  • title { String }
  • objectId { ObjectID }
  • action { String } For example, create, read, update, delete, access, and transfer
  • options { Object } Options object
    • metadata { Object }
    • err {Fault}

Associate audit logs with custom objects

You can associate audit logs with custom objects using a script to add custom property information to the audit logs.
This only applies to user audit events in the subcategories listed below.
create ​ ​​
audit.record('my_object', _id, 'create', {metadata: {message: 'Create custom object'}})​​ ​ ​ ​
read ​ ​​
audit.record('my_object', _id, 'read', {metadata: {message: 'Read custom object'}}) ​​ ​ ​ ​
update
​​audit.record('my_object', _id, 'update', {metadata: {message: 'Update custom object'}})​​ ​ ​ ​
delete
​​audit.record('my_object', _id, 'delete', {metadata: {message: 'Delete custom object'}})​​ ​ ​
access
​​audit.record('my_object', _id, 'access', {metadata: {message: 'Access custom object'}})​​ ​ ​ ​
transfer
​audit.record('my_object', _id, 'transfer', {metadata: {message: 'Transfer custom object'}})​​ ​

Example: Create audit record

import audit from 'audit'
// Create custom object
org.objects.objects.insertOne({
label: 'My Object',
name: 'my_object',
defaultAcl: 'owner.delete',
createAcl: 'account.public',
properties: [
{
label: 'name',
name: 'c_name',
type: 'String',
indexed: true
}
]
})
.execute()
// Create audit record
return audit.record('my_object', org.objects.my_object._id, 'create', {
metadata: {
message: 'record created'
}
})

Object schema

{
"ETag": "9984ad7455e8b36d32bc7395ca0148d9",
"_id": "436f6e746578742041756474",
"allowConnections": false,
"auditing": {
"all": false,
"category": "audit",
"changes": false,
"enabled": false,
"updateSubcategory": "update"
},
"connectionOptions": {
"requireAccept": true,
"requiredAccess": 5,
"sendNotifications": true
},
"createAcl": [],
"custom": false,
"defaultAcl": [],
"extended": true,
"extensible": false,
"feedDefinition": [],
"hasETag": false,
"isUnmanaged": true,
"isVersioned": false,
"label": "Audit",
"name": "audit",
"object": "schema",
"pluralName": "audits",
"properties": [
{
"fqpp": "audit._id",
"indexed": true,
"label": "Id",
"name": "_id",
"read": 1,
"readOnly": true,
"type": "ObjectId"
},
{
"fqpp": "audit.object",
"indexed": true,
"label": "Object",
"name": "object",
"read": 1,
"readOnly": true,
"type": "String"
},
{
"fqpp": "audit.access",
"label": "Access Level",
"name": "access",
"read": 1,
"readOnly": true,
"type": "Number"
},
{
"fqpp": "audit.propertyAccess",
"label": "Property Access",
"name": "propertyAccess",
"optional": true,
"read": 1,
"readOnly": true,
"type": "Document"
},
{
"fqpp": "audit.req",
"indexed": true,
"label": "Request Id",
"name": "req",
"read": 4,
"readOnly": true,
"type": "ObjectId"
},
{
"fqpp": "audit.principal",
"indexed": true,
"label": "Principal",
"name": "principal",
"read": 4,
"readOnly": true,
"type": "ObjectId"
},
{
"fqpp": "audit.ipv4",
"indexed": true,
"label": "IP Address",
"name": "ipv4",
"read": 4,
"readOnly": true,
"type": "Number"
},
{
"fqpp": "audit.cat",
"indexed": true,
"label": "Category",
"name": "cat",
"read": 4,
"readOnly": true,
"type": "String"
},
{
"fqpp": "audit.sub",
"indexed": true,
"label": "Sub Category",
"name": "sub",
"read": 4,
"readOnly": true,
"type": "String"
},
{
"fqpp": "audit.context",
"label": "Context",
"name": "context",
"properties": [
{
"fqpp": "audit.context.object",
"indexed": true,
"label": "Object",
"name": "object",
"read": 4,
"readOnly": true,
"type": "String"
},
{
"fqpp": "audit.context._id",
"indexed": true,
"label": "Identifier",
"name": "_id",
"read": 4,
"readOnly": true,
"type": "ObjectId"
}
],
"read": 4,
"readOnly": true,
"type": "Document"
},
{
"fqpp": "audit.ac",
"label": "Access Context",
"name": "ac",
"read": 4,
"readOnly": true,
"type": "Any"
},
{
"fqpp": "audit.metadata",
"label": "Metadata",
"name": "metadata",
"read": 4,
"readOnly": true,
"type": "Any"
},
{
"fqpp": "audit.err",
"label": "Error",
"name": "err",
"read": 4,
"readOnly": true,
"type": "Any"
}
],
"shareAcl": [],
"shareChain": [
5,
2
]
}
Last modified 5mo ago
Copy link
On this page
Static method
record(title, objectId, action, options)
Associate audit logs with custom objects
Object schema