Demote an activity-property definition
Demotes a promoted property — it returns to inert, non-evaluable JSON. A demote
is always disruptive: Segments that reference the property keep evaluating
best-effort but carry a standing eval_warning (their predicate no longer
type-checks). The response carries the impact (affected segments). Git-backed
definitions are read-only here (409 conflict).
Path parameters
id string<uuid> required Resource UUID. An unparseable id reads as a clean 404 not_found.
Responses
Errors follow the RFC 7807 problem format — see the error reference.
mutation_class string enum required How an edit affects dependent Segment predicates: free (no effect),
safe_but_stale (an enum value was removed; predicates stay valid), or
disruptive (a cast-class change or a demote that raises a standing per-segment
warning).
One of: free, safe_but_stale, disruptive
impact object required The projected (preview) or committed (apply) impact of a mutation on dependent Segments and Workflows.
Fields of impact:
affected_segments array<object> required Each entry in affected_segments:
id string<uuid> required name string required typecheck_ok boolean required Whether the segment's predicate still type-checks under the change. Always true for a free / safe-but-stale edit; may be false for a disruptive one.
warning string optional The standing "evaluation disrupted" warning the edit would raise (or did); absent when none.
affected_workflows array<object> required Each entry in affected_workflows:
id string<uuid> required name string required key string required status string required The workflow's lifecycle status (draft, active, paused, archived, invalid).
projected_dropout integer<int64> required Always 0 for a promoted property — it is cast-at-read over the activity firehose and does not gate contact membership the way a contact attribute does. Present for shape parity with the attribute impact.
code: invalid_scope), or it is bound to the test environment and this operation is irreversible (code: test_environment_forbidden). Branch on code: the first is fixed by granting the scope, the second only by using a live credential. See the "Live and test credentials" section of the API description. application/problem+json code is conflict.
application/problem+json code is internal_error. The
request_id field can be quoted to SendOps support to investigate.
application/problem+json