publ betaReference (MCP guide)
Open publ console

sales_overview_get — Read the Sales overview

# sales_overview_get — Read the Sales overview

This is a newly introduced unprefixed name; no publ_sales_overview_get alias or historical migration pair exists. The documented runtime is a dependency of this Docs branch, not an imported runtime release.

Read today's, accumulated, monthly and selected-period sales together for one channel. Requires OWNER or DELEGATEE with MANAGE_SALES_OVERVIEW. MANAGE_MONETIZATION is neither a substitute nor an additional requirement for this reader. Hosted account scope excludes it; channel scope requires the exact channelCode, and unified execute requires an approved matching channel target.

## Input

The outer input and period object are strict; extra fields are rejected.

| Field | Contract |
| --- | --- |
| channelCode | Required string, 1–512 characters. Reject dot/double-dot, slash/backslash, ASCII controls and DEL. Select the exact code through authorized channel discovery. |
| currency | Optional string matching ^[A-Z][A-Z0-9_]{1,11}$, 2–12 characters. Must be an observed base or alternate currency for this channel; defaults to its observed base. |
| period | Optional object requiring both startDate and endDate as valid YYYY-MM-DD dates. Runtime selection requires 1–93 inclusive UTC days, within observed channel creation and current UTC day. |

```json
{"channelCode":"selected-channel-code"}
```

```json
{"channelCode":"selected-channel-code","currency":"KRW"}
```

```json
{"channelCode":"selected-channel-code","currency":"USD","period":{"startDate":"2026-10-01","endDate":"2026-10-07"}}
```

The currency/date examples are valid input shapes, not observed access or results. Choose values that exist for the actual channel. Omitted period starts at max(creation date, UTC today minus seven days), ending today: eight inclusive days for a sufficiently old channel. The lifetime queries are not shortened to the selected-period limit. Currency membership, order/range and creation/current-day restrictions are runtime checks beyond the input schema's date/string shapes. No timezone, unit, type, pagination, export, financial amount, URL, API key, token, requestId or task field is accepted.

## Inputs

| Field | Required here | Contract |
| --- | --- | --- |
| `currency` | No | string; pattern `^[A-Z][A-Z0-9_]{1,11}$` |
| `period` | No | object |
| `period.startDate` | Yes | string; pattern `^(?:(?:\d\d[2468][048]\|\d\d[13579][26]\|\d\d0[48]\|[02468][048]00\|[13579][26]00)-02-29\|\d{4}-(?:(?:0[13578]\|1[02])-(?:0[1-9]\|[12]\d\|3[01])\|(?:0[469]\|11)-(?:0[1-9]\|[12]\d\|30)\|(?:02)-(?:0[1-9]\|1\d\|2[0-8])))$`; format `date` |
| `period.endDate` | Yes | string; pattern `^(?:(?:\d\d[2468][048]\|\d\d[13579][26]\|\d\d0[48]\|[02468][048]00\|[13579][26]00)-02-29\|\d{4}-(?:(?:0[13578]\|1[02])-(?:0[1-9]\|[12]\d\|3[01])\|(?:0[469]\|11)-(?:0[1-9]\|[12]\d\|30)\|(?:02)-(?:0[1-9]\|1\d\|2[0-8])))$`; format `date` |

## Result and observations

success / SALES_OVERVIEW returns channel identity, selection (currency, multiCurrency, period, today), currencies (base and ordered alternates), overview.today, overview.accumulated, overview.monthly, overview.averageMonthlyIncome, and the selected-period summary in period. Four sequential source summaries are read, each through a fresh issuer authorization POST and a separate PAY GET. Channel creation/currency metadata, operator, permissions and credentials are rechecked; later failure or drift suppresses all partial summaries.

Known summary fields contain source totals and records; price amounts stay decimal strings and missing fields stay absent. Product names are untrusted data. The monthly average uses exactly the observed monthly rows, not missing calendar months. It returns a reduced exactRatio and only includes exactAmount for a terminating decimal. Empty monthly rows or any missing net income produce status:unavailable with a reason. See [projection and arithmetic](../guides/sales-overview.md#summaries-and-exact-amounts) for exact bounds and nested fields.

writesPerformed:false excludes business writes, not the four authorization POSTs. authorization has purpose:scoped-sales-read and tokenPersistence:none. verification.confirmed:true has method:source_sales_summary_and_channel_read, atomicSnapshot:false, financialActionCompleted:false and settlementEligibilityVerified:false. It confirms validated sequential observations, not a financial statement, checkout, plan entitlement or payout balance. No job, CSV, conversion, payment, refund or withdrawal is created.

The returned destination is /channels/{channelCode}/sales-overview/home on the configured business console. If any alternate currency is defined, append the selected lowercase currency even when the base is selected. The navigation screen ID is channel.sales-overview. Dates are not encoded into a guessed URL; the console retains its date selector. Demo has no actual console navigation.

## Errors and rereads

Invalid shapes return SDK input rejection or INVALID_INPUT. SALES_PERIOD_INVALID rejects a reversed, overlong, future or pre-creation selection; SALES_PERIOD_UNVERIFIED rejects invalid current/creation date context. SALES_CURRENCY_UNAVAILABLE rejects an unobserved currency. Channel, currency-definition, query/response and record checks use their distinct SALES_* errors; [the guide](../guides/sales-overview.md#failure-boundaries) explains them. PAY settings/authentication/transport failures remain failures, never zero sales or an invented empty screen.

Resolve the reported target/configuration prerequisite and make a fresh explicit read. There is no automatic retry or task_status/task_resume recovery. Successful summaries are not used to bypass a failed later step.

## Channel identity compatibility

The raw adapter accepts optional/null channelCode and primitiveInvitationCode strings. It uses a nonempty canonical channelCode, otherwise the returned legacy alias. Two nonempty unequal identities fail with SALES_CHANNEL_UNVERIFIED. Wrong types, missing usable identity and invalid normalized channel/date/currency data also fail. The selected numeric ID, code, title and context must still match before PAY access; the caller's code is never substituted into a response.

Inputs remain channelCode, period and currency; no alias override is accepted.