content_series_apply
Create or edit a series, manage its publication state and organize existing content links.
Read the shared content contract for authorization, app identity, result interpretation and recovery.
Inputs and actions
Require channelCode, supported article/photobook/resource pAppCode, requestId and expectedRevision. Use list selectionRevision from content_series_get for create, or detail revision for every other action. dryRun defaults to false.
| action.kind | Fields |
|---|---|
| create | title, explicit isPublished, optional photobook explicitNavigationType. |
| update | seriesId and nonempty fields (see below). |
| visibility | seriesId and isPublished. |
| delete | seriesId and confirmation DELETE_SERIES. |
| link | seriesId and 1–100 distinct postIds from the same app, none already linked. The resulting series must contain at most 100 posts. |
| unlink | seriesId and episodeId from this series; disconnects the link, not the original post. |
| move | seriesId, episodeId and beforeEpisodeId; null moves it last, otherwise select another episode in this series. |
Editable fields
Article/resource title allows 1–65 UTF-16 units and description 0–250; photobook title 1–150 and description 0–800. Omit description to preserve it; null or an empty string clears it to the source null value. This normalization applies only to new write bodies, never saved journal expectations. The generic schema's larger envelope does not override app-specific runtime guards. All support coverImageSrc; article/resource support thumbnailSrc, while photobook supports logoImageSrc, explicitNavigationType and useWatermarkOverlayProtection. Image fields accept an HTTP(S) URL or empty string to clear.
Photobook navigation is NAV_B00005_HORIZONTAL_POST_VIEWING (default on creation) or NAV_B00005_VERTICAL_POST_VIEWING. Other apps cannot set it. publishedAt is source UTC metadata without a suffix, to whole-second precision, and does not schedule publication. Use content_schedule_apply for that purpose. Obtain new artwork URLs with content_file_upload.
Input example
This is an input illustration, not a recorded call. Replace the channel, app, observed IDs and all-zero revision with values from the matching authorized read. A dry run does not save changes.
{
"channelCode": "selected-channel",
"pAppCode": "B00001",
"requestId": "example-request-001",
"expectedRevision": "0000000000000000000000000000000000000000000000000000000000000000",
"dryRun": true,
"action": {
"kind": "move",
"seriesId": 1,
"episodeId": 2,
"beforeEpisodeId": null
}
}