@trillboards/api-client 2.2.1 → 3.2.1

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.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * AUTO-GENERATED. DO NOT EDIT.
3
3
  *
4
- * Generated from: trillboard-api/docs/openapi/merged/partner-api.json
4
+ * Generated from: merged partner API, bundled Data API and mounted MCP Zod schemas
5
5
  * Generator: trillboards-api-client/scripts/generate.js
6
6
  *
7
7
  * Re-emit via `npm run generate`.
@@ -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?: {
@@ -696,13 +732,157 @@ type DashboardResponse = {
696
732
  screen_id?: string;
697
733
  }>;
698
734
  };
735
+ type DataApi_AggregateResponse = {
736
+ aggregations: Array<Record<string, unknown>>;
737
+ group_by: string;
738
+ metric: string;
739
+ time_window: string;
740
+ };
741
+ type DataApi_Error = {
742
+ error: {
743
+ /** 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`. */
744
+ code: string;
745
+ /** Per-field violations (populated from Zod errors). */
746
+ details?: Array<{
747
+ code?: string;
748
+ message?: string;
749
+ param?: string;
750
+ }>;
751
+ /** Link to the documentation for this error code (https://api.trillboards.com/docs/errors#<code>). */
752
+ doc_url?: string;
753
+ /** Agent-facing hints and suggestions. */
754
+ help?: {
755
+ portal_url?: string;
756
+ suggestions?: Array<string>;
757
+ summary?: string;
758
+ try_next?: string;
759
+ };
760
+ /** Human-readable error message. Safe to surface to end-users. */
761
+ message: string;
762
+ /** Offending parameter name (when applicable). */
763
+ param?: string;
764
+ /** Echoed X-Request-Id for correlation. */
765
+ request_id: string;
766
+ /** Stripe-style error taxonomy (derived from utils/errorCatalog). */
767
+ type: "api_error" | "authentication_error" | "idempotency_error" | "invalid_request_error" | "permission_error" | "rate_limit_error";
768
+ };
769
+ };
770
+ /**
771
+ * 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.
772
+ */
773
+ type DataApi_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";
774
+ type DataApi_ExampleHealthcheckResponse = {
775
+ /** Echoed X-Request-Id for correlation. */
776
+ request_id?: string;
777
+ service: string;
778
+ /** Always "ok" when the service is reachable. */
779
+ status: "ok";
780
+ version?: string;
781
+ };
782
+ type DataApi_FeedbackRewardQuery = {
783
+ /** Opaque next_cursor from this same date scope; rewind after scan_complete. */
784
+ cursor?: string;
785
+ /** Inclusive first play date, YYYY-MM-DD; date range is at most 31 days. */
786
+ from: string;
787
+ /** Unique caller-owned billing key for this page; committed retries return the receipt, not another read. */
788
+ idempotency_key: string;
789
+ /** Maximum native play states returned on this metered page. */
790
+ limit?: number;
791
+ /** Inclusive last play date, YYYY-MM-DD; date range is at most 31 days. */
792
+ to: string;
793
+ };
794
+ type DataApi_LookalikeResponse = {
795
+ matches: Array<Record<string, unknown>>;
796
+ matches_count: number;
797
+ source_screen_id: string;
798
+ };
799
+ type DataApi_QueryDslBody = {
800
+ /** Dataset name. Defaults to `inference_outcomes`. */
801
+ dataset?: string;
802
+ dimensions?: Array<string>;
803
+ filters?: Array<DataApi_QueryFilter>;
804
+ limit?: number;
805
+ measures?: Array<string>;
806
+ order_by?: Array<DataApi_QueryOrderBy>;
807
+ };
808
+ type DataApi_QueryDslResponse = {
809
+ count: number;
810
+ /** `observation_stream` when it is served from ClickHouse: the population the answer counts and the first instant the dataset holds. */
811
+ coverage?: {
812
+ population: string;
813
+ since: string;
814
+ };
815
+ dataset: string;
816
+ dimensions: Array<string>;
817
+ /** `inference_outcomes` only. The `inference_source` values the query read (`null` when a range filter makes the set unstateable), and whether the camera-only default was applied because the request did not filter on `inference_source`. */
818
+ inference_source?: {
819
+ defaulted: boolean;
820
+ values: Array<string> | null;
821
+ };
822
+ limit: number;
823
+ measures: Array<string>;
824
+ /** `inference_outcomes` only. `measured` when every row read is a camera measurement, `modeled` when every row is a venue-profile estimate, `mixed` when the answer aggregates both. */
825
+ provenance?: "measured" | "modeled" | "mixed";
826
+ /** Result rows. For `inference_outcomes` every row also carries `provenance` (`measured`, `modeled` or `mixed`). */
827
+ rows: Array<Record<string, unknown>>;
828
+ };
829
+ type DataApi_QueryFilter = {
830
+ field: string;
831
+ op?: "eq" | "in" | "gte" | "lte" | "between";
832
+ value?: unknown;
833
+ };
834
+ type DataApi_QueryOrderBy = {
835
+ direction?: "asc" | "desc" | "ASC" | "DESC";
836
+ field: string;
837
+ };
838
+ type DataApi_ScreenAudienceResponse = {
839
+ audience: Record<string, unknown> | null;
840
+ message?: string;
841
+ screen_id: string;
842
+ source?: string;
843
+ };
844
+ type DataApi_ScreenHistoryResponse = {
845
+ count: number;
846
+ metrics: Array<Record<string, unknown>>;
847
+ screen_id: string;
848
+ source?: "camera" | "signal_derived";
849
+ };
850
+ type DataApi_ScreensListResponse = {
851
+ count: number;
852
+ has_more: boolean;
853
+ limit: number;
854
+ next_offset: number | null;
855
+ offset: number;
856
+ screens: Array<Record<string, unknown>>;
857
+ total: number;
858
+ };
859
+ type DataApi_SemanticSearchResponse = {
860
+ query: string;
861
+ results: Array<Record<string, unknown>>;
862
+ results_count: number;
863
+ time_window?: string;
864
+ };
865
+ type DataApi_StatsResponse = {
866
+ active_screens: number;
867
+ embeddings: Record<string, unknown>;
868
+ metrics_last_24h: number;
869
+ partner?: string;
870
+ };
871
+ type DataApi_StreamResponse = {
872
+ /** Server-Sent Events stream. Each event carries `data: <json>` lines per the SSE spec. */
873
+ note?: string;
874
+ };
875
+ type DataApi_UsageResponse = {
876
+ data: Array<Record<string, unknown>>;
877
+ period_days: number;
878
+ };
699
879
  /**
700
880
  * Per-dataset record counts + date ranges for the partner's screens.
701
881
  * Returned by `GET /data-export/summary`.
702
882
  *
703
883
  */
704
884
  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. */
885
+ /** `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
886
  data?: {
707
887
  /** Map of dataset name to record summary */
708
888
  datasets?: Record<string, {
@@ -710,7 +890,6 @@ type DataExportSummaryResponse = {
710
890
  latest?: string | null;
711
891
  total_records?: number;
712
892
  }>;
713
- k_anonymity_threshold?: number;
714
893
  lookback_days?: number;
715
894
  screen_count?: number;
716
895
  };
@@ -780,7 +959,7 @@ type Device = {
780
959
  created_at?: string;
781
960
  /** 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
961
  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. */
962
+ /** 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
963
  device_type?: string;
785
964
  /** 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
965
  display?: {
@@ -806,8 +985,12 @@ type Device = {
806
985
  fingerprint?: string;
807
986
  /** 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
987
  location?: Record<string, unknown>;
988
+ location_capability?: PartnerLocationCapability;
989
+ /** Stripe-style readiness, the same contract registration returns (see https://api.trillboards.com/docs/monetization-requirements). */
990
+ monetization_status?: "ready" | "limited" | "blocked";
809
991
  /** 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
992
  name?: string;
993
+ requirements?: PartnerMonetizationRequirements;
811
994
  /** 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
995
  screen_id?: string;
813
996
  /** 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 +1000,17 @@ type Device = {
817
1000
  /** 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
1001
  venue?: Record<string, unknown>;
819
1002
  };
1003
+ /**
1004
+ * The device-authentication layer's refusal (missing, invalid or replayed device credential).
1005
+ */
1006
+ type DeviceAuthRefusal = {
1007
+ /** The HTTP status. */
1008
+ code?: number;
1009
+ /** 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. */
1010
+ error?: string;
1011
+ message?: string;
1012
+ status?: false;
1013
+ };
820
1014
  type DeviceCapabilityPayload = {
821
1015
  /** 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
1016
  agentType?: string | null;
@@ -913,7 +1107,7 @@ type DeviceSummary = {
913
1107
  created_at?: string;
914
1108
  /** 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
1109
  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`. */
1110
+ /** Saved mutable partner category, independent of advertising classification. Legacy devices without a saved declaration retain their previous numeric-derived label until explicitly updated. */
917
1111
  device_type?: string;
918
1112
  /** 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
1113
  display?: Record<string, unknown>;
@@ -927,8 +1121,12 @@ type DeviceSummary = {
927
1121
  fingerprint?: string;
928
1122
  /** 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
1123
  location?: Record<string, unknown>;
1124
+ location_capability?: PartnerLocationCapability;
1125
+ /** Stripe-style readiness, the same contract registration returns (see https://api.trillboards.com/docs/monetization-requirements). */
1126
+ monetization_status?: "ready" | "limited" | "blocked";
930
1127
  /** 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
1128
  name?: string;
1129
+ requirements?: PartnerMonetizationRequirements;
932
1130
  /** 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
1131
  screen_id?: string;
934
1132
  /** 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 +1357,7 @@ type EarnerScreens = {
1159
1357
  venue_state?: string | null;
1160
1358
  venue_subcategory?: string | null;
1161
1359
  waterfall_optimized_at?: string | null;
1360
+ /** 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
1361
  waterfall_partners: Array<string>;
1163
1362
  waterfall_total_timeout_ms?: number | null;
1164
1363
  /** 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 +1368,7 @@ type EarningsBreakdownResponse = {
1169
1368
  breakdown?: Array<{
1170
1369
  /** Date or screen_id depending on group_by */
1171
1370
  date?: string;
1371
+ earning_sources?: EarningsSources;
1172
1372
  earnings_cents?: number;
1173
1373
  impressions?: number;
1174
1374
  /** Screen ID (when grouped by screen) */
@@ -1185,9 +1385,11 @@ type EarningsBreakdownResponse = {
1185
1385
  group_by?: "day" | "week" | "screen";
1186
1386
  start?: string;
1187
1387
  };
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. */
1388
+ /** 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
1389
  summary?: {
1190
1390
  direct_cents?: number;
1391
+ earning_source_version?: 1;
1392
+ earning_sources?: EarningsSources;
1191
1393
  programmatic_cents?: number;
1192
1394
  total_cents?: number;
1193
1395
  total_impressions?: number;
@@ -1224,12 +1426,14 @@ type EarningsData = {
1224
1426
  type EarningsResponse = {
1225
1427
  /** Amount available for immediate payout */
1226
1428
  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. */
1429
+ /** 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
1430
  breakdown?: {
1229
1431
  direct_campaigns?: number;
1230
1432
  programmatic_floodgates?: number;
1231
1433
  programmatic_google?: number;
1232
1434
  };
1435
+ earning_source_version?: 1;
1436
+ earning_sources?: EarningsSources;
1233
1437
  /** `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
1438
  next_payout_estimate?: {
1235
1439
  amount_cents?: number;
@@ -1247,6 +1451,19 @@ type EarningsResponse = {
1247
1451
  /** Total earnings since partner started */
1248
1452
  total_lifetime_cents?: number;
1249
1453
  };
1454
+ /**
1455
+ * 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.
1456
+ */
1457
+ type EarningsSources = {
1458
+ /** Paid first-party portal and offline IO bookings. */
1459
+ direct_bookings: number;
1460
+ /** Verified open-auction delivery outside a private deal. */
1461
+ open_exchange: number;
1462
+ /** Verified delivered DSP/SSP PMP, PG and preferred deals. */
1463
+ programmatic_deals: number;
1464
+ /** Earnings lacking supported allocation evidence. */
1465
+ unclassified: number;
1466
+ };
1250
1467
  /**
1251
1468
  * Legacy free-text error shape. COLLAPSED onto the shared `LegacyError`
1252
1469
  * definition so there is exactly one declaration of this shape across the
@@ -1256,9 +1473,9 @@ type EarningsResponse = {
1256
1473
  */
1257
1474
  type Error = LegacyError;
1258
1475
  /**
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.
1476
+ * 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
1477
  */
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";
1478
+ 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
1479
  type ErrorCodeResponse = {
1263
1480
  code: string;
1264
1481
  description: string;
@@ -1358,6 +1575,269 @@ type ExtendedIdentity = {
1358
1575
  /** `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
1576
  status: "available" | "unavailable";
1360
1577
  };
1578
+ type FeedbackBrand = {
1579
+ advertisement_id: string;
1580
+ brand_name: string;
1581
+ profile_id: string;
1582
+ reactive_enabled: true;
1583
+ stance: "adversarial" | "complementary" | "same_brand" | "intent_capture";
1584
+ };
1585
+ type FeedbackBrandRequest = {
1586
+ /** Native brand reference assets used by creative generation. */
1587
+ brand_assets?: Array<Record<string, unknown>>;
1588
+ /** Optional brand intent supplied to the native creative generator. */
1589
+ brand_intent_text?: string | null;
1590
+ /** Advertiser brand name for the experiment’s native campaign. */
1591
+ brand_name: string;
1592
+ /** Native brand colours, typography, voice, products and required or prohibited elements. */
1593
+ brand_rules: {
1594
+ /** The advertiser brand name, e.g. "Nike". */
1595
+ brand_name: string;
1596
+ /** Elements that MUST appear in every creative, e.g. ["logo top-right","legal disclaimer"]; may be empty. */
1597
+ mandatory_elements: Array<string>;
1598
+ /** Brand colour palette. */
1599
+ palette: {
1600
+ /** Accent colours; may be empty. */
1601
+ accents: Array<string>;
1602
+ /** Primary brand colour (hex or named); empty string if unknown. */
1603
+ primary: string;
1604
+ /** Secondary brand colour; empty string if none. */
1605
+ secondary: string;
1606
+ };
1607
+ /** Key products to feature; may be empty. */
1608
+ products: Array<{
1609
+ /** Short product description; empty string if none. */
1610
+ description: string;
1611
+ /** Product name. */
1612
+ name: string;
1613
+ }>;
1614
+ /** Elements that must NEVER appear, e.g. ["competitor logos","alcohol"]; may be empty. */
1615
+ prohibited_elements: Array<string>;
1616
+ /** Preferred reactive stances for this brand; may be empty. */
1617
+ stance_preferences: Array<"adversarial" | "complementary" | "same_brand" | "intent_capture">;
1618
+ /** Approved taglines / slogans; may be empty. */
1619
+ taglines: Array<string>;
1620
+ /** Typography guidance. */
1621
+ typography: {
1622
+ /** Body typeface / style guidance; empty string if none. */
1623
+ body: string;
1624
+ /** Headline typeface / style guidance; empty string if none. */
1625
+ headline: string;
1626
+ };
1627
+ /** Voice + tone adjectives, e.g. ["confident","playful"]; may be empty. */
1628
+ voice_tone: Array<string>;
1629
+ };
1630
+ /** Optional existing brand profile owned by this advertiser and advertisement. */
1631
+ profile_id?: string;
1632
+ /** Native reactive relationship used to generate or stage this creative. */
1633
+ stance?: "adversarial" | "complementary" | "same_brand" | "intent_capture";
1634
+ };
1635
+ type FeedbackBrandResponse = {
1636
+ data: FeedbackBrand;
1637
+ success: true;
1638
+ };
1639
+ type FeedbackCreateRequest = {
1640
+ /** Exact decimal policy version; zero enrolls an unclaimed native policy. */
1641
+ expected_policy_version?: string;
1642
+ /** Caller-owned key for this exact operation; do not reuse for changed inputs. */
1643
+ idempotency_key: string;
1644
+ /** Your funded native AdCP media buy ID. */
1645
+ media_buy_id: string;
1646
+ /** Name for this funded creative feedback experiment. */
1647
+ name: string;
1648
+ /** Measured objective: gaze share 0–1, gaze overlap milliseconds, or capped mean dwell milliseconds. */
1649
+ objective: "gaze_share" | "gaze_overlap_ms" | "dwell_ms";
1650
+ /** Native package ID within that media buy. */
1651
+ package_id: string;
1652
+ };
1653
+ type FeedbackCreativeReview = {
1654
+ success: boolean;
1655
+ };
1656
+ type FeedbackExperiment = {
1657
+ advertisement_id: string;
1658
+ advertiser_id: string;
1659
+ id: string;
1660
+ media_buy_id: string;
1661
+ name: string;
1662
+ objective: "gaze_share" | "gaze_overlap_ms" | "dwell_ms";
1663
+ package_id: string;
1664
+ policy_mode: "attribution" | "experiment" | "external_agent";
1665
+ policy_version: string;
1666
+ status: string;
1667
+ variants: Array<FeedbackVariant>;
1668
+ };
1669
+ type FeedbackExperimentDetail = FeedbackExperiment & {
1670
+ creatives: Array<FeedbackRecoveredCreative>;
1671
+ creatives_truncated: boolean;
1672
+ };
1673
+ type FeedbackExperimentDetailResponse = {
1674
+ data: FeedbackExperimentDetail;
1675
+ success: true;
1676
+ };
1677
+ type FeedbackExperimentResponse = {
1678
+ data: FeedbackExperiment;
1679
+ success: true;
1680
+ };
1681
+ type FeedbackGenerateRequest = {
1682
+ /** Image aspect ratio, such as 16:9, matched to your booked screens. */
1683
+ aspectRatio?: string;
1684
+ /** Creative direction added to your configured native brand rules. */
1685
+ brief?: string;
1686
+ /** Unique caller-owned generation key; committed retries expose creativeId and renderKey in the receipt. */
1687
+ idempotency_key: string;
1688
+ /** Native reactive relationship used to generate or stage this creative. */
1689
+ stance?: "adversarial" | "complementary" | "same_brand" | "intent_capture";
1690
+ };
1691
+ type FeedbackGenerateResponse = {
1692
+ data: FeedbackGeneratedCreative;
1693
+ success: true;
1694
+ };
1695
+ type FeedbackGeneratedCreative = {
1696
+ brandReviewStatus: string;
1697
+ cdnUrl: string;
1698
+ creativeId: string;
1699
+ deduped: boolean;
1700
+ headline?: string | null;
1701
+ moderationStatus?: string;
1702
+ renderKey: string;
1703
+ status?: string;
1704
+ success: true;
1705
+ usage_receipt: Record<string, unknown>;
1706
+ };
1707
+ /**
1708
+ * 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.
1709
+ */
1710
+ type FeedbackImportRequest = {
1711
+ /** Public HTTPS image URL; provide exactly one image source. */
1712
+ asset_url?: string;
1713
+ /** Actual image MIME; required for inline bytes and checked against decoded content. */
1714
+ content_type?: "image/png" | "image/jpeg" | "image/jpg" | "image/webp";
1715
+ /** Optional headline stored with the native imported creative. */
1716
+ headline?: string;
1717
+ /** Unique caller-owned import key; a committed retry returns the existing usage receipt. */
1718
+ idempotency_key: string;
1719
+ /** Base64 PNG, JPEG or WebP bytes; provide exactly one source and content_type. */
1720
+ image_base64?: string;
1721
+ /** Existing creative ID owned by the authenticated partner; provide exactly one image source. */
1722
+ source_creative_id?: string;
1723
+ /** Native reactive relationship used to generate or stage this creative. */
1724
+ stance?: "adversarial" | "complementary" | "same_brand" | "intent_capture";
1725
+ };
1726
+ type FeedbackPolicyRequest = {
1727
+ /** Exact decimal policy version from the latest experiment; stale updates return 409. */
1728
+ expected_version: string;
1729
+ /** Replacement weights for registered variants; omitted variants are inactive. */
1730
+ weights: Array<{
1731
+ /** Registered native creative ID to assign this weight. */
1732
+ creative_id: string;
1733
+ /** Weight between zero and one; zero disables selection. Eligible weights normalize at serving. */
1734
+ weight: number;
1735
+ }>;
1736
+ };
1737
+ type FeedbackRecoveredCreative = {
1738
+ advertisement_mongo_id: string | null;
1739
+ brand_profile_id: string | null;
1740
+ brand_review_status: string;
1741
+ cdn_url: string;
1742
+ content_sha256: string | null;
1743
+ created_at: string;
1744
+ creative_id: string;
1745
+ headline: string | null;
1746
+ linked_to_experiment_ad: boolean;
1747
+ moderation_status: string | null;
1748
+ render_key: string | null;
1749
+ reviewed_at: string | null;
1750
+ stance: string | null;
1751
+ };
1752
+ type FeedbackRegisterVariantsRequest = {
1753
+ /** Exact decimal policy version from the latest experiment; stale updates return 409. */
1754
+ expected_version: string;
1755
+ /** Approved native variants; identity and bytes remain immutable. */
1756
+ variants: Array<{
1757
+ /** Approved native generated or imported creative ID. */
1758
+ creative_id: string;
1759
+ /** Your model version associated with this immutable variant. */
1760
+ model_version?: string;
1761
+ /** Stable model variant identity within this experiment. */
1762
+ variant_id: string;
1763
+ }>;
1764
+ };
1765
+ type FeedbackReviewRequest = {
1766
+ /** Owned native creative ID awaiting your explicit brand review. */
1767
+ creative_id: string;
1768
+ /** Approve or reject brand use; global AI moderation remains a separate gate. */
1769
+ decision: "approve" | "reject";
1770
+ };
1771
+ type FeedbackReviewResponse = {
1772
+ data: FeedbackCreativeReview;
1773
+ success: true;
1774
+ };
1775
+ type FeedbackRewardQuery = {
1776
+ /** Opaque next_cursor from this same date scope; rewind after scan_complete. */
1777
+ cursor?: string;
1778
+ /** Inclusive first play date, YYYY-MM-DD; date range is at most 31 days. */
1779
+ from: string;
1780
+ /** Unique caller-owned billing key for this page; committed retries return the receipt, not another read. */
1781
+ idempotency_key: string;
1782
+ /** Maximum native play states returned on this metered page. */
1783
+ limit?: number;
1784
+ /** Inclusive last play date, YYYY-MM-DD; date range is at most 31 days. */
1785
+ to: string;
1786
+ };
1787
+ type FeedbackRewardRow = {
1788
+ action: "upsert" | "retract";
1789
+ ad_id: string | null;
1790
+ build_stamp: string;
1791
+ builder_version: string;
1792
+ /** Four ordered strings: play_date, screen_mongo_id, play_source, play_key. */
1793
+ canonical_key: Array<string>;
1794
+ content_sha256: string;
1795
+ /** Lossless issued v1 JSON snapshot; empty string when unissued. Contains variant_id and creative_policy_version. */
1796
+ creative_feedback: string;
1797
+ creative_id: string | null;
1798
+ dwell_capped_ms_mean: number | null;
1799
+ dwell_overlap_ms: number | null;
1800
+ dwell_windows_n: number | null;
1801
+ gaze_face_rows_n: number | null;
1802
+ gaze_overlap_ms: number | null;
1803
+ /** Measured gaze share, 0–1; NULL when not measured. */
1804
+ gaze_pct_on_screen: number | null;
1805
+ gaze_seconds: number | null;
1806
+ gaze_windows_n: number | null;
1807
+ play_completed_at: string | null;
1808
+ play_date: string;
1809
+ play_key: string;
1810
+ play_source: string;
1811
+ play_started_at: string | null;
1812
+ request_id: string | null;
1813
+ reward_revision_id: string;
1814
+ screen_mongo_id: string;
1815
+ superseded: number;
1816
+ };
1817
+ type FeedbackRewards = {
1818
+ experiment_id: string;
1819
+ next_cursor: string | null;
1820
+ objective: "gaze_share" | "gaze_overlap_ms" | "dwell_ms";
1821
+ rewind_next_poll: boolean;
1822
+ rows: Array<FeedbackRewardRow>;
1823
+ scan_complete: boolean;
1824
+ usage_receipt: Record<string, unknown>;
1825
+ view: "latest_state";
1826
+ };
1827
+ type FeedbackRewardsResponse = {
1828
+ data: FeedbackRewards;
1829
+ success: true;
1830
+ };
1831
+ type FeedbackStopRequest = {
1832
+ /** Exact decimal policy version from the latest experiment; stale updates return 409. */
1833
+ expected_version: string;
1834
+ };
1835
+ type FeedbackVariant = {
1836
+ content_sha256?: string | null;
1837
+ creative_id: string;
1838
+ model_version?: string | null;
1839
+ variant_id: string;
1840
+ };
1361
1841
  /**
1362
1842
  * A fleet-command job: one batch that fanned a device command across a screen group's
1363
1843
  * members. Poll via GET /fleet-commands/{id}.
@@ -1494,7 +1974,7 @@ type HttpProbeResult = {
1494
1974
  */
1495
1975
  type HybridError = {
1496
1976
  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`. */
1977
+ /** 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
1978
  code?: string;
1499
1979
  param?: string | null;
1500
1980
  type?: ErrorType;
@@ -1543,6 +2023,265 @@ type LegacyError = {
1543
2023
  message?: string;
1544
2024
  success?: boolean;
1545
2025
  };
2026
+ type Mcp_create_media_buy_Args = {
2027
+ brand?: {
2028
+ domain?: string;
2029
+ name?: string;
2030
+ [key: string]: unknown;
2031
+ };
2032
+ buy_spec?: {
2033
+ audience_profile?: Record<string, unknown>;
2034
+ budget?: {
2035
+ bid_cpm?: number;
2036
+ daily_usd?: number;
2037
+ total_usd?: number;
2038
+ };
2039
+ geo?: {
2040
+ city?: string;
2041
+ country?: string;
2042
+ lat?: number;
2043
+ lng?: number;
2044
+ radius_km?: number;
2045
+ state?: string;
2046
+ };
2047
+ schedule?: {
2048
+ days?: Array<number>;
2049
+ end_date?: string;
2050
+ hours?: Array<number>;
2051
+ start_date?: string;
2052
+ };
2053
+ screen_ids?: Array<string>;
2054
+ venue_types?: Array<string>;
2055
+ };
2056
+ buyer_ref?: string;
2057
+ context?: Record<string, unknown>;
2058
+ creative?: {
2059
+ duration_seconds?: number;
2060
+ type?: "video" | "image" | "vast";
2061
+ url?: string;
2062
+ };
2063
+ end_time?: string;
2064
+ idempotency_key?: string;
2065
+ name?: string;
2066
+ packages?: Array<{
2067
+ bid_price?: number;
2068
+ budget?: number | {
2069
+ amount?: number;
2070
+ currency?: string;
2071
+ [key: string]: unknown;
2072
+ };
2073
+ impressions?: number;
2074
+ pricing_option_id?: string;
2075
+ product_id?: string;
2076
+ targeting_overlay?: Record<string, unknown>;
2077
+ [key: string]: unknown;
2078
+ }>;
2079
+ start_time?: string;
2080
+ total_budget?: {
2081
+ amount?: number;
2082
+ currency?: string;
2083
+ [key: string]: unknown;
2084
+ };
2085
+ [key: string]: unknown;
2086
+ };
2087
+ type Mcp_discover_inventory_Args = {
2088
+ audience_profile?: {
2089
+ income?: "high" | "upper_mid" | "mid" | "lower_mid" | "low";
2090
+ lifestyle?: string;
2091
+ min_attention?: number;
2092
+ };
2093
+ limit?: number;
2094
+ location?: {
2095
+ city?: string;
2096
+ lat?: number;
2097
+ lng?: number;
2098
+ radius_km?: number;
2099
+ state?: string;
2100
+ };
2101
+ venue_types?: Array<string>;
2102
+ };
2103
+ type Mcp_get_media_buy_delivery_Args = {
2104
+ breakdown_by?: Array<"screen" | "venue" | "hour" | "audience_segment">;
2105
+ dimensions?: Array<"screen" | "venue" | "hour" | "audience_segment" | "creative" | "day">;
2106
+ media_buy_id: string;
2107
+ [key: string]: unknown;
2108
+ };
2109
+ type Mcp_get_media_buys_Args = {
2110
+ context?: Record<string, unknown>;
2111
+ include_snapshot?: boolean;
2112
+ media_buy_ids?: Array<string>;
2113
+ pagination?: {
2114
+ cursor?: string;
2115
+ max_results?: number;
2116
+ };
2117
+ status_filter?: "pending_creatives" | "pending_start" | "active" | "paused" | "completed" | "rejected" | "canceled" | Array<"pending_creatives" | "pending_start" | "active" | "paused" | "completed" | "rejected" | "canceled">;
2118
+ [key: string]: unknown;
2119
+ };
2120
+ type Mcp_get_products_Args = {
2121
+ audience_profile?: {
2122
+ income?: string;
2123
+ lifestyle?: string;
2124
+ min_attention?: number;
2125
+ };
2126
+ brief?: string;
2127
+ buying_mode?: "brief" | "wholesale" | "refine";
2128
+ filters?: {
2129
+ budget_range?: {
2130
+ currency?: string;
2131
+ max?: number;
2132
+ min?: number;
2133
+ };
2134
+ channels?: Array<string>;
2135
+ countries?: Array<string>;
2136
+ delivery_type?: string;
2137
+ format_types?: Array<string>;
2138
+ venue_types?: Array<string>;
2139
+ [key: string]: unknown;
2140
+ };
2141
+ market?: string;
2142
+ pagination?: {
2143
+ cursor?: string;
2144
+ max_results?: number;
2145
+ };
2146
+ venue_types?: Array<string>;
2147
+ [key: string]: unknown;
2148
+ };
2149
+ type Mcp_list_accounts_Args = {
2150
+ account?: {
2151
+ account_id?: string;
2152
+ brand?: {
2153
+ brand_id?: string;
2154
+ domain: string;
2155
+ };
2156
+ operator?: string;
2157
+ sandbox?: boolean;
2158
+ };
2159
+ context?: Record<string, unknown>;
2160
+ pagination?: {
2161
+ cursor?: string;
2162
+ max_results?: number;
2163
+ };
2164
+ sandbox?: boolean;
2165
+ status?: "active" | "pending_approval" | "rejected" | "payment_required" | "suspended" | "closed";
2166
+ [key: string]: unknown;
2167
+ };
2168
+ type Mcp_sync_accounts_Args = {
2169
+ accounts: Array<{
2170
+ account?: {
2171
+ account_id?: string;
2172
+ brand?: {
2173
+ brand_id?: string;
2174
+ domain: string;
2175
+ };
2176
+ operator?: string;
2177
+ sandbox?: boolean;
2178
+ };
2179
+ billing?: "operator" | "agent" | "advertiser";
2180
+ billing_entity?: Record<string, unknown>;
2181
+ brand?: {
2182
+ brand_id?: string;
2183
+ domain: string;
2184
+ };
2185
+ notification_configs?: Array<Record<string, unknown>>;
2186
+ operator?: string;
2187
+ payment_terms?: "net_15" | "net_30" | "net_45" | "net_60" | "net_90" | "prepay";
2188
+ preferred_reporting_protocol?: string;
2189
+ sandbox?: boolean;
2190
+ }>;
2191
+ context?: Record<string, unknown>;
2192
+ delete_missing?: boolean;
2193
+ dry_run?: boolean;
2194
+ idempotency_key: string;
2195
+ push_notification_config?: Record<string, unknown>;
2196
+ [key: string]: unknown;
2197
+ };
2198
+ type Mcp_sync_creatives_Args = {
2199
+ account?: {
2200
+ account_id?: string;
2201
+ brand?: {
2202
+ brand_id?: string;
2203
+ domain: string;
2204
+ };
2205
+ operator?: string;
2206
+ sandbox?: boolean;
2207
+ };
2208
+ assignments?: Array<{
2209
+ creative_id: string;
2210
+ media_buy_id?: string;
2211
+ package_id?: string;
2212
+ [key: string]: unknown;
2213
+ }>;
2214
+ context?: Record<string, unknown>;
2215
+ creative_ids?: Array<string>;
2216
+ creatives: Array<{
2217
+ assets?: Record<string, unknown>;
2218
+ creative_id?: string;
2219
+ duration_seconds?: number;
2220
+ file_size_mb?: number;
2221
+ format_id?: {
2222
+ agent_url: string;
2223
+ duration_ms?: number;
2224
+ height?: number;
2225
+ id: string;
2226
+ width?: number;
2227
+ } | string;
2228
+ format_kind?: string;
2229
+ height?: number;
2230
+ name?: string;
2231
+ type?: "video" | "image" | "vast";
2232
+ url?: string;
2233
+ width?: number;
2234
+ [key: string]: unknown;
2235
+ }>;
2236
+ delete_missing?: boolean;
2237
+ dry_run?: boolean;
2238
+ ext?: Record<string, unknown>;
2239
+ idempotency_key?: string;
2240
+ media_buy_id?: string;
2241
+ push_notification_config?: Record<string, unknown>;
2242
+ validation_mode?: string;
2243
+ [key: string]: unknown;
2244
+ };
2245
+ type Mcp_update_media_buy_Args = {
2246
+ account?: Record<string, unknown>;
2247
+ canceled?: boolean;
2248
+ cancellation_reason?: string;
2249
+ context?: Record<string, unknown>;
2250
+ end_time?: string;
2251
+ ext?: Record<string, unknown>;
2252
+ idempotency_key?: string;
2253
+ invoice_recipient?: Record<string, unknown>;
2254
+ media_buy_id: string;
2255
+ new_packages?: Array<Record<string, unknown>>;
2256
+ packages?: Array<{
2257
+ creative_assignments?: Array<{
2258
+ creative_id: string;
2259
+ [key: string]: unknown;
2260
+ }>;
2261
+ package_id: string;
2262
+ targeting_overlay?: Record<string, unknown> | null;
2263
+ [key: string]: unknown;
2264
+ }>;
2265
+ paused?: boolean;
2266
+ push_notification_config?: Record<string, unknown>;
2267
+ reporting_webhook?: Record<string, unknown>;
2268
+ revision?: number;
2269
+ start_time?: string | string;
2270
+ updates?: {
2271
+ budget?: {
2272
+ bid_cpm?: number;
2273
+ daily_usd?: number;
2274
+ total_usd?: number;
2275
+ };
2276
+ end_date?: string;
2277
+ name?: string;
2278
+ screen_ids?: Array<string>;
2279
+ start_date?: string;
2280
+ status?: "active" | "paused" | "cancelled";
2281
+ targeting?: Record<string, unknown>;
2282
+ };
2283
+ [key: string]: unknown;
2284
+ };
1546
2285
  type MdnsNetworkDevice = {
1547
2286
  /** The responder's IP address as a string — the first IPv4 address if it has one, otherwise any address. A record that resolves to no address is dropped rather than emitted with a null host, so in practice this is always populated. It is also what seeds the HTTP-probe target list for the same discovery cycle. */
1548
2287
  host?: string | null;
@@ -1569,7 +2308,7 @@ type MdnsNetworkDevice = {
1569
2308
  type MeasurementMethodology = {
1570
2309
  /** 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
2310
  canonical_path?: string;
1572
- /** What each screen observes and what is dropped at the edge. */
2311
+ /** What each screen observes and sends. */
1573
2312
  capture_stack?: Record<string, unknown>;
1574
2313
  /** 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
2314
  cross_day_matching?: Record<string, unknown>;
@@ -1585,15 +2324,13 @@ type MeasurementMethodology = {
1585
2324
  fallback_path?: string;
1586
2325
  /** How identifiers are keyed, and what erasure means. */
1587
2326
  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. */
2327
+ /** 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
2328
  identifier_inflation?: Record<string, unknown>;
1590
2329
  /** 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
2330
  mrc_ooh_phase2_alignment: Record<string, unknown>;
1592
2331
  /** 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
2332
  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. */
2333
+ /** Per-store retention in days in active systems; `basis` states how each is counted and what the encrypted archive keeps. */
1597
2334
  retention: Record<string, unknown>;
1598
2335
  /** Tables a reviewer re-derives every published count from. */
1599
2336
  source_tables: Array<string>;
@@ -1820,6 +2557,25 @@ type PartnerDeviceHeartbeatBody = {
1820
2557
  wifiSsidHash?: string | null;
1821
2558
  [key: string]: unknown;
1822
2559
  };
2560
+ /**
2561
+ * 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.
2562
+ */
2563
+ type PartnerDevicePlay = {
2564
+ /** Optional ad/line identifier; defaults to the sha-keyed creative. */
2565
+ ad_id?: string;
2566
+ /** When the play completed (device clock), within the last 7 days and at most 5 minutes ahead of the server clock. */
2567
+ completed_at: string;
2568
+ /** The classification reference from POST /creatives — `sha256:<hex>` or the bare 64-char content hash. */
2569
+ creative_ref: string;
2570
+ /** Play duration in seconds (default 30). */
2571
+ duration_seconds?: number;
2572
+ /** 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. */
2573
+ impression_id?: string;
2574
+ /** Your unique id for this play (idempotency key, shared with POST /v1/partner/plays). */
2575
+ play_id: string;
2576
+ /** Optional request identifier. */
2577
+ request_id?: string;
2578
+ };
1823
2579
  /**
1824
2580
  * Request body accepted by the single-device registration endpoints
1825
2581
  * (`@trillboards/api-client` `PartnerDeviceRegistrationInput`). Additional
@@ -1831,8 +2587,8 @@ type PartnerDeviceRegistrationInput = {
1831
2587
  device_id?: string;
1832
2588
  /** Legacy SDK alias for the device identifier, retained for backwards compatibility. */
1833
2589
  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;
2590
+ /** 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. */
2591
+ device_type?: "tv" | "tablet" | "display" | "kiosk" | "other" | "mobile" | "connected_tv" | "digital_signage" | "vending_machine";
1836
2592
  /** Display specification (pixel resolution and/or physical size). */
1837
2593
  display?: Record<string, unknown>;
1838
2594
  display_settings?: PartnerRegistrationDisplaySettings;
@@ -1949,7 +2705,7 @@ type PartnerHeartbeatRequest = {
1949
2705
  last_vast_response_at?: string;
1950
2706
  /** 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
2707
  location?: {
1952
- /** Horizontal accuracy radius in meters. Fixes above ~500m are clamped. */
2708
+ /** Horizontal accuracy radius in meters, stored as the device reports it. */
1953
2709
  accuracy_m?: number;
1954
2710
  /** 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
2711
  buffered_locations?: Array<{
@@ -1970,7 +2726,7 @@ type PartnerHeartbeatRequest = {
1970
2726
  source?: "gps" | "gps_buffered";
1971
2727
  /** Ground speed in meters per second. Omit if unavailable. */
1972
2728
  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. */
2729
+ /** 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
2730
  timestamp?: number;
1975
2731
  };
1976
2732
  /** Alternate namespace for telemetry keys (legacy support). */
@@ -2093,6 +2849,21 @@ type PartnerHeartbeatTelemetry = {
2093
2849
  webview_chromium_major?: number;
2094
2850
  [key: string]: unknown;
2095
2851
  };
2852
+ /**
2853
+ * What a rider did with the screen, reported by the partner SDK's reportInteraction. (partner, device, interaction_id) is the event's identity.
2854
+ */
2855
+ type PartnerInteraction = {
2856
+ /** The creative on screen, as the host names it. */
2857
+ creative_id?: string;
2858
+ /** The host app's id for this interaction (idempotency key, per device). */
2859
+ interaction_id: string;
2860
+ /** When it happened (device clock), within the last 7 days and at most 5 minutes ahead of the server clock. */
2861
+ occurred_at: string;
2862
+ /** Milliseconds into the creative's playback when it happened. */
2863
+ t_ms?: number;
2864
+ /** What happened. Never a programmatic ad-lifecycle event (those are POST /device/{deviceId}/programmatic-event). */
2865
+ type: "tap" | "qr_shown" | "qr_scanned" | "dwell_prompt";
2866
+ };
2096
2867
  type PartnerLBarContent = {
2097
2868
  /** 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
2869
  business_name?: string;
@@ -2145,6 +2916,30 @@ type PartnerLBarSettings = {
2145
2916
  /** 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
2917
  playback_policy?: Record<string, unknown>;
2147
2918
  };
2919
+ /**
2920
+ * Where the screen's location comes from, and, per rail, whether that rail
2921
+ * has the location it needs. Location is a readiness capability, never a
2922
+ * registration rule: a device without one is registered, and this says
2923
+ * which rails serve it until a position arrives. `monetization_status` is
2924
+ * computed over `inventory_feed` and `geo_targeted_demand`.
2925
+ *
2926
+ */
2927
+ type PartnerLocationCapability = {
2928
+ /** `precise` — the screen or its device has coordinates; `fleet_market` — none of its own, your account's declared fleet market location lists it; `none`. */
2929
+ position?: "precise" | "fleet_market" | "none";
2930
+ rails?: {
2931
+ geo_targeted_demand?: PartnerLocationRail;
2932
+ inventory_feed?: PartnerLocationRail;
2933
+ visit_attribution?: PartnerLocationRail;
2934
+ };
2935
+ };
2936
+ type PartnerLocationRail = {
2937
+ /** Where a ready rail's location comes from; null when blocked. Only `inventory_feed` reads `fleet_market`. */
2938
+ location_source?: "screen" | "device" | "fleet_market" | null | null;
2939
+ /** Why a blocked rail has no location; null when ready. See https://api.trillboards.com/docs/monetization-requirements#location-capability. */
2940
+ reason?: "awaiting_device_gps" | "no_location_provided" | "city_without_state" | "geocode_failed" | "screen_position_pending" | "country_unknown" | "country_not_supported" | null | null;
2941
+ status?: "ready" | "blocked";
2942
+ };
2148
2943
  /**
2149
2944
  * Stripe-style monetization requirements (account.requirements analogue).
2150
2945
  * Returned on device register / update / get / batch so bulk partners can
@@ -2413,6 +3208,29 @@ type PartnerStats = {
2413
3208
  /** 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
3209
  total_revenue_cents?: number;
2415
3210
  };
3211
+ /**
3212
+ * One taxi-meter state change reported by the partner SDK's setTripState. (partner, device, trip_id, event_seq) is the event's identity.
3213
+ */
3214
+ type PartnerTripState = {
3215
+ /** The host's destination text or zone. */
3216
+ destination?: string;
3217
+ /** 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). */
3218
+ event_seq: number;
3219
+ /** Fare so far, in the smallest currency unit. */
3220
+ fare_cents?: number;
3221
+ /** true while the meter runs (a hired trip). */
3222
+ meter_on: boolean;
3223
+ /** Riders the host counted. */
3224
+ passenger_count?: number;
3225
+ /** The host's payment type (stored trimmed and lowercased). */
3226
+ payment_type?: string;
3227
+ /** When the meter changed state (device clock), within the last 7 days and at most 5 minutes ahead of the server clock. */
3228
+ state_at: string;
3229
+ /** Tip, in the smallest currency unit. */
3230
+ tip_cents?: number;
3231
+ /** The host app's trip id. Unique per device, not per partner. */
3232
+ trip_id: string;
3233
+ };
2416
3234
  /**
2417
3235
  * 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
3236
  */
@@ -2985,7 +3803,7 @@ type SensingRoute = {
2985
3803
  } | null;
2986
3804
  /** 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
3805
  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. */
3806
+ /** `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
3807
  mode?: "threshold" | "digest";
2990
3808
  /** 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
3809
  name?: string;
@@ -2997,9 +3815,11 @@ type SensingRoute = {
2997
3815
  partnerId?: string;
2998
3816
  /** 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
3817
  profileName?: string | null;
3818
+ reviewTimingMode?: SensingRouteReviewTimingMode;
3819
+ reviewWaitSeconds?: SensingRouteReviewWaitSeconds;
3000
3820
  /** 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
3821
  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. */
3822
+ /** 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
3823
  screenFocusRegions?: Array<SensingRouteScreenFocusRegion>;
3004
3824
  /** 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
3825
  screenMongoIds?: Array<string>;
@@ -3044,6 +3864,14 @@ type SensingRouteCondition = {
3044
3864
  /** The threshold value (numeric, string, or boolean depending on the field). */
3045
3865
  value?: number | string | boolean;
3046
3866
  };
3867
+ /**
3868
+ * 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.
3869
+ */
3870
+ type SensingRouteReviewTimingMode = "immediate" | "wait_recheck" | null | null;
3871
+ /**
3872
+ * 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.
3873
+ */
3874
+ type SensingRouteReviewWaitSeconds = number | null;
3047
3875
  /**
3048
3876
  * 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
3877
  */
@@ -3203,6 +4031,8 @@ type Transaction = {
3203
4031
  created_at?: string;
3204
4032
  /** 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
4033
  date?: string;
4034
+ earning_source_version?: 1;
4035
+ earning_sources?: EarningsSources;
3206
4036
  /** 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
4037
  id?: string;
3208
4038
  /** Number of impressions (for earning transactions) */
@@ -3219,7 +4049,7 @@ type Transaction = {
3219
4049
  */
3220
4050
  type TrillboardsError = {
3221
4051
  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`. */
4052
+ /** 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
4053
  code: string;
3224
4054
  /** Per-field violations (populated from Zod errors). */
3225
4055
  details?: Array<{
@@ -3246,7 +4076,7 @@ type TrillboardsError = {
3246
4076
  };
3247
4077
  };
3248
4078
  /**
3249
- * Partial, non-clobbering update — include only the fields to change.
4079
+ * 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
4080
  */
3251
4081
  type UpdatePartnerSensingRouteRequest = {
3252
4082
  /** 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 +4105,8 @@ type UpdatePartnerSensingRouteRequest = {
3275
4105
  name?: string;
3276
4106
  /** 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
4107
  profileName?: string | null;
4108
+ reviewTimingMode?: SensingRouteReviewTimingMode;
4109
+ reviewWaitSeconds?: SensingRouteReviewWaitSeconds;
3278
4110
  /** 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
4111
  screenFocusRegions?: Array<SensingRouteScreenFocusRegion>;
3280
4112
  /** 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 +4165,7 @@ type Webhook = {
3333
4165
  /** When webhook was created */
3334
4166
  created_at?: string;
3335
4167
  /** 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">;
4168
+ 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
4169
  /** Total failed deliveries */
3338
4170
  failure_count?: number;
3339
4171
  /** Last time webhook was triggered */
@@ -3414,7 +4246,7 @@ type WifiScanResult = {
3414
4246
  channelWidthMhz?: number | null;
3415
4247
  /** 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
4248
  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. */
4249
+ /** 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
4250
  rawBssid: string;
3419
4251
  /** 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
4252
  signalStrengthDbm: number;
@@ -3428,8 +4260,177 @@ interface queryChangelogOperation {
3428
4260
  readonly path: "/v1/changelog";
3429
4261
  readonly method: "GET";
3430
4262
  request: never;
4263
+ params: Record<string, unknown>;
4264
+ query: {
4265
+ /** Only entries dated on or after this date (YYYY-MM-DD). Unreleased entries always included. */
4266
+ since?: string;
4267
+ /** Filter by change category: "breaking" (changed+removed), "additive" (added), "deprecation" (deprecated), "fix" (fixed). Comma-separated for multiple. */
4268
+ type?: string;
4269
+ };
3431
4270
  response: ChangelogResponse;
3432
4271
  }
4272
+ /**
4273
+ * Aggregate audience analytics for a time window.
4274
+ * GET /v1/data/aggregate
4275
+ */
4276
+ interface dataApiAggregateOperation {
4277
+ readonly path: "/v1/data/aggregate";
4278
+ readonly method: "GET";
4279
+ request: never;
4280
+ params: Record<string, unknown>;
4281
+ query: {
4282
+ /** Dimension to group aggregations by. */
4283
+ group_by?: "venue_type" | "daypart" | "day_of_week" | "income_estimated_level" | "primary_mood";
4284
+ /** Metric to aggregate on. */
4285
+ metric?: "avg_face_count" | "avg_attention" | "income_confidence" | "max_face_count";
4286
+ /** Relative time window (e.g. "24h", "7d"). */
4287
+ since?: string;
4288
+ };
4289
+ response: DataApi_AggregateResponse;
4290
+ }
4291
+ /**
4292
+ * Find screens with similar audience profiles.
4293
+ * GET /v1/data/lookalike
4294
+ */
4295
+ interface dataApiLookalikeScreensOperation {
4296
+ readonly path: "/v1/data/lookalike";
4297
+ readonly method: "GET";
4298
+ request: never;
4299
+ params: Record<string, unknown>;
4300
+ query: {
4301
+ limit?: number;
4302
+ min_similarity?: number;
4303
+ /** Internal screen identifier. */
4304
+ screen_id: string;
4305
+ };
4306
+ response: DataApi_LookalikeResponse;
4307
+ }
4308
+ /**
4309
+ * Composable query DSL over approved datasets.
4310
+ * POST /v1/data/query
4311
+ */
4312
+ interface dataApiQueryDslOperation {
4313
+ readonly path: "/v1/data/query";
4314
+ readonly method: "POST";
4315
+ request: DataApi_QueryDslBody;
4316
+ params: Record<string, unknown>;
4317
+ query: Record<string, unknown>;
4318
+ response: DataApi_QueryDslResponse;
4319
+ }
4320
+ /**
4321
+ * List screens visible to the caller.
4322
+ * GET /v1/data/screens
4323
+ */
4324
+ interface dataApiListScreensOperation {
4325
+ readonly path: "/v1/data/screens";
4326
+ readonly method: "GET";
4327
+ request: never;
4328
+ params: Record<string, unknown>;
4329
+ query: {
4330
+ /** ISO-3166 alpha-2 country code. */
4331
+ country?: string;
4332
+ limit?: number;
4333
+ offset?: number;
4334
+ /** Filter by venue taxonomy type (e.g. bar, restaurant). */
4335
+ venue_type?: string;
4336
+ };
4337
+ response: DataApi_ScreensListResponse;
4338
+ }
4339
+ /**
4340
+ * Real-time audience snapshot for a screen.
4341
+ * GET /v1/data/screens/{screenId}/audience
4342
+ */
4343
+ interface dataApiScreenAudienceLiveOperation {
4344
+ readonly path: "/v1/data/screens/{screenId}/audience";
4345
+ readonly method: "GET";
4346
+ request: never;
4347
+ params: {
4348
+ /** Internal screen identifier. */
4349
+ screenId: string;
4350
+ };
4351
+ query: Record<string, unknown>;
4352
+ response: DataApi_ScreenAudienceResponse;
4353
+ }
4354
+ /**
4355
+ * Historical audience_metrics rows for a screen.
4356
+ * GET /v1/data/screens/{screenId}/history
4357
+ */
4358
+ interface dataApiScreenAudienceHistoryOperation {
4359
+ readonly path: "/v1/data/screens/{screenId}/history";
4360
+ readonly method: "GET";
4361
+ request: never;
4362
+ params: {
4363
+ /** Internal screen identifier. */
4364
+ screenId: string;
4365
+ };
4366
+ query: {
4367
+ limit?: number;
4368
+ /** ISO-8601 start timestamp. */
4369
+ since?: string;
4370
+ /** ISO-8601 end timestamp. */
4371
+ until?: string;
4372
+ };
4373
+ response: DataApi_ScreenHistoryResponse;
4374
+ }
4375
+ /**
4376
+ * Similarity search over scene embeddings.
4377
+ * GET /v1/data/semantic-search
4378
+ */
4379
+ interface dataApiSemanticSearchOperation {
4380
+ readonly path: "/v1/data/semantic-search";
4381
+ readonly method: "GET";
4382
+ request: never;
4383
+ params: Record<string, unknown>;
4384
+ query: {
4385
+ limit?: number;
4386
+ min_similarity?: number;
4387
+ q: string;
4388
+ /** Relative time window (e.g. "24h", "7d"). */
4389
+ since?: string;
4390
+ };
4391
+ response: DataApi_SemanticSearchResponse;
4392
+ }
4393
+ /**
4394
+ * Platform-wide counters.
4395
+ * GET /v1/data/stats
4396
+ */
4397
+ interface dataApiStatsOperation {
4398
+ readonly path: "/v1/data/stats";
4399
+ readonly method: "GET";
4400
+ request: never;
4401
+ params: Record<string, unknown>;
4402
+ query: Record<string, unknown>;
4403
+ response: DataApi_StatsResponse;
4404
+ }
4405
+ /**
4406
+ * Server-Sent Events stream of live audience/observation events.
4407
+ * GET /v1/data/stream
4408
+ */
4409
+ interface dataApiStreamOperation {
4410
+ readonly path: "/v1/data/stream";
4411
+ readonly method: "GET";
4412
+ request: never;
4413
+ params: Record<string, unknown>;
4414
+ query: {
4415
+ observation_family?: string;
4416
+ venue_type?: string;
4417
+ };
4418
+ response: unknown;
4419
+ }
4420
+ /**
4421
+ * API usage for the authenticated key (billing dashboard).
4422
+ * GET /v1/data/usage
4423
+ */
4424
+ interface dataApiUsageOperation {
4425
+ readonly path: "/v1/data/usage";
4426
+ readonly method: "GET";
4427
+ request: never;
4428
+ params: Record<string, unknown>;
4429
+ query: {
4430
+ days?: number;
4431
+ };
4432
+ response: DataApi_UsageResponse;
4433
+ }
3433
4434
  /**
3434
4435
  * List all error codes
3435
4436
  * GET /v1/errors
@@ -3438,6 +4439,8 @@ interface listErrorCodesOperation {
3438
4439
  readonly path: "/v1/errors";
3439
4440
  readonly method: "GET";
3440
4441
  request: never;
4442
+ params: Record<string, unknown>;
4443
+ query: Record<string, unknown>;
3441
4444
  response: ErrorListResponse;
3442
4445
  }
3443
4446
  /**
@@ -3448,8 +4451,28 @@ interface getErrorCodeOperation {
3448
4451
  readonly path: "/v1/errors/{code}";
3449
4452
  readonly method: "GET";
3450
4453
  request: never;
4454
+ params: {
4455
+ /** A stable error code from the catalog. See GET /v1/errors for the full list. */
4456
+ code: string;
4457
+ };
4458
+ query: Record<string, unknown>;
3451
4459
  response: ErrorCodeResponse;
3452
4460
  }
4461
+ /**
4462
+ * Example healthcheck (Phase 3 pipeline proof)
4463
+ * GET /v1/example/healthcheck
4464
+ */
4465
+ interface exampleHealthcheckOperation {
4466
+ readonly path: "/v1/example/healthcheck";
4467
+ readonly method: "GET";
4468
+ request: never;
4469
+ params: Record<string, unknown>;
4470
+ query: {
4471
+ /** When `true`, include diagnostic fields in the response. */
4472
+ verbose?: "true" | "false";
4473
+ };
4474
+ response: DataApi_ExampleHealthcheckResponse;
4475
+ }
3453
4476
  /**
3454
4477
  * List self-promo ads
3455
4478
  * GET /v1/partner/ads/self-promo
@@ -3458,6 +4481,8 @@ interface listPartnerSelfPromoAdsOperation {
3458
4481
  readonly path: "/v1/partner/ads/self-promo";
3459
4482
  readonly method: "GET";
3460
4483
  request: never;
4484
+ params: Record<string, unknown>;
4485
+ query: Record<string, unknown>;
3461
4486
  response: {
3462
4487
  data?: Array<PartnerSelfPromoAd>;
3463
4488
  success?: boolean;
@@ -3471,6 +4496,8 @@ interface createPartnerSelfPromoAdOperation {
3471
4496
  readonly path: "/v1/partner/ads/self-promo";
3472
4497
  readonly method: "POST";
3473
4498
  request: PartnerSelfPromoCreate;
4499
+ params: Record<string, unknown>;
4500
+ query: Record<string, unknown>;
3474
4501
  response: {
3475
4502
  data?: PartnerSelfPromoAd;
3476
4503
  success?: boolean;
@@ -3485,6 +4512,8 @@ interface listPartnerSelfPromoPlacementsOperation {
3485
4512
  readonly path: "/v1/partner/ads/self-promo/placements";
3486
4513
  readonly method: "GET";
3487
4514
  request: never;
4515
+ params: Record<string, unknown>;
4516
+ query: Record<string, unknown>;
3488
4517
  response: {
3489
4518
  data?: Array<PartnerSelfPromoPlacement>;
3490
4519
  success?: boolean;
@@ -3503,6 +4532,8 @@ interface schedulePartnerSelfPromoOperation {
3503
4532
  screen_ids: Array<string>;
3504
4533
  start_date?: string;
3505
4534
  };
4535
+ params: Record<string, unknown>;
4536
+ query: Record<string, unknown>;
3506
4537
  response: {
3507
4538
  success?: boolean;
3508
4539
  };
@@ -3515,6 +4546,8 @@ interface createPartnerSelfPromoUploadOperation {
3515
4546
  readonly path: "/v1/partner/ads/self-promo/upload";
3516
4547
  readonly method: "POST";
3517
4548
  request: never;
4549
+ params: Record<string, unknown>;
4550
+ query: Record<string, unknown>;
3518
4551
  response: {
3519
4552
  data?: PartnerSelfPromoAd;
3520
4553
  success?: boolean;
@@ -3529,6 +4562,10 @@ interface disableSelfPromoAdOperation {
3529
4562
  readonly path: "/v1/partner/ads/self-promo/{ad_id}/disable";
3530
4563
  readonly method: "POST";
3531
4564
  request: never;
4565
+ params: {
4566
+ ad_id: string;
4567
+ };
4568
+ query: Record<string, unknown>;
3532
4569
  response: {
3533
4570
  ad_id?: string;
3534
4571
  status?: "disabled";
@@ -3555,6 +4592,8 @@ interface registerAgentOperation {
3555
4592
  /** 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
4593
  sandbox?: boolean;
3557
4594
  };
4595
+ params: Record<string, unknown>;
4596
+ query: Record<string, unknown>;
3558
4597
  response: {
3559
4598
  /** 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
4599
  account?: {
@@ -3609,6 +4648,11 @@ interface getAnalyticsOperation {
3609
4648
  readonly path: "/v1/partner/analytics";
3610
4649
  readonly method: "GET";
3611
4650
  request: never;
4651
+ params: Record<string, unknown>;
4652
+ query: {
4653
+ end_date?: string;
4654
+ start_date?: string;
4655
+ };
3612
4656
  response: {
3613
4657
  data?: {
3614
4658
  devices_by_status?: Array<Record<string, unknown>>;
@@ -3640,6 +4684,11 @@ interface getAudienceContinuityOperation {
3640
4684
  readonly path: "/v1/partner/analytics/audience-continuity";
3641
4685
  readonly method: "GET";
3642
4686
  request: never;
4687
+ params: Record<string, unknown>;
4688
+ query: {
4689
+ timeRange?: "today" | "last_7d" | "last_30d";
4690
+ windowMinutes?: number;
4691
+ };
3643
4692
  response: {
3644
4693
  data?: {
3645
4694
  confidence?: string;
@@ -3657,6 +4706,10 @@ interface getAudienceProfileOperation {
3657
4706
  readonly path: "/v1/partner/analytics/audience-profile";
3658
4707
  readonly method: "GET";
3659
4708
  request: never;
4709
+ params: Record<string, unknown>;
4710
+ query: {
4711
+ timeRange?: "today" | "last_7d" | "last_30d";
4712
+ };
3660
4713
  response: {
3661
4714
  data?: {
3662
4715
  sampleSize?: number;
@@ -3673,6 +4726,10 @@ interface getBleSummaryOperation {
3673
4726
  readonly path: "/v1/partner/analytics/ble-summary";
3674
4727
  readonly method: "GET";
3675
4728
  request: never;
4729
+ params: Record<string, unknown>;
4730
+ query: {
4731
+ timeRange?: "today" | "last_7d" | "last_30d";
4732
+ };
3676
4733
  response: {
3677
4734
  data?: {
3678
4735
  totalObservations?: number;
@@ -3689,6 +4746,14 @@ interface getContentPerformanceOperation {
3689
4746
  readonly path: "/v1/partner/analytics/content-performance";
3690
4747
  readonly method: "GET";
3691
4748
  request: never;
4749
+ params: Record<string, unknown>;
4750
+ query: {
4751
+ groupBy?: "canonical" | "wrapper";
4752
+ includeUnclassified?: boolean;
4753
+ limit?: number;
4754
+ offset?: number;
4755
+ timeRange?: "today" | "last_7d" | "last_30d";
4756
+ };
3692
4757
  response: {
3693
4758
  data?: {
3694
4759
  byScreen?: Record<string, unknown>;
@@ -3726,6 +4791,12 @@ interface searchCreativeCatalogOperation {
3726
4791
  readonly path: "/v1/partner/analytics/creative-catalog";
3727
4792
  readonly method: "GET";
3728
4793
  request: never;
4794
+ params: Record<string, unknown>;
4795
+ query: {
4796
+ limit?: number;
4797
+ offset?: number;
4798
+ q?: string;
4799
+ };
3729
4800
  response: {
3730
4801
  data?: {
3731
4802
  creatives?: Array<{
@@ -3753,6 +4824,14 @@ interface getCreativeScenesOperation {
3753
4824
  readonly path: "/v1/partner/analytics/creative-scenes";
3754
4825
  readonly method: "GET";
3755
4826
  request: never;
4827
+ params: Record<string, unknown>;
4828
+ query: {
4829
+ adId: string;
4830
+ cursor?: string;
4831
+ limit?: number;
4832
+ screenId: string;
4833
+ timeRange?: "today" | "last_7d" | "last_30d";
4834
+ };
3756
4835
  response: {
3757
4836
  data?: {
3758
4837
  adId?: string;
@@ -3773,6 +4852,10 @@ interface getCrossScreenFlowOperation {
3773
4852
  readonly path: "/v1/partner/analytics/cross-screen-flow";
3774
4853
  readonly method: "GET";
3775
4854
  request: never;
4855
+ params: Record<string, unknown>;
4856
+ query: {
4857
+ timeRange?: "today" | "last_7d" | "last_30d";
4858
+ };
3776
4859
  response: {
3777
4860
  data?: {
3778
4861
  edges?: Array<Record<string, unknown>>;
@@ -3789,6 +4872,12 @@ interface getPartnerAnalyticsDashboardOperation {
3789
4872
  readonly path: "/v1/partner/analytics/dashboard";
3790
4873
  readonly method: "GET";
3791
4874
  request: never;
4875
+ params: Record<string, unknown>;
4876
+ query: {
4877
+ endDate?: string;
4878
+ period?: "7d" | "30d" | "90d" | "custom";
4879
+ startDate?: string;
4880
+ };
3792
4881
  response: {
3793
4882
  data?: {
3794
4883
  ads?: Record<string, unknown>;
@@ -3819,6 +4908,10 @@ interface getDeviceSuiteSignatureOperation {
3819
4908
  readonly path: "/v1/partner/analytics/device-suite-signature";
3820
4909
  readonly method: "GET";
3821
4910
  request: never;
4911
+ params: Record<string, unknown>;
4912
+ query: {
4913
+ timeRange?: "today" | "last_7d" | "last_30d";
4914
+ };
3822
4915
  response: {
3823
4916
  data?: {
3824
4917
  deviceTypes?: Array<Record<string, unknown>>;
@@ -3835,6 +4928,13 @@ interface exportPartnerAnalyticsOperation {
3835
4928
  readonly path: "/v1/partner/analytics/export";
3836
4929
  readonly method: "GET";
3837
4930
  request: never;
4931
+ params: Record<string, unknown>;
4932
+ query: {
4933
+ endDate?: string;
4934
+ period?: "7d" | "30d" | "90d" | "custom";
4935
+ startDate?: string;
4936
+ type?: "summary" | "daily-breakdown" | "screen-breakdown";
4937
+ };
3838
4938
  response: unknown;
3839
4939
  }
3840
4940
  /**
@@ -3845,6 +4945,12 @@ interface exportPartnerAdsByDayOperation {
3845
4945
  readonly path: "/v1/partner/analytics/export/ads-by-day";
3846
4946
  readonly method: "GET";
3847
4947
  request: never;
4948
+ params: Record<string, unknown>;
4949
+ query: {
4950
+ endDate: string;
4951
+ format?: "csv" | "json";
4952
+ startDate: string;
4953
+ };
3848
4954
  response: {
3849
4955
  data?: Array<{
3850
4956
  ad_name?: string;
@@ -3869,6 +4975,10 @@ interface getFleetHourlyOperation {
3869
4975
  readonly path: "/v1/partner/analytics/fleet-hourly";
3870
4976
  readonly method: "GET";
3871
4977
  request: never;
4978
+ params: Record<string, unknown>;
4979
+ query: {
4980
+ timeRange?: "today" | "last_7d" | "last_30d";
4981
+ };
3872
4982
  response: {
3873
4983
  data?: {
3874
4984
  hours?: Array<Record<string, unknown>>;
@@ -3885,6 +4995,10 @@ interface getHaloFunnelOperation {
3885
4995
  readonly path: "/v1/partner/analytics/halo-funnel";
3886
4996
  readonly method: "GET";
3887
4997
  request: never;
4998
+ params: Record<string, unknown>;
4999
+ query: {
5000
+ timeRange?: "today" | "last_7d" | "last_30d";
5001
+ };
3888
5002
  response: {
3889
5003
  data?: {
3890
5004
  stages?: Array<Record<string, unknown>>;
@@ -3900,6 +5014,10 @@ interface getLoyaltyClockOperation {
3900
5014
  readonly path: "/v1/partner/analytics/loyalty-clock";
3901
5015
  readonly method: "GET";
3902
5016
  request: never;
5017
+ params: Record<string, unknown>;
5018
+ query: {
5019
+ timeRange?: "today" | "last_7d" | "last_30d";
5020
+ };
3903
5021
  response: {
3904
5022
  data?: {
3905
5023
  hours?: Array<{
@@ -3922,6 +5040,10 @@ interface getNetworkSummaryOperation {
3922
5040
  readonly path: "/v1/partner/analytics/network-summary";
3923
5041
  readonly method: "GET";
3924
5042
  request: never;
5043
+ params: Record<string, unknown>;
5044
+ query: {
5045
+ timeRange?: "today" | "last_7d" | "last_30d";
5046
+ };
3925
5047
  response: {
3926
5048
  data?: {
3927
5049
  dataAvailable?: boolean;
@@ -3940,6 +5062,11 @@ interface getNetworkTrendOperation {
3940
5062
  readonly path: "/v1/partner/analytics/network-trend";
3941
5063
  readonly method: "GET";
3942
5064
  request: never;
5065
+ params: Record<string, unknown>;
5066
+ query: {
5067
+ interval?: "1h" | "1d";
5068
+ timeRange?: "today" | "last_7d" | "last_30d";
5069
+ };
3943
5070
  response: {
3944
5071
  data?: {
3945
5072
  interval?: string;
@@ -3950,13 +5077,17 @@ interface getNetworkTrendOperation {
3950
5077
  };
3951
5078
  }
3952
5079
  /**
3953
- * Privacy-safe cross-screen proximity-graph summary
5080
+ * Cross-screen proximity-graph summary
3954
5081
  * GET /v1/partner/analytics/proximity-summary
3955
5082
  */
3956
5083
  interface getProximitySummaryOperation {
3957
5084
  readonly path: "/v1/partner/analytics/proximity-summary";
3958
5085
  readonly method: "GET";
3959
5086
  request: never;
5087
+ params: Record<string, unknown>;
5088
+ query: {
5089
+ timeRange?: "today" | "last_7d" | "last_30d";
5090
+ };
3960
5091
  response: {
3961
5092
  data?: {
3962
5093
  continuityEdges?: Array<Record<string, unknown>>;
@@ -3978,6 +5109,10 @@ interface getRevenueAttentionCorrelationOperation {
3978
5109
  readonly path: "/v1/partner/analytics/revenue-attention-correlation";
3979
5110
  readonly method: "GET";
3980
5111
  request: never;
5112
+ params: Record<string, unknown>;
5113
+ query: {
5114
+ timeRange?: "today" | "last_7d" | "last_30d";
5115
+ };
3981
5116
  response: {
3982
5117
  data?: {
3983
5118
  points?: Array<Record<string, unknown>>;
@@ -3994,6 +5129,11 @@ interface getSceneFeedOperation {
3994
5129
  readonly path: "/v1/partner/analytics/scene-feed";
3995
5130
  readonly method: "GET";
3996
5131
  request: never;
5132
+ params: Record<string, unknown>;
5133
+ query: {
5134
+ limit?: number;
5135
+ offset?: number;
5136
+ };
3997
5137
  response: {
3998
5138
  data?: {
3999
5139
  /** Distinct calendar days with observations over the last 90 days. */
@@ -4018,6 +5158,8 @@ interface getSceneIntelligenceOperation {
4018
5158
  readonly path: "/v1/partner/analytics/scene-intelligence";
4019
5159
  readonly method: "GET";
4020
5160
  request: never;
5161
+ params: Record<string, unknown>;
5162
+ query: Record<string, unknown>;
4021
5163
  response: {
4022
5164
  data?: {
4023
5165
  /** 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 +5182,8 @@ interface rotateApiKeyOperation {
4040
5182
  readonly path: "/v1/partner/api-key/rotate";
4041
5183
  readonly method: "POST";
4042
5184
  request: never;
5185
+ params: Record<string, unknown>;
5186
+ query: Record<string, unknown>;
4043
5187
  response: {
4044
5188
  data?: {
4045
5189
  /** New API key — shown only once! */
@@ -4060,6 +5204,10 @@ interface getAudienceAnalyticsOperation {
4060
5204
  readonly path: "/v1/partner/audience-analytics";
4061
5205
  readonly method: "GET";
4062
5206
  request: never;
5207
+ params: Record<string, unknown>;
5208
+ query: {
5209
+ period?: "24h" | "7d" | "30d";
5210
+ };
4063
5211
  response: AudienceAnalyticsResponse;
4064
5212
  }
4065
5213
  /**
@@ -4070,6 +5218,14 @@ interface exportAudienceDataOperation {
4070
5218
  readonly path: "/v1/partner/audience-export";
4071
5219
  readonly method: "GET";
4072
5220
  request: never;
5221
+ params: Record<string, unknown>;
5222
+ query: {
5223
+ aggregation?: "hourly" | "daily" | "weekly";
5224
+ end_date?: string;
5225
+ format?: "json" | "csv";
5226
+ screen_ids: string;
5227
+ start_date?: string;
5228
+ };
4073
5229
  response: AudienceExportResponse;
4074
5230
  }
4075
5231
  /**
@@ -4080,6 +5236,11 @@ interface getAudienceHeatmapOperation {
4080
5236
  readonly path: "/v1/partner/audience/heatmap";
4081
5237
  readonly method: "GET";
4082
5238
  request: never;
5239
+ params: Record<string, unknown>;
5240
+ query: {
5241
+ days?: number;
5242
+ screen_ids?: string;
5243
+ };
4083
5244
  response: {
4084
5245
  cells?: number;
4085
5246
  heatmap?: Array<Record<string, unknown>>;
@@ -4097,6 +5258,10 @@ interface getLiveAudienceOperation {
4097
5258
  readonly path: "/v1/partner/audience/live/{screenId}";
4098
5259
  readonly method: "GET";
4099
5260
  request: never;
5261
+ params: {
5262
+ screenId: string;
5263
+ };
5264
+ query: Record<string, unknown>;
4100
5265
  response: {
4101
5266
  /** Null when screen is offline */
4102
5267
  audience?: {
@@ -4131,6 +5296,15 @@ interface getLookalikeScreensOperation {
4131
5296
  readonly path: "/v1/partner/audience/lookalikes/{screenId}";
4132
5297
  readonly method: "GET";
4133
5298
  request: never;
5299
+ params: {
5300
+ screenId: string;
5301
+ };
5302
+ query: {
5303
+ country?: string;
5304
+ limit?: number;
5305
+ min_similarity?: number;
5306
+ venue_type?: string;
5307
+ };
4134
5308
  response: {
4135
5309
  filters?: {
4136
5310
  country?: string | null;
@@ -4152,6 +5326,14 @@ interface predictScreenAudienceOperation {
4152
5326
  readonly path: "/v1/partner/audience/predict/{screenId}";
4153
5327
  readonly method: "GET";
4154
5328
  request: never;
5329
+ params: {
5330
+ screenId: string;
5331
+ };
5332
+ query: {
5333
+ day: number;
5334
+ hour: number;
5335
+ lookback_days?: number;
5336
+ };
4155
5337
  response: {
4156
5338
  day_of_week?: number;
4157
5339
  hour_utc?: number;
@@ -4173,6 +5355,10 @@ interface getResolvedHouseholdReachOperation {
4173
5355
  readonly path: "/v1/partner/audience/resolved-household-reach/{campaignId}";
4174
5356
  readonly method: "GET";
4175
5357
  request: never;
5358
+ params: {
5359
+ campaignId: string;
5360
+ };
5361
+ query: Record<string, unknown>;
4176
5362
  response: {
4177
5363
  audience_composition?: Array<Record<string, unknown>>;
4178
5364
  campaign_id?: string;
@@ -4192,6 +5378,8 @@ interface listAudienceSegmentsOperation {
4192
5378
  readonly path: "/v1/partner/audience/segments";
4193
5379
  readonly method: "GET";
4194
5380
  request: never;
5381
+ params: Record<string, unknown>;
5382
+ query: Record<string, unknown>;
4195
5383
  response: {
4196
5384
  data?: Array<AudienceSegment>;
4197
5385
  has_more?: boolean;
@@ -4220,6 +5408,8 @@ interface createAudienceSegmentOperation {
4220
5408
  value: unknown;
4221
5409
  }>;
4222
5410
  };
5411
+ params: Record<string, unknown>;
5412
+ query: Record<string, unknown>;
4223
5413
  response: AudienceSegment;
4224
5414
  }
4225
5415
  /**
@@ -4230,6 +5420,10 @@ interface deleteAudienceSegmentOperation {
4230
5420
  readonly path: "/v1/partner/audience/segments/{segmentId}";
4231
5421
  readonly method: "DELETE";
4232
5422
  request: never;
5423
+ params: {
5424
+ segmentId: string;
5425
+ };
5426
+ query: Record<string, unknown>;
4233
5427
  response: {
4234
5428
  deleted?: boolean;
4235
5429
  id?: string;
@@ -4245,6 +5439,10 @@ interface getAudienceSegmentOperation {
4245
5439
  readonly path: "/v1/partner/audience/segments/{segmentId}";
4246
5440
  readonly method: "GET";
4247
5441
  request: never;
5442
+ params: {
5443
+ segmentId: string;
5444
+ };
5445
+ query: Record<string, unknown>;
4248
5446
  response: AudienceSegment;
4249
5447
  }
4250
5448
  /**
@@ -4264,6 +5462,10 @@ interface updateAudienceSegmentOperation {
4264
5462
  value?: unknown;
4265
5463
  }>;
4266
5464
  };
5465
+ params: {
5466
+ segmentId: string;
5467
+ };
5468
+ query: Record<string, unknown>;
4267
5469
  response: AudienceSegment;
4268
5470
  }
4269
5471
  /**
@@ -4274,6 +5476,13 @@ interface matchAudienceSegmentOperation {
4274
5476
  readonly path: "/v1/partner/audience/segments/{segmentId}/match";
4275
5477
  readonly method: "POST";
4276
5478
  request: never;
5479
+ params: {
5480
+ segmentId: string;
5481
+ };
5482
+ query: {
5483
+ limit?: number;
5484
+ own_screens_only?: "true" | "false";
5485
+ };
4277
5486
  response: {
4278
5487
  matched_count?: number;
4279
5488
  matches?: Array<Record<string, unknown>>;
@@ -4292,6 +5501,12 @@ interface estimateSegmentReachOperation {
4292
5501
  readonly path: "/v1/partner/audience/segments/{segmentId}/reach";
4293
5502
  readonly method: "POST";
4294
5503
  request: never;
5504
+ params: {
5505
+ segmentId: string;
5506
+ };
5507
+ query: {
5508
+ own_screens_only?: "true" | "false";
5509
+ };
4295
5510
  response: {
4296
5511
  country_breakdown?: Record<string, number>;
4297
5512
  estimated_daily_cpm?: number;
@@ -4322,6 +5537,10 @@ interface generateSegmentVastTagOperation {
4322
5537
  duration?: number;
4323
5538
  own_screens_only?: boolean;
4324
5539
  };
5540
+ params: {
5541
+ segmentId: string;
5542
+ };
5543
+ query: Record<string, unknown>;
4325
5544
  response: {
4326
5545
  creative?: {
4327
5546
  click_through?: string | null;
@@ -4345,6 +5564,8 @@ interface getAudienceStatsOperation {
4345
5564
  readonly path: "/v1/partner/audience/stats";
4346
5565
  readonly method: "GET";
4347
5566
  request: never;
5567
+ params: Record<string, unknown>;
5568
+ query: Record<string, unknown>;
4348
5569
  response: {
4349
5570
  data_access_tier?: "basic" | "developer" | "enterprise";
4350
5571
  newest_data?: string | null;
@@ -4364,6 +5585,8 @@ interface cancelBillingSubscriptionOperation {
4364
5585
  readonly path: "/v1/partner/billing/cancel";
4365
5586
  readonly method: "POST";
4366
5587
  request: never;
5588
+ params: Record<string, unknown>;
5589
+ query: Record<string, unknown>;
4367
5590
  response: {
4368
5591
  effective_at?: string;
4369
5592
  status?: "canceled" | "scheduled_for_cancellation";
@@ -4380,17 +5603,27 @@ interface purchaseCreditsOperation {
4380
5603
  /** Credit purchase tier */
4381
5604
  tier: "tier_500" | "tier_2000" | "tier_5000";
4382
5605
  };
5606
+ params: Record<string, unknown>;
5607
+ query: Record<string, unknown>;
4383
5608
  response: {
4384
5609
  /** Amount charged in cents */
4385
5610
  charged_cents?: number;
4386
- /** Credits added to balance in cents */
4387
- credits_added_cents?: number;
4388
- /** Discount percentage applied */
5611
+ /** Present when Stripe confirmation requires action; handle as a secret */
5612
+ client_secret?: string;
5613
+ /** Verified credit added in exact decimal cents; zero until capture settles */
5614
+ credits_added_cents?: string;
5615
+ /** Legacy field name: additional credit as a percentage of the charged amount */
4389
5616
  discount_pct?: number;
4390
5617
  object?: string;
5618
+ /** Durable purchase operation identifier */
5619
+ operation_id?: string;
4391
5620
  /** Stripe PaymentIntent ID */
4392
5621
  payment_intent_id?: string;
4393
5622
  request_id?: string;
5623
+ /** Complete Stripe confirmation before credit can settle */
5624
+ requires_action?: boolean;
5625
+ /** Native Stripe PaymentIntent status */
5626
+ status?: string;
4394
5627
  };
4395
5628
  }
4396
5629
  /**
@@ -4407,11 +5640,15 @@ interface createCreditCheckoutOperation {
4407
5640
  success_url?: string;
4408
5641
  tier: "tier_500" | "tier_2000" | "tier_5000";
4409
5642
  };
5643
+ params: Record<string, unknown>;
5644
+ query: Record<string, unknown>;
4410
5645
  response: {
4411
5646
  /** Stripe Checkout URL — redirect user here */
4412
5647
  checkout_url?: string;
4413
5648
  message?: string;
4414
5649
  object?: string;
5650
+ /** Durable credit-purchase operation identifier */
5651
+ operation_id?: string;
4415
5652
  request_id?: string;
4416
5653
  /** Stripe Checkout session ID */
4417
5654
  session_id?: string;
@@ -4425,6 +5662,8 @@ interface listBillingPlansOperation {
4425
5662
  readonly path: "/v1/partner/billing/plans";
4426
5663
  readonly method: "GET";
4427
5664
  request: never;
5665
+ params: Record<string, unknown>;
5666
+ query: Record<string, unknown>;
4428
5667
  response: {
4429
5668
  plans?: Array<{
4430
5669
  included_ads?: number;
@@ -4446,6 +5685,8 @@ interface setupBillingOperation {
4446
5685
  /** Stripe payment method token obtained from Stripe.js or Stripe Elements */
4447
5686
  payment_method_id: string;
4448
5687
  };
5688
+ params: Record<string, unknown>;
5689
+ query: Record<string, unknown>;
4449
5690
  response: {
4450
5691
  billing_status?: string;
4451
5692
  message?: string;
@@ -4464,6 +5705,8 @@ interface createBillingSubscriptionOperation {
4464
5705
  request: {
4465
5706
  tier: "developer" | "enterprise";
4466
5707
  };
5708
+ params: Record<string, unknown>;
5709
+ query: Record<string, unknown>;
4467
5710
  response: {
4468
5711
  checkout_url?: string | null;
4469
5712
  status?: "active" | "requires_payment";
@@ -4477,6 +5720,8 @@ interface getBillingSubscriptionOperation {
4477
5720
  readonly path: "/v1/partner/billing/subscription";
4478
5721
  readonly method: "GET";
4479
5722
  request: never;
5723
+ params: Record<string, unknown>;
5724
+ query: Record<string, unknown>;
4480
5725
  response: {
4481
5726
  current_period_end?: string;
4482
5727
  status?: "active" | "past_due" | "canceled" | "trialing";
@@ -4492,6 +5737,8 @@ interface getBillingUsageOperation {
4492
5737
  readonly path: "/v1/partner/billing/usage";
4493
5738
  readonly method: "GET";
4494
5739
  request: never;
5740
+ params: Record<string, unknown>;
5741
+ query: Record<string, unknown>;
4495
5742
  response: {
4496
5743
  ads_served?: number;
4497
5744
  audience_api_calls?: number;
@@ -4509,28 +5756,37 @@ interface getBillingUsageSummaryOperation {
4509
5756
  readonly path: "/v1/partner/billing/usage-summary";
4510
5757
  readonly method: "GET";
4511
5758
  request: never;
4512
- response: {
4513
- /** Current billing status */
4514
- billing_status?: "none" | "active" | "suspended";
4515
- /** Remaining prepaid credit balance in cents */
4516
- credit_balance_cents?: number;
4517
- object?: string;
4518
- /** End of current billing period */
4519
- period_end?: string;
4520
- /** Start of current billing period */
4521
- period_start?: string;
4522
- /** Per-product usage breakdown */
4523
- products?: Record<string, {
4524
- meters?: Record<string, {
4525
- billable?: number;
4526
- cost_cents?: number;
4527
- free_quota?: number;
4528
- usage?: number;
5759
+ params: Record<string, unknown>;
5760
+ query: Record<string, unknown>;
5761
+ response: {
5762
+ billing_status: "free" | "none" | "active" | "suspended";
5763
+ /** Committed credit balance in cents, with eight decimal places */
5764
+ credit_balance_cents: string;
5765
+ /** Credit held by in-flight reservations, in cents with eight decimal places */
5766
+ credit_reserved_cents: string;
5767
+ object: string;
5768
+ /** Partner billing account identifier */
5769
+ partner_mongo_id: string;
5770
+ /** Exclusive end of the current UTC calendar month */
5771
+ period_end: string;
5772
+ period_start: string;
5773
+ products: Record<string, {
5774
+ meters: Record<string, {
5775
+ cost_cents: string;
5776
+ free_quantity: string;
5777
+ legacy_unknown_cents: string;
5778
+ paid_quantity: string;
5779
+ postpaid_cents: string;
5780
+ prepaid_cents: string;
5781
+ /** Total quantity in the published meter unit */
5782
+ total_quantity: string;
4529
5783
  }>;
5784
+ /** Product cost in cents with eight decimal places */
5785
+ total_cost_cents: string;
4530
5786
  }>;
4531
- request_id?: string;
4532
- /** Total cost in cents for current period */
4533
- total_cost_cents?: number;
5787
+ request_id: string;
5788
+ /** Period cost in cents with eight decimal places */
5789
+ total_cost_cents: string;
4534
5790
  };
4535
5791
  }
4536
5792
  /**
@@ -4541,6 +5797,8 @@ interface stripeWebhookCallbackOperation {
4541
5797
  readonly path: "/v1/partner/billing/webhook";
4542
5798
  readonly method: "POST";
4543
5799
  request: Record<string, unknown>;
5800
+ params: Record<string, unknown>;
5801
+ query: Record<string, unknown>;
4544
5802
  response: unknown;
4545
5803
  }
4546
5804
  /**
@@ -4551,6 +5809,10 @@ interface getConnectDashboardOperation {
4551
5809
  readonly path: "/v1/partner/connect/dashboard";
4552
5810
  readonly method: "GET";
4553
5811
  request: never;
5812
+ params: Record<string, unknown>;
5813
+ query: {
5814
+ period?: "7d" | "30d" | "90d";
5815
+ };
4554
5816
  response: {
4555
5817
  data?: {
4556
5818
  charts?: {
@@ -4618,6 +5880,11 @@ interface getConnectEarningsChartOperation {
4618
5880
  readonly path: "/v1/partner/connect/earnings";
4619
5881
  readonly method: "GET";
4620
5882
  request: never;
5883
+ params: Record<string, unknown>;
5884
+ query: {
5885
+ group_by?: "day" | "week";
5886
+ period?: "7d" | "30d" | "90d";
5887
+ };
4621
5888
  response: {
4622
5889
  data?: {
4623
5890
  chart?: Array<{
@@ -4651,6 +5918,10 @@ interface getConnectScreenHealthOperation {
4651
5918
  readonly path: "/v1/partner/connect/health";
4652
5919
  readonly method: "GET";
4653
5920
  request: never;
5921
+ params: Record<string, unknown>;
5922
+ query: {
5923
+ status?: "online" | "offline" | "all";
5924
+ };
4654
5925
  response: {
4655
5926
  data?: {
4656
5927
  checked_at?: string;
@@ -4694,6 +5965,8 @@ interface listContentPresetsOperation {
4694
5965
  readonly path: "/v1/partner/content-presets";
4695
5966
  readonly method: "GET";
4696
5967
  request: never;
5968
+ params: Record<string, unknown>;
5969
+ query: Record<string, unknown>;
4697
5970
  response: {
4698
5971
  data?: Array<ContentPreset>;
4699
5972
  has_more?: boolean;
@@ -4710,8 +5983,170 @@ interface getContentPresetOperation {
4710
5983
  readonly path: "/v1/partner/content-presets/{presetId}";
4711
5984
  readonly method: "GET";
4712
5985
  request: never;
5986
+ params: {
5987
+ presetId: string;
5988
+ };
5989
+ query: Record<string, unknown>;
4713
5990
  response: ContentPreset;
4714
5991
  }
5992
+ /**
5993
+ * Create an experiment on a funded native media-buy placement
5994
+ * POST /v1/partner/creative-experiments
5995
+ */
5996
+ interface createCreativeFeedbackExperimentOperation {
5997
+ readonly path: "/v1/partner/creative-experiments";
5998
+ readonly method: "POST";
5999
+ request: FeedbackCreateRequest;
6000
+ params: Record<string, unknown>;
6001
+ query: Record<string, unknown>;
6002
+ response: FeedbackExperimentResponse;
6003
+ }
6004
+ /**
6005
+ * Read your native experiment, policy and latest 500 owned creative recovery records
6006
+ * GET /v1/partner/creative-experiments/{experiment_id}
6007
+ */
6008
+ interface getCreativeFeedbackExperimentOperation {
6009
+ readonly path: "/v1/partner/creative-experiments/{experiment_id}";
6010
+ readonly method: "GET";
6011
+ request: never;
6012
+ params: {
6013
+ /** Native experiment ID returned by create_creative_experiment. */
6014
+ experiment_id: string;
6015
+ };
6016
+ query: Record<string, unknown>;
6017
+ response: FeedbackExperimentDetailResponse;
6018
+ }
6019
+ /**
6020
+ * Configure your native brand profile and enable its booked reactive campaign
6021
+ * POST /v1/partner/creative-experiments/{experiment_id}/brand
6022
+ */
6023
+ interface configureCreativeFeedbackBrandOperation {
6024
+ readonly path: "/v1/partner/creative-experiments/{experiment_id}/brand";
6025
+ readonly method: "POST";
6026
+ request: FeedbackBrandRequest;
6027
+ params: {
6028
+ /** Native experiment ID returned by create_creative_experiment. */
6029
+ experiment_id: string;
6030
+ };
6031
+ query: Record<string, unknown>;
6032
+ response: FeedbackBrandResponse;
6033
+ }
6034
+ /**
6035
+ * Generate a native brand creative for explicit review and moderation
6036
+ * POST /v1/partner/creative-experiments/{experiment_id}/creatives/generate
6037
+ */
6038
+ interface generateCreativeFeedbackCreativeOperation {
6039
+ readonly path: "/v1/partner/creative-experiments/{experiment_id}/creatives/generate";
6040
+ readonly method: "POST";
6041
+ request: FeedbackGenerateRequest;
6042
+ params: {
6043
+ /** Native experiment ID returned by create_creative_experiment. */
6044
+ experiment_id: string;
6045
+ };
6046
+ query: Record<string, unknown>;
6047
+ response: FeedbackGenerateResponse;
6048
+ }
6049
+ /**
6050
+ * Import an AI model’s image through native bytes, moderation and brand review
6051
+ * POST /v1/partner/creative-experiments/{experiment_id}/creatives/import
6052
+ */
6053
+ interface importCreativeFeedbackCreativeOperation {
6054
+ readonly path: "/v1/partner/creative-experiments/{experiment_id}/creatives/import";
6055
+ readonly method: "POST";
6056
+ request: FeedbackImportRequest;
6057
+ params: {
6058
+ /** Native experiment ID returned by create_creative_experiment. */
6059
+ experiment_id: string;
6060
+ };
6061
+ query: Record<string, unknown>;
6062
+ response: FeedbackGenerateResponse;
6063
+ }
6064
+ /**
6065
+ * Approve or reject your generated creative using native brand review
6066
+ * POST /v1/partner/creative-experiments/{experiment_id}/creatives/review
6067
+ */
6068
+ interface reviewCreativeFeedbackCreativeOperation {
6069
+ readonly path: "/v1/partner/creative-experiments/{experiment_id}/creatives/review";
6070
+ readonly method: "POST";
6071
+ request: FeedbackReviewRequest;
6072
+ params: {
6073
+ /** Native experiment ID returned by create_creative_experiment. */
6074
+ experiment_id: string;
6075
+ };
6076
+ query: Record<string, unknown>;
6077
+ response: FeedbackReviewResponse;
6078
+ }
6079
+ /**
6080
+ * Replace native creative weights at the expected policy version
6081
+ * PUT /v1/partner/creative-experiments/{experiment_id}/policy
6082
+ */
6083
+ interface updateCreativeFeedbackPolicyOperation {
6084
+ readonly path: "/v1/partner/creative-experiments/{experiment_id}/policy";
6085
+ readonly method: "PUT";
6086
+ request: FeedbackPolicyRequest;
6087
+ params: {
6088
+ /** Native experiment ID returned by create_creative_experiment. */
6089
+ experiment_id: string;
6090
+ };
6091
+ query: Record<string, unknown>;
6092
+ response: FeedbackExperimentResponse;
6093
+ }
6094
+ /**
6095
+ * Read a metered page of latest measured native play states
6096
+ * GET /v1/partner/creative-experiments/{experiment_id}/rewards
6097
+ */
6098
+ interface getCreativeFeedbackRewardsOperation {
6099
+ readonly path: "/v1/partner/creative-experiments/{experiment_id}/rewards";
6100
+ readonly method: "GET";
6101
+ request: never;
6102
+ params: {
6103
+ /** Native experiment ID returned by create_creative_experiment. */
6104
+ experiment_id: string;
6105
+ };
6106
+ query: {
6107
+ /** Opaque next_cursor from this same date scope; rewind after scan_complete. */
6108
+ cursor?: string;
6109
+ /** Inclusive first play date, YYYY-MM-DD; date range is at most 31 days. */
6110
+ from: string;
6111
+ /** Unique caller-owned billing key for this page; committed retries return the receipt, not another read. */
6112
+ idempotency_key: string;
6113
+ /** Maximum native play states returned on this metered page. */
6114
+ limit?: number;
6115
+ /** Inclusive last play date, YYYY-MM-DD; date range is at most 31 days. */
6116
+ to: string;
6117
+ };
6118
+ response: FeedbackRewardsResponse;
6119
+ }
6120
+ /**
6121
+ * Stop the native experiment at the expected policy version
6122
+ * POST /v1/partner/creative-experiments/{experiment_id}/stop
6123
+ */
6124
+ interface stopCreativeFeedbackExperimentOperation {
6125
+ readonly path: "/v1/partner/creative-experiments/{experiment_id}/stop";
6126
+ readonly method: "POST";
6127
+ request: FeedbackStopRequest;
6128
+ params: {
6129
+ /** Native experiment ID returned by create_creative_experiment. */
6130
+ experiment_id: string;
6131
+ };
6132
+ query: Record<string, unknown>;
6133
+ response: FeedbackExperimentResponse;
6134
+ }
6135
+ /**
6136
+ * Register approved native generated creative variants
6137
+ * POST /v1/partner/creative-experiments/{experiment_id}/variants
6138
+ */
6139
+ interface registerCreativeFeedbackVariantsOperation {
6140
+ readonly path: "/v1/partner/creative-experiments/{experiment_id}/variants";
6141
+ readonly method: "POST";
6142
+ request: FeedbackRegisterVariantsRequest;
6143
+ params: {
6144
+ /** Native experiment ID returned by create_creative_experiment. */
6145
+ experiment_id: string;
6146
+ };
6147
+ query: Record<string, unknown>;
6148
+ response: FeedbackExperimentResponse;
6149
+ }
4715
6150
  /**
4716
6151
  * Submit a creative for classification
4717
6152
  * POST /v1/partner/creatives
@@ -4725,6 +6160,8 @@ interface submitPartnerCreativeOperation {
4725
6160
  /** Public http(s) URL of the creative image or video. Must resolve to a public address — private/internal/cloud-metadata addresses are rejected. */
4726
6161
  media_url: string;
4727
6162
  };
6163
+ params: Record<string, unknown>;
6164
+ query: Record<string, unknown>;
4728
6165
  response: CreativeClassification;
4729
6166
  }
4730
6167
  /**
@@ -4735,6 +6172,10 @@ interface getPartnerCreativeOperation {
4735
6172
  readonly path: "/v1/partner/creatives/{ref}";
4736
6173
  readonly method: "GET";
4737
6174
  request: never;
6175
+ params: {
6176
+ ref: string;
6177
+ };
6178
+ query: Record<string, unknown>;
4738
6179
  response: CreativeClassification;
4739
6180
  }
4740
6181
  /**
@@ -4745,6 +6186,8 @@ interface getDashboardOperation {
4745
6186
  readonly path: "/v1/partner/dashboard";
4746
6187
  readonly method: "GET";
4747
6188
  request: never;
6189
+ params: Record<string, unknown>;
6190
+ query: Record<string, unknown>;
4748
6191
  response: {
4749
6192
  data?: DashboardResponse;
4750
6193
  success?: boolean;
@@ -4758,7 +6201,37 @@ interface exportProximityGraphEdgesOperation {
4758
6201
  readonly path: "/v1/partner/data-export/proximity-graph-edges";
4759
6202
  readonly method: "GET";
4760
6203
  request: never;
4761
- response: unknown;
6204
+ params: Record<string, unknown>;
6205
+ query: {
6206
+ cursor?: string;
6207
+ days?: number;
6208
+ limit?: number;
6209
+ };
6210
+ response: {
6211
+ data?: {
6212
+ limit: number;
6213
+ lookback_days: number;
6214
+ /** The `cursor` of the next page, or `null` on the last page. */
6215
+ next_cursor: string | null;
6216
+ rows: Array<{
6217
+ destination_screen_id: string;
6218
+ /** Distinct transitions from the source screen to the destination screen. */
6219
+ edge_count: number;
6220
+ /** Median minutes between the source and destination sightings. */
6221
+ lag_p50: number;
6222
+ source_screen_id: string;
6223
+ /** Distinct devices behind those transitions. */
6224
+ unique_devices: number;
6225
+ }>;
6226
+ /** Number of edges in this page. */
6227
+ total: number;
6228
+ /** `true` when more edges follow this page: pass `next_cursor` back as `cursor`. */
6229
+ truncated: boolean;
6230
+ /** The UTC second the window ends at (`YYYY-MM-DD HH:MM:SS`), pinned by the first page. */
6231
+ window_end: string;
6232
+ };
6233
+ success?: boolean;
6234
+ };
4762
6235
  }
4763
6236
  /**
4764
6237
  * List available datasets and per-dataset record counts
@@ -4768,6 +6241,10 @@ interface getDataExportSummaryOperation {
4768
6241
  readonly path: "/v1/partner/data-export/summary";
4769
6242
  readonly method: "GET";
4770
6243
  request: never;
6244
+ params: Record<string, unknown>;
6245
+ query: {
6246
+ days?: number;
6247
+ };
4771
6248
  response: DataExportSummaryResponse;
4772
6249
  }
4773
6250
  /**
@@ -4778,9 +6255,16 @@ interface exportDatasetOperation {
4778
6255
  readonly path: "/v1/partner/data-export/{dataset}";
4779
6256
  readonly method: "GET";
4780
6257
  request: never;
6258
+ params: {
6259
+ dataset: "audience_metrics" | "signal_audience" | "attention_ledger" | "impression_ledger" | "waterfall_events" | "intent_signals" | "audience_loyalty_features" | "screen_metadata";
6260
+ };
6261
+ query: {
6262
+ days?: number;
6263
+ limit?: number;
6264
+ offset?: number;
6265
+ };
4781
6266
  response: {
4782
6267
  data?: {
4783
- k_anonymity_threshold?: number;
4784
6268
  lookback_days?: number;
4785
6269
  /** 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
6270
  rows?: Array<AudienceLoyaltyFeaturesRow | Record<string, unknown>>;
@@ -4798,47 +6282,51 @@ interface getGeohashAudiencePanelOperation {
4798
6282
  readonly path: "/v1/partner/data/geohash-audience-panel";
4799
6283
  readonly method: "GET";
4800
6284
  request: never;
6285
+ params: Record<string, unknown>;
6286
+ query: {
6287
+ date?: string;
6288
+ geohash_prefix?: string;
6289
+ limit?: number;
6290
+ offset?: number;
6291
+ venue_category?: string;
6292
+ };
4801
6293
  response: {
4802
6294
  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
6295
  /** Day exported (UTC). */
4806
6296
  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). */
6297
+ /** Rows per page this response was read with. */
6298
+ limit: number;
6299
+ /** The `offset` of the next page, or `null` on the last page. */
6300
+ next_offset: number | null;
6301
+ /** Rows skipped before this page. */
6302
+ offset: number;
6303
+ /** Integer partner_id (`partners.partner_id`). */
6304
+ partner_id: number;
6305
+ /** Per-row aggregates, every cell with its counts. */
4820
6306
  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;
6307
+ /** Average attention score. `null`: not measured in this panel, which is built from radio pings; camera-measured attention is in the camera datasets. */
6308
+ avg_attention: number | null;
6309
+ /** Average dwell seconds. `null`: not measured in this panel, which is built from radio pings; camera-measured dwell is in the camera datasets. */
6310
+ avg_dwell_seconds: number | null;
6311
+ /** 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. */
6312
+ avg_face_count: number | null;
4827
6313
  /** 6-character geohash bucket. */
4828
6314
  geohash6: string;
4829
6315
  /** Hour bucket as the integer hour (0..23) cast to string. */
4830
6316
  hour: string;
4831
6317
  /** Income tier bucket (e.g. `low`, `mid`, `high`). */
4832
6318
  income_tier: string;
4833
- /** Noised observation count (Laplace, sensitivity 1). */
6319
+ /** Observation count. */
4834
6320
  observation_count: number;
4835
6321
  /** Distinct screen count contributing to this bucket. */
4836
6322
  screen_count: number;
4837
- /** Noised unique-device count (Laplace, sensitivity 1). */
6323
+ /** Unique-device count. */
4838
6324
  unique_devices: number;
4839
6325
  /** Venue category from `screens_live.venue_category`. */
4840
6326
  venue_category: string;
4841
6327
  }>;
6328
+ /** `true` when more cells follow this page: request `next_offset`. */
6329
+ truncated: boolean;
4842
6330
  };
4843
6331
  success?: boolean;
4844
6332
  };
@@ -4851,40 +6339,47 @@ interface getOutcomeAttributionOperation {
4851
6339
  readonly path: "/v1/partner/data/outcome-attribution";
4852
6340
  readonly method: "GET";
4853
6341
  request: never;
6342
+ params: Record<string, unknown>;
6343
+ query: {
6344
+ creative_id?: string;
6345
+ cursor?: string;
6346
+ days?: number;
6347
+ grain?: "person" | "device";
6348
+ limit?: number;
6349
+ };
4854
6350
  response: {
4855
6351
  data?: {
4856
- /** DP epsilon charged to the partner's daily budget for this call (0 if refunded). */
4857
- epsilon_used: number;
4858
6352
  /** The reach grain applied (echoes the `grain` query param; defaults to `person`). */
4859
6353
  grain: "person" | "device";
4860
- /** The per-partner k-anon floor applied at SQL HAVING. */
4861
- k_anonymity_threshold: number;
6354
+ /** Rows per page this response was read with. */
6355
+ limit: number;
4862
6356
  /** The validated lookback window used. */
4863
6357
  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). */
6358
+ /** The `cursor` of the next page, or `null` on the last page. */
6359
+ next_cursor: string | null;
6360
+ /** Per-(creative, screen) outcome aggregates, every cell with its counts. */
4870
6361
  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. */
6362
+ /** 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
6363
  avg_frequency: number;
4873
6364
  /** Creative identifier from `completed_impressions.creative_id`. */
4874
6365
  creative_id: string;
4875
- /** Noised count of exposed identities also seen on another screen. */
6366
+ /** Count of exposed identities also seen on another screen. */
4876
6367
  cross_screen_devices: number;
4877
- /** Noised count of distinct devices exposed to the creative on the screen. */
6368
+ /** Count of distinct devices exposed to the creative on the screen. */
4878
6369
  exposed_devices: number;
4879
- /** returned_devices / exposed_devices, recomputed from the noised counts. */
6370
+ /** returned_devices / exposed_devices. */
4880
6371
  return_rate: number;
4881
- /** Noised count of exposed devices that returned (clamped ≤ exposed_devices). */
6372
+ /** Count of exposed devices that returned (≤ exposed_devices). */
4882
6373
  returned_devices: number;
4883
6374
  /** The partner's own screen identifier. */
4884
6375
  screen_mongo_id: string;
4885
6376
  }>;
4886
- /** Number of rows returned. */
6377
+ /** Number of rows in this page. */
4887
6378
  total: number;
6379
+ /** `true` when more cells follow this page: pass `next_cursor` back as `cursor`. */
6380
+ truncated: boolean;
6381
+ /** The UTC date the window ends on, pinned by the first page; the window is `window_end - lookback_days` through `window_end`. */
6382
+ window_end: string;
4888
6383
  };
4889
6384
  success?: boolean;
4890
6385
  };
@@ -4903,7 +6398,8 @@ interface registerDeviceOperation {
4903
6398
  description?: string;
4904
6399
  /** Your internal device identifier */
4905
6400
  device_id: string;
4906
- device_type?: "vending_machine" | "kiosk" | "tablet" | "display" | "other";
6401
+ /** Mutable partner category; defaults to other only on a new registration. Omit it to preserve an existing device's category. */
6402
+ device_type?: "tv" | "tablet" | "display" | "kiosk" | "other" | "mobile" | "connected_tv" | "digital_signage" | "vending_machine";
4907
6403
  /** 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
6404
  display?: {
4909
6405
  /** Display resolution height in pixels (e.g. 1080) */
@@ -4969,10 +6465,14 @@ interface registerDeviceOperation {
4969
6465
  subcategory?: string;
4970
6466
  };
4971
6467
  };
6468
+ params: Record<string, unknown>;
6469
+ query: Record<string, unknown>;
4972
6470
  response: {
4973
6471
  data?: {
4974
6472
  /** Our internal device ID */
4975
6473
  device_id?: string;
6474
+ /** Saved partner category, independent of advertising classification. */
6475
+ device_type?: "tv" | "tablet" | "display" | "kiosk" | "other" | "mobile" | "connected_tv" | "digital_signage" | "vending_machine";
4976
6476
  /** Load this URL in your WebView */
4977
6477
  embed_url?: string;
4978
6478
  /** Enrichment completion state */
@@ -4981,7 +6481,8 @@ interface registerDeviceOperation {
4981
6481
  external_device_id?: string;
4982
6482
  /** Device fingerprint for SDK */
4983
6483
  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. */
6484
+ location_capability?: PartnerLocationCapability;
6485
+ /** 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
6486
  monetization_status?: "ready" | "limited" | "blocked";
4986
6487
  requirements?: PartnerMonetizationRequirements;
4987
6488
  /** Linked screen ID */
@@ -5000,6 +6501,10 @@ interface deleteDeviceOperation {
5000
6501
  readonly path: "/v1/partner/device/{deviceId}";
5001
6502
  readonly method: "DELETE";
5002
6503
  request: never;
6504
+ params: {
6505
+ deviceId: string;
6506
+ };
6507
+ query: Record<string, unknown>;
5003
6508
  response: {
5004
6509
  message?: string;
5005
6510
  success?: boolean;
@@ -5013,6 +6518,10 @@ interface getDeviceOperation {
5013
6518
  readonly path: "/v1/partner/device/{deviceId}";
5014
6519
  readonly method: "GET";
5015
6520
  request: never;
6521
+ params: {
6522
+ deviceId: string;
6523
+ };
6524
+ query: Record<string, unknown>;
5016
6525
  response: {
5017
6526
  data?: Device;
5018
6527
  success?: boolean;
@@ -5030,6 +6539,8 @@ interface updateDeviceOperation {
5030
6539
  custom_metadata?: Record<string, unknown>;
5031
6540
  /** Screen or venue description */
5032
6541
  description?: string;
6542
+ /** Mutable partner category. Omit it to preserve the current value; changing it does not alter advertising classification. */
6543
+ device_type?: "tv" | "tablet" | "display" | "kiosk" | "other" | "mobile" | "connected_tv" | "digital_signage" | "vending_machine";
5033
6544
  /** 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
6545
  display?: {
5035
6546
  /** Display resolution height in pixels */
@@ -5092,6 +6603,10 @@ interface updateDeviceOperation {
5092
6603
  subcategory?: string;
5093
6604
  };
5094
6605
  };
6606
+ params: {
6607
+ deviceId: string;
6608
+ };
6609
+ query: Record<string, unknown>;
5095
6610
  response: {
5096
6611
  data?: Device;
5097
6612
  message?: string;
@@ -5106,6 +6621,20 @@ interface getAdsForDeviceOperation {
5106
6621
  readonly path: "/v1/partner/device/{deviceId}/ads";
5107
6622
  readonly method: "GET";
5108
6623
  request: never;
6624
+ params: {
6625
+ deviceId: string;
6626
+ };
6627
+ query: {
6628
+ autoplay?: boolean;
6629
+ ipd?: string;
6630
+ lang?: string;
6631
+ muted?: boolean;
6632
+ orientation?: "portrait" | "landscape";
6633
+ slot_h?: number;
6634
+ slot_w?: number;
6635
+ test?: "1" | "true";
6636
+ ua?: string;
6637
+ };
5109
6638
  response: {
5110
6639
  data?: {
5111
6640
  ads?: Array<Ad>;
@@ -5159,6 +6688,11 @@ interface ackDeviceCommandOperation {
5159
6688
  /** Acknowledgment status */
5160
6689
  status?: string;
5161
6690
  };
6691
+ params: {
6692
+ commandId: string;
6693
+ deviceId: string;
6694
+ };
6695
+ query: Record<string, unknown>;
5162
6696
  response: {
5163
6697
  message?: string;
5164
6698
  success?: boolean;
@@ -5172,6 +6706,10 @@ interface getDeviceHeartbeatOperation {
5172
6706
  readonly path: "/v1/partner/device/{deviceId}/heartbeat";
5173
6707
  readonly method: "GET";
5174
6708
  request: never;
6709
+ params: {
6710
+ deviceId: string;
6711
+ };
6712
+ query: Record<string, unknown>;
5175
6713
  response: PartnerHeartbeatQueryResponse;
5176
6714
  }
5177
6715
  /**
@@ -5182,8 +6720,58 @@ interface heartbeatOperation {
5182
6720
  readonly path: "/v1/partner/device/{deviceId}/heartbeat";
5183
6721
  readonly method: "POST";
5184
6722
  request: PartnerHeartbeatRequest | PartnerDeviceHeartbeatBody;
6723
+ params: {
6724
+ deviceId: string;
6725
+ };
6726
+ query: Record<string, unknown>;
5185
6727
  response: PartnerHeartbeatResponse;
5186
6728
  }
6729
+ /**
6730
+ * Report a rider interaction from the partner SDK (reportInteraction)
6731
+ * POST /v1/partner/device/{deviceId}/interactions
6732
+ */
6733
+ interface recordPartnerDeviceInteractionOperation {
6734
+ readonly path: "/v1/partner/device/{deviceId}/interactions";
6735
+ readonly method: "POST";
6736
+ request: PartnerInteraction;
6737
+ params: {
6738
+ deviceId: string;
6739
+ };
6740
+ query: Record<string, unknown>;
6741
+ response: {
6742
+ data: {
6743
+ interaction_id: string;
6744
+ /** The screen this device is bound to. */
6745
+ screen_id: string;
6746
+ status: "accepted" | "duplicate";
6747
+ type: "tap" | "qr_shown" | "qr_scanned" | "dwell_prompt";
6748
+ };
6749
+ success: true;
6750
+ };
6751
+ }
6752
+ /**
6753
+ * Report a play from the partner SDK (reportPlay)
6754
+ * POST /v1/partner/device/{deviceId}/plays
6755
+ */
6756
+ interface recordPartnerDevicePlayOperation {
6757
+ readonly path: "/v1/partner/device/{deviceId}/plays";
6758
+ readonly method: "POST";
6759
+ request: PartnerDevicePlay;
6760
+ params: {
6761
+ deviceId: string;
6762
+ };
6763
+ query: Record<string, unknown>;
6764
+ response: {
6765
+ data: {
6766
+ content_sha256: string;
6767
+ play_id: string;
6768
+ /** The screen this device is bound to. */
6769
+ screen_id: string;
6770
+ status: "accepted" | "duplicate";
6771
+ };
6772
+ success: true;
6773
+ };
6774
+ }
5187
6775
  /**
5188
6776
  * Record programmatic ad event (Server-side Analytics)
5189
6777
  * POST /v1/partner/device/{deviceId}/programmatic-event
@@ -5203,10 +6791,37 @@ interface recordProgrammaticEventOperation {
5203
6791
  slot_width?: number;
5204
6792
  variant_name?: string;
5205
6793
  };
6794
+ params: {
6795
+ deviceId: string;
6796
+ };
6797
+ query: Record<string, unknown>;
5206
6798
  response: {
5207
6799
  success?: boolean;
5208
6800
  };
5209
6801
  }
6802
+ /**
6803
+ * Report a taxi-meter state change from the partner SDK (setTripState)
6804
+ * POST /v1/partner/device/{deviceId}/trips
6805
+ */
6806
+ interface recordPartnerDeviceTripStateOperation {
6807
+ readonly path: "/v1/partner/device/{deviceId}/trips";
6808
+ readonly method: "POST";
6809
+ request: PartnerTripState;
6810
+ params: {
6811
+ deviceId: string;
6812
+ };
6813
+ query: Record<string, unknown>;
6814
+ response: {
6815
+ data: {
6816
+ event_seq: number;
6817
+ /** The screen this device is bound to. */
6818
+ screen_id: string;
6819
+ status: "accepted" | "duplicate";
6820
+ trip_id: string;
6821
+ };
6822
+ success: true;
6823
+ };
6824
+ }
5210
6825
  /**
5211
6826
  * List all devices
5212
6827
  * GET /v1/partner/devices
@@ -5215,6 +6830,12 @@ interface listDevicesOperation {
5215
6830
  readonly path: "/v1/partner/devices";
5216
6831
  readonly method: "GET";
5217
6832
  request: never;
6833
+ params: Record<string, unknown>;
6834
+ query: {
6835
+ limit?: number;
6836
+ offset?: number;
6837
+ status?: "pending" | "active" | "offline" | "suspended";
6838
+ };
5218
6839
  response: {
5219
6840
  data?: {
5220
6841
  devices?: Array<DeviceSummary>;
@@ -5269,6 +6890,8 @@ interface registerDeviceV2Operation {
5269
6890
  /** The device's real WebView User-Agent. Must include a Build fingerprint and be unique per device. */
5270
6891
  ua: string;
5271
6892
  };
6893
+ params: Record<string, unknown>;
6894
+ query: Record<string, unknown>;
5272
6895
  response: {
5273
6896
  data?: {
5274
6897
  device_id?: string;
@@ -5312,10 +6935,15 @@ interface registerDevicesBatchOperation {
5312
6935
  venue?: Record<string, unknown>;
5313
6936
  }>;
5314
6937
  };
6938
+ params: Record<string, unknown>;
6939
+ query: Record<string, unknown>;
5315
6940
  response: {
5316
6941
  devices?: Array<{
5317
6942
  device_id?: string;
5318
6943
  fingerprint?: string;
6944
+ location_capability?: PartnerLocationCapability;
6945
+ monetization_status?: "ready" | "limited" | "blocked";
6946
+ requirements?: PartnerMonetizationRequirements;
5319
6947
  screen_id?: string;
5320
6948
  status?: string;
5321
6949
  trillboard_id?: string;
@@ -5323,6 +6951,8 @@ interface registerDevicesBatchOperation {
5323
6951
  errors?: Array<{
5324
6952
  device_id?: string;
5325
6953
  error?: string;
6954
+ /** 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). */
6955
+ error_code?: string;
5326
6956
  status?: string;
5327
6957
  }>;
5328
6958
  success?: boolean;
@@ -5345,6 +6975,8 @@ interface batchUpdateDeviceOrientationOperation {
5345
6975
  device_ids: Array<string>;
5346
6976
  screen_orientation: "portrait" | "landscape" | "mixed" | "unknown";
5347
6977
  };
6978
+ params: Record<string, unknown>;
6979
+ query: Record<string, unknown>;
5348
6980
  response: {
5349
6981
  matched_devices?: number;
5350
6982
  missing_device_ids?: Array<string>;
@@ -5364,6 +6996,8 @@ interface reconcileDevicesOperation {
5364
6996
  /** Your device external IDs to reconcile. */
5365
6997
  external_ids: Array<string>;
5366
6998
  };
6999
+ params: Record<string, unknown>;
7000
+ query: Record<string, unknown>;
5367
7001
  response: {
5368
7002
  duplicate?: Array<Record<string, unknown>>;
5369
7003
  malformed?: Array<Record<string, unknown>>;
@@ -5391,6 +7025,8 @@ interface partnerDocsBrowserOperation {
5391
7025
  readonly path: "/v1/partner/docs";
5392
7026
  readonly method: "GET";
5393
7027
  request: never;
7028
+ params: Record<string, unknown>;
7029
+ query: Record<string, unknown>;
5394
7030
  response: unknown;
5395
7031
  }
5396
7032
  /**
@@ -5401,6 +7037,8 @@ interface getEarningsOperation {
5401
7037
  readonly path: "/v1/partner/earnings";
5402
7038
  readonly method: "GET";
5403
7039
  request: never;
7040
+ params: Record<string, unknown>;
7041
+ query: Record<string, unknown>;
5404
7042
  response: {
5405
7043
  data?: EarningsResponse;
5406
7044
  success?: boolean;
@@ -5414,6 +7052,12 @@ interface getEarningsBreakdownOperation {
5414
7052
  readonly path: "/v1/partner/earnings/breakdown";
5415
7053
  readonly method: "GET";
5416
7054
  request: never;
7055
+ params: Record<string, unknown>;
7056
+ query: {
7057
+ end_date?: string;
7058
+ group_by?: "day" | "week" | "screen";
7059
+ start_date?: string;
7060
+ };
5417
7061
  response: {
5418
7062
  data?: EarningsBreakdownResponse;
5419
7063
  success?: boolean;
@@ -5430,6 +7074,8 @@ interface requestPayoutOperation {
5430
7074
  /** Amount to payout in cents (optional, defaults to available balance) */
5431
7075
  amount_cents?: number;
5432
7076
  };
7077
+ params: Record<string, unknown>;
7078
+ query: Record<string, unknown>;
5433
7079
  response: {
5434
7080
  data?: PayoutResponse;
5435
7081
  message?: string;
@@ -5444,6 +7090,12 @@ interface getTransactionsOperation {
5444
7090
  readonly path: "/v1/partner/earnings/transactions";
5445
7091
  readonly method: "GET";
5446
7092
  request: never;
7093
+ params: Record<string, unknown>;
7094
+ query: {
7095
+ limit?: number;
7096
+ offset?: number;
7097
+ type?: "all" | "earning" | "payout";
7098
+ };
5447
7099
  response: {
5448
7100
  data?: {
5449
7101
  pagination?: Pagination;
@@ -5460,6 +7112,8 @@ interface getActiveSSEConnectionsOperation {
5460
7112
  readonly path: "/v1/partner/events/connections";
5461
7113
  readonly method: "GET";
5462
7114
  request: never;
7115
+ params: Record<string, unknown>;
7116
+ query: Record<string, unknown>;
5463
7117
  response: {
5464
7118
  connections?: Array<{
5465
7119
  connected_at?: string;
@@ -5480,6 +7134,10 @@ interface subscribeToEventsOperation {
5480
7134
  readonly path: "/v1/partner/events/stream";
5481
7135
  readonly method: "GET";
5482
7136
  request: never;
7137
+ params: Record<string, unknown>;
7138
+ query: {
7139
+ events?: string;
7140
+ };
5483
7141
  response: unknown;
5484
7142
  }
5485
7143
  /**
@@ -5490,6 +7148,10 @@ interface getFleetCommandOperation {
5490
7148
  readonly path: "/v1/partner/fleet-commands/{id}";
5491
7149
  readonly method: "GET";
5492
7150
  request: never;
7151
+ params: {
7152
+ id: string;
7153
+ };
7154
+ query: Record<string, unknown>;
5493
7155
  response: {
5494
7156
  data?: {
5495
7157
  fleet_command?: FleetCommand;
@@ -5505,10 +7167,17 @@ interface getFleetAnalyticsOperation {
5505
7167
  readonly path: "/v1/partner/fleet/analytics";
5506
7168
  readonly method: "GET";
5507
7169
  request: never;
7170
+ params: Record<string, unknown>;
7171
+ query: Record<string, unknown>;
5508
7172
  response: {
5509
7173
  data?: {
5510
- /** Average attention score (0-1) */
7174
+ /** 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
7175
  avg_attention?: number;
7176
+ /** 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. */
7177
+ avg_attention_outcome?: {
7178
+ kind?: "ok" | "unavailable";
7179
+ message?: string;
7180
+ };
5512
7181
  /** Average CPM in dollars */
5513
7182
  avg_cpm?: number;
5514
7183
  /** Fill rate percentage (0-100) */
@@ -5541,6 +7210,8 @@ interface pushFleetCommandOperation {
5541
7210
  venueType?: string;
5542
7211
  };
5543
7212
  };
7213
+ params: Record<string, unknown>;
7214
+ query: Record<string, unknown>;
5544
7215
  response: {
5545
7216
  data?: {
5546
7217
  errors?: Array<{
@@ -5563,6 +7234,8 @@ interface getFleetOverviewOperation {
5563
7234
  readonly path: "/v1/partner/fleet/overview";
5564
7235
  readonly method: "GET";
5565
7236
  request: never;
7237
+ params: Record<string, unknown>;
7238
+ query: Record<string, unknown>;
5566
7239
  response: {
5567
7240
  data?: {
5568
7241
  countries?: Record<string, number>;
@@ -5602,6 +7275,8 @@ interface updateFleetSettingsOperation {
5602
7275
  };
5603
7276
  };
5604
7277
  };
7278
+ params: Record<string, unknown>;
7279
+ query: Record<string, unknown>;
5605
7280
  response: {
5606
7281
  data?: {
5607
7282
  errors?: Array<Record<string, unknown>>;
@@ -5619,6 +7294,24 @@ interface recordImpressionGetOperation {
5619
7294
  readonly path: "/v1/partner/impression";
5620
7295
  readonly method: "GET";
5621
7296
  request: never;
7297
+ params: Record<string, unknown>;
7298
+ query: {
7299
+ adid: string;
7300
+ aid?: string;
7301
+ completed?: boolean;
7302
+ did?: string;
7303
+ display_area_ratio?: number;
7304
+ display_mode?: "fullscreen" | "l-bar" | "pip";
7305
+ duration?: number;
7306
+ impid: string;
7307
+ lbar_position?: "bottom" | "right";
7308
+ lbar_size?: number;
7309
+ lbar_slot_count?: number;
7310
+ lbar_slot_index?: number;
7311
+ sid?: string;
7312
+ sig?: string;
7313
+ sig_ts?: number;
7314
+ };
5622
7315
  response: {
5623
7316
  duplicate?: boolean;
5624
7317
  message?: string;
@@ -5649,6 +7342,8 @@ interface recordImpressionPostOperation {
5649
7342
  sig?: string;
5650
7343
  sig_ts?: number;
5651
7344
  };
7345
+ params: Record<string, unknown>;
7346
+ query: Record<string, unknown>;
5652
7347
  response: {
5653
7348
  duplicate?: boolean;
5654
7349
  message?: string;
@@ -5683,6 +7378,8 @@ interface recordImpressionsBatchOperation {
5683
7378
  timestamp?: string;
5684
7379
  }>;
5685
7380
  };
7381
+ params: Record<string, unknown>;
7382
+ query: Record<string, unknown>;
5686
7383
  response: {
5687
7384
  data?: {
5688
7385
  errors?: Array<{
@@ -5704,6 +7401,8 @@ interface getPartnerInfoOperation {
5704
7401
  readonly path: "/v1/partner/info";
5705
7402
  readonly method: "GET";
5706
7403
  request: never;
7404
+ params: Record<string, unknown>;
7405
+ query: Record<string, unknown>;
5707
7406
  response: {
5708
7407
  data?: Partner;
5709
7408
  success?: boolean;
@@ -5717,6 +7416,8 @@ interface listIntentCategoriesOperation {
5717
7416
  readonly path: "/v1/partner/intent/categories";
5718
7417
  readonly method: "GET";
5719
7418
  request: never;
7419
+ params: Record<string, unknown>;
7420
+ query: Record<string, unknown>;
5720
7421
  response: {
5721
7422
  count?: number;
5722
7423
  data?: Array<{
@@ -5740,6 +7441,10 @@ interface getIntentCategoryOperation {
5740
7441
  readonly path: "/v1/partner/intent/categories/{categoryId}";
5741
7442
  readonly method: "GET";
5742
7443
  request: never;
7444
+ params: {
7445
+ categoryId: string;
7446
+ };
7447
+ query: Record<string, unknown>;
5743
7448
  response: {
5744
7449
  description?: string;
5745
7450
  iab_segments?: Array<Record<string, unknown>>;
@@ -5760,6 +7465,10 @@ interface getIntentPricingOperation {
5760
7465
  readonly path: "/v1/partner/intent/pricing/{screenId}";
5761
7466
  readonly method: "GET";
5762
7467
  request: never;
7468
+ params: {
7469
+ screenId: string;
7470
+ };
7471
+ query: Record<string, unknown>;
5763
7472
  response: {
5764
7473
  category_match?: {
5765
7474
  category_id?: string;
@@ -5798,6 +7507,10 @@ interface getMeasurementMethodologyOperation {
5798
7507
  readonly path: "/v1/partner/measurement-methodology";
5799
7508
  readonly method: "GET";
5800
7509
  request: never;
7510
+ params: Record<string, unknown>;
7511
+ query: {
7512
+ format?: "json";
7513
+ };
5801
7514
  response: MeasurementMethodology;
5802
7515
  }
5803
7516
  /**
@@ -5808,6 +7521,8 @@ interface getMeasurementMethodologyJsonOperation {
5808
7521
  readonly path: "/v1/partner/measurement-methodology.json";
5809
7522
  readonly method: "GET";
5810
7523
  request: never;
7524
+ params: Record<string, unknown>;
7525
+ query: Record<string, unknown>;
5811
7526
  response: MeasurementMethodology;
5812
7527
  }
5813
7528
  /**
@@ -5818,6 +7533,8 @@ interface getNetworkConfigOperation {
5818
7533
  readonly path: "/v1/partner/network-config";
5819
7534
  readonly method: "GET";
5820
7535
  request: never;
7536
+ params: Record<string, unknown>;
7537
+ query: Record<string, unknown>;
5821
7538
  response: {
5822
7539
  network_config?: PartnerNetworkConfig;
5823
7540
  object?: string;
@@ -5832,6 +7549,8 @@ interface patchNetworkConfigOperation {
5832
7549
  readonly path: "/v1/partner/network-config";
5833
7550
  readonly method: "PATCH";
5834
7551
  request: PartnerNetworkConfigUpdate;
7552
+ params: Record<string, unknown>;
7553
+ query: Record<string, unknown>;
5835
7554
  response: {
5836
7555
  network_config?: PartnerNetworkConfig;
5837
7556
  object?: string;
@@ -5846,6 +7565,8 @@ interface updateNetworkConfigOperation {
5846
7565
  readonly path: "/v1/partner/network-config";
5847
7566
  readonly method: "PUT";
5848
7567
  request: PartnerNetworkConfigUpdate;
7568
+ params: Record<string, unknown>;
7569
+ query: Record<string, unknown>;
5849
7570
  response: {
5850
7571
  network_config?: PartnerNetworkConfig;
5851
7572
  object?: string;
@@ -5860,6 +7581,10 @@ interface getNetworkTrendsOperation {
5860
7581
  readonly path: "/v1/partner/network/trends";
5861
7582
  readonly method: "GET";
5862
7583
  request: never;
7584
+ params: Record<string, unknown>;
7585
+ query: {
7586
+ days?: number;
7587
+ };
5863
7588
  response: {
5864
7589
  audience_shift?: Array<Record<string, unknown>>;
5865
7590
  days?: number;
@@ -5874,6 +7599,8 @@ interface partnerPingOperation {
5874
7599
  readonly path: "/v1/partner/ping";
5875
7600
  readonly method: "GET";
5876
7601
  request: never;
7602
+ params: Record<string, unknown>;
7603
+ query: Record<string, unknown>;
5877
7604
  response: {
5878
7605
  ok?: boolean;
5879
7606
  service?: string;
@@ -5887,6 +7614,8 @@ interface partnerPingAuthOperation {
5887
7614
  readonly path: "/v1/partner/ping/auth";
5888
7615
  readonly method: "GET";
5889
7616
  request: never;
7617
+ params: Record<string, unknown>;
7618
+ query: Record<string, unknown>;
5890
7619
  response: {
5891
7620
  ok?: boolean;
5892
7621
  partner_id?: string;
@@ -5901,6 +7630,8 @@ interface recordPartnerPlayOperation {
5901
7630
  readonly path: "/v1/partner/plays";
5902
7631
  readonly method: "POST";
5903
7632
  request: PartnerPlay;
7633
+ params: Record<string, unknown>;
7634
+ query: Record<string, unknown>;
5904
7635
  response: {
5905
7636
  content_sha256?: string;
5906
7637
  object?: string;
@@ -5918,6 +7649,8 @@ interface recordPartnerPlaysBatchOperation {
5918
7649
  request: {
5919
7650
  plays: Array<PartnerPlay>;
5920
7651
  };
7652
+ params: Record<string, unknown>;
7653
+ query: Record<string, unknown>;
5921
7654
  response: {
5922
7655
  accepted?: number;
5923
7656
  duplicate?: number;
@@ -5938,6 +7671,8 @@ interface getPricingOperation {
5938
7671
  readonly path: "/v1/partner/pricing";
5939
7672
  readonly method: "GET";
5940
7673
  request: never;
7674
+ params: Record<string, unknown>;
7675
+ query: Record<string, unknown>;
5941
7676
  response: {
5942
7677
  agent_register_url?: string;
5943
7678
  billing_setup_url?: string;
@@ -6041,6 +7776,8 @@ interface recordProgrammaticEventLegacyAliasOperation {
6041
7776
  type?: "ad_started" | "ad_ended" | "no_fill" | "error";
6042
7777
  variant_name?: string;
6043
7778
  };
7779
+ params: Record<string, unknown>;
7780
+ query: Record<string, unknown>;
6044
7781
  response: {
6045
7782
  success?: boolean;
6046
7783
  };
@@ -6065,6 +7802,8 @@ interface quickStartOperation {
6065
7802
  /** Optional legacy classification. Omit for the default self-serve Partner API key. */
6066
7803
  partner_type?: string;
6067
7804
  };
7805
+ params: Record<string, unknown>;
7806
+ query: Record<string, unknown>;
6068
7807
  response: {
6069
7808
  data?: {
6070
7809
  credentials?: {
@@ -6132,6 +7871,8 @@ interface registerPartnerOperation {
6132
7871
  /** URL-safe identifier (lowercase, no spaces) */
6133
7872
  slug: string;
6134
7873
  };
7874
+ params: Record<string, unknown>;
7875
+ query: Record<string, unknown>;
6135
7876
  response: {
6136
7877
  data?: {
6137
7878
  /** 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 +7912,8 @@ interface generateSandboxEventOperation {
6171
7912
  /** Target sandbox screen (auto-selects first if omitted) */
6172
7913
  screen_id?: string;
6173
7914
  };
7915
+ params: Record<string, unknown>;
7916
+ query: Record<string, unknown>;
6174
7917
  response: {
6175
7918
  /** Event payload (varies by event type) */
6176
7919
  data?: Record<string, unknown>;
@@ -6192,6 +7935,8 @@ interface resetSandboxOperation {
6192
7935
  readonly path: "/v1/partner/sandbox/reset";
6193
7936
  readonly method: "POST";
6194
7937
  request: never;
7938
+ params: Record<string, unknown>;
7939
+ query: Record<string, unknown>;
6195
7940
  response: {
6196
7941
  events_cleared?: number;
6197
7942
  object?: string;
@@ -6213,6 +7958,8 @@ interface createSandboxScreenOperation {
6213
7958
  /** Override venue type */
6214
7959
  venue_type?: string;
6215
7960
  };
7961
+ params: Record<string, unknown>;
7962
+ query: Record<string, unknown>;
6216
7963
  response: {
6217
7964
  audience?: {
6218
7965
  avg_dwell_time_sec?: number;
@@ -6249,6 +7996,8 @@ interface getSandboxStatusOperation {
6249
7996
  readonly path: "/v1/partner/sandbox/status";
6250
7997
  readonly method: "GET";
6251
7998
  request: never;
7999
+ params: Record<string, unknown>;
8000
+ query: Record<string, unknown>;
6252
8001
  response: {
6253
8002
  last_activity?: string | null;
6254
8003
  object?: string;
@@ -6277,6 +8026,11 @@ interface listScreenGroupsOperation {
6277
8026
  readonly path: "/v1/partner/screen-groups";
6278
8027
  readonly method: "GET";
6279
8028
  request: never;
8029
+ params: Record<string, unknown>;
8030
+ query: {
8031
+ limit?: number;
8032
+ offset?: number;
8033
+ };
6280
8034
  response: {
6281
8035
  data?: {
6282
8036
  has_more?: boolean;
@@ -6298,6 +8052,8 @@ interface createScreenGroupOperation {
6298
8052
  name: string;
6299
8053
  screen_ids?: Array<string>;
6300
8054
  };
8055
+ params: Record<string, unknown>;
8056
+ query: Record<string, unknown>;
6301
8057
  response: {
6302
8058
  data?: {
6303
8059
  screen_group?: ScreenGroup;
@@ -6313,6 +8069,10 @@ interface deleteScreenGroupOperation {
6313
8069
  readonly path: "/v1/partner/screen-groups/{groupId}";
6314
8070
  readonly method: "DELETE";
6315
8071
  request: never;
8072
+ params: {
8073
+ groupId: string;
8074
+ };
8075
+ query: Record<string, unknown>;
6316
8076
  response: {
6317
8077
  data?: {
6318
8078
  deleted?: boolean;
@@ -6330,6 +8090,10 @@ interface getScreenGroupOperation {
6330
8090
  readonly path: "/v1/partner/screen-groups/{groupId}";
6331
8091
  readonly method: "GET";
6332
8092
  request: never;
8093
+ params: {
8094
+ groupId: string;
8095
+ };
8096
+ query: Record<string, unknown>;
6333
8097
  response: {
6334
8098
  data?: {
6335
8099
  screen_group?: ScreenGroup;
@@ -6348,6 +8112,10 @@ interface updateScreenGroupOperation {
6348
8112
  description?: string;
6349
8113
  name?: string;
6350
8114
  };
8115
+ params: {
8116
+ groupId: string;
8117
+ };
8118
+ query: Record<string, unknown>;
6351
8119
  response: {
6352
8120
  data?: {
6353
8121
  screen_group?: ScreenGroup;
@@ -6363,6 +8131,10 @@ interface getScreenGroupAnalyticsOperation {
6363
8131
  readonly path: "/v1/partner/screen-groups/{groupId}/analytics";
6364
8132
  readonly method: "GET";
6365
8133
  request: never;
8134
+ params: {
8135
+ groupId: string;
8136
+ };
8137
+ query: Record<string, unknown>;
6366
8138
  response: {
6367
8139
  /** 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
8140
  data?: {
@@ -6389,6 +8161,10 @@ interface createScreenGroupCommandOperation {
6389
8161
  type: "reload" | "update_settings" | "restart" | "screenshot" | "clear_cache" | "update_content" | "refresh_ads" | "update_config" | "get_state" | "show_ad" | "play_ad";
6390
8162
  };
6391
8163
  };
8164
+ params: {
8165
+ groupId: string;
8166
+ };
8167
+ query: Record<string, unknown>;
6392
8168
  response: {
6393
8169
  data?: {
6394
8170
  fleet_command?: FleetCommand;
@@ -6404,6 +8180,10 @@ interface getScreenGroupContentPolicyOperation {
6404
8180
  readonly path: "/v1/partner/screen-groups/{groupId}/content-policy";
6405
8181
  readonly method: "GET";
6406
8182
  request: never;
8183
+ params: {
8184
+ groupId: string;
8185
+ };
8186
+ query: Record<string, unknown>;
6407
8187
  response: {
6408
8188
  data?: {
6409
8189
  content_policy?: ScreenGroupContentPolicy;
@@ -6419,6 +8199,10 @@ interface updateScreenGroupContentPolicyOperation {
6419
8199
  readonly path: "/v1/partner/screen-groups/{groupId}/content-policy";
6420
8200
  readonly method: "PUT";
6421
8201
  request: ScreenGroupContentPolicyInput;
8202
+ params: {
8203
+ groupId: string;
8204
+ };
8205
+ query: Record<string, unknown>;
6422
8206
  response: {
6423
8207
  data?: {
6424
8208
  content_policy?: ScreenGroupContentPolicy;
@@ -6436,6 +8220,10 @@ interface removeScreenGroupMembersOperation {
6436
8220
  request: {
6437
8221
  screen_ids: Array<string>;
6438
8222
  };
8223
+ params: {
8224
+ groupId: string;
8225
+ };
8226
+ query: Record<string, unknown>;
6439
8227
  response: {
6440
8228
  data?: {
6441
8229
  removed?: number;
@@ -6451,6 +8239,13 @@ interface listScreenGroupMembersOperation {
6451
8239
  readonly path: "/v1/partner/screen-groups/{groupId}/members";
6452
8240
  readonly method: "GET";
6453
8241
  request: never;
8242
+ params: {
8243
+ groupId: string;
8244
+ };
8245
+ query: {
8246
+ limit?: number;
8247
+ offset?: number;
8248
+ };
6454
8249
  response: {
6455
8250
  data?: {
6456
8251
  data?: Array<{
@@ -6473,6 +8268,10 @@ interface addScreenGroupMembersOperation {
6473
8268
  request: {
6474
8269
  screen_ids: Array<string>;
6475
8270
  };
8271
+ params: {
8272
+ groupId: string;
8273
+ };
8274
+ query: Record<string, unknown>;
6476
8275
  response: {
6477
8276
  data?: {
6478
8277
  added?: number;
@@ -6492,6 +8291,10 @@ interface getScreenGroupSensingConfigOperation {
6492
8291
  readonly path: "/v1/partner/screen-groups/{groupId}/sensing-config";
6493
8292
  readonly method: "GET";
6494
8293
  request: never;
8294
+ params: {
8295
+ groupId: string;
8296
+ };
8297
+ query: Record<string, unknown>;
6495
8298
  response: {
6496
8299
  data?: {
6497
8300
  sensing_config?: ScreenGroupSensingConfig;
@@ -6507,6 +8310,10 @@ interface updateScreenGroupSensingConfigOperation {
6507
8310
  readonly path: "/v1/partner/screen-groups/{groupId}/sensing-config";
6508
8311
  readonly method: "PUT";
6509
8312
  request: ScreenGroupSensingConfigInput;
8313
+ params: {
8314
+ groupId: string;
8315
+ };
8316
+ query: Record<string, unknown>;
6510
8317
  response: {
6511
8318
  data?: {
6512
8319
  sensing_config?: ScreenGroupSensingConfig;
@@ -6522,6 +8329,10 @@ interface getScreenAudienceSegmentsOperation {
6522
8329
  readonly path: "/v1/partner/screen/{external_code}/audience-segments";
6523
8330
  readonly method: "GET";
6524
8331
  request: never;
8332
+ params: {
8333
+ external_code: string;
8334
+ };
8335
+ query: Record<string, unknown>;
6525
8336
  response: {
6526
8337
  external_code?: string;
6527
8338
  segtax_4?: Array<{
@@ -6548,6 +8359,8 @@ interface batchUpdateContentPreferencesOperation {
6548
8359
  /** Array of screen IDs to update */
6549
8360
  screen_ids: Array<string>;
6550
8361
  };
8362
+ params: Record<string, unknown>;
8363
+ query: Record<string, unknown>;
6551
8364
  response: BatchResult;
6552
8365
  }
6553
8366
  /**
@@ -6561,6 +8374,8 @@ interface batchUpdateDisplaySettingsOperation {
6561
8374
  screen_ids: Array<string>;
6562
8375
  settings: DisplaySettingsInput;
6563
8376
  };
8377
+ params: Record<string, unknown>;
8378
+ query: Record<string, unknown>;
6564
8379
  response: BatchResult;
6565
8380
  }
6566
8381
  /**
@@ -6574,6 +8389,8 @@ interface batchUpdateProgrammaticSettingsOperation {
6574
8389
  screen_ids: Array<string>;
6575
8390
  settings: ProgrammaticSettingsInput;
6576
8391
  };
8392
+ params: Record<string, unknown>;
8393
+ query: Record<string, unknown>;
6577
8394
  response: BatchResult;
6578
8395
  }
6579
8396
  /**
@@ -6584,6 +8401,12 @@ interface resolvePartnerScreenOperation {
6584
8401
  readonly path: "/v1/partner/screens/resolve";
6585
8402
  readonly method: "GET";
6586
8403
  request: never;
8404
+ params: Record<string, unknown>;
8405
+ query: {
8406
+ device_id?: string;
8407
+ external_device_id?: string;
8408
+ fingerprint?: string;
8409
+ };
6587
8410
  response: {
6588
8411
  data?: {
6589
8412
  device_id?: string;
@@ -6602,6 +8425,12 @@ interface getScreenAnalyticsOperation {
6602
8425
  readonly path: "/v1/partner/screens/{screenId}/analytics";
6603
8426
  readonly method: "GET";
6604
8427
  request: never;
8428
+ params: {
8429
+ screenId: string;
8430
+ };
8431
+ query: {
8432
+ period?: "7d" | "30d" | "90d";
8433
+ };
6605
8434
  response: {
6606
8435
  data?: ScreenAnalyticsResponse;
6607
8436
  success?: boolean;
@@ -6615,6 +8444,10 @@ interface getPartnerScreenAtmosphereOperation {
6615
8444
  readonly path: "/v1/partner/screens/{screenId}/analytics/atmosphere";
6616
8445
  readonly method: "GET";
6617
8446
  request: never;
8447
+ params: {
8448
+ screenId: string;
8449
+ };
8450
+ query: Record<string, unknown>;
6618
8451
  response: {
6619
8452
  data?: {
6620
8453
  crowdDensity?: string | null;
@@ -6636,6 +8469,14 @@ interface getPartnerScreenIntelligenceOperation {
6636
8469
  readonly path: "/v1/partner/screens/{screenId}/analytics/intelligence";
6637
8470
  readonly method: "GET";
6638
8471
  request: never;
8472
+ params: {
8473
+ screenId: string;
8474
+ };
8475
+ query: {
8476
+ from: string;
8477
+ interval?: "5min" | "15min" | "1h" | "1d";
8478
+ to: string;
8479
+ };
6639
8480
  response: {
6640
8481
  data?: {
6641
8482
  dedup?: {
@@ -6666,6 +8507,10 @@ interface getPartnerScreenTasteProfileOperation {
6666
8507
  readonly path: "/v1/partner/screens/{screenId}/analytics/taste-profile";
6667
8508
  readonly method: "GET";
6668
8509
  request: never;
8510
+ params: {
8511
+ screenId: string;
8512
+ };
8513
+ query: Record<string, unknown>;
6669
8514
  response: {
6670
8515
  data?: {
6671
8516
  computedAt?: string | null;
@@ -6691,6 +8536,12 @@ interface getPartnerScreenTrafficOperation {
6691
8536
  readonly path: "/v1/partner/screens/{screenId}/analytics/traffic";
6692
8537
  readonly method: "GET";
6693
8538
  request: never;
8539
+ params: {
8540
+ screenId: string;
8541
+ };
8542
+ query: {
8543
+ days?: number;
8544
+ };
6694
8545
  response: {
6695
8546
  data?: {
6696
8547
  busyScore?: number;
@@ -6708,6 +8559,10 @@ interface getPartnerScreenVASOperation {
6708
8559
  readonly path: "/v1/partner/screens/{screenId}/analytics/vas";
6709
8560
  readonly method: "GET";
6710
8561
  request: never;
8562
+ params: {
8563
+ screenId: string;
8564
+ };
8565
+ query: Record<string, unknown>;
6711
8566
  response: {
6712
8567
  data?: {
6713
8568
  avgAttentionScore?: number;
@@ -6734,6 +8589,10 @@ interface applyContentPresetOperation {
6734
8589
  /** ID of the preset to apply */
6735
8590
  preset_id: string;
6736
8591
  };
8592
+ params: {
8593
+ screenId: string;
8594
+ };
8595
+ query: Record<string, unknown>;
6737
8596
  response: ContentPreferencesResponse & {
6738
8597
  preset_applied?: string;
6739
8598
  };
@@ -6746,6 +8605,13 @@ interface getAudienceMetricsOperation {
6746
8605
  readonly path: "/v1/partner/screens/{screenId}/audience-metrics";
6747
8606
  readonly method: "GET";
6748
8607
  request: never;
8608
+ params: {
8609
+ screenId: string;
8610
+ };
8611
+ query: {
8612
+ include_history?: boolean;
8613
+ period?: "1h" | "6h" | "24h";
8614
+ };
6749
8615
  response: AudienceMetricsResponse;
6750
8616
  }
6751
8617
  /**
@@ -6756,6 +8622,10 @@ interface getContentPreferencesOperation {
6756
8622
  readonly path: "/v1/partner/screens/{screenId}/content-preferences";
6757
8623
  readonly method: "GET";
6758
8624
  request: never;
8625
+ params: {
8626
+ screenId: string;
8627
+ };
8628
+ query: Record<string, unknown>;
6759
8629
  response: ContentPreferencesResponse;
6760
8630
  }
6761
8631
  /**
@@ -6766,6 +8636,10 @@ interface patchContentPreferencesOperation {
6766
8636
  readonly path: "/v1/partner/screens/{screenId}/content-preferences";
6767
8637
  readonly method: "PATCH";
6768
8638
  request: ContentPreferencesInput;
8639
+ params: {
8640
+ screenId: string;
8641
+ };
8642
+ query: Record<string, unknown>;
6769
8643
  response: ContentPreferencesResponse;
6770
8644
  }
6771
8645
  /**
@@ -6776,6 +8650,10 @@ interface updateContentPreferencesOperation {
6776
8650
  readonly path: "/v1/partner/screens/{screenId}/content-preferences";
6777
8651
  readonly method: "PUT";
6778
8652
  request: ContentPreferencesInput;
8653
+ params: {
8654
+ screenId: string;
8655
+ };
8656
+ query: Record<string, unknown>;
6779
8657
  response: ContentPreferencesResponse;
6780
8658
  }
6781
8659
  /**
@@ -6786,6 +8664,10 @@ interface listPartnerDefaultStreamsOperation {
6786
8664
  readonly path: "/v1/partner/screens/{screenId}/default-streams";
6787
8665
  readonly method: "GET";
6788
8666
  request: never;
8667
+ params: {
8668
+ screenId: string;
8669
+ };
8670
+ query: Record<string, unknown>;
6789
8671
  response: {
6790
8672
  data?: {
6791
8673
  current?: PartnerDefaultStream;
@@ -6802,6 +8684,10 @@ interface createPartnerDefaultStreamOperation {
6802
8684
  readonly path: "/v1/partner/screens/{screenId}/default-streams";
6803
8685
  readonly method: "POST";
6804
8686
  request: PartnerDefaultStreamCreate;
8687
+ params: {
8688
+ screenId: string;
8689
+ };
8690
+ query: Record<string, unknown>;
6805
8691
  response: {
6806
8692
  data?: PartnerDefaultStream;
6807
8693
  success?: boolean;
@@ -6815,6 +8701,10 @@ interface createPartnerDefaultStreamImagesOperation {
6815
8701
  readonly path: "/v1/partner/screens/{screenId}/default-streams/images";
6816
8702
  readonly method: "POST";
6817
8703
  request: never;
8704
+ params: {
8705
+ screenId: string;
8706
+ };
8707
+ query: Record<string, unknown>;
6818
8708
  response: {
6819
8709
  data?: PartnerDefaultStream;
6820
8710
  success?: boolean;
@@ -6830,6 +8720,10 @@ interface reorderPartnerDefaultStreamsOperation {
6830
8720
  request: {
6831
8721
  order: Array<string>;
6832
8722
  };
8723
+ params: {
8724
+ screenId: string;
8725
+ };
8726
+ query: Record<string, unknown>;
6833
8727
  response: {
6834
8728
  success?: boolean;
6835
8729
  };
@@ -6842,6 +8736,10 @@ interface createPartnerDefaultStreamUploadOperation {
6842
8736
  readonly path: "/v1/partner/screens/{screenId}/default-streams/upload";
6843
8737
  readonly method: "POST";
6844
8738
  request: never;
8739
+ params: {
8740
+ screenId: string;
8741
+ };
8742
+ query: Record<string, unknown>;
6845
8743
  response: {
6846
8744
  data?: PartnerDefaultStream;
6847
8745
  success?: boolean;
@@ -6855,6 +8753,11 @@ interface deletePartnerDefaultStreamOperation {
6855
8753
  readonly path: "/v1/partner/screens/{screenId}/default-streams/{streamId}";
6856
8754
  readonly method: "DELETE";
6857
8755
  request: never;
8756
+ params: {
8757
+ screenId: string;
8758
+ streamId: string;
8759
+ };
8760
+ query: Record<string, unknown>;
6858
8761
  response: {
6859
8762
  success?: boolean;
6860
8763
  };
@@ -6867,6 +8770,11 @@ interface updatePartnerDefaultStreamOperation {
6867
8770
  readonly path: "/v1/partner/screens/{screenId}/default-streams/{streamId}";
6868
8771
  readonly method: "PUT";
6869
8772
  request: PartnerDefaultStreamUpdate;
8773
+ params: {
8774
+ screenId: string;
8775
+ streamId: string;
8776
+ };
8777
+ query: Record<string, unknown>;
6870
8778
  response: {
6871
8779
  data?: PartnerDefaultStream;
6872
8780
  success?: boolean;
@@ -6880,6 +8788,12 @@ interface getScreenDemographicsOperation {
6880
8788
  readonly path: "/v1/partner/screens/{screenId}/demographics";
6881
8789
  readonly method: "GET";
6882
8790
  request: never;
8791
+ params: {
8792
+ screenId: string;
8793
+ };
8794
+ query: {
8795
+ period?: "24h" | "7d" | "30d";
8796
+ };
6883
8797
  response: DemographicsResponse;
6884
8798
  }
6885
8799
  /**
@@ -6890,6 +8804,10 @@ interface getDisplaySettingsOperation {
6890
8804
  readonly path: "/v1/partner/screens/{screenId}/display-settings";
6891
8805
  readonly method: "GET";
6892
8806
  request: never;
8807
+ params: {
8808
+ screenId: string;
8809
+ };
8810
+ query: Record<string, unknown>;
6893
8811
  response: DisplaySettingsResponse;
6894
8812
  }
6895
8813
  /**
@@ -6900,6 +8818,10 @@ interface patchDisplaySettingsOperation {
6900
8818
  readonly path: "/v1/partner/screens/{screenId}/display-settings";
6901
8819
  readonly method: "PATCH";
6902
8820
  request: DisplaySettingsInput;
8821
+ params: {
8822
+ screenId: string;
8823
+ };
8824
+ query: Record<string, unknown>;
6903
8825
  response: DisplaySettingsResponse;
6904
8826
  }
6905
8827
  /**
@@ -6910,6 +8832,10 @@ interface updateDisplaySettingsOperation {
6910
8832
  readonly path: "/v1/partner/screens/{screenId}/display-settings";
6911
8833
  readonly method: "PUT";
6912
8834
  request: DisplaySettingsInput;
8835
+ params: {
8836
+ screenId: string;
8837
+ };
8838
+ query: Record<string, unknown>;
6913
8839
  response: DisplaySettingsResponse;
6914
8840
  }
6915
8841
  /**
@@ -6920,6 +8846,10 @@ interface getPartnerLBarSettingsOperation {
6920
8846
  readonly path: "/v1/partner/screens/{screenId}/l-bar";
6921
8847
  readonly method: "GET";
6922
8848
  request: never;
8849
+ params: {
8850
+ screenId: string;
8851
+ };
8852
+ query: Record<string, unknown>;
6923
8853
  response: {
6924
8854
  data?: PartnerLBarSettings;
6925
8855
  success?: boolean;
@@ -6936,6 +8866,10 @@ interface updatePartnerLBarSettingsOperation {
6936
8866
  display_preferences?: PartnerLBarDisplayPreferences;
6937
8867
  l_bar_content?: PartnerLBarContent;
6938
8868
  };
8869
+ params: {
8870
+ screenId: string;
8871
+ };
8872
+ query: Record<string, unknown>;
6939
8873
  response: {
6940
8874
  data?: PartnerLBarSettings;
6941
8875
  success?: boolean;
@@ -6954,6 +8888,10 @@ interface updatePartnerLBarLiveUpdatesOperation {
6954
8888
  queue_number?: string;
6955
8889
  wait_time_minutes?: number;
6956
8890
  };
8891
+ params: {
8892
+ screenId: string;
8893
+ };
8894
+ query: Record<string, unknown>;
6957
8895
  response: {
6958
8896
  success?: boolean;
6959
8897
  };
@@ -6966,6 +8904,10 @@ interface getProgrammaticSettingsOperation {
6966
8904
  readonly path: "/v1/partner/screens/{screenId}/programmatic-settings";
6967
8905
  readonly method: "GET";
6968
8906
  request: never;
8907
+ params: {
8908
+ screenId: string;
8909
+ };
8910
+ query: Record<string, unknown>;
6969
8911
  response: ProgrammaticSettingsResponse;
6970
8912
  }
6971
8913
  /**
@@ -6976,6 +8918,10 @@ interface patchProgrammaticSettingsOperation {
6976
8918
  readonly path: "/v1/partner/screens/{screenId}/programmatic-settings";
6977
8919
  readonly method: "PATCH";
6978
8920
  request: ProgrammaticSettingsInput;
8921
+ params: {
8922
+ screenId: string;
8923
+ };
8924
+ query: Record<string, unknown>;
6979
8925
  response: ProgrammaticSettingsResponse;
6980
8926
  }
6981
8927
  /**
@@ -6986,6 +8932,10 @@ interface updateProgrammaticSettingsOperation {
6986
8932
  readonly path: "/v1/partner/screens/{screenId}/programmatic-settings";
6987
8933
  readonly method: "PUT";
6988
8934
  request: ProgrammaticSettingsInput;
8935
+ params: {
8936
+ screenId: string;
8937
+ };
8938
+ query: Record<string, unknown>;
6989
8939
  response: ProgrammaticSettingsResponse;
6990
8940
  }
6991
8941
  /**
@@ -6996,6 +8946,10 @@ interface getResolvedContentPolicyOperation {
6996
8946
  readonly path: "/v1/partner/screens/{screenId}/resolved-content-policy";
6997
8947
  readonly method: "GET";
6998
8948
  request: never;
8949
+ params: {
8950
+ screenId: string;
8951
+ };
8952
+ query: Record<string, unknown>;
6999
8953
  response: {
7000
8954
  data?: ResolvedContentPolicy;
7001
8955
  success?: boolean;
@@ -7009,6 +8963,10 @@ interface getResolvedSensingConfigOperation {
7009
8963
  readonly path: "/v1/partner/screens/{screenId}/resolved-sensing-config";
7010
8964
  readonly method: "GET";
7011
8965
  request: never;
8966
+ params: {
8967
+ screenId: string;
8968
+ };
8969
+ query: Record<string, unknown>;
7012
8970
  response: {
7013
8971
  data?: ResolvedSensingConfig;
7014
8972
  success?: boolean;
@@ -7022,6 +8980,14 @@ interface getScreenSensingChipsOperation {
7022
8980
  readonly path: "/v1/partner/screens/{screenId}/sensing/chips";
7023
8981
  readonly method: "GET";
7024
8982
  request: never;
8983
+ params: {
8984
+ screenId: string;
8985
+ };
8986
+ query: {
8987
+ days?: number;
8988
+ limit?: number;
8989
+ offset?: number;
8990
+ };
7025
8991
  response: {
7026
8992
  data?: {
7027
8993
  /** The custom field_keys this screen senses (from its active profile) */
@@ -7052,6 +9018,10 @@ interface interpretScreenSensingIntentOperation {
7052
9018
  /** Natural-language description of what to sense */
7053
9019
  intent: string;
7054
9020
  };
9021
+ params: {
9022
+ screenId: string;
9023
+ };
9024
+ query: Record<string, unknown>;
7055
9025
  response: {
7056
9026
  data?: {
7057
9027
  /** The generated profile — pass to /sensing/profile to deploy */
@@ -7072,6 +9042,10 @@ interface deployScreenSensingProfileOperation {
7072
9042
  /** The sensing profile object returned by interpret-intent */
7073
9043
  profile: Record<string, unknown>;
7074
9044
  };
9045
+ params: {
9046
+ screenId: string;
9047
+ };
9048
+ query: Record<string, unknown>;
7075
9049
  response: {
7076
9050
  data?: {
7077
9051
  command?: Record<string, unknown>;
@@ -7088,6 +9062,10 @@ interface getScreenSensingSettingsOperation {
7088
9062
  readonly path: "/v1/partner/screens/{screenId}/sensing/settings";
7089
9063
  readonly method: "GET";
7090
9064
  request: never;
9065
+ params: {
9066
+ screenId: string;
9067
+ };
9068
+ query: Record<string, unknown>;
7091
9069
  response: {
7092
9070
  data?: SensingSettingsResponse;
7093
9071
  success?: boolean;
@@ -7103,6 +9081,10 @@ interface updateScreenSensingSettingsOperation {
7103
9081
  request: {
7104
9082
  performance_mode: SensingPerformanceMode;
7105
9083
  };
9084
+ params: {
9085
+ screenId: string;
9086
+ };
9087
+ query: Record<string, unknown>;
7106
9088
  response: {
7107
9089
  data?: {
7108
9090
  command?: Record<string, unknown>;
@@ -7120,6 +9102,10 @@ interface listPartnerSensingRoutesOperation {
7120
9102
  readonly path: "/v1/partner/sensing/routes";
7121
9103
  readonly method: "GET";
7122
9104
  request: never;
9105
+ params: Record<string, unknown>;
9106
+ query: {
9107
+ includeDisabled?: boolean;
9108
+ };
7123
9109
  response: {
7124
9110
  data?: {
7125
9111
  routes?: Array<SensingRoute>;
@@ -7135,6 +9121,8 @@ interface createPartnerSensingRouteOperation {
7135
9121
  readonly path: "/v1/partner/sensing/routes";
7136
9122
  readonly method: "POST";
7137
9123
  request: CreatePartnerSensingRouteRequest;
9124
+ params: Record<string, unknown>;
9125
+ query: Record<string, unknown>;
7138
9126
  response: {
7139
9127
  data?: {
7140
9128
  route?: SensingRoute;
@@ -7150,6 +9138,10 @@ interface deletePartnerSensingRouteOperation {
7150
9138
  readonly path: "/v1/partner/sensing/routes/{routeId}";
7151
9139
  readonly method: "DELETE";
7152
9140
  request: never;
9141
+ params: {
9142
+ routeId: string;
9143
+ };
9144
+ query: Record<string, unknown>;
7153
9145
  response: {
7154
9146
  data?: {
7155
9147
  routeId?: string;
@@ -7165,6 +9157,10 @@ interface getPartnerSensingRouteOperation {
7165
9157
  readonly path: "/v1/partner/sensing/routes/{routeId}";
7166
9158
  readonly method: "GET";
7167
9159
  request: never;
9160
+ params: {
9161
+ routeId: string;
9162
+ };
9163
+ query: Record<string, unknown>;
7168
9164
  response: {
7169
9165
  data?: {
7170
9166
  route?: SensingRoute;
@@ -7180,6 +9176,10 @@ interface updatePartnerSensingRouteOperation {
7180
9176
  readonly path: "/v1/partner/sensing/routes/{routeId}";
7181
9177
  readonly method: "PATCH";
7182
9178
  request: UpdatePartnerSensingRouteRequest;
9179
+ params: {
9180
+ routeId: string;
9181
+ };
9182
+ query: Record<string, unknown>;
7183
9183
  response: {
7184
9184
  data?: {
7185
9185
  route?: SensingRoute;
@@ -7195,6 +9195,8 @@ interface createStripeConnectAccountOperation {
7195
9195
  readonly path: "/v1/partner/stripe/connect";
7196
9196
  readonly method: "POST";
7197
9197
  request: never;
9198
+ params: Record<string, unknown>;
9199
+ query: Record<string, unknown>;
7198
9200
  response: {
7199
9201
  data?: {
7200
9202
  account_id?: string;
@@ -7217,6 +9219,8 @@ interface getStripeLoginLinkOperation {
7217
9219
  readonly path: "/v1/partner/stripe/login-link";
7218
9220
  readonly method: "GET";
7219
9221
  request: never;
9222
+ params: Record<string, unknown>;
9223
+ query: Record<string, unknown>;
7220
9224
  response: {
7221
9225
  data?: {
7222
9226
  account_id?: string;
@@ -7234,6 +9238,8 @@ interface getStripeOnboardingLinkOperation {
7234
9238
  readonly path: "/v1/partner/stripe/onboarding-link";
7235
9239
  readonly method: "GET";
7236
9240
  request: never;
9241
+ params: Record<string, unknown>;
9242
+ query: Record<string, unknown>;
7237
9243
  response: {
7238
9244
  data?: {
7239
9245
  account_id?: string;
@@ -7259,6 +9265,8 @@ interface requestStripePayoutOperation {
7259
9265
  /** Deduplication key to prevent duplicate payouts */
7260
9266
  idempotency_key?: string;
7261
9267
  };
9268
+ params: Record<string, unknown>;
9269
+ query: Record<string, unknown>;
7262
9270
  response: {
7263
9271
  data?: {
7264
9272
  amount_cents?: number;
@@ -7283,6 +9291,10 @@ interface getStripePayoutHistoryOperation {
7283
9291
  readonly path: "/v1/partner/stripe/payouts";
7284
9292
  readonly method: "GET";
7285
9293
  request: never;
9294
+ params: Record<string, unknown>;
9295
+ query: {
9296
+ limit?: number;
9297
+ };
7286
9298
  response: {
7287
9299
  data?: {
7288
9300
  has_more?: boolean;
@@ -7307,6 +9319,8 @@ interface getStripeAccountStatusOperation {
7307
9319
  readonly path: "/v1/partner/stripe/status";
7308
9320
  readonly method: "GET";
7309
9321
  request: never;
9322
+ params: Record<string, unknown>;
9323
+ query: Record<string, unknown>;
7310
9324
  response: {
7311
9325
  data?: {
7312
9326
  account_id?: string | null;
@@ -7335,6 +9349,8 @@ interface handleStripeWebhookOperation {
7335
9349
  readonly path: "/v1/partner/stripe/webhook";
7336
9350
  readonly method: "POST";
7337
9351
  request: Record<string, unknown>;
9352
+ params: Record<string, unknown>;
9353
+ query: Record<string, unknown>;
7338
9354
  response: {
7339
9355
  event_type?: string;
7340
9356
  received?: boolean;
@@ -7348,6 +9364,10 @@ interface listTeamMembersOperation {
7348
9364
  readonly path: "/v1/partner/team";
7349
9365
  readonly method: "GET";
7350
9366
  request: never;
9367
+ params: Record<string, unknown>;
9368
+ query: {
9369
+ status?: "active" | "pending" | "all";
9370
+ };
7351
9371
  response: {
7352
9372
  data?: {
7353
9373
  members?: Array<TeamMember>;
@@ -7371,6 +9391,8 @@ interface acceptInvitationOperation {
7371
9391
  /** Invitation token from email link */
7372
9392
  token: string;
7373
9393
  };
9394
+ params: Record<string, unknown>;
9395
+ query: Record<string, unknown>;
7374
9396
  response: {
7375
9397
  data?: {
7376
9398
  partner?: {
@@ -7401,6 +9423,8 @@ interface inviteTeamMemberOperation {
7401
9423
  /** Role to assign to the team member */
7402
9424
  role?: "admin" | "viewer";
7403
9425
  };
9426
+ params: Record<string, unknown>;
9427
+ query: Record<string, unknown>;
7404
9428
  response: {
7405
9429
  data?: TeamInviteResponse;
7406
9430
  message?: string;
@@ -7415,6 +9439,10 @@ interface getInvitationByTokenOperation {
7415
9439
  readonly path: "/v1/partner/team/invite/{token}";
7416
9440
  readonly method: "GET";
7417
9441
  request: never;
9442
+ params: {
9443
+ token: string;
9444
+ };
9445
+ query: Record<string, unknown>;
7418
9446
  response: {
7419
9447
  data?: {
7420
9448
  email?: string;
@@ -7437,6 +9465,10 @@ interface resendInvitationOperation {
7437
9465
  readonly path: "/v1/partner/team/{membershipId}/resend";
7438
9466
  readonly method: "POST";
7439
9467
  request: never;
9468
+ params: {
9469
+ membershipId: string;
9470
+ };
9471
+ query: Record<string, unknown>;
7440
9472
  response: {
7441
9473
  data?: {
7442
9474
  email?: string;
@@ -7454,6 +9486,10 @@ interface removeTeamMemberOperation {
7454
9486
  readonly path: "/v1/partner/team/{userId}";
7455
9487
  readonly method: "DELETE";
7456
9488
  request: never;
9489
+ params: {
9490
+ userId: string;
9491
+ };
9492
+ query: Record<string, unknown>;
7457
9493
  response: {
7458
9494
  message?: string;
7459
9495
  success?: boolean;
@@ -7469,6 +9505,10 @@ interface changeTeamMemberRoleOperation {
7469
9505
  request: {
7470
9506
  role: "admin" | "viewer";
7471
9507
  };
9508
+ params: {
9509
+ userId: string;
9510
+ };
9511
+ query: Record<string, unknown>;
7472
9512
  response: {
7473
9513
  data?: {
7474
9514
  new_role?: string;
@@ -7488,6 +9528,8 @@ interface getTrackingPublicKeyOperation {
7488
9528
  readonly path: "/v1/partner/tracking/.well-known/public-key";
7489
9529
  readonly method: "GET";
7490
9530
  request: never;
9531
+ params: Record<string, unknown>;
9532
+ query: Record<string, unknown>;
7491
9533
  response: {
7492
9534
  data?: {
7493
9535
  /** Signature algorithm (ed25519 for public key, sha256 for HMAC fallback) */
@@ -7535,6 +9577,8 @@ interface recordTrackingBatchOperation {
7535
9577
  timestamp?: string;
7536
9578
  }>;
7537
9579
  };
9580
+ params: Record<string, unknown>;
9581
+ query: Record<string, unknown>;
7538
9582
  response: {
7539
9583
  data?: {
7540
9584
  /** Number of duplicate impressions skipped */
@@ -7569,6 +9613,11 @@ interface getUsageSummaryOperation {
7569
9613
  readonly path: "/v1/partner/usage";
7570
9614
  readonly method: "GET";
7571
9615
  request: never;
9616
+ params: Record<string, unknown>;
9617
+ query: {
9618
+ end_date?: string;
9619
+ start_date?: string;
9620
+ };
7572
9621
  response: {
7573
9622
  /** Average response time in milliseconds */
7574
9623
  avgResponseTime?: number;
@@ -7603,6 +9652,8 @@ interface getUsageDashboardOperation {
7603
9652
  readonly path: "/v1/partner/usage/dashboard";
7604
9653
  readonly method: "GET";
7605
9654
  request: never;
9655
+ params: Record<string, unknown>;
9656
+ query: Record<string, unknown>;
7606
9657
  response: {
7607
9658
  last_7_days?: {
7608
9659
  avg_response_ms?: number;
@@ -7647,6 +9698,8 @@ interface getRateLimitStatusOperation {
7647
9698
  readonly path: "/v1/partner/usage/rate-limit";
7648
9699
  readonly method: "GET";
7649
9700
  request: never;
9701
+ params: Record<string, unknown>;
9702
+ query: Record<string, unknown>;
7650
9703
  response: {
7651
9704
  current_rate?: number;
7652
9705
  max_rate?: number;
@@ -7665,6 +9718,11 @@ interface getVastConfigOperation {
7665
9718
  readonly path: "/v1/partner/vast/config";
7666
9719
  readonly method: "GET";
7667
9720
  request: never;
9721
+ params: Record<string, unknown>;
9722
+ query: {
9723
+ device_id?: string;
9724
+ screen_id?: string;
9725
+ };
7668
9726
  response: {
7669
9727
  data?: {
7670
9728
  /** Google Ad Manager ad unit path */
@@ -7709,6 +9767,12 @@ interface getVenuesNearbyOperation {
7709
9767
  readonly path: "/v1/partner/venues/nearby";
7710
9768
  readonly method: "GET";
7711
9769
  request: never;
9770
+ params: Record<string, unknown>;
9771
+ query: {
9772
+ lat: number;
9773
+ lng: number;
9774
+ radius_km?: number;
9775
+ };
7712
9776
  response: {
7713
9777
  count?: number;
7714
9778
  venues?: Array<{
@@ -7726,6 +9790,12 @@ interface getVenueAtmosphereOperation {
7726
9790
  readonly path: "/v1/partner/venues/{screenId}/atmosphere";
7727
9791
  readonly method: "GET";
7728
9792
  request: never;
9793
+ params: {
9794
+ screenId: string;
9795
+ };
9796
+ query: {
9797
+ days?: number;
9798
+ };
7729
9799
  response: {
7730
9800
  days?: number;
7731
9801
  dominant_ambience?: string;
@@ -7743,6 +9813,12 @@ interface getVenueTrafficOperation {
7743
9813
  readonly path: "/v1/partner/venues/{screenId}/traffic";
7744
9814
  readonly method: "GET";
7745
9815
  request: never;
9816
+ params: {
9817
+ screenId: string;
9818
+ };
9819
+ query: {
9820
+ days?: number;
9821
+ };
7746
9822
  response: {
7747
9823
  daily?: Array<Record<string, unknown>>;
7748
9824
  hourly?: Array<{
@@ -7760,6 +9836,14 @@ interface getVenueIntelligenceOperation {
7760
9836
  readonly path: "/v1/partner/venues/{venueId}/intelligence";
7761
9837
  readonly method: "GET";
7762
9838
  request: never;
9839
+ params: {
9840
+ venueId: string;
9841
+ };
9842
+ query: {
9843
+ from: string;
9844
+ interval?: "5min" | "15min" | "1h" | "1d";
9845
+ to: string;
9846
+ };
7763
9847
  response: {
7764
9848
  dedup?: {
7765
9849
  camera_count?: number;
@@ -7811,6 +9895,8 @@ interface listWebhooksOperation {
7811
9895
  readonly path: "/v1/partner/webhooks";
7812
9896
  readonly method: "GET";
7813
9897
  request: never;
9898
+ params: Record<string, unknown>;
9899
+ query: Record<string, unknown>;
7814
9900
  response: {
7815
9901
  data?: {
7816
9902
  webhooks?: Array<Webhook>;
@@ -7827,10 +9913,12 @@ interface createWebhookOperation {
7827
9913
  readonly method: "POST";
7828
9914
  request: {
7829
9915
  /** 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">;
9916
+ 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
9917
  /** Webhook endpoint URL (HTTPS required in production) */
7832
9918
  url: string;
7833
9919
  };
9920
+ params: Record<string, unknown>;
9921
+ query: Record<string, unknown>;
7834
9922
  response: {
7835
9923
  data?: {
7836
9924
  events?: Array<string>;
@@ -7852,6 +9940,10 @@ interface deleteWebhookOperation {
7852
9940
  readonly path: "/v1/partner/webhooks/{webhookId}";
7853
9941
  readonly method: "DELETE";
7854
9942
  request: never;
9943
+ params: {
9944
+ webhookId: string;
9945
+ };
9946
+ query: Record<string, unknown>;
7855
9947
  response: {
7856
9948
  message?: string;
7857
9949
  success?: boolean;
@@ -7865,10 +9957,14 @@ interface updateWebhookOperation {
7865
9957
  readonly path: "/v1/partner/webhooks/{webhookId}";
7866
9958
  readonly method: "PATCH";
7867
9959
  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">;
9960
+ 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
9961
  status?: "active" | "inactive";
7870
9962
  url?: string;
7871
9963
  };
9964
+ params: {
9965
+ webhookId: string;
9966
+ };
9967
+ query: Record<string, unknown>;
7872
9968
  response: {
7873
9969
  data?: Webhook;
7874
9970
  message?: string;
@@ -7883,6 +9979,12 @@ interface getWebhookDeliveriesOperation {
7883
9979
  readonly path: "/v1/partner/webhooks/{webhookId}/deliveries";
7884
9980
  readonly method: "GET";
7885
9981
  request: never;
9982
+ params: {
9983
+ webhookId: string;
9984
+ };
9985
+ query: {
9986
+ limit?: number;
9987
+ };
7886
9988
  response: {
7887
9989
  data?: {
7888
9990
  deliveries?: Array<WebhookDelivery>;
@@ -7898,6 +10000,10 @@ interface testWebhookOperation {
7898
10000
  readonly path: "/v1/partner/webhooks/{webhookId}/test";
7899
10001
  readonly method: "POST";
7900
10002
  request: never;
10003
+ params: {
10004
+ webhookId: string;
10005
+ };
10006
+ query: Record<string, unknown>;
7901
10007
  response: {
7902
10008
  data?: {
7903
10009
  error?: string;
@@ -7916,6 +10022,11 @@ interface playgroundDryRunOperation {
7916
10022
  readonly path: "/v1/playground/{operation_id}";
7917
10023
  readonly method: "POST";
7918
10024
  request: never;
10025
+ params: {
10026
+ /** The operationId of the endpoint to validate against. */
10027
+ operation_id: string;
10028
+ };
10029
+ query: Record<string, unknown>;
7919
10030
  response: PlaygroundResult;
7920
10031
  }
7921
10032
  /**
@@ -7926,15 +10037,20 @@ interface getRequestMetadataOperation {
7926
10037
  readonly path: "/v1/requests/{request_id}";
7927
10038
  readonly method: "GET";
7928
10039
  request: never;
10040
+ params: {
10041
+ /** Server-generated request ID to look up. */
10042
+ request_id: string;
10043
+ };
10044
+ query: Record<string, unknown>;
7929
10045
  response: RequestMetadataResponse;
7930
10046
  }
7931
10047
  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"];
10048
+ readonly schemaCount: 191;
10049
+ readonly operationCount: 237;
10050
+ 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", "DataApi_AggregateResponse", "DataApi_Error", "DataApi_ErrorCode", "DataApi_ExampleHealthcheckResponse", "DataApi_FeedbackRewardQuery", "DataApi_LookalikeResponse", "DataApi_QueryDslBody", "DataApi_QueryDslResponse", "DataApi_QueryFilter", "DataApi_QueryOrderBy", "DataApi_ScreenAudienceResponse", "DataApi_ScreenHistoryResponse", "DataApi_ScreensListResponse", "DataApi_SemanticSearchResponse", "DataApi_StatsResponse", "DataApi_StreamResponse", "DataApi_UsageResponse", "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", "Mcp_create_media_buy_Args", "Mcp_discover_inventory_Args", "Mcp_get_media_buy_delivery_Args", "Mcp_get_media_buys_Args", "Mcp_get_products_Args", "Mcp_list_accounts_Args", "Mcp_sync_accounts_Args", "Mcp_sync_creatives_Args", "Mcp_update_media_buy_Args", "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"];
10051
+ readonly operations: readonly ["queryChangelog", "dataApiAggregate", "dataApiLookalikeScreens", "dataApiQueryDsl", "dataApiListScreens", "dataApiScreenAudienceLive", "dataApiScreenAudienceHistory", "dataApiSemanticSearch", "dataApiStats", "dataApiStream", "dataApiUsage", "listErrorCodes", "getErrorCode", "exampleHealthcheck", "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
10052
  };
7937
10053
  type GeneratedSchemaName = (typeof generatedTypes.schemas)[number];
7938
10054
  type GeneratedOperationName = (typeof generatedTypes.operations)[number];
7939
10055
 
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 };
10056
+ 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 DataApi_AggregateResponse, type DataApi_Error, type DataApi_ErrorCode, type DataApi_ExampleHealthcheckResponse, type DataApi_FeedbackRewardQuery, type DataApi_LookalikeResponse, type DataApi_QueryDslBody, type DataApi_QueryDslResponse, type DataApi_QueryFilter, type DataApi_QueryOrderBy, type DataApi_ScreenAudienceResponse, type DataApi_ScreenHistoryResponse, type DataApi_ScreensListResponse, type DataApi_SemanticSearchResponse, type DataApi_StatsResponse, type DataApi_StreamResponse, type DataApi_UsageResponse, 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 Mcp_create_media_buy_Args, type Mcp_discover_inventory_Args, type Mcp_get_media_buy_delivery_Args, type Mcp_get_media_buys_Args, type Mcp_get_products_Args, type Mcp_list_accounts_Args, type Mcp_sync_accounts_Args, type Mcp_sync_creatives_Args, type Mcp_update_media_buy_Args, 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 dataApiAggregateOperation, type dataApiListScreensOperation, type dataApiLookalikeScreensOperation, type dataApiQueryDslOperation, type dataApiScreenAudienceHistoryOperation, type dataApiScreenAudienceLiveOperation, type dataApiSemanticSearchOperation, type dataApiStatsOperation, type dataApiStreamOperation, type dataApiUsageOperation, type deleteAudienceSegmentOperation, type deleteDeviceOperation, type deletePartnerDefaultStreamOperation, type deletePartnerSensingRouteOperation, type deleteScreenGroupOperation, type deleteWebhookOperation, type deployScreenSensingProfileOperation, type disableSelfPromoAdOperation, type estimateSegmentReachOperation, type exampleHealthcheckOperation, 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 };