publ betaReference (MCP guide)
Open publ console

publ Reference

media_posts_get

Read media posts in one installed app: basic VOD C00001, OTT C00002, serial C00006, courses C00007 or shorts C00015.

Inputs

Provide channelCode and exact pAppCode. view defaults to {"kind":"list","query":{"page":1,"limit":15}}. A list query supports page 1–10000, limit 15/30/50/100, optional search up to 200 characters, isPublished and type. Type is VOD, PLAIN or LIVE_COACHING; non-course apps accept VOD only. For detail, use view:{kind:"detail",postId} with the observed positive integer post ID.

Results and next step

MEDIA_POSTS returns the page's posts/pagination and creationRevision. MEDIA_POST returns the selected post and revision. The public post projection includes identity/type, title/content/publication metadata, author, media/attachment fields, labels and active schedules. The workflow validates exact app consumer and target identity. It does not request a playback token and returns playbackVerified:false.

Use creationRevision with media_post_apply to create course text/coaching sessions; use detail revision for ordinary existing-post actions. The later C00015 conversion-link view below has its own revision. VOD files are uploaded by the human in the original console. A post ID is not an episode connection ID or VOD vid. Read all necessary pages rather than treating a page as a complete list. A visible VOD resource is not evidence that encoding, entitlement or visitor playback succeeds.

Read the media workflow guide for authorization, source-versus-runtime availability and common recovery rules.

Input example

Illustrative input only. Replace the channel, installed app, identifiers and revision with values obtained for the selected target.

{
  "channelCode": "selected-channel",
  "pAppCode": "C00007",
  "view": {
    "kind": "detail",
    "postId": 1
  }
}

MEDIA_CONVERSION_LINK returns the verified post, public conversionLink or explicit null, initialized, its own revision and writesPerformed:false. destinationOwnershipVerified, visitorBehaviorVerified and playbackVerified remain false.

The embedded postConversionLink must be explicit null or a complete record and agree with the dedicated endpoint on stable public fields and exact post ID. A genuine dedicated HTTP404 counts as absence only when the embedded link is explicitly null; other errors and malformed/disagreeing responses fail closed. Matching explicit null observations also represent absence. Unknown link metadata is privately hashed for preservation, not exposed; dynamic updatedAt is excluded. A link exposes distinctId, type, linkType, title, description, thumbnailSrc, destinationUrl, isDisabled, postId and insertedAt.

Use this view's revision for conversion-link create/edit, not an ordinary post-detail revision. initialized means a record exists; its server defaults may still be incomplete or unusable. No destination is fetched or verified. A validated absent link with initialized:false resolves the exact shorts/:postId/conversion-link/start screen; a same-post link with initialized:true resolves information. Reads require a revision and matching post/consumer/installation identities.

Illustrative conversion-link read:

{
  "channelCode": "selected-channel",
  "pAppCode": "C00015",
  "view": {
    "kind": "conversion-link",
    "postId": 1
  }
}

Shorts conversion history

Supply the observed postId and optional query. query.page is an integer from 1 through 10000, default1; query.limit accepts15,30,50 or100, default15. No date range, search, sorting, aggregation or write input is exposed. This is an option on the existing getter, with no new operation or task namespace.

The reader checks the exact post and its explicit conversion link before and after one history request. The embedded and dedicated link records must agree. An absent link yields MEDIA_CONVERSION_LINK_MISSING; the read does not initialize it. Unsupported apps yield MEDIA_CONVERSION_LINK_UNSUPPORTED. Changed post/link state during the read yields MEDIA_CONVERSION_HISTORY_CHANGED. Malformed, incomplete or contradictory history pages yield MEDIA_CONVERSION_HISTORY_UNVERIFIED rather than an empty success.

MEDIA_CONVERSION_HISTORY returns post, public conversionLink, initialized:true, histories, pagination, totalPages, writesPerformed:false and visitorBehaviorVerified:false. Each history row contains:

Field Meaning
utcDate Source date label preserved verbatim and in response order. No inferred format, timezone conversion or synthesized missing date.
impression Nonnegative safe integer source count.
click Nonnegative safe integer source count.
clickThroughRatePercent Two-decimal string: click / impression ×100 when impression is positive; otherwise 0.00. No clamping to100 or inference of purchases.

Pagination must match the requested page and limit, the row count must match total for that page, and date labels must be unique within the page. totalPages is max(1, ceil(total / limit)). A valid empty page is not evidence that every page or historical period is empty. Pages are separate observations, without an atomic snapshot or cross-page freshness guarantee.

This view returns no mutation revision. For a conversion-link edit, separately read the conversion-link view and use its revision with media_post_apply. History counts never authorize an edit, prove visitor behavior or establish order/purchase conversion.

Only a fresh successful same-channel/installation/post/link read with initialized:true, writesPerformed:false and visitorBehaviorVerified:false can identify shorts/:postId/conversion-link/history. The projection checks page identities, counts, labels, totalPages and the owner's exact CTR calculation. Historical, foreign, malformed and failed results have no history destination. The URL has no page query; pagination stays in the API input/result. Use the returned exact URL. Earlier encoding-history observations and playback/upload limitations are separate.

Illustrative read of one history page; replace the channel and post ID:

{
  "channelCode": "selected-channel",
  "pAppCode": "C00015",
  "view": {
    "kind": "conversion-history",
    "postId": 1,
    "query": {"page": 1, "limit": 15}
  }
}