@trillboards/api-client 2.2.0 → 3.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -209,15 +209,16 @@ type AudienceExportResponse = {
209
209
  * Per-device cross-day loyalty feature row emitted by the
210
210
  * `audience_loyalty_features` dataset. Keyed by a partner-scoped
211
211
  * pseudonymous ID — the same physical device yields a different ID
212
- * for each partner because the HMAC salt is partner-specific
213
- * (`partner_salt` on `platform_api_keys`).
212
+ * for each partner because the HMAC salt is partner-specific: one salt
213
+ * per partner, whichever API key calls, so the ID is the same ref the
214
+ * partner's device-level files carry.
214
215
  *
215
216
  */
216
217
  type AudienceLoyaltyFeaturesRow = {
217
- /** How the cross-day device key was formed. `primary_signal_source` is picked by a fixed precedence (`fixed_mac` > `mdns_vendor_model` > `ble_continuity` > `ble_mac_stable`) and `match_confidence` is a direct relabelling of it (first two `high`, `ble_continuity` `medium`, `ble_mac_stable` `low`) — not a computed probability. */
218
+ /** How the cross-day device key was formed. `primary_signal_source` is picked by a fixed precedence (`fixed_mac` > `mdns_vendor_model` > `wifi_bssid` > `ble_continuity` > `ble_mac_stable`) and `match_confidence` is a direct relabelling of it (first three `high`, `ble_continuity` `medium`, `ble_mac_stable` `low`) — not a computed probability. `wifi_bssid` marks a device observed over WiFi, whose key is its BSSID. */
218
219
  _match_disclosure?: {
219
220
  match_confidence?: "high" | "medium" | "low";
220
- primary_signal_source?: "ble_continuity" | "ble_mac_stable" | "mdns_vendor_model" | "fixed_mac";
221
+ primary_signal_source?: "ble_continuity" | "ble_mac_stable" | "mdns_vendor_model" | "fixed_mac" | "wifi_bssid";
221
222
  };
222
223
  /** NOT a per-device inference: it is the aggregate audience profile of the first screen in the device's visited screen set that has one, copied onto every device that touched that screen. All six sub-fields are `null` when no visited screen carries a profile. */
223
224
  demographic_inference?: {
@@ -258,7 +259,7 @@ type AudienceLoyaltyFeaturesRow = {
258
259
  top_hour_of_day?: number;
259
260
  /** List of venue_category labels (Bar, Restaurant, etc.) the device was observed at. */
260
261
  venue_archetypes?: Array<string>;
261
- /** Count of raw radio OBSERVATIONS, not of visits — one dwelling device emits many rows per minute. It is also the quantity the export's k-anonymity `HAVING` clause tests. */
262
+ /** Count of raw radio OBSERVATIONS, not of visits — one dwelling device emits many rows per minute. */
262
263
  visit_count_in_window: number;
263
264
  };
264
265
  type AudienceMetricsResponse = {
@@ -388,7 +389,7 @@ type BleScanResultData = {
388
389
  ibeaconUuid?: string | null;
389
390
  /** The Bluetooth SIG assigned company identifier from the advert's Manufacturer Specific Data structure (AD type 0xFF), read little-endian — e.g. 76 (0x004c) Apple, 6 Microsoft, 224 (0x00e0) Google. `null` when the record carries no such structure. One synthetic exception: a Google Fast Pair service-data advert is forced to the Google id even though it has no 0xFF structure. */
390
391
  manufacturerCompanyId?: number | null;
391
- /** The BLE advertiser address exactly as Android reports it, unhashed on the device — it is sent over TLS and HMAC-hashed server-side. On most modern phones this is a resolvable private address that ROTATES roughly every 15 minutes, so it is not a stable device identity; the sibling `addr_type` (`public`/`random`/`anonymous`) is what tells the two apart. */
392
+ /** The BLE advertiser address exactly as Android reports it, unhashed on the device. It is sent over TLS, and Trillboards stores it as received and as a keyed HMAC-SHA256 hash. On most modern phones this is a resolvable private address that ROTATES roughly every 15 minutes, so it is not a stable device identity; the sibling `addr_type` (`public`/`random`/`anonymous`) is what tells the two apart. */
392
393
  rawAddress: string;
393
394
  /** Received signal strength in dBm (negative, bounded -120..0). It is the MAXIMUM RSSI across every advertisement from this address inside the scan window — the closest observed reading, not a mean — because the scanner groups repeated adverts per address and keeps the strongest as the representative. */
394
395
  rssi: number;
@@ -402,7 +403,7 @@ type BleScanResultData = {
402
403
  };
403
404
  type CanonicalError = {
404
405
  error: {
405
- /** Stable machine-readable error code. Switch on this, never on `message`. The 111 CATALOGUED codes are published as the `ErrorCode` schema and served live by `GET /v1/errors`, which is the authority. This field is NOT limited to them: services emit further codes directly, and `ApiError.notFound(resource)` mints `<resource>_not_found` from an arbitrary resource name. Always handle an unrecognised code by falling back to `type`. */
406
+ /** Stable machine-readable error code. Switch on this, never on `message`. The 143 CATALOGUED codes are published as the `ErrorCode` schema and served live by `GET /v1/errors`, which is the authority. This field is NOT limited to them: services emit further codes directly, and `ApiError.notFound(resource)` mints `<resource>_not_found` from an arbitrary resource name. Always handle an unrecognised code by falling back to `type`. */
406
407
  code: string;
407
408
  /** Per-field violations (populated from Zod errors). */
408
409
  details?: Array<{
@@ -458,11 +459,14 @@ type CompletedImpressions = {
458
459
  /** NUMERIC(18,6). */
459
460
  actual_gross_revenue?: number | null;
460
461
  ad_id: string;
462
+ advertiser_domain?: string | null;
461
463
  bid_request_id?: string | null;
462
464
  billable_key?: string | null;
465
+ buyer_seat?: string | null;
463
466
  completed_at: string;
464
- /** L9 mig 20260513215222: content_sha256 column added — propagates from vast_requests via request_id. Canonical content identity for joins. NEVER the billing reconciliation key — creative_id stays pri... */
467
+ /** content_sha256 is DECLARED to propagate from vast_requests via request_id but lands on ~1% of rows: PG vast_requests is empty (vastRequestsWriteBuffer defaultDisabled since 2026-06-26), so that lin... */
465
468
  content_sha256?: string | null;
469
+ /** chEventParityCron: exact-key repair; created_at/oldest authorized floor; original completed_at CH key; same writer/DLQ before ACK; no delivery debit. All leaf pending indexes must be valid; failed/... */
466
470
  created_at: string;
467
471
  creative_id?: string | null;
468
472
  currency: string;
@@ -473,31 +477,36 @@ type CompletedImpressions = {
473
477
  display_mode?: string | null;
474
478
  /** NUMERIC(10,2). */
475
479
  duration_seconds?: number | null;
480
+ earnings_deal_id?: string | null;
481
+ earnings_deal_type?: string | null;
482
+ earnings_source?: string | null;
476
483
  event_clock_skew_seconds?: number | null;
477
484
  event_timestamp_clamped?: boolean | null;
478
485
  givt_passed?: boolean | null;
479
- /** JustBaat variants dedupe by issued request key; Adipolo, VidVerto, and other partners dedupe by rendered impression_id with request fallback. */
486
+ /** JustBaat dedupes issued request keys; Adipolo/VidVerto/others use rendered impression_id with request fallback. Readers/rollups dedupe overlapping vast_event, proof_of_play and approved partner_sdk. */
480
487
  id?: number | null;
481
488
  impression_id?: string | null;
482
489
  /** NUMERIC(12,6). */
483
490
  impression_multiplier: number;
484
491
  ingestion_path: string;
492
+ /** SDK missing-price is server-pending until signed native pricing; directbillable_ is not authority. Client debit/mirror/pending claims are stripped. Legacy finalization: recorded/native nonnull zero... */
485
493
  metadata: Record<string, unknown>;
486
494
  normalized_event_timestamp?: string | null;
487
495
  play_id?: string | null;
488
- /** STORE TRUTH (2026-07): PG is the LIVE SoR (CH table absent; dashboards read the PG twin). pricing_source: 'placement_purchase'=ad_price/goal per play; '*_overdelivered'/'*_zero'=$0; 'config_default... */
496
+ /** PG is the canonical completion write; completed_impressions_dist is its CH reporting mirror. pricing_source: 'placement_purchase'=ad_price/goal per play; '*_overdelivered'/'*_zero'=$0; 'config_defa... */
489
497
  pricing_source: string;
490
498
  quantity_measured_at?: string | null;
491
499
  quantity_source?: string | null;
492
500
  quantity_source_type?: number | null;
493
501
  quantity_vendor?: string | null;
494
502
  raw_client_timestamp?: string | null;
503
+ /** owned_direct = signed src or verified SDK. VAST impid, request_id and SDK suffix share one nonce/PG row; completion, exact debit and eligible billing commit together. First authorized write owns CH... */
495
504
  request_id?: string | null;
496
505
  screen_id?: number | null;
497
506
  screen_mongo_id: string;
498
507
  serving_tenant_id?: number | null;
499
508
  signature?: string | null;
500
- /** ImpressionController drops rows where source_provider resolves to 'unknown' (PR #2924 guard) */
509
+ /** ImpressionController drops rows with unknown source_provider (PR #2924); earnings use partner billing policy, not raw counts. Exclude pi_e2e_*, admin-allocation and is_demo_data from revenue. */
501
510
  source_provider: string;
502
511
  variant_id?: number | null;
503
512
  variant_name?: string | null;
@@ -589,12 +598,14 @@ type CreatePartnerSensingRouteRequest = {
589
598
  };
590
599
  /** Only the JSON literal `false` creates the route disabled — any other value, including `0` and the string `"false"`, creates it enabled. Note the update endpoint inverts this test, so send a real boolean on both. */
591
600
  enabled?: boolean;
592
- /** `threshold` (the default) needs a `condition` and evaluates every incoming observation. `digest` needs a `digest` block instead, sends on a schedule, and rejects `screenFocusRegions`. Only the exact string `digest` selects digest mode; anything else falls back to `threshold`. */
601
+ /** `threshold` (the default) needs a `condition` and evaluates every incoming observation. `digest` needs a `digest` block instead, sends on a schedule, and rejects `screenFocusRegions` and explicit review timing. Only the exact string `digest` selects digest mode; anything else falls back to `threshold`. */
593
602
  mode?: "threshold" | "digest";
594
603
  /** Operator-supplied label, required, trimmed and capped at 200 characters. It is delivered as `route_name` on every fire and shown in operator surfaces; it is not the alert text. */
595
604
  name: string;
596
605
  /** Bind to a named Sense Anything profile (stable across redeploys). */
597
606
  profileName?: string;
607
+ reviewTimingMode?: SensingRouteReviewTimingMode;
608
+ reviewWaitSeconds?: SensingRouteReviewWaitSeconds;
598
609
  /** Optional per-camera rectangles or polygon lassos. Every entry must reference screenMongoIds. Supported only for visual threshold alerts using once_per_episode, on_escalation, or nag_until_resolved cadence; not digest, group-targeted, non-visual, or per_new_entity routes. */
599
610
  screenFocusRegions?: Array<SensingRouteScreenFocusRegion>;
600
611
  /** Screens to watch — all owned by this partner (foreign → 403). Provide EITHER screenMongoIds OR targetGroupId, not both. */
@@ -650,6 +661,31 @@ type CreativeClassification = {
650
661
  /** Always `null` in practice: the only writer of the underlying `creative_reviews.thumbnail_url` column has no remaining callers, so nothing populates it. When it did carry a value it was constrained to a Trillboards CDN host, so an off-host thumbnail was dropped rather than passed through. */
651
662
  thumbnail_url?: string | null;
652
663
  };
664
+ /**
665
+ * Native readiness hint delivered through existing partner SSE and the audited webhook queue. The hint is free; only the canonical reward page uses native paid admission.
666
+ */
667
+ type CreativeRewardsReadyEvent = {
668
+ data: {
669
+ advertisement_id: string;
670
+ /** Lossless native build stamp. */
671
+ build_stamp: string;
672
+ builder_version: string;
673
+ experiment_id: string;
674
+ from: string;
675
+ notification_id: string;
676
+ object: "creative_reward_ready";
677
+ recovery: "rewind_and_dedupe";
678
+ request_idempotency_key_required: true;
679
+ /** Canonical native reward path plus date scope; never contains credentials or a paid request key. */
680
+ reward_reader_url: string;
681
+ to: string;
682
+ view: "latest_state";
683
+ };
684
+ event: "creative.rewards_ready";
685
+ /** Audited webhook notification ID; SSE data carries the same ID inside data.notification_id. */
686
+ id?: string;
687
+ timestamp: string;
688
+ };
653
689
  type DashboardResponse = {
654
690
  /** All amounts are integer US cents. `total_earned_cents` is lifetime earner revenue across every status (estimated + confirmed + paid); `available_payout_cents` is only the Net-60-matured payable balance minus anything already reserved, floored at 0; `next_payout_date` is simply the 1st of next month, computed in the handler with no reference to a scheduled transfer. `revenue_share_percent` is 0-100 and reads `60` when no `publisher_payout_rates` rule applies. */
655
691
  earnings?: {
@@ -702,7 +738,7 @@ type DashboardResponse = {
702
738
  *
703
739
  */
704
740
  type DataExportSummaryResponse = {
705
- /** `lookback_days` is `min(?days, 90)` and defaults to 7. `screen_count` is how many screens the export is SCOPED to, not how many hold data. **`k_anonymity_threshold` is the constant `0`** — the dataset exports apply no suppression despite the field name; the `>= 5` floor quoted in the published methodology applies only to the cross-network proximity/household exports. Each `datasets` entry is a `total_records`/`earliest`/`latest` triple, and a dataset whose count query FAILED is reported as `0` with null bounds rather than as an error. */
741
+ /** `lookback_days` is `min(?days, 400)` and defaults to 7. `screen_count` is how many screens the export is SCOPED to, not how many hold data. Each `datasets` entry is a `total_records`/`earliest`/`latest` triple, and a dataset whose count query FAILED is reported as `0` with null bounds rather than as an error. */
706
742
  data?: {
707
743
  /** Map of dataset name to record summary */
708
744
  datasets?: Record<string, {
@@ -710,7 +746,6 @@ type DataExportSummaryResponse = {
710
746
  latest?: string | null;
711
747
  total_records?: number;
712
748
  }>;
713
- k_anonymity_threshold?: number;
714
749
  lookback_days?: number;
715
750
  screen_count?: number;
716
751
  };
@@ -780,7 +815,7 @@ type Device = {
780
815
  created_at?: string;
781
816
  /** Trillboards-minted 24-char Mongo ObjectId hex for the `earner_screen_devices` row (`mongo_earnerscreen_device_id`). This is NOT the `device_id` you sent at registration — that comes back as `external_device_id`; the batch endpoint calls this same value `trillboard_id`. All three of `device_id`, `fingerprint` and `external_device_id` are accepted as the `{deviceId}` path parameter, resolved in that order. */
782
817
  device_id?: string;
783
- /** Round-tripped through the OpenRTB `devicetype` integer, so it is LOSSY and will often not equal what you registered: `tv`, `connected_tv`, `display` and any unrecognised value all collapse to `digital_signage`, and `vending_machine` collapses to `kiosk`. Only `mobile`, `tablet`, `digital_signage` and `kiosk` are reachable from a partner registration; `other` appears only for a device whose `devicetype` was written by a non-partner path. */
818
+ /** Saved partner category, independent of advertising classification. POST with an existing device_id and PATCH accept category updates. Legacy devices without a saved declaration retain their previous numeric-derived label until explicitly updated. */
784
819
  device_type?: string;
785
820
  /** Screen display specification. `width`/`height` are pixel resolution; `width_in`/`height_in` are physical inches. Pixel-only inputs are NOT recorded as physical size — pass `width_in`/`height_in` (most accurate) or `ppi` so the server can derive inches from pixels. */
786
821
  display?: {
@@ -806,8 +841,12 @@ type Device = {
806
841
  fingerprint?: string;
807
842
  /** Resolved geo, read from the enriched screen row first and falling back to the raw registration-time device row, with placeholder strings ("City", "Vending Machine Location") filtered out. `lat`/`lng` coalesce as a PAIR — a half-set or null-island (0,0) screen pair is discarded whole in favour of the device's coordinates — and `venue_type` here is the OpenOOH CHILD slug, while `venue.category` carries the parent. `timezone` is the one exception to screen-first: it is read device-first. */
808
843
  location?: Record<string, unknown>;
844
+ location_capability?: PartnerLocationCapability;
845
+ /** Stripe-style readiness, the same contract registration returns (see https://api.trillboards.com/docs/monetization-requirements). */
846
+ monetization_status?: "ready" | "limited" | "blocked";
809
847
  /** The linked screen's name, falling back to the raw `external_device_id` when the screen has none. Omitting `name` at registration seeds the screen as `Partner Device: <device_id>`, so that literal string is what you get back rather than a null. */
810
848
  name?: string;
849
+ requirements?: PartnerMonetizationRequirements;
811
850
  /** The linked screen's Mongo ObjectId hex (`earner_screens.mongo_earnerscreen_id`), minted server-side at registration. This — not `device_id` — is the id the non-device partner endpoints take (display settings, screen groups, fleet commands, analytics). Absent when no screen is linked to the device. */
812
851
  screen_id?: string;
813
852
  /** Provisioning state of the underlying screen row, not a liveness signal — a device that has stopped reporting still reads `approved`. Partner registration stamps `approved` on create (`partnerDeviceRegistrationService.js`), which is what almost every live partner device returns; `pending` is the formatter's fallback when the screen row carries no status of its own. */
@@ -817,6 +856,17 @@ type Device = {
817
856
  /** OpenOOH classification of the screen, rebuilt from the typed `screen_venue_taxonomy` row. `category` is the PARENT slug and `subcategory` the child, with `openooh_venue_type_id` the unambiguous numeric child id — so a granular input like `hotel` reads back as a parent/child pair, not as what you sent. Empty until classification lands, unless your registration itself carried a resolvable `venue.category`/`subcategory`. */
818
857
  venue?: Record<string, unknown>;
819
858
  };
859
+ /**
860
+ * The device-authentication layer's refusal (missing, invalid or replayed device credential).
861
+ */
862
+ type DeviceAuthRefusal = {
863
+ /** The HTTP status. */
864
+ code?: number;
865
+ /** device_token_required, invalid_device_token, device_not_found, device_identity_mismatch, device_token_subject_mismatch, device_screen_mismatch, missing_device_timestamp, missing_device_nonce, stale_device_request, replayed_device_request or replay_guard_unavailable. */
866
+ error?: string;
867
+ message?: string;
868
+ status?: false;
869
+ };
820
870
  type DeviceCapabilityPayload = {
821
871
  /** Runtime family of the agent (`fire-tv`, `android-tv`, `tablet`, `tablet-lite`, `webos`, `vidaa`, `web-browser`, `brightsign`). It is NOT read from here on the partner path — the server derives `agent_type` from `telemetry.agentType` plus hardware signals, and overrides a self-declared `web-browser` when the model/UA say otherwise, because partner SDKs running in a WebView historically reported `web-browser` for physical DOOH tablets. */
822
872
  agentType?: string | null;
@@ -913,7 +963,7 @@ type DeviceSummary = {
913
963
  created_at?: string;
914
964
  /** Trillboards-minted 24-char Mongo ObjectId hex for the `earner_screen_devices` row (`mongo_earnerscreen_device_id`). Not the `device_id` you sent at registration — that is returned as `external_device_id`. Accepted as the `{deviceId}` path parameter, as are `fingerprint` and `external_device_id`. */
915
965
  device_id?: string;
916
- /** Round-tripped through the OpenRTB `devicetype` integer and therefore lossy: `tv`, `connected_tv`, `display` and unrecognised values all read back as `digital_signage`, and `vending_machine` reads back as `kiosk`. */
966
+ /** Saved mutable partner category, independent of advertising classification. Legacy devices without a saved declaration retain their previous numeric-derived label until explicitly updated. */
917
967
  device_type?: string;
918
968
  /** Emits `orientation` (from the screen, defaulting to `landscape`) and `ppi` (from the device row). `width`/`height` still read `dimension_width`/`dimension_height`, columns DROPPED from `earner_screen_devices` by migration `20260527180000`, so they resolve to undefined and are omitted from the JSON entirely — registered pixels now live in `screen_width_px`/`screen_height_px`. Physical inches you send as `width_in`/`height_in` are stored but never echoed here. */
919
969
  display?: Record<string, unknown>;
@@ -927,8 +977,12 @@ type DeviceSummary = {
927
977
  fingerprint?: string;
928
978
  /** Resolved geo: the enriched screen row first, falling back to the registration-time device row, with placeholder strings coalesced away. `lat`/`lng` coalesce as a pair, `venue_type` is the OpenOOH child slug, and `timezone` alone is read device-first. */
929
979
  location?: Record<string, unknown>;
980
+ location_capability?: PartnerLocationCapability;
981
+ /** Stripe-style readiness, the same contract registration returns (see https://api.trillboards.com/docs/monetization-requirements). */
982
+ monetization_status?: "ready" | "limited" | "blocked";
930
983
  /** The linked screen's name, falling back to the raw `external_device_id` when the screen has none. A registration that omits `name` seeds the screen as `Partner Device: <device_id>`. */
931
984
  name?: string;
985
+ requirements?: PartnerMonetizationRequirements;
932
986
  /** The linked screen's Mongo ObjectId hex (`earner_screens.mongo_earnerscreen_id`). This is the id every non-device partner endpoint takes — display settings, screen groups, fleet commands, analytics. Absent when no screen is linked. */
933
987
  screen_id?: string;
934
988
  /** The linked screen's `earner_screens.status` verbatim. Partner registration auto-approves, so the live value is `approved` (`deactivated` after a DELETE, `pending` only while no screen is linked) — not the `pending`/`active`/`offline`/`suspended` vocabulary the `Device` schema declares, whose mapper has no production call site. */
@@ -1097,6 +1151,7 @@ type EarnerScreens = {
1097
1151
  neighborhood?: string | null;
1098
1152
  ntp_sync_required: boolean;
1099
1153
  offline_alert_sent_at?: string | null;
1154
+ offline_push_alert_sent_at?: string | null;
1100
1155
  operating_hours?: Record<string, unknown> | null;
1101
1156
  partner_mongo_id?: string | null;
1102
1157
  peak_hours?: Array<string> | null;
@@ -1158,6 +1213,7 @@ type EarnerScreens = {
1158
1213
  venue_state?: string | null;
1159
1214
  venue_subcategory?: string | null;
1160
1215
  waterfall_optimized_at?: string | null;
1216
+ /** waterfall_partners is the ONLY pin store (order + whitelist; screen_partner_settings was never built). Serving reads it only with a screen_header_bidding_config row and ignores it once waterfall_op... */
1161
1217
  waterfall_partners: Array<string>;
1162
1218
  waterfall_total_timeout_ms?: number | null;
1163
1219
  /** physical_size JSONB being split into typed cols (Wave 1 D2): width_inches/height_inches/diagonal_inches from migration 342; physical_size_set_by/physical_size_set_at from PR #4471. JSONB authoritat... */
@@ -1168,6 +1224,7 @@ type EarningsBreakdownResponse = {
1168
1224
  breakdown?: Array<{
1169
1225
  /** Date or screen_id depending on group_by */
1170
1226
  date?: string;
1227
+ earning_sources?: EarningsSources;
1171
1228
  earnings_cents?: number;
1172
1229
  impressions?: number;
1173
1230
  /** Screen ID (when grouped by screen) */
@@ -1184,9 +1241,11 @@ type EarningsBreakdownResponse = {
1184
1241
  group_by?: "day" | "week" | "screen";
1185
1242
  start?: string;
1186
1243
  };
1187
- /** Integer US cents. **`direct_cents` is a hardcoded `0`** and `programmatic_cents` is simply `total_cents`, so the split conveys nothing — everything this rail reports is booked as programmatic. */
1244
+ /** Integer US cents for the selected period. With source reporting enabled, direct_cents is verified first-party revenue and programmatic_cents is the remainder; earning_sources supplies the business classification. Disabled reporting retains the legacy split. */
1188
1245
  summary?: {
1189
1246
  direct_cents?: number;
1247
+ earning_source_version?: 1;
1248
+ earning_sources?: EarningsSources;
1190
1249
  programmatic_cents?: number;
1191
1250
  total_cents?: number;
1192
1251
  total_impressions?: number;
@@ -1223,12 +1282,14 @@ type EarningsData = {
1223
1282
  type EarningsResponse = {
1224
1283
  /** Amount available for immediate payout */
1225
1284
  available_for_payout_cents?: number;
1226
- /** Integer US cents, and only one component is real: **`direct_campaigns` and `programmatic_floodgates` are hardcoded `0`**, while `programmatic_google` is ALL programmatic earner revenue for the current calendar month regardless of provider — it is not Google-specific, and unlike the lifetime figures above it is month-to-date. */
1285
+ /** Current-month integer US cents. With source reporting enabled, direct_campaigns is verified first-party revenue and programmatic_google is the remaining aggregate, not Google-specific. programmatic_floodgates remains zero. Prefer earning_sources; disabled reporting retains the legacy all-programmatic split. */
1227
1286
  breakdown?: {
1228
1287
  direct_campaigns?: number;
1229
1288
  programmatic_floodgates?: number;
1230
1289
  programmatic_google?: number;
1231
1290
  };
1291
+ earning_source_version?: 1;
1292
+ earning_sources?: EarningsSources;
1232
1293
  /** `amount_cents` is integer US cents and simply repeats `available_for_payout_cents`; `date` is the 1st of next month, computed in the handler with no reference to any scheduled transfer; `stripe_status` is the partner's Connect account status, which must be `active` before a payout request is accepted. */
1233
1294
  next_payout_estimate?: {
1234
1295
  amount_cents?: number;
@@ -1246,6 +1307,19 @@ type EarningsResponse = {
1246
1307
  /** Total earnings since partner started */
1247
1308
  total_lifetime_cents?: number;
1248
1309
  };
1310
+ /**
1311
+ * Optional reporting breakdown in integer US cents. Components sum to the existing amount. Missing evidence is Unclassified; absence of this object means reporting is unavailable.
1312
+ */
1313
+ type EarningsSources = {
1314
+ /** Paid first-party portal and offline IO bookings. */
1315
+ direct_bookings: number;
1316
+ /** Verified open-auction delivery outside a private deal. */
1317
+ open_exchange: number;
1318
+ /** Verified delivered DSP/SSP PMP, PG and preferred deals. */
1319
+ programmatic_deals: number;
1320
+ /** Earnings lacking supported allocation evidence. */
1321
+ unclassified: number;
1322
+ };
1249
1323
  /**
1250
1324
  * Legacy free-text error shape. COLLAPSED onto the shared `LegacyError`
1251
1325
  * definition so there is exactly one declaration of this shape across the
@@ -1255,9 +1329,9 @@ type EarningsResponse = {
1255
1329
  */
1256
1330
  type Error = LegacyError;
1257
1331
  /**
1258
- * The 111 CATALOGUED error codes, generated from utils/errorCatalog.js — the same catalog that backs https://api.trillboards.com/docs/errors. This is the documented registry, NOT the complete set of codes the API can emit: a response `code` is an open string (see `TrillboardsError`). Use this list to recognise a code, never to assume a response cannot carry another.
1332
+ * The 143 CATALOGUED error codes, generated from utils/errorCatalog.js — the same catalog that backs https://api.trillboards.com/docs/errors. This is the documented registry, NOT the complete set of codes the API can emit: a response `code` is an open string (see `TrillboardsError`). Use this list to recognise a code, never to assume a response cannot carry another.
1259
1333
  */
1260
- type ErrorCode = "ad_interval_out_of_range" | "allocation_out_of_range" | "analytics_unavailable" | "api_key_expired" | "api_key_owner_missing" | "api_key_revoked" | "array_items_must_be_strings" | "array_too_large" | "auth_error" | "authentication_required" | "batch_size_exceeded" | "blocked_advertisers_too_large" | "blocked_iab_categories_too_large" | "client_ip_required" | "concurrent_request_limit" | "conflict" | "conflicting_lists" | "daily_quota_exceeded" | "database_error" | "dataset_not_scopable" | "device_already_registered" | "device_identity_missing" | "device_identity_underivable" | "device_not_found" | "device_offline" | "dsp_access_denied" | "error" | "field_must_be_array" | "field_must_be_boolean" | "field_too_long" | "floor_price_out_of_range" | "forbidden" | "idempotency_error" | "idempotency_key_in_use" | "idempotency_key_mismatch" | "insufficient_data" | "insufficient_permissions" | "insufficient_scope" | "internal_error" | "invalid_ad_surface_mode" | "invalid_age_rating" | "invalid_api_key" | "invalid_api_key_format" | "invalid_array_items" | "invalid_currency" | "invalid_dataset" | "invalid_device_id" | "invalid_dimensions" | "invalid_display_mode" | "invalid_field_type" | "invalid_field_value" | "invalid_fingerprint" | "invalid_json" | "invalid_lbar_position" | "invalid_lbar_settings" | "invalid_measures" | "invalid_media_url" | "invalid_order_by" | "invalid_orientation" | "invalid_pip_position" | "invalid_pip_settings" | "invalid_preference_level" | "invalid_preferences" | "invalid_provider" | "invalid_screen_id" | "invalid_segment_rules" | "invalid_sizing_mode" | "invalid_stream_type" | "invalid_webhook_events" | "invalid_webhook_url" | "lbar_settings_must_be_object" | "lbar_size_out_of_range" | "missing_required_field" | "not_found" | "openrtb_auth_failed" | "openrtb_config_missing" | "paired_training_insert_failed" | "paired_training_rate_limit_exceeded" | "partner_inactive" | "pip_margin_out_of_range" | "pip_settings_must_be_object" | "pip_size_ratio_out_of_range" | "preferences_must_be_object" | "preferences_required" | "preset_id_required" | "preset_not_found" | "rate_limit_exceeded" | "resource_locked" | "screen_ids_required" | "screen_not_found" | "screen_not_in_scope" | "sdk_enrich_rate_limit_exceeded" | "sdk_impression_rate_limit_exceeded" | "sdk_qr_beacon_rate_limit_exceeded" | "sdk_qr_scan_rate_limit_exceeded" | "segment_limit_exceeded" | "segment_not_found" | "service_unavailable" | "stale_data" | "stream_content_required" | "stream_not_found" | "tier_insufficient" | "timeout" | "timeout_out_of_range" | "unknown_agent_type" | "unsupported_media_type" | "validation_error" | "webhook_limit_exceeded" | "webhook_not_found" | "webhook_secret_expired" | "webhook_url_unreachable";
1334
+ type ErrorCode = "AUTH_REQUIRED" | "BRAND_CONFIGURATION_FAILED" | "BRAND_PROFILE_CONFLICT" | "BRAND_PROFILE_NOT_FOUND" | "CREATIVE_ADVERTISEMENT_NOT_OWNED" | "CREATIVE_MODERATION_UNAVAILABLE" | "CREATIVE_NOT_LINKED" | "CREATIVE_NOT_READY" | "CREATIVE_POLICY_CONFLICT" | "CREATIVE_TOO_LARGE" | "EXPERIMENT_COMPLETED" | "EXPERIMENT_NOT_FOUND" | "FEEDBACK_POLICY_REQUIRED" | "IDEMPOTENCY_CONFLICT" | "INVALID_BRAND_RULES" | "INVALID_CREATIVE_URL" | "INVALID_CREATIVE_WEIGHTS" | "INVALID_FEEDBACK_CREATIVE" | "INVALID_FEEDBACK_OBJECTIVE" | "INVALID_FEEDBACK_REQUEST" | "INVALID_POLICY_VERSION" | "INVALID_VARIANTS" | "MEDIA_BUY_NOT_FOUND" | "OPERATION_ALREADY_COMMITTED" | "OPERATION_IN_PROGRESS" | "POLICY_NOT_AVAILABLE" | "SOURCE_CREATIVE_NOT_FOUND" | "UNSUPPORTED_CREATIVE_TYPE" | "VARIANT_IDENTITY_CONFLICT" | "ad_interval_out_of_range" | "allocation_out_of_range" | "analytics_unavailable" | "api_key_expired" | "api_key_owner_missing" | "api_key_revoked" | "array_items_must_be_strings" | "array_too_large" | "auth_error" | "authentication_required" | "batch_size_exceeded" | "blocked_advertisers_too_large" | "blocked_iab_categories_too_large" | "client_ip_required" | "concurrent_request_limit" | "conflict" | "conflicting_lists" | "creative_policy_conflict" | "creative_policy_forbidden" | "daily_quota_exceeded" | "database_error" | "dataset_not_scopable" | "device_already_registered" | "device_identity_missing" | "device_identity_underivable" | "device_not_found" | "device_offline" | "dsp_access_denied" | "error" | "field_must_be_array" | "field_must_be_boolean" | "field_too_long" | "floor_price_out_of_range" | "forbidden" | "idempotency_error" | "idempotency_key_in_use" | "idempotency_key_mismatch" | "insufficient_data" | "insufficient_permissions" | "insufficient_scope" | "internal_error" | "invalid_ad_surface_mode" | "invalid_age_rating" | "invalid_api_key" | "invalid_api_key_format" | "invalid_array_items" | "invalid_creative_policy" | "invalid_currency" | "invalid_dataset" | "invalid_device_id" | "invalid_dimensions" | "invalid_display_mode" | "invalid_field_type" | "invalid_field_value" | "invalid_fingerprint" | "invalid_json" | "invalid_lbar_position" | "invalid_lbar_settings" | "invalid_measures" | "invalid_media_url" | "invalid_order_by" | "invalid_orientation" | "invalid_pip_position" | "invalid_pip_settings" | "invalid_preference_level" | "invalid_preferences" | "invalid_provider" | "invalid_screen_id" | "invalid_segment_rules" | "invalid_sizing_mode" | "invalid_stream_type" | "invalid_webhook_events" | "invalid_webhook_url" | "lbar_settings_must_be_object" | "lbar_size_out_of_range" | "missing_required_field" | "not_found" | "openrtb_auth_failed" | "openrtb_config_missing" | "paired_training_insert_failed" | "paired_training_rate_limit_exceeded" | "partner_inactive" | "pip_margin_out_of_range" | "pip_settings_must_be_object" | "pip_size_ratio_out_of_range" | "preferences_must_be_object" | "preferences_required" | "preset_id_required" | "preset_not_found" | "rate_limit_exceeded" | "resource_locked" | "screen_ids_required" | "screen_not_found" | "screen_not_in_scope" | "sdk_enrich_rate_limit_exceeded" | "sdk_impression_rate_limit_exceeded" | "sdk_qr_beacon_rate_limit_exceeded" | "sdk_qr_scan_rate_limit_exceeded" | "segment_limit_exceeded" | "segment_not_found" | "service_unavailable" | "stale_data" | "stream_content_required" | "stream_not_found" | "tier_insufficient" | "timeout" | "timeout_out_of_range" | "unknown_agent_type" | "unsupported_media_type" | "validation_error" | "webhook_limit_exceeded" | "webhook_not_found" | "webhook_secret_expired" | "webhook_url_unreachable";
1261
1335
  type ErrorCodeResponse = {
1262
1336
  code: string;
1263
1337
  description: string;
@@ -1357,6 +1431,269 @@ type ExtendedIdentity = {
1357
1431
  /** `available` requires `id`; `unavailable` requires `id` to be ABSENT — sending both is a validation failure, and because normalisation is all-or-nothing across the array that single bad element discards every other identity in the same request while the heartbeat still returns 200. */
1358
1432
  status: "available" | "unavailable";
1359
1433
  };
1434
+ type FeedbackBrand = {
1435
+ advertisement_id: string;
1436
+ brand_name: string;
1437
+ profile_id: string;
1438
+ reactive_enabled: true;
1439
+ stance: "adversarial" | "complementary" | "same_brand" | "intent_capture";
1440
+ };
1441
+ type FeedbackBrandRequest = {
1442
+ /** Native brand reference assets used by creative generation. */
1443
+ brand_assets?: Array<Record<string, unknown>>;
1444
+ /** Optional brand intent supplied to the native creative generator. */
1445
+ brand_intent_text?: string | null;
1446
+ /** Advertiser brand name for the experiment’s native campaign. */
1447
+ brand_name: string;
1448
+ /** Native brand colours, typography, voice, products and required or prohibited elements. */
1449
+ brand_rules: {
1450
+ /** The advertiser brand name, e.g. "Nike". */
1451
+ brand_name: string;
1452
+ /** Elements that MUST appear in every creative, e.g. ["logo top-right","legal disclaimer"]; may be empty. */
1453
+ mandatory_elements: Array<string>;
1454
+ /** Brand colour palette. */
1455
+ palette: {
1456
+ /** Accent colours; may be empty. */
1457
+ accents: Array<string>;
1458
+ /** Primary brand colour (hex or named); empty string if unknown. */
1459
+ primary: string;
1460
+ /** Secondary brand colour; empty string if none. */
1461
+ secondary: string;
1462
+ };
1463
+ /** Key products to feature; may be empty. */
1464
+ products: Array<{
1465
+ /** Short product description; empty string if none. */
1466
+ description: string;
1467
+ /** Product name. */
1468
+ name: string;
1469
+ }>;
1470
+ /** Elements that must NEVER appear, e.g. ["competitor logos","alcohol"]; may be empty. */
1471
+ prohibited_elements: Array<string>;
1472
+ /** Preferred reactive stances for this brand; may be empty. */
1473
+ stance_preferences: Array<"adversarial" | "complementary" | "same_brand" | "intent_capture">;
1474
+ /** Approved taglines / slogans; may be empty. */
1475
+ taglines: Array<string>;
1476
+ /** Typography guidance. */
1477
+ typography: {
1478
+ /** Body typeface / style guidance; empty string if none. */
1479
+ body: string;
1480
+ /** Headline typeface / style guidance; empty string if none. */
1481
+ headline: string;
1482
+ };
1483
+ /** Voice + tone adjectives, e.g. ["confident","playful"]; may be empty. */
1484
+ voice_tone: Array<string>;
1485
+ };
1486
+ /** Optional existing brand profile owned by this advertiser and advertisement. */
1487
+ profile_id?: string;
1488
+ /** Native reactive relationship used to generate or stage this creative. */
1489
+ stance?: "adversarial" | "complementary" | "same_brand" | "intent_capture";
1490
+ };
1491
+ type FeedbackBrandResponse = {
1492
+ data: FeedbackBrand;
1493
+ success: true;
1494
+ };
1495
+ type FeedbackCreateRequest = {
1496
+ /** Exact decimal policy version; zero enrolls an unclaimed native policy. */
1497
+ expected_policy_version?: string;
1498
+ /** Caller-owned key for this exact operation; do not reuse for changed inputs. */
1499
+ idempotency_key: string;
1500
+ /** Your funded native AdCP media buy ID. */
1501
+ media_buy_id: string;
1502
+ /** Name for this funded creative feedback experiment. */
1503
+ name: string;
1504
+ /** Measured objective: gaze share 0–1, gaze overlap milliseconds, or capped mean dwell milliseconds. */
1505
+ objective: "gaze_share" | "gaze_overlap_ms" | "dwell_ms";
1506
+ /** Native package ID within that media buy. */
1507
+ package_id: string;
1508
+ };
1509
+ type FeedbackCreativeReview = {
1510
+ success: boolean;
1511
+ };
1512
+ type FeedbackExperiment = {
1513
+ advertisement_id: string;
1514
+ advertiser_id: string;
1515
+ id: string;
1516
+ media_buy_id: string;
1517
+ name: string;
1518
+ objective: "gaze_share" | "gaze_overlap_ms" | "dwell_ms";
1519
+ package_id: string;
1520
+ policy_mode: "attribution" | "experiment" | "external_agent";
1521
+ policy_version: string;
1522
+ status: string;
1523
+ variants: Array<FeedbackVariant>;
1524
+ };
1525
+ type FeedbackExperimentDetail = FeedbackExperiment & {
1526
+ creatives: Array<FeedbackRecoveredCreative>;
1527
+ creatives_truncated: boolean;
1528
+ };
1529
+ type FeedbackExperimentDetailResponse = {
1530
+ data: FeedbackExperimentDetail;
1531
+ success: true;
1532
+ };
1533
+ type FeedbackExperimentResponse = {
1534
+ data: FeedbackExperiment;
1535
+ success: true;
1536
+ };
1537
+ type FeedbackGenerateRequest = {
1538
+ /** Image aspect ratio, such as 16:9, matched to your booked screens. */
1539
+ aspectRatio?: string;
1540
+ /** Creative direction added to your configured native brand rules. */
1541
+ brief?: string;
1542
+ /** Unique caller-owned generation key; committed retries expose creativeId and renderKey in the receipt. */
1543
+ idempotency_key: string;
1544
+ /** Native reactive relationship used to generate or stage this creative. */
1545
+ stance?: "adversarial" | "complementary" | "same_brand" | "intent_capture";
1546
+ };
1547
+ type FeedbackGenerateResponse = {
1548
+ data: FeedbackGeneratedCreative;
1549
+ success: true;
1550
+ };
1551
+ type FeedbackGeneratedCreative = {
1552
+ brandReviewStatus: string;
1553
+ cdnUrl: string;
1554
+ creativeId: string;
1555
+ deduped: boolean;
1556
+ headline?: string | null;
1557
+ moderationStatus?: string;
1558
+ renderKey: string;
1559
+ status?: string;
1560
+ success: true;
1561
+ usage_receipt: Record<string, unknown>;
1562
+ };
1563
+ /**
1564
+ * Exactly one native image source is required. source_creative_id resolves only within the authenticated partner. Inline bytes require content_type and are validated against the actual image MIME and byte hash by native staging.
1565
+ */
1566
+ type FeedbackImportRequest = {
1567
+ /** Public HTTPS image URL; provide exactly one image source. */
1568
+ asset_url?: string;
1569
+ /** Actual image MIME; required for inline bytes and checked against decoded content. */
1570
+ content_type?: "image/png" | "image/jpeg" | "image/jpg" | "image/webp";
1571
+ /** Optional headline stored with the native imported creative. */
1572
+ headline?: string;
1573
+ /** Unique caller-owned import key; a committed retry returns the existing usage receipt. */
1574
+ idempotency_key: string;
1575
+ /** Base64 PNG, JPEG or WebP bytes; provide exactly one source and content_type. */
1576
+ image_base64?: string;
1577
+ /** Existing creative ID owned by the authenticated partner; provide exactly one image source. */
1578
+ source_creative_id?: string;
1579
+ /** Native reactive relationship used to generate or stage this creative. */
1580
+ stance?: "adversarial" | "complementary" | "same_brand" | "intent_capture";
1581
+ };
1582
+ type FeedbackPolicyRequest = {
1583
+ /** Exact decimal policy version from the latest experiment; stale updates return 409. */
1584
+ expected_version: string;
1585
+ /** Replacement weights for registered variants; omitted variants are inactive. */
1586
+ weights: Array<{
1587
+ /** Registered native creative ID to assign this weight. */
1588
+ creative_id: string;
1589
+ /** Weight between zero and one; zero disables selection. Eligible weights normalize at serving. */
1590
+ weight: number;
1591
+ }>;
1592
+ };
1593
+ type FeedbackRecoveredCreative = {
1594
+ advertisement_mongo_id: string | null;
1595
+ brand_profile_id: string | null;
1596
+ brand_review_status: string;
1597
+ cdn_url: string;
1598
+ content_sha256: string | null;
1599
+ created_at: string;
1600
+ creative_id: string;
1601
+ headline: string | null;
1602
+ linked_to_experiment_ad: boolean;
1603
+ moderation_status: string | null;
1604
+ render_key: string | null;
1605
+ reviewed_at: string | null;
1606
+ stance: string | null;
1607
+ };
1608
+ type FeedbackRegisterVariantsRequest = {
1609
+ /** Exact decimal policy version from the latest experiment; stale updates return 409. */
1610
+ expected_version: string;
1611
+ /** Approved native variants; identity and bytes remain immutable. */
1612
+ variants: Array<{
1613
+ /** Approved native generated or imported creative ID. */
1614
+ creative_id: string;
1615
+ /** Your model version associated with this immutable variant. */
1616
+ model_version?: string;
1617
+ /** Stable model variant identity within this experiment. */
1618
+ variant_id: string;
1619
+ }>;
1620
+ };
1621
+ type FeedbackReviewRequest = {
1622
+ /** Owned native creative ID awaiting your explicit brand review. */
1623
+ creative_id: string;
1624
+ /** Approve or reject brand use; global AI moderation remains a separate gate. */
1625
+ decision: "approve" | "reject";
1626
+ };
1627
+ type FeedbackReviewResponse = {
1628
+ data: FeedbackCreativeReview;
1629
+ success: true;
1630
+ };
1631
+ type FeedbackRewardQuery = {
1632
+ /** Opaque next_cursor from this same date scope; rewind after scan_complete. */
1633
+ cursor?: string;
1634
+ /** Inclusive first play date, YYYY-MM-DD; date range is at most 31 days. */
1635
+ from: string;
1636
+ /** Unique caller-owned billing key for this page; committed retries return the receipt, not another read. */
1637
+ idempotency_key: string;
1638
+ /** Maximum native play states returned on this metered page. */
1639
+ limit?: number;
1640
+ /** Inclusive last play date, YYYY-MM-DD; date range is at most 31 days. */
1641
+ to: string;
1642
+ };
1643
+ type FeedbackRewardRow = {
1644
+ action: "upsert" | "retract";
1645
+ ad_id: string | null;
1646
+ build_stamp: string;
1647
+ builder_version: string;
1648
+ /** Four ordered strings: play_date, screen_mongo_id, play_source, play_key. */
1649
+ canonical_key: Array<string>;
1650
+ content_sha256: string;
1651
+ /** Lossless issued v1 JSON snapshot; empty string when unissued. Contains variant_id and creative_policy_version. */
1652
+ creative_feedback: string;
1653
+ creative_id: string | null;
1654
+ dwell_capped_ms_mean: number | null;
1655
+ dwell_overlap_ms: number | null;
1656
+ dwell_windows_n: number | null;
1657
+ gaze_face_rows_n: number | null;
1658
+ gaze_overlap_ms: number | null;
1659
+ /** Measured gaze share, 0–1; NULL when not measured. */
1660
+ gaze_pct_on_screen: number | null;
1661
+ gaze_seconds: number | null;
1662
+ gaze_windows_n: number | null;
1663
+ play_completed_at: string | null;
1664
+ play_date: string;
1665
+ play_key: string;
1666
+ play_source: string;
1667
+ play_started_at: string | null;
1668
+ request_id: string | null;
1669
+ reward_revision_id: string;
1670
+ screen_mongo_id: string;
1671
+ superseded: number;
1672
+ };
1673
+ type FeedbackRewards = {
1674
+ experiment_id: string;
1675
+ next_cursor: string | null;
1676
+ objective: "gaze_share" | "gaze_overlap_ms" | "dwell_ms";
1677
+ rewind_next_poll: boolean;
1678
+ rows: Array<FeedbackRewardRow>;
1679
+ scan_complete: boolean;
1680
+ usage_receipt: Record<string, unknown>;
1681
+ view: "latest_state";
1682
+ };
1683
+ type FeedbackRewardsResponse = {
1684
+ data: FeedbackRewards;
1685
+ success: true;
1686
+ };
1687
+ type FeedbackStopRequest = {
1688
+ /** Exact decimal policy version from the latest experiment; stale updates return 409. */
1689
+ expected_version: string;
1690
+ };
1691
+ type FeedbackVariant = {
1692
+ content_sha256?: string | null;
1693
+ creative_id: string;
1694
+ model_version?: string | null;
1695
+ variant_id: string;
1696
+ };
1360
1697
  /**
1361
1698
  * A fleet-command job: one batch that fanned a device command across a screen group's
1362
1699
  * members. Poll via GET /fleet-commands/{id}.
@@ -1493,7 +1830,7 @@ type HttpProbeResult = {
1493
1830
  */
1494
1831
  type HybridError = {
1495
1832
  error?: {
1496
- /** Stable machine-readable error code. Switch on this, never on `message`. The 111 CATALOGUED codes are published as the `ErrorCode` schema and served live by `GET /v1/errors`, which is the authority. This field is NOT limited to them: services emit further codes directly, and `ApiError.notFound(resource)` mints `<resource>_not_found` from an arbitrary resource name. Always handle an unrecognised code by falling back to `type`. */
1833
+ /** Stable machine-readable error code. Switch on this, never on `message`. The 143 CATALOGUED codes are published as the `ErrorCode` schema and served live by `GET /v1/errors`, which is the authority. This field is NOT limited to them: services emit further codes directly, and `ApiError.notFound(resource)` mints `<resource>_not_found` from an arbitrary resource name. Always handle an unrecognised code by falling back to `type`. */
1497
1834
  code?: string;
1498
1835
  param?: string | null;
1499
1836
  type?: ErrorType;
@@ -1568,7 +1905,7 @@ type MdnsNetworkDevice = {
1568
1905
  type MeasurementMethodology = {
1569
1906
  /** Prose description of the happy-path pipeline: edge capture, buffered ingest, `signal_observations`, a 30-minute device-resolution pass into `resolved_device_observations`, then a 30-minute transition pass. Names the stores only — never infrastructure or source locations. */
1570
1907
  canonical_path?: string;
1571
- /** What each screen observes and what is dropped at the edge. */
1908
+ /** What each screen observes and sends. */
1572
1909
  capture_stack?: Record<string, unknown>;
1573
1910
  /** Cross-day identity, including measured coverage (1.6% of identifiable BLE rows). An earlier revision said ~31%; that graded the presence of stable_payload_hash and ignored the sanitizer the identity expression applies, and it is withdrawn. */
1574
1911
  cross_day_matching?: Record<string, unknown>;
@@ -1584,15 +1921,13 @@ type MeasurementMethodology = {
1584
1921
  fallback_path?: string;
1585
1922
  /** How identifiers are keyed, and what erasure means. */
1586
1923
  hashing?: Record<string, unknown>;
1587
- /** The counting UNIT. Reach and unique-device counts are counts of BLE identifiers, not devices and not people; one device contributes several identifiers per window and the number grows with the window. Carries the measured identifiers-per-device per fleet type and the controlled comparison it was derived from. */
1924
+ /** The counting UNIT. Reach and unique-device counts are counts of distinct canonical BLE keys (identifiers); one device contributes several identifiers per window and the number grows with the window. Carries the measured identifiers-per-device per fleet type and the controlled comparison it was derived from. */
1588
1925
  identifier_inflation?: Record<string, unknown>;
1589
1926
  /** Alignment against MRC OOH Phase 2. `mrc_status_accredited` is the machine-readable answer and is **false until an MRC grant reference exists** — read that boolean rather than parsing the English `status` line. Also carries the monotonic qualification chain (`in_range` through `cross_screen`) and the interval method (Wilson score for proportions, 200-sample bootstrap for medians). */
1590
1927
  mrc_ooh_phase2_alignment: Record<string, unknown>;
1591
1928
  /** Version markers for the edge parsers that produced the disclosed fields — `ble_advertisement_parser`, `mdns_txt_extractor`, and the integer `heartbeat_payload_schema`. Hand-maintained constants, bumped when a parser changes. */
1592
1929
  parser_versions?: Record<string, unknown>;
1593
- /** k-anonymity floor and differential-privacy budget. */
1594
- privacy_gates: Record<string, unknown>;
1595
- /** Per-store retention in days. */
1930
+ /** Per-store retention in days in active systems; `basis` states how each is counted and what the encrypted archive keeps. */
1596
1931
  retention: Record<string, unknown>;
1597
1932
  /** Tables a reviewer re-derives every published count from. */
1598
1933
  source_tables: Array<string>;
@@ -1819,6 +2154,25 @@ type PartnerDeviceHeartbeatBody = {
1819
2154
  wifiSsidHash?: string | null;
1820
2155
  [key: string]: unknown;
1821
2156
  };
2157
+ /**
2158
+ * A play reported by the partner SDK's reportPlay. The PartnerPlay body without screen_id (the screen is the device's binding), plus the Trillboards impression id.
2159
+ */
2160
+ type PartnerDevicePlay = {
2161
+ /** Optional ad/line identifier; defaults to the sha-keyed creative. */
2162
+ ad_id?: string;
2163
+ /** When the play completed (device clock), within the last 7 days and at most 5 minutes ahead of the server clock. */
2164
+ completed_at: string;
2165
+ /** The classification reference from POST /creatives — `sha256:<hex>` or the bare 64-char content hash. */
2166
+ creative_ref: string;
2167
+ /** Play duration in seconds (default 30). */
2168
+ duration_seconds?: number;
2169
+ /** The Trillboards impression id, when the host played an ad Trillboards served. The Trillboards record of that play is then kept and this report is not counted twice. */
2170
+ impression_id?: string;
2171
+ /** Your unique id for this play (idempotency key, shared with POST /v1/partner/plays). */
2172
+ play_id: string;
2173
+ /** Optional request identifier. */
2174
+ request_id?: string;
2175
+ };
1822
2176
  /**
1823
2177
  * Request body accepted by the single-device registration endpoints
1824
2178
  * (`@trillboards/api-client` `PartnerDeviceRegistrationInput`). Additional
@@ -1830,8 +2184,8 @@ type PartnerDeviceRegistrationInput = {
1830
2184
  device_id?: string;
1831
2185
  /** Legacy SDK alias for the device identifier, retained for backwards compatibility. */
1832
2186
  device_name?: string;
1833
- /** One of `mobile`, `tablet`, `tv`, `connected_tv`, `digital_signage`, `kiosk`, `vending_machine`, `display`, `other`. It is stored as the OpenRTB `devicetype` integer, so the mapping is many-to-one and an unrecognised value is silently ACCEPTED as `digital_signage` rather than rejected — read `device_type` back off the response to see what it collapsed to. */
1834
- device_type?: string;
2187
+ /** Mutable partner category stored independently of advertising classification. Defaults to other on a new device; omission on an existing device preserves its value. Unsupported categories return HTTP 400. */
2188
+ device_type?: "tv" | "tablet" | "display" | "kiosk" | "other" | "mobile" | "connected_tv" | "digital_signage" | "vending_machine";
1835
2189
  /** Display specification (pixel resolution and/or physical size). */
1836
2190
  display?: Record<string, unknown>;
1837
2191
  display_settings?: PartnerRegistrationDisplaySettings;
@@ -1948,7 +2302,7 @@ type PartnerHeartbeatRequest = {
1948
2302
  last_vast_response_at?: string;
1949
2303
  /** Current GPS fix for a moving screen. Processed only for screens whose `mobility_type` is `mobile` or `semi_mobile` (declare it at registration or via PATCH /device/{deviceId}), OR for any screen still missing coordinates (a one-time self-heal that also kicks off venue classification). Static screens with valid coordinates ignore it. Updates live geo-targeting, geofencing and analytics. Fully optional — omit it on stationary screens. */
1950
2304
  location?: {
1951
- /** Horizontal accuracy radius in meters. Fixes above ~500m are clamped. */
2305
+ /** Horizontal accuracy radius in meters, stored as the device reports it. */
1952
2306
  accuracy_m?: number;
1953
2307
  /** Up to 200 fixes recorded while the device was offline, replayed as a historical track. Timestamps MUST be in ascending order — a non-chronological batch is rejected with HTTP 400. Only the top-level `location` updates the live serving position. */
1954
2308
  buffered_locations?: Array<{
@@ -1969,7 +2323,7 @@ type PartnerHeartbeatRequest = {
1969
2323
  source?: "gps" | "gps_buffered";
1970
2324
  /** Ground speed in meters per second. Omit if unavailable. */
1971
2325
  speed_mps?: number;
1972
- /** Unix epoch milliseconds of the on-device fix. Send the device clock value; the server tolerates up to 10 minutes of skew. A position jump implying > 320 km/h between consecutive fixes is rejected. */
2326
+ /** Unix epoch milliseconds of the on-device fix. Send the device clock value. A fix whose timestamp is more than 60 s ahead of the server's clock, or more than 6 h behind it, is kept without a fix time. A position jump implying > 320 km/h between consecutive fixes is rejected. */
1973
2327
  timestamp?: number;
1974
2328
  };
1975
2329
  /** Alternate namespace for telemetry keys (legacy support). */
@@ -2092,6 +2446,21 @@ type PartnerHeartbeatTelemetry = {
2092
2446
  webview_chromium_major?: number;
2093
2447
  [key: string]: unknown;
2094
2448
  };
2449
+ /**
2450
+ * What a rider did with the screen, reported by the partner SDK's reportInteraction. (partner, device, interaction_id) is the event's identity.
2451
+ */
2452
+ type PartnerInteraction = {
2453
+ /** The creative on screen, as the host names it. */
2454
+ creative_id?: string;
2455
+ /** The host app's id for this interaction (idempotency key, per device). */
2456
+ interaction_id: string;
2457
+ /** When it happened (device clock), within the last 7 days and at most 5 minutes ahead of the server clock. */
2458
+ occurred_at: string;
2459
+ /** Milliseconds into the creative's playback when it happened. */
2460
+ t_ms?: number;
2461
+ /** What happened. Never a programmatic ad-lifecycle event (those are POST /device/{deviceId}/programmatic-event). */
2462
+ type: "tap" | "qr_shown" | "qr_scanned" | "dwell_prompt";
2463
+ };
2095
2464
  type PartnerLBarContent = {
2096
2465
  /** The venue name rendered in the L-bar; empty string when unset. One of only three scalar keys (`enabled`, `business_name`, `current_promotion`) the PUT copies straight across — every other key here is an object that gets shallow-merged. */
2097
2466
  business_name?: string;
@@ -2144,6 +2513,30 @@ type PartnerLBarSettings = {
2144
2513
  /** The screen's resolved pacing contract, present only on the PUT response. `policy_version` is `v1` and every interval is in MILLISECONDS (`paid_interval_ms`, `self_promo_interval_ms`, `image_ad_total_ms`, `image_ad_min_ms`); it also carries `max_paid_share` (null unless a loop share cap is enabled), `surface_policy`, `schedule_policy`, `pip_settings` and `lbar_settings`. */
2145
2514
  playback_policy?: Record<string, unknown>;
2146
2515
  };
2516
+ /**
2517
+ * Where the screen's location comes from, and, per rail, whether that rail
2518
+ * has the location it needs. Location is a readiness capability, never a
2519
+ * registration rule: a device without one is registered, and this says
2520
+ * which rails serve it until a position arrives. `monetization_status` is
2521
+ * computed over `inventory_feed` and `geo_targeted_demand`.
2522
+ *
2523
+ */
2524
+ type PartnerLocationCapability = {
2525
+ /** `precise` — the screen or its device has coordinates; `fleet_market` — none of its own, your account's declared fleet market location lists it; `none`. */
2526
+ position?: "precise" | "fleet_market" | "none";
2527
+ rails?: {
2528
+ geo_targeted_demand?: PartnerLocationRail;
2529
+ inventory_feed?: PartnerLocationRail;
2530
+ visit_attribution?: PartnerLocationRail;
2531
+ };
2532
+ };
2533
+ type PartnerLocationRail = {
2534
+ /** Where a ready rail's location comes from; null when blocked. Only `inventory_feed` reads `fleet_market`. */
2535
+ location_source?: "screen" | "device" | "fleet_market" | null | null;
2536
+ /** Why a blocked rail has no location; null when ready. See https://api.trillboards.com/docs/monetization-requirements#location-capability. */
2537
+ reason?: "awaiting_device_gps" | "no_location_provided" | "city_without_state" | "geocode_failed" | "screen_position_pending" | "country_unknown" | "country_not_supported" | null | null;
2538
+ status?: "ready" | "blocked";
2539
+ };
2147
2540
  /**
2148
2541
  * Stripe-style monetization requirements (account.requirements analogue).
2149
2542
  * Returned on device register / update / get / batch so bulk partners can
@@ -2412,6 +2805,29 @@ type PartnerStats = {
2412
2805
  /** Integer US cents. Recomputed daily as `SUM(earner_revenue) * 100` across ALL of the partner's non-demo `programmatic_earnings_daily` rows, with no payable-source filter and no Net-60 maturity gate — so it can exceed `EarningsResponse.total_lifetime_cents`, which applies the payable filter. */
2413
2806
  total_revenue_cents?: number;
2414
2807
  };
2808
+ /**
2809
+ * One taxi-meter state change reported by the partner SDK's setTripState. (partner, device, trip_id, event_seq) is the event's identity.
2810
+ */
2811
+ type PartnerTripState = {
2812
+ /** The host's destination text or zone. */
2813
+ destination?: string;
2814
+ /** The event's position in the trip. Increases within a trip; a retry re-sends the same value (idempotency key with trip_id, per device). */
2815
+ event_seq: number;
2816
+ /** Fare so far, in the smallest currency unit. */
2817
+ fare_cents?: number;
2818
+ /** true while the meter runs (a hired trip). */
2819
+ meter_on: boolean;
2820
+ /** Riders the host counted. */
2821
+ passenger_count?: number;
2822
+ /** The host's payment type (stored trimmed and lowercased). */
2823
+ payment_type?: string;
2824
+ /** When the meter changed state (device clock), within the last 7 days and at most 5 minutes ahead of the server clock. */
2825
+ state_at: string;
2826
+ /** Tip, in the smallest currency unit. */
2827
+ tip_cents?: number;
2828
+ /** The host app's trip id. Unique per device, not per partner. */
2829
+ trip_id: string;
2830
+ };
2415
2831
  /**
2416
2832
  * Canonical INT-PK identity for partner variants (e.g. adipolo_lower_floor_tablet). Wave 2 of pristine-state refactor. variant_name TEXT remains as the wire-format alternate-key indefinitely.
2417
2833
  */
@@ -2984,7 +3400,7 @@ type SensingRoute = {
2984
3400
  } | null;
2985
3401
  /** Whether the evaluator considers this route at all. A disabled route keeps its condition, actions and screen set and is simply skipped by every hot-path read; deleting a route also sets this `false` (rows are soft-deleted, never removed). */
2986
3402
  enabled?: boolean;
2987
- /** `threshold` evaluates `condition` against each incoming observation. `digest` ignores the condition and instead sends a scheduled aggregate driven by the `digest.nextRunAt` cursor; focus regions are rejected on digest routes. */
3403
+ /** `threshold` evaluates `condition` against each incoming observation. `digest` ignores the condition and instead sends a scheduled aggregate driven by the `digest.nextRunAt` cursor; focus regions and explicit review timing are rejected on digest routes. */
2988
3404
  mode?: "threshold" | "digest";
2989
3405
  /** Operator-supplied label, trimmed and capped at 200 characters. It is delivered verbatim as `route_name` on every fire but is not the alert text — the human-readable message is composed separately from the screen's sensing intent. */
2990
3406
  name?: string;
@@ -2996,9 +3412,11 @@ type SensingRoute = {
2996
3412
  partnerId?: string;
2997
3413
  /** Binds the route to a sensing profile BY NAME, never by `profile_id` — redeploying a profile mints a fresh `profile_id` per screen, which would orphan the binding. `null` means unbound; when set, the route stays dormant on any screen whose active profile has a different name. */
2998
3414
  profileName?: string | null;
3415
+ reviewTimingMode?: SensingRouteReviewTimingMode;
3416
+ reviewWaitSeconds?: SensingRouteReviewWaitSeconds;
2999
3417
  /** Server-minted immutable id: the literal prefix `rt_` followed by a UUID. Webhook consumers should key on this rather than `route_name`, which the owner can rename at any time. */
3000
3418
  routeId?: string;
3001
- /** Per-camera areas, at most one entry per screen, and NOT geometrically enforced. The server turns each into a single line of prompt text capped at 120 characters; measured 2026-08-25 on `gemini-3.1-flash-lite`, both the rectangle and the lasso form leaked 100% at every anchor, so a focused alert still reacts to the whole frame. */
3419
+ /** Per-camera areas, at most one entry per screen. The legacy cloud path converts geometry into prompt text and is not geometrically enforced (measured 2026-08-25 on gemini-3.1-flash-lite). The retained local connector masks actual pixels separately for each declared scope; original unmasked JPEGs remain alert evidence. Retained installation and model accuracy require separate qualification. */
3002
3420
  screenFocusRegions?: Array<SensingRouteScreenFocusRegion>;
3003
3421
  /** The screens this route watches — deduped and capped at 250. For a group-targeted route these are the group's LIVE members resolved at read time, not a stored set, so the list can change between two GETs without any edit. */
3004
3422
  screenMongoIds?: Array<string>;
@@ -3043,6 +3461,14 @@ type SensingRouteCondition = {
3043
3461
  /** The threshold value (numeric, string, or boolean depending on the field). */
3044
3462
  value?: number | string | boolean;
3045
3463
  };
3464
+ /**
3465
+ * Threshold-alert timing. NULL preserves legacy behavior; immediate adds no check delay; wait_recheck requires distinct first/follow-up positive images at least reviewWaitSeconds apart on capture time, not uninterrupted activity or message grouping.
3466
+ */
3467
+ type SensingRouteReviewTimingMode = "immediate" | "wait_recheck" | null | null;
3468
+ /**
3469
+ * Whole seconds before a fresh follow-up check. Required only for wait_recheck; must be NULL for immediate or unspecified timing. These two settings must be updated together.
3470
+ */
3471
+ type SensingRouteReviewWaitSeconds = number | null;
3046
3472
  /**
3047
3473
  * A normalized camera area used only by this alert. The rectangle is the compatibility bounding box; optional ordered points define the exact lasso perimeter. Omitted cameras use the whole view.
3048
3474
  */
@@ -3202,6 +3628,8 @@ type Transaction = {
3202
3628
  created_at?: string;
3203
3629
  /** For an `earning` row, the `YYYY-MM-DD` accounting period the aggregate covers. For a `payout` row it is the payout record's creation timestamp, so it carries a time component despite the declared `date` format. */
3204
3630
  date?: string;
3631
+ earning_source_version?: 1;
3632
+ earning_sources?: EarningsSources;
3205
3633
  /** Synthetic and namespaced by origin, never a ledger primary key: earnings rows are `daily_<YYYY-MM-DD>` (one per accounting day, not per impression); payouts are `admin_batch:<ledger_id>`, `earner_withdrawal:<withdrawal_id>` or `legacy_transfer:<id>`. */
3206
3634
  id?: string;
3207
3635
  /** Number of impressions (for earning transactions) */
@@ -3218,7 +3646,7 @@ type Transaction = {
3218
3646
  */
3219
3647
  type TrillboardsError = {
3220
3648
  error: {
3221
- /** Stable machine-readable error code. Switch on this, never on `message`. The 111 CATALOGUED codes are published as the `ErrorCode` schema and served live by `GET /v1/errors`, which is the authority. This field is NOT limited to them: services emit further codes directly, and `ApiError.notFound(resource)` mints `<resource>_not_found` from an arbitrary resource name. Always handle an unrecognised code by falling back to `type`. */
3649
+ /** Stable machine-readable error code. Switch on this, never on `message`. The 143 CATALOGUED codes are published as the `ErrorCode` schema and served live by `GET /v1/errors`, which is the authority. This field is NOT limited to them: services emit further codes directly, and `ApiError.notFound(resource)` mints `<resource>_not_found` from an arbitrary resource name. Always handle an unrecognised code by falling back to `type`. */
3222
3650
  code: string;
3223
3651
  /** Per-field violations (populated from Zod errors). */
3224
3652
  details?: Array<{
@@ -3245,7 +3673,7 @@ type TrillboardsError = {
3245
3673
  };
3246
3674
  };
3247
3675
  /**
3248
- * Partial, non-clobbering update — include only the fields to change.
3676
+ * Partial, non-clobbering update — include only the fields to change. Update reviewTimingMode and reviewWaitSeconds together; omit both to preserve existing timing. Explicit timing cannot be added to a digest, and changing to a digest clears the prior event check timing.
3249
3677
  */
3250
3678
  type UpdatePartnerSensingRouteRequest = {
3251
3679
  /** REPLACES the entire action list (1..10 entries); the existing rows are deleted and reinserted. Omit the key to leave actions untouched — there is no way to add or remove a single action. */
@@ -3274,6 +3702,8 @@ type UpdatePartnerSensingRouteRequest = {
3274
3702
  name?: string;
3275
3703
  /** Rebinds the route to a different named sensing profile; send `null` (or an empty/whitespace string) to unbind it. Always a profile NAME — a `profile_id` is re-minted on every redeploy and would orphan the binding. */
3276
3704
  profileName?: string | null;
3705
+ reviewTimingMode?: SensingRouteReviewTimingMode;
3706
+ reviewWaitSeconds?: SensingRouteReviewWaitSeconds;
3277
3707
  /** Replace all selected rectangles or polygon lassos for the route; send [] to return every camera to whole view. Entries must target the route's explicit screenMongoIds. */
3278
3708
  screenFocusRegions?: Array<SensingRouteScreenFocusRegion>;
3279
3709
  /** REPLACES the watched screen set (1..250, deduped); mutually exclusive with `targetGroupId` in one request. Focus regions for cameras that survive the swap are PRESERVED unless you also send `screenFocusRegions` (including `[]` to clear them). */
@@ -3332,7 +3762,7 @@ type Webhook = {
3332
3762
  /** When webhook was created */
3333
3763
  created_at?: string;
3334
3764
  /** Subscribed event types */
3335
- events?: Array<"device.online" | "device.offline" | "impression.recorded" | "campaign.allocated" | "payout.processed" | "sensing.threshold_crossed" | "audience.spike" | "audience.venue_busy" | "audience.purchase_intent" | "audience.demographics_update" | "venue.traffic_summary" | "screen_group.created" | "screen_group.updated" | "screen_group.deleted" | "screen_group.member.added" | "screen_group.member.removed" | "screen_group.content_policy.updated" | "screen_group.sensing_config.updated" | "fleet_command.completed" | "fleet_command.failed">;
3765
+ events?: Array<"device.online" | "device.offline" | "impression.recorded" | "creative.rewards_ready" | "campaign.allocated" | "payout.processed" | "sensing.threshold_crossed" | "audience.spike" | "audience.venue_busy" | "audience.purchase_intent" | "audience.demographics_update" | "venue.traffic_summary" | "screen_group.created" | "screen_group.updated" | "screen_group.deleted" | "screen_group.member.added" | "screen_group.member.removed" | "screen_group.content_policy.updated" | "screen_group.sensing_config.updated" | "fleet_command.completed" | "fleet_command.failed">;
3336
3766
  /** Total failed deliveries */
3337
3767
  failure_count?: number;
3338
3768
  /** Last time webhook was triggered */
@@ -3413,7 +3843,7 @@ type WifiScanResult = {
3413
3843
  channelWidthMhz?: number | null;
3414
3844
  /** Centre frequency of the AP's PRIMARY 20 MHz channel in MHz (2400-7200 accepted, covering 2.4/5/6 GHz) — not the centre of a wider bonded channel. Convert to a channel number yourself; the wire carries only the frequency. */
3415
3845
  frequencyMhz: number;
3416
- /** The AP's BSSID exactly as Android reports it, unhashed on the device (hashing happens server-side). Rows are de-duplicated by BSSID keeping the strongest reading, and the literal `02:00:00:00:00:00` — Android's redaction placeholder for a caller without location permission — is dropped rather than forwarded, so a permission-less device produces an empty list, not a list of placeholders. */
3846
+ /** The AP's BSSID exactly as Android reports it, unhashed on the device; Trillboards stores it as received and as a keyed HMAC-SHA256 hash. Rows are de-duplicated by BSSID keeping the strongest reading, and the literal `02:00:00:00:00:00` — Android's redaction placeholder for a caller without location permission — is dropped rather than forwarded, so a permission-less device produces an empty list, not a list of placeholders. */
3417
3847
  rawBssid: string;
3418
3848
  /** AP signal level in dBm (negative, bounded -120..0), from `ScanResult.level`. Note the wire key the Android agent actually sends is `signal_dbm`, not a snake_case form of this name — a mismatch of exactly this kind left the ClickHouse `rssi` column NULL on 100% of Wi-Fi rows until 2026-08-08. */
3419
3849
  signalStrengthDbm: number;
@@ -3427,6 +3857,13 @@ interface queryChangelogOperation {
3427
3857
  readonly path: "/v1/changelog";
3428
3858
  readonly method: "GET";
3429
3859
  request: never;
3860
+ params: Record<string, unknown>;
3861
+ query: {
3862
+ /** Only entries dated on or after this date (YYYY-MM-DD). Unreleased entries always included. */
3863
+ since?: string;
3864
+ /** Filter by change category: "breaking" (changed+removed), "additive" (added), "deprecation" (deprecated), "fix" (fixed). Comma-separated for multiple. */
3865
+ type?: string;
3866
+ };
3430
3867
  response: ChangelogResponse;
3431
3868
  }
3432
3869
  /**
@@ -3437,6 +3874,8 @@ interface listErrorCodesOperation {
3437
3874
  readonly path: "/v1/errors";
3438
3875
  readonly method: "GET";
3439
3876
  request: never;
3877
+ params: Record<string, unknown>;
3878
+ query: Record<string, unknown>;
3440
3879
  response: ErrorListResponse;
3441
3880
  }
3442
3881
  /**
@@ -3447,6 +3886,11 @@ interface getErrorCodeOperation {
3447
3886
  readonly path: "/v1/errors/{code}";
3448
3887
  readonly method: "GET";
3449
3888
  request: never;
3889
+ params: {
3890
+ /** A stable error code from the catalog. See GET /v1/errors for the full list. */
3891
+ code: string;
3892
+ };
3893
+ query: Record<string, unknown>;
3450
3894
  response: ErrorCodeResponse;
3451
3895
  }
3452
3896
  /**
@@ -3457,6 +3901,8 @@ interface listPartnerSelfPromoAdsOperation {
3457
3901
  readonly path: "/v1/partner/ads/self-promo";
3458
3902
  readonly method: "GET";
3459
3903
  request: never;
3904
+ params: Record<string, unknown>;
3905
+ query: Record<string, unknown>;
3460
3906
  response: {
3461
3907
  data?: Array<PartnerSelfPromoAd>;
3462
3908
  success?: boolean;
@@ -3470,6 +3916,8 @@ interface createPartnerSelfPromoAdOperation {
3470
3916
  readonly path: "/v1/partner/ads/self-promo";
3471
3917
  readonly method: "POST";
3472
3918
  request: PartnerSelfPromoCreate;
3919
+ params: Record<string, unknown>;
3920
+ query: Record<string, unknown>;
3473
3921
  response: {
3474
3922
  data?: PartnerSelfPromoAd;
3475
3923
  success?: boolean;
@@ -3484,6 +3932,8 @@ interface listPartnerSelfPromoPlacementsOperation {
3484
3932
  readonly path: "/v1/partner/ads/self-promo/placements";
3485
3933
  readonly method: "GET";
3486
3934
  request: never;
3935
+ params: Record<string, unknown>;
3936
+ query: Record<string, unknown>;
3487
3937
  response: {
3488
3938
  data?: Array<PartnerSelfPromoPlacement>;
3489
3939
  success?: boolean;
@@ -3502,6 +3952,8 @@ interface schedulePartnerSelfPromoOperation {
3502
3952
  screen_ids: Array<string>;
3503
3953
  start_date?: string;
3504
3954
  };
3955
+ params: Record<string, unknown>;
3956
+ query: Record<string, unknown>;
3505
3957
  response: {
3506
3958
  success?: boolean;
3507
3959
  };
@@ -3514,6 +3966,8 @@ interface createPartnerSelfPromoUploadOperation {
3514
3966
  readonly path: "/v1/partner/ads/self-promo/upload";
3515
3967
  readonly method: "POST";
3516
3968
  request: never;
3969
+ params: Record<string, unknown>;
3970
+ query: Record<string, unknown>;
3517
3971
  response: {
3518
3972
  data?: PartnerSelfPromoAd;
3519
3973
  success?: boolean;
@@ -3528,6 +3982,10 @@ interface disableSelfPromoAdOperation {
3528
3982
  readonly path: "/v1/partner/ads/self-promo/{ad_id}/disable";
3529
3983
  readonly method: "POST";
3530
3984
  request: never;
3985
+ params: {
3986
+ ad_id: string;
3987
+ };
3988
+ query: Record<string, unknown>;
3531
3989
  response: {
3532
3990
  ad_id?: string;
3533
3991
  status?: "disabled";
@@ -3554,6 +4012,8 @@ interface registerAgentOperation {
3554
4012
  /** Mint an AdCP **sandbox account** (`account.sandbox` in `get_adcp_capabilities`). Media buys made with the returned key validate end to end — screen resolution, published CPM/floor, flight parsing, derived impression goal, every error path — and return a well-formed response marked `sandbox: true`, but persist **no advertisements and no placements**. Nothing can serve, deliver, bill, or pay a venue. Use this for conformance and no-spend testing; register without it for a live account. */
3555
4013
  sandbox?: boolean;
3556
4014
  };
4015
+ params: Record<string, unknown>;
4016
+ query: Record<string, unknown>;
3557
4017
  response: {
3558
4018
  /** The AdCP **account** this key is bound to. Distinct from the `sandbox` block below, which describes auto-provisioned test SCREENS (supply); this is the account-level buying contract (demand) declared as `account.sandbox` in `get_adcp_capabilities`. */
3559
4019
  account?: {
@@ -3608,6 +4068,11 @@ interface getAnalyticsOperation {
3608
4068
  readonly path: "/v1/partner/analytics";
3609
4069
  readonly method: "GET";
3610
4070
  request: never;
4071
+ params: Record<string, unknown>;
4072
+ query: {
4073
+ end_date?: string;
4074
+ start_date?: string;
4075
+ };
3611
4076
  response: {
3612
4077
  data?: {
3613
4078
  devices_by_status?: Array<Record<string, unknown>>;
@@ -3639,6 +4104,11 @@ interface getAudienceContinuityOperation {
3639
4104
  readonly path: "/v1/partner/analytics/audience-continuity";
3640
4105
  readonly method: "GET";
3641
4106
  request: never;
4107
+ params: Record<string, unknown>;
4108
+ query: {
4109
+ timeRange?: "today" | "last_7d" | "last_30d";
4110
+ windowMinutes?: number;
4111
+ };
3642
4112
  response: {
3643
4113
  data?: {
3644
4114
  confidence?: string;
@@ -3656,6 +4126,10 @@ interface getAudienceProfileOperation {
3656
4126
  readonly path: "/v1/partner/analytics/audience-profile";
3657
4127
  readonly method: "GET";
3658
4128
  request: never;
4129
+ params: Record<string, unknown>;
4130
+ query: {
4131
+ timeRange?: "today" | "last_7d" | "last_30d";
4132
+ };
3659
4133
  response: {
3660
4134
  data?: {
3661
4135
  sampleSize?: number;
@@ -3672,6 +4146,10 @@ interface getBleSummaryOperation {
3672
4146
  readonly path: "/v1/partner/analytics/ble-summary";
3673
4147
  readonly method: "GET";
3674
4148
  request: never;
4149
+ params: Record<string, unknown>;
4150
+ query: {
4151
+ timeRange?: "today" | "last_7d" | "last_30d";
4152
+ };
3675
4153
  response: {
3676
4154
  data?: {
3677
4155
  totalObservations?: number;
@@ -3688,6 +4166,14 @@ interface getContentPerformanceOperation {
3688
4166
  readonly path: "/v1/partner/analytics/content-performance";
3689
4167
  readonly method: "GET";
3690
4168
  request: never;
4169
+ params: Record<string, unknown>;
4170
+ query: {
4171
+ groupBy?: "canonical" | "wrapper";
4172
+ includeUnclassified?: boolean;
4173
+ limit?: number;
4174
+ offset?: number;
4175
+ timeRange?: "today" | "last_7d" | "last_30d";
4176
+ };
3691
4177
  response: {
3692
4178
  data?: {
3693
4179
  byScreen?: Record<string, unknown>;
@@ -3725,6 +4211,12 @@ interface searchCreativeCatalogOperation {
3725
4211
  readonly path: "/v1/partner/analytics/creative-catalog";
3726
4212
  readonly method: "GET";
3727
4213
  request: never;
4214
+ params: Record<string, unknown>;
4215
+ query: {
4216
+ limit?: number;
4217
+ offset?: number;
4218
+ q?: string;
4219
+ };
3728
4220
  response: {
3729
4221
  data?: {
3730
4222
  creatives?: Array<{
@@ -3752,6 +4244,14 @@ interface getCreativeScenesOperation {
3752
4244
  readonly path: "/v1/partner/analytics/creative-scenes";
3753
4245
  readonly method: "GET";
3754
4246
  request: never;
4247
+ params: Record<string, unknown>;
4248
+ query: {
4249
+ adId: string;
4250
+ cursor?: string;
4251
+ limit?: number;
4252
+ screenId: string;
4253
+ timeRange?: "today" | "last_7d" | "last_30d";
4254
+ };
3755
4255
  response: {
3756
4256
  data?: {
3757
4257
  adId?: string;
@@ -3772,6 +4272,10 @@ interface getCrossScreenFlowOperation {
3772
4272
  readonly path: "/v1/partner/analytics/cross-screen-flow";
3773
4273
  readonly method: "GET";
3774
4274
  request: never;
4275
+ params: Record<string, unknown>;
4276
+ query: {
4277
+ timeRange?: "today" | "last_7d" | "last_30d";
4278
+ };
3775
4279
  response: {
3776
4280
  data?: {
3777
4281
  edges?: Array<Record<string, unknown>>;
@@ -3788,6 +4292,12 @@ interface getPartnerAnalyticsDashboardOperation {
3788
4292
  readonly path: "/v1/partner/analytics/dashboard";
3789
4293
  readonly method: "GET";
3790
4294
  request: never;
4295
+ params: Record<string, unknown>;
4296
+ query: {
4297
+ endDate?: string;
4298
+ period?: "7d" | "30d" | "90d" | "custom";
4299
+ startDate?: string;
4300
+ };
3791
4301
  response: {
3792
4302
  data?: {
3793
4303
  ads?: Record<string, unknown>;
@@ -3818,6 +4328,10 @@ interface getDeviceSuiteSignatureOperation {
3818
4328
  readonly path: "/v1/partner/analytics/device-suite-signature";
3819
4329
  readonly method: "GET";
3820
4330
  request: never;
4331
+ params: Record<string, unknown>;
4332
+ query: {
4333
+ timeRange?: "today" | "last_7d" | "last_30d";
4334
+ };
3821
4335
  response: {
3822
4336
  data?: {
3823
4337
  deviceTypes?: Array<Record<string, unknown>>;
@@ -3834,6 +4348,13 @@ interface exportPartnerAnalyticsOperation {
3834
4348
  readonly path: "/v1/partner/analytics/export";
3835
4349
  readonly method: "GET";
3836
4350
  request: never;
4351
+ params: Record<string, unknown>;
4352
+ query: {
4353
+ endDate?: string;
4354
+ period?: "7d" | "30d" | "90d" | "custom";
4355
+ startDate?: string;
4356
+ type?: "summary" | "daily-breakdown" | "screen-breakdown";
4357
+ };
3837
4358
  response: unknown;
3838
4359
  }
3839
4360
  /**
@@ -3844,6 +4365,12 @@ interface exportPartnerAdsByDayOperation {
3844
4365
  readonly path: "/v1/partner/analytics/export/ads-by-day";
3845
4366
  readonly method: "GET";
3846
4367
  request: never;
4368
+ params: Record<string, unknown>;
4369
+ query: {
4370
+ endDate: string;
4371
+ format?: "csv" | "json";
4372
+ startDate: string;
4373
+ };
3847
4374
  response: {
3848
4375
  data?: Array<{
3849
4376
  ad_name?: string;
@@ -3868,6 +4395,10 @@ interface getFleetHourlyOperation {
3868
4395
  readonly path: "/v1/partner/analytics/fleet-hourly";
3869
4396
  readonly method: "GET";
3870
4397
  request: never;
4398
+ params: Record<string, unknown>;
4399
+ query: {
4400
+ timeRange?: "today" | "last_7d" | "last_30d";
4401
+ };
3871
4402
  response: {
3872
4403
  data?: {
3873
4404
  hours?: Array<Record<string, unknown>>;
@@ -3884,6 +4415,10 @@ interface getHaloFunnelOperation {
3884
4415
  readonly path: "/v1/partner/analytics/halo-funnel";
3885
4416
  readonly method: "GET";
3886
4417
  request: never;
4418
+ params: Record<string, unknown>;
4419
+ query: {
4420
+ timeRange?: "today" | "last_7d" | "last_30d";
4421
+ };
3887
4422
  response: {
3888
4423
  data?: {
3889
4424
  stages?: Array<Record<string, unknown>>;
@@ -3899,6 +4434,10 @@ interface getLoyaltyClockOperation {
3899
4434
  readonly path: "/v1/partner/analytics/loyalty-clock";
3900
4435
  readonly method: "GET";
3901
4436
  request: never;
4437
+ params: Record<string, unknown>;
4438
+ query: {
4439
+ timeRange?: "today" | "last_7d" | "last_30d";
4440
+ };
3902
4441
  response: {
3903
4442
  data?: {
3904
4443
  hours?: Array<{
@@ -3921,6 +4460,10 @@ interface getNetworkSummaryOperation {
3921
4460
  readonly path: "/v1/partner/analytics/network-summary";
3922
4461
  readonly method: "GET";
3923
4462
  request: never;
4463
+ params: Record<string, unknown>;
4464
+ query: {
4465
+ timeRange?: "today" | "last_7d" | "last_30d";
4466
+ };
3924
4467
  response: {
3925
4468
  data?: {
3926
4469
  dataAvailable?: boolean;
@@ -3939,6 +4482,11 @@ interface getNetworkTrendOperation {
3939
4482
  readonly path: "/v1/partner/analytics/network-trend";
3940
4483
  readonly method: "GET";
3941
4484
  request: never;
4485
+ params: Record<string, unknown>;
4486
+ query: {
4487
+ interval?: "1h" | "1d";
4488
+ timeRange?: "today" | "last_7d" | "last_30d";
4489
+ };
3942
4490
  response: {
3943
4491
  data?: {
3944
4492
  interval?: string;
@@ -3949,13 +4497,17 @@ interface getNetworkTrendOperation {
3949
4497
  };
3950
4498
  }
3951
4499
  /**
3952
- * Privacy-safe cross-screen proximity-graph summary
4500
+ * Cross-screen proximity-graph summary
3953
4501
  * GET /v1/partner/analytics/proximity-summary
3954
4502
  */
3955
4503
  interface getProximitySummaryOperation {
3956
4504
  readonly path: "/v1/partner/analytics/proximity-summary";
3957
4505
  readonly method: "GET";
3958
4506
  request: never;
4507
+ params: Record<string, unknown>;
4508
+ query: {
4509
+ timeRange?: "today" | "last_7d" | "last_30d";
4510
+ };
3959
4511
  response: {
3960
4512
  data?: {
3961
4513
  continuityEdges?: Array<Record<string, unknown>>;
@@ -3977,6 +4529,10 @@ interface getRevenueAttentionCorrelationOperation {
3977
4529
  readonly path: "/v1/partner/analytics/revenue-attention-correlation";
3978
4530
  readonly method: "GET";
3979
4531
  request: never;
4532
+ params: Record<string, unknown>;
4533
+ query: {
4534
+ timeRange?: "today" | "last_7d" | "last_30d";
4535
+ };
3980
4536
  response: {
3981
4537
  data?: {
3982
4538
  points?: Array<Record<string, unknown>>;
@@ -3993,6 +4549,11 @@ interface getSceneFeedOperation {
3993
4549
  readonly path: "/v1/partner/analytics/scene-feed";
3994
4550
  readonly method: "GET";
3995
4551
  request: never;
4552
+ params: Record<string, unknown>;
4553
+ query: {
4554
+ limit?: number;
4555
+ offset?: number;
4556
+ };
3996
4557
  response: {
3997
4558
  data?: {
3998
4559
  /** Distinct calendar days with observations over the last 90 days. */
@@ -4017,6 +4578,8 @@ interface getSceneIntelligenceOperation {
4017
4578
  readonly path: "/v1/partner/analytics/scene-intelligence";
4018
4579
  readonly method: "GET";
4019
4580
  request: never;
4581
+ params: Record<string, unknown>;
4582
+ query: Record<string, unknown>;
4020
4583
  response: {
4021
4584
  data?: {
4022
4585
  /** Present on EVERY response, success included. A field that appeared only on failure would make its absence the signal, and an absent field is indistinguishable from an old client or a version skew. */
@@ -4039,6 +4602,8 @@ interface rotateApiKeyOperation {
4039
4602
  readonly path: "/v1/partner/api-key/rotate";
4040
4603
  readonly method: "POST";
4041
4604
  request: never;
4605
+ params: Record<string, unknown>;
4606
+ query: Record<string, unknown>;
4042
4607
  response: {
4043
4608
  data?: {
4044
4609
  /** New API key — shown only once! */
@@ -4059,6 +4624,10 @@ interface getAudienceAnalyticsOperation {
4059
4624
  readonly path: "/v1/partner/audience-analytics";
4060
4625
  readonly method: "GET";
4061
4626
  request: never;
4627
+ params: Record<string, unknown>;
4628
+ query: {
4629
+ period?: "24h" | "7d" | "30d";
4630
+ };
4062
4631
  response: AudienceAnalyticsResponse;
4063
4632
  }
4064
4633
  /**
@@ -4069,6 +4638,14 @@ interface exportAudienceDataOperation {
4069
4638
  readonly path: "/v1/partner/audience-export";
4070
4639
  readonly method: "GET";
4071
4640
  request: never;
4641
+ params: Record<string, unknown>;
4642
+ query: {
4643
+ aggregation?: "hourly" | "daily" | "weekly";
4644
+ end_date?: string;
4645
+ format?: "json" | "csv";
4646
+ screen_ids: string;
4647
+ start_date?: string;
4648
+ };
4072
4649
  response: AudienceExportResponse;
4073
4650
  }
4074
4651
  /**
@@ -4079,6 +4656,11 @@ interface getAudienceHeatmapOperation {
4079
4656
  readonly path: "/v1/partner/audience/heatmap";
4080
4657
  readonly method: "GET";
4081
4658
  request: never;
4659
+ params: Record<string, unknown>;
4660
+ query: {
4661
+ days?: number;
4662
+ screen_ids?: string;
4663
+ };
4082
4664
  response: {
4083
4665
  cells?: number;
4084
4666
  heatmap?: Array<Record<string, unknown>>;
@@ -4096,6 +4678,10 @@ interface getLiveAudienceOperation {
4096
4678
  readonly path: "/v1/partner/audience/live/{screenId}";
4097
4679
  readonly method: "GET";
4098
4680
  request: never;
4681
+ params: {
4682
+ screenId: string;
4683
+ };
4684
+ query: Record<string, unknown>;
4099
4685
  response: {
4100
4686
  /** Null when screen is offline */
4101
4687
  audience?: {
@@ -4130,6 +4716,15 @@ interface getLookalikeScreensOperation {
4130
4716
  readonly path: "/v1/partner/audience/lookalikes/{screenId}";
4131
4717
  readonly method: "GET";
4132
4718
  request: never;
4719
+ params: {
4720
+ screenId: string;
4721
+ };
4722
+ query: {
4723
+ country?: string;
4724
+ limit?: number;
4725
+ min_similarity?: number;
4726
+ venue_type?: string;
4727
+ };
4133
4728
  response: {
4134
4729
  filters?: {
4135
4730
  country?: string | null;
@@ -4151,6 +4746,14 @@ interface predictScreenAudienceOperation {
4151
4746
  readonly path: "/v1/partner/audience/predict/{screenId}";
4152
4747
  readonly method: "GET";
4153
4748
  request: never;
4749
+ params: {
4750
+ screenId: string;
4751
+ };
4752
+ query: {
4753
+ day: number;
4754
+ hour: number;
4755
+ lookback_days?: number;
4756
+ };
4154
4757
  response: {
4155
4758
  day_of_week?: number;
4156
4759
  hour_utc?: number;
@@ -4172,6 +4775,10 @@ interface getResolvedHouseholdReachOperation {
4172
4775
  readonly path: "/v1/partner/audience/resolved-household-reach/{campaignId}";
4173
4776
  readonly method: "GET";
4174
4777
  request: never;
4778
+ params: {
4779
+ campaignId: string;
4780
+ };
4781
+ query: Record<string, unknown>;
4175
4782
  response: {
4176
4783
  audience_composition?: Array<Record<string, unknown>>;
4177
4784
  campaign_id?: string;
@@ -4191,6 +4798,8 @@ interface listAudienceSegmentsOperation {
4191
4798
  readonly path: "/v1/partner/audience/segments";
4192
4799
  readonly method: "GET";
4193
4800
  request: never;
4801
+ params: Record<string, unknown>;
4802
+ query: Record<string, unknown>;
4194
4803
  response: {
4195
4804
  data?: Array<AudienceSegment>;
4196
4805
  has_more?: boolean;
@@ -4219,6 +4828,8 @@ interface createAudienceSegmentOperation {
4219
4828
  value: unknown;
4220
4829
  }>;
4221
4830
  };
4831
+ params: Record<string, unknown>;
4832
+ query: Record<string, unknown>;
4222
4833
  response: AudienceSegment;
4223
4834
  }
4224
4835
  /**
@@ -4229,6 +4840,10 @@ interface deleteAudienceSegmentOperation {
4229
4840
  readonly path: "/v1/partner/audience/segments/{segmentId}";
4230
4841
  readonly method: "DELETE";
4231
4842
  request: never;
4843
+ params: {
4844
+ segmentId: string;
4845
+ };
4846
+ query: Record<string, unknown>;
4232
4847
  response: {
4233
4848
  deleted?: boolean;
4234
4849
  id?: string;
@@ -4244,6 +4859,10 @@ interface getAudienceSegmentOperation {
4244
4859
  readonly path: "/v1/partner/audience/segments/{segmentId}";
4245
4860
  readonly method: "GET";
4246
4861
  request: never;
4862
+ params: {
4863
+ segmentId: string;
4864
+ };
4865
+ query: Record<string, unknown>;
4247
4866
  response: AudienceSegment;
4248
4867
  }
4249
4868
  /**
@@ -4263,6 +4882,10 @@ interface updateAudienceSegmentOperation {
4263
4882
  value?: unknown;
4264
4883
  }>;
4265
4884
  };
4885
+ params: {
4886
+ segmentId: string;
4887
+ };
4888
+ query: Record<string, unknown>;
4266
4889
  response: AudienceSegment;
4267
4890
  }
4268
4891
  /**
@@ -4273,6 +4896,13 @@ interface matchAudienceSegmentOperation {
4273
4896
  readonly path: "/v1/partner/audience/segments/{segmentId}/match";
4274
4897
  readonly method: "POST";
4275
4898
  request: never;
4899
+ params: {
4900
+ segmentId: string;
4901
+ };
4902
+ query: {
4903
+ limit?: number;
4904
+ own_screens_only?: "true" | "false";
4905
+ };
4276
4906
  response: {
4277
4907
  matched_count?: number;
4278
4908
  matches?: Array<Record<string, unknown>>;
@@ -4291,6 +4921,12 @@ interface estimateSegmentReachOperation {
4291
4921
  readonly path: "/v1/partner/audience/segments/{segmentId}/reach";
4292
4922
  readonly method: "POST";
4293
4923
  request: never;
4924
+ params: {
4925
+ segmentId: string;
4926
+ };
4927
+ query: {
4928
+ own_screens_only?: "true" | "false";
4929
+ };
4294
4930
  response: {
4295
4931
  country_breakdown?: Record<string, number>;
4296
4932
  estimated_daily_cpm?: number;
@@ -4321,6 +4957,10 @@ interface generateSegmentVastTagOperation {
4321
4957
  duration?: number;
4322
4958
  own_screens_only?: boolean;
4323
4959
  };
4960
+ params: {
4961
+ segmentId: string;
4962
+ };
4963
+ query: Record<string, unknown>;
4324
4964
  response: {
4325
4965
  creative?: {
4326
4966
  click_through?: string | null;
@@ -4344,6 +4984,8 @@ interface getAudienceStatsOperation {
4344
4984
  readonly path: "/v1/partner/audience/stats";
4345
4985
  readonly method: "GET";
4346
4986
  request: never;
4987
+ params: Record<string, unknown>;
4988
+ query: Record<string, unknown>;
4347
4989
  response: {
4348
4990
  data_access_tier?: "basic" | "developer" | "enterprise";
4349
4991
  newest_data?: string | null;
@@ -4363,6 +5005,8 @@ interface cancelBillingSubscriptionOperation {
4363
5005
  readonly path: "/v1/partner/billing/cancel";
4364
5006
  readonly method: "POST";
4365
5007
  request: never;
5008
+ params: Record<string, unknown>;
5009
+ query: Record<string, unknown>;
4366
5010
  response: {
4367
5011
  effective_at?: string;
4368
5012
  status?: "canceled" | "scheduled_for_cancellation";
@@ -4379,6 +5023,8 @@ interface purchaseCreditsOperation {
4379
5023
  /** Credit purchase tier */
4380
5024
  tier: "tier_500" | "tier_2000" | "tier_5000";
4381
5025
  };
5026
+ params: Record<string, unknown>;
5027
+ query: Record<string, unknown>;
4382
5028
  response: {
4383
5029
  /** Amount charged in cents */
4384
5030
  charged_cents?: number;
@@ -4406,6 +5052,8 @@ interface createCreditCheckoutOperation {
4406
5052
  success_url?: string;
4407
5053
  tier: "tier_500" | "tier_2000" | "tier_5000";
4408
5054
  };
5055
+ params: Record<string, unknown>;
5056
+ query: Record<string, unknown>;
4409
5057
  response: {
4410
5058
  /** Stripe Checkout URL — redirect user here */
4411
5059
  checkout_url?: string;
@@ -4424,6 +5072,8 @@ interface listBillingPlansOperation {
4424
5072
  readonly path: "/v1/partner/billing/plans";
4425
5073
  readonly method: "GET";
4426
5074
  request: never;
5075
+ params: Record<string, unknown>;
5076
+ query: Record<string, unknown>;
4427
5077
  response: {
4428
5078
  plans?: Array<{
4429
5079
  included_ads?: number;
@@ -4445,6 +5095,8 @@ interface setupBillingOperation {
4445
5095
  /** Stripe payment method token obtained from Stripe.js or Stripe Elements */
4446
5096
  payment_method_id: string;
4447
5097
  };
5098
+ params: Record<string, unknown>;
5099
+ query: Record<string, unknown>;
4448
5100
  response: {
4449
5101
  billing_status?: string;
4450
5102
  message?: string;
@@ -4463,6 +5115,8 @@ interface createBillingSubscriptionOperation {
4463
5115
  request: {
4464
5116
  tier: "developer" | "enterprise";
4465
5117
  };
5118
+ params: Record<string, unknown>;
5119
+ query: Record<string, unknown>;
4466
5120
  response: {
4467
5121
  checkout_url?: string | null;
4468
5122
  status?: "active" | "requires_payment";
@@ -4476,6 +5130,8 @@ interface getBillingSubscriptionOperation {
4476
5130
  readonly path: "/v1/partner/billing/subscription";
4477
5131
  readonly method: "GET";
4478
5132
  request: never;
5133
+ params: Record<string, unknown>;
5134
+ query: Record<string, unknown>;
4479
5135
  response: {
4480
5136
  current_period_end?: string;
4481
5137
  status?: "active" | "past_due" | "canceled" | "trialing";
@@ -4491,6 +5147,8 @@ interface getBillingUsageOperation {
4491
5147
  readonly path: "/v1/partner/billing/usage";
4492
5148
  readonly method: "GET";
4493
5149
  request: never;
5150
+ params: Record<string, unknown>;
5151
+ query: Record<string, unknown>;
4494
5152
  response: {
4495
5153
  ads_served?: number;
4496
5154
  audience_api_calls?: number;
@@ -4508,6 +5166,8 @@ interface getBillingUsageSummaryOperation {
4508
5166
  readonly path: "/v1/partner/billing/usage-summary";
4509
5167
  readonly method: "GET";
4510
5168
  request: never;
5169
+ params: Record<string, unknown>;
5170
+ query: Record<string, unknown>;
4511
5171
  response: {
4512
5172
  /** Current billing status */
4513
5173
  billing_status?: "none" | "active" | "suspended";
@@ -4540,6 +5200,8 @@ interface stripeWebhookCallbackOperation {
4540
5200
  readonly path: "/v1/partner/billing/webhook";
4541
5201
  readonly method: "POST";
4542
5202
  request: Record<string, unknown>;
5203
+ params: Record<string, unknown>;
5204
+ query: Record<string, unknown>;
4543
5205
  response: unknown;
4544
5206
  }
4545
5207
  /**
@@ -4550,6 +5212,10 @@ interface getConnectDashboardOperation {
4550
5212
  readonly path: "/v1/partner/connect/dashboard";
4551
5213
  readonly method: "GET";
4552
5214
  request: never;
5215
+ params: Record<string, unknown>;
5216
+ query: {
5217
+ period?: "7d" | "30d" | "90d";
5218
+ };
4553
5219
  response: {
4554
5220
  data?: {
4555
5221
  charts?: {
@@ -4617,6 +5283,11 @@ interface getConnectEarningsChartOperation {
4617
5283
  readonly path: "/v1/partner/connect/earnings";
4618
5284
  readonly method: "GET";
4619
5285
  request: never;
5286
+ params: Record<string, unknown>;
5287
+ query: {
5288
+ group_by?: "day" | "week";
5289
+ period?: "7d" | "30d" | "90d";
5290
+ };
4620
5291
  response: {
4621
5292
  data?: {
4622
5293
  chart?: Array<{
@@ -4650,6 +5321,10 @@ interface getConnectScreenHealthOperation {
4650
5321
  readonly path: "/v1/partner/connect/health";
4651
5322
  readonly method: "GET";
4652
5323
  request: never;
5324
+ params: Record<string, unknown>;
5325
+ query: {
5326
+ status?: "online" | "offline" | "all";
5327
+ };
4653
5328
  response: {
4654
5329
  data?: {
4655
5330
  checked_at?: string;
@@ -4693,6 +5368,8 @@ interface listContentPresetsOperation {
4693
5368
  readonly path: "/v1/partner/content-presets";
4694
5369
  readonly method: "GET";
4695
5370
  request: never;
5371
+ params: Record<string, unknown>;
5372
+ query: Record<string, unknown>;
4696
5373
  response: {
4697
5374
  data?: Array<ContentPreset>;
4698
5375
  has_more?: boolean;
@@ -4709,8 +5386,170 @@ interface getContentPresetOperation {
4709
5386
  readonly path: "/v1/partner/content-presets/{presetId}";
4710
5387
  readonly method: "GET";
4711
5388
  request: never;
5389
+ params: {
5390
+ presetId: string;
5391
+ };
5392
+ query: Record<string, unknown>;
4712
5393
  response: ContentPreset;
4713
5394
  }
5395
+ /**
5396
+ * Create an experiment on a funded native media-buy placement
5397
+ * POST /v1/partner/creative-experiments
5398
+ */
5399
+ interface createCreativeFeedbackExperimentOperation {
5400
+ readonly path: "/v1/partner/creative-experiments";
5401
+ readonly method: "POST";
5402
+ request: FeedbackCreateRequest;
5403
+ params: Record<string, unknown>;
5404
+ query: Record<string, unknown>;
5405
+ response: FeedbackExperimentResponse;
5406
+ }
5407
+ /**
5408
+ * Read your native experiment, policy and latest 500 owned creative recovery records
5409
+ * GET /v1/partner/creative-experiments/{experiment_id}
5410
+ */
5411
+ interface getCreativeFeedbackExperimentOperation {
5412
+ readonly path: "/v1/partner/creative-experiments/{experiment_id}";
5413
+ readonly method: "GET";
5414
+ request: never;
5415
+ params: {
5416
+ /** Native experiment ID returned by create_creative_experiment. */
5417
+ experiment_id: string;
5418
+ };
5419
+ query: Record<string, unknown>;
5420
+ response: FeedbackExperimentDetailResponse;
5421
+ }
5422
+ /**
5423
+ * Configure your native brand profile and enable its booked reactive campaign
5424
+ * POST /v1/partner/creative-experiments/{experiment_id}/brand
5425
+ */
5426
+ interface configureCreativeFeedbackBrandOperation {
5427
+ readonly path: "/v1/partner/creative-experiments/{experiment_id}/brand";
5428
+ readonly method: "POST";
5429
+ request: FeedbackBrandRequest;
5430
+ params: {
5431
+ /** Native experiment ID returned by create_creative_experiment. */
5432
+ experiment_id: string;
5433
+ };
5434
+ query: Record<string, unknown>;
5435
+ response: FeedbackBrandResponse;
5436
+ }
5437
+ /**
5438
+ * Generate a native brand creative for explicit review and moderation
5439
+ * POST /v1/partner/creative-experiments/{experiment_id}/creatives/generate
5440
+ */
5441
+ interface generateCreativeFeedbackCreativeOperation {
5442
+ readonly path: "/v1/partner/creative-experiments/{experiment_id}/creatives/generate";
5443
+ readonly method: "POST";
5444
+ request: FeedbackGenerateRequest;
5445
+ params: {
5446
+ /** Native experiment ID returned by create_creative_experiment. */
5447
+ experiment_id: string;
5448
+ };
5449
+ query: Record<string, unknown>;
5450
+ response: FeedbackGenerateResponse;
5451
+ }
5452
+ /**
5453
+ * Import an AI model’s image through native bytes, moderation and brand review
5454
+ * POST /v1/partner/creative-experiments/{experiment_id}/creatives/import
5455
+ */
5456
+ interface importCreativeFeedbackCreativeOperation {
5457
+ readonly path: "/v1/partner/creative-experiments/{experiment_id}/creatives/import";
5458
+ readonly method: "POST";
5459
+ request: FeedbackImportRequest;
5460
+ params: {
5461
+ /** Native experiment ID returned by create_creative_experiment. */
5462
+ experiment_id: string;
5463
+ };
5464
+ query: Record<string, unknown>;
5465
+ response: FeedbackGenerateResponse;
5466
+ }
5467
+ /**
5468
+ * Approve or reject your generated creative using native brand review
5469
+ * POST /v1/partner/creative-experiments/{experiment_id}/creatives/review
5470
+ */
5471
+ interface reviewCreativeFeedbackCreativeOperation {
5472
+ readonly path: "/v1/partner/creative-experiments/{experiment_id}/creatives/review";
5473
+ readonly method: "POST";
5474
+ request: FeedbackReviewRequest;
5475
+ params: {
5476
+ /** Native experiment ID returned by create_creative_experiment. */
5477
+ experiment_id: string;
5478
+ };
5479
+ query: Record<string, unknown>;
5480
+ response: FeedbackReviewResponse;
5481
+ }
5482
+ /**
5483
+ * Replace native creative weights at the expected policy version
5484
+ * PUT /v1/partner/creative-experiments/{experiment_id}/policy
5485
+ */
5486
+ interface updateCreativeFeedbackPolicyOperation {
5487
+ readonly path: "/v1/partner/creative-experiments/{experiment_id}/policy";
5488
+ readonly method: "PUT";
5489
+ request: FeedbackPolicyRequest;
5490
+ params: {
5491
+ /** Native experiment ID returned by create_creative_experiment. */
5492
+ experiment_id: string;
5493
+ };
5494
+ query: Record<string, unknown>;
5495
+ response: FeedbackExperimentResponse;
5496
+ }
5497
+ /**
5498
+ * Read a metered page of latest measured native play states
5499
+ * GET /v1/partner/creative-experiments/{experiment_id}/rewards
5500
+ */
5501
+ interface getCreativeFeedbackRewardsOperation {
5502
+ readonly path: "/v1/partner/creative-experiments/{experiment_id}/rewards";
5503
+ readonly method: "GET";
5504
+ request: never;
5505
+ params: {
5506
+ /** Native experiment ID returned by create_creative_experiment. */
5507
+ experiment_id: string;
5508
+ };
5509
+ query: {
5510
+ /** Opaque next_cursor from this same date scope; rewind after scan_complete. */
5511
+ cursor?: string;
5512
+ /** Inclusive first play date, YYYY-MM-DD; date range is at most 31 days. */
5513
+ from: string;
5514
+ /** Unique caller-owned billing key for this page; committed retries return the receipt, not another read. */
5515
+ idempotency_key: string;
5516
+ /** Maximum native play states returned on this metered page. */
5517
+ limit?: number;
5518
+ /** Inclusive last play date, YYYY-MM-DD; date range is at most 31 days. */
5519
+ to: string;
5520
+ };
5521
+ response: FeedbackRewardsResponse;
5522
+ }
5523
+ /**
5524
+ * Stop the native experiment at the expected policy version
5525
+ * POST /v1/partner/creative-experiments/{experiment_id}/stop
5526
+ */
5527
+ interface stopCreativeFeedbackExperimentOperation {
5528
+ readonly path: "/v1/partner/creative-experiments/{experiment_id}/stop";
5529
+ readonly method: "POST";
5530
+ request: FeedbackStopRequest;
5531
+ params: {
5532
+ /** Native experiment ID returned by create_creative_experiment. */
5533
+ experiment_id: string;
5534
+ };
5535
+ query: Record<string, unknown>;
5536
+ response: FeedbackExperimentResponse;
5537
+ }
5538
+ /**
5539
+ * Register approved native generated creative variants
5540
+ * POST /v1/partner/creative-experiments/{experiment_id}/variants
5541
+ */
5542
+ interface registerCreativeFeedbackVariantsOperation {
5543
+ readonly path: "/v1/partner/creative-experiments/{experiment_id}/variants";
5544
+ readonly method: "POST";
5545
+ request: FeedbackRegisterVariantsRequest;
5546
+ params: {
5547
+ /** Native experiment ID returned by create_creative_experiment. */
5548
+ experiment_id: string;
5549
+ };
5550
+ query: Record<string, unknown>;
5551
+ response: FeedbackExperimentResponse;
5552
+ }
4714
5553
  /**
4715
5554
  * Submit a creative for classification
4716
5555
  * POST /v1/partner/creatives
@@ -4724,6 +5563,8 @@ interface submitPartnerCreativeOperation {
4724
5563
  /** Public http(s) URL of the creative image or video. Must resolve to a public address — private/internal/cloud-metadata addresses are rejected. */
4725
5564
  media_url: string;
4726
5565
  };
5566
+ params: Record<string, unknown>;
5567
+ query: Record<string, unknown>;
4727
5568
  response: CreativeClassification;
4728
5569
  }
4729
5570
  /**
@@ -4734,6 +5575,10 @@ interface getPartnerCreativeOperation {
4734
5575
  readonly path: "/v1/partner/creatives/{ref}";
4735
5576
  readonly method: "GET";
4736
5577
  request: never;
5578
+ params: {
5579
+ ref: string;
5580
+ };
5581
+ query: Record<string, unknown>;
4737
5582
  response: CreativeClassification;
4738
5583
  }
4739
5584
  /**
@@ -4744,6 +5589,8 @@ interface getDashboardOperation {
4744
5589
  readonly path: "/v1/partner/dashboard";
4745
5590
  readonly method: "GET";
4746
5591
  request: never;
5592
+ params: Record<string, unknown>;
5593
+ query: Record<string, unknown>;
4747
5594
  response: {
4748
5595
  data?: DashboardResponse;
4749
5596
  success?: boolean;
@@ -4757,7 +5604,37 @@ interface exportProximityGraphEdgesOperation {
4757
5604
  readonly path: "/v1/partner/data-export/proximity-graph-edges";
4758
5605
  readonly method: "GET";
4759
5606
  request: never;
4760
- response: unknown;
5607
+ params: Record<string, unknown>;
5608
+ query: {
5609
+ cursor?: string;
5610
+ days?: number;
5611
+ limit?: number;
5612
+ };
5613
+ response: {
5614
+ data?: {
5615
+ limit: number;
5616
+ lookback_days: number;
5617
+ /** The `cursor` of the next page, or `null` on the last page. */
5618
+ next_cursor: string | null;
5619
+ rows: Array<{
5620
+ destination_screen_id: string;
5621
+ /** Distinct transitions from the source screen to the destination screen. */
5622
+ edge_count: number;
5623
+ /** Median minutes between the source and destination sightings. */
5624
+ lag_p50: number;
5625
+ source_screen_id: string;
5626
+ /** Distinct devices behind those transitions. */
5627
+ unique_devices: number;
5628
+ }>;
5629
+ /** Number of edges in this page. */
5630
+ total: number;
5631
+ /** `true` when more edges follow this page: pass `next_cursor` back as `cursor`. */
5632
+ truncated: boolean;
5633
+ /** The UTC second the window ends at (`YYYY-MM-DD HH:MM:SS`), pinned by the first page. */
5634
+ window_end: string;
5635
+ };
5636
+ success?: boolean;
5637
+ };
4761
5638
  }
4762
5639
  /**
4763
5640
  * List available datasets and per-dataset record counts
@@ -4767,6 +5644,10 @@ interface getDataExportSummaryOperation {
4767
5644
  readonly path: "/v1/partner/data-export/summary";
4768
5645
  readonly method: "GET";
4769
5646
  request: never;
5647
+ params: Record<string, unknown>;
5648
+ query: {
5649
+ days?: number;
5650
+ };
4770
5651
  response: DataExportSummaryResponse;
4771
5652
  }
4772
5653
  /**
@@ -4777,9 +5658,16 @@ interface exportDatasetOperation {
4777
5658
  readonly path: "/v1/partner/data-export/{dataset}";
4778
5659
  readonly method: "GET";
4779
5660
  request: never;
5661
+ params: {
5662
+ dataset: "audience_metrics" | "signal_audience" | "attention_ledger" | "impression_ledger" | "waterfall_events" | "intent_signals" | "audience_loyalty_features" | "screen_metadata";
5663
+ };
5664
+ query: {
5665
+ days?: number;
5666
+ limit?: number;
5667
+ offset?: number;
5668
+ };
4780
5669
  response: {
4781
5670
  data?: {
4782
- k_anonymity_threshold?: number;
4783
5671
  lookback_days?: number;
4784
5672
  /** Row shape depends on the requested `dataset`. For `audience_loyalty_features` see `AudienceLoyaltyFeaturesRow`. For other datasets the row shape is documented per-dataset in the Trillboards data dictionary. */
4785
5673
  rows?: Array<AudienceLoyaltyFeaturesRow | Record<string, unknown>>;
@@ -4797,47 +5685,51 @@ interface getGeohashAudiencePanelOperation {
4797
5685
  readonly path: "/v1/partner/data/geohash-audience-panel";
4798
5686
  readonly method: "GET";
4799
5687
  request: never;
5688
+ params: Record<string, unknown>;
5689
+ query: {
5690
+ date?: string;
5691
+ geohash_prefix?: string;
5692
+ limit?: number;
5693
+ offset?: number;
5694
+ venue_category?: string;
5695
+ };
4800
5696
  response: {
4801
5697
  data?: {
4802
- /** True when the daily epsilon budget cannot accommodate this request. `rows` is empty in this case; no epsilon is deducted. */
4803
- budget_exhausted?: boolean;
4804
5698
  /** Day exported (UTC). */
4805
5699
  date: string;
4806
- /** Epsilon spent on this call (0 if `budget_exhausted` or CH unavailable). Deducted from `partner_dp_budget.epsilon_spent` on success. */
4807
- epsilon_used: number;
4808
- /** K-anonymity floor applied at SQL `HAVING`. Default 5; override via `partners.k_anon_floor`. */
4809
- k_anonymity_threshold: number;
4810
- partner_dp_budget: {
4811
- /** Maximum epsilon allowed per day for this partner. */
4812
- epsilon_max: number;
4813
- /** Epsilon already spent today before this call. */
4814
- epsilon_spent_before: number;
4815
- };
4816
- /** UUID partner_id (from `partners.partner_id`, migration 030). */
4817
- partner_id: string;
4818
- /** Noised per-row aggregates (k-anon-filtered + Laplace-perturbed). */
5700
+ /** Rows per page this response was read with. */
5701
+ limit: number;
5702
+ /** The `offset` of the next page, or `null` on the last page. */
5703
+ next_offset: number | null;
5704
+ /** Rows skipped before this page. */
5705
+ offset: number;
5706
+ /** Integer partner_id (`partners.partner_id`). */
5707
+ partner_id: number;
5708
+ /** Per-row aggregates, every cell with its counts. */
4819
5709
  rows: Array<{
4820
- /** Noised average attention score (Laplace, sensitivity 0.1). */
4821
- avg_attention: number;
4822
- /** Noised average dwell seconds (Laplace, sensitivity 5). */
4823
- avg_dwell_seconds: number;
4824
- /** Noised average face count per observation (Laplace, sensitivity 1). */
4825
- avg_face_count: number;
5710
+ /** Average attention score. `null`: not measured in this panel, which is built from radio pings; camera-measured attention is in the camera datasets. */
5711
+ avg_attention: number | null;
5712
+ /** Average dwell seconds. `null`: not measured in this panel, which is built from radio pings; camera-measured dwell is in the camera datasets. */
5713
+ avg_dwell_seconds: number | null;
5714
+ /** Average face count per observation. `null`: not measured in this panel, which is built from radio pings; camera-measured faces are in the camera datasets. */
5715
+ avg_face_count: number | null;
4826
5716
  /** 6-character geohash bucket. */
4827
5717
  geohash6: string;
4828
5718
  /** Hour bucket as the integer hour (0..23) cast to string. */
4829
5719
  hour: string;
4830
5720
  /** Income tier bucket (e.g. `low`, `mid`, `high`). */
4831
5721
  income_tier: string;
4832
- /** Noised observation count (Laplace, sensitivity 1). */
5722
+ /** Observation count. */
4833
5723
  observation_count: number;
4834
5724
  /** Distinct screen count contributing to this bucket. */
4835
5725
  screen_count: number;
4836
- /** Noised unique-device count (Laplace, sensitivity 1). */
5726
+ /** Unique-device count. */
4837
5727
  unique_devices: number;
4838
5728
  /** Venue category from `screens_live.venue_category`. */
4839
5729
  venue_category: string;
4840
5730
  }>;
5731
+ /** `true` when more cells follow this page: request `next_offset`. */
5732
+ truncated: boolean;
4841
5733
  };
4842
5734
  success?: boolean;
4843
5735
  };
@@ -4850,40 +5742,47 @@ interface getOutcomeAttributionOperation {
4850
5742
  readonly path: "/v1/partner/data/outcome-attribution";
4851
5743
  readonly method: "GET";
4852
5744
  request: never;
5745
+ params: Record<string, unknown>;
5746
+ query: {
5747
+ creative_id?: string;
5748
+ cursor?: string;
5749
+ days?: number;
5750
+ grain?: "person" | "device";
5751
+ limit?: number;
5752
+ };
4853
5753
  response: {
4854
5754
  data?: {
4855
- /** DP epsilon charged to the partner's daily budget for this call (0 if refunded). */
4856
- epsilon_used: number;
4857
5755
  /** The reach grain applied (echoes the `grain` query param; defaults to `person`). */
4858
5756
  grain: "person" | "device";
4859
- /** The per-partner k-anon floor applied at SQL HAVING. */
4860
- k_anonymity_threshold: number;
5757
+ /** Rows per page this response was read with. */
5758
+ limit: number;
4861
5759
  /** The validated lookback window used. */
4862
5760
  lookback_days: number;
4863
- /** Daily DP budget snapshot at reservation time. */
4864
- partner_dp_budget: {
4865
- epsilon_max?: number;
4866
- epsilon_spent_before?: number;
4867
- };
4868
- /** Noised per-(creative, screen) outcome aggregates (k-anon-filtered + Laplace-perturbed). */
5761
+ /** The `cursor` of the next page, or `null` on the last page. */
5762
+ next_cursor: string | null;
5763
+ /** Per-(creative, screen) outcome aggregates, every cell with its counts. */
4869
5764
  rows: Array<{
4870
- /** Noised average exposures per reach-identity within the (creative, screen) cell (count of detail rows / distinct reach keys). A frequency over PEOPLE under person grain, over devices under device grain. */
5765
+ /** Average exposures per reach-identity within the (creative, screen) cell (count of detail rows / distinct reach keys). A frequency over PEOPLE under person grain, over devices under device grain. */
4871
5766
  avg_frequency: number;
4872
5767
  /** Creative identifier from `completed_impressions.creative_id`. */
4873
5768
  creative_id: string;
4874
- /** Noised count of exposed identities also seen on another screen. */
5769
+ /** Count of exposed identities also seen on another screen. */
4875
5770
  cross_screen_devices: number;
4876
- /** Noised count of distinct devices exposed to the creative on the screen. */
5771
+ /** Count of distinct devices exposed to the creative on the screen. */
4877
5772
  exposed_devices: number;
4878
- /** returned_devices / exposed_devices, recomputed from the noised counts. */
5773
+ /** returned_devices / exposed_devices. */
4879
5774
  return_rate: number;
4880
- /** Noised count of exposed devices that returned (clamped ≤ exposed_devices). */
5775
+ /** Count of exposed devices that returned (≤ exposed_devices). */
4881
5776
  returned_devices: number;
4882
5777
  /** The partner's own screen identifier. */
4883
5778
  screen_mongo_id: string;
4884
5779
  }>;
4885
- /** Number of rows returned. */
5780
+ /** Number of rows in this page. */
4886
5781
  total: number;
5782
+ /** `true` when more cells follow this page: pass `next_cursor` back as `cursor`. */
5783
+ truncated: boolean;
5784
+ /** The UTC date the window ends on, pinned by the first page; the window is `window_end - lookback_days` through `window_end`. */
5785
+ window_end: string;
4887
5786
  };
4888
5787
  success?: boolean;
4889
5788
  };
@@ -4902,7 +5801,8 @@ interface registerDeviceOperation {
4902
5801
  description?: string;
4903
5802
  /** Your internal device identifier */
4904
5803
  device_id: string;
4905
- device_type?: "vending_machine" | "kiosk" | "tablet" | "display" | "other";
5804
+ /** Mutable partner category; defaults to other only on a new registration. Omit it to preserve an existing device's category. */
5805
+ device_type?: "tv" | "tablet" | "display" | "kiosk" | "other" | "mobile" | "connected_tv" | "digital_signage" | "vending_machine";
4906
5806
  /** Screen display specification. `width`/`height` are pixel resolution; `width_in`/`height_in` are physical inches. For accurate floor pricing we need physical inches — pass `width_in` + `height_in` if you've measured the screen, OR `ppi` so the server can derive inches from the pixel resolution. Pixel-only inputs (no `ppi`, no `*_in`) will NOT be recorded as physical size; they're still used for orientation detection and DSP slot dimensions. */
4907
5807
  display?: {
4908
5808
  /** Display resolution height in pixels (e.g. 1080) */
@@ -4968,10 +5868,14 @@ interface registerDeviceOperation {
4968
5868
  subcategory?: string;
4969
5869
  };
4970
5870
  };
5871
+ params: Record<string, unknown>;
5872
+ query: Record<string, unknown>;
4971
5873
  response: {
4972
5874
  data?: {
4973
5875
  /** Our internal device ID */
4974
5876
  device_id?: string;
5877
+ /** Saved partner category, independent of advertising classification. */
5878
+ device_type?: "tv" | "tablet" | "display" | "kiosk" | "other" | "mobile" | "connected_tv" | "digital_signage" | "vending_machine";
4975
5879
  /** Load this URL in your WebView */
4976
5880
  embed_url?: string;
4977
5881
  /** Enrichment completion state */
@@ -4980,7 +5884,8 @@ interface registerDeviceOperation {
4980
5884
  external_device_id?: string;
4981
5885
  /** Device fingerprint for SDK */
4982
5886
  fingerprint?: string;
4983
- /** Stripe-style readiness. `ready` — coordinates present and venue classified. `limited` — coordinates present, not yet classified (servable, missing venue/floor). `blocked` — no usable coordinates, or classification permanently failed. */
5887
+ location_capability?: PartnerLocationCapability;
5888
+ /** Stripe-style readiness. `ready` — the screen has its own coordinates and its venue is classified. `limited` — servable, but not on every rail: the venue is not yet classified, or the screen has no position of its own and is listed in inventory feeds at your fleet's market location. `blocked` — no rail has a location, or classification permanently failed. A device is never refused registration for missing location. */
4984
5889
  monetization_status?: "ready" | "limited" | "blocked";
4985
5890
  requirements?: PartnerMonetizationRequirements;
4986
5891
  /** Linked screen ID */
@@ -4999,6 +5904,10 @@ interface deleteDeviceOperation {
4999
5904
  readonly path: "/v1/partner/device/{deviceId}";
5000
5905
  readonly method: "DELETE";
5001
5906
  request: never;
5907
+ params: {
5908
+ deviceId: string;
5909
+ };
5910
+ query: Record<string, unknown>;
5002
5911
  response: {
5003
5912
  message?: string;
5004
5913
  success?: boolean;
@@ -5012,6 +5921,10 @@ interface getDeviceOperation {
5012
5921
  readonly path: "/v1/partner/device/{deviceId}";
5013
5922
  readonly method: "GET";
5014
5923
  request: never;
5924
+ params: {
5925
+ deviceId: string;
5926
+ };
5927
+ query: Record<string, unknown>;
5015
5928
  response: {
5016
5929
  data?: Device;
5017
5930
  success?: boolean;
@@ -5029,6 +5942,8 @@ interface updateDeviceOperation {
5029
5942
  custom_metadata?: Record<string, unknown>;
5030
5943
  /** Screen or venue description */
5031
5944
  description?: string;
5945
+ /** Mutable partner category. Omit it to preserve the current value; changing it does not alter advertising classification. */
5946
+ device_type?: "tv" | "tablet" | "display" | "kiosk" | "other" | "mobile" | "connected_tv" | "digital_signage" | "vending_machine";
5032
5947
  /** Screen display specification. `width`/`height` are pixels; pass `width_in`/`height_in` (inches) or `ppi` to record physical screen size for floor pricing. See POST /device for full unit semantics. */
5033
5948
  display?: {
5034
5949
  /** Display resolution height in pixels */
@@ -5091,6 +6006,10 @@ interface updateDeviceOperation {
5091
6006
  subcategory?: string;
5092
6007
  };
5093
6008
  };
6009
+ params: {
6010
+ deviceId: string;
6011
+ };
6012
+ query: Record<string, unknown>;
5094
6013
  response: {
5095
6014
  data?: Device;
5096
6015
  message?: string;
@@ -5105,6 +6024,20 @@ interface getAdsForDeviceOperation {
5105
6024
  readonly path: "/v1/partner/device/{deviceId}/ads";
5106
6025
  readonly method: "GET";
5107
6026
  request: never;
6027
+ params: {
6028
+ deviceId: string;
6029
+ };
6030
+ query: {
6031
+ autoplay?: boolean;
6032
+ ipd?: string;
6033
+ lang?: string;
6034
+ muted?: boolean;
6035
+ orientation?: "portrait" | "landscape";
6036
+ slot_h?: number;
6037
+ slot_w?: number;
6038
+ test?: "1" | "true";
6039
+ ua?: string;
6040
+ };
5108
6041
  response: {
5109
6042
  data?: {
5110
6043
  ads?: Array<Ad>;
@@ -5158,6 +6091,11 @@ interface ackDeviceCommandOperation {
5158
6091
  /** Acknowledgment status */
5159
6092
  status?: string;
5160
6093
  };
6094
+ params: {
6095
+ commandId: string;
6096
+ deviceId: string;
6097
+ };
6098
+ query: Record<string, unknown>;
5161
6099
  response: {
5162
6100
  message?: string;
5163
6101
  success?: boolean;
@@ -5171,6 +6109,10 @@ interface getDeviceHeartbeatOperation {
5171
6109
  readonly path: "/v1/partner/device/{deviceId}/heartbeat";
5172
6110
  readonly method: "GET";
5173
6111
  request: never;
6112
+ params: {
6113
+ deviceId: string;
6114
+ };
6115
+ query: Record<string, unknown>;
5174
6116
  response: PartnerHeartbeatQueryResponse;
5175
6117
  }
5176
6118
  /**
@@ -5181,8 +6123,58 @@ interface heartbeatOperation {
5181
6123
  readonly path: "/v1/partner/device/{deviceId}/heartbeat";
5182
6124
  readonly method: "POST";
5183
6125
  request: PartnerHeartbeatRequest | PartnerDeviceHeartbeatBody;
6126
+ params: {
6127
+ deviceId: string;
6128
+ };
6129
+ query: Record<string, unknown>;
5184
6130
  response: PartnerHeartbeatResponse;
5185
6131
  }
6132
+ /**
6133
+ * Report a rider interaction from the partner SDK (reportInteraction)
6134
+ * POST /v1/partner/device/{deviceId}/interactions
6135
+ */
6136
+ interface recordPartnerDeviceInteractionOperation {
6137
+ readonly path: "/v1/partner/device/{deviceId}/interactions";
6138
+ readonly method: "POST";
6139
+ request: PartnerInteraction;
6140
+ params: {
6141
+ deviceId: string;
6142
+ };
6143
+ query: Record<string, unknown>;
6144
+ response: {
6145
+ data: {
6146
+ interaction_id: string;
6147
+ /** The screen this device is bound to. */
6148
+ screen_id: string;
6149
+ status: "accepted" | "duplicate";
6150
+ type: "tap" | "qr_shown" | "qr_scanned" | "dwell_prompt";
6151
+ };
6152
+ success: true;
6153
+ };
6154
+ }
6155
+ /**
6156
+ * Report a play from the partner SDK (reportPlay)
6157
+ * POST /v1/partner/device/{deviceId}/plays
6158
+ */
6159
+ interface recordPartnerDevicePlayOperation {
6160
+ readonly path: "/v1/partner/device/{deviceId}/plays";
6161
+ readonly method: "POST";
6162
+ request: PartnerDevicePlay;
6163
+ params: {
6164
+ deviceId: string;
6165
+ };
6166
+ query: Record<string, unknown>;
6167
+ response: {
6168
+ data: {
6169
+ content_sha256: string;
6170
+ play_id: string;
6171
+ /** The screen this device is bound to. */
6172
+ screen_id: string;
6173
+ status: "accepted" | "duplicate";
6174
+ };
6175
+ success: true;
6176
+ };
6177
+ }
5186
6178
  /**
5187
6179
  * Record programmatic ad event (Server-side Analytics)
5188
6180
  * POST /v1/partner/device/{deviceId}/programmatic-event
@@ -5202,10 +6194,37 @@ interface recordProgrammaticEventOperation {
5202
6194
  slot_width?: number;
5203
6195
  variant_name?: string;
5204
6196
  };
6197
+ params: {
6198
+ deviceId: string;
6199
+ };
6200
+ query: Record<string, unknown>;
5205
6201
  response: {
5206
6202
  success?: boolean;
5207
6203
  };
5208
6204
  }
6205
+ /**
6206
+ * Report a taxi-meter state change from the partner SDK (setTripState)
6207
+ * POST /v1/partner/device/{deviceId}/trips
6208
+ */
6209
+ interface recordPartnerDeviceTripStateOperation {
6210
+ readonly path: "/v1/partner/device/{deviceId}/trips";
6211
+ readonly method: "POST";
6212
+ request: PartnerTripState;
6213
+ params: {
6214
+ deviceId: string;
6215
+ };
6216
+ query: Record<string, unknown>;
6217
+ response: {
6218
+ data: {
6219
+ event_seq: number;
6220
+ /** The screen this device is bound to. */
6221
+ screen_id: string;
6222
+ status: "accepted" | "duplicate";
6223
+ trip_id: string;
6224
+ };
6225
+ success: true;
6226
+ };
6227
+ }
5209
6228
  /**
5210
6229
  * List all devices
5211
6230
  * GET /v1/partner/devices
@@ -5214,6 +6233,12 @@ interface listDevicesOperation {
5214
6233
  readonly path: "/v1/partner/devices";
5215
6234
  readonly method: "GET";
5216
6235
  request: never;
6236
+ params: Record<string, unknown>;
6237
+ query: {
6238
+ limit?: number;
6239
+ offset?: number;
6240
+ status?: "pending" | "active" | "offline" | "suspended";
6241
+ };
5217
6242
  response: {
5218
6243
  data?: {
5219
6244
  devices?: Array<DeviceSummary>;
@@ -5268,6 +6293,8 @@ interface registerDeviceV2Operation {
5268
6293
  /** The device's real WebView User-Agent. Must include a Build fingerprint and be unique per device. */
5269
6294
  ua: string;
5270
6295
  };
6296
+ params: Record<string, unknown>;
6297
+ query: Record<string, unknown>;
5271
6298
  response: {
5272
6299
  data?: {
5273
6300
  device_id?: string;
@@ -5311,10 +6338,15 @@ interface registerDevicesBatchOperation {
5311
6338
  venue?: Record<string, unknown>;
5312
6339
  }>;
5313
6340
  };
6341
+ params: Record<string, unknown>;
6342
+ query: Record<string, unknown>;
5314
6343
  response: {
5315
6344
  devices?: Array<{
5316
6345
  device_id?: string;
5317
6346
  fingerprint?: string;
6347
+ location_capability?: PartnerLocationCapability;
6348
+ monetization_status?: "ready" | "limited" | "blocked";
6349
+ requirements?: PartnerMonetizationRequirements;
5318
6350
  screen_id?: string;
5319
6351
  status?: string;
5320
6352
  trillboard_id?: string;
@@ -5322,6 +6354,8 @@ interface registerDevicesBatchOperation {
5322
6354
  errors?: Array<{
5323
6355
  device_id?: string;
5324
6356
  error?: string;
6357
+ /** Stable code, e.g. DEVICE_ID_CLAIMED (409 — a device that already reports to Trillboards under this id is registered to another account), REGISTRATION_CHECK_UNAVAILABLE (503 — retry), INVALID_COUNTRY (400). */
6358
+ error_code?: string;
5325
6359
  status?: string;
5326
6360
  }>;
5327
6361
  success?: boolean;
@@ -5344,6 +6378,8 @@ interface batchUpdateDeviceOrientationOperation {
5344
6378
  device_ids: Array<string>;
5345
6379
  screen_orientation: "portrait" | "landscape" | "mixed" | "unknown";
5346
6380
  };
6381
+ params: Record<string, unknown>;
6382
+ query: Record<string, unknown>;
5347
6383
  response: {
5348
6384
  matched_devices?: number;
5349
6385
  missing_device_ids?: Array<string>;
@@ -5363,6 +6399,8 @@ interface reconcileDevicesOperation {
5363
6399
  /** Your device external IDs to reconcile. */
5364
6400
  external_ids: Array<string>;
5365
6401
  };
6402
+ params: Record<string, unknown>;
6403
+ query: Record<string, unknown>;
5366
6404
  response: {
5367
6405
  duplicate?: Array<Record<string, unknown>>;
5368
6406
  malformed?: Array<Record<string, unknown>>;
@@ -5390,6 +6428,8 @@ interface partnerDocsBrowserOperation {
5390
6428
  readonly path: "/v1/partner/docs";
5391
6429
  readonly method: "GET";
5392
6430
  request: never;
6431
+ params: Record<string, unknown>;
6432
+ query: Record<string, unknown>;
5393
6433
  response: unknown;
5394
6434
  }
5395
6435
  /**
@@ -5400,6 +6440,8 @@ interface getEarningsOperation {
5400
6440
  readonly path: "/v1/partner/earnings";
5401
6441
  readonly method: "GET";
5402
6442
  request: never;
6443
+ params: Record<string, unknown>;
6444
+ query: Record<string, unknown>;
5403
6445
  response: {
5404
6446
  data?: EarningsResponse;
5405
6447
  success?: boolean;
@@ -5413,6 +6455,12 @@ interface getEarningsBreakdownOperation {
5413
6455
  readonly path: "/v1/partner/earnings/breakdown";
5414
6456
  readonly method: "GET";
5415
6457
  request: never;
6458
+ params: Record<string, unknown>;
6459
+ query: {
6460
+ end_date?: string;
6461
+ group_by?: "day" | "week" | "screen";
6462
+ start_date?: string;
6463
+ };
5416
6464
  response: {
5417
6465
  data?: EarningsBreakdownResponse;
5418
6466
  success?: boolean;
@@ -5429,6 +6477,8 @@ interface requestPayoutOperation {
5429
6477
  /** Amount to payout in cents (optional, defaults to available balance) */
5430
6478
  amount_cents?: number;
5431
6479
  };
6480
+ params: Record<string, unknown>;
6481
+ query: Record<string, unknown>;
5432
6482
  response: {
5433
6483
  data?: PayoutResponse;
5434
6484
  message?: string;
@@ -5443,6 +6493,12 @@ interface getTransactionsOperation {
5443
6493
  readonly path: "/v1/partner/earnings/transactions";
5444
6494
  readonly method: "GET";
5445
6495
  request: never;
6496
+ params: Record<string, unknown>;
6497
+ query: {
6498
+ limit?: number;
6499
+ offset?: number;
6500
+ type?: "all" | "earning" | "payout";
6501
+ };
5446
6502
  response: {
5447
6503
  data?: {
5448
6504
  pagination?: Pagination;
@@ -5459,6 +6515,8 @@ interface getActiveSSEConnectionsOperation {
5459
6515
  readonly path: "/v1/partner/events/connections";
5460
6516
  readonly method: "GET";
5461
6517
  request: never;
6518
+ params: Record<string, unknown>;
6519
+ query: Record<string, unknown>;
5462
6520
  response: {
5463
6521
  connections?: Array<{
5464
6522
  connected_at?: string;
@@ -5479,6 +6537,10 @@ interface subscribeToEventsOperation {
5479
6537
  readonly path: "/v1/partner/events/stream";
5480
6538
  readonly method: "GET";
5481
6539
  request: never;
6540
+ params: Record<string, unknown>;
6541
+ query: {
6542
+ events?: string;
6543
+ };
5482
6544
  response: unknown;
5483
6545
  }
5484
6546
  /**
@@ -5489,6 +6551,10 @@ interface getFleetCommandOperation {
5489
6551
  readonly path: "/v1/partner/fleet-commands/{id}";
5490
6552
  readonly method: "GET";
5491
6553
  request: never;
6554
+ params: {
6555
+ id: string;
6556
+ };
6557
+ query: Record<string, unknown>;
5492
6558
  response: {
5493
6559
  data?: {
5494
6560
  fleet_command?: FleetCommand;
@@ -5504,10 +6570,17 @@ interface getFleetAnalyticsOperation {
5504
6570
  readonly path: "/v1/partner/fleet/analytics";
5505
6571
  readonly method: "GET";
5506
6572
  request: never;
6573
+ params: Record<string, unknown>;
6574
+ query: Record<string, unknown>;
5507
6575
  response: {
5508
6576
  data?: {
5509
- /** Average attention score (0-1) */
6577
+ /** Average attention score (0-1) over the fleet's audience windows in the last 24 hours. Omitted when it was not measured — no screen in scope had an audience window, or the audience read failed (see `avg_attention_outcome`); never a `0` that stands in for a missing measurement. */
5510
6578
  avg_attention?: number;
6579
+ /** Whether the attention average above was measured. `kind: ok` — the read ran (the average is omitted only when no screen had an audience window); `kind: unavailable` — the audience read failed, so the average is omitted. Independent of the other fields, which are served either way. */
6580
+ avg_attention_outcome?: {
6581
+ kind?: "ok" | "unavailable";
6582
+ message?: string;
6583
+ };
5511
6584
  /** Average CPM in dollars */
5512
6585
  avg_cpm?: number;
5513
6586
  /** Fill rate percentage (0-100) */
@@ -5540,6 +6613,8 @@ interface pushFleetCommandOperation {
5540
6613
  venueType?: string;
5541
6614
  };
5542
6615
  };
6616
+ params: Record<string, unknown>;
6617
+ query: Record<string, unknown>;
5543
6618
  response: {
5544
6619
  data?: {
5545
6620
  errors?: Array<{
@@ -5562,6 +6637,8 @@ interface getFleetOverviewOperation {
5562
6637
  readonly path: "/v1/partner/fleet/overview";
5563
6638
  readonly method: "GET";
5564
6639
  request: never;
6640
+ params: Record<string, unknown>;
6641
+ query: Record<string, unknown>;
5565
6642
  response: {
5566
6643
  data?: {
5567
6644
  countries?: Record<string, number>;
@@ -5601,6 +6678,8 @@ interface updateFleetSettingsOperation {
5601
6678
  };
5602
6679
  };
5603
6680
  };
6681
+ params: Record<string, unknown>;
6682
+ query: Record<string, unknown>;
5604
6683
  response: {
5605
6684
  data?: {
5606
6685
  errors?: Array<Record<string, unknown>>;
@@ -5618,6 +6697,24 @@ interface recordImpressionGetOperation {
5618
6697
  readonly path: "/v1/partner/impression";
5619
6698
  readonly method: "GET";
5620
6699
  request: never;
6700
+ params: Record<string, unknown>;
6701
+ query: {
6702
+ adid: string;
6703
+ aid?: string;
6704
+ completed?: boolean;
6705
+ did?: string;
6706
+ display_area_ratio?: number;
6707
+ display_mode?: "fullscreen" | "l-bar" | "pip";
6708
+ duration?: number;
6709
+ impid: string;
6710
+ lbar_position?: "bottom" | "right";
6711
+ lbar_size?: number;
6712
+ lbar_slot_count?: number;
6713
+ lbar_slot_index?: number;
6714
+ sid?: string;
6715
+ sig?: string;
6716
+ sig_ts?: number;
6717
+ };
5621
6718
  response: {
5622
6719
  duplicate?: boolean;
5623
6720
  message?: string;
@@ -5648,6 +6745,8 @@ interface recordImpressionPostOperation {
5648
6745
  sig?: string;
5649
6746
  sig_ts?: number;
5650
6747
  };
6748
+ params: Record<string, unknown>;
6749
+ query: Record<string, unknown>;
5651
6750
  response: {
5652
6751
  duplicate?: boolean;
5653
6752
  message?: string;
@@ -5682,6 +6781,8 @@ interface recordImpressionsBatchOperation {
5682
6781
  timestamp?: string;
5683
6782
  }>;
5684
6783
  };
6784
+ params: Record<string, unknown>;
6785
+ query: Record<string, unknown>;
5685
6786
  response: {
5686
6787
  data?: {
5687
6788
  errors?: Array<{
@@ -5703,6 +6804,8 @@ interface getPartnerInfoOperation {
5703
6804
  readonly path: "/v1/partner/info";
5704
6805
  readonly method: "GET";
5705
6806
  request: never;
6807
+ params: Record<string, unknown>;
6808
+ query: Record<string, unknown>;
5706
6809
  response: {
5707
6810
  data?: Partner;
5708
6811
  success?: boolean;
@@ -5716,6 +6819,8 @@ interface listIntentCategoriesOperation {
5716
6819
  readonly path: "/v1/partner/intent/categories";
5717
6820
  readonly method: "GET";
5718
6821
  request: never;
6822
+ params: Record<string, unknown>;
6823
+ query: Record<string, unknown>;
5719
6824
  response: {
5720
6825
  count?: number;
5721
6826
  data?: Array<{
@@ -5739,6 +6844,10 @@ interface getIntentCategoryOperation {
5739
6844
  readonly path: "/v1/partner/intent/categories/{categoryId}";
5740
6845
  readonly method: "GET";
5741
6846
  request: never;
6847
+ params: {
6848
+ categoryId: string;
6849
+ };
6850
+ query: Record<string, unknown>;
5742
6851
  response: {
5743
6852
  description?: string;
5744
6853
  iab_segments?: Array<Record<string, unknown>>;
@@ -5759,6 +6868,10 @@ interface getIntentPricingOperation {
5759
6868
  readonly path: "/v1/partner/intent/pricing/{screenId}";
5760
6869
  readonly method: "GET";
5761
6870
  request: never;
6871
+ params: {
6872
+ screenId: string;
6873
+ };
6874
+ query: Record<string, unknown>;
5762
6875
  response: {
5763
6876
  category_match?: {
5764
6877
  category_id?: string;
@@ -5797,6 +6910,10 @@ interface getMeasurementMethodologyOperation {
5797
6910
  readonly path: "/v1/partner/measurement-methodology";
5798
6911
  readonly method: "GET";
5799
6912
  request: never;
6913
+ params: Record<string, unknown>;
6914
+ query: {
6915
+ format?: "json";
6916
+ };
5800
6917
  response: MeasurementMethodology;
5801
6918
  }
5802
6919
  /**
@@ -5807,6 +6924,8 @@ interface getMeasurementMethodologyJsonOperation {
5807
6924
  readonly path: "/v1/partner/measurement-methodology.json";
5808
6925
  readonly method: "GET";
5809
6926
  request: never;
6927
+ params: Record<string, unknown>;
6928
+ query: Record<string, unknown>;
5810
6929
  response: MeasurementMethodology;
5811
6930
  }
5812
6931
  /**
@@ -5817,6 +6936,8 @@ interface getNetworkConfigOperation {
5817
6936
  readonly path: "/v1/partner/network-config";
5818
6937
  readonly method: "GET";
5819
6938
  request: never;
6939
+ params: Record<string, unknown>;
6940
+ query: Record<string, unknown>;
5820
6941
  response: {
5821
6942
  network_config?: PartnerNetworkConfig;
5822
6943
  object?: string;
@@ -5831,6 +6952,8 @@ interface patchNetworkConfigOperation {
5831
6952
  readonly path: "/v1/partner/network-config";
5832
6953
  readonly method: "PATCH";
5833
6954
  request: PartnerNetworkConfigUpdate;
6955
+ params: Record<string, unknown>;
6956
+ query: Record<string, unknown>;
5834
6957
  response: {
5835
6958
  network_config?: PartnerNetworkConfig;
5836
6959
  object?: string;
@@ -5845,6 +6968,8 @@ interface updateNetworkConfigOperation {
5845
6968
  readonly path: "/v1/partner/network-config";
5846
6969
  readonly method: "PUT";
5847
6970
  request: PartnerNetworkConfigUpdate;
6971
+ params: Record<string, unknown>;
6972
+ query: Record<string, unknown>;
5848
6973
  response: {
5849
6974
  network_config?: PartnerNetworkConfig;
5850
6975
  object?: string;
@@ -5859,6 +6984,10 @@ interface getNetworkTrendsOperation {
5859
6984
  readonly path: "/v1/partner/network/trends";
5860
6985
  readonly method: "GET";
5861
6986
  request: never;
6987
+ params: Record<string, unknown>;
6988
+ query: {
6989
+ days?: number;
6990
+ };
5862
6991
  response: {
5863
6992
  audience_shift?: Array<Record<string, unknown>>;
5864
6993
  days?: number;
@@ -5873,6 +7002,8 @@ interface partnerPingOperation {
5873
7002
  readonly path: "/v1/partner/ping";
5874
7003
  readonly method: "GET";
5875
7004
  request: never;
7005
+ params: Record<string, unknown>;
7006
+ query: Record<string, unknown>;
5876
7007
  response: {
5877
7008
  ok?: boolean;
5878
7009
  service?: string;
@@ -5886,6 +7017,8 @@ interface partnerPingAuthOperation {
5886
7017
  readonly path: "/v1/partner/ping/auth";
5887
7018
  readonly method: "GET";
5888
7019
  request: never;
7020
+ params: Record<string, unknown>;
7021
+ query: Record<string, unknown>;
5889
7022
  response: {
5890
7023
  ok?: boolean;
5891
7024
  partner_id?: string;
@@ -5900,6 +7033,8 @@ interface recordPartnerPlayOperation {
5900
7033
  readonly path: "/v1/partner/plays";
5901
7034
  readonly method: "POST";
5902
7035
  request: PartnerPlay;
7036
+ params: Record<string, unknown>;
7037
+ query: Record<string, unknown>;
5903
7038
  response: {
5904
7039
  content_sha256?: string;
5905
7040
  object?: string;
@@ -5917,6 +7052,8 @@ interface recordPartnerPlaysBatchOperation {
5917
7052
  request: {
5918
7053
  plays: Array<PartnerPlay>;
5919
7054
  };
7055
+ params: Record<string, unknown>;
7056
+ query: Record<string, unknown>;
5920
7057
  response: {
5921
7058
  accepted?: number;
5922
7059
  duplicate?: number;
@@ -5937,6 +7074,8 @@ interface getPricingOperation {
5937
7074
  readonly path: "/v1/partner/pricing";
5938
7075
  readonly method: "GET";
5939
7076
  request: never;
7077
+ params: Record<string, unknown>;
7078
+ query: Record<string, unknown>;
5940
7079
  response: {
5941
7080
  agent_register_url?: string;
5942
7081
  billing_setup_url?: string;
@@ -6040,6 +7179,8 @@ interface recordProgrammaticEventLegacyAliasOperation {
6040
7179
  type?: "ad_started" | "ad_ended" | "no_fill" | "error";
6041
7180
  variant_name?: string;
6042
7181
  };
7182
+ params: Record<string, unknown>;
7183
+ query: Record<string, unknown>;
6043
7184
  response: {
6044
7185
  success?: boolean;
6045
7186
  };
@@ -6064,6 +7205,8 @@ interface quickStartOperation {
6064
7205
  /** Optional legacy classification. Omit for the default self-serve Partner API key. */
6065
7206
  partner_type?: string;
6066
7207
  };
7208
+ params: Record<string, unknown>;
7209
+ query: Record<string, unknown>;
6067
7210
  response: {
6068
7211
  data?: {
6069
7212
  credentials?: {
@@ -6131,6 +7274,8 @@ interface registerPartnerOperation {
6131
7274
  /** URL-safe identifier (lowercase, no spaces) */
6132
7275
  slug: string;
6133
7276
  };
7277
+ params: Record<string, unknown>;
7278
+ query: Record<string, unknown>;
6134
7279
  response: {
6135
7280
  data?: {
6136
7281
  /** Store this securely - only shown once. This ONE self-serve Partner API key authenticates the general Partner API surface in this spec AND the CTV Measurement SDK ingestion surface (`/v2/sdk/*`, `/v2/csi`) — it carries `sdk:*` and `mcp:tools` by default, so no separate CTV or MCP key is issued. Reuse it during OpenRTB onboarding to add buyer capabilities. */
@@ -6170,6 +7315,8 @@ interface generateSandboxEventOperation {
6170
7315
  /** Target sandbox screen (auto-selects first if omitted) */
6171
7316
  screen_id?: string;
6172
7317
  };
7318
+ params: Record<string, unknown>;
7319
+ query: Record<string, unknown>;
6173
7320
  response: {
6174
7321
  /** Event payload (varies by event type) */
6175
7322
  data?: Record<string, unknown>;
@@ -6191,6 +7338,8 @@ interface resetSandboxOperation {
6191
7338
  readonly path: "/v1/partner/sandbox/reset";
6192
7339
  readonly method: "POST";
6193
7340
  request: never;
7341
+ params: Record<string, unknown>;
7342
+ query: Record<string, unknown>;
6194
7343
  response: {
6195
7344
  events_cleared?: number;
6196
7345
  object?: string;
@@ -6212,6 +7361,8 @@ interface createSandboxScreenOperation {
6212
7361
  /** Override venue type */
6213
7362
  venue_type?: string;
6214
7363
  };
7364
+ params: Record<string, unknown>;
7365
+ query: Record<string, unknown>;
6215
7366
  response: {
6216
7367
  audience?: {
6217
7368
  avg_dwell_time_sec?: number;
@@ -6248,6 +7399,8 @@ interface getSandboxStatusOperation {
6248
7399
  readonly path: "/v1/partner/sandbox/status";
6249
7400
  readonly method: "GET";
6250
7401
  request: never;
7402
+ params: Record<string, unknown>;
7403
+ query: Record<string, unknown>;
6251
7404
  response: {
6252
7405
  last_activity?: string | null;
6253
7406
  object?: string;
@@ -6276,6 +7429,11 @@ interface listScreenGroupsOperation {
6276
7429
  readonly path: "/v1/partner/screen-groups";
6277
7430
  readonly method: "GET";
6278
7431
  request: never;
7432
+ params: Record<string, unknown>;
7433
+ query: {
7434
+ limit?: number;
7435
+ offset?: number;
7436
+ };
6279
7437
  response: {
6280
7438
  data?: {
6281
7439
  has_more?: boolean;
@@ -6297,6 +7455,8 @@ interface createScreenGroupOperation {
6297
7455
  name: string;
6298
7456
  screen_ids?: Array<string>;
6299
7457
  };
7458
+ params: Record<string, unknown>;
7459
+ query: Record<string, unknown>;
6300
7460
  response: {
6301
7461
  data?: {
6302
7462
  screen_group?: ScreenGroup;
@@ -6312,6 +7472,10 @@ interface deleteScreenGroupOperation {
6312
7472
  readonly path: "/v1/partner/screen-groups/{groupId}";
6313
7473
  readonly method: "DELETE";
6314
7474
  request: never;
7475
+ params: {
7476
+ groupId: string;
7477
+ };
7478
+ query: Record<string, unknown>;
6315
7479
  response: {
6316
7480
  data?: {
6317
7481
  deleted?: boolean;
@@ -6329,6 +7493,10 @@ interface getScreenGroupOperation {
6329
7493
  readonly path: "/v1/partner/screen-groups/{groupId}";
6330
7494
  readonly method: "GET";
6331
7495
  request: never;
7496
+ params: {
7497
+ groupId: string;
7498
+ };
7499
+ query: Record<string, unknown>;
6332
7500
  response: {
6333
7501
  data?: {
6334
7502
  screen_group?: ScreenGroup;
@@ -6347,6 +7515,10 @@ interface updateScreenGroupOperation {
6347
7515
  description?: string;
6348
7516
  name?: string;
6349
7517
  };
7518
+ params: {
7519
+ groupId: string;
7520
+ };
7521
+ query: Record<string, unknown>;
6350
7522
  response: {
6351
7523
  data?: {
6352
7524
  screen_group?: ScreenGroup;
@@ -6362,6 +7534,10 @@ interface getScreenGroupAnalyticsOperation {
6362
7534
  readonly path: "/v1/partner/screen-groups/{groupId}/analytics";
6363
7535
  readonly method: "GET";
6364
7536
  request: never;
7537
+ params: {
7538
+ groupId: string;
7539
+ };
7540
+ query: Record<string, unknown>;
6365
7541
  response: {
6366
7542
  /** Fleet analytics scoped to the group's live member screens — the same payload as GET /fleet/analytics (which also returns an average attention score alongside the fields below). */
6367
7543
  data?: {
@@ -6388,6 +7564,10 @@ interface createScreenGroupCommandOperation {
6388
7564
  type: "reload" | "update_settings" | "restart" | "screenshot" | "clear_cache" | "update_content" | "refresh_ads" | "update_config" | "get_state" | "show_ad" | "play_ad";
6389
7565
  };
6390
7566
  };
7567
+ params: {
7568
+ groupId: string;
7569
+ };
7570
+ query: Record<string, unknown>;
6391
7571
  response: {
6392
7572
  data?: {
6393
7573
  fleet_command?: FleetCommand;
@@ -6403,6 +7583,10 @@ interface getScreenGroupContentPolicyOperation {
6403
7583
  readonly path: "/v1/partner/screen-groups/{groupId}/content-policy";
6404
7584
  readonly method: "GET";
6405
7585
  request: never;
7586
+ params: {
7587
+ groupId: string;
7588
+ };
7589
+ query: Record<string, unknown>;
6406
7590
  response: {
6407
7591
  data?: {
6408
7592
  content_policy?: ScreenGroupContentPolicy;
@@ -6418,6 +7602,10 @@ interface updateScreenGroupContentPolicyOperation {
6418
7602
  readonly path: "/v1/partner/screen-groups/{groupId}/content-policy";
6419
7603
  readonly method: "PUT";
6420
7604
  request: ScreenGroupContentPolicyInput;
7605
+ params: {
7606
+ groupId: string;
7607
+ };
7608
+ query: Record<string, unknown>;
6421
7609
  response: {
6422
7610
  data?: {
6423
7611
  content_policy?: ScreenGroupContentPolicy;
@@ -6435,6 +7623,10 @@ interface removeScreenGroupMembersOperation {
6435
7623
  request: {
6436
7624
  screen_ids: Array<string>;
6437
7625
  };
7626
+ params: {
7627
+ groupId: string;
7628
+ };
7629
+ query: Record<string, unknown>;
6438
7630
  response: {
6439
7631
  data?: {
6440
7632
  removed?: number;
@@ -6450,6 +7642,13 @@ interface listScreenGroupMembersOperation {
6450
7642
  readonly path: "/v1/partner/screen-groups/{groupId}/members";
6451
7643
  readonly method: "GET";
6452
7644
  request: never;
7645
+ params: {
7646
+ groupId: string;
7647
+ };
7648
+ query: {
7649
+ limit?: number;
7650
+ offset?: number;
7651
+ };
6453
7652
  response: {
6454
7653
  data?: {
6455
7654
  data?: Array<{
@@ -6472,6 +7671,10 @@ interface addScreenGroupMembersOperation {
6472
7671
  request: {
6473
7672
  screen_ids: Array<string>;
6474
7673
  };
7674
+ params: {
7675
+ groupId: string;
7676
+ };
7677
+ query: Record<string, unknown>;
6475
7678
  response: {
6476
7679
  data?: {
6477
7680
  added?: number;
@@ -6491,6 +7694,10 @@ interface getScreenGroupSensingConfigOperation {
6491
7694
  readonly path: "/v1/partner/screen-groups/{groupId}/sensing-config";
6492
7695
  readonly method: "GET";
6493
7696
  request: never;
7697
+ params: {
7698
+ groupId: string;
7699
+ };
7700
+ query: Record<string, unknown>;
6494
7701
  response: {
6495
7702
  data?: {
6496
7703
  sensing_config?: ScreenGroupSensingConfig;
@@ -6506,6 +7713,10 @@ interface updateScreenGroupSensingConfigOperation {
6506
7713
  readonly path: "/v1/partner/screen-groups/{groupId}/sensing-config";
6507
7714
  readonly method: "PUT";
6508
7715
  request: ScreenGroupSensingConfigInput;
7716
+ params: {
7717
+ groupId: string;
7718
+ };
7719
+ query: Record<string, unknown>;
6509
7720
  response: {
6510
7721
  data?: {
6511
7722
  sensing_config?: ScreenGroupSensingConfig;
@@ -6521,6 +7732,10 @@ interface getScreenAudienceSegmentsOperation {
6521
7732
  readonly path: "/v1/partner/screen/{external_code}/audience-segments";
6522
7733
  readonly method: "GET";
6523
7734
  request: never;
7735
+ params: {
7736
+ external_code: string;
7737
+ };
7738
+ query: Record<string, unknown>;
6524
7739
  response: {
6525
7740
  external_code?: string;
6526
7741
  segtax_4?: Array<{
@@ -6547,6 +7762,8 @@ interface batchUpdateContentPreferencesOperation {
6547
7762
  /** Array of screen IDs to update */
6548
7763
  screen_ids: Array<string>;
6549
7764
  };
7765
+ params: Record<string, unknown>;
7766
+ query: Record<string, unknown>;
6550
7767
  response: BatchResult;
6551
7768
  }
6552
7769
  /**
@@ -6560,6 +7777,8 @@ interface batchUpdateDisplaySettingsOperation {
6560
7777
  screen_ids: Array<string>;
6561
7778
  settings: DisplaySettingsInput;
6562
7779
  };
7780
+ params: Record<string, unknown>;
7781
+ query: Record<string, unknown>;
6563
7782
  response: BatchResult;
6564
7783
  }
6565
7784
  /**
@@ -6573,6 +7792,8 @@ interface batchUpdateProgrammaticSettingsOperation {
6573
7792
  screen_ids: Array<string>;
6574
7793
  settings: ProgrammaticSettingsInput;
6575
7794
  };
7795
+ params: Record<string, unknown>;
7796
+ query: Record<string, unknown>;
6576
7797
  response: BatchResult;
6577
7798
  }
6578
7799
  /**
@@ -6583,6 +7804,12 @@ interface resolvePartnerScreenOperation {
6583
7804
  readonly path: "/v1/partner/screens/resolve";
6584
7805
  readonly method: "GET";
6585
7806
  request: never;
7807
+ params: Record<string, unknown>;
7808
+ query: {
7809
+ device_id?: string;
7810
+ external_device_id?: string;
7811
+ fingerprint?: string;
7812
+ };
6586
7813
  response: {
6587
7814
  data?: {
6588
7815
  device_id?: string;
@@ -6601,6 +7828,12 @@ interface getScreenAnalyticsOperation {
6601
7828
  readonly path: "/v1/partner/screens/{screenId}/analytics";
6602
7829
  readonly method: "GET";
6603
7830
  request: never;
7831
+ params: {
7832
+ screenId: string;
7833
+ };
7834
+ query: {
7835
+ period?: "7d" | "30d" | "90d";
7836
+ };
6604
7837
  response: {
6605
7838
  data?: ScreenAnalyticsResponse;
6606
7839
  success?: boolean;
@@ -6614,6 +7847,10 @@ interface getPartnerScreenAtmosphereOperation {
6614
7847
  readonly path: "/v1/partner/screens/{screenId}/analytics/atmosphere";
6615
7848
  readonly method: "GET";
6616
7849
  request: never;
7850
+ params: {
7851
+ screenId: string;
7852
+ };
7853
+ query: Record<string, unknown>;
6617
7854
  response: {
6618
7855
  data?: {
6619
7856
  crowdDensity?: string | null;
@@ -6635,6 +7872,14 @@ interface getPartnerScreenIntelligenceOperation {
6635
7872
  readonly path: "/v1/partner/screens/{screenId}/analytics/intelligence";
6636
7873
  readonly method: "GET";
6637
7874
  request: never;
7875
+ params: {
7876
+ screenId: string;
7877
+ };
7878
+ query: {
7879
+ from: string;
7880
+ interval?: "5min" | "15min" | "1h" | "1d";
7881
+ to: string;
7882
+ };
6638
7883
  response: {
6639
7884
  data?: {
6640
7885
  dedup?: {
@@ -6665,6 +7910,10 @@ interface getPartnerScreenTasteProfileOperation {
6665
7910
  readonly path: "/v1/partner/screens/{screenId}/analytics/taste-profile";
6666
7911
  readonly method: "GET";
6667
7912
  request: never;
7913
+ params: {
7914
+ screenId: string;
7915
+ };
7916
+ query: Record<string, unknown>;
6668
7917
  response: {
6669
7918
  data?: {
6670
7919
  computedAt?: string | null;
@@ -6690,6 +7939,12 @@ interface getPartnerScreenTrafficOperation {
6690
7939
  readonly path: "/v1/partner/screens/{screenId}/analytics/traffic";
6691
7940
  readonly method: "GET";
6692
7941
  request: never;
7942
+ params: {
7943
+ screenId: string;
7944
+ };
7945
+ query: {
7946
+ days?: number;
7947
+ };
6693
7948
  response: {
6694
7949
  data?: {
6695
7950
  busyScore?: number;
@@ -6707,6 +7962,10 @@ interface getPartnerScreenVASOperation {
6707
7962
  readonly path: "/v1/partner/screens/{screenId}/analytics/vas";
6708
7963
  readonly method: "GET";
6709
7964
  request: never;
7965
+ params: {
7966
+ screenId: string;
7967
+ };
7968
+ query: Record<string, unknown>;
6710
7969
  response: {
6711
7970
  data?: {
6712
7971
  avgAttentionScore?: number;
@@ -6733,6 +7992,10 @@ interface applyContentPresetOperation {
6733
7992
  /** ID of the preset to apply */
6734
7993
  preset_id: string;
6735
7994
  };
7995
+ params: {
7996
+ screenId: string;
7997
+ };
7998
+ query: Record<string, unknown>;
6736
7999
  response: ContentPreferencesResponse & {
6737
8000
  preset_applied?: string;
6738
8001
  };
@@ -6745,6 +8008,13 @@ interface getAudienceMetricsOperation {
6745
8008
  readonly path: "/v1/partner/screens/{screenId}/audience-metrics";
6746
8009
  readonly method: "GET";
6747
8010
  request: never;
8011
+ params: {
8012
+ screenId: string;
8013
+ };
8014
+ query: {
8015
+ include_history?: boolean;
8016
+ period?: "1h" | "6h" | "24h";
8017
+ };
6748
8018
  response: AudienceMetricsResponse;
6749
8019
  }
6750
8020
  /**
@@ -6755,6 +8025,10 @@ interface getContentPreferencesOperation {
6755
8025
  readonly path: "/v1/partner/screens/{screenId}/content-preferences";
6756
8026
  readonly method: "GET";
6757
8027
  request: never;
8028
+ params: {
8029
+ screenId: string;
8030
+ };
8031
+ query: Record<string, unknown>;
6758
8032
  response: ContentPreferencesResponse;
6759
8033
  }
6760
8034
  /**
@@ -6765,6 +8039,10 @@ interface patchContentPreferencesOperation {
6765
8039
  readonly path: "/v1/partner/screens/{screenId}/content-preferences";
6766
8040
  readonly method: "PATCH";
6767
8041
  request: ContentPreferencesInput;
8042
+ params: {
8043
+ screenId: string;
8044
+ };
8045
+ query: Record<string, unknown>;
6768
8046
  response: ContentPreferencesResponse;
6769
8047
  }
6770
8048
  /**
@@ -6775,6 +8053,10 @@ interface updateContentPreferencesOperation {
6775
8053
  readonly path: "/v1/partner/screens/{screenId}/content-preferences";
6776
8054
  readonly method: "PUT";
6777
8055
  request: ContentPreferencesInput;
8056
+ params: {
8057
+ screenId: string;
8058
+ };
8059
+ query: Record<string, unknown>;
6778
8060
  response: ContentPreferencesResponse;
6779
8061
  }
6780
8062
  /**
@@ -6785,6 +8067,10 @@ interface listPartnerDefaultStreamsOperation {
6785
8067
  readonly path: "/v1/partner/screens/{screenId}/default-streams";
6786
8068
  readonly method: "GET";
6787
8069
  request: never;
8070
+ params: {
8071
+ screenId: string;
8072
+ };
8073
+ query: Record<string, unknown>;
6788
8074
  response: {
6789
8075
  data?: {
6790
8076
  current?: PartnerDefaultStream;
@@ -6801,6 +8087,10 @@ interface createPartnerDefaultStreamOperation {
6801
8087
  readonly path: "/v1/partner/screens/{screenId}/default-streams";
6802
8088
  readonly method: "POST";
6803
8089
  request: PartnerDefaultStreamCreate;
8090
+ params: {
8091
+ screenId: string;
8092
+ };
8093
+ query: Record<string, unknown>;
6804
8094
  response: {
6805
8095
  data?: PartnerDefaultStream;
6806
8096
  success?: boolean;
@@ -6814,6 +8104,10 @@ interface createPartnerDefaultStreamImagesOperation {
6814
8104
  readonly path: "/v1/partner/screens/{screenId}/default-streams/images";
6815
8105
  readonly method: "POST";
6816
8106
  request: never;
8107
+ params: {
8108
+ screenId: string;
8109
+ };
8110
+ query: Record<string, unknown>;
6817
8111
  response: {
6818
8112
  data?: PartnerDefaultStream;
6819
8113
  success?: boolean;
@@ -6829,6 +8123,10 @@ interface reorderPartnerDefaultStreamsOperation {
6829
8123
  request: {
6830
8124
  order: Array<string>;
6831
8125
  };
8126
+ params: {
8127
+ screenId: string;
8128
+ };
8129
+ query: Record<string, unknown>;
6832
8130
  response: {
6833
8131
  success?: boolean;
6834
8132
  };
@@ -6841,6 +8139,10 @@ interface createPartnerDefaultStreamUploadOperation {
6841
8139
  readonly path: "/v1/partner/screens/{screenId}/default-streams/upload";
6842
8140
  readonly method: "POST";
6843
8141
  request: never;
8142
+ params: {
8143
+ screenId: string;
8144
+ };
8145
+ query: Record<string, unknown>;
6844
8146
  response: {
6845
8147
  data?: PartnerDefaultStream;
6846
8148
  success?: boolean;
@@ -6854,6 +8156,11 @@ interface deletePartnerDefaultStreamOperation {
6854
8156
  readonly path: "/v1/partner/screens/{screenId}/default-streams/{streamId}";
6855
8157
  readonly method: "DELETE";
6856
8158
  request: never;
8159
+ params: {
8160
+ screenId: string;
8161
+ streamId: string;
8162
+ };
8163
+ query: Record<string, unknown>;
6857
8164
  response: {
6858
8165
  success?: boolean;
6859
8166
  };
@@ -6866,6 +8173,11 @@ interface updatePartnerDefaultStreamOperation {
6866
8173
  readonly path: "/v1/partner/screens/{screenId}/default-streams/{streamId}";
6867
8174
  readonly method: "PUT";
6868
8175
  request: PartnerDefaultStreamUpdate;
8176
+ params: {
8177
+ screenId: string;
8178
+ streamId: string;
8179
+ };
8180
+ query: Record<string, unknown>;
6869
8181
  response: {
6870
8182
  data?: PartnerDefaultStream;
6871
8183
  success?: boolean;
@@ -6879,6 +8191,12 @@ interface getScreenDemographicsOperation {
6879
8191
  readonly path: "/v1/partner/screens/{screenId}/demographics";
6880
8192
  readonly method: "GET";
6881
8193
  request: never;
8194
+ params: {
8195
+ screenId: string;
8196
+ };
8197
+ query: {
8198
+ period?: "24h" | "7d" | "30d";
8199
+ };
6882
8200
  response: DemographicsResponse;
6883
8201
  }
6884
8202
  /**
@@ -6889,6 +8207,10 @@ interface getDisplaySettingsOperation {
6889
8207
  readonly path: "/v1/partner/screens/{screenId}/display-settings";
6890
8208
  readonly method: "GET";
6891
8209
  request: never;
8210
+ params: {
8211
+ screenId: string;
8212
+ };
8213
+ query: Record<string, unknown>;
6892
8214
  response: DisplaySettingsResponse;
6893
8215
  }
6894
8216
  /**
@@ -6899,6 +8221,10 @@ interface patchDisplaySettingsOperation {
6899
8221
  readonly path: "/v1/partner/screens/{screenId}/display-settings";
6900
8222
  readonly method: "PATCH";
6901
8223
  request: DisplaySettingsInput;
8224
+ params: {
8225
+ screenId: string;
8226
+ };
8227
+ query: Record<string, unknown>;
6902
8228
  response: DisplaySettingsResponse;
6903
8229
  }
6904
8230
  /**
@@ -6909,6 +8235,10 @@ interface updateDisplaySettingsOperation {
6909
8235
  readonly path: "/v1/partner/screens/{screenId}/display-settings";
6910
8236
  readonly method: "PUT";
6911
8237
  request: DisplaySettingsInput;
8238
+ params: {
8239
+ screenId: string;
8240
+ };
8241
+ query: Record<string, unknown>;
6912
8242
  response: DisplaySettingsResponse;
6913
8243
  }
6914
8244
  /**
@@ -6919,6 +8249,10 @@ interface getPartnerLBarSettingsOperation {
6919
8249
  readonly path: "/v1/partner/screens/{screenId}/l-bar";
6920
8250
  readonly method: "GET";
6921
8251
  request: never;
8252
+ params: {
8253
+ screenId: string;
8254
+ };
8255
+ query: Record<string, unknown>;
6922
8256
  response: {
6923
8257
  data?: PartnerLBarSettings;
6924
8258
  success?: boolean;
@@ -6935,6 +8269,10 @@ interface updatePartnerLBarSettingsOperation {
6935
8269
  display_preferences?: PartnerLBarDisplayPreferences;
6936
8270
  l_bar_content?: PartnerLBarContent;
6937
8271
  };
8272
+ params: {
8273
+ screenId: string;
8274
+ };
8275
+ query: Record<string, unknown>;
6938
8276
  response: {
6939
8277
  data?: PartnerLBarSettings;
6940
8278
  success?: boolean;
@@ -6953,6 +8291,10 @@ interface updatePartnerLBarLiveUpdatesOperation {
6953
8291
  queue_number?: string;
6954
8292
  wait_time_minutes?: number;
6955
8293
  };
8294
+ params: {
8295
+ screenId: string;
8296
+ };
8297
+ query: Record<string, unknown>;
6956
8298
  response: {
6957
8299
  success?: boolean;
6958
8300
  };
@@ -6965,6 +8307,10 @@ interface getProgrammaticSettingsOperation {
6965
8307
  readonly path: "/v1/partner/screens/{screenId}/programmatic-settings";
6966
8308
  readonly method: "GET";
6967
8309
  request: never;
8310
+ params: {
8311
+ screenId: string;
8312
+ };
8313
+ query: Record<string, unknown>;
6968
8314
  response: ProgrammaticSettingsResponse;
6969
8315
  }
6970
8316
  /**
@@ -6975,6 +8321,10 @@ interface patchProgrammaticSettingsOperation {
6975
8321
  readonly path: "/v1/partner/screens/{screenId}/programmatic-settings";
6976
8322
  readonly method: "PATCH";
6977
8323
  request: ProgrammaticSettingsInput;
8324
+ params: {
8325
+ screenId: string;
8326
+ };
8327
+ query: Record<string, unknown>;
6978
8328
  response: ProgrammaticSettingsResponse;
6979
8329
  }
6980
8330
  /**
@@ -6985,6 +8335,10 @@ interface updateProgrammaticSettingsOperation {
6985
8335
  readonly path: "/v1/partner/screens/{screenId}/programmatic-settings";
6986
8336
  readonly method: "PUT";
6987
8337
  request: ProgrammaticSettingsInput;
8338
+ params: {
8339
+ screenId: string;
8340
+ };
8341
+ query: Record<string, unknown>;
6988
8342
  response: ProgrammaticSettingsResponse;
6989
8343
  }
6990
8344
  /**
@@ -6995,6 +8349,10 @@ interface getResolvedContentPolicyOperation {
6995
8349
  readonly path: "/v1/partner/screens/{screenId}/resolved-content-policy";
6996
8350
  readonly method: "GET";
6997
8351
  request: never;
8352
+ params: {
8353
+ screenId: string;
8354
+ };
8355
+ query: Record<string, unknown>;
6998
8356
  response: {
6999
8357
  data?: ResolvedContentPolicy;
7000
8358
  success?: boolean;
@@ -7008,6 +8366,10 @@ interface getResolvedSensingConfigOperation {
7008
8366
  readonly path: "/v1/partner/screens/{screenId}/resolved-sensing-config";
7009
8367
  readonly method: "GET";
7010
8368
  request: never;
8369
+ params: {
8370
+ screenId: string;
8371
+ };
8372
+ query: Record<string, unknown>;
7011
8373
  response: {
7012
8374
  data?: ResolvedSensingConfig;
7013
8375
  success?: boolean;
@@ -7021,6 +8383,14 @@ interface getScreenSensingChipsOperation {
7021
8383
  readonly path: "/v1/partner/screens/{screenId}/sensing/chips";
7022
8384
  readonly method: "GET";
7023
8385
  request: never;
8386
+ params: {
8387
+ screenId: string;
8388
+ };
8389
+ query: {
8390
+ days?: number;
8391
+ limit?: number;
8392
+ offset?: number;
8393
+ };
7024
8394
  response: {
7025
8395
  data?: {
7026
8396
  /** The custom field_keys this screen senses (from its active profile) */
@@ -7051,6 +8421,10 @@ interface interpretScreenSensingIntentOperation {
7051
8421
  /** Natural-language description of what to sense */
7052
8422
  intent: string;
7053
8423
  };
8424
+ params: {
8425
+ screenId: string;
8426
+ };
8427
+ query: Record<string, unknown>;
7054
8428
  response: {
7055
8429
  data?: {
7056
8430
  /** The generated profile — pass to /sensing/profile to deploy */
@@ -7071,6 +8445,10 @@ interface deployScreenSensingProfileOperation {
7071
8445
  /** The sensing profile object returned by interpret-intent */
7072
8446
  profile: Record<string, unknown>;
7073
8447
  };
8448
+ params: {
8449
+ screenId: string;
8450
+ };
8451
+ query: Record<string, unknown>;
7074
8452
  response: {
7075
8453
  data?: {
7076
8454
  command?: Record<string, unknown>;
@@ -7087,6 +8465,10 @@ interface getScreenSensingSettingsOperation {
7087
8465
  readonly path: "/v1/partner/screens/{screenId}/sensing/settings";
7088
8466
  readonly method: "GET";
7089
8467
  request: never;
8468
+ params: {
8469
+ screenId: string;
8470
+ };
8471
+ query: Record<string, unknown>;
7090
8472
  response: {
7091
8473
  data?: SensingSettingsResponse;
7092
8474
  success?: boolean;
@@ -7102,6 +8484,10 @@ interface updateScreenSensingSettingsOperation {
7102
8484
  request: {
7103
8485
  performance_mode: SensingPerformanceMode;
7104
8486
  };
8487
+ params: {
8488
+ screenId: string;
8489
+ };
8490
+ query: Record<string, unknown>;
7105
8491
  response: {
7106
8492
  data?: {
7107
8493
  command?: Record<string, unknown>;
@@ -7119,6 +8505,10 @@ interface listPartnerSensingRoutesOperation {
7119
8505
  readonly path: "/v1/partner/sensing/routes";
7120
8506
  readonly method: "GET";
7121
8507
  request: never;
8508
+ params: Record<string, unknown>;
8509
+ query: {
8510
+ includeDisabled?: boolean;
8511
+ };
7122
8512
  response: {
7123
8513
  data?: {
7124
8514
  routes?: Array<SensingRoute>;
@@ -7134,6 +8524,8 @@ interface createPartnerSensingRouteOperation {
7134
8524
  readonly path: "/v1/partner/sensing/routes";
7135
8525
  readonly method: "POST";
7136
8526
  request: CreatePartnerSensingRouteRequest;
8527
+ params: Record<string, unknown>;
8528
+ query: Record<string, unknown>;
7137
8529
  response: {
7138
8530
  data?: {
7139
8531
  route?: SensingRoute;
@@ -7149,6 +8541,10 @@ interface deletePartnerSensingRouteOperation {
7149
8541
  readonly path: "/v1/partner/sensing/routes/{routeId}";
7150
8542
  readonly method: "DELETE";
7151
8543
  request: never;
8544
+ params: {
8545
+ routeId: string;
8546
+ };
8547
+ query: Record<string, unknown>;
7152
8548
  response: {
7153
8549
  data?: {
7154
8550
  routeId?: string;
@@ -7164,6 +8560,10 @@ interface getPartnerSensingRouteOperation {
7164
8560
  readonly path: "/v1/partner/sensing/routes/{routeId}";
7165
8561
  readonly method: "GET";
7166
8562
  request: never;
8563
+ params: {
8564
+ routeId: string;
8565
+ };
8566
+ query: Record<string, unknown>;
7167
8567
  response: {
7168
8568
  data?: {
7169
8569
  route?: SensingRoute;
@@ -7179,6 +8579,10 @@ interface updatePartnerSensingRouteOperation {
7179
8579
  readonly path: "/v1/partner/sensing/routes/{routeId}";
7180
8580
  readonly method: "PATCH";
7181
8581
  request: UpdatePartnerSensingRouteRequest;
8582
+ params: {
8583
+ routeId: string;
8584
+ };
8585
+ query: Record<string, unknown>;
7182
8586
  response: {
7183
8587
  data?: {
7184
8588
  route?: SensingRoute;
@@ -7194,6 +8598,8 @@ interface createStripeConnectAccountOperation {
7194
8598
  readonly path: "/v1/partner/stripe/connect";
7195
8599
  readonly method: "POST";
7196
8600
  request: never;
8601
+ params: Record<string, unknown>;
8602
+ query: Record<string, unknown>;
7197
8603
  response: {
7198
8604
  data?: {
7199
8605
  account_id?: string;
@@ -7216,6 +8622,8 @@ interface getStripeLoginLinkOperation {
7216
8622
  readonly path: "/v1/partner/stripe/login-link";
7217
8623
  readonly method: "GET";
7218
8624
  request: never;
8625
+ params: Record<string, unknown>;
8626
+ query: Record<string, unknown>;
7219
8627
  response: {
7220
8628
  data?: {
7221
8629
  account_id?: string;
@@ -7233,6 +8641,8 @@ interface getStripeOnboardingLinkOperation {
7233
8641
  readonly path: "/v1/partner/stripe/onboarding-link";
7234
8642
  readonly method: "GET";
7235
8643
  request: never;
8644
+ params: Record<string, unknown>;
8645
+ query: Record<string, unknown>;
7236
8646
  response: {
7237
8647
  data?: {
7238
8648
  account_id?: string;
@@ -7258,6 +8668,8 @@ interface requestStripePayoutOperation {
7258
8668
  /** Deduplication key to prevent duplicate payouts */
7259
8669
  idempotency_key?: string;
7260
8670
  };
8671
+ params: Record<string, unknown>;
8672
+ query: Record<string, unknown>;
7261
8673
  response: {
7262
8674
  data?: {
7263
8675
  amount_cents?: number;
@@ -7282,6 +8694,10 @@ interface getStripePayoutHistoryOperation {
7282
8694
  readonly path: "/v1/partner/stripe/payouts";
7283
8695
  readonly method: "GET";
7284
8696
  request: never;
8697
+ params: Record<string, unknown>;
8698
+ query: {
8699
+ limit?: number;
8700
+ };
7285
8701
  response: {
7286
8702
  data?: {
7287
8703
  has_more?: boolean;
@@ -7306,6 +8722,8 @@ interface getStripeAccountStatusOperation {
7306
8722
  readonly path: "/v1/partner/stripe/status";
7307
8723
  readonly method: "GET";
7308
8724
  request: never;
8725
+ params: Record<string, unknown>;
8726
+ query: Record<string, unknown>;
7309
8727
  response: {
7310
8728
  data?: {
7311
8729
  account_id?: string | null;
@@ -7334,6 +8752,8 @@ interface handleStripeWebhookOperation {
7334
8752
  readonly path: "/v1/partner/stripe/webhook";
7335
8753
  readonly method: "POST";
7336
8754
  request: Record<string, unknown>;
8755
+ params: Record<string, unknown>;
8756
+ query: Record<string, unknown>;
7337
8757
  response: {
7338
8758
  event_type?: string;
7339
8759
  received?: boolean;
@@ -7347,6 +8767,10 @@ interface listTeamMembersOperation {
7347
8767
  readonly path: "/v1/partner/team";
7348
8768
  readonly method: "GET";
7349
8769
  request: never;
8770
+ params: Record<string, unknown>;
8771
+ query: {
8772
+ status?: "active" | "pending" | "all";
8773
+ };
7350
8774
  response: {
7351
8775
  data?: {
7352
8776
  members?: Array<TeamMember>;
@@ -7370,6 +8794,8 @@ interface acceptInvitationOperation {
7370
8794
  /** Invitation token from email link */
7371
8795
  token: string;
7372
8796
  };
8797
+ params: Record<string, unknown>;
8798
+ query: Record<string, unknown>;
7373
8799
  response: {
7374
8800
  data?: {
7375
8801
  partner?: {
@@ -7400,6 +8826,8 @@ interface inviteTeamMemberOperation {
7400
8826
  /** Role to assign to the team member */
7401
8827
  role?: "admin" | "viewer";
7402
8828
  };
8829
+ params: Record<string, unknown>;
8830
+ query: Record<string, unknown>;
7403
8831
  response: {
7404
8832
  data?: TeamInviteResponse;
7405
8833
  message?: string;
@@ -7414,6 +8842,10 @@ interface getInvitationByTokenOperation {
7414
8842
  readonly path: "/v1/partner/team/invite/{token}";
7415
8843
  readonly method: "GET";
7416
8844
  request: never;
8845
+ params: {
8846
+ token: string;
8847
+ };
8848
+ query: Record<string, unknown>;
7417
8849
  response: {
7418
8850
  data?: {
7419
8851
  email?: string;
@@ -7436,6 +8868,10 @@ interface resendInvitationOperation {
7436
8868
  readonly path: "/v1/partner/team/{membershipId}/resend";
7437
8869
  readonly method: "POST";
7438
8870
  request: never;
8871
+ params: {
8872
+ membershipId: string;
8873
+ };
8874
+ query: Record<string, unknown>;
7439
8875
  response: {
7440
8876
  data?: {
7441
8877
  email?: string;
@@ -7453,6 +8889,10 @@ interface removeTeamMemberOperation {
7453
8889
  readonly path: "/v1/partner/team/{userId}";
7454
8890
  readonly method: "DELETE";
7455
8891
  request: never;
8892
+ params: {
8893
+ userId: string;
8894
+ };
8895
+ query: Record<string, unknown>;
7456
8896
  response: {
7457
8897
  message?: string;
7458
8898
  success?: boolean;
@@ -7468,6 +8908,10 @@ interface changeTeamMemberRoleOperation {
7468
8908
  request: {
7469
8909
  role: "admin" | "viewer";
7470
8910
  };
8911
+ params: {
8912
+ userId: string;
8913
+ };
8914
+ query: Record<string, unknown>;
7471
8915
  response: {
7472
8916
  data?: {
7473
8917
  new_role?: string;
@@ -7487,6 +8931,8 @@ interface getTrackingPublicKeyOperation {
7487
8931
  readonly path: "/v1/partner/tracking/.well-known/public-key";
7488
8932
  readonly method: "GET";
7489
8933
  request: never;
8934
+ params: Record<string, unknown>;
8935
+ query: Record<string, unknown>;
7490
8936
  response: {
7491
8937
  data?: {
7492
8938
  /** Signature algorithm (ed25519 for public key, sha256 for HMAC fallback) */
@@ -7534,6 +8980,8 @@ interface recordTrackingBatchOperation {
7534
8980
  timestamp?: string;
7535
8981
  }>;
7536
8982
  };
8983
+ params: Record<string, unknown>;
8984
+ query: Record<string, unknown>;
7537
8985
  response: {
7538
8986
  data?: {
7539
8987
  /** Number of duplicate impressions skipped */
@@ -7568,6 +9016,11 @@ interface getUsageSummaryOperation {
7568
9016
  readonly path: "/v1/partner/usage";
7569
9017
  readonly method: "GET";
7570
9018
  request: never;
9019
+ params: Record<string, unknown>;
9020
+ query: {
9021
+ end_date?: string;
9022
+ start_date?: string;
9023
+ };
7571
9024
  response: {
7572
9025
  /** Average response time in milliseconds */
7573
9026
  avgResponseTime?: number;
@@ -7602,6 +9055,8 @@ interface getUsageDashboardOperation {
7602
9055
  readonly path: "/v1/partner/usage/dashboard";
7603
9056
  readonly method: "GET";
7604
9057
  request: never;
9058
+ params: Record<string, unknown>;
9059
+ query: Record<string, unknown>;
7605
9060
  response: {
7606
9061
  last_7_days?: {
7607
9062
  avg_response_ms?: number;
@@ -7646,6 +9101,8 @@ interface getRateLimitStatusOperation {
7646
9101
  readonly path: "/v1/partner/usage/rate-limit";
7647
9102
  readonly method: "GET";
7648
9103
  request: never;
9104
+ params: Record<string, unknown>;
9105
+ query: Record<string, unknown>;
7649
9106
  response: {
7650
9107
  current_rate?: number;
7651
9108
  max_rate?: number;
@@ -7664,6 +9121,11 @@ interface getVastConfigOperation {
7664
9121
  readonly path: "/v1/partner/vast/config";
7665
9122
  readonly method: "GET";
7666
9123
  request: never;
9124
+ params: Record<string, unknown>;
9125
+ query: {
9126
+ device_id?: string;
9127
+ screen_id?: string;
9128
+ };
7667
9129
  response: {
7668
9130
  data?: {
7669
9131
  /** Google Ad Manager ad unit path */
@@ -7708,6 +9170,12 @@ interface getVenuesNearbyOperation {
7708
9170
  readonly path: "/v1/partner/venues/nearby";
7709
9171
  readonly method: "GET";
7710
9172
  request: never;
9173
+ params: Record<string, unknown>;
9174
+ query: {
9175
+ lat: number;
9176
+ lng: number;
9177
+ radius_km?: number;
9178
+ };
7711
9179
  response: {
7712
9180
  count?: number;
7713
9181
  venues?: Array<{
@@ -7725,6 +9193,12 @@ interface getVenueAtmosphereOperation {
7725
9193
  readonly path: "/v1/partner/venues/{screenId}/atmosphere";
7726
9194
  readonly method: "GET";
7727
9195
  request: never;
9196
+ params: {
9197
+ screenId: string;
9198
+ };
9199
+ query: {
9200
+ days?: number;
9201
+ };
7728
9202
  response: {
7729
9203
  days?: number;
7730
9204
  dominant_ambience?: string;
@@ -7742,6 +9216,12 @@ interface getVenueTrafficOperation {
7742
9216
  readonly path: "/v1/partner/venues/{screenId}/traffic";
7743
9217
  readonly method: "GET";
7744
9218
  request: never;
9219
+ params: {
9220
+ screenId: string;
9221
+ };
9222
+ query: {
9223
+ days?: number;
9224
+ };
7745
9225
  response: {
7746
9226
  daily?: Array<Record<string, unknown>>;
7747
9227
  hourly?: Array<{
@@ -7759,6 +9239,14 @@ interface getVenueIntelligenceOperation {
7759
9239
  readonly path: "/v1/partner/venues/{venueId}/intelligence";
7760
9240
  readonly method: "GET";
7761
9241
  request: never;
9242
+ params: {
9243
+ venueId: string;
9244
+ };
9245
+ query: {
9246
+ from: string;
9247
+ interval?: "5min" | "15min" | "1h" | "1d";
9248
+ to: string;
9249
+ };
7762
9250
  response: {
7763
9251
  dedup?: {
7764
9252
  camera_count?: number;
@@ -7810,6 +9298,8 @@ interface listWebhooksOperation {
7810
9298
  readonly path: "/v1/partner/webhooks";
7811
9299
  readonly method: "GET";
7812
9300
  request: never;
9301
+ params: Record<string, unknown>;
9302
+ query: Record<string, unknown>;
7813
9303
  response: {
7814
9304
  data?: {
7815
9305
  webhooks?: Array<Webhook>;
@@ -7826,10 +9316,12 @@ interface createWebhookOperation {
7826
9316
  readonly method: "POST";
7827
9317
  request: {
7828
9318
  /** Events to subscribe to */
7829
- events: Array<"device.online" | "device.offline" | "device.requirements_updated" | "impression.recorded" | "campaign.allocated" | "payout.processed" | "sensing.threshold_crossed" | "audience.spike" | "audience.venue_busy" | "audience.purchase_intent" | "audience.demographics_update" | "venue.traffic_summary" | "programmatic.ad_started" | "programmatic.ad_ended" | "programmatic.no_fill" | "programmatic.error" | "screen_group.created" | "screen_group.updated" | "screen_group.deleted" | "screen_group.member.added" | "screen_group.member.removed" | "screen_group.content_policy.updated" | "screen_group.sensing_config.updated" | "fleet_command.completed" | "fleet_command.failed">;
9319
+ events: Array<"device.online" | "device.offline" | "device.requirements_updated" | "impression.recorded" | "creative.rewards_ready" | "campaign.allocated" | "payout.processed" | "sensing.threshold_crossed" | "audience.spike" | "audience.venue_busy" | "audience.purchase_intent" | "audience.demographics_update" | "venue.traffic_summary" | "programmatic.ad_started" | "programmatic.ad_ended" | "programmatic.no_fill" | "programmatic.error" | "screen_group.created" | "screen_group.updated" | "screen_group.deleted" | "screen_group.member.added" | "screen_group.member.removed" | "screen_group.content_policy.updated" | "screen_group.sensing_config.updated" | "fleet_command.completed" | "fleet_command.failed">;
7830
9320
  /** Webhook endpoint URL (HTTPS required in production) */
7831
9321
  url: string;
7832
9322
  };
9323
+ params: Record<string, unknown>;
9324
+ query: Record<string, unknown>;
7833
9325
  response: {
7834
9326
  data?: {
7835
9327
  events?: Array<string>;
@@ -7851,6 +9343,10 @@ interface deleteWebhookOperation {
7851
9343
  readonly path: "/v1/partner/webhooks/{webhookId}";
7852
9344
  readonly method: "DELETE";
7853
9345
  request: never;
9346
+ params: {
9347
+ webhookId: string;
9348
+ };
9349
+ query: Record<string, unknown>;
7854
9350
  response: {
7855
9351
  message?: string;
7856
9352
  success?: boolean;
@@ -7864,10 +9360,14 @@ interface updateWebhookOperation {
7864
9360
  readonly path: "/v1/partner/webhooks/{webhookId}";
7865
9361
  readonly method: "PATCH";
7866
9362
  request: {
7867
- events?: Array<"device.online" | "device.offline" | "device.requirements_updated" | "impression.recorded" | "campaign.allocated" | "payout.processed" | "sensing.threshold_crossed" | "audience.spike" | "audience.venue_busy" | "audience.purchase_intent" | "audience.demographics_update" | "venue.traffic_summary" | "programmatic.ad_started" | "programmatic.ad_ended" | "programmatic.no_fill" | "programmatic.error" | "screen_group.created" | "screen_group.updated" | "screen_group.deleted" | "screen_group.member.added" | "screen_group.member.removed" | "screen_group.content_policy.updated" | "screen_group.sensing_config.updated" | "fleet_command.completed" | "fleet_command.failed">;
9363
+ events?: Array<"device.online" | "device.offline" | "device.requirements_updated" | "impression.recorded" | "creative.rewards_ready" | "campaign.allocated" | "payout.processed" | "sensing.threshold_crossed" | "audience.spike" | "audience.venue_busy" | "audience.purchase_intent" | "audience.demographics_update" | "venue.traffic_summary" | "programmatic.ad_started" | "programmatic.ad_ended" | "programmatic.no_fill" | "programmatic.error" | "screen_group.created" | "screen_group.updated" | "screen_group.deleted" | "screen_group.member.added" | "screen_group.member.removed" | "screen_group.content_policy.updated" | "screen_group.sensing_config.updated" | "fleet_command.completed" | "fleet_command.failed">;
7868
9364
  status?: "active" | "inactive";
7869
9365
  url?: string;
7870
9366
  };
9367
+ params: {
9368
+ webhookId: string;
9369
+ };
9370
+ query: Record<string, unknown>;
7871
9371
  response: {
7872
9372
  data?: Webhook;
7873
9373
  message?: string;
@@ -7882,6 +9382,12 @@ interface getWebhookDeliveriesOperation {
7882
9382
  readonly path: "/v1/partner/webhooks/{webhookId}/deliveries";
7883
9383
  readonly method: "GET";
7884
9384
  request: never;
9385
+ params: {
9386
+ webhookId: string;
9387
+ };
9388
+ query: {
9389
+ limit?: number;
9390
+ };
7885
9391
  response: {
7886
9392
  data?: {
7887
9393
  deliveries?: Array<WebhookDelivery>;
@@ -7897,6 +9403,10 @@ interface testWebhookOperation {
7897
9403
  readonly path: "/v1/partner/webhooks/{webhookId}/test";
7898
9404
  readonly method: "POST";
7899
9405
  request: never;
9406
+ params: {
9407
+ webhookId: string;
9408
+ };
9409
+ query: Record<string, unknown>;
7900
9410
  response: {
7901
9411
  data?: {
7902
9412
  error?: string;
@@ -7915,6 +9425,11 @@ interface playgroundDryRunOperation {
7915
9425
  readonly path: "/v1/playground/{operation_id}";
7916
9426
  readonly method: "POST";
7917
9427
  request: never;
9428
+ params: {
9429
+ /** The operationId of the endpoint to validate against. */
9430
+ operation_id: string;
9431
+ };
9432
+ query: Record<string, unknown>;
7918
9433
  response: PlaygroundResult;
7919
9434
  }
7920
9435
  /**
@@ -7925,15 +9440,20 @@ interface getRequestMetadataOperation {
7925
9440
  readonly path: "/v1/requests/{request_id}";
7926
9441
  readonly method: "GET";
7927
9442
  request: never;
9443
+ params: {
9444
+ /** Server-generated request ID to look up. */
9445
+ request_id: string;
9446
+ };
9447
+ query: Record<string, unknown>;
7928
9448
  response: RequestMetadataResponse;
7929
9449
  }
7930
9450
  declare const generatedTypes: {
7931
- readonly schemaCount: 131;
7932
- readonly operationCount: 213;
7933
- readonly schemas: readonly ["Ad", "AdSettings", "AdvertisingIdentity", "AnalyticsData", "AudienceAnalyticsResponse", "AudienceAttentionPrediction", "AudienceData", "AudienceExportResponse", "AudienceLoyaltyFeaturesRow", "AudienceMetricsResponse", "AudienceSegment", "AudienceSocialAttention", "BatchResult", "BillingInfo", "BleScanResultData", "CanonicalError", "ChangelogEntry", "ChangelogResponse", "CompletedImpressions", "ContentFitSettings", "ContentPreferencesInput", "ContentPreferencesResponse", "ContentPreset", "CreatePartnerSensingRouteRequest", "CreativeClassification", "DashboardResponse", "DataExportSummaryResponse", "DemandPartners", "DemographicsResponse", "Device", "DeviceCapabilityPayload", "DeviceSummary", "DisplaySettingsInput", "DisplaySettingsResponse", "EarnerScreens", "EarningsBreakdownResponse", "EarningsData", "EarningsResponse", "Error", "ErrorCode", "ErrorCodeResponse", "ErrorEntry", "ErrorEnvelope", "ErrorListItem", "ErrorListResponse", "ErrorType", "ExtendedIdentity", "FleetCommand", "FleetCommandEvent", "HeaderBiddingSettings", "HttpProbeResult", "HybridError", "Impression", "LegacyCodedError", "LegacyError", "MdnsNetworkDevice", "MeasurementMethodology", "OpenrtbRevenueScreenHourly", "Pagination", "Partner", "PartnerAdDeliveryProfile", "PartnerCreativeWarnings", "PartnerDefaultStream", "PartnerDefaultStreamCreate", "PartnerDefaultStreamUpdate", "PartnerDeviceBatchRegistrationInput", "PartnerDeviceHeartbeatBody", "PartnerDeviceRegistrationInput", "PartnerHeartbeatCommand", "PartnerHeartbeatData", "PartnerHeartbeatMeasurementMetadata", "PartnerHeartbeatQueryData", "PartnerHeartbeatQueryResponse", "PartnerHeartbeatRequest", "PartnerHeartbeatResponse", "PartnerHeartbeatTelemetry", "PartnerLBarContent", "PartnerLBarDisplayPreferences", "PartnerLBarSettings", "PartnerMonetizationRequirements", "PartnerNetworkConfig", "PartnerNetworkConfigUpdate", "PartnerPlay", "PartnerReconciliationReports", "PartnerRegistrationDisplaySettings", "PartnerRequirement", "PartnerSafeHeartbeatTelemetry", "PartnerSelfPromoAd", "PartnerSelfPromoCreate", "PartnerSelfPromoPlacement", "PartnerStats", "PartnerVariants", "PartnerZoneCpmDaily", "PayoutResponse", "PlaygroundResult", "PlaygroundValidationError", "ProgrammaticSettingsInput", "ProgrammaticSettingsResponse", "RequestMetadataResponse", "ResolvedContentPolicy", "ResolvedSensingConfig", "RolePermissions", "SDKConfig", "Screen", "ScreenAnalyticsResponse", "ScreenGroup", "ScreenGroupContentPolicy", "ScreenGroupContentPolicyInput", "ScreenGroupEvent", "ScreenGroupSensingConfig", "ScreenGroupSensingConfigInput", "SensingPerformanceMode", "SensingRoute", "SensingRouteAction", "SensingRouteCondition", "SensingRouteScreenFocusRegion", "SensingSettingsResponse", "SensingThresholdCrossedEvent", "SsdpDeviceInfo", "TeamInviteResponse", "TeamMember", "Transaction", "TrillboardsError", "UpdatePartnerSensingRouteRequest", "VastWaterfall", "VastWaterfallSource", "Webhook", "WebhookDelivery", "WebhookEvent", "WifiEnvironmentSnapshot", "WifiScanResult"];
7934
- readonly operations: readonly ["queryChangelog", "listErrorCodes", "getErrorCode", "listPartnerSelfPromoAds", "createPartnerSelfPromoAd", "listPartnerSelfPromoPlacements", "schedulePartnerSelfPromo", "createPartnerSelfPromoUpload", "disableSelfPromoAd", "registerAgent", "getAnalytics", "getAudienceContinuity", "getAudienceProfile", "getBleSummary", "getContentPerformance", "searchCreativeCatalog", "getCreativeScenes", "getCrossScreenFlow", "getPartnerAnalyticsDashboard", "getDeviceSuiteSignature", "exportPartnerAnalytics", "exportPartnerAdsByDay", "getFleetHourly", "getHaloFunnel", "getLoyaltyClock", "getNetworkSummary", "getNetworkTrend", "getProximitySummary", "getRevenueAttentionCorrelation", "getSceneFeed", "getSceneIntelligence", "rotateApiKey", "getAudienceAnalytics", "exportAudienceData", "getAudienceHeatmap", "getLiveAudience", "getLookalikeScreens", "predictScreenAudience", "getResolvedHouseholdReach", "listAudienceSegments", "createAudienceSegment", "deleteAudienceSegment", "getAudienceSegment", "updateAudienceSegment", "matchAudienceSegment", "estimateSegmentReach", "generateSegmentVastTag", "getAudienceStats", "cancelBillingSubscription", "purchaseCredits", "createCreditCheckout", "listBillingPlans", "setupBilling", "createBillingSubscription", "getBillingSubscription", "getBillingUsage", "getBillingUsageSummary", "stripeWebhookCallback", "getConnectDashboard", "getConnectEarningsChart", "getConnectScreenHealth", "listContentPresets", "getContentPreset", "submitPartnerCreative", "getPartnerCreative", "getDashboard", "exportProximityGraphEdges", "getDataExportSummary", "exportDataset", "getGeohashAudiencePanel", "getOutcomeAttribution", "registerDevice", "deleteDevice", "getDevice", "updateDevice", "getAdsForDevice", "ackDeviceCommand", "getDeviceHeartbeat", "heartbeat", "recordProgrammaticEvent", "listDevices", "registerDeviceV2", "registerDevicesBatch", "batchUpdateDeviceOrientation", "reconcileDevices", "partnerDocsBrowser", "getEarnings", "getEarningsBreakdown", "requestPayout", "getTransactions", "getActiveSSEConnections", "subscribeToEvents", "getFleetCommand", "getFleetAnalytics", "pushFleetCommand", "getFleetOverview", "updateFleetSettings", "recordImpressionGet", "recordImpressionPost", "recordImpressionsBatch", "getPartnerInfo", "listIntentCategories", "getIntentCategory", "getIntentPricing", "getMeasurementMethodology", "getMeasurementMethodologyJson", "getNetworkConfig", "patchNetworkConfig", "updateNetworkConfig", "getNetworkTrends", "partnerPing", "partnerPingAuth", "recordPartnerPlay", "recordPartnerPlaysBatch", "getPricing", "recordProgrammaticEventLegacyAlias", "quickStart", "registerPartner", "generateSandboxEvent", "resetSandbox", "createSandboxScreen", "getSandboxStatus", "listScreenGroups", "createScreenGroup", "deleteScreenGroup", "getScreenGroup", "updateScreenGroup", "getScreenGroupAnalytics", "createScreenGroupCommand", "getScreenGroupContentPolicy", "updateScreenGroupContentPolicy", "removeScreenGroupMembers", "listScreenGroupMembers", "addScreenGroupMembers", "getScreenGroupSensingConfig", "updateScreenGroupSensingConfig", "getScreenAudienceSegments", "batchUpdateContentPreferences", "batchUpdateDisplaySettings", "batchUpdateProgrammaticSettings", "resolvePartnerScreen", "getScreenAnalytics", "getPartnerScreenAtmosphere", "getPartnerScreenIntelligence", "getPartnerScreenTasteProfile", "getPartnerScreenTraffic", "getPartnerScreenVAS", "applyContentPreset", "getAudienceMetrics", "getContentPreferences", "patchContentPreferences", "updateContentPreferences", "listPartnerDefaultStreams", "createPartnerDefaultStream", "createPartnerDefaultStreamImages", "reorderPartnerDefaultStreams", "createPartnerDefaultStreamUpload", "deletePartnerDefaultStream", "updatePartnerDefaultStream", "getScreenDemographics", "getDisplaySettings", "patchDisplaySettings", "updateDisplaySettings", "getPartnerLBarSettings", "updatePartnerLBarSettings", "updatePartnerLBarLiveUpdates", "getProgrammaticSettings", "patchProgrammaticSettings", "updateProgrammaticSettings", "getResolvedContentPolicy", "getResolvedSensingConfig", "getScreenSensingChips", "interpretScreenSensingIntent", "deployScreenSensingProfile", "getScreenSensingSettings", "updateScreenSensingSettings", "listPartnerSensingRoutes", "createPartnerSensingRoute", "deletePartnerSensingRoute", "getPartnerSensingRoute", "updatePartnerSensingRoute", "createStripeConnectAccount", "getStripeLoginLink", "getStripeOnboardingLink", "requestStripePayout", "getStripePayoutHistory", "getStripeAccountStatus", "handleStripeWebhook", "listTeamMembers", "acceptInvitation", "inviteTeamMember", "getInvitationByToken", "resendInvitation", "removeTeamMember", "changeTeamMemberRole", "getTrackingPublicKey", "recordTrackingBatch", "getUsageSummary", "getUsageDashboard", "getRateLimitStatus", "getVastConfig", "getVenuesNearby", "getVenueAtmosphere", "getVenueTraffic", "getVenueIntelligence", "listWebhooks", "createWebhook", "deleteWebhook", "updateWebhook", "getWebhookDeliveries", "testWebhook", "playgroundDryRun", "getRequestMetadata"];
9451
+ readonly schemaCount: 165;
9452
+ readonly operationCount: 226;
9453
+ readonly schemas: readonly ["Ad", "AdSettings", "AdvertisingIdentity", "AnalyticsData", "AudienceAnalyticsResponse", "AudienceAttentionPrediction", "AudienceData", "AudienceExportResponse", "AudienceLoyaltyFeaturesRow", "AudienceMetricsResponse", "AudienceSegment", "AudienceSocialAttention", "BatchResult", "BillingInfo", "BleScanResultData", "CanonicalError", "ChangelogEntry", "ChangelogResponse", "CompletedImpressions", "ContentFitSettings", "ContentPreferencesInput", "ContentPreferencesResponse", "ContentPreset", "CreatePartnerSensingRouteRequest", "CreativeClassification", "CreativeRewardsReadyEvent", "DashboardResponse", "DataExportSummaryResponse", "DemandPartners", "DemographicsResponse", "Device", "DeviceAuthRefusal", "DeviceCapabilityPayload", "DeviceSummary", "DisplaySettingsInput", "DisplaySettingsResponse", "EarnerScreens", "EarningsBreakdownResponse", "EarningsData", "EarningsResponse", "EarningsSources", "Error", "ErrorCode", "ErrorCodeResponse", "ErrorEntry", "ErrorEnvelope", "ErrorListItem", "ErrorListResponse", "ErrorType", "ExtendedIdentity", "FeedbackBrand", "FeedbackBrandRequest", "FeedbackBrandResponse", "FeedbackCreateRequest", "FeedbackCreativeReview", "FeedbackExperiment", "FeedbackExperimentDetail", "FeedbackExperimentDetailResponse", "FeedbackExperimentResponse", "FeedbackGenerateRequest", "FeedbackGenerateResponse", "FeedbackGeneratedCreative", "FeedbackImportRequest", "FeedbackPolicyRequest", "FeedbackRecoveredCreative", "FeedbackRegisterVariantsRequest", "FeedbackReviewRequest", "FeedbackReviewResponse", "FeedbackRewardQuery", "FeedbackRewardRow", "FeedbackRewards", "FeedbackRewardsResponse", "FeedbackStopRequest", "FeedbackVariant", "FleetCommand", "FleetCommandEvent", "HeaderBiddingSettings", "HttpProbeResult", "HybridError", "Impression", "LegacyCodedError", "LegacyError", "MdnsNetworkDevice", "MeasurementMethodology", "OpenrtbRevenueScreenHourly", "Pagination", "Partner", "PartnerAdDeliveryProfile", "PartnerCreativeWarnings", "PartnerDefaultStream", "PartnerDefaultStreamCreate", "PartnerDefaultStreamUpdate", "PartnerDeviceBatchRegistrationInput", "PartnerDeviceHeartbeatBody", "PartnerDevicePlay", "PartnerDeviceRegistrationInput", "PartnerHeartbeatCommand", "PartnerHeartbeatData", "PartnerHeartbeatMeasurementMetadata", "PartnerHeartbeatQueryData", "PartnerHeartbeatQueryResponse", "PartnerHeartbeatRequest", "PartnerHeartbeatResponse", "PartnerHeartbeatTelemetry", "PartnerInteraction", "PartnerLBarContent", "PartnerLBarDisplayPreferences", "PartnerLBarSettings", "PartnerLocationCapability", "PartnerLocationRail", "PartnerMonetizationRequirements", "PartnerNetworkConfig", "PartnerNetworkConfigUpdate", "PartnerPlay", "PartnerReconciliationReports", "PartnerRegistrationDisplaySettings", "PartnerRequirement", "PartnerSafeHeartbeatTelemetry", "PartnerSelfPromoAd", "PartnerSelfPromoCreate", "PartnerSelfPromoPlacement", "PartnerStats", "PartnerTripState", "PartnerVariants", "PartnerZoneCpmDaily", "PayoutResponse", "PlaygroundResult", "PlaygroundValidationError", "ProgrammaticSettingsInput", "ProgrammaticSettingsResponse", "RequestMetadataResponse", "ResolvedContentPolicy", "ResolvedSensingConfig", "RolePermissions", "SDKConfig", "Screen", "ScreenAnalyticsResponse", "ScreenGroup", "ScreenGroupContentPolicy", "ScreenGroupContentPolicyInput", "ScreenGroupEvent", "ScreenGroupSensingConfig", "ScreenGroupSensingConfigInput", "SensingPerformanceMode", "SensingRoute", "SensingRouteAction", "SensingRouteCondition", "SensingRouteReviewTimingMode", "SensingRouteReviewWaitSeconds", "SensingRouteScreenFocusRegion", "SensingSettingsResponse", "SensingThresholdCrossedEvent", "SsdpDeviceInfo", "TeamInviteResponse", "TeamMember", "Transaction", "TrillboardsError", "UpdatePartnerSensingRouteRequest", "VastWaterfall", "VastWaterfallSource", "Webhook", "WebhookDelivery", "WebhookEvent", "WifiEnvironmentSnapshot", "WifiScanResult"];
9454
+ readonly operations: readonly ["queryChangelog", "listErrorCodes", "getErrorCode", "listPartnerSelfPromoAds", "createPartnerSelfPromoAd", "listPartnerSelfPromoPlacements", "schedulePartnerSelfPromo", "createPartnerSelfPromoUpload", "disableSelfPromoAd", "registerAgent", "getAnalytics", "getAudienceContinuity", "getAudienceProfile", "getBleSummary", "getContentPerformance", "searchCreativeCatalog", "getCreativeScenes", "getCrossScreenFlow", "getPartnerAnalyticsDashboard", "getDeviceSuiteSignature", "exportPartnerAnalytics", "exportPartnerAdsByDay", "getFleetHourly", "getHaloFunnel", "getLoyaltyClock", "getNetworkSummary", "getNetworkTrend", "getProximitySummary", "getRevenueAttentionCorrelation", "getSceneFeed", "getSceneIntelligence", "rotateApiKey", "getAudienceAnalytics", "exportAudienceData", "getAudienceHeatmap", "getLiveAudience", "getLookalikeScreens", "predictScreenAudience", "getResolvedHouseholdReach", "listAudienceSegments", "createAudienceSegment", "deleteAudienceSegment", "getAudienceSegment", "updateAudienceSegment", "matchAudienceSegment", "estimateSegmentReach", "generateSegmentVastTag", "getAudienceStats", "cancelBillingSubscription", "purchaseCredits", "createCreditCheckout", "listBillingPlans", "setupBilling", "createBillingSubscription", "getBillingSubscription", "getBillingUsage", "getBillingUsageSummary", "stripeWebhookCallback", "getConnectDashboard", "getConnectEarningsChart", "getConnectScreenHealth", "listContentPresets", "getContentPreset", "createCreativeFeedbackExperiment", "getCreativeFeedbackExperiment", "configureCreativeFeedbackBrand", "generateCreativeFeedbackCreative", "importCreativeFeedbackCreative", "reviewCreativeFeedbackCreative", "updateCreativeFeedbackPolicy", "getCreativeFeedbackRewards", "stopCreativeFeedbackExperiment", "registerCreativeFeedbackVariants", "submitPartnerCreative", "getPartnerCreative", "getDashboard", "exportProximityGraphEdges", "getDataExportSummary", "exportDataset", "getGeohashAudiencePanel", "getOutcomeAttribution", "registerDevice", "deleteDevice", "getDevice", "updateDevice", "getAdsForDevice", "ackDeviceCommand", "getDeviceHeartbeat", "heartbeat", "recordPartnerDeviceInteraction", "recordPartnerDevicePlay", "recordProgrammaticEvent", "recordPartnerDeviceTripState", "listDevices", "registerDeviceV2", "registerDevicesBatch", "batchUpdateDeviceOrientation", "reconcileDevices", "partnerDocsBrowser", "getEarnings", "getEarningsBreakdown", "requestPayout", "getTransactions", "getActiveSSEConnections", "subscribeToEvents", "getFleetCommand", "getFleetAnalytics", "pushFleetCommand", "getFleetOverview", "updateFleetSettings", "recordImpressionGet", "recordImpressionPost", "recordImpressionsBatch", "getPartnerInfo", "listIntentCategories", "getIntentCategory", "getIntentPricing", "getMeasurementMethodology", "getMeasurementMethodologyJson", "getNetworkConfig", "patchNetworkConfig", "updateNetworkConfig", "getNetworkTrends", "partnerPing", "partnerPingAuth", "recordPartnerPlay", "recordPartnerPlaysBatch", "getPricing", "recordProgrammaticEventLegacyAlias", "quickStart", "registerPartner", "generateSandboxEvent", "resetSandbox", "createSandboxScreen", "getSandboxStatus", "listScreenGroups", "createScreenGroup", "deleteScreenGroup", "getScreenGroup", "updateScreenGroup", "getScreenGroupAnalytics", "createScreenGroupCommand", "getScreenGroupContentPolicy", "updateScreenGroupContentPolicy", "removeScreenGroupMembers", "listScreenGroupMembers", "addScreenGroupMembers", "getScreenGroupSensingConfig", "updateScreenGroupSensingConfig", "getScreenAudienceSegments", "batchUpdateContentPreferences", "batchUpdateDisplaySettings", "batchUpdateProgrammaticSettings", "resolvePartnerScreen", "getScreenAnalytics", "getPartnerScreenAtmosphere", "getPartnerScreenIntelligence", "getPartnerScreenTasteProfile", "getPartnerScreenTraffic", "getPartnerScreenVAS", "applyContentPreset", "getAudienceMetrics", "getContentPreferences", "patchContentPreferences", "updateContentPreferences", "listPartnerDefaultStreams", "createPartnerDefaultStream", "createPartnerDefaultStreamImages", "reorderPartnerDefaultStreams", "createPartnerDefaultStreamUpload", "deletePartnerDefaultStream", "updatePartnerDefaultStream", "getScreenDemographics", "getDisplaySettings", "patchDisplaySettings", "updateDisplaySettings", "getPartnerLBarSettings", "updatePartnerLBarSettings", "updatePartnerLBarLiveUpdates", "getProgrammaticSettings", "patchProgrammaticSettings", "updateProgrammaticSettings", "getResolvedContentPolicy", "getResolvedSensingConfig", "getScreenSensingChips", "interpretScreenSensingIntent", "deployScreenSensingProfile", "getScreenSensingSettings", "updateScreenSensingSettings", "listPartnerSensingRoutes", "createPartnerSensingRoute", "deletePartnerSensingRoute", "getPartnerSensingRoute", "updatePartnerSensingRoute", "createStripeConnectAccount", "getStripeLoginLink", "getStripeOnboardingLink", "requestStripePayout", "getStripePayoutHistory", "getStripeAccountStatus", "handleStripeWebhook", "listTeamMembers", "acceptInvitation", "inviteTeamMember", "getInvitationByToken", "resendInvitation", "removeTeamMember", "changeTeamMemberRole", "getTrackingPublicKey", "recordTrackingBatch", "getUsageSummary", "getUsageDashboard", "getRateLimitStatus", "getVastConfig", "getVenuesNearby", "getVenueAtmosphere", "getVenueTraffic", "getVenueIntelligence", "listWebhooks", "createWebhook", "deleteWebhook", "updateWebhook", "getWebhookDeliveries", "testWebhook", "playgroundDryRun", "getRequestMetadata"];
7935
9455
  };
7936
9456
  type GeneratedSchemaName = (typeof generatedTypes.schemas)[number];
7937
9457
  type GeneratedOperationName = (typeof generatedTypes.operations)[number];
7938
9458
 
7939
- export { type Ad, type AdSettings, type AdvertisingIdentity, type AnalyticsData, type AudienceAnalyticsResponse, type AudienceAttentionPrediction, type AudienceData, type AudienceExportResponse, type AudienceLoyaltyFeaturesRow, type AudienceMetricsResponse, type AudienceSegment, type AudienceSocialAttention, type BatchResult, type BillingInfo, type BleScanResultData, type CanonicalError, type ChangelogEntry, type ChangelogResponse, type CompletedImpressions, type ContentFitSettings, type ContentPreferencesInput, type ContentPreferencesResponse, type ContentPreset, type CreatePartnerSensingRouteRequest, type CreativeClassification, type DashboardResponse, type DataExportSummaryResponse, type DemandPartners, type DemographicsResponse, type Device, type DeviceCapabilityPayload, type DeviceSummary, type DisplaySettingsInput, type DisplaySettingsResponse, type EarnerScreens, type EarningsBreakdownResponse, type EarningsData, type EarningsResponse, type Error, type ErrorCode, type ErrorCodeResponse, type ErrorEntry, type ErrorEnvelope, type ErrorListItem, type ErrorListResponse, type ErrorType, type ExtendedIdentity, type FleetCommand, type FleetCommandEvent, type GeneratedOperationName, type GeneratedSchemaName, type HeaderBiddingSettings, type HttpProbeResult, type HybridError, type Impression, type LegacyCodedError, type LegacyError, type MdnsNetworkDevice, type MeasurementMethodology, type OpenrtbRevenueScreenHourly, type Pagination, type Partner, type PartnerAdDeliveryProfile, type PartnerCreativeWarnings, type PartnerDefaultStream, type PartnerDefaultStreamCreate, type PartnerDefaultStreamUpdate, type PartnerDeviceBatchRegistrationInput, type PartnerDeviceHeartbeatBody, type PartnerDeviceRegistrationInput, type PartnerHeartbeatCommand, type PartnerHeartbeatData, type PartnerHeartbeatMeasurementMetadata, type PartnerHeartbeatQueryData, type PartnerHeartbeatQueryResponse, type PartnerHeartbeatRequest, type PartnerHeartbeatResponse, type PartnerHeartbeatTelemetry, type PartnerLBarContent, type PartnerLBarDisplayPreferences, type PartnerLBarSettings, type PartnerMonetizationRequirements, type PartnerNetworkConfig, type PartnerNetworkConfigUpdate, type PartnerPlay, type PartnerReconciliationReports, type PartnerRegistrationDisplaySettings, type PartnerRequirement, type PartnerSafeHeartbeatTelemetry, type PartnerSelfPromoAd, type PartnerSelfPromoCreate, type PartnerSelfPromoPlacement, type PartnerStats, type PartnerVariants, type PartnerZoneCpmDaily, type PayoutResponse, type PlaygroundResult, type PlaygroundValidationError, type ProgrammaticSettingsInput, type ProgrammaticSettingsResponse, type RequestMetadataResponse, type ResolvedContentPolicy, type ResolvedSensingConfig, type RolePermissions, type SDKConfig, type Screen, type ScreenAnalyticsResponse, type ScreenGroup, type ScreenGroupContentPolicy, type ScreenGroupContentPolicyInput, type ScreenGroupEvent, type ScreenGroupSensingConfig, type ScreenGroupSensingConfigInput, type SensingPerformanceMode, type SensingRoute, type SensingRouteAction, type SensingRouteCondition, type SensingRouteScreenFocusRegion, type SensingSettingsResponse, type SensingThresholdCrossedEvent, type SsdpDeviceInfo, type TeamInviteResponse, type TeamMember, type Transaction, type TrillboardsError, type UpdatePartnerSensingRouteRequest, type VastWaterfall, type VastWaterfallSource, type Webhook, type WebhookDelivery, type WebhookEvent, type WifiEnvironmentSnapshot, type WifiScanResult, type acceptInvitationOperation, type ackDeviceCommandOperation, type addScreenGroupMembersOperation, type applyContentPresetOperation, type batchUpdateContentPreferencesOperation, type batchUpdateDeviceOrientationOperation, type batchUpdateDisplaySettingsOperation, type batchUpdateProgrammaticSettingsOperation, type cancelBillingSubscriptionOperation, type changeTeamMemberRoleOperation, type createAudienceSegmentOperation, type createBillingSubscriptionOperation, type createCreditCheckoutOperation, type createPartnerDefaultStreamImagesOperation, type createPartnerDefaultStreamOperation, type createPartnerDefaultStreamUploadOperation, type createPartnerSelfPromoAdOperation, type createPartnerSelfPromoUploadOperation, type createPartnerSensingRouteOperation, type createSandboxScreenOperation, type createScreenGroupCommandOperation, type createScreenGroupOperation, type createStripeConnectAccountOperation, type createWebhookOperation, type deleteAudienceSegmentOperation, type deleteDeviceOperation, type deletePartnerDefaultStreamOperation, type deletePartnerSensingRouteOperation, type deleteScreenGroupOperation, type deleteWebhookOperation, type deployScreenSensingProfileOperation, type disableSelfPromoAdOperation, type estimateSegmentReachOperation, type exportAudienceDataOperation, type exportDatasetOperation, type exportPartnerAdsByDayOperation, type exportPartnerAnalyticsOperation, type exportProximityGraphEdgesOperation, type generateSandboxEventOperation, type generateSegmentVastTagOperation, generatedTypes, type getActiveSSEConnectionsOperation, type getAdsForDeviceOperation, type getAnalyticsOperation, type getAudienceAnalyticsOperation, type getAudienceContinuityOperation, type getAudienceHeatmapOperation, type getAudienceMetricsOperation, type getAudienceProfileOperation, type getAudienceSegmentOperation, type getAudienceStatsOperation, type getBillingSubscriptionOperation, type getBillingUsageOperation, type getBillingUsageSummaryOperation, type getBleSummaryOperation, type getConnectDashboardOperation, type getConnectEarningsChartOperation, type getConnectScreenHealthOperation, type getContentPerformanceOperation, type getContentPreferencesOperation, type getContentPresetOperation, type getCreativeScenesOperation, type getCrossScreenFlowOperation, type getDashboardOperation, type getDataExportSummaryOperation, type getDeviceHeartbeatOperation, type getDeviceOperation, type getDeviceSuiteSignatureOperation, type getDisplaySettingsOperation, type getEarningsBreakdownOperation, type getEarningsOperation, type getErrorCodeOperation, type getFleetAnalyticsOperation, type getFleetCommandOperation, type getFleetHourlyOperation, type getFleetOverviewOperation, type getGeohashAudiencePanelOperation, type getHaloFunnelOperation, type getIntentCategoryOperation, type getIntentPricingOperation, type getInvitationByTokenOperation, type getLiveAudienceOperation, type getLookalikeScreensOperation, type getLoyaltyClockOperation, type getMeasurementMethodologyJsonOperation, type getMeasurementMethodologyOperation, type getNetworkConfigOperation, type getNetworkSummaryOperation, type getNetworkTrendOperation, type getNetworkTrendsOperation, type getOutcomeAttributionOperation, type getPartnerAnalyticsDashboardOperation, type getPartnerCreativeOperation, type getPartnerInfoOperation, type getPartnerLBarSettingsOperation, type getPartnerScreenAtmosphereOperation, type getPartnerScreenIntelligenceOperation, type getPartnerScreenTasteProfileOperation, type getPartnerScreenTrafficOperation, type getPartnerScreenVASOperation, type getPartnerSensingRouteOperation, type getPricingOperation, type getProgrammaticSettingsOperation, type getProximitySummaryOperation, type getRateLimitStatusOperation, type getRequestMetadataOperation, type getResolvedContentPolicyOperation, type getResolvedHouseholdReachOperation, type getResolvedSensingConfigOperation, type getRevenueAttentionCorrelationOperation, type getSandboxStatusOperation, type getSceneFeedOperation, type getSceneIntelligenceOperation, type getScreenAnalyticsOperation, type getScreenAudienceSegmentsOperation, type getScreenDemographicsOperation, type getScreenGroupAnalyticsOperation, type getScreenGroupContentPolicyOperation, type getScreenGroupOperation, type getScreenGroupSensingConfigOperation, type getScreenSensingChipsOperation, type getScreenSensingSettingsOperation, type getStripeAccountStatusOperation, type getStripeLoginLinkOperation, type getStripeOnboardingLinkOperation, type getStripePayoutHistoryOperation, type getTrackingPublicKeyOperation, type getTransactionsOperation, type getUsageDashboardOperation, type getUsageSummaryOperation, type getVastConfigOperation, type getVenueAtmosphereOperation, type getVenueIntelligenceOperation, type getVenueTrafficOperation, type getVenuesNearbyOperation, type getWebhookDeliveriesOperation, type handleStripeWebhookOperation, type heartbeatOperation, type interpretScreenSensingIntentOperation, type inviteTeamMemberOperation, type listAudienceSegmentsOperation, type listBillingPlansOperation, type listContentPresetsOperation, type listDevicesOperation, type listErrorCodesOperation, type listIntentCategoriesOperation, type listPartnerDefaultStreamsOperation, type listPartnerSelfPromoAdsOperation, type listPartnerSelfPromoPlacementsOperation, type listPartnerSensingRoutesOperation, type listScreenGroupMembersOperation, type listScreenGroupsOperation, type listTeamMembersOperation, type listWebhooksOperation, type matchAudienceSegmentOperation, type partnerDocsBrowserOperation, type partnerPingAuthOperation, type partnerPingOperation, type patchContentPreferencesOperation, type patchDisplaySettingsOperation, type patchNetworkConfigOperation, type patchProgrammaticSettingsOperation, type playgroundDryRunOperation, type predictScreenAudienceOperation, type purchaseCreditsOperation, type pushFleetCommandOperation, type queryChangelogOperation, type quickStartOperation, type reconcileDevicesOperation, type recordImpressionGetOperation, type recordImpressionPostOperation, type recordImpressionsBatchOperation, type recordPartnerPlayOperation, type recordPartnerPlaysBatchOperation, type recordProgrammaticEventLegacyAliasOperation, type recordProgrammaticEventOperation, type recordTrackingBatchOperation, type registerAgentOperation, type registerDeviceOperation, type registerDeviceV2Operation, type registerDevicesBatchOperation, type registerPartnerOperation, type removeScreenGroupMembersOperation, type removeTeamMemberOperation, type reorderPartnerDefaultStreamsOperation, type requestPayoutOperation, type requestStripePayoutOperation, type resendInvitationOperation, type resetSandboxOperation, type resolvePartnerScreenOperation, type rotateApiKeyOperation, type schedulePartnerSelfPromoOperation, type searchCreativeCatalogOperation, type setupBillingOperation, type stripeWebhookCallbackOperation, type submitPartnerCreativeOperation, type subscribeToEventsOperation, type testWebhookOperation, type updateAudienceSegmentOperation, type updateContentPreferencesOperation, type updateDeviceOperation, type updateDisplaySettingsOperation, type updateFleetSettingsOperation, type updateNetworkConfigOperation, type updatePartnerDefaultStreamOperation, type updatePartnerLBarLiveUpdatesOperation, type updatePartnerLBarSettingsOperation, type updatePartnerSensingRouteOperation, type updateProgrammaticSettingsOperation, type updateScreenGroupContentPolicyOperation, type updateScreenGroupOperation, type updateScreenGroupSensingConfigOperation, type updateScreenSensingSettingsOperation, type updateWebhookOperation };
9459
+ export { type Ad, type AdSettings, type AdvertisingIdentity, type AnalyticsData, type AudienceAnalyticsResponse, type AudienceAttentionPrediction, type AudienceData, type AudienceExportResponse, type AudienceLoyaltyFeaturesRow, type AudienceMetricsResponse, type AudienceSegment, type AudienceSocialAttention, type BatchResult, type BillingInfo, type BleScanResultData, type CanonicalError, type ChangelogEntry, type ChangelogResponse, type CompletedImpressions, type ContentFitSettings, type ContentPreferencesInput, type ContentPreferencesResponse, type ContentPreset, type CreatePartnerSensingRouteRequest, type CreativeClassification, type CreativeRewardsReadyEvent, type DashboardResponse, type DataExportSummaryResponse, type DemandPartners, type DemographicsResponse, type Device, type DeviceAuthRefusal, type DeviceCapabilityPayload, type DeviceSummary, type DisplaySettingsInput, type DisplaySettingsResponse, type EarnerScreens, type EarningsBreakdownResponse, type EarningsData, type EarningsResponse, type EarningsSources, type Error, type ErrorCode, type ErrorCodeResponse, type ErrorEntry, type ErrorEnvelope, type ErrorListItem, type ErrorListResponse, type ErrorType, type ExtendedIdentity, type FeedbackBrand, type FeedbackBrandRequest, type FeedbackBrandResponse, type FeedbackCreateRequest, type FeedbackCreativeReview, type FeedbackExperiment, type FeedbackExperimentDetail, type FeedbackExperimentDetailResponse, type FeedbackExperimentResponse, type FeedbackGenerateRequest, type FeedbackGenerateResponse, type FeedbackGeneratedCreative, type FeedbackImportRequest, type FeedbackPolicyRequest, type FeedbackRecoveredCreative, type FeedbackRegisterVariantsRequest, type FeedbackReviewRequest, type FeedbackReviewResponse, type FeedbackRewardQuery, type FeedbackRewardRow, type FeedbackRewards, type FeedbackRewardsResponse, type FeedbackStopRequest, type FeedbackVariant, type FleetCommand, type FleetCommandEvent, type GeneratedOperationName, type GeneratedSchemaName, type HeaderBiddingSettings, type HttpProbeResult, type HybridError, type Impression, type LegacyCodedError, type LegacyError, type MdnsNetworkDevice, type MeasurementMethodology, type OpenrtbRevenueScreenHourly, type Pagination, type Partner, type PartnerAdDeliveryProfile, type PartnerCreativeWarnings, type PartnerDefaultStream, type PartnerDefaultStreamCreate, type PartnerDefaultStreamUpdate, type PartnerDeviceBatchRegistrationInput, type PartnerDeviceHeartbeatBody, type PartnerDevicePlay, type PartnerDeviceRegistrationInput, type PartnerHeartbeatCommand, type PartnerHeartbeatData, type PartnerHeartbeatMeasurementMetadata, type PartnerHeartbeatQueryData, type PartnerHeartbeatQueryResponse, type PartnerHeartbeatRequest, type PartnerHeartbeatResponse, type PartnerHeartbeatTelemetry, type PartnerInteraction, type PartnerLBarContent, type PartnerLBarDisplayPreferences, type PartnerLBarSettings, type PartnerLocationCapability, type PartnerLocationRail, type PartnerMonetizationRequirements, type PartnerNetworkConfig, type PartnerNetworkConfigUpdate, type PartnerPlay, type PartnerReconciliationReports, type PartnerRegistrationDisplaySettings, type PartnerRequirement, type PartnerSafeHeartbeatTelemetry, type PartnerSelfPromoAd, type PartnerSelfPromoCreate, type PartnerSelfPromoPlacement, type PartnerStats, type PartnerTripState, type PartnerVariants, type PartnerZoneCpmDaily, type PayoutResponse, type PlaygroundResult, type PlaygroundValidationError, type ProgrammaticSettingsInput, type ProgrammaticSettingsResponse, type RequestMetadataResponse, type ResolvedContentPolicy, type ResolvedSensingConfig, type RolePermissions, type SDKConfig, type Screen, type ScreenAnalyticsResponse, type ScreenGroup, type ScreenGroupContentPolicy, type ScreenGroupContentPolicyInput, type ScreenGroupEvent, type ScreenGroupSensingConfig, type ScreenGroupSensingConfigInput, type SensingPerformanceMode, type SensingRoute, type SensingRouteAction, type SensingRouteCondition, type SensingRouteReviewTimingMode, type SensingRouteReviewWaitSeconds, type SensingRouteScreenFocusRegion, type SensingSettingsResponse, type SensingThresholdCrossedEvent, type SsdpDeviceInfo, type TeamInviteResponse, type TeamMember, type Transaction, type TrillboardsError, type UpdatePartnerSensingRouteRequest, type VastWaterfall, type VastWaterfallSource, type Webhook, type WebhookDelivery, type WebhookEvent, type WifiEnvironmentSnapshot, type WifiScanResult, type acceptInvitationOperation, type ackDeviceCommandOperation, type addScreenGroupMembersOperation, type applyContentPresetOperation, type batchUpdateContentPreferencesOperation, type batchUpdateDeviceOrientationOperation, type batchUpdateDisplaySettingsOperation, type batchUpdateProgrammaticSettingsOperation, type cancelBillingSubscriptionOperation, type changeTeamMemberRoleOperation, type configureCreativeFeedbackBrandOperation, type createAudienceSegmentOperation, type createBillingSubscriptionOperation, type createCreativeFeedbackExperimentOperation, type createCreditCheckoutOperation, type createPartnerDefaultStreamImagesOperation, type createPartnerDefaultStreamOperation, type createPartnerDefaultStreamUploadOperation, type createPartnerSelfPromoAdOperation, type createPartnerSelfPromoUploadOperation, type createPartnerSensingRouteOperation, type createSandboxScreenOperation, type createScreenGroupCommandOperation, type createScreenGroupOperation, type createStripeConnectAccountOperation, type createWebhookOperation, type deleteAudienceSegmentOperation, type deleteDeviceOperation, type deletePartnerDefaultStreamOperation, type deletePartnerSensingRouteOperation, type deleteScreenGroupOperation, type deleteWebhookOperation, type deployScreenSensingProfileOperation, type disableSelfPromoAdOperation, type estimateSegmentReachOperation, type exportAudienceDataOperation, type exportDatasetOperation, type exportPartnerAdsByDayOperation, type exportPartnerAnalyticsOperation, type exportProximityGraphEdgesOperation, type generateCreativeFeedbackCreativeOperation, type generateSandboxEventOperation, type generateSegmentVastTagOperation, generatedTypes, type getActiveSSEConnectionsOperation, type getAdsForDeviceOperation, type getAnalyticsOperation, type getAudienceAnalyticsOperation, type getAudienceContinuityOperation, type getAudienceHeatmapOperation, type getAudienceMetricsOperation, type getAudienceProfileOperation, type getAudienceSegmentOperation, type getAudienceStatsOperation, type getBillingSubscriptionOperation, type getBillingUsageOperation, type getBillingUsageSummaryOperation, type getBleSummaryOperation, type getConnectDashboardOperation, type getConnectEarningsChartOperation, type getConnectScreenHealthOperation, type getContentPerformanceOperation, type getContentPreferencesOperation, type getContentPresetOperation, type getCreativeFeedbackExperimentOperation, type getCreativeFeedbackRewardsOperation, type getCreativeScenesOperation, type getCrossScreenFlowOperation, type getDashboardOperation, type getDataExportSummaryOperation, type getDeviceHeartbeatOperation, type getDeviceOperation, type getDeviceSuiteSignatureOperation, type getDisplaySettingsOperation, type getEarningsBreakdownOperation, type getEarningsOperation, type getErrorCodeOperation, type getFleetAnalyticsOperation, type getFleetCommandOperation, type getFleetHourlyOperation, type getFleetOverviewOperation, type getGeohashAudiencePanelOperation, type getHaloFunnelOperation, type getIntentCategoryOperation, type getIntentPricingOperation, type getInvitationByTokenOperation, type getLiveAudienceOperation, type getLookalikeScreensOperation, type getLoyaltyClockOperation, type getMeasurementMethodologyJsonOperation, type getMeasurementMethodologyOperation, type getNetworkConfigOperation, type getNetworkSummaryOperation, type getNetworkTrendOperation, type getNetworkTrendsOperation, type getOutcomeAttributionOperation, type getPartnerAnalyticsDashboardOperation, type getPartnerCreativeOperation, type getPartnerInfoOperation, type getPartnerLBarSettingsOperation, type getPartnerScreenAtmosphereOperation, type getPartnerScreenIntelligenceOperation, type getPartnerScreenTasteProfileOperation, type getPartnerScreenTrafficOperation, type getPartnerScreenVASOperation, type getPartnerSensingRouteOperation, type getPricingOperation, type getProgrammaticSettingsOperation, type getProximitySummaryOperation, type getRateLimitStatusOperation, type getRequestMetadataOperation, type getResolvedContentPolicyOperation, type getResolvedHouseholdReachOperation, type getResolvedSensingConfigOperation, type getRevenueAttentionCorrelationOperation, type getSandboxStatusOperation, type getSceneFeedOperation, type getSceneIntelligenceOperation, type getScreenAnalyticsOperation, type getScreenAudienceSegmentsOperation, type getScreenDemographicsOperation, type getScreenGroupAnalyticsOperation, type getScreenGroupContentPolicyOperation, type getScreenGroupOperation, type getScreenGroupSensingConfigOperation, type getScreenSensingChipsOperation, type getScreenSensingSettingsOperation, type getStripeAccountStatusOperation, type getStripeLoginLinkOperation, type getStripeOnboardingLinkOperation, type getStripePayoutHistoryOperation, type getTrackingPublicKeyOperation, type getTransactionsOperation, type getUsageDashboardOperation, type getUsageSummaryOperation, type getVastConfigOperation, type getVenueAtmosphereOperation, type getVenueIntelligenceOperation, type getVenueTrafficOperation, type getVenuesNearbyOperation, type getWebhookDeliveriesOperation, type handleStripeWebhookOperation, type heartbeatOperation, type importCreativeFeedbackCreativeOperation, type interpretScreenSensingIntentOperation, type inviteTeamMemberOperation, type listAudienceSegmentsOperation, type listBillingPlansOperation, type listContentPresetsOperation, type listDevicesOperation, type listErrorCodesOperation, type listIntentCategoriesOperation, type listPartnerDefaultStreamsOperation, type listPartnerSelfPromoAdsOperation, type listPartnerSelfPromoPlacementsOperation, type listPartnerSensingRoutesOperation, type listScreenGroupMembersOperation, type listScreenGroupsOperation, type listTeamMembersOperation, type listWebhooksOperation, type matchAudienceSegmentOperation, type partnerDocsBrowserOperation, type partnerPingAuthOperation, type partnerPingOperation, type patchContentPreferencesOperation, type patchDisplaySettingsOperation, type patchNetworkConfigOperation, type patchProgrammaticSettingsOperation, type playgroundDryRunOperation, type predictScreenAudienceOperation, type purchaseCreditsOperation, type pushFleetCommandOperation, type queryChangelogOperation, type quickStartOperation, type reconcileDevicesOperation, type recordImpressionGetOperation, type recordImpressionPostOperation, type recordImpressionsBatchOperation, type recordPartnerDeviceInteractionOperation, type recordPartnerDevicePlayOperation, type recordPartnerDeviceTripStateOperation, type recordPartnerPlayOperation, type recordPartnerPlaysBatchOperation, type recordProgrammaticEventLegacyAliasOperation, type recordProgrammaticEventOperation, type recordTrackingBatchOperation, type registerAgentOperation, type registerCreativeFeedbackVariantsOperation, type registerDeviceOperation, type registerDeviceV2Operation, type registerDevicesBatchOperation, type registerPartnerOperation, type removeScreenGroupMembersOperation, type removeTeamMemberOperation, type reorderPartnerDefaultStreamsOperation, type requestPayoutOperation, type requestStripePayoutOperation, type resendInvitationOperation, type resetSandboxOperation, type resolvePartnerScreenOperation, type reviewCreativeFeedbackCreativeOperation, type rotateApiKeyOperation, type schedulePartnerSelfPromoOperation, type searchCreativeCatalogOperation, type setupBillingOperation, type stopCreativeFeedbackExperimentOperation, type stripeWebhookCallbackOperation, type submitPartnerCreativeOperation, type subscribeToEventsOperation, type testWebhookOperation, type updateAudienceSegmentOperation, type updateContentPreferencesOperation, type updateCreativeFeedbackPolicyOperation, type updateDeviceOperation, type updateDisplaySettingsOperation, type updateFleetSettingsOperation, type updateNetworkConfigOperation, type updatePartnerDefaultStreamOperation, type updatePartnerLBarLiveUpdatesOperation, type updatePartnerLBarSettingsOperation, type updatePartnerSensingRouteOperation, type updateProgrammaticSettingsOperation, type updateScreenGroupContentPolicyOperation, type updateScreenGroupOperation, type updateScreenGroupSensingConfigOperation, type updateScreenSensingSettingsOperation, type updateWebhookOperation };