Essal’s six apps share a common data model that allows records from different apps to reference and relate to each other. Understanding this model helps you design integrations that move data naturally across the platform.
Core Entity Types
Every entity in Essal has a universally unique ID with a type prefix:
Linked Resources
Any entity can carry a linked_resources array that holds typed references to related entities in other apps:
Ownership and Attribution
All entities carry a standard set of ownership fields:
Soft Deletion
Essal uses soft deletion by default. Deleted entities are marked "status": "deleted" and excluded from list responses unless you pass ?include_deleted=true. Hard deletion is available for data retention compliance and is irreversible.
Hard deletion cannot be undone and will cascade to all linked_resources references pointing to the deleted entity. Guard audit logs for the entity are preserved regardless.
Custom Fields
All entity types support custom fields, allowing you to extend the data model without schema changes. Custom fields are defined per workspace and are accessible in the API via the custom_fields object on any entity response.