publ betaReference (MCP guide)
Open publ console

media_live_get

# media_live_get

Read supported live-event information, subtitle configuration, external commerce-live product cards or broadcast-status observations.

## Inputs and views

Provide channelCode and the exact installed pAppCode: `C00005`, `C9xx05` event-live instance or `C00014` commerce-live. The original string views remain `info` (default), `subtitles`, `status` or `products`. C00014 also has the [product-history object view](#c00014-product-conversion-history). Subtitle configuration supports event-live only; products supports C00014 only.

`info` and `subtitles` return `MEDIA_LIVE_CONFIGURATION`, the supported public projection and a view-specific revision for [media_live_apply](media_live_apply.md). Info exposes supported event information; subtitles exposes recognized installed packs, language/display and live-configuration state. Do not reuse one view's revision for another action.

`status` returns `MEDIA_LIVE_STATUS` and live observations, without an editing revision or stream credentials. These original string views identify the selected app/context, perform no write and keep `broadcastReadinessVerified:false`. A successful read does not start a broadcast or validate ingest, playback, chat, entitlement or actual translation.

## Prerequisites

The LIVE service needs an explicitly configured HTTPS origin. It does not fall back to API or VOD service endpoints. Subtitle editing requires recognized existing CLEX01 configuration and its current live identity. Missing or unsupported configuration is a human setup prerequisite, not an empty configuration to overwrite. Use [media_settings_get](media_settings_get.md) for room-entry timing.

Read the [media workflow guide](../guides/media-workflows.md) 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.

```json
{
  "channelCode": "selected-channel",
  "pAppCode": "C00005",
  "view": "info"
}
```

## C00014 external product cards

It reads the full list and public list from the explicit LIVE origin with the exact installed consumer. No caller pagination is accepted: the source uses page1/limit20. A complete count, unique IDs, matching public/full records and consumer bindings are required; partial or over-20 inventories fail.

MEDIA_LIVE_CONFIGURATION returns products, openedProductIds in public display order, total, maximumProducts:20, creationSupported and a products revision. Cards expose id, title, linkSrc, thumbnailSrc, isOpen, price, discountPrice and createdAt/updatedAt. Unknown card/link metadata is retained for preservation without exposure. Numeric order and updatedAt are excluded from stable comparison; the public list sequence controls order. This revision belongs to action.kind products, not info/subtitles.

These are external display links and price text, not X00004 SKU records, purchases or charges. This reader fetches or uploads no image. Actual service/console/visitor behavior remains unverified. Fresh reads/observations require the matching result code, status/phase, revision, complete bounded card collection and consistent public IDs. A verified empty list is valid. An uncertain response without a fresh collection has no link. A fresh mismatch may identify the list while keeping status pending and currentStateMatches:false; resolving a target does not confirm a change. Other apps, detail paths, foreign hosts/channels, queries/fragments and historical results do not gain this link.

Illustrative new view; replace channel and use the installed C00014 instance:

```json
{
  "channelCode": "selected-channel",
  "pAppCode": "C00014",
  "view": "products"
}
```

## Creation capability and host connection

It does not validate configuration, remaining capacity, image bytes, permissions, runtime deployment or actual service behavior. The dry run performs those source preflight checks without requesting upload credentials.

The host requires RESOURCE_GATEWAY/bucket/region and a fresh matching C00014 context. Older hosts without the hooks still fail with MEDIA_PRODUCT_IMAGE_HOST_UNAVAILABLE before a journal or mutation.

## Image replacement capability

Both flags report presence of the same two image hooks, not verified configuration, actual upload or rendering. Use the products revision and selected card ID with [optional edit changes.image](media_live_apply.md#replace-an-existing-c00014-card-image). Replacement does not consume another card slot and can target a full 20-card inventory. Create's mandatory image and private default are unchanged. Only a validated plan or fresh observation can expose the exact products-list destination, as described in [the writer](media_live_apply.md#c00014-card-creation-with-original-image).

## C00014 product conversion history

It reads statistics for an existing external product card, not an X00004 SKU or paid order. productId must be an observed positive safe integer from view products. query is optional: page defaults1 with bound1–10000, and limit defaults15 with choices15/30/50/100. No root-level productId, date filter, order control or aggregation is accepted. Existing string views remain unchanged.

### Host readiness and target checks

The optional readLiveProductHistory host hook is required. When missing/non-callable, MEDIA_PRODUCT_HISTORY_HOST_UNAVAILABLE is returned before product/analytics reads. Configure analyticsApiOrigin in the selected local runtime profile or PUBL_ANALYTICS_API_ORIGIN. Without explicit configuration the hook itself is absent, historySupported is false and history reads fail closed; no API/LIVE fallback or guessed default exists. An absent or empty value remains undefined, with no guessed default or service fallback.

The contract requires a separately configured ANALYTICS origin, current channel authorization and exact installed consumer. The connected hook performs only GET /seller/api/v1/overall/outlinks/:productId with validated page/limit, current selected-channel bearer and exact consumer header. Existing authorization and installation checks surround the request; the source200 data envelope is handled internally. This is not an arbitrary analytics route or a visitor-event writer. The workflow reads the complete products/public-order snapshot before and after the history page, checking that the selected product and app binding remain unchanged. Current context is checked around the hook and before return. Unrelated sibling edits/public-order changes may occur if each snapshot is internally consistent. This is observed consistency, not an atomic metrics snapshot.

An absent selected card yields MEDIA_COMMERCE_PRODUCT_NOT_FOUND; unsupported apps yield MEDIA_COMMERCE_PRODUCTS_UNSUPPORTED; changed target/app state yields MEDIA_PRODUCT_HISTORY_CHANGED. Malformed, foreign or contradictory pages yield MEDIA_PRODUCT_HISTORY_UNVERIFIED, never an empty successful substitute.

### Result and source display strings

MEDIA_COMMERCE_PRODUCT_HISTORY returns productId, verified public product, statistics, pagination:{page,limit,total}, totalPages, displayTotalPages, historySupported:true, writesPerformed:false, visitorBehaviorVerified:false and purchaseVerified:false. It returns no edit revision and creates no task. Use a separate products read and its revision for configuration changes.

Each statistics row retains positive row id, matching linkId, baseDate, exposureCounts, conversionCounts and conversionRate. Row IDs must be unique within the page and every linkId must equal the selected product. Counts and rates are **strings**, preserving source grouping, leading zeroes and decimal precision, including values beyond safe JavaScript integer range. The screen appends a percent sign to conversionRate; the tool does not calculate a count ratio or clamp the rate. This differs from [shorts conversion CTR](media_posts_get.md#shorts-conversion-history).

Count strings accept nonnegative integers with optional correctly grouped commas. Rate strings additionally accept a decimal fraction. Each is at most128 characters. Negative, exponential, nonnumeric and percent-suffixed values are rejected. baseDate is a nonblank source string up to128 characters without controls; preserve its text/order without timezone conversion, retention inference or synthesized dates. Date labels need not be unique. Unknown response/row/pagination fields are omitted.

The response page/limit and exact row count must agree with the requested slice and total. totalPages is max(1, ceil(total / limit)); displayTotalPages is max(requested page, totalPages), retaining the original header behavior for out-of-range pages. A valid empty page retains the actual total; it is not proof that other pages or periods are empty. There is no cross-page freshness, aggregate total, visitor action or purchase verification.

It requires a fresh successful MEDIA_COMMERCE_PRODUCT_HISTORY result, matching productId/product, historySupported:true, writesPerformed:false, visitorBehaviorVerified:false and purchaseVerified:false. The owner parser revalidates row/link identity, source count/rate formats, pagination and both total-page values. Missing host, errors, historical, malformed or foreign results have no history destination. Use the exact returned URL; a link does not prove a visitor event or purchase.

Illustrative input-schema read; configure the optional analytics origin explicitly. The connected source alone does not prove actual runtime or service availability. Replace the channel and product ID with the approved target and an observed C00014 card:

```json
{
  "channelCode": "selected-channel",
  "pAppCode": "C00014",
  "view": {
    "kind": "product-history",
    "productId": 1,
    "query": {"page": 1, "limit": 15}
  }
}
```

## Broadcast history list and detail

Preserve the actual dynamic pAppCode; do not substitute C00005. Existing string views and product-history remain unchanged. There is no new tool, task, host hook or write.

Use view:{kind:broadcast-history,query} to read a page. Optional query.page defaults to1 and accepts1–10000; query.limit defaults to15 and accepts15/30/50/100. Use view:{kind:broadcast-record,historyId} for a selected record. historyId must be a positive safe integer observed in the list; it is distinct from the returned lid. No recording identifier, date filter, ordering or arbitrary path is accepted.

The existing explicit LIVE-origin transport performs GET /seller/api/v1/histories with page/limit or GET /seller/api/v1/histories/:historyId under the exact installed consumer. The installed app is read before and after; a changed snapshot yields MEDIA_BROADCAST_HISTORY_CHANGED. Current actor/context is checked before return. Every record's cid must equal the selected consumer; a foreign cid or mismatched detail ID yields MEDIA_BROADCAST_HISTORY_TARGET_MISMATCH. This is a fail-closed bridge rule: the frontend declares cid as a string without establishing its meaning, so actual cid compatibility and upstream ownership guarantees remain unverified. Never replace the guard with a guessed channel ID or alias.

MEDIA_BROADCAST_HISTORY returns histories, pagination:{page,limit,total}, totalPages and paginationEchoVerified. Every page must have the exact row count implied by the requested page/limit and total, with unique IDs. Source page/limit echoes may be absent; when present they must match. paginationEchoVerified is true only when both were present. Returned page/limit alone do not prove an upstream echo. totalPages is at least1, including empty inventories; no cross-page stability or atomic snapshot is claimed.

MEDIA_BROADCAST_RECORD returns record. Both results include consumerBindingVerified:true, writesPerformed:false, recordingAccessed:false and playbackVerified:false, with no mutation revision. Each public record includes numeric id, separate nonnegative safe-integer lid, title, totalViewer, concurrentViewer, status, startTime and endTime. Canonical positive decimal-string source IDs normalize to safe integers. Viewer counts must be explicit nonnegative safe integers; missing counts are not zero. Status is a nonblank source string, not a closed state enum. Time strings and empty endTime remain verbatim; do not infer timezone, duration or an ended broadcast. Status/time strings have a128-character non-control bound and title has a2,000 UTF-16-unit bound. cid, streamKey and all unknown fields, including recording URLs/tokens, are omitted from public records.

Malformed or contradictory pages/records yield MEDIA_BROADCAST_HISTORY_UNVERIFIED. Reads create no journal and never call recording-token, prepare/start/stop, playback or download endpoints. A fresh verified list opens event/records; detail opens event/records/:record.id using the normalized numeric record.id, never lid. The guard requires success, the selected channel/app/installation, consumerBindingVerified:true, writesPerformed:false, recordingAccessed:false, playbackVerified:false and no revision or taskId. It revalidates the sanitized projection, unique list IDs, exact row count, pagination and totalPages. Verified empty/out-of-range lists and total-only pagination remain eligible without inventing page echoes. Errors, historical results, incomplete or secret-bearing records, altered targets and inconsistent routes receive no current destination. Links have no query, fragment, controls fallback or recording-access URL.

Illustrative list and detail inputs, not recorded service calls. Replace the channel, actual installed app and observed history ID:

```json
{
  "channelCode": "selected-channel",
  "pAppCode": "C90105",
  "view": {
    "kind": "broadcast-history",
    "query": { "page": 1, "limit": 15 }
  }
}
```

```json
{
  "channelCode": "selected-channel",
  "pAppCode": "C90105",
  "view": { "kind": "broadcast-record", "historyId": 7 }
}
```