Docs / Features / Objects
Storing objects
Every entity you store in Open Register is an object — a validated, versioned JSON record that lives in a register, follows a schema, and carries metadata about who changed it, when, and why. Objects are the smallest unit of data the system commits to.
What you get
Data integrityEvery write is validated against a JSON Schema. Invalid data never lands.
Citation-stable IDsPersistent identifiers survive renames, moves, and storage migrations.
Audit trailEvery change is logged and signed. WOO and BIO evidence comes for free.
Sub-features
- Schema validation on every write
- Object relationships (one-to-one, one-to-many, many-to-many)
- Object locking for concurrent edits
- Soft deletion with restore
- Version history per object
- Signed audit trails
- File attachments via Nextcloud Files
- Persistent identifiers (UUID + URN)
- Schema-aware search across registers
- Batch operations (create, update, delete)
Quick example
Store an object via the REST API. Replace citizens with your register slug and citizen with your schema slug:
POST /index.php/apps/openregister/api/objects/citizens/citizen
Content-Type: application/json
Authorization: Bearer $TOKEN
{
"bsn": "123456789",
"firstName": "Jenna",
"lastName": "de Vries"
}
If validation passes, the response carries the persistent ID, the version, and the audit-log entry that recorded the write:
{
"id": "urn:nl-openregister:01HXY...",
"version": 1,
"audit": "urn:nl-openregister:audit:01HXY...",
"data": { "bsn": "...", "firstName": "Jenna", "lastName": "de Vries" }
}
Pairs well with
For sales conversations
Every object writes a signed audit-log entry by default. For Woo / BIO compliance evidence, no extra plug-in is required. Link to the audit-log architecture for the technical detail.