TermsAmendmentInput
A saved amendment: the whole pending terms set, plus why and from when (CRM-9353).
items is typed as the preview's item model on purpose rather than as a
near-identical twin. Preview and save must accept exactly the same line
shape, or CRM-9353's "no case where preview succeeds and the save then
fails" cannot hold at the type level — a field the save rejected and the
preview accepted would only surface after the user pressed Save.
An omitted field on an existing line means "leave it alone", not "clear
it": every field is optional, so the save merges what was sent over the
stored row (amendment._build_lines), the same way update_entity does.
- effectiveType: stringFormat: date-time
Date requiredWhen the new terms take effect. Today or earlier applies immediately; a future date is held pending and applied on the day
- itemsType: array of TermsPreviewItemInputrequiredProperties: 22
The pending terms set in full. Required: the set is the terms, so an omitted key would read as an amendment that removes every service
- amendmentType: string
Reason max length:8192nullableFree-text reason shown on the terms timeline

