# channel_statistics_get
Reads the channel Statistics (beta) dashboard exactly as the console shows it. One call reads one scene: view user (filters all_users, anonymous, logged_in, purchasers) or revenue (all_products, membership, content, commerce, ticket, papp_pass, points), optionally only some of its cards; view table reads one daily table page (50, 100, 500 or 1000 rows); view comparison_segments lists the finalized segments for comparison. Dates are Asia/Seoul days from today minus 365 days to yesterday (default: the last 15 days ending yesterday). Up to 2 comparison segments. Currency (KRW or USD) only when the channel has an alternate currency.
## Inputs
| Field | Required here | Contract |
| --- | --- | --- |
| `view` | No | one of: `user`, `revenue`, `table`, `comparison_segments` (by `kind`); default `{"kind":"user","filter":"all_users"}` |
| `view.filter` | No | When `view.kind` is `user`: `all_users`, `anonymous`, `logged_in`, `purchasers`; default `all_users` |
| `view.cards` | No | When `view.kind` is `user`: array; items: string; min length 1; max length 200; min items 1; max items 30 |
| `view.startDate` | No | When `view.kind` is `user`: string; pattern `^\d{4}-\d{2}-\d{2}$` |
| `view.endDate` | No | When `view.kind` is `user`: string; pattern `^\d{4}-\d{2}-\d{2}$` |
| `view.currency` | No | When `view.kind` is `user`: `KRW`, `USD` |
| `view.compareSegments` | No | When `view.kind` is `user`: array; max items 2 |
| `view.compareSegments[].savedSegmentId` | Yes | When `view.kind` is `user` and `view.compareSegments[]` is alternative 1: string; pattern `^[A-Za-z0-9_-]{1,128}$`; distinctId of a finalized saved segment from view comparison_segments. |
| `view.compareSegments[].conditions` | Yes | When `view.kind` is `user` and `view.compareSegments[]` is alternative 2: object; A temporary comparison segment built from finalized conditions (segment_options / segment_entities), as the dashboard "New comparison segment" modal does. It is not saved. |
| `view.compareSegments[].conditions.include` | Yes | When `view.kind` is `user` and `view.compareSegments[]` is alternative 2: array; min items 1; max items 20 |
| `view.compareSegments[].conditions.include[].anyOf` | Yes | When `view.kind` is `user` and `view.compareSegments[]` is alternative 2: array; min items 1; max items 25 |
| `view.compareSegments[].conditions.include[].anyOf[].classificationCode` | Yes | When `view.kind` is `user` and `view.compareSegments[]` is alternative 2: string; min length 1; max length 256 |
| `view.compareSegments[].conditions.include[].anyOf[].value` | No | When `view.kind` is `user` and `view.compareSegments[]` is alternative 2: string; max length 10000 |
| `view.compareSegments[].conditions.include[].anyOf[].targetEntityIds` | No | When `view.kind` is `user` and `view.compareSegments[]` is alternative 2: array; items: string; pattern `^[A-Za-z0-9_-]{1,128}$`; max items 100 |
| `view.compareSegments[].conditions.exclude` | No | When `view.kind` is `user` and `view.compareSegments[]` is alternative 2: array; min items 1; max items 20 or null |
| `view.filter` | No | When `view.kind` is `revenue`: `all_products`, `membership`, `content`, `commerce`, `ticket`, `papp_pass`, `points`; default `all_products` |
| `view.cards` | No | When `view.kind` is `revenue`: array; items: string; min length 1; max length 200; min items 1; max items 30 |
| `view.startDate` | No | When `view.kind` is `revenue`: string; pattern `^\d{4}-\d{2}-\d{2}$` |
| `view.endDate` | No | When `view.kind` is `revenue`: string; pattern `^\d{4}-\d{2}-\d{2}$` |
| `view.currency` | No | When `view.kind` is `revenue`: `KRW`, `USD` |
| `view.compareSegments` | No | When `view.kind` is `revenue`: array; max items 2 |
| `view.compareSegments[].savedSegmentId` | Yes | When `view.kind` is `revenue` and `view.compareSegments[]` is alternative 1: string; pattern `^[A-Za-z0-9_-]{1,128}$`; distinctId of a finalized saved segment from view comparison_segments. |
| `view.compareSegments[].conditions` | Yes | When `view.kind` is `revenue` and `view.compareSegments[]` is alternative 2: object; A temporary comparison segment built from finalized conditions (segment_options / segment_entities), as the dashboard "New comparison segment" modal does. It is not saved. |
| `view.compareSegments[].conditions.include` | Yes | When `view.kind` is `revenue` and `view.compareSegments[]` is alternative 2: array; min items 1; max items 20 |
| `view.compareSegments[].conditions.include[].anyOf` | Yes | When `view.kind` is `revenue` and `view.compareSegments[]` is alternative 2: array; min items 1; max items 25 |
| `view.compareSegments[].conditions.include[].anyOf[].classificationCode` | Yes | When `view.kind` is `revenue` and `view.compareSegments[]` is alternative 2: string; min length 1; max length 256 |
| `view.compareSegments[].conditions.include[].anyOf[].value` | No | When `view.kind` is `revenue` and `view.compareSegments[]` is alternative 2: string; max length 10000 |
| `view.compareSegments[].conditions.include[].anyOf[].targetEntityIds` | No | When `view.kind` is `revenue` and `view.compareSegments[]` is alternative 2: array; items: string; pattern `^[A-Za-z0-9_-]{1,128}$`; max items 100 |
| `view.compareSegments[].conditions.exclude` | No | When `view.kind` is `revenue` and `view.compareSegments[]` is alternative 2: array; min items 1; max items 20 or null |
| `view.scene` | Yes | When `view.kind` is `table`: `user`, `revenue`; The scene that holds the table card. |
| `view.filter` | No | When `view.kind` is `table`: `all_users`, `anonymous`, `logged_in`, `purchasers`, `all_products`, `membership`, `content`, `commerce`, `ticket`, `papp_pass`, `points` |
| `view.card` | Yes | When `view.kind` is `table`: string; min length 1; max length 200; A table card: dailyVisitors, dailyMembers, dailyNewMembers, dailyPurchasers, salesAndRefundTrend or paymentAndRefundCountTrend (or its manifest key). |
| `view.segmentSlot` | No | When `view.kind` is `table`: `base`, `compare1`, `compare2`; default `base` |
| `view.page` | No | When `view.kind` is `table`: integer; maximum 100000; greater than 0; default `1` |
| `view.limit` | No | When `view.kind` is `table`: `50` or `100` or `500` or `1000`; default `50` |
| `view.startDate` | No | When `view.kind` is `table`: string; pattern `^\d{4}-\d{2}-\d{2}$` |
| `view.endDate` | No | When `view.kind` is `table`: string; pattern `^\d{4}-\d{2}-\d{2}$` |
| `view.currency` | No | When `view.kind` is `table`: `KRW`, `USD` |
| `view.compareSegments` | No | When `view.kind` is `table`: array; max items 2 |
| `view.compareSegments[].savedSegmentId` | Yes | When `view.kind` is `table` and `view.compareSegments[]` is alternative 1: string; pattern `^[A-Za-z0-9_-]{1,128}$`; distinctId of a finalized saved segment from view comparison_segments. |
| `view.compareSegments[].conditions` | Yes | When `view.kind` is `table` and `view.compareSegments[]` is alternative 2: object; A temporary comparison segment built from finalized conditions (segment_options / segment_entities), as the dashboard "New comparison segment" modal does. It is not saved. |
| `view.compareSegments[].conditions.include` | Yes | When `view.kind` is `table` and `view.compareSegments[]` is alternative 2: array; min items 1; max items 20 |
| `view.compareSegments[].conditions.include[].anyOf` | Yes | When `view.kind` is `table` and `view.compareSegments[]` is alternative 2: array; min items 1; max items 25 |
| `view.compareSegments[].conditions.include[].anyOf[].classificationCode` | Yes | When `view.kind` is `table` and `view.compareSegments[]` is alternative 2: string; min length 1; max length 256 |
| `view.compareSegments[].conditions.include[].anyOf[].value` | No | When `view.kind` is `table` and `view.compareSegments[]` is alternative 2: string; max length 10000 |
| `view.compareSegments[].conditions.include[].anyOf[].targetEntityIds` | No | When `view.kind` is `table` and `view.compareSegments[]` is alternative 2: array; items: string; pattern `^[A-Za-z0-9_-]{1,128}$`; max items 100 |
| `view.compareSegments[].conditions.exclude` | No | When `view.kind` is `table` and `view.compareSegments[]` is alternative 2: array; min items 1; max items 20 or null |
| `view.page` | No | When `view.kind` is `comparison_segments`: integer; maximum 100000; greater than 0; default `1` |
| `view.limit` | No | When `view.kind` is `comparison_segments`: `15` or `30` or `50` or `100`; default `15` |
| `view.search` | No | When `view.kind` is `comparison_segments`: string; max length 500 |
| `view.distinctId` | No | When `view.kind` is `comparison_segments`: string; pattern `^[A-Za-z0-9_-]{1,128}$` |