Request body for PATCH on the V1 teaser routes
(PATCH /api/v1/projects/{id}/teaser,
PATCH /api/v1/properties/{id}/teaser,
PATCH /api/v1/projects/{id}/rooms/{roomId}/teaser).
Each property is independently optional — present means "write this",
absent means "no change".
Tag snapshot for the teaser. Three forms: omitted = no change;
a list = write this exact snapshot (subset of template.tags);
null = reset to the property's current template pool,
snapshotted server-side at write time.