Skip to content

Docs: document the platform-enforced "Can't delete last _owner" rule #6

Description

@mitselek

TL;DR

Attempting to DELETE the last _owner property entry on any entity returns HTTP 403 with message "Can't delete last _owner". This is a useful platform guarantee — entities can never become ownerless — but isn't surfaced in the docs.

Reproduction (probed 2026-05-17 against api.entu.app/polyphony)

DELETE /polyphony/property/<id of last _owner property>
→ HTTP 403
{
  "error": true,
  "status": 403,
  "statusText": "Can't delete last _owner",
  "message": "Can't delete last _owner"
}

Applies to every entity type (tested with a generic _type=entity probe). Deleting a non-last _owner succeeds normally.

Implication

Downstream apps can rely on this guarantee — they don't need to build their own "minimum-owner" enforcement at the platform layer. App-level invariants (e.g., "at least one owner must also be a member") can layer on top.

For ownership transfer: add the new owner first, then remove the old one (standard pattern enabled by this rule).

Suggested doc note

At https://www.entu.ee/api/properties/ in the property-deletion rules table, add an explicit row for "_owner (last one): cannot be deleted — at least one _owner must remain". (There's already an analogous row hinted at in some sections; making it canonical helps.)

Related: polyphony case study E1 — https://github.com/entu/research/blob/main/docs/case-studies/2026-05-polyphony-on-entu.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions