Move the normal segment edit flow to full-replace semantics. Drop the delete: true convention both from frontend and backend.
Scope
- Instead of sending
delete: true, the frontend omits removed entries and sends the desired final rules array, as the change-request flow already does via stripIdsAndDeletedFromRulesAndConditions.
- Drop the optional
id from the SegmentRule and SegmentCondition TypeScript types — the frontend never reads it.
- Remove
SegmentSerializer._get_rules_and_conditions_without_deleted.
Acceptance criteria
- Removing a rule or condition in the editor omits it from the request body; no entry carries
delete: true.
SegmentRule and SegmentCondition types no longer carry id; typecheck passes.
- Creating, editing, and cloning a segment work against the id-free API.
- The change-request segment diff renders unchanged.
set_segment_rules no longer strips a delete flag.
Move the normal segment edit flow to full-replace semantics. Drop the
delete: trueconvention both from frontend and backend.Scope
delete: true, the frontend omits removed entries and sends the desired final rules array, as the change-request flow already does viastripIdsAndDeletedFromRulesAndConditions.idfrom theSegmentRuleandSegmentConditionTypeScript types — the frontend never reads it.SegmentSerializer._get_rules_and_conditions_without_deleted.Acceptance criteria
delete: true.SegmentRuleandSegmentConditiontypes no longer carryid; typecheck passes.set_segment_rulesno longer strips adeleteflag.