System Fields
Every object in DemandFlow carries the same set of system fields. Some are mandatory inputs on create, some are server-assigned, and some are maintained automatically across the lifecycle.
Reference table
| Field | Type | Set by | Purpose |
|---|---|---|---|
id | UUID | Server (on create) | Unique object identifier within a tenant. Stable forever, it's used in URLs, foreign keys, comboKey suffixes, and audit logs. |
entity | String | Caller | Uppercase entity code. Required on create. Drives partition routing, validation, and which definition applies. |
level | Number | Caller | Numeric position in the access hierarchy. Required on create. Comes from the entity's definition. See Object Levels. |
comboKey | String | Caller (POST appends id) | Pipe-delimited hierarchical key. Must always end |ENT: on POST. See comboKey. |
comboKey2 / comboKey3 | String | Caller (POST appends id) | Optional additional hierarchy keys for entities that participate in more than one parent relationship. Same format and rules as comboKey. Only present on entities that declare them. See comboKey: Hierarchical Relationships. |
subscription | UUID | Server | The tenant subscription id this object belongs to. Set automatically from your auth token, you cannot override it. |
ownerId | UUID | Server (on create) | The user who created the object. Cannot be changed on PATCH (silently ignored). |
updatedId | UUID | Server | The user who most recently modified the object. Updated on every PATCH. |
created | Number (epoch ms) | Server (on create) | Creation timestamp. Cannot be changed on PATCH (silently ignored). |
updated | Number (epoch ms) | Server | Last-modified timestamp. Updated on every PATCH. |
_df_version | Number | Server | Starts at 0 on create, incremented by 1 on every PATCH. Used for change detection. See Versioning and Timestamps. |
What you supply on create
Three system fields are required in the POST body:
{
"entity": "PPL",
"level": 220,
"comboKey": "SUB:<your-sub-id>|ENT:",
...
}
Everything else is server-assigned or, in the case of updatedId/updated/_df_version, only relevant after the first PATCH.
What you cannot change
The PATCH endpoint silently ignores any attempt to change id, ownerId, or created. The server will also overwrite updated, updatedId, and _df_version with its own values.