@trillboards/api-client 2.2.1 → 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. */
@@ -1159,6 +1213,7 @@ type EarnerScreens = {
1159
1213
  venue_state?: string | null;
1160
1214
  venue_subcategory?: string | null;
1161
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... */
1162
1217
  waterfall_partners: Array<string>;
1163
1218
  waterfall_total_timeout_ms?: number | null;
1164
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... */
@@ -1169,6 +1224,7 @@ type EarningsBreakdownResponse = {
1169
1224
  breakdown?: Array<{
1170
1225
  /** Date or screen_id depending on group_by */
1171
1226
  date?: string;
1227
+ earning_sources?: EarningsSources;
1172
1228
  earnings_cents?: number;
1173
1229
  impressions?: number;
1174
1230
  /** Screen ID (when grouped by screen) */
@@ -1185,9 +1241,11 @@ type EarningsBreakdownResponse = {
1185
1241
  group_by?: "day" | "week" | "screen";
1186
1242
  start?: string;
1187
1243
  };
1188
- /** 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. */
1189
1245
  summary?: {
1190
1246
  direct_cents?: number;
1247
+ earning_source_version?: 1;
1248
+ earning_sources?: EarningsSources;
1191
1249
  programmatic_cents?: number;
1192
1250
  total_cents?: number;
1193
1251
  total_impressions?: number;
@@ -1224,12 +1282,14 @@ type EarningsData = {
1224
1282
  type EarningsResponse = {
1225
1283
  /** Amount available for immediate payout */
1226
1284
  available_for_payout_cents?: number;
1227
- /** 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. */
1228
1286
  breakdown?: {
1229
1287
  direct_campaigns?: number;
1230
1288
  programmatic_floodgates?: number;
1231
1289
  programmatic_google?: number;
1232
1290
  };
1291
+ earning_source_version?: 1;
1292
+ earning_sources?: EarningsSources;
1233
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. */
1234
1294
  next_payout_estimate?: {
1235
1295
  amount_cents?: number;
@@ -1247,6 +1307,19 @@ type EarningsResponse = {
1247
1307
  /** Total earnings since partner started */
1248
1308
  total_lifetime_cents?: number;
1249
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
+ };
1250
1323
  /**
1251
1324
  * Legacy free-text error shape. COLLAPSED onto the shared `LegacyError`
1252
1325
  * definition so there is exactly one declaration of this shape across the
@@ -1256,9 +1329,9 @@ type EarningsResponse = {
1256
1329
  */
1257
1330
  type Error = LegacyError;
1258
1331
  /**
1259
- * 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.
1260
1333
  */
1261
- 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";
1262
1335
  type ErrorCodeResponse = {
1263
1336
  code: string;
1264
1337
  description: string;
@@ -1358,6 +1431,269 @@ type ExtendedIdentity = {
1358
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. */
1359
1432
  status: "available" | "unavailable";
1360
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
+ };
1361
1697
  /**
1362
1698
  * A fleet-command job: one batch that fanned a device command across a screen group's
1363
1699
  * members. Poll via GET /fleet-commands/{id}.
@@ -1494,7 +1830,7 @@ type HttpProbeResult = {
1494
1830
  */
1495
1831
  type HybridError = {
1496
1832
  error?: {
1497
- /** 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`. */
1498
1834
  code?: string;
1499
1835
  param?: string | null;
1500
1836
  type?: ErrorType;
@@ -1569,7 +1905,7 @@ type MdnsNetworkDevice = {
1569
1905
  type MeasurementMethodology = {
1570
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. */
1571
1907
  canonical_path?: string;
1572
- /** What each screen observes and what is dropped at the edge. */
1908
+ /** What each screen observes and sends. */
1573
1909
  capture_stack?: Record<string, unknown>;
1574
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. */
1575
1911
  cross_day_matching?: Record<string, unknown>;
@@ -1585,15 +1921,13 @@ type MeasurementMethodology = {
1585
1921
  fallback_path?: string;
1586
1922
  /** How identifiers are keyed, and what erasure means. */
1587
1923
  hashing?: Record<string, unknown>;
1588
- /** 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. */
1589
1925
  identifier_inflation?: Record<string, unknown>;
1590
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). */
1591
1927
  mrc_ooh_phase2_alignment: Record<string, unknown>;
1592
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. */
1593
1929
  parser_versions?: Record<string, unknown>;
1594
- /** k-anonymity floor and differential-privacy budget. */
1595
- privacy_gates: Record<string, unknown>;
1596
- /** 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. */
1597
1931
  retention: Record<string, unknown>;
1598
1932
  /** Tables a reviewer re-derives every published count from. */
1599
1933
  source_tables: Array<string>;
@@ -1820,6 +2154,25 @@ type PartnerDeviceHeartbeatBody = {
1820
2154
  wifiSsidHash?: string | null;
1821
2155
  [key: string]: unknown;
1822
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
+ };
1823
2176
  /**
1824
2177
  * Request body accepted by the single-device registration endpoints
1825
2178
  * (`@trillboards/api-client` `PartnerDeviceRegistrationInput`). Additional
@@ -1831,8 +2184,8 @@ type PartnerDeviceRegistrationInput = {
1831
2184
  device_id?: string;
1832
2185
  /** Legacy SDK alias for the device identifier, retained for backwards compatibility. */
1833
2186
  device_name?: string;
1834
- /** 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. */
1835
- 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";
1836
2189
  /** Display specification (pixel resolution and/or physical size). */
1837
2190
  display?: Record<string, unknown>;
1838
2191
  display_settings?: PartnerRegistrationDisplaySettings;
@@ -1949,7 +2302,7 @@ type PartnerHeartbeatRequest = {
1949
2302
  last_vast_response_at?: string;
1950
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. */
1951
2304
  location?: {
1952
- /** Horizontal accuracy radius in meters. Fixes above ~500m are clamped. */
2305
+ /** Horizontal accuracy radius in meters, stored as the device reports it. */
1953
2306
  accuracy_m?: number;
1954
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. */
1955
2308
  buffered_locations?: Array<{
@@ -1970,7 +2323,7 @@ type PartnerHeartbeatRequest = {
1970
2323
  source?: "gps" | "gps_buffered";
1971
2324
  /** Ground speed in meters per second. Omit if unavailable. */
1972
2325
  speed_mps?: number;
1973
- /** 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. */
1974
2327
  timestamp?: number;
1975
2328
  };
1976
2329
  /** Alternate namespace for telemetry keys (legacy support). */
@@ -2093,6 +2446,21 @@ type PartnerHeartbeatTelemetry = {
2093
2446
  webview_chromium_major?: number;
2094
2447
  [key: string]: unknown;
2095
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
+ };
2096
2464
  type PartnerLBarContent = {
2097
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. */
2098
2466
  business_name?: string;
@@ -2145,6 +2513,30 @@ type PartnerLBarSettings = {
2145
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`. */
2146
2514
  playback_policy?: Record<string, unknown>;
2147
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
+ };
2148
2540
  /**
2149
2541
  * Stripe-style monetization requirements (account.requirements analogue).
2150
2542
  * Returned on device register / update / get / batch so bulk partners can
@@ -2413,6 +2805,29 @@ type PartnerStats = {
2413
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. */
2414
2806
  total_revenue_cents?: number;
2415
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
+ };
2416
2831
  /**
2417
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.
2418
2833
  */
@@ -2985,7 +3400,7 @@ type SensingRoute = {
2985
3400
  } | null;
2986
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). */
2987
3402
  enabled?: boolean;
2988
- /** `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. */
2989
3404
  mode?: "threshold" | "digest";
2990
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. */
2991
3406
  name?: string;
@@ -2997,9 +3412,11 @@ type SensingRoute = {
2997
3412
  partnerId?: string;
2998
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. */
2999
3414
  profileName?: string | null;
3415
+ reviewTimingMode?: SensingRouteReviewTimingMode;
3416
+ reviewWaitSeconds?: SensingRouteReviewWaitSeconds;
3000
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. */
3001
3418
  routeId?: string;
3002
- /** 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. */
3003
3420
  screenFocusRegions?: Array<SensingRouteScreenFocusRegion>;
3004
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. */
3005
3422
  screenMongoIds?: Array<string>;
@@ -3044,6 +3461,14 @@ type SensingRouteCondition = {
3044
3461
  /** The threshold value (numeric, string, or boolean depending on the field). */
3045
3462
  value?: number | string | boolean;
3046
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;
3047
3472
  /**
3048
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.
3049
3474
  */
@@ -3203,6 +3628,8 @@ type Transaction = {
3203
3628
  created_at?: string;
3204
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. */
3205
3630
  date?: string;
3631
+ earning_source_version?: 1;
3632
+ earning_sources?: EarningsSources;
3206
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>`. */
3207
3634
  id?: string;
3208
3635
  /** Number of impressions (for earning transactions) */
@@ -3219,7 +3646,7 @@ type Transaction = {
3219
3646
  */
3220
3647
  type TrillboardsError = {
3221
3648
  error: {
3222
- /** 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`. */
3223
3650
  code: string;
3224
3651
  /** Per-field violations (populated from Zod errors). */
3225
3652
  details?: Array<{
@@ -3246,7 +3673,7 @@ type TrillboardsError = {
3246
3673
  };
3247
3674
  };
3248
3675
  /**
3249
- * 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.
3250
3677
  */
3251
3678
  type UpdatePartnerSensingRouteRequest = {
3252
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. */
@@ -3275,6 +3702,8 @@ type UpdatePartnerSensingRouteRequest = {
3275
3702
  name?: string;
3276
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. */
3277
3704
  profileName?: string | null;
3705
+ reviewTimingMode?: SensingRouteReviewTimingMode;
3706
+ reviewWaitSeconds?: SensingRouteReviewWaitSeconds;
3278
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. */
3279
3708
  screenFocusRegions?: Array<SensingRouteScreenFocusRegion>;
3280
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). */
@@ -3333,7 +3762,7 @@ type Webhook = {
3333
3762
  /** When webhook was created */
3334
3763
  created_at?: string;
3335
3764
  /** Subscribed event types */
3336
- 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">;
3337
3766
  /** Total failed deliveries */
3338
3767
  failure_count?: number;
3339
3768
  /** Last time webhook was triggered */
@@ -3414,7 +3843,7 @@ type WifiScanResult = {
3414
3843
  channelWidthMhz?: number | null;
3415
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. */
3416
3845
  frequencyMhz: number;
3417
- /** 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. */
3418
3847
  rawBssid: string;
3419
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. */
3420
3849
  signalStrengthDbm: number;
@@ -3428,6 +3857,13 @@ interface queryChangelogOperation {
3428
3857
  readonly path: "/v1/changelog";
3429
3858
  readonly method: "GET";
3430
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
+ };
3431
3867
  response: ChangelogResponse;
3432
3868
  }
3433
3869
  /**
@@ -3438,6 +3874,8 @@ interface listErrorCodesOperation {
3438
3874
  readonly path: "/v1/errors";
3439
3875
  readonly method: "GET";
3440
3876
  request: never;
3877
+ params: Record<string, unknown>;
3878
+ query: Record<string, unknown>;
3441
3879
  response: ErrorListResponse;
3442
3880
  }
3443
3881
  /**
@@ -3448,6 +3886,11 @@ interface getErrorCodeOperation {
3448
3886
  readonly path: "/v1/errors/{code}";
3449
3887
  readonly method: "GET";
3450
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>;
3451
3894
  response: ErrorCodeResponse;
3452
3895
  }
3453
3896
  /**
@@ -3458,6 +3901,8 @@ interface listPartnerSelfPromoAdsOperation {
3458
3901
  readonly path: "/v1/partner/ads/self-promo";
3459
3902
  readonly method: "GET";
3460
3903
  request: never;
3904
+ params: Record<string, unknown>;
3905
+ query: Record<string, unknown>;
3461
3906
  response: {
3462
3907
  data?: Array<PartnerSelfPromoAd>;
3463
3908
  success?: boolean;
@@ -3471,6 +3916,8 @@ interface createPartnerSelfPromoAdOperation {
3471
3916
  readonly path: "/v1/partner/ads/self-promo";
3472
3917
  readonly method: "POST";
3473
3918
  request: PartnerSelfPromoCreate;
3919
+ params: Record<string, unknown>;
3920
+ query: Record<string, unknown>;
3474
3921
  response: {
3475
3922
  data?: PartnerSelfPromoAd;
3476
3923
  success?: boolean;
@@ -3485,6 +3932,8 @@ interface listPartnerSelfPromoPlacementsOperation {
3485
3932
  readonly path: "/v1/partner/ads/self-promo/placements";
3486
3933
  readonly method: "GET";
3487
3934
  request: never;
3935
+ params: Record<string, unknown>;
3936
+ query: Record<string, unknown>;
3488
3937
  response: {
3489
3938
  data?: Array<PartnerSelfPromoPlacement>;
3490
3939
  success?: boolean;
@@ -3503,6 +3952,8 @@ interface schedulePartnerSelfPromoOperation {
3503
3952
  screen_ids: Array<string>;
3504
3953
  start_date?: string;
3505
3954
  };
3955
+ params: Record<string, unknown>;
3956
+ query: Record<string, unknown>;
3506
3957
  response: {
3507
3958
  success?: boolean;
3508
3959
  };
@@ -3515,6 +3966,8 @@ interface createPartnerSelfPromoUploadOperation {
3515
3966
  readonly path: "/v1/partner/ads/self-promo/upload";
3516
3967
  readonly method: "POST";
3517
3968
  request: never;
3969
+ params: Record<string, unknown>;
3970
+ query: Record<string, unknown>;
3518
3971
  response: {
3519
3972
  data?: PartnerSelfPromoAd;
3520
3973
  success?: boolean;
@@ -3529,6 +3982,10 @@ interface disableSelfPromoAdOperation {
3529
3982
  readonly path: "/v1/partner/ads/self-promo/{ad_id}/disable";
3530
3983
  readonly method: "POST";
3531
3984
  request: never;
3985
+ params: {
3986
+ ad_id: string;
3987
+ };
3988
+ query: Record<string, unknown>;
3532
3989
  response: {
3533
3990
  ad_id?: string;
3534
3991
  status?: "disabled";
@@ -3555,6 +4012,8 @@ interface registerAgentOperation {
3555
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. */
3556
4013
  sandbox?: boolean;
3557
4014
  };
4015
+ params: Record<string, unknown>;
4016
+ query: Record<string, unknown>;
3558
4017
  response: {
3559
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`. */
3560
4019
  account?: {
@@ -3609,6 +4068,11 @@ interface getAnalyticsOperation {
3609
4068
  readonly path: "/v1/partner/analytics";
3610
4069
  readonly method: "GET";
3611
4070
  request: never;
4071
+ params: Record<string, unknown>;
4072
+ query: {
4073
+ end_date?: string;
4074
+ start_date?: string;
4075
+ };
3612
4076
  response: {
3613
4077
  data?: {
3614
4078
  devices_by_status?: Array<Record<string, unknown>>;
@@ -3640,6 +4104,11 @@ interface getAudienceContinuityOperation {
3640
4104
  readonly path: "/v1/partner/analytics/audience-continuity";
3641
4105
  readonly method: "GET";
3642
4106
  request: never;
4107
+ params: Record<string, unknown>;
4108
+ query: {
4109
+ timeRange?: "today" | "last_7d" | "last_30d";
4110
+ windowMinutes?: number;
4111
+ };
3643
4112
  response: {
3644
4113
  data?: {
3645
4114
  confidence?: string;
@@ -3657,6 +4126,10 @@ interface getAudienceProfileOperation {
3657
4126
  readonly path: "/v1/partner/analytics/audience-profile";
3658
4127
  readonly method: "GET";
3659
4128
  request: never;
4129
+ params: Record<string, unknown>;
4130
+ query: {
4131
+ timeRange?: "today" | "last_7d" | "last_30d";
4132
+ };
3660
4133
  response: {
3661
4134
  data?: {
3662
4135
  sampleSize?: number;
@@ -3673,6 +4146,10 @@ interface getBleSummaryOperation {
3673
4146
  readonly path: "/v1/partner/analytics/ble-summary";
3674
4147
  readonly method: "GET";
3675
4148
  request: never;
4149
+ params: Record<string, unknown>;
4150
+ query: {
4151
+ timeRange?: "today" | "last_7d" | "last_30d";
4152
+ };
3676
4153
  response: {
3677
4154
  data?: {
3678
4155
  totalObservations?: number;
@@ -3689,6 +4166,14 @@ interface getContentPerformanceOperation {
3689
4166
  readonly path: "/v1/partner/analytics/content-performance";
3690
4167
  readonly method: "GET";
3691
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
+ };
3692
4177
  response: {
3693
4178
  data?: {
3694
4179
  byScreen?: Record<string, unknown>;
@@ -3726,6 +4211,12 @@ interface searchCreativeCatalogOperation {
3726
4211
  readonly path: "/v1/partner/analytics/creative-catalog";
3727
4212
  readonly method: "GET";
3728
4213
  request: never;
4214
+ params: Record<string, unknown>;
4215
+ query: {
4216
+ limit?: number;
4217
+ offset?: number;
4218
+ q?: string;
4219
+ };
3729
4220
  response: {
3730
4221
  data?: {
3731
4222
  creatives?: Array<{
@@ -3753,6 +4244,14 @@ interface getCreativeScenesOperation {
3753
4244
  readonly path: "/v1/partner/analytics/creative-scenes";
3754
4245
  readonly method: "GET";
3755
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
+ };
3756
4255
  response: {
3757
4256
  data?: {
3758
4257
  adId?: string;
@@ -3773,6 +4272,10 @@ interface getCrossScreenFlowOperation {
3773
4272
  readonly path: "/v1/partner/analytics/cross-screen-flow";
3774
4273
  readonly method: "GET";
3775
4274
  request: never;
4275
+ params: Record<string, unknown>;
4276
+ query: {
4277
+ timeRange?: "today" | "last_7d" | "last_30d";
4278
+ };
3776
4279
  response: {
3777
4280
  data?: {
3778
4281
  edges?: Array<Record<string, unknown>>;
@@ -3789,6 +4292,12 @@ interface getPartnerAnalyticsDashboardOperation {
3789
4292
  readonly path: "/v1/partner/analytics/dashboard";
3790
4293
  readonly method: "GET";
3791
4294
  request: never;
4295
+ params: Record<string, unknown>;
4296
+ query: {
4297
+ endDate?: string;
4298
+ period?: "7d" | "30d" | "90d" | "custom";
4299
+ startDate?: string;
4300
+ };
3792
4301
  response: {
3793
4302
  data?: {
3794
4303
  ads?: Record<string, unknown>;
@@ -3819,6 +4328,10 @@ interface getDeviceSuiteSignatureOperation {
3819
4328
  readonly path: "/v1/partner/analytics/device-suite-signature";
3820
4329
  readonly method: "GET";
3821
4330
  request: never;
4331
+ params: Record<string, unknown>;
4332
+ query: {
4333
+ timeRange?: "today" | "last_7d" | "last_30d";
4334
+ };
3822
4335
  response: {
3823
4336
  data?: {
3824
4337
  deviceTypes?: Array<Record<string, unknown>>;
@@ -3835,6 +4348,13 @@ interface exportPartnerAnalyticsOperation {
3835
4348
  readonly path: "/v1/partner/analytics/export";
3836
4349
  readonly method: "GET";
3837
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
+ };
3838
4358
  response: unknown;
3839
4359
  }
3840
4360
  /**
@@ -3845,6 +4365,12 @@ interface exportPartnerAdsByDayOperation {
3845
4365
  readonly path: "/v1/partner/analytics/export/ads-by-day";
3846
4366
  readonly method: "GET";
3847
4367
  request: never;
4368
+ params: Record<string, unknown>;
4369
+ query: {
4370
+ endDate: string;
4371
+ format?: "csv" | "json";
4372
+ startDate: string;
4373
+ };
3848
4374
  response: {
3849
4375
  data?: Array<{
3850
4376
  ad_name?: string;
@@ -3869,6 +4395,10 @@ interface getFleetHourlyOperation {
3869
4395
  readonly path: "/v1/partner/analytics/fleet-hourly";
3870
4396
  readonly method: "GET";
3871
4397
  request: never;
4398
+ params: Record<string, unknown>;
4399
+ query: {
4400
+ timeRange?: "today" | "last_7d" | "last_30d";
4401
+ };
3872
4402
  response: {
3873
4403
  data?: {
3874
4404
  hours?: Array<Record<string, unknown>>;
@@ -3885,6 +4415,10 @@ interface getHaloFunnelOperation {
3885
4415
  readonly path: "/v1/partner/analytics/halo-funnel";
3886
4416
  readonly method: "GET";
3887
4417
  request: never;
4418
+ params: Record<string, unknown>;
4419
+ query: {
4420
+ timeRange?: "today" | "last_7d" | "last_30d";
4421
+ };
3888
4422
  response: {
3889
4423
  data?: {
3890
4424
  stages?: Array<Record<string, unknown>>;
@@ -3900,6 +4434,10 @@ interface getLoyaltyClockOperation {
3900
4434
  readonly path: "/v1/partner/analytics/loyalty-clock";
3901
4435
  readonly method: "GET";
3902
4436
  request: never;
4437
+ params: Record<string, unknown>;
4438
+ query: {
4439
+ timeRange?: "today" | "last_7d" | "last_30d";
4440
+ };
3903
4441
  response: {
3904
4442
  data?: {
3905
4443
  hours?: Array<{
@@ -3922,6 +4460,10 @@ interface getNetworkSummaryOperation {
3922
4460
  readonly path: "/v1/partner/analytics/network-summary";
3923
4461
  readonly method: "GET";
3924
4462
  request: never;
4463
+ params: Record<string, unknown>;
4464
+ query: {
4465
+ timeRange?: "today" | "last_7d" | "last_30d";
4466
+ };
3925
4467
  response: {
3926
4468
  data?: {
3927
4469
  dataAvailable?: boolean;
@@ -3940,6 +4482,11 @@ interface getNetworkTrendOperation {
3940
4482
  readonly path: "/v1/partner/analytics/network-trend";
3941
4483
  readonly method: "GET";
3942
4484
  request: never;
4485
+ params: Record<string, unknown>;
4486
+ query: {
4487
+ interval?: "1h" | "1d";
4488
+ timeRange?: "today" | "last_7d" | "last_30d";
4489
+ };
3943
4490
  response: {
3944
4491
  data?: {
3945
4492
  interval?: string;
@@ -3950,13 +4497,17 @@ interface getNetworkTrendOperation {
3950
4497
  };
3951
4498
  }
3952
4499
  /**
3953
- * Privacy-safe cross-screen proximity-graph summary
4500
+ * Cross-screen proximity-graph summary
3954
4501
  * GET /v1/partner/analytics/proximity-summary
3955
4502
  */
3956
4503
  interface getProximitySummaryOperation {
3957
4504
  readonly path: "/v1/partner/analytics/proximity-summary";
3958
4505
  readonly method: "GET";
3959
4506
  request: never;
4507
+ params: Record<string, unknown>;
4508
+ query: {
4509
+ timeRange?: "today" | "last_7d" | "last_30d";
4510
+ };
3960
4511
  response: {
3961
4512
  data?: {
3962
4513
  continuityEdges?: Array<Record<string, unknown>>;
@@ -3978,6 +4529,10 @@ interface getRevenueAttentionCorrelationOperation {
3978
4529
  readonly path: "/v1/partner/analytics/revenue-attention-correlation";
3979
4530
  readonly method: "GET";
3980
4531
  request: never;
4532
+ params: Record<string, unknown>;
4533
+ query: {
4534
+ timeRange?: "today" | "last_7d" | "last_30d";
4535
+ };
3981
4536
  response: {
3982
4537
  data?: {
3983
4538
  points?: Array<Record<string, unknown>>;
@@ -3994,6 +4549,11 @@ interface getSceneFeedOperation {
3994
4549
  readonly path: "/v1/partner/analytics/scene-feed";
3995
4550
  readonly method: "GET";
3996
4551
  request: never;
4552
+ params: Record<string, unknown>;
4553
+ query: {
4554
+ limit?: number;
4555
+ offset?: number;
4556
+ };
3997
4557
  response: {
3998
4558
  data?: {
3999
4559
  /** Distinct calendar days with observations over the last 90 days. */
@@ -4018,6 +4578,8 @@ interface getSceneIntelligenceOperation {
4018
4578
  readonly path: "/v1/partner/analytics/scene-intelligence";
4019
4579
  readonly method: "GET";
4020
4580
  request: never;
4581
+ params: Record<string, unknown>;
4582
+ query: Record<string, unknown>;
4021
4583
  response: {
4022
4584
  data?: {
4023
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. */
@@ -4040,6 +4602,8 @@ interface rotateApiKeyOperation {
4040
4602
  readonly path: "/v1/partner/api-key/rotate";
4041
4603
  readonly method: "POST";
4042
4604
  request: never;
4605
+ params: Record<string, unknown>;
4606
+ query: Record<string, unknown>;
4043
4607
  response: {
4044
4608
  data?: {
4045
4609
  /** New API key — shown only once! */
@@ -4060,6 +4624,10 @@ interface getAudienceAnalyticsOperation {
4060
4624
  readonly path: "/v1/partner/audience-analytics";
4061
4625
  readonly method: "GET";
4062
4626
  request: never;
4627
+ params: Record<string, unknown>;
4628
+ query: {
4629
+ period?: "24h" | "7d" | "30d";
4630
+ };
4063
4631
  response: AudienceAnalyticsResponse;
4064
4632
  }
4065
4633
  /**
@@ -4070,6 +4638,14 @@ interface exportAudienceDataOperation {
4070
4638
  readonly path: "/v1/partner/audience-export";
4071
4639
  readonly method: "GET";
4072
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
+ };
4073
4649
  response: AudienceExportResponse;
4074
4650
  }
4075
4651
  /**
@@ -4080,6 +4656,11 @@ interface getAudienceHeatmapOperation {
4080
4656
  readonly path: "/v1/partner/audience/heatmap";
4081
4657
  readonly method: "GET";
4082
4658
  request: never;
4659
+ params: Record<string, unknown>;
4660
+ query: {
4661
+ days?: number;
4662
+ screen_ids?: string;
4663
+ };
4083
4664
  response: {
4084
4665
  cells?: number;
4085
4666
  heatmap?: Array<Record<string, unknown>>;
@@ -4097,6 +4678,10 @@ interface getLiveAudienceOperation {
4097
4678
  readonly path: "/v1/partner/audience/live/{screenId}";
4098
4679
  readonly method: "GET";
4099
4680
  request: never;
4681
+ params: {
4682
+ screenId: string;
4683
+ };
4684
+ query: Record<string, unknown>;
4100
4685
  response: {
4101
4686
  /** Null when screen is offline */
4102
4687
  audience?: {
@@ -4131,6 +4716,15 @@ interface getLookalikeScreensOperation {
4131
4716
  readonly path: "/v1/partner/audience/lookalikes/{screenId}";
4132
4717
  readonly method: "GET";
4133
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
+ };
4134
4728
  response: {
4135
4729
  filters?: {
4136
4730
  country?: string | null;
@@ -4152,6 +4746,14 @@ interface predictScreenAudienceOperation {
4152
4746
  readonly path: "/v1/partner/audience/predict/{screenId}";
4153
4747
  readonly method: "GET";
4154
4748
  request: never;
4749
+ params: {
4750
+ screenId: string;
4751
+ };
4752
+ query: {
4753
+ day: number;
4754
+ hour: number;
4755
+ lookback_days?: number;
4756
+ };
4155
4757
  response: {
4156
4758
  day_of_week?: number;
4157
4759
  hour_utc?: number;
@@ -4173,6 +4775,10 @@ interface getResolvedHouseholdReachOperation {
4173
4775
  readonly path: "/v1/partner/audience/resolved-household-reach/{campaignId}";
4174
4776
  readonly method: "GET";
4175
4777
  request: never;
4778
+ params: {
4779
+ campaignId: string;
4780
+ };
4781
+ query: Record<string, unknown>;
4176
4782
  response: {
4177
4783
  audience_composition?: Array<Record<string, unknown>>;
4178
4784
  campaign_id?: string;
@@ -4192,6 +4798,8 @@ interface listAudienceSegmentsOperation {
4192
4798
  readonly path: "/v1/partner/audience/segments";
4193
4799
  readonly method: "GET";
4194
4800
  request: never;
4801
+ params: Record<string, unknown>;
4802
+ query: Record<string, unknown>;
4195
4803
  response: {
4196
4804
  data?: Array<AudienceSegment>;
4197
4805
  has_more?: boolean;
@@ -4220,6 +4828,8 @@ interface createAudienceSegmentOperation {
4220
4828
  value: unknown;
4221
4829
  }>;
4222
4830
  };
4831
+ params: Record<string, unknown>;
4832
+ query: Record<string, unknown>;
4223
4833
  response: AudienceSegment;
4224
4834
  }
4225
4835
  /**
@@ -4230,6 +4840,10 @@ interface deleteAudienceSegmentOperation {
4230
4840
  readonly path: "/v1/partner/audience/segments/{segmentId}";
4231
4841
  readonly method: "DELETE";
4232
4842
  request: never;
4843
+ params: {
4844
+ segmentId: string;
4845
+ };
4846
+ query: Record<string, unknown>;
4233
4847
  response: {
4234
4848
  deleted?: boolean;
4235
4849
  id?: string;
@@ -4245,6 +4859,10 @@ interface getAudienceSegmentOperation {
4245
4859
  readonly path: "/v1/partner/audience/segments/{segmentId}";
4246
4860
  readonly method: "GET";
4247
4861
  request: never;
4862
+ params: {
4863
+ segmentId: string;
4864
+ };
4865
+ query: Record<string, unknown>;
4248
4866
  response: AudienceSegment;
4249
4867
  }
4250
4868
  /**
@@ -4264,6 +4882,10 @@ interface updateAudienceSegmentOperation {
4264
4882
  value?: unknown;
4265
4883
  }>;
4266
4884
  };
4885
+ params: {
4886
+ segmentId: string;
4887
+ };
4888
+ query: Record<string, unknown>;
4267
4889
  response: AudienceSegment;
4268
4890
  }
4269
4891
  /**
@@ -4274,6 +4896,13 @@ interface matchAudienceSegmentOperation {
4274
4896
  readonly path: "/v1/partner/audience/segments/{segmentId}/match";
4275
4897
  readonly method: "POST";
4276
4898
  request: never;
4899
+ params: {
4900
+ segmentId: string;
4901
+ };
4902
+ query: {
4903
+ limit?: number;
4904
+ own_screens_only?: "true" | "false";
4905
+ };
4277
4906
  response: {
4278
4907
  matched_count?: number;
4279
4908
  matches?: Array<Record<string, unknown>>;
@@ -4292,6 +4921,12 @@ interface estimateSegmentReachOperation {
4292
4921
  readonly path: "/v1/partner/audience/segments/{segmentId}/reach";
4293
4922
  readonly method: "POST";
4294
4923
  request: never;
4924
+ params: {
4925
+ segmentId: string;
4926
+ };
4927
+ query: {
4928
+ own_screens_only?: "true" | "false";
4929
+ };
4295
4930
  response: {
4296
4931
  country_breakdown?: Record<string, number>;
4297
4932
  estimated_daily_cpm?: number;
@@ -4322,6 +4957,10 @@ interface generateSegmentVastTagOperation {
4322
4957
  duration?: number;
4323
4958
  own_screens_only?: boolean;
4324
4959
  };
4960
+ params: {
4961
+ segmentId: string;
4962
+ };
4963
+ query: Record<string, unknown>;
4325
4964
  response: {
4326
4965
  creative?: {
4327
4966
  click_through?: string | null;
@@ -4345,6 +4984,8 @@ interface getAudienceStatsOperation {
4345
4984
  readonly path: "/v1/partner/audience/stats";
4346
4985
  readonly method: "GET";
4347
4986
  request: never;
4987
+ params: Record<string, unknown>;
4988
+ query: Record<string, unknown>;
4348
4989
  response: {
4349
4990
  data_access_tier?: "basic" | "developer" | "enterprise";
4350
4991
  newest_data?: string | null;
@@ -4364,6 +5005,8 @@ interface cancelBillingSubscriptionOperation {
4364
5005
  readonly path: "/v1/partner/billing/cancel";
4365
5006
  readonly method: "POST";
4366
5007
  request: never;
5008
+ params: Record<string, unknown>;
5009
+ query: Record<string, unknown>;
4367
5010
  response: {
4368
5011
  effective_at?: string;
4369
5012
  status?: "canceled" | "scheduled_for_cancellation";
@@ -4380,6 +5023,8 @@ interface purchaseCreditsOperation {
4380
5023
  /** Credit purchase tier */
4381
5024
  tier: "tier_500" | "tier_2000" | "tier_5000";
4382
5025
  };
5026
+ params: Record<string, unknown>;
5027
+ query: Record<string, unknown>;
4383
5028
  response: {
4384
5029
  /** Amount charged in cents */
4385
5030
  charged_cents?: number;
@@ -4407,6 +5052,8 @@ interface createCreditCheckoutOperation {
4407
5052
  success_url?: string;
4408
5053
  tier: "tier_500" | "tier_2000" | "tier_5000";
4409
5054
  };
5055
+ params: Record<string, unknown>;
5056
+ query: Record<string, unknown>;
4410
5057
  response: {
4411
5058
  /** Stripe Checkout URL — redirect user here */
4412
5059
  checkout_url?: string;
@@ -4425,6 +5072,8 @@ interface listBillingPlansOperation {
4425
5072
  readonly path: "/v1/partner/billing/plans";
4426
5073
  readonly method: "GET";
4427
5074
  request: never;
5075
+ params: Record<string, unknown>;
5076
+ query: Record<string, unknown>;
4428
5077
  response: {
4429
5078
  plans?: Array<{
4430
5079
  included_ads?: number;
@@ -4446,6 +5095,8 @@ interface setupBillingOperation {
4446
5095
  /** Stripe payment method token obtained from Stripe.js or Stripe Elements */
4447
5096
  payment_method_id: string;
4448
5097
  };
5098
+ params: Record<string, unknown>;
5099
+ query: Record<string, unknown>;
4449
5100
  response: {
4450
5101
  billing_status?: string;
4451
5102
  message?: string;
@@ -4464,6 +5115,8 @@ interface createBillingSubscriptionOperation {
4464
5115
  request: {
4465
5116
  tier: "developer" | "enterprise";
4466
5117
  };
5118
+ params: Record<string, unknown>;
5119
+ query: Record<string, unknown>;
4467
5120
  response: {
4468
5121
  checkout_url?: string | null;
4469
5122
  status?: "active" | "requires_payment";
@@ -4477,6 +5130,8 @@ interface getBillingSubscriptionOperation {
4477
5130
  readonly path: "/v1/partner/billing/subscription";
4478
5131
  readonly method: "GET";
4479
5132
  request: never;
5133
+ params: Record<string, unknown>;
5134
+ query: Record<string, unknown>;
4480
5135
  response: {
4481
5136
  current_period_end?: string;
4482
5137
  status?: "active" | "past_due" | "canceled" | "trialing";
@@ -4492,6 +5147,8 @@ interface getBillingUsageOperation {
4492
5147
  readonly path: "/v1/partner/billing/usage";
4493
5148
  readonly method: "GET";
4494
5149
  request: never;
5150
+ params: Record<string, unknown>;
5151
+ query: Record<string, unknown>;
4495
5152
  response: {
4496
5153
  ads_served?: number;
4497
5154
  audience_api_calls?: number;
@@ -4509,6 +5166,8 @@ interface getBillingUsageSummaryOperation {
4509
5166
  readonly path: "/v1/partner/billing/usage-summary";
4510
5167
  readonly method: "GET";
4511
5168
  request: never;
5169
+ params: Record<string, unknown>;
5170
+ query: Record<string, unknown>;
4512
5171
  response: {
4513
5172
  /** Current billing status */
4514
5173
  billing_status?: "none" | "active" | "suspended";
@@ -4541,6 +5200,8 @@ interface stripeWebhookCallbackOperation {
4541
5200
  readonly path: "/v1/partner/billing/webhook";
4542
5201
  readonly method: "POST";
4543
5202
  request: Record<string, unknown>;
5203
+ params: Record<string, unknown>;
5204
+ query: Record<string, unknown>;
4544
5205
  response: unknown;
4545
5206
  }
4546
5207
  /**
@@ -4551,6 +5212,10 @@ interface getConnectDashboardOperation {
4551
5212
  readonly path: "/v1/partner/connect/dashboard";
4552
5213
  readonly method: "GET";
4553
5214
  request: never;
5215
+ params: Record<string, unknown>;
5216
+ query: {
5217
+ period?: "7d" | "30d" | "90d";
5218
+ };
4554
5219
  response: {
4555
5220
  data?: {
4556
5221
  charts?: {
@@ -4618,6 +5283,11 @@ interface getConnectEarningsChartOperation {
4618
5283
  readonly path: "/v1/partner/connect/earnings";
4619
5284
  readonly method: "GET";
4620
5285
  request: never;
5286
+ params: Record<string, unknown>;
5287
+ query: {
5288
+ group_by?: "day" | "week";
5289
+ period?: "7d" | "30d" | "90d";
5290
+ };
4621
5291
  response: {
4622
5292
  data?: {
4623
5293
  chart?: Array<{
@@ -4651,6 +5321,10 @@ interface getConnectScreenHealthOperation {
4651
5321
  readonly path: "/v1/partner/connect/health";
4652
5322
  readonly method: "GET";
4653
5323
  request: never;
5324
+ params: Record<string, unknown>;
5325
+ query: {
5326
+ status?: "online" | "offline" | "all";
5327
+ };
4654
5328
  response: {
4655
5329
  data?: {
4656
5330
  checked_at?: string;
@@ -4694,6 +5368,8 @@ interface listContentPresetsOperation {
4694
5368
  readonly path: "/v1/partner/content-presets";
4695
5369
  readonly method: "GET";
4696
5370
  request: never;
5371
+ params: Record<string, unknown>;
5372
+ query: Record<string, unknown>;
4697
5373
  response: {
4698
5374
  data?: Array<ContentPreset>;
4699
5375
  has_more?: boolean;
@@ -4710,8 +5386,170 @@ interface getContentPresetOperation {
4710
5386
  readonly path: "/v1/partner/content-presets/{presetId}";
4711
5387
  readonly method: "GET";
4712
5388
  request: never;
5389
+ params: {
5390
+ presetId: string;
5391
+ };
5392
+ query: Record<string, unknown>;
4713
5393
  response: ContentPreset;
4714
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
+ }
4715
5553
  /**
4716
5554
  * Submit a creative for classification
4717
5555
  * POST /v1/partner/creatives
@@ -4725,6 +5563,8 @@ interface submitPartnerCreativeOperation {
4725
5563
  /** Public http(s) URL of the creative image or video. Must resolve to a public address — private/internal/cloud-metadata addresses are rejected. */
4726
5564
  media_url: string;
4727
5565
  };
5566
+ params: Record<string, unknown>;
5567
+ query: Record<string, unknown>;
4728
5568
  response: CreativeClassification;
4729
5569
  }
4730
5570
  /**
@@ -4735,6 +5575,10 @@ interface getPartnerCreativeOperation {
4735
5575
  readonly path: "/v1/partner/creatives/{ref}";
4736
5576
  readonly method: "GET";
4737
5577
  request: never;
5578
+ params: {
5579
+ ref: string;
5580
+ };
5581
+ query: Record<string, unknown>;
4738
5582
  response: CreativeClassification;
4739
5583
  }
4740
5584
  /**
@@ -4745,6 +5589,8 @@ interface getDashboardOperation {
4745
5589
  readonly path: "/v1/partner/dashboard";
4746
5590
  readonly method: "GET";
4747
5591
  request: never;
5592
+ params: Record<string, unknown>;
5593
+ query: Record<string, unknown>;
4748
5594
  response: {
4749
5595
  data?: DashboardResponse;
4750
5596
  success?: boolean;
@@ -4758,7 +5604,37 @@ interface exportProximityGraphEdgesOperation {
4758
5604
  readonly path: "/v1/partner/data-export/proximity-graph-edges";
4759
5605
  readonly method: "GET";
4760
5606
  request: never;
4761
- 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
+ };
4762
5638
  }
4763
5639
  /**
4764
5640
  * List available datasets and per-dataset record counts
@@ -4768,6 +5644,10 @@ interface getDataExportSummaryOperation {
4768
5644
  readonly path: "/v1/partner/data-export/summary";
4769
5645
  readonly method: "GET";
4770
5646
  request: never;
5647
+ params: Record<string, unknown>;
5648
+ query: {
5649
+ days?: number;
5650
+ };
4771
5651
  response: DataExportSummaryResponse;
4772
5652
  }
4773
5653
  /**
@@ -4778,9 +5658,16 @@ interface exportDatasetOperation {
4778
5658
  readonly path: "/v1/partner/data-export/{dataset}";
4779
5659
  readonly method: "GET";
4780
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
+ };
4781
5669
  response: {
4782
5670
  data?: {
4783
- k_anonymity_threshold?: number;
4784
5671
  lookback_days?: number;
4785
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. */
4786
5673
  rows?: Array<AudienceLoyaltyFeaturesRow | Record<string, unknown>>;
@@ -4798,47 +5685,51 @@ interface getGeohashAudiencePanelOperation {
4798
5685
  readonly path: "/v1/partner/data/geohash-audience-panel";
4799
5686
  readonly method: "GET";
4800
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
+ };
4801
5696
  response: {
4802
5697
  data?: {
4803
- /** True when the daily epsilon budget cannot accommodate this request. `rows` is empty in this case; no epsilon is deducted. */
4804
- budget_exhausted?: boolean;
4805
5698
  /** Day exported (UTC). */
4806
5699
  date: string;
4807
- /** Epsilon spent on this call (0 if `budget_exhausted` or CH unavailable). Deducted from `partner_dp_budget.epsilon_spent` on success. */
4808
- epsilon_used: number;
4809
- /** K-anonymity floor applied at SQL `HAVING`. Default 5; override via `partners.k_anon_floor`. */
4810
- k_anonymity_threshold: number;
4811
- partner_dp_budget: {
4812
- /** Maximum epsilon allowed per day for this partner. */
4813
- epsilon_max: number;
4814
- /** Epsilon already spent today before this call. */
4815
- epsilon_spent_before: number;
4816
- };
4817
- /** UUID partner_id (from `partners.partner_id`, migration 030). */
4818
- partner_id: string;
4819
- /** 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. */
4820
5709
  rows: Array<{
4821
- /** Noised average attention score (Laplace, sensitivity 0.1). */
4822
- avg_attention: number;
4823
- /** Noised average dwell seconds (Laplace, sensitivity 5). */
4824
- avg_dwell_seconds: number;
4825
- /** Noised average face count per observation (Laplace, sensitivity 1). */
4826
- 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;
4827
5716
  /** 6-character geohash bucket. */
4828
5717
  geohash6: string;
4829
5718
  /** Hour bucket as the integer hour (0..23) cast to string. */
4830
5719
  hour: string;
4831
5720
  /** Income tier bucket (e.g. `low`, `mid`, `high`). */
4832
5721
  income_tier: string;
4833
- /** Noised observation count (Laplace, sensitivity 1). */
5722
+ /** Observation count. */
4834
5723
  observation_count: number;
4835
5724
  /** Distinct screen count contributing to this bucket. */
4836
5725
  screen_count: number;
4837
- /** Noised unique-device count (Laplace, sensitivity 1). */
5726
+ /** Unique-device count. */
4838
5727
  unique_devices: number;
4839
5728
  /** Venue category from `screens_live.venue_category`. */
4840
5729
  venue_category: string;
4841
5730
  }>;
5731
+ /** `true` when more cells follow this page: request `next_offset`. */
5732
+ truncated: boolean;
4842
5733
  };
4843
5734
  success?: boolean;
4844
5735
  };
@@ -4851,40 +5742,47 @@ interface getOutcomeAttributionOperation {
4851
5742
  readonly path: "/v1/partner/data/outcome-attribution";
4852
5743
  readonly method: "GET";
4853
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
+ };
4854
5753
  response: {
4855
5754
  data?: {
4856
- /** DP epsilon charged to the partner's daily budget for this call (0 if refunded). */
4857
- epsilon_used: number;
4858
5755
  /** The reach grain applied (echoes the `grain` query param; defaults to `person`). */
4859
5756
  grain: "person" | "device";
4860
- /** The per-partner k-anon floor applied at SQL HAVING. */
4861
- k_anonymity_threshold: number;
5757
+ /** Rows per page this response was read with. */
5758
+ limit: number;
4862
5759
  /** The validated lookback window used. */
4863
5760
  lookback_days: number;
4864
- /** Daily DP budget snapshot at reservation time. */
4865
- partner_dp_budget: {
4866
- epsilon_max?: number;
4867
- epsilon_spent_before?: number;
4868
- };
4869
- /** 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. */
4870
5764
  rows: Array<{
4871
- /** 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. */
4872
5766
  avg_frequency: number;
4873
5767
  /** Creative identifier from `completed_impressions.creative_id`. */
4874
5768
  creative_id: string;
4875
- /** Noised count of exposed identities also seen on another screen. */
5769
+ /** Count of exposed identities also seen on another screen. */
4876
5770
  cross_screen_devices: number;
4877
- /** Noised count of distinct devices exposed to the creative on the screen. */
5771
+ /** Count of distinct devices exposed to the creative on the screen. */
4878
5772
  exposed_devices: number;
4879
- /** returned_devices / exposed_devices, recomputed from the noised counts. */
5773
+ /** returned_devices / exposed_devices. */
4880
5774
  return_rate: number;
4881
- /** Noised count of exposed devices that returned (clamped ≤ exposed_devices). */
5775
+ /** Count of exposed devices that returned (≤ exposed_devices). */
4882
5776
  returned_devices: number;
4883
5777
  /** The partner's own screen identifier. */
4884
5778
  screen_mongo_id: string;
4885
5779
  }>;
4886
- /** Number of rows returned. */
5780
+ /** Number of rows in this page. */
4887
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;
4888
5786
  };
4889
5787
  success?: boolean;
4890
5788
  };
@@ -4903,7 +5801,8 @@ interface registerDeviceOperation {
4903
5801
  description?: string;
4904
5802
  /** Your internal device identifier */
4905
5803
  device_id: string;
4906
- 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";
4907
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. */
4908
5807
  display?: {
4909
5808
  /** Display resolution height in pixels (e.g. 1080) */
@@ -4969,10 +5868,14 @@ interface registerDeviceOperation {
4969
5868
  subcategory?: string;
4970
5869
  };
4971
5870
  };
5871
+ params: Record<string, unknown>;
5872
+ query: Record<string, unknown>;
4972
5873
  response: {
4973
5874
  data?: {
4974
5875
  /** Our internal device ID */
4975
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";
4976
5879
  /** Load this URL in your WebView */
4977
5880
  embed_url?: string;
4978
5881
  /** Enrichment completion state */
@@ -4981,7 +5884,8 @@ interface registerDeviceOperation {
4981
5884
  external_device_id?: string;
4982
5885
  /** Device fingerprint for SDK */
4983
5886
  fingerprint?: string;
4984
- /** 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. */
4985
5889
  monetization_status?: "ready" | "limited" | "blocked";
4986
5890
  requirements?: PartnerMonetizationRequirements;
4987
5891
  /** Linked screen ID */
@@ -5000,6 +5904,10 @@ interface deleteDeviceOperation {
5000
5904
  readonly path: "/v1/partner/device/{deviceId}";
5001
5905
  readonly method: "DELETE";
5002
5906
  request: never;
5907
+ params: {
5908
+ deviceId: string;
5909
+ };
5910
+ query: Record<string, unknown>;
5003
5911
  response: {
5004
5912
  message?: string;
5005
5913
  success?: boolean;
@@ -5013,6 +5921,10 @@ interface getDeviceOperation {
5013
5921
  readonly path: "/v1/partner/device/{deviceId}";
5014
5922
  readonly method: "GET";
5015
5923
  request: never;
5924
+ params: {
5925
+ deviceId: string;
5926
+ };
5927
+ query: Record<string, unknown>;
5016
5928
  response: {
5017
5929
  data?: Device;
5018
5930
  success?: boolean;
@@ -5030,6 +5942,8 @@ interface updateDeviceOperation {
5030
5942
  custom_metadata?: Record<string, unknown>;
5031
5943
  /** Screen or venue description */
5032
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";
5033
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. */
5034
5948
  display?: {
5035
5949
  /** Display resolution height in pixels */
@@ -5092,6 +6006,10 @@ interface updateDeviceOperation {
5092
6006
  subcategory?: string;
5093
6007
  };
5094
6008
  };
6009
+ params: {
6010
+ deviceId: string;
6011
+ };
6012
+ query: Record<string, unknown>;
5095
6013
  response: {
5096
6014
  data?: Device;
5097
6015
  message?: string;
@@ -5106,6 +6024,20 @@ interface getAdsForDeviceOperation {
5106
6024
  readonly path: "/v1/partner/device/{deviceId}/ads";
5107
6025
  readonly method: "GET";
5108
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
+ };
5109
6041
  response: {
5110
6042
  data?: {
5111
6043
  ads?: Array<Ad>;
@@ -5159,6 +6091,11 @@ interface ackDeviceCommandOperation {
5159
6091
  /** Acknowledgment status */
5160
6092
  status?: string;
5161
6093
  };
6094
+ params: {
6095
+ commandId: string;
6096
+ deviceId: string;
6097
+ };
6098
+ query: Record<string, unknown>;
5162
6099
  response: {
5163
6100
  message?: string;
5164
6101
  success?: boolean;
@@ -5172,6 +6109,10 @@ interface getDeviceHeartbeatOperation {
5172
6109
  readonly path: "/v1/partner/device/{deviceId}/heartbeat";
5173
6110
  readonly method: "GET";
5174
6111
  request: never;
6112
+ params: {
6113
+ deviceId: string;
6114
+ };
6115
+ query: Record<string, unknown>;
5175
6116
  response: PartnerHeartbeatQueryResponse;
5176
6117
  }
5177
6118
  /**
@@ -5182,8 +6123,58 @@ interface heartbeatOperation {
5182
6123
  readonly path: "/v1/partner/device/{deviceId}/heartbeat";
5183
6124
  readonly method: "POST";
5184
6125
  request: PartnerHeartbeatRequest | PartnerDeviceHeartbeatBody;
6126
+ params: {
6127
+ deviceId: string;
6128
+ };
6129
+ query: Record<string, unknown>;
5185
6130
  response: PartnerHeartbeatResponse;
5186
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
+ }
5187
6178
  /**
5188
6179
  * Record programmatic ad event (Server-side Analytics)
5189
6180
  * POST /v1/partner/device/{deviceId}/programmatic-event
@@ -5203,10 +6194,37 @@ interface recordProgrammaticEventOperation {
5203
6194
  slot_width?: number;
5204
6195
  variant_name?: string;
5205
6196
  };
6197
+ params: {
6198
+ deviceId: string;
6199
+ };
6200
+ query: Record<string, unknown>;
5206
6201
  response: {
5207
6202
  success?: boolean;
5208
6203
  };
5209
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
+ }
5210
6228
  /**
5211
6229
  * List all devices
5212
6230
  * GET /v1/partner/devices
@@ -5215,6 +6233,12 @@ interface listDevicesOperation {
5215
6233
  readonly path: "/v1/partner/devices";
5216
6234
  readonly method: "GET";
5217
6235
  request: never;
6236
+ params: Record<string, unknown>;
6237
+ query: {
6238
+ limit?: number;
6239
+ offset?: number;
6240
+ status?: "pending" | "active" | "offline" | "suspended";
6241
+ };
5218
6242
  response: {
5219
6243
  data?: {
5220
6244
  devices?: Array<DeviceSummary>;
@@ -5269,6 +6293,8 @@ interface registerDeviceV2Operation {
5269
6293
  /** The device's real WebView User-Agent. Must include a Build fingerprint and be unique per device. */
5270
6294
  ua: string;
5271
6295
  };
6296
+ params: Record<string, unknown>;
6297
+ query: Record<string, unknown>;
5272
6298
  response: {
5273
6299
  data?: {
5274
6300
  device_id?: string;
@@ -5312,10 +6338,15 @@ interface registerDevicesBatchOperation {
5312
6338
  venue?: Record<string, unknown>;
5313
6339
  }>;
5314
6340
  };
6341
+ params: Record<string, unknown>;
6342
+ query: Record<string, unknown>;
5315
6343
  response: {
5316
6344
  devices?: Array<{
5317
6345
  device_id?: string;
5318
6346
  fingerprint?: string;
6347
+ location_capability?: PartnerLocationCapability;
6348
+ monetization_status?: "ready" | "limited" | "blocked";
6349
+ requirements?: PartnerMonetizationRequirements;
5319
6350
  screen_id?: string;
5320
6351
  status?: string;
5321
6352
  trillboard_id?: string;
@@ -5323,6 +6354,8 @@ interface registerDevicesBatchOperation {
5323
6354
  errors?: Array<{
5324
6355
  device_id?: string;
5325
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;
5326
6359
  status?: string;
5327
6360
  }>;
5328
6361
  success?: boolean;
@@ -5345,6 +6378,8 @@ interface batchUpdateDeviceOrientationOperation {
5345
6378
  device_ids: Array<string>;
5346
6379
  screen_orientation: "portrait" | "landscape" | "mixed" | "unknown";
5347
6380
  };
6381
+ params: Record<string, unknown>;
6382
+ query: Record<string, unknown>;
5348
6383
  response: {
5349
6384
  matched_devices?: number;
5350
6385
  missing_device_ids?: Array<string>;
@@ -5364,6 +6399,8 @@ interface reconcileDevicesOperation {
5364
6399
  /** Your device external IDs to reconcile. */
5365
6400
  external_ids: Array<string>;
5366
6401
  };
6402
+ params: Record<string, unknown>;
6403
+ query: Record<string, unknown>;
5367
6404
  response: {
5368
6405
  duplicate?: Array<Record<string, unknown>>;
5369
6406
  malformed?: Array<Record<string, unknown>>;
@@ -5391,6 +6428,8 @@ interface partnerDocsBrowserOperation {
5391
6428
  readonly path: "/v1/partner/docs";
5392
6429
  readonly method: "GET";
5393
6430
  request: never;
6431
+ params: Record<string, unknown>;
6432
+ query: Record<string, unknown>;
5394
6433
  response: unknown;
5395
6434
  }
5396
6435
  /**
@@ -5401,6 +6440,8 @@ interface getEarningsOperation {
5401
6440
  readonly path: "/v1/partner/earnings";
5402
6441
  readonly method: "GET";
5403
6442
  request: never;
6443
+ params: Record<string, unknown>;
6444
+ query: Record<string, unknown>;
5404
6445
  response: {
5405
6446
  data?: EarningsResponse;
5406
6447
  success?: boolean;
@@ -5414,6 +6455,12 @@ interface getEarningsBreakdownOperation {
5414
6455
  readonly path: "/v1/partner/earnings/breakdown";
5415
6456
  readonly method: "GET";
5416
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
+ };
5417
6464
  response: {
5418
6465
  data?: EarningsBreakdownResponse;
5419
6466
  success?: boolean;
@@ -5430,6 +6477,8 @@ interface requestPayoutOperation {
5430
6477
  /** Amount to payout in cents (optional, defaults to available balance) */
5431
6478
  amount_cents?: number;
5432
6479
  };
6480
+ params: Record<string, unknown>;
6481
+ query: Record<string, unknown>;
5433
6482
  response: {
5434
6483
  data?: PayoutResponse;
5435
6484
  message?: string;
@@ -5444,6 +6493,12 @@ interface getTransactionsOperation {
5444
6493
  readonly path: "/v1/partner/earnings/transactions";
5445
6494
  readonly method: "GET";
5446
6495
  request: never;
6496
+ params: Record<string, unknown>;
6497
+ query: {
6498
+ limit?: number;
6499
+ offset?: number;
6500
+ type?: "all" | "earning" | "payout";
6501
+ };
5447
6502
  response: {
5448
6503
  data?: {
5449
6504
  pagination?: Pagination;
@@ -5460,6 +6515,8 @@ interface getActiveSSEConnectionsOperation {
5460
6515
  readonly path: "/v1/partner/events/connections";
5461
6516
  readonly method: "GET";
5462
6517
  request: never;
6518
+ params: Record<string, unknown>;
6519
+ query: Record<string, unknown>;
5463
6520
  response: {
5464
6521
  connections?: Array<{
5465
6522
  connected_at?: string;
@@ -5480,6 +6537,10 @@ interface subscribeToEventsOperation {
5480
6537
  readonly path: "/v1/partner/events/stream";
5481
6538
  readonly method: "GET";
5482
6539
  request: never;
6540
+ params: Record<string, unknown>;
6541
+ query: {
6542
+ events?: string;
6543
+ };
5483
6544
  response: unknown;
5484
6545
  }
5485
6546
  /**
@@ -5490,6 +6551,10 @@ interface getFleetCommandOperation {
5490
6551
  readonly path: "/v1/partner/fleet-commands/{id}";
5491
6552
  readonly method: "GET";
5492
6553
  request: never;
6554
+ params: {
6555
+ id: string;
6556
+ };
6557
+ query: Record<string, unknown>;
5493
6558
  response: {
5494
6559
  data?: {
5495
6560
  fleet_command?: FleetCommand;
@@ -5505,10 +6570,17 @@ interface getFleetAnalyticsOperation {
5505
6570
  readonly path: "/v1/partner/fleet/analytics";
5506
6571
  readonly method: "GET";
5507
6572
  request: never;
6573
+ params: Record<string, unknown>;
6574
+ query: Record<string, unknown>;
5508
6575
  response: {
5509
6576
  data?: {
5510
- /** 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. */
5511
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
+ };
5512
6584
  /** Average CPM in dollars */
5513
6585
  avg_cpm?: number;
5514
6586
  /** Fill rate percentage (0-100) */
@@ -5541,6 +6613,8 @@ interface pushFleetCommandOperation {
5541
6613
  venueType?: string;
5542
6614
  };
5543
6615
  };
6616
+ params: Record<string, unknown>;
6617
+ query: Record<string, unknown>;
5544
6618
  response: {
5545
6619
  data?: {
5546
6620
  errors?: Array<{
@@ -5563,6 +6637,8 @@ interface getFleetOverviewOperation {
5563
6637
  readonly path: "/v1/partner/fleet/overview";
5564
6638
  readonly method: "GET";
5565
6639
  request: never;
6640
+ params: Record<string, unknown>;
6641
+ query: Record<string, unknown>;
5566
6642
  response: {
5567
6643
  data?: {
5568
6644
  countries?: Record<string, number>;
@@ -5602,6 +6678,8 @@ interface updateFleetSettingsOperation {
5602
6678
  };
5603
6679
  };
5604
6680
  };
6681
+ params: Record<string, unknown>;
6682
+ query: Record<string, unknown>;
5605
6683
  response: {
5606
6684
  data?: {
5607
6685
  errors?: Array<Record<string, unknown>>;
@@ -5619,6 +6697,24 @@ interface recordImpressionGetOperation {
5619
6697
  readonly path: "/v1/partner/impression";
5620
6698
  readonly method: "GET";
5621
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
+ };
5622
6718
  response: {
5623
6719
  duplicate?: boolean;
5624
6720
  message?: string;
@@ -5649,6 +6745,8 @@ interface recordImpressionPostOperation {
5649
6745
  sig?: string;
5650
6746
  sig_ts?: number;
5651
6747
  };
6748
+ params: Record<string, unknown>;
6749
+ query: Record<string, unknown>;
5652
6750
  response: {
5653
6751
  duplicate?: boolean;
5654
6752
  message?: string;
@@ -5683,6 +6781,8 @@ interface recordImpressionsBatchOperation {
5683
6781
  timestamp?: string;
5684
6782
  }>;
5685
6783
  };
6784
+ params: Record<string, unknown>;
6785
+ query: Record<string, unknown>;
5686
6786
  response: {
5687
6787
  data?: {
5688
6788
  errors?: Array<{
@@ -5704,6 +6804,8 @@ interface getPartnerInfoOperation {
5704
6804
  readonly path: "/v1/partner/info";
5705
6805
  readonly method: "GET";
5706
6806
  request: never;
6807
+ params: Record<string, unknown>;
6808
+ query: Record<string, unknown>;
5707
6809
  response: {
5708
6810
  data?: Partner;
5709
6811
  success?: boolean;
@@ -5717,6 +6819,8 @@ interface listIntentCategoriesOperation {
5717
6819
  readonly path: "/v1/partner/intent/categories";
5718
6820
  readonly method: "GET";
5719
6821
  request: never;
6822
+ params: Record<string, unknown>;
6823
+ query: Record<string, unknown>;
5720
6824
  response: {
5721
6825
  count?: number;
5722
6826
  data?: Array<{
@@ -5740,6 +6844,10 @@ interface getIntentCategoryOperation {
5740
6844
  readonly path: "/v1/partner/intent/categories/{categoryId}";
5741
6845
  readonly method: "GET";
5742
6846
  request: never;
6847
+ params: {
6848
+ categoryId: string;
6849
+ };
6850
+ query: Record<string, unknown>;
5743
6851
  response: {
5744
6852
  description?: string;
5745
6853
  iab_segments?: Array<Record<string, unknown>>;
@@ -5760,6 +6868,10 @@ interface getIntentPricingOperation {
5760
6868
  readonly path: "/v1/partner/intent/pricing/{screenId}";
5761
6869
  readonly method: "GET";
5762
6870
  request: never;
6871
+ params: {
6872
+ screenId: string;
6873
+ };
6874
+ query: Record<string, unknown>;
5763
6875
  response: {
5764
6876
  category_match?: {
5765
6877
  category_id?: string;
@@ -5798,6 +6910,10 @@ interface getMeasurementMethodologyOperation {
5798
6910
  readonly path: "/v1/partner/measurement-methodology";
5799
6911
  readonly method: "GET";
5800
6912
  request: never;
6913
+ params: Record<string, unknown>;
6914
+ query: {
6915
+ format?: "json";
6916
+ };
5801
6917
  response: MeasurementMethodology;
5802
6918
  }
5803
6919
  /**
@@ -5808,6 +6924,8 @@ interface getMeasurementMethodologyJsonOperation {
5808
6924
  readonly path: "/v1/partner/measurement-methodology.json";
5809
6925
  readonly method: "GET";
5810
6926
  request: never;
6927
+ params: Record<string, unknown>;
6928
+ query: Record<string, unknown>;
5811
6929
  response: MeasurementMethodology;
5812
6930
  }
5813
6931
  /**
@@ -5818,6 +6936,8 @@ interface getNetworkConfigOperation {
5818
6936
  readonly path: "/v1/partner/network-config";
5819
6937
  readonly method: "GET";
5820
6938
  request: never;
6939
+ params: Record<string, unknown>;
6940
+ query: Record<string, unknown>;
5821
6941
  response: {
5822
6942
  network_config?: PartnerNetworkConfig;
5823
6943
  object?: string;
@@ -5832,6 +6952,8 @@ interface patchNetworkConfigOperation {
5832
6952
  readonly path: "/v1/partner/network-config";
5833
6953
  readonly method: "PATCH";
5834
6954
  request: PartnerNetworkConfigUpdate;
6955
+ params: Record<string, unknown>;
6956
+ query: Record<string, unknown>;
5835
6957
  response: {
5836
6958
  network_config?: PartnerNetworkConfig;
5837
6959
  object?: string;
@@ -5846,6 +6968,8 @@ interface updateNetworkConfigOperation {
5846
6968
  readonly path: "/v1/partner/network-config";
5847
6969
  readonly method: "PUT";
5848
6970
  request: PartnerNetworkConfigUpdate;
6971
+ params: Record<string, unknown>;
6972
+ query: Record<string, unknown>;
5849
6973
  response: {
5850
6974
  network_config?: PartnerNetworkConfig;
5851
6975
  object?: string;
@@ -5860,6 +6984,10 @@ interface getNetworkTrendsOperation {
5860
6984
  readonly path: "/v1/partner/network/trends";
5861
6985
  readonly method: "GET";
5862
6986
  request: never;
6987
+ params: Record<string, unknown>;
6988
+ query: {
6989
+ days?: number;
6990
+ };
5863
6991
  response: {
5864
6992
  audience_shift?: Array<Record<string, unknown>>;
5865
6993
  days?: number;
@@ -5874,6 +7002,8 @@ interface partnerPingOperation {
5874
7002
  readonly path: "/v1/partner/ping";
5875
7003
  readonly method: "GET";
5876
7004
  request: never;
7005
+ params: Record<string, unknown>;
7006
+ query: Record<string, unknown>;
5877
7007
  response: {
5878
7008
  ok?: boolean;
5879
7009
  service?: string;
@@ -5887,6 +7017,8 @@ interface partnerPingAuthOperation {
5887
7017
  readonly path: "/v1/partner/ping/auth";
5888
7018
  readonly method: "GET";
5889
7019
  request: never;
7020
+ params: Record<string, unknown>;
7021
+ query: Record<string, unknown>;
5890
7022
  response: {
5891
7023
  ok?: boolean;
5892
7024
  partner_id?: string;
@@ -5901,6 +7033,8 @@ interface recordPartnerPlayOperation {
5901
7033
  readonly path: "/v1/partner/plays";
5902
7034
  readonly method: "POST";
5903
7035
  request: PartnerPlay;
7036
+ params: Record<string, unknown>;
7037
+ query: Record<string, unknown>;
5904
7038
  response: {
5905
7039
  content_sha256?: string;
5906
7040
  object?: string;
@@ -5918,6 +7052,8 @@ interface recordPartnerPlaysBatchOperation {
5918
7052
  request: {
5919
7053
  plays: Array<PartnerPlay>;
5920
7054
  };
7055
+ params: Record<string, unknown>;
7056
+ query: Record<string, unknown>;
5921
7057
  response: {
5922
7058
  accepted?: number;
5923
7059
  duplicate?: number;
@@ -5938,6 +7074,8 @@ interface getPricingOperation {
5938
7074
  readonly path: "/v1/partner/pricing";
5939
7075
  readonly method: "GET";
5940
7076
  request: never;
7077
+ params: Record<string, unknown>;
7078
+ query: Record<string, unknown>;
5941
7079
  response: {
5942
7080
  agent_register_url?: string;
5943
7081
  billing_setup_url?: string;
@@ -6041,6 +7179,8 @@ interface recordProgrammaticEventLegacyAliasOperation {
6041
7179
  type?: "ad_started" | "ad_ended" | "no_fill" | "error";
6042
7180
  variant_name?: string;
6043
7181
  };
7182
+ params: Record<string, unknown>;
7183
+ query: Record<string, unknown>;
6044
7184
  response: {
6045
7185
  success?: boolean;
6046
7186
  };
@@ -6065,6 +7205,8 @@ interface quickStartOperation {
6065
7205
  /** Optional legacy classification. Omit for the default self-serve Partner API key. */
6066
7206
  partner_type?: string;
6067
7207
  };
7208
+ params: Record<string, unknown>;
7209
+ query: Record<string, unknown>;
6068
7210
  response: {
6069
7211
  data?: {
6070
7212
  credentials?: {
@@ -6132,6 +7274,8 @@ interface registerPartnerOperation {
6132
7274
  /** URL-safe identifier (lowercase, no spaces) */
6133
7275
  slug: string;
6134
7276
  };
7277
+ params: Record<string, unknown>;
7278
+ query: Record<string, unknown>;
6135
7279
  response: {
6136
7280
  data?: {
6137
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. */
@@ -6171,6 +7315,8 @@ interface generateSandboxEventOperation {
6171
7315
  /** Target sandbox screen (auto-selects first if omitted) */
6172
7316
  screen_id?: string;
6173
7317
  };
7318
+ params: Record<string, unknown>;
7319
+ query: Record<string, unknown>;
6174
7320
  response: {
6175
7321
  /** Event payload (varies by event type) */
6176
7322
  data?: Record<string, unknown>;
@@ -6192,6 +7338,8 @@ interface resetSandboxOperation {
6192
7338
  readonly path: "/v1/partner/sandbox/reset";
6193
7339
  readonly method: "POST";
6194
7340
  request: never;
7341
+ params: Record<string, unknown>;
7342
+ query: Record<string, unknown>;
6195
7343
  response: {
6196
7344
  events_cleared?: number;
6197
7345
  object?: string;
@@ -6213,6 +7361,8 @@ interface createSandboxScreenOperation {
6213
7361
  /** Override venue type */
6214
7362
  venue_type?: string;
6215
7363
  };
7364
+ params: Record<string, unknown>;
7365
+ query: Record<string, unknown>;
6216
7366
  response: {
6217
7367
  audience?: {
6218
7368
  avg_dwell_time_sec?: number;
@@ -6249,6 +7399,8 @@ interface getSandboxStatusOperation {
6249
7399
  readonly path: "/v1/partner/sandbox/status";
6250
7400
  readonly method: "GET";
6251
7401
  request: never;
7402
+ params: Record<string, unknown>;
7403
+ query: Record<string, unknown>;
6252
7404
  response: {
6253
7405
  last_activity?: string | null;
6254
7406
  object?: string;
@@ -6277,6 +7429,11 @@ interface listScreenGroupsOperation {
6277
7429
  readonly path: "/v1/partner/screen-groups";
6278
7430
  readonly method: "GET";
6279
7431
  request: never;
7432
+ params: Record<string, unknown>;
7433
+ query: {
7434
+ limit?: number;
7435
+ offset?: number;
7436
+ };
6280
7437
  response: {
6281
7438
  data?: {
6282
7439
  has_more?: boolean;
@@ -6298,6 +7455,8 @@ interface createScreenGroupOperation {
6298
7455
  name: string;
6299
7456
  screen_ids?: Array<string>;
6300
7457
  };
7458
+ params: Record<string, unknown>;
7459
+ query: Record<string, unknown>;
6301
7460
  response: {
6302
7461
  data?: {
6303
7462
  screen_group?: ScreenGroup;
@@ -6313,6 +7472,10 @@ interface deleteScreenGroupOperation {
6313
7472
  readonly path: "/v1/partner/screen-groups/{groupId}";
6314
7473
  readonly method: "DELETE";
6315
7474
  request: never;
7475
+ params: {
7476
+ groupId: string;
7477
+ };
7478
+ query: Record<string, unknown>;
6316
7479
  response: {
6317
7480
  data?: {
6318
7481
  deleted?: boolean;
@@ -6330,6 +7493,10 @@ interface getScreenGroupOperation {
6330
7493
  readonly path: "/v1/partner/screen-groups/{groupId}";
6331
7494
  readonly method: "GET";
6332
7495
  request: never;
7496
+ params: {
7497
+ groupId: string;
7498
+ };
7499
+ query: Record<string, unknown>;
6333
7500
  response: {
6334
7501
  data?: {
6335
7502
  screen_group?: ScreenGroup;
@@ -6348,6 +7515,10 @@ interface updateScreenGroupOperation {
6348
7515
  description?: string;
6349
7516
  name?: string;
6350
7517
  };
7518
+ params: {
7519
+ groupId: string;
7520
+ };
7521
+ query: Record<string, unknown>;
6351
7522
  response: {
6352
7523
  data?: {
6353
7524
  screen_group?: ScreenGroup;
@@ -6363,6 +7534,10 @@ interface getScreenGroupAnalyticsOperation {
6363
7534
  readonly path: "/v1/partner/screen-groups/{groupId}/analytics";
6364
7535
  readonly method: "GET";
6365
7536
  request: never;
7537
+ params: {
7538
+ groupId: string;
7539
+ };
7540
+ query: Record<string, unknown>;
6366
7541
  response: {
6367
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). */
6368
7543
  data?: {
@@ -6389,6 +7564,10 @@ interface createScreenGroupCommandOperation {
6389
7564
  type: "reload" | "update_settings" | "restart" | "screenshot" | "clear_cache" | "update_content" | "refresh_ads" | "update_config" | "get_state" | "show_ad" | "play_ad";
6390
7565
  };
6391
7566
  };
7567
+ params: {
7568
+ groupId: string;
7569
+ };
7570
+ query: Record<string, unknown>;
6392
7571
  response: {
6393
7572
  data?: {
6394
7573
  fleet_command?: FleetCommand;
@@ -6404,6 +7583,10 @@ interface getScreenGroupContentPolicyOperation {
6404
7583
  readonly path: "/v1/partner/screen-groups/{groupId}/content-policy";
6405
7584
  readonly method: "GET";
6406
7585
  request: never;
7586
+ params: {
7587
+ groupId: string;
7588
+ };
7589
+ query: Record<string, unknown>;
6407
7590
  response: {
6408
7591
  data?: {
6409
7592
  content_policy?: ScreenGroupContentPolicy;
@@ -6419,6 +7602,10 @@ interface updateScreenGroupContentPolicyOperation {
6419
7602
  readonly path: "/v1/partner/screen-groups/{groupId}/content-policy";
6420
7603
  readonly method: "PUT";
6421
7604
  request: ScreenGroupContentPolicyInput;
7605
+ params: {
7606
+ groupId: string;
7607
+ };
7608
+ query: Record<string, unknown>;
6422
7609
  response: {
6423
7610
  data?: {
6424
7611
  content_policy?: ScreenGroupContentPolicy;
@@ -6436,6 +7623,10 @@ interface removeScreenGroupMembersOperation {
6436
7623
  request: {
6437
7624
  screen_ids: Array<string>;
6438
7625
  };
7626
+ params: {
7627
+ groupId: string;
7628
+ };
7629
+ query: Record<string, unknown>;
6439
7630
  response: {
6440
7631
  data?: {
6441
7632
  removed?: number;
@@ -6451,6 +7642,13 @@ interface listScreenGroupMembersOperation {
6451
7642
  readonly path: "/v1/partner/screen-groups/{groupId}/members";
6452
7643
  readonly method: "GET";
6453
7644
  request: never;
7645
+ params: {
7646
+ groupId: string;
7647
+ };
7648
+ query: {
7649
+ limit?: number;
7650
+ offset?: number;
7651
+ };
6454
7652
  response: {
6455
7653
  data?: {
6456
7654
  data?: Array<{
@@ -6473,6 +7671,10 @@ interface addScreenGroupMembersOperation {
6473
7671
  request: {
6474
7672
  screen_ids: Array<string>;
6475
7673
  };
7674
+ params: {
7675
+ groupId: string;
7676
+ };
7677
+ query: Record<string, unknown>;
6476
7678
  response: {
6477
7679
  data?: {
6478
7680
  added?: number;
@@ -6492,6 +7694,10 @@ interface getScreenGroupSensingConfigOperation {
6492
7694
  readonly path: "/v1/partner/screen-groups/{groupId}/sensing-config";
6493
7695
  readonly method: "GET";
6494
7696
  request: never;
7697
+ params: {
7698
+ groupId: string;
7699
+ };
7700
+ query: Record<string, unknown>;
6495
7701
  response: {
6496
7702
  data?: {
6497
7703
  sensing_config?: ScreenGroupSensingConfig;
@@ -6507,6 +7713,10 @@ interface updateScreenGroupSensingConfigOperation {
6507
7713
  readonly path: "/v1/partner/screen-groups/{groupId}/sensing-config";
6508
7714
  readonly method: "PUT";
6509
7715
  request: ScreenGroupSensingConfigInput;
7716
+ params: {
7717
+ groupId: string;
7718
+ };
7719
+ query: Record<string, unknown>;
6510
7720
  response: {
6511
7721
  data?: {
6512
7722
  sensing_config?: ScreenGroupSensingConfig;
@@ -6522,6 +7732,10 @@ interface getScreenAudienceSegmentsOperation {
6522
7732
  readonly path: "/v1/partner/screen/{external_code}/audience-segments";
6523
7733
  readonly method: "GET";
6524
7734
  request: never;
7735
+ params: {
7736
+ external_code: string;
7737
+ };
7738
+ query: Record<string, unknown>;
6525
7739
  response: {
6526
7740
  external_code?: string;
6527
7741
  segtax_4?: Array<{
@@ -6548,6 +7762,8 @@ interface batchUpdateContentPreferencesOperation {
6548
7762
  /** Array of screen IDs to update */
6549
7763
  screen_ids: Array<string>;
6550
7764
  };
7765
+ params: Record<string, unknown>;
7766
+ query: Record<string, unknown>;
6551
7767
  response: BatchResult;
6552
7768
  }
6553
7769
  /**
@@ -6561,6 +7777,8 @@ interface batchUpdateDisplaySettingsOperation {
6561
7777
  screen_ids: Array<string>;
6562
7778
  settings: DisplaySettingsInput;
6563
7779
  };
7780
+ params: Record<string, unknown>;
7781
+ query: Record<string, unknown>;
6564
7782
  response: BatchResult;
6565
7783
  }
6566
7784
  /**
@@ -6574,6 +7792,8 @@ interface batchUpdateProgrammaticSettingsOperation {
6574
7792
  screen_ids: Array<string>;
6575
7793
  settings: ProgrammaticSettingsInput;
6576
7794
  };
7795
+ params: Record<string, unknown>;
7796
+ query: Record<string, unknown>;
6577
7797
  response: BatchResult;
6578
7798
  }
6579
7799
  /**
@@ -6584,6 +7804,12 @@ interface resolvePartnerScreenOperation {
6584
7804
  readonly path: "/v1/partner/screens/resolve";
6585
7805
  readonly method: "GET";
6586
7806
  request: never;
7807
+ params: Record<string, unknown>;
7808
+ query: {
7809
+ device_id?: string;
7810
+ external_device_id?: string;
7811
+ fingerprint?: string;
7812
+ };
6587
7813
  response: {
6588
7814
  data?: {
6589
7815
  device_id?: string;
@@ -6602,6 +7828,12 @@ interface getScreenAnalyticsOperation {
6602
7828
  readonly path: "/v1/partner/screens/{screenId}/analytics";
6603
7829
  readonly method: "GET";
6604
7830
  request: never;
7831
+ params: {
7832
+ screenId: string;
7833
+ };
7834
+ query: {
7835
+ period?: "7d" | "30d" | "90d";
7836
+ };
6605
7837
  response: {
6606
7838
  data?: ScreenAnalyticsResponse;
6607
7839
  success?: boolean;
@@ -6615,6 +7847,10 @@ interface getPartnerScreenAtmosphereOperation {
6615
7847
  readonly path: "/v1/partner/screens/{screenId}/analytics/atmosphere";
6616
7848
  readonly method: "GET";
6617
7849
  request: never;
7850
+ params: {
7851
+ screenId: string;
7852
+ };
7853
+ query: Record<string, unknown>;
6618
7854
  response: {
6619
7855
  data?: {
6620
7856
  crowdDensity?: string | null;
@@ -6636,6 +7872,14 @@ interface getPartnerScreenIntelligenceOperation {
6636
7872
  readonly path: "/v1/partner/screens/{screenId}/analytics/intelligence";
6637
7873
  readonly method: "GET";
6638
7874
  request: never;
7875
+ params: {
7876
+ screenId: string;
7877
+ };
7878
+ query: {
7879
+ from: string;
7880
+ interval?: "5min" | "15min" | "1h" | "1d";
7881
+ to: string;
7882
+ };
6639
7883
  response: {
6640
7884
  data?: {
6641
7885
  dedup?: {
@@ -6666,6 +7910,10 @@ interface getPartnerScreenTasteProfileOperation {
6666
7910
  readonly path: "/v1/partner/screens/{screenId}/analytics/taste-profile";
6667
7911
  readonly method: "GET";
6668
7912
  request: never;
7913
+ params: {
7914
+ screenId: string;
7915
+ };
7916
+ query: Record<string, unknown>;
6669
7917
  response: {
6670
7918
  data?: {
6671
7919
  computedAt?: string | null;
@@ -6691,6 +7939,12 @@ interface getPartnerScreenTrafficOperation {
6691
7939
  readonly path: "/v1/partner/screens/{screenId}/analytics/traffic";
6692
7940
  readonly method: "GET";
6693
7941
  request: never;
7942
+ params: {
7943
+ screenId: string;
7944
+ };
7945
+ query: {
7946
+ days?: number;
7947
+ };
6694
7948
  response: {
6695
7949
  data?: {
6696
7950
  busyScore?: number;
@@ -6708,6 +7962,10 @@ interface getPartnerScreenVASOperation {
6708
7962
  readonly path: "/v1/partner/screens/{screenId}/analytics/vas";
6709
7963
  readonly method: "GET";
6710
7964
  request: never;
7965
+ params: {
7966
+ screenId: string;
7967
+ };
7968
+ query: Record<string, unknown>;
6711
7969
  response: {
6712
7970
  data?: {
6713
7971
  avgAttentionScore?: number;
@@ -6734,6 +7992,10 @@ interface applyContentPresetOperation {
6734
7992
  /** ID of the preset to apply */
6735
7993
  preset_id: string;
6736
7994
  };
7995
+ params: {
7996
+ screenId: string;
7997
+ };
7998
+ query: Record<string, unknown>;
6737
7999
  response: ContentPreferencesResponse & {
6738
8000
  preset_applied?: string;
6739
8001
  };
@@ -6746,6 +8008,13 @@ interface getAudienceMetricsOperation {
6746
8008
  readonly path: "/v1/partner/screens/{screenId}/audience-metrics";
6747
8009
  readonly method: "GET";
6748
8010
  request: never;
8011
+ params: {
8012
+ screenId: string;
8013
+ };
8014
+ query: {
8015
+ include_history?: boolean;
8016
+ period?: "1h" | "6h" | "24h";
8017
+ };
6749
8018
  response: AudienceMetricsResponse;
6750
8019
  }
6751
8020
  /**
@@ -6756,6 +8025,10 @@ interface getContentPreferencesOperation {
6756
8025
  readonly path: "/v1/partner/screens/{screenId}/content-preferences";
6757
8026
  readonly method: "GET";
6758
8027
  request: never;
8028
+ params: {
8029
+ screenId: string;
8030
+ };
8031
+ query: Record<string, unknown>;
6759
8032
  response: ContentPreferencesResponse;
6760
8033
  }
6761
8034
  /**
@@ -6766,6 +8039,10 @@ interface patchContentPreferencesOperation {
6766
8039
  readonly path: "/v1/partner/screens/{screenId}/content-preferences";
6767
8040
  readonly method: "PATCH";
6768
8041
  request: ContentPreferencesInput;
8042
+ params: {
8043
+ screenId: string;
8044
+ };
8045
+ query: Record<string, unknown>;
6769
8046
  response: ContentPreferencesResponse;
6770
8047
  }
6771
8048
  /**
@@ -6776,6 +8053,10 @@ interface updateContentPreferencesOperation {
6776
8053
  readonly path: "/v1/partner/screens/{screenId}/content-preferences";
6777
8054
  readonly method: "PUT";
6778
8055
  request: ContentPreferencesInput;
8056
+ params: {
8057
+ screenId: string;
8058
+ };
8059
+ query: Record<string, unknown>;
6779
8060
  response: ContentPreferencesResponse;
6780
8061
  }
6781
8062
  /**
@@ -6786,6 +8067,10 @@ interface listPartnerDefaultStreamsOperation {
6786
8067
  readonly path: "/v1/partner/screens/{screenId}/default-streams";
6787
8068
  readonly method: "GET";
6788
8069
  request: never;
8070
+ params: {
8071
+ screenId: string;
8072
+ };
8073
+ query: Record<string, unknown>;
6789
8074
  response: {
6790
8075
  data?: {
6791
8076
  current?: PartnerDefaultStream;
@@ -6802,6 +8087,10 @@ interface createPartnerDefaultStreamOperation {
6802
8087
  readonly path: "/v1/partner/screens/{screenId}/default-streams";
6803
8088
  readonly method: "POST";
6804
8089
  request: PartnerDefaultStreamCreate;
8090
+ params: {
8091
+ screenId: string;
8092
+ };
8093
+ query: Record<string, unknown>;
6805
8094
  response: {
6806
8095
  data?: PartnerDefaultStream;
6807
8096
  success?: boolean;
@@ -6815,6 +8104,10 @@ interface createPartnerDefaultStreamImagesOperation {
6815
8104
  readonly path: "/v1/partner/screens/{screenId}/default-streams/images";
6816
8105
  readonly method: "POST";
6817
8106
  request: never;
8107
+ params: {
8108
+ screenId: string;
8109
+ };
8110
+ query: Record<string, unknown>;
6818
8111
  response: {
6819
8112
  data?: PartnerDefaultStream;
6820
8113
  success?: boolean;
@@ -6830,6 +8123,10 @@ interface reorderPartnerDefaultStreamsOperation {
6830
8123
  request: {
6831
8124
  order: Array<string>;
6832
8125
  };
8126
+ params: {
8127
+ screenId: string;
8128
+ };
8129
+ query: Record<string, unknown>;
6833
8130
  response: {
6834
8131
  success?: boolean;
6835
8132
  };
@@ -6842,6 +8139,10 @@ interface createPartnerDefaultStreamUploadOperation {
6842
8139
  readonly path: "/v1/partner/screens/{screenId}/default-streams/upload";
6843
8140
  readonly method: "POST";
6844
8141
  request: never;
8142
+ params: {
8143
+ screenId: string;
8144
+ };
8145
+ query: Record<string, unknown>;
6845
8146
  response: {
6846
8147
  data?: PartnerDefaultStream;
6847
8148
  success?: boolean;
@@ -6855,6 +8156,11 @@ interface deletePartnerDefaultStreamOperation {
6855
8156
  readonly path: "/v1/partner/screens/{screenId}/default-streams/{streamId}";
6856
8157
  readonly method: "DELETE";
6857
8158
  request: never;
8159
+ params: {
8160
+ screenId: string;
8161
+ streamId: string;
8162
+ };
8163
+ query: Record<string, unknown>;
6858
8164
  response: {
6859
8165
  success?: boolean;
6860
8166
  };
@@ -6867,6 +8173,11 @@ interface updatePartnerDefaultStreamOperation {
6867
8173
  readonly path: "/v1/partner/screens/{screenId}/default-streams/{streamId}";
6868
8174
  readonly method: "PUT";
6869
8175
  request: PartnerDefaultStreamUpdate;
8176
+ params: {
8177
+ screenId: string;
8178
+ streamId: string;
8179
+ };
8180
+ query: Record<string, unknown>;
6870
8181
  response: {
6871
8182
  data?: PartnerDefaultStream;
6872
8183
  success?: boolean;
@@ -6880,6 +8191,12 @@ interface getScreenDemographicsOperation {
6880
8191
  readonly path: "/v1/partner/screens/{screenId}/demographics";
6881
8192
  readonly method: "GET";
6882
8193
  request: never;
8194
+ params: {
8195
+ screenId: string;
8196
+ };
8197
+ query: {
8198
+ period?: "24h" | "7d" | "30d";
8199
+ };
6883
8200
  response: DemographicsResponse;
6884
8201
  }
6885
8202
  /**
@@ -6890,6 +8207,10 @@ interface getDisplaySettingsOperation {
6890
8207
  readonly path: "/v1/partner/screens/{screenId}/display-settings";
6891
8208
  readonly method: "GET";
6892
8209
  request: never;
8210
+ params: {
8211
+ screenId: string;
8212
+ };
8213
+ query: Record<string, unknown>;
6893
8214
  response: DisplaySettingsResponse;
6894
8215
  }
6895
8216
  /**
@@ -6900,6 +8221,10 @@ interface patchDisplaySettingsOperation {
6900
8221
  readonly path: "/v1/partner/screens/{screenId}/display-settings";
6901
8222
  readonly method: "PATCH";
6902
8223
  request: DisplaySettingsInput;
8224
+ params: {
8225
+ screenId: string;
8226
+ };
8227
+ query: Record<string, unknown>;
6903
8228
  response: DisplaySettingsResponse;
6904
8229
  }
6905
8230
  /**
@@ -6910,6 +8235,10 @@ interface updateDisplaySettingsOperation {
6910
8235
  readonly path: "/v1/partner/screens/{screenId}/display-settings";
6911
8236
  readonly method: "PUT";
6912
8237
  request: DisplaySettingsInput;
8238
+ params: {
8239
+ screenId: string;
8240
+ };
8241
+ query: Record<string, unknown>;
6913
8242
  response: DisplaySettingsResponse;
6914
8243
  }
6915
8244
  /**
@@ -6920,6 +8249,10 @@ interface getPartnerLBarSettingsOperation {
6920
8249
  readonly path: "/v1/partner/screens/{screenId}/l-bar";
6921
8250
  readonly method: "GET";
6922
8251
  request: never;
8252
+ params: {
8253
+ screenId: string;
8254
+ };
8255
+ query: Record<string, unknown>;
6923
8256
  response: {
6924
8257
  data?: PartnerLBarSettings;
6925
8258
  success?: boolean;
@@ -6936,6 +8269,10 @@ interface updatePartnerLBarSettingsOperation {
6936
8269
  display_preferences?: PartnerLBarDisplayPreferences;
6937
8270
  l_bar_content?: PartnerLBarContent;
6938
8271
  };
8272
+ params: {
8273
+ screenId: string;
8274
+ };
8275
+ query: Record<string, unknown>;
6939
8276
  response: {
6940
8277
  data?: PartnerLBarSettings;
6941
8278
  success?: boolean;
@@ -6954,6 +8291,10 @@ interface updatePartnerLBarLiveUpdatesOperation {
6954
8291
  queue_number?: string;
6955
8292
  wait_time_minutes?: number;
6956
8293
  };
8294
+ params: {
8295
+ screenId: string;
8296
+ };
8297
+ query: Record<string, unknown>;
6957
8298
  response: {
6958
8299
  success?: boolean;
6959
8300
  };
@@ -6966,6 +8307,10 @@ interface getProgrammaticSettingsOperation {
6966
8307
  readonly path: "/v1/partner/screens/{screenId}/programmatic-settings";
6967
8308
  readonly method: "GET";
6968
8309
  request: never;
8310
+ params: {
8311
+ screenId: string;
8312
+ };
8313
+ query: Record<string, unknown>;
6969
8314
  response: ProgrammaticSettingsResponse;
6970
8315
  }
6971
8316
  /**
@@ -6976,6 +8321,10 @@ interface patchProgrammaticSettingsOperation {
6976
8321
  readonly path: "/v1/partner/screens/{screenId}/programmatic-settings";
6977
8322
  readonly method: "PATCH";
6978
8323
  request: ProgrammaticSettingsInput;
8324
+ params: {
8325
+ screenId: string;
8326
+ };
8327
+ query: Record<string, unknown>;
6979
8328
  response: ProgrammaticSettingsResponse;
6980
8329
  }
6981
8330
  /**
@@ -6986,6 +8335,10 @@ interface updateProgrammaticSettingsOperation {
6986
8335
  readonly path: "/v1/partner/screens/{screenId}/programmatic-settings";
6987
8336
  readonly method: "PUT";
6988
8337
  request: ProgrammaticSettingsInput;
8338
+ params: {
8339
+ screenId: string;
8340
+ };
8341
+ query: Record<string, unknown>;
6989
8342
  response: ProgrammaticSettingsResponse;
6990
8343
  }
6991
8344
  /**
@@ -6996,6 +8349,10 @@ interface getResolvedContentPolicyOperation {
6996
8349
  readonly path: "/v1/partner/screens/{screenId}/resolved-content-policy";
6997
8350
  readonly method: "GET";
6998
8351
  request: never;
8352
+ params: {
8353
+ screenId: string;
8354
+ };
8355
+ query: Record<string, unknown>;
6999
8356
  response: {
7000
8357
  data?: ResolvedContentPolicy;
7001
8358
  success?: boolean;
@@ -7009,6 +8366,10 @@ interface getResolvedSensingConfigOperation {
7009
8366
  readonly path: "/v1/partner/screens/{screenId}/resolved-sensing-config";
7010
8367
  readonly method: "GET";
7011
8368
  request: never;
8369
+ params: {
8370
+ screenId: string;
8371
+ };
8372
+ query: Record<string, unknown>;
7012
8373
  response: {
7013
8374
  data?: ResolvedSensingConfig;
7014
8375
  success?: boolean;
@@ -7022,6 +8383,14 @@ interface getScreenSensingChipsOperation {
7022
8383
  readonly path: "/v1/partner/screens/{screenId}/sensing/chips";
7023
8384
  readonly method: "GET";
7024
8385
  request: never;
8386
+ params: {
8387
+ screenId: string;
8388
+ };
8389
+ query: {
8390
+ days?: number;
8391
+ limit?: number;
8392
+ offset?: number;
8393
+ };
7025
8394
  response: {
7026
8395
  data?: {
7027
8396
  /** The custom field_keys this screen senses (from its active profile) */
@@ -7052,6 +8421,10 @@ interface interpretScreenSensingIntentOperation {
7052
8421
  /** Natural-language description of what to sense */
7053
8422
  intent: string;
7054
8423
  };
8424
+ params: {
8425
+ screenId: string;
8426
+ };
8427
+ query: Record<string, unknown>;
7055
8428
  response: {
7056
8429
  data?: {
7057
8430
  /** The generated profile — pass to /sensing/profile to deploy */
@@ -7072,6 +8445,10 @@ interface deployScreenSensingProfileOperation {
7072
8445
  /** The sensing profile object returned by interpret-intent */
7073
8446
  profile: Record<string, unknown>;
7074
8447
  };
8448
+ params: {
8449
+ screenId: string;
8450
+ };
8451
+ query: Record<string, unknown>;
7075
8452
  response: {
7076
8453
  data?: {
7077
8454
  command?: Record<string, unknown>;
@@ -7088,6 +8465,10 @@ interface getScreenSensingSettingsOperation {
7088
8465
  readonly path: "/v1/partner/screens/{screenId}/sensing/settings";
7089
8466
  readonly method: "GET";
7090
8467
  request: never;
8468
+ params: {
8469
+ screenId: string;
8470
+ };
8471
+ query: Record<string, unknown>;
7091
8472
  response: {
7092
8473
  data?: SensingSettingsResponse;
7093
8474
  success?: boolean;
@@ -7103,6 +8484,10 @@ interface updateScreenSensingSettingsOperation {
7103
8484
  request: {
7104
8485
  performance_mode: SensingPerformanceMode;
7105
8486
  };
8487
+ params: {
8488
+ screenId: string;
8489
+ };
8490
+ query: Record<string, unknown>;
7106
8491
  response: {
7107
8492
  data?: {
7108
8493
  command?: Record<string, unknown>;
@@ -7120,6 +8505,10 @@ interface listPartnerSensingRoutesOperation {
7120
8505
  readonly path: "/v1/partner/sensing/routes";
7121
8506
  readonly method: "GET";
7122
8507
  request: never;
8508
+ params: Record<string, unknown>;
8509
+ query: {
8510
+ includeDisabled?: boolean;
8511
+ };
7123
8512
  response: {
7124
8513
  data?: {
7125
8514
  routes?: Array<SensingRoute>;
@@ -7135,6 +8524,8 @@ interface createPartnerSensingRouteOperation {
7135
8524
  readonly path: "/v1/partner/sensing/routes";
7136
8525
  readonly method: "POST";
7137
8526
  request: CreatePartnerSensingRouteRequest;
8527
+ params: Record<string, unknown>;
8528
+ query: Record<string, unknown>;
7138
8529
  response: {
7139
8530
  data?: {
7140
8531
  route?: SensingRoute;
@@ -7150,6 +8541,10 @@ interface deletePartnerSensingRouteOperation {
7150
8541
  readonly path: "/v1/partner/sensing/routes/{routeId}";
7151
8542
  readonly method: "DELETE";
7152
8543
  request: never;
8544
+ params: {
8545
+ routeId: string;
8546
+ };
8547
+ query: Record<string, unknown>;
7153
8548
  response: {
7154
8549
  data?: {
7155
8550
  routeId?: string;
@@ -7165,6 +8560,10 @@ interface getPartnerSensingRouteOperation {
7165
8560
  readonly path: "/v1/partner/sensing/routes/{routeId}";
7166
8561
  readonly method: "GET";
7167
8562
  request: never;
8563
+ params: {
8564
+ routeId: string;
8565
+ };
8566
+ query: Record<string, unknown>;
7168
8567
  response: {
7169
8568
  data?: {
7170
8569
  route?: SensingRoute;
@@ -7180,6 +8579,10 @@ interface updatePartnerSensingRouteOperation {
7180
8579
  readonly path: "/v1/partner/sensing/routes/{routeId}";
7181
8580
  readonly method: "PATCH";
7182
8581
  request: UpdatePartnerSensingRouteRequest;
8582
+ params: {
8583
+ routeId: string;
8584
+ };
8585
+ query: Record<string, unknown>;
7183
8586
  response: {
7184
8587
  data?: {
7185
8588
  route?: SensingRoute;
@@ -7195,6 +8598,8 @@ interface createStripeConnectAccountOperation {
7195
8598
  readonly path: "/v1/partner/stripe/connect";
7196
8599
  readonly method: "POST";
7197
8600
  request: never;
8601
+ params: Record<string, unknown>;
8602
+ query: Record<string, unknown>;
7198
8603
  response: {
7199
8604
  data?: {
7200
8605
  account_id?: string;
@@ -7217,6 +8622,8 @@ interface getStripeLoginLinkOperation {
7217
8622
  readonly path: "/v1/partner/stripe/login-link";
7218
8623
  readonly method: "GET";
7219
8624
  request: never;
8625
+ params: Record<string, unknown>;
8626
+ query: Record<string, unknown>;
7220
8627
  response: {
7221
8628
  data?: {
7222
8629
  account_id?: string;
@@ -7234,6 +8641,8 @@ interface getStripeOnboardingLinkOperation {
7234
8641
  readonly path: "/v1/partner/stripe/onboarding-link";
7235
8642
  readonly method: "GET";
7236
8643
  request: never;
8644
+ params: Record<string, unknown>;
8645
+ query: Record<string, unknown>;
7237
8646
  response: {
7238
8647
  data?: {
7239
8648
  account_id?: string;
@@ -7259,6 +8668,8 @@ interface requestStripePayoutOperation {
7259
8668
  /** Deduplication key to prevent duplicate payouts */
7260
8669
  idempotency_key?: string;
7261
8670
  };
8671
+ params: Record<string, unknown>;
8672
+ query: Record<string, unknown>;
7262
8673
  response: {
7263
8674
  data?: {
7264
8675
  amount_cents?: number;
@@ -7283,6 +8694,10 @@ interface getStripePayoutHistoryOperation {
7283
8694
  readonly path: "/v1/partner/stripe/payouts";
7284
8695
  readonly method: "GET";
7285
8696
  request: never;
8697
+ params: Record<string, unknown>;
8698
+ query: {
8699
+ limit?: number;
8700
+ };
7286
8701
  response: {
7287
8702
  data?: {
7288
8703
  has_more?: boolean;
@@ -7307,6 +8722,8 @@ interface getStripeAccountStatusOperation {
7307
8722
  readonly path: "/v1/partner/stripe/status";
7308
8723
  readonly method: "GET";
7309
8724
  request: never;
8725
+ params: Record<string, unknown>;
8726
+ query: Record<string, unknown>;
7310
8727
  response: {
7311
8728
  data?: {
7312
8729
  account_id?: string | null;
@@ -7335,6 +8752,8 @@ interface handleStripeWebhookOperation {
7335
8752
  readonly path: "/v1/partner/stripe/webhook";
7336
8753
  readonly method: "POST";
7337
8754
  request: Record<string, unknown>;
8755
+ params: Record<string, unknown>;
8756
+ query: Record<string, unknown>;
7338
8757
  response: {
7339
8758
  event_type?: string;
7340
8759
  received?: boolean;
@@ -7348,6 +8767,10 @@ interface listTeamMembersOperation {
7348
8767
  readonly path: "/v1/partner/team";
7349
8768
  readonly method: "GET";
7350
8769
  request: never;
8770
+ params: Record<string, unknown>;
8771
+ query: {
8772
+ status?: "active" | "pending" | "all";
8773
+ };
7351
8774
  response: {
7352
8775
  data?: {
7353
8776
  members?: Array<TeamMember>;
@@ -7371,6 +8794,8 @@ interface acceptInvitationOperation {
7371
8794
  /** Invitation token from email link */
7372
8795
  token: string;
7373
8796
  };
8797
+ params: Record<string, unknown>;
8798
+ query: Record<string, unknown>;
7374
8799
  response: {
7375
8800
  data?: {
7376
8801
  partner?: {
@@ -7401,6 +8826,8 @@ interface inviteTeamMemberOperation {
7401
8826
  /** Role to assign to the team member */
7402
8827
  role?: "admin" | "viewer";
7403
8828
  };
8829
+ params: Record<string, unknown>;
8830
+ query: Record<string, unknown>;
7404
8831
  response: {
7405
8832
  data?: TeamInviteResponse;
7406
8833
  message?: string;
@@ -7415,6 +8842,10 @@ interface getInvitationByTokenOperation {
7415
8842
  readonly path: "/v1/partner/team/invite/{token}";
7416
8843
  readonly method: "GET";
7417
8844
  request: never;
8845
+ params: {
8846
+ token: string;
8847
+ };
8848
+ query: Record<string, unknown>;
7418
8849
  response: {
7419
8850
  data?: {
7420
8851
  email?: string;
@@ -7437,6 +8868,10 @@ interface resendInvitationOperation {
7437
8868
  readonly path: "/v1/partner/team/{membershipId}/resend";
7438
8869
  readonly method: "POST";
7439
8870
  request: never;
8871
+ params: {
8872
+ membershipId: string;
8873
+ };
8874
+ query: Record<string, unknown>;
7440
8875
  response: {
7441
8876
  data?: {
7442
8877
  email?: string;
@@ -7454,6 +8889,10 @@ interface removeTeamMemberOperation {
7454
8889
  readonly path: "/v1/partner/team/{userId}";
7455
8890
  readonly method: "DELETE";
7456
8891
  request: never;
8892
+ params: {
8893
+ userId: string;
8894
+ };
8895
+ query: Record<string, unknown>;
7457
8896
  response: {
7458
8897
  message?: string;
7459
8898
  success?: boolean;
@@ -7469,6 +8908,10 @@ interface changeTeamMemberRoleOperation {
7469
8908
  request: {
7470
8909
  role: "admin" | "viewer";
7471
8910
  };
8911
+ params: {
8912
+ userId: string;
8913
+ };
8914
+ query: Record<string, unknown>;
7472
8915
  response: {
7473
8916
  data?: {
7474
8917
  new_role?: string;
@@ -7488,6 +8931,8 @@ interface getTrackingPublicKeyOperation {
7488
8931
  readonly path: "/v1/partner/tracking/.well-known/public-key";
7489
8932
  readonly method: "GET";
7490
8933
  request: never;
8934
+ params: Record<string, unknown>;
8935
+ query: Record<string, unknown>;
7491
8936
  response: {
7492
8937
  data?: {
7493
8938
  /** Signature algorithm (ed25519 for public key, sha256 for HMAC fallback) */
@@ -7535,6 +8980,8 @@ interface recordTrackingBatchOperation {
7535
8980
  timestamp?: string;
7536
8981
  }>;
7537
8982
  };
8983
+ params: Record<string, unknown>;
8984
+ query: Record<string, unknown>;
7538
8985
  response: {
7539
8986
  data?: {
7540
8987
  /** Number of duplicate impressions skipped */
@@ -7569,6 +9016,11 @@ interface getUsageSummaryOperation {
7569
9016
  readonly path: "/v1/partner/usage";
7570
9017
  readonly method: "GET";
7571
9018
  request: never;
9019
+ params: Record<string, unknown>;
9020
+ query: {
9021
+ end_date?: string;
9022
+ start_date?: string;
9023
+ };
7572
9024
  response: {
7573
9025
  /** Average response time in milliseconds */
7574
9026
  avgResponseTime?: number;
@@ -7603,6 +9055,8 @@ interface getUsageDashboardOperation {
7603
9055
  readonly path: "/v1/partner/usage/dashboard";
7604
9056
  readonly method: "GET";
7605
9057
  request: never;
9058
+ params: Record<string, unknown>;
9059
+ query: Record<string, unknown>;
7606
9060
  response: {
7607
9061
  last_7_days?: {
7608
9062
  avg_response_ms?: number;
@@ -7647,6 +9101,8 @@ interface getRateLimitStatusOperation {
7647
9101
  readonly path: "/v1/partner/usage/rate-limit";
7648
9102
  readonly method: "GET";
7649
9103
  request: never;
9104
+ params: Record<string, unknown>;
9105
+ query: Record<string, unknown>;
7650
9106
  response: {
7651
9107
  current_rate?: number;
7652
9108
  max_rate?: number;
@@ -7665,6 +9121,11 @@ interface getVastConfigOperation {
7665
9121
  readonly path: "/v1/partner/vast/config";
7666
9122
  readonly method: "GET";
7667
9123
  request: never;
9124
+ params: Record<string, unknown>;
9125
+ query: {
9126
+ device_id?: string;
9127
+ screen_id?: string;
9128
+ };
7668
9129
  response: {
7669
9130
  data?: {
7670
9131
  /** Google Ad Manager ad unit path */
@@ -7709,6 +9170,12 @@ interface getVenuesNearbyOperation {
7709
9170
  readonly path: "/v1/partner/venues/nearby";
7710
9171
  readonly method: "GET";
7711
9172
  request: never;
9173
+ params: Record<string, unknown>;
9174
+ query: {
9175
+ lat: number;
9176
+ lng: number;
9177
+ radius_km?: number;
9178
+ };
7712
9179
  response: {
7713
9180
  count?: number;
7714
9181
  venues?: Array<{
@@ -7726,6 +9193,12 @@ interface getVenueAtmosphereOperation {
7726
9193
  readonly path: "/v1/partner/venues/{screenId}/atmosphere";
7727
9194
  readonly method: "GET";
7728
9195
  request: never;
9196
+ params: {
9197
+ screenId: string;
9198
+ };
9199
+ query: {
9200
+ days?: number;
9201
+ };
7729
9202
  response: {
7730
9203
  days?: number;
7731
9204
  dominant_ambience?: string;
@@ -7743,6 +9216,12 @@ interface getVenueTrafficOperation {
7743
9216
  readonly path: "/v1/partner/venues/{screenId}/traffic";
7744
9217
  readonly method: "GET";
7745
9218
  request: never;
9219
+ params: {
9220
+ screenId: string;
9221
+ };
9222
+ query: {
9223
+ days?: number;
9224
+ };
7746
9225
  response: {
7747
9226
  daily?: Array<Record<string, unknown>>;
7748
9227
  hourly?: Array<{
@@ -7760,6 +9239,14 @@ interface getVenueIntelligenceOperation {
7760
9239
  readonly path: "/v1/partner/venues/{venueId}/intelligence";
7761
9240
  readonly method: "GET";
7762
9241
  request: never;
9242
+ params: {
9243
+ venueId: string;
9244
+ };
9245
+ query: {
9246
+ from: string;
9247
+ interval?: "5min" | "15min" | "1h" | "1d";
9248
+ to: string;
9249
+ };
7763
9250
  response: {
7764
9251
  dedup?: {
7765
9252
  camera_count?: number;
@@ -7811,6 +9298,8 @@ interface listWebhooksOperation {
7811
9298
  readonly path: "/v1/partner/webhooks";
7812
9299
  readonly method: "GET";
7813
9300
  request: never;
9301
+ params: Record<string, unknown>;
9302
+ query: Record<string, unknown>;
7814
9303
  response: {
7815
9304
  data?: {
7816
9305
  webhooks?: Array<Webhook>;
@@ -7827,10 +9316,12 @@ interface createWebhookOperation {
7827
9316
  readonly method: "POST";
7828
9317
  request: {
7829
9318
  /** Events to subscribe to */
7830
- 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">;
7831
9320
  /** Webhook endpoint URL (HTTPS required in production) */
7832
9321
  url: string;
7833
9322
  };
9323
+ params: Record<string, unknown>;
9324
+ query: Record<string, unknown>;
7834
9325
  response: {
7835
9326
  data?: {
7836
9327
  events?: Array<string>;
@@ -7852,6 +9343,10 @@ interface deleteWebhookOperation {
7852
9343
  readonly path: "/v1/partner/webhooks/{webhookId}";
7853
9344
  readonly method: "DELETE";
7854
9345
  request: never;
9346
+ params: {
9347
+ webhookId: string;
9348
+ };
9349
+ query: Record<string, unknown>;
7855
9350
  response: {
7856
9351
  message?: string;
7857
9352
  success?: boolean;
@@ -7865,10 +9360,14 @@ interface updateWebhookOperation {
7865
9360
  readonly path: "/v1/partner/webhooks/{webhookId}";
7866
9361
  readonly method: "PATCH";
7867
9362
  request: {
7868
- 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">;
7869
9364
  status?: "active" | "inactive";
7870
9365
  url?: string;
7871
9366
  };
9367
+ params: {
9368
+ webhookId: string;
9369
+ };
9370
+ query: Record<string, unknown>;
7872
9371
  response: {
7873
9372
  data?: Webhook;
7874
9373
  message?: string;
@@ -7883,6 +9382,12 @@ interface getWebhookDeliveriesOperation {
7883
9382
  readonly path: "/v1/partner/webhooks/{webhookId}/deliveries";
7884
9383
  readonly method: "GET";
7885
9384
  request: never;
9385
+ params: {
9386
+ webhookId: string;
9387
+ };
9388
+ query: {
9389
+ limit?: number;
9390
+ };
7886
9391
  response: {
7887
9392
  data?: {
7888
9393
  deliveries?: Array<WebhookDelivery>;
@@ -7898,6 +9403,10 @@ interface testWebhookOperation {
7898
9403
  readonly path: "/v1/partner/webhooks/{webhookId}/test";
7899
9404
  readonly method: "POST";
7900
9405
  request: never;
9406
+ params: {
9407
+ webhookId: string;
9408
+ };
9409
+ query: Record<string, unknown>;
7901
9410
  response: {
7902
9411
  data?: {
7903
9412
  error?: string;
@@ -7916,6 +9425,11 @@ interface playgroundDryRunOperation {
7916
9425
  readonly path: "/v1/playground/{operation_id}";
7917
9426
  readonly method: "POST";
7918
9427
  request: never;
9428
+ params: {
9429
+ /** The operationId of the endpoint to validate against. */
9430
+ operation_id: string;
9431
+ };
9432
+ query: Record<string, unknown>;
7919
9433
  response: PlaygroundResult;
7920
9434
  }
7921
9435
  /**
@@ -7926,15 +9440,20 @@ interface getRequestMetadataOperation {
7926
9440
  readonly path: "/v1/requests/{request_id}";
7927
9441
  readonly method: "GET";
7928
9442
  request: never;
9443
+ params: {
9444
+ /** Server-generated request ID to look up. */
9445
+ request_id: string;
9446
+ };
9447
+ query: Record<string, unknown>;
7929
9448
  response: RequestMetadataResponse;
7930
9449
  }
7931
9450
  declare const generatedTypes: {
7932
- readonly schemaCount: 131;
7933
- readonly operationCount: 213;
7934
- 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"];
7935
- 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"];
7936
9455
  };
7937
9456
  type GeneratedSchemaName = (typeof generatedTypes.schemas)[number];
7938
9457
  type GeneratedOperationName = (typeof generatedTypes.operations)[number];
7939
9458
 
7940
- 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 };