changedInput schema / properties / meta / description
Previous value: -"Channel-specific fields from get_channel_rules. Instagram: altTexts is one alt text per slide in media order (blank entries and videos use altText or none). LinkedIn: documentTitle is the line LinkedIn shows above an attached PDF; blank uses the file name. Social posts (not YouTube): cmsImages: [{ mediaId }] attaches images already in the connected CMS (search_cms_media), after the assets on post 1; Mark fills in the channel, type and size of each, takes JPEG, PNG, WebP or GIF, and copies them to the platform at scheduling. They count toward media limits like assets. mediaOrder sets the order of the media on post 1 across assets and CMS images: a list of keys, an asset id as is or cms:<channel>:<mediaId> for a CMS image (get_post shows the channel of each; cms::<mediaId> for an image sent without one). An unknown or repeated key is dropped and media it leaves out goes last; without it, assets go first, then CMS images. altTexts follow this media order. meta without mediaOrder keeps the saved order; [] resets it. On Instagram and Pinterest, a newly attached CMS image with blank alt text takes the CMS alt (its altTexts entry on a carousel, else altText; on Pinterest only when it is the only image on the pin). Edit or clear it like any alt text. X: thread is the replies after the body, in order; threadMedia puts media on a reply: one list of asset ids per thread entry, in the same order ([[], [\"id\"]] puts id on post 3). Every threadMedia id must also be in assetIds and on one post only; post 1 gets the assetIds no reply lists. meta replaces the saved meta: when thread keeps its number of replies and threadMedia is left out, the saved threadMedia carries over; when the number changes, send threadMedia too. Each X thread post takes up to 4 images, or 1 video, or 1 GIF. Website posts (blog, faq, landing_page, competitor_page): the cover is cover: { source: \"asset\", assetId, alt } with an image id from search_assets / add_asset, or cover: { source: \"cms\", mediaId, alt? } with an image already in the connected CMS from search_cms_media (Mark fills its type and size, alt defaults to the CMS alt, and an edited alt is written back to that CMS image on approve). alt is required before submit when the CMS takes a cover. Omit cover for no cover. An image already in the CMS goes in the body as  on its own line, with url from search_cms_media called with the same channel: on a rich-text mapping it publishes by reference with no upload and shows the alt text the CMS has (get_channel_rules says which)."New value: +"Channel-specific fields from get_channel_rules. Instagram and LinkedIn: altText is the post-wide alt text and altTexts is one alt text per image in media order; a blank entry uses altText, and videos and PDFs take none. LinkedIn: documentTitle is the line LinkedIn shows above an attached PDF; blank uses the file name. Social posts (not YouTube): cmsImages: [{ mediaId, collection }] attaches images already in the connected CMS (search_cms_media), after the assets on post 1; collection is the media collection search_cms_media named (left out, the default from get_website_cms; one Mark cannot read is refused). Mark fills in the type and size of each, takes JPEG, PNG, WebP or GIF, and copies them to the platform at scheduling. They count toward media limits like assets. mediaOrder sets the order of the media on post 1 across assets and CMS images: a list of keys, an asset id as is or cms:~<collection>:<mediaId> for a CMS image (get_post shows the collection of each; an image saved before names a channel instead, cms:<channel>:<mediaId>; cms::<mediaId> for an image sent without either). An unknown or repeated key is dropped and media it leaves out goes last; without it, assets go first, then CMS images. altTexts follow this media order. meta without mediaOrder keeps the saved order; [] resets it. On Instagram, LinkedIn and Pinterest, a newly attached CMS image with blank alt text takes the CMS alt (its altTexts entry on a post with several media, else altText; on Pinterest only when it is the only image on the pin). Edit or clear it like any alt text. X: thread is the replies after the body, in order; threadMedia puts media on a reply: one list of asset ids per thread entry, in the same order ([[], [\"id\"]] puts id on post 3). Every threadMedia id must also be in assetIds and on one post only; post 1 gets the assetIds no reply lists. meta replaces the saved meta: when thread keeps its number of replies and threadMedia is left out, the saved threadMedia carries over; when the number changes, send threadMedia too. Each X thread post takes up to 4 images, or 1 video, or 1 GIF. Website posts (blog, faq, landing_page, competitor_page): the cover is cover: { source: \"asset\", assetId, alt } with an image id from search_assets / add_asset, or cover: { source: \"cms\", mediaId, collection, alt? } with an image already in the connected CMS from search_cms_media called with the same channel (collection left out: the default for that channel; a cover comes only from the collection the cover field accepts, else where new media goes, and any other is refused; Mark fills its type and size, alt defaults to the CMS alt, and an edited alt is written back to that CMS image on approve). alt is required before submit when the CMS takes a cover. Omit cover for no cover. An image already in the CMS goes in the body as  on its own line, with url from search_cms_media (any readable collection): on a rich-text mapping it publishes by reference with no upload and shows the alt text the CMS has (get_channel_rules says which)."
changedOutput schema / required
Previous value: -[
- "appUrl",
- "assetIds",
- "assets",
- "bodyLength",
- "buyerQuestions",
- "channel",
- "characterLimit",
- "checks",
- "contentHash",
- "droppedAssetIds",
- "idea",
- "guided",
- "guideVersion",
- "postId",
- "rev",
- "scheduledAt",
- "status",
- "updatedAt"
-]New value: +[
+ "appUrl",
+ "assetIds",
+ "assets",
+ "bodyLength",
+ "buyerQuestions",
+ "channel",
+ "characterLimit",
+ "checks",
+ "contentHash",
+ "droppedAssetIds",
+ "droppedMetaKeys",
+ "idea",
+ "guided",
+ "guideVersion",
+ "postId",
+ "rev",
+ "scheduledAt",
+ "status",
+ "updatedAt"
+]