| @objectstack/objectql | minor |
|---|---|
| @objectstack/rest | minor |
feat: record clone — wire the object.enable.clone capability to a real runtime (previously a parsed-but-dead flag).
- objectql: new
protocol.cloneData({ object, id, overrides?, context? })— reads the source record, drops engine-owned columns (id+ auditcreated_at/created_by/updated_at/updated_by, plussystem-flagged,autonumber,formulaandsummaryfields) so the insert path re-derives them, applies calleroverrideslast, and inserts the copy. Shallow by design (duplicates the record's own fields, not its child records). Gated byschema.enable.clone: default-on, an explicitenable.clone === falsethrows403 CLONE_DISABLED. - rest: new
POST /api/v1/data/:object/:id/clone(201 →{ object, id, sourceId, record }). Optional body{ overrides }(or a bare field map) overrides copied values, e.g. a newnameor a cleared unique field. Honors the same auth +enable.apiEnabled/apiMethodsgates as the rest of the data surface;enable.clone === false→ 403.
Reclassifies object.enable.clone dead → live in the spec liveness ledger.