@lessly/sdk-app 85.0.0 → 86.0.0

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.
@@ -96072,332 +96072,6 @@ export interface OrganizationYoutubeInstallInput {
96072
96072
  export interface OrganizationYoutubeInstallOutput {
96073
96073
  url: string;
96074
96074
  }
96075
- export interface PlaygroundAnalyticsOverviewInput {
96076
- /**
96077
- * Max records per entity in recent[]; omit for the endpoint default
96078
- */
96079
- limit?: number;
96080
- }
96081
- export interface PlaygroundAnalyticsOverviewOutput {
96082
- ok: boolean;
96083
- minted: boolean;
96084
- overview?: unknown;
96085
- http_status: number;
96086
- }
96087
- export interface PlaygroundBillingEntitlementsInput {
96088
- }
96089
- export interface PlaygroundBillingEntitlementsOutput {
96090
- ok: boolean;
96091
- minted: boolean;
96092
- http_status: number;
96093
- entitlements?: unknown;
96094
- }
96095
- export interface PlaygroundBillingRecordUsageInput {
96096
- /**
96097
- * Quantity of events to record against playground-events (SUM); defaults to 1
96098
- */
96099
- value?: number;
96100
- }
96101
- export interface PlaygroundBillingRecordUsageOutput {
96102
- minted: boolean;
96103
- accepted: (number | null);
96104
- recorded: boolean;
96105
- duplicates: (number | null);
96106
- http_status: number;
96107
- }
96108
- export interface PlaygroundClickupCreateTaskInput {
96109
- /**
96110
- * Task title; defaults to a fixture label
96111
- */
96112
- name?: string;
96113
- /**
96114
- * ClickUp list id; falls back to CLICKUP_TEST_LIST_ID
96115
- */
96116
- listId?: string;
96117
- }
96118
- export interface PlaygroundClickupCreateTaskOutput {
96119
- minted: boolean;
96120
- task_id: (string | null);
96121
- list_status: number;
96122
- vend_status: number;
96123
- clickup_status: number;
96124
- installation_count: number;
96125
- }
96126
- export interface PlaygroundClickupGetLastWebhookInput {
96127
- }
96128
- export type PlaygroundClickupGetLastWebhookOutput = ({
96129
- payload: string;
96130
- event_id: string;
96131
- provider: string;
96132
- verified: boolean;
96133
- product_id: string;
96134
- occurred_at: string;
96135
- connector_id: string;
96136
- clickup_event: (string | null);
96137
- receipt_count: number;
96138
- } | {
96139
- found: false;
96140
- });
96141
- export interface PlaygroundClickupGetOverviewInput {
96142
- }
96143
- export interface PlaygroundClickupGetOverviewOutput {
96144
- team: ({
96145
- teamId: string;
96146
- teamName: string;
96147
- } | null);
96148
- lists: PlaygroundClickupGetOverviewOutputItems[];
96149
- tasks: {
96150
- id: string;
96151
- name: string;
96152
- status: (string | null);
96153
- }[];
96154
- minted: boolean;
96155
- spaces: PlaygroundClickupGetOverviewOutputItems[];
96156
- list_status: number;
96157
- vend_status: number;
96158
- lists_status: number;
96159
- tasks_status: number;
96160
- spaces_status: number;
96161
- folders_status: number;
96162
- installation_count: number;
96163
- }
96164
- export interface PlaygroundClickupGetOverviewOutputItems {
96165
- id: string;
96166
- name: string;
96167
- }
96168
- export interface PlaygroundEchoPingInput {
96169
- /**
96170
- * The text to echo back, 1–1024 characters
96171
- */
96172
- message: string;
96173
- }
96174
- export interface PlaygroundEchoPingOutput {
96175
- /**
96176
- * The message exactly as it was received
96177
- */
96178
- message: string;
96179
- /**
96180
- * The product the call was resolved to
96181
- */
96182
- productId: string;
96183
- /**
96184
- * ISO-8601 instant (UTC) at which the call reached the service
96185
- */
96186
- receivedAt: string;
96187
- }
96188
- export interface PlaygroundGdriveGetLastChangeInput {
96189
- }
96190
- export type PlaygroundGdriveGetLastChangeOutput = ({
96191
- file_id: string;
96192
- removed: boolean;
96193
- file_name: (string | null);
96194
- mime_type: (string | null);
96195
- product_id: string;
96196
- occurred_at: string;
96197
- connector_id: string;
96198
- resource_state: string;
96199
- } | {
96200
- found: false;
96201
- });
96202
- export interface PlaygroundGdriveReadFileInput {
96203
- /**
96204
- * Drive file id; falls back to GDRIVE_TEST_FILE_ID, then the first picked file
96205
- */
96206
- fileId?: string;
96207
- }
96208
- export interface PlaygroundGdriveReadFileOutput {
96209
- minted: boolean;
96210
- file_id: (string | null);
96211
- file_name: (string | null);
96212
- mime_type: (string | null);
96213
- file_count: number;
96214
- get_status: number;
96215
- list_status: number;
96216
- vend_status: number;
96217
- content_bytes: (number | null);
96218
- }
96219
- export interface PlaygroundGoogleadsReadCustomerInput {
96220
- }
96221
- export interface PlaygroundGoogleadsReadCustomerOutput {
96222
- minted: boolean;
96223
- vended: boolean;
96224
- customer_id: (string | null);
96225
- vend_status: number;
96226
- result_count: number;
96227
- search_status: number;
96228
- login_customer_id: (string | null);
96229
- }
96230
- export interface PlaygroundLifecycleGetStateInput {
96231
- }
96232
- export interface PlaygroundLifecycleGetStateOutput {
96233
- blocked: boolean;
96234
- archived: boolean;
96235
- productId: string;
96236
- lastBlockTransition: ({
96237
- eventId: string;
96238
- eventName: string;
96239
- productId: string;
96240
- occurredAt: string;
96241
- recordedAt: string;
96242
- receiptCount: number;
96243
- organizationId: string;
96244
- cascadedFromOrg: boolean;
96245
- } | null);
96246
- lastArchiveTransition: ({
96247
- eventId: string;
96248
- eventName: string;
96249
- productId: string;
96250
- occurredAt: string;
96251
- recordedAt: string;
96252
- receiptCount: number;
96253
- organizationId: string;
96254
- cascadedFromOrg: boolean;
96255
- } | null);
96256
- }
96257
- export interface PlaygroundLifecycleListEventsInput {
96258
- }
96259
- export type PlaygroundLifecycleListEventsOutput = {
96260
- eventId: string;
96261
- eventName: string;
96262
- productId: string;
96263
- occurredAt: string;
96264
- recordedAt: string;
96265
- receiptCount: number;
96266
- organizationId: string;
96267
- cascadedFromOrg: boolean;
96268
- }[];
96269
- export interface PlaygroundWebhookGetLastInput {
96270
- }
96271
- export type PlaygroundWebhookGetLastOutput = ({
96272
- payload?: unknown;
96273
- event_id: string;
96274
- provider: string;
96275
- verified: boolean;
96276
- product_id: string;
96277
- occurred_at: string;
96278
- connector_id: string;
96279
- delivery_count: number;
96280
- } | {
96281
- found: false;
96282
- });
96283
- export interface PlaygroundWorkflowEchoInput {
96284
- /**
96285
- * The text to store, 1–1024 characters
96286
- */
96287
- note: string;
96288
- /**
96289
- * Optional labels stored alongside the note, at most 20
96290
- *
96291
- * @maxItems 20
96292
- */
96293
- tags?: [] | [string] | [string, string] | [string, string, string] | [string, string, string, string] | [string, string, string, string, string] | [string, string, string, string, string, string] | [string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string];
96294
- }
96295
- export interface PlaygroundWorkflowEchoOutput {
96296
- /**
96297
- * Identifier of the stored echo
96298
- */
96299
- id: string;
96300
- /**
96301
- * The note exactly as it was received
96302
- */
96303
- note: string;
96304
- /**
96305
- * The tags exactly as they were received
96306
- */
96307
- tags: string[];
96308
- /**
96309
- * Correlation id for this echo. The playground/workflow.echoed event published about two seconds later repeats it, which is how a composer matches the completion back to this step.
96310
- */
96311
- echo_id: string;
96312
- /**
96313
- * ISO-8601 instant (UTC) at which the echo was stored
96314
- */
96315
- received_at: string;
96316
- }
96317
- export interface PlaygroundWorkflowEchoListInput {
96318
- }
96319
- export type PlaygroundWorkflowEchoListOutput = {
96320
- /**
96321
- * Identifier of the stored echo
96322
- */
96323
- id: string;
96324
- /**
96325
- * The note exactly as it was received
96326
- */
96327
- note: string;
96328
- /**
96329
- * The tags exactly as they were received
96330
- */
96331
- tags: string[];
96332
- /**
96333
- * ISO-8601 instant (UTC) at which the echo was stored
96334
- */
96335
- received_at: string;
96336
- }[];
96337
- export interface PlaygroundWorkflowPingInput {
96338
- /**
96339
- * Class of ping, echoed on the emitted event and filterable on the trigger. Defaults to 'manual'.
96340
- */
96341
- kind?: string;
96342
- }
96343
- export interface PlaygroundWorkflowPingOutput {
96344
- /**
96345
- * Correlation id for this ping. The emitted playground/workflow.ping event repeats it, which is how a composer matches the event back to this step.
96346
- */
96347
- id: string;
96348
- /**
96349
- * The name of the event that was published
96350
- */
96351
- event: string;
96352
- }
96353
- export interface PlaygroundWorkflowSubjectsListInput {
96354
- /**
96355
- * How many subjects to return, 1–100. Defaults to 25.
96356
- */
96357
- limit?: number;
96358
- /**
96359
- * The next_cursor of the previous page. Opaque — pass it back unchanged. Omit for the first page.
96360
- */
96361
- cursor?: string;
96362
- /**
96363
- * ISO-8601 UTC instant. Return only subjects whose last_activity_at is AT OR AFTER this — the opposite question, the recently active population. Omit for no lower bound.
96364
- */
96365
- last_activity_after?: string;
96366
- /**
96367
- * ISO-8601 UTC instant. Return only subjects whose last_activity_at is AT OR BEFORE this — the "inactive for N days" question: pass now minus N days. Omit for no upper bound.
96368
- */
96369
- last_activity_before?: string;
96370
- }
96371
- export interface PlaygroundWorkflowSubjectsListOutput {
96372
- /**
96373
- * This page of subjects, most recently active first
96374
- */
96375
- items: {
96376
- /**
96377
- * Stable identifier for the subject. This is the field a batch trigger keys on, so a subject already served in an earlier run is skipped rather than served twice.
96378
- */
96379
- subject_key: string;
96380
- /**
96381
- * Human-readable name of the subject
96382
- */
96383
- display_name: string;
96384
- /**
96385
- * ISO-8601 instant (UTC) of the subject last activity
96386
- */
96387
- last_activity_at: string;
96388
- }[];
96389
- /**
96390
- * Whether another page follows. False and a null next_cursor both mark the last page, so a consumer that loops on either terminates.
96391
- */
96392
- has_more: boolean;
96393
- /**
96394
- * Pass back as `cursor` to fetch the next page; null on the last page. Always null when has_more is false.
96395
- */
96396
- next_cursor: (string | null);
96397
- }
96398
- export interface PlaygroundWsEchoInput {
96399
- }
96400
- export type PlaygroundWsEchoOutput = unknown;
96401
96075
  export interface RealtimeArchiveExportInput {
96402
96076
  /**
96403
96077
  * Only entries with ts <= to_ts (epoch ms)
@@ -119350,267 +119024,87 @@ export interface SupportWebhookUpdateOutput {
119350
119024
  secretPrefix: string;
119351
119025
  }
119352
119026
  export interface TrackingDomainsCreateInput {
119353
- /**
119354
- * Bare hostname to serve tracking from, which must sit under the chosen domain (e.g. analytics.example.com); a suggestion is used when omitted
119355
- */
119356
119027
  host?: string;
119357
- /**
119358
- * DNS records to request instead of the default CNAME to the tracking edge; leave unset unless the domain needs custom records
119359
- */
119360
119028
  records?: {
119361
- /**
119362
- * Time-to-live in seconds the record should be published with; the platform picks one when omitted
119363
- */
119364
119029
  ttl?: number;
119365
- /**
119366
- * Fully-qualified host the record is published at; defaults to the claimed tracking host
119367
- */
119368
119030
  name?: string;
119369
- /**
119370
- * Value the record points at — the edge hostname for a CNAME, the proof string for a TXT
119371
- */
119372
119031
  target: string;
119373
- /**
119374
- * DNS record type to publish, e.g. CNAME or TXT
119375
- */
119376
119032
  recordType: string;
119377
119033
  }[];
119378
- /**
119379
- * Product domain to claim the tracking host under, as listed in `domains[].domainId` by tracking_domains_list
119380
- */
119381
119034
  domainId: string;
119382
119035
  }
119383
119036
  export interface TrackingDomainsCreateOutput {
119384
- /**
119385
- * The binding as just claimed; it starts `pending` and goes `active` once the DNS is observed live
119386
- */
119387
119037
  binding: {
119388
- /**
119389
- * Fully-qualified tracking host this binding serves, e.g. analytics.example.com
119390
- */
119391
119038
  host: string;
119392
- /**
119393
- * Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
119394
- */
119395
119039
  status: ("pending" | "active" | "failed");
119396
- /**
119397
- * DNS records the platform expects to see published for this host, as returned when the binding was claimed
119398
- */
119399
119040
  records: unknown[];
119400
- /**
119401
- * Product domain this tracking host sits under
119402
- */
119403
119041
  domainId: string;
119404
- /**
119405
- * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
119406
- */
119407
119042
  bindingId: string;
119408
- /**
119409
- * When the binding was claimed
119410
- */
119411
119043
  createdAt: string;
119412
- /**
119413
- * Product the binding belongs to
119414
- */
119415
119044
  productId: string;
119416
- /**
119417
- * When the binding last changed status or records
119418
- */
119419
119045
  updatedAt: string;
119420
- /**
119421
- * Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
119422
- */
119423
119046
  statusDetail: (string | null);
119424
- /**
119425
- * Extension that claimed the binding; tracking bindings are owned by this toolkit
119426
- */
119427
119047
  ownerExtension: string;
119428
119048
  };
119429
- /**
119430
- * Ordered, human-readable steps for publishing the DNS the claim needs; empty when the platform manages the domain itself
119431
- */
119432
119049
  instructions: string[];
119433
119050
  }
119434
119051
  export interface TrackingDomainsDeleteInput {
119435
- /**
119436
- * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
119437
- */
119438
119052
  bindingId: string;
119439
119053
  }
119440
119054
  export interface TrackingDomainsDeleteOutput {
119441
- /**
119442
- * Always true — the release succeeded; a failure arrives as an error, not as false
119443
- */
119444
119055
  ok: true;
119445
119056
  }
119446
119057
  export interface TrackingDomainsGetInput {
119447
- /**
119448
- * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
119449
- */
119450
119058
  bindingId: string;
119451
119059
  }
119452
119060
  export interface TrackingDomainsGetOutput {
119453
- /**
119454
- * Fully-qualified tracking host this binding serves, e.g. analytics.example.com
119455
- */
119456
119061
  host: string;
119457
- /**
119458
- * Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
119459
- */
119460
119062
  status: ("pending" | "active" | "failed");
119461
- /**
119462
- * DNS records the platform expects to see published for this host, as returned when the binding was claimed
119463
- */
119464
119063
  records: unknown[];
119465
- /**
119466
- * Product domain this tracking host sits under
119467
- */
119468
119064
  domainId: string;
119469
- /**
119470
- * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
119471
- */
119472
119065
  bindingId: string;
119473
- /**
119474
- * When the binding was claimed
119475
- */
119476
119066
  createdAt: string;
119477
- /**
119478
- * Product the binding belongs to
119479
- */
119480
119067
  productId: string;
119481
- /**
119482
- * When the binding last changed status or records
119483
- */
119484
119068
  updatedAt: string;
119485
- /**
119486
- * Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
119487
- */
119488
119069
  statusDetail: (string | null);
119489
- /**
119490
- * Extension that claimed the binding; tracking bindings are owned by this toolkit
119491
- */
119492
119070
  ownerExtension: string;
119493
119071
  }
119494
119072
  export interface TrackingDomainsListInput {
119495
119073
  }
119496
119074
  export interface TrackingDomainsListOutput {
119497
- /**
119498
- * The product's domains as the platform vouches for them — the set a new tracking host may be claimed under
119499
- */
119500
119075
  domains: {
119501
- /**
119502
- * Who runs the DNS: `managed` means the platform publishes records for you, `external` means you publish them yourself
119503
- */
119504
119076
  mode: ("external" | "managed");
119505
- /**
119506
- * Apex domain name the product owns, e.g. example.com
119507
- */
119508
119077
  domain: string;
119509
- /**
119510
- * Stable platform id of the product domain, and what a claim takes as its `domainId`
119511
- */
119512
119078
  domainId: string;
119513
- /**
119514
- * ISO-8601 timestamp of when the domain was added to the product
119515
- */
119516
119079
  createdAt: string;
119517
- /**
119518
- * How many extensions currently hold a host binding under this domain
119519
- */
119520
119080
  extensionCount: number;
119521
119081
  }[];
119522
- /**
119523
- * Tracking-host bindings this toolkit currently holds across those domains
119524
- */
119525
119082
  bindings: {
119526
- /**
119527
- * Fully-qualified tracking host this binding serves, e.g. analytics.example.com
119528
- */
119529
119083
  host: string;
119530
- /**
119531
- * Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
119532
- */
119533
119084
  status: ("pending" | "active" | "failed");
119534
- /**
119535
- * DNS records the platform expects to see published for this host, as returned when the binding was claimed
119536
- */
119537
119085
  records: unknown[];
119538
- /**
119539
- * Product domain this tracking host sits under
119540
- */
119541
119086
  domainId: string;
119542
- /**
119543
- * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
119544
- */
119545
119087
  bindingId: string;
119546
- /**
119547
- * When the binding was claimed
119548
- */
119549
119088
  createdAt: string;
119550
- /**
119551
- * Product the binding belongs to
119552
- */
119553
119089
  productId: string;
119554
- /**
119555
- * When the binding last changed status or records
119556
- */
119557
119090
  updatedAt: string;
119558
- /**
119559
- * Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
119560
- */
119561
119091
  statusDetail: (string | null);
119562
- /**
119563
- * Extension that claimed the binding; tracking bindings are owned by this toolkit
119564
- */
119565
119092
  ownerExtension: string;
119566
119093
  }[];
119567
119094
  }
119568
119095
  export interface TrackingDomainsVerifyInput {
119569
- /**
119570
- * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
119571
- */
119572
119096
  bindingId: string;
119573
119097
  }
119574
119098
  export interface TrackingDomainsVerifyOutput {
119575
- /**
119576
- * Fully-qualified tracking host this binding serves, e.g. analytics.example.com
119577
- */
119578
119099
  host: string;
119579
- /**
119580
- * Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
119581
- */
119582
119100
  status: ("pending" | "active" | "failed");
119583
- /**
119584
- * DNS records the platform expects to see published for this host, as returned when the binding was claimed
119585
- */
119586
119101
  records: unknown[];
119587
- /**
119588
- * Product domain this tracking host sits under
119589
- */
119590
119102
  domainId: string;
119591
- /**
119592
- * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
119593
- */
119594
119103
  bindingId: string;
119595
- /**
119596
- * When the binding was claimed
119597
- */
119598
119104
  createdAt: string;
119599
- /**
119600
- * Product the binding belongs to
119601
- */
119602
119105
  productId: string;
119603
- /**
119604
- * When the binding last changed status or records
119605
- */
119606
119106
  updatedAt: string;
119607
- /**
119608
- * Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
119609
- */
119610
119107
  statusDetail: (string | null);
119611
- /**
119612
- * Extension that claimed the binding; tracking bindings are owned by this toolkit
119613
- */
119614
119108
  ownerExtension: string;
119615
119109
  }
119616
119110
  export interface TrackingEventNamesArchiveInput {
@@ -119620,13 +119114,7 @@ export interface TrackingEventNamesArchiveInput {
119620
119114
  name: string;
119621
119115
  }
119622
119116
  export interface TrackingEventNamesArchiveOutput {
119623
- /**
119624
- * Event name whose status was changed
119625
- */
119626
119117
  name: string;
119627
- /**
119628
- * The status as it now stands: `archived` hides the name from pickers and reports, `active` restores it
119629
- */
119630
119118
  status: ("active" | "archived");
119631
119119
  }
119632
119120
  export interface TrackingEventNamesListInput {
@@ -119648,37 +119136,13 @@ export interface TrackingEventNamesListInput {
119648
119136
  status?: ("active" | "archived");
119649
119137
  }
119650
119138
  export interface TrackingEventNamesListOutput {
119651
- /**
119652
- * The matching catalogue entries, ordered by the requested sort
119653
- */
119654
119139
  names: {
119655
- /**
119656
- * Event name exactly as the tracking script sends it — the string other tools take as their `event`
119657
- */
119658
119140
  name: string;
119659
- /**
119660
- * How many events with this name have been received in total
119661
- */
119662
119141
  count: number;
119663
- /**
119664
- * `active` for a name in use, `archived` for one hidden from pickers and reports
119665
- */
119666
119142
  status: string;
119667
- /**
119668
- * ISO-8601 timestamp of the most recent event received under this name
119669
- */
119670
119143
  lastSeen: string;
119671
- /**
119672
- * ISO-8601 timestamp of the first event ever received under this name
119673
- */
119674
119144
  firstSeen: string;
119675
- /**
119676
- * Property keys sampled from recent events with this name, so you can see what the payload carries
119677
- */
119678
119145
  propsKeys: string[];
119679
- /**
119680
- * Whether this name is marked a conversion, which is what makes it available as a workflow trigger
119681
- */
119682
119146
  isConversion: boolean;
119683
119147
  }[];
119684
119148
  }
@@ -119693,13 +119157,7 @@ export interface TrackingEventNamesSetConversionInput {
119693
119157
  isConversion: boolean;
119694
119158
  }
119695
119159
  export interface TrackingEventNamesSetConversionOutput {
119696
- /**
119697
- * Event name the conversion flag was applied to
119698
- */
119699
119160
  name: string;
119700
- /**
119701
- * The flag as it now stands after the change
119702
- */
119703
119161
  isConversion: boolean;
119704
119162
  }
119705
119163
  export interface TrackingEventNamesUnarchiveInput {
@@ -119709,44 +119167,20 @@ export interface TrackingEventNamesUnarchiveInput {
119709
119167
  name: string;
119710
119168
  }
119711
119169
  export interface TrackingEventNamesUnarchiveOutput {
119712
- /**
119713
- * Event name whose status was changed
119714
- */
119715
119170
  name: string;
119716
- /**
119717
- * The status as it now stands: `archived` hides the name from pickers and reports, `active` restores it
119718
- */
119719
119171
  status: ("active" | "archived");
119720
119172
  }
119721
119173
  export interface TrackingGoogleadsConnectionStatusInput {
119722
119174
  }
119723
119175
  export type TrackingGoogleadsConnectionStatusOutput = ({
119724
- /**
119725
- * Where the Google Ads connection stands: connected means an account is chosen and its credential works, so the other tools will run.
119726
- */
119727
119176
  state: "connected";
119728
- /**
119729
- * The Google Ads account the data is read from and conversions are written to, as a customer id. Only present while connected.
119730
- */
119731
119177
  customerId: string;
119732
- /**
119733
- * The manager account the connection authenticates through, as a Google customer id. Same as customerId when the account is not managed. Only present while connected.
119734
- */
119735
119178
  loginCustomerId: string;
119736
119179
  } | {
119737
- /**
119738
- * Google is authorised but nobody has picked which Google Ads account to use yet, so nothing can run until someone does.
119739
- */
119740
119180
  state: "pending_account_selection";
119741
119181
  } | {
119742
- /**
119743
- * The Google authorisation expired or was revoked and has to be granted again before anything can run.
119744
- */
119745
119182
  state: "reauth_required";
119746
119183
  } | {
119747
- /**
119748
- * No Google Ads connection has been set up for this product at all.
119749
- */
119750
119184
  state: "not_connected";
119751
119185
  });
119752
119186
  export interface TrackingGoogleadsConversionActionsInput {
@@ -119761,77 +119195,26 @@ export type TrackingGoogleadsConversionActionsOutput = {
119761
119195
  export interface TrackingGoogleadsFeedbackConfigGetInput {
119762
119196
  }
119763
119197
  export interface TrackingGoogleadsFeedbackConfigGetOutput {
119764
- /**
119765
- * How the uploads coexist with the account's own tag: existing_pixel means the Google tag also records these conversions, so send only to actions the tag does not already cover; fresh_pixel means these uploads are the only source.
119766
- */
119767
119198
  mode: ("existing_pixel" | "fresh_pixel");
119768
- /**
119769
- * Which tracked events become which Google Ads conversion action, and where each one takes its money value from. Disabled rules stay listed.
119770
- */
119771
119199
  rules: {
119772
- /**
119773
- * Tracked event-name this rule uploads, as listed by tracking_event-names_list
119774
- */
119775
119200
  event: string;
119776
- /**
119777
- * What monetary value is reported to Google for each conversion this rule uploads
119778
- */
119779
119201
  value: ({
119780
- /**
119781
- * Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
119782
- */
119783
119202
  source: "revenue";
119784
119203
  } | {
119785
- /**
119786
- * Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
119787
- */
119788
119204
  source: "dynamic";
119789
119205
  } | {
119790
- /**
119791
- * Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
119792
- */
119793
119206
  source: "fixed";
119794
- /**
119795
- * ISO-4217 currency the fixed amount is denominated in, e.g. USD
119796
- */
119797
119207
  currency: string;
119798
- /**
119799
- * The fixed value in minor units (e.g. cents); 0 means a value-less lead conversion
119800
- */
119801
119208
  amountMinor: number;
119802
119209
  });
119803
- /**
119804
- * Whether this single mapping is live; a disabled rule is kept but uploads nothing
119805
- */
119806
119210
  enabled: boolean;
119807
- /**
119808
- * Google conversion action the event is reported as, in the form customers/<cid>/conversionActions/<id>
119809
- */
119810
119211
  conversionAction: string;
119811
119212
  }[];
119812
- /**
119813
- * Whether conversions are being sent to Google Ads at all. False leaves every rule below in place but uploads nothing.
119814
- */
119815
119213
  enabled: boolean;
119816
- /**
119817
- * The tenant this configuration belongs to. Never supplied by a caller — it comes from the authenticated identity.
119818
- */
119819
119214
  productId: string;
119820
- /**
119821
- * How many days back each pass looks for conversions to send, and how far back a click may be matched. Google rejects clicks older than about 90 days.
119822
- */
119823
119215
  lookbackDays: number;
119824
- /**
119825
- * Currency of the connected Google Ads account, as a three-letter ISO 4217 code such as EUR. Null when the account could not be read.
119826
- */
119827
119216
  accountCurrency: (string | null);
119828
- /**
119829
- * The event names that may use the Dynamic value source, because revenue is known for them. Any other event needs a fixed amount.
119830
- */
119831
119217
  dynamicValueEvents: string[];
119832
- /**
119833
- * Whether a stored email or phone number is sent alongside the click, so Google can match conversions the click id alone would miss.
119834
- */
119835
119218
  enhancedConversions: boolean;
119836
119219
  }
119837
119220
  export interface TrackingGoogleadsFeedbackConfigSetInput {
@@ -119847,23 +119230,11 @@ export interface TrackingGoogleadsFeedbackConfigSetInput {
119847
119230
  * Any tracked event-name for this product (validated against the event-name catalog)
119848
119231
  */
119849
119232
  event: string;
119850
- /**
119851
- * What monetary value to report to Google for each conversion this rule uploads
119852
- */
119853
119233
  value: ({
119854
- /**
119855
- * Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
119856
- */
119857
119234
  source: "revenue";
119858
119235
  } | {
119859
- /**
119860
- * Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
119861
- */
119862
119236
  source: "dynamic";
119863
119237
  } | {
119864
- /**
119865
- * Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
119866
- */
119867
119238
  source: "fixed";
119868
119239
  /**
119869
119240
  * ISO-4217 currency code, e.g. USD
@@ -119874,9 +119245,6 @@ export interface TrackingGoogleadsFeedbackConfigSetInput {
119874
119245
  */
119875
119246
  amountMinor?: number;
119876
119247
  });
119877
- /**
119878
- * Whether this single mapping is live; a disabled rule is kept but uploads nothing
119879
- */
119880
119248
  enabled: boolean;
119881
119249
  /**
119882
119250
  * Google conversion action resource: customers/<cid>/conversionActions/<id>
@@ -119897,209 +119265,65 @@ export interface TrackingGoogleadsFeedbackConfigSetInput {
119897
119265
  enhancedConversions?: boolean;
119898
119266
  }
119899
119267
  export interface TrackingGoogleadsFeedbackConfigSetOutput {
119900
- /**
119901
- * The config as it now stands after the write, with server-side normalisation applied
119902
- */
119903
119268
  config: {
119904
- /**
119905
- * How our uploads sit beside your own tag: `existing_pixel` only fills gaps it left, `fresh_pixel` reports our data alone
119906
- */
119907
119269
  mode: ("existing_pixel" | "fresh_pixel");
119908
- /**
119909
- * The event-to-conversion-action mappings, each with its own value source
119910
- */
119911
119270
  rules: {
119912
- /**
119913
- * Tracked event-name this rule uploads, as listed by tracking_event-names_list
119914
- */
119915
119271
  event: string;
119916
- /**
119917
- * What monetary value is reported to Google for each conversion this rule uploads
119918
- */
119919
119272
  value: ({
119920
- /**
119921
- * Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
119922
- */
119923
119273
  source: "revenue";
119924
119274
  } | {
119925
- /**
119926
- * Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
119927
- */
119928
119275
  source: "dynamic";
119929
119276
  } | {
119930
- /**
119931
- * Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
119932
- */
119933
119277
  source: "fixed";
119934
- /**
119935
- * ISO-4217 currency the fixed amount is denominated in, e.g. USD
119936
- */
119937
119278
  currency: string;
119938
- /**
119939
- * The fixed value in minor units (e.g. cents); 0 means a value-less lead conversion
119940
- */
119941
119279
  amountMinor: number;
119942
119280
  });
119943
- /**
119944
- * Whether this single mapping is live; a disabled rule is kept but uploads nothing
119945
- */
119946
119281
  enabled: boolean;
119947
- /**
119948
- * Google conversion action the event is reported as, in the form customers/<cid>/conversionActions/<id>
119949
- */
119950
119282
  conversionAction: string;
119951
119283
  }[];
119952
- /**
119953
- * Master switch: with it off no rule uploads anything, however the individual rules are set
119954
- */
119955
119284
  enabled: boolean;
119956
- /**
119957
- * Product this conversion-feedback config belongs to
119958
- */
119959
119285
  productId: string;
119960
- /**
119961
- * How many days back a click may have happened and still be matched to a conversion (max 90)
119962
- */
119963
119286
  lookbackDays: number;
119964
- /**
119965
- * The connected Google Ads account's currency, best-effort; null or absent when it could not be read
119966
- */
119967
119287
  accountCurrency?: (string | null);
119968
- /**
119969
- * Whether hashed email and phone are sent alongside gclid as additional match keys, which raises match rates
119970
- */
119971
119288
  enhancedConversions: boolean;
119972
119289
  };
119973
- /**
119974
- * Plain-language safety notes about what this combination of mode and match keys will do to the connected account
119975
- */
119976
119290
  guidance: string[];
119977
119291
  }
119978
119292
  export interface TrackingGoogleadsFeedbackRunInput {
119979
119293
  }
119980
119294
  export interface TrackingGoogleadsFeedbackRunOutput {
119981
- /**
119982
- * This one upload pass. Match the completion event back to this step on it, not on productId: the daily cron pass and a manual run on the same day are two passes of the same product.
119983
- */
119984
- runId: string;
119985
- /**
119986
- * Rows Google rejected in this pass.
119987
- */
119988
119295
  failed: number;
119989
- /**
119990
- * Of those, the ones that had a usable click id and a value, so a payload was actually built for them.
119991
- */
119992
119296
  matched: number;
119993
- /**
119994
- * Conversions dropped because no Google click could be tied to the person. A high count here is a tagging problem, not a Google one.
119995
- */
119996
119297
  noGclid: number;
119997
- /**
119998
- * Present only when the pass did no work, and says why: feedback is switched off, no rule is enabled, or no Google Ads account is connected. Absent on a pass that ran.
119999
- */
120000
119298
  skipped?: ("disabled" | "no_rules" | "not_connected");
120001
- /**
120002
- * Conversions in the lookback window that an enabled rule applied to.
120003
- */
120004
119299
  selected: number;
120005
- /**
120006
- * Rows Google accepted in this pass.
120007
- */
120008
119300
  uploaded: number;
120009
- /**
120010
- * The tenant whose conversions this pass uploaded.
120011
- */
120012
119301
  productId: string;
120013
- /**
120014
- * Conversions held back because their money value had not landed yet. They are retried on a later pass.
120015
- */
120016
119302
  zeroValue: number;
120017
- /**
120018
- * Google's own rejection detail, passed through unchanged, when it refused part of the batch. Absent when it accepted everything.
120019
- */
120020
- partialFailureError?: {
120021
- [k: string]: unknown;
120022
- };
119303
+ partialFailureError?: unknown;
120023
119304
  }
120024
119305
  export interface TrackingGoogleadsFeedbackStatusInput {
120025
119306
  }
120026
119307
  export interface TrackingGoogleadsFeedbackStatusOutput {
120027
- /**
120028
- * How the uploads coexist with the account's own tag: existing_pixel means the Google tag also records these conversions; fresh_pixel means these uploads are the only source.
120029
- */
120030
119308
  mode: ("existing_pixel" | "fresh_pixel");
120031
- /**
120032
- * Rows Google has rejected since this product was connected, across every pass.
120033
- */
120034
119309
  failed: number;
120035
- /**
120036
- * Whether conversions are being sent to Google Ads at all.
120037
- */
120038
119310
  enabled: boolean;
120039
- /**
120040
- * Coverage of the most recent pass. Null when no pass has run for this product yet.
120041
- */
120042
119311
  lastRun: ({
120043
- /**
120044
- * When the last pass finished. Null when the stored summary predates this field.
120045
- */
120046
119312
  ranAt: (string | null);
120047
- /**
120048
- * Rows Google rejected. Anything above zero is what makes the status partial.
120049
- */
120050
119313
  failed: number;
120051
- /**
120052
- * How the pass ended: ok is a clean pass, partial means Google rejected some rows and accepted others, not_connected means no Google Ads account was reachable and nothing was sent.
120053
- */
120054
119314
  status: ("ok" | "partial" | "not_connected");
120055
- /**
120056
- * Of those, the ones that had a usable click id and a value, so a payload was actually built for them.
120057
- */
120058
119315
  matched: number;
120059
- /**
120060
- * Conversions dropped because no Google click could be tied to the person. A high count here is a tagging problem, not a Google one.
120061
- */
120062
119316
  noGclid: number;
120063
- /**
120064
- * Conversions in the lookback window that an enabled rule applied to.
120065
- */
120066
119317
  selected: number;
120067
- /**
120068
- * Rows Google accepted.
120069
- */
120070
119318
  uploaded: number;
120071
- /**
120072
- * Conversions held back because their money value had not landed yet. They are retried on a later pass.
120073
- */
120074
119319
  zeroValue: number;
120075
119320
  } | null);
120076
- /**
120077
- * Plain-language warnings about the current setup, such as double counting when the Google tag already records the same conversion. Empty when nothing needs saying.
120078
- */
120079
119321
  guidance: string[];
120080
- /**
120081
- * Rows Google has accepted since this product was connected, across every pass.
120082
- */
120083
119322
  uploaded: number;
120084
- /**
120085
- * How many event-to-conversion-action rules are configured, enabled or not.
120086
- */
120087
119323
  ruleCount: number;
120088
- /**
120089
- * How many days back each pass looks for conversions to send, and how far back a click may be matched.
120090
- */
120091
119324
  lookbackDays: number;
120092
- /**
120093
- * Currency of the connected Google Ads account, as a three-letter ISO 4217 code such as EUR. Null when the account could not be read.
120094
- */
120095
119325
  accountCurrency: (string | null);
120096
- /**
120097
- * The event names that may use the Dynamic value source, because revenue is known for them.
120098
- */
120099
119326
  dynamicValueEvents: string[];
120100
- /**
120101
- * Whether a stored email or phone number is sent alongside the click, so Google can match conversions the click id alone would miss.
120102
- */
120103
119327
  enhancedConversions: boolean;
120104
119328
  }
120105
119329
  export interface TrackingGoogleadsFeedbackUploadsInput {
@@ -120118,293 +119342,84 @@ export type TrackingGoogleadsFeedbackUploadsOutput = {
120118
119342
  conversionDatetime: string;
120119
119343
  }[];
120120
119344
  export interface TrackingGoogleadsRoasReportInput {
120121
- /**
120122
- * End of the reporting window, inclusive. ISO-8601 date or timestamp; a date-only value covers that whole day, so revenue after midnight is not cut off. Omit to end now.
120123
- */
120124
- to?: string;
120125
- /**
120126
- * Start of the reporting window, inclusive. ISO-8601 date or timestamp, e.g. 2026-01-01. Omit to start 30 days before the end of the window.
120127
- */
120128
- from?: string;
120129
- /**
120130
- * Which touchpoint gets the credit for a conversion: the last paid click before it, or the first. Defaults to last_click.
120131
- */
119345
+ to: string;
119346
+ from: string;
120132
119347
  model?: ("last_click" | "first_click");
120133
- /**
120134
- * Restrict to conversions tracked on this installed site, e.g. acme.com. Omit to cover every domain of the product.
120135
- */
120136
119348
  domain?: string;
120137
- /**
120138
- * Restrict to one Google Ads account, by its customer id without dashes. Omit to cover every connected account.
120139
- */
120140
119349
  customerId?: string;
120141
- /**
120142
- * How far back before a conversion a paid click may sit and still earn the credit, in days. 1-365, silently clamped into that range; defaults to 30.
120143
- */
120144
119350
  lookbackDays?: number;
120145
119351
  }
120146
119352
  export interface TrackingGoogleadsRoasReportOutput {
120147
- /**
120148
- * End of the window this report covers, echoed back as an ISO-8601 UTC timestamp.
120149
- */
120150
119353
  to: string;
120151
- /**
120152
- * Start of the window this report covers, echoed back as an ISO-8601 UTC timestamp.
120153
- */
120154
119354
  from: string;
120155
- /**
120156
- * Which touchpoint earned the credit in these numbers: the last paid click before the conversion, or the first.
120157
- */
120158
119355
  model: ("last_click" | "first_click");
120159
- /**
120160
- * True when any account below is running on cost older than the freshness threshold, or on no cost at all — read this before acting on the numbers.
120161
- */
120162
- stale: boolean;
120163
- /**
120164
- * The installed site this report was restricted to; null when it covers every domain of the product.
120165
- */
120166
119356
  domain: (string | null);
120167
- /**
120168
- * One entry per Google Ads account and currency. Kept apart on purpose: amounts in different currencies are never added together.
120169
- */
120170
119357
  accounts: {
120171
- /**
120172
- * True when this account's cost is older than the freshness threshold, or was never pulled — the ROAS below is then built on outdated spend.
120173
- */
120174
119358
  stale: boolean;
120175
- /**
120176
- * ISO-4217 code every amount under this account is expressed in, e.g. USD. One account appears once per currency its cost was booked in.
120177
- */
120178
119359
  currency: string;
120179
- /**
120180
- * This account's campaigns, each with its ad groups and ads nested underneath.
120181
- */
120182
119360
  campaigns: TrackingGoogleadsRoasReportOutputItems[];
120183
- /**
120184
- * Google Ads account these campaigns belong to, by customer id without dashes.
120185
- */
120186
119361
  customerId: string;
120187
- /**
120188
- * When cost was last pulled from Google Ads for this account (ISO-8601 UTC); null when it has never been pulled.
120189
- */
120190
119362
  costLastSyncedAt: (string | null);
120191
119363
  }[];
120192
- /**
120193
- * ISO-4217 code every amount in this report is expressed in, when all accounts share one; null when the report spans several currencies.
120194
- */
120195
- currency: (string | null);
120196
- /**
120197
- * When this report was calculated (ISO-8601 UTC). The figures are a snapshot at this moment, not live.
120198
- */
120199
119364
  computedAt: string;
120200
- /**
120201
- * Google Ads account this whole report covers, when it covers exactly one; null when it spans several accounts.
120202
- */
120203
- customerId: (string | null);
120204
- /**
120205
- * How far back before a conversion a paid click was allowed to sit and still earn the credit, in days.
120206
- */
120207
119365
  lookbackDays: number;
120208
- /**
120209
- * Oldest moment cost was pulled from Google Ads across the accounts below (ISO-8601 UTC); null when any account has never synced.
120210
- */
120211
- costLastSyncedAt: (string | null);
120212
- /**
120213
- * Revenue we tracked but could not tie to any Google Ads campaign, grouped by the utm_campaign we saw. A long list here means the ad tagging needs fixing, not that the ads failed.
120214
- */
120215
119366
  unmatchedAttributed: {
120216
- /**
120217
- * Revenue that stayed outside every campaign, one row per currency. Never cross-summed.
120218
- */
120219
119367
  revenue: TrackingGoogleadsRoasReportOutputItems1[];
120220
- /**
120221
- * How many distinct customers paid but could not be traced to any Google Ads campaign.
120222
- */
120223
119368
  conversions: number;
120224
- /**
120225
- * The utm_campaign value we saw on the visit, which matched no Google Ads campaign; null when the visit carried none. This is the diagnostic: fix the tagging and the revenue moves into a campaign.
120226
- */
120227
119369
  utmCampaign: (string | null);
120228
119370
  }[];
120229
119371
  }
120230
119372
  export interface TrackingGoogleadsRoasReportOutputItems {
120231
- /**
120232
- * What one attributed customer cost: cost divided by attributed conversions, in minor units of the account currency. null when there were no attributed conversions.
120233
- */
120234
119373
  cpa: (number | null);
120235
- /**
120236
- * Google Ads ad this node is, by its numeric id; null on a campaign or ad group node.
120237
- */
120238
119374
  adId: (string | null);
120239
- /**
120240
- * What Google charged and what Google itself counted for this node over the window.
120241
- */
120242
119375
  cost: {
120243
- /**
120244
- * How many times someone clicked through from Google over the window.
120245
- */
120246
119376
  clicks: number;
120247
- /**
120248
- * ISO-4217 code of the Google Ads account these numbers come from, e.g. USD. Fixed per account.
120249
- */
120250
119377
  currency: string;
120251
- /**
120252
- * What Google charged for this campaign, ad group or ad over the window, in minor units (1250 = 12.50).
120253
- */
120254
119378
  costMinor: number;
120255
- /**
120256
- * How many times Google showed this ad over the window.
120257
- */
120258
119379
  impressions: number;
120259
- /**
120260
- * Conversions GOOGLE counted for this node — its own attribution, not ours. May be fractional, because Google splits credit across touchpoints.
120261
- */
120262
119380
  platformConversions: number;
120263
- /**
120264
- * Conversion value GOOGLE reports for this node, in minor units of the account currency. Compare it with our attributed revenue; the two rarely agree.
120265
- */
120266
119381
  platformConversionsValueMinor: number;
120267
119382
  };
120268
- /**
120269
- * What this campaign, ad group or ad is called in Google Ads; null when the name has not been synced.
120270
- */
120271
119383
  name: (string | null);
120272
- /**
120273
- * Return on ad spend: our net attributed revenue divided by cost, both in the account currency. A plain ratio, not a percentage — 2.4 means 2.40 back per 1.00 spent. null when cost is 0 or nothing was attributed.
120274
- */
120275
119384
  roas: (number | null);
120276
- /**
120277
- * How deep in the Google Ads hierarchy this node sits. Attributed revenue, ROAS and CPA exist at campaign level only; cost exists at all three.
120278
- */
120279
119385
  level: ("campaign" | "ad_group" | "ad");
120280
- /**
120281
- * Google Ads campaign state, passed through raw: ENABLED, PAUSED, REMOVED. Present on campaign nodes only — the key is absent below.
120282
- */
120283
119386
  status?: string;
120284
- /**
120285
- * The level below this one: ad groups under a campaign, ads under an ad group, empty on an ad.
120286
- */
120287
119387
  children: TrackingGoogleadsRoasReportOutputItems[];
120288
- /**
120289
- * Google Ads ad group this node belongs to, by its numeric id; null on a campaign node.
120290
- */
120291
119388
  adGroupId: (string | null);
120292
- /**
120293
- * What WE traced back to this node from our own tracking. null below campaign level, and null on a campaign nothing was traced to.
120294
- */
120295
119389
  attributed: ({
120296
- /**
120297
- * What WE traced back to this campaign, one row per currency the customers paid in. Never cross-summed — use accountCurrencyNetMinor for a single figure.
120298
- */
120299
119390
  revenue: TrackingGoogleadsRoasReportOutputItems1[];
120300
- /**
120301
- * Which key actually joined this revenue to the Google campaign, strongest first: lt_campaign_id (the id our own tracking template stamps on the landing URL), campaign_id (the id inside utm_campaign), campaign_name (the campaign name inside utm_campaign, a guess), gclid (the click id). null means the join key is unknown; treat campaign_name as the weakest evidence.
120302
- */
120303
- matchedBy: (("lt_campaign_id" | "campaign_id" | "campaign_name" | "gclid") | null);
120304
- /**
120305
- * How many distinct customers we traced back to this campaign over the window. Whole numbers: we give a conversion to one campaign, we never split it.
120306
- */
119391
+ matchedBy: (("campaign_id" | "campaign_name" | "gclid") | null);
120307
119392
  conversions: number;
120308
- /**
120309
- * Our net attributed revenue in the account currency alone, in minor units. 0 when nobody paid in that currency. This is the ROAS numerator, and the single-value answer beside the revenue list.
120310
- */
120311
119393
  accountCurrencyNetMinor: number;
120312
119394
  } | null);
120313
- /**
120314
- * Google Ads campaign this node belongs to, by its numeric id. Set at every level.
120315
- */
120316
119395
  campaignId: string;
120317
- /**
120318
- * Google Ads account this node belongs to, by customer id without dashes.
120319
- */
120320
119396
  customerId: string;
120321
- /**
120322
- * Where Google ran the campaign, passed through raw: SEARCH, DISPLAY, VIDEO, PERFORMANCE_MAX and so on. Present on campaign nodes only, and may be null there.
120323
- */
120324
119397
  channelType?: (string | null);
120325
119398
  }
120326
119399
  export interface TrackingGoogleadsRoasReportOutputItems1 {
120327
- /**
120328
- * ISO-4217 code the three amounts on this row are denominated in, e.g. USD. One row per currency; rows are never added together.
120329
- */
120330
119400
  currency: string;
120331
- /**
120332
- * Money kept after refunds (gross minus refunded), in minor units of this row's currency. This is what ROAS is calculated from.
120333
- */
120334
119401
  netMinor: number;
120335
- /**
120336
- * Money taken before refunds, in minor units of this row's currency (1250 = 12.50).
120337
- */
120338
119402
  grossMinor: number;
120339
- /**
120340
- * Money given back within the window, in minor units of this row's currency; already subtracted from netMinor.
120341
- */
120342
119403
  refundedMinor: number;
120343
119404
  }
120344
119405
  export interface TrackingGoogleadsSyncNowInput {
120345
119406
  }
120346
119407
  export interface TrackingGoogleadsSyncNowOutput {
120347
- /**
120348
- * How much this sweep wrote, split by what it wrote. Re-running the same window updates rows in place rather than adding, so these are rows touched, not rows gained. All zero when the status is skipped.
120349
- */
120350
119408
  rows: {
120351
- /**
120352
- * Ads written.
120353
- */
120354
119409
  ads: number;
120355
- /**
120356
- * Day-by-day ad spend and metric rows written.
120357
- */
120358
119410
  adDaily: number;
120359
- /**
120360
- * Ad groups written.
120361
- */
120362
119411
  adGroups: number;
120363
- /**
120364
- * Campaigns written, names and status included.
120365
- */
120366
119412
  campaigns: number;
120367
- /**
120368
- * Day-by-day ad-group spend and metric rows written.
120369
- */
120370
119413
  adGroupDaily: number;
120371
- /**
120372
- * Day-by-day campaign spend and metric rows written.
120373
- */
120374
119414
  campaignDaily: number;
120375
119415
  };
120376
- /**
120377
- * This one sync run. Match the completion event back to this step on it, not on productId: a product syncs many times, and the daily cron run and a manual one are different runs.
120378
- */
120379
- runId: string;
120380
- /**
120381
- * Why nothing was written, when the status is skipped: the account is not chosen yet, the authorisation expired, or Google was unavailable. Absent on a sweep that ran.
120382
- */
120383
119416
  reason?: string;
120384
- /**
120385
- * Whether the sweep ran. skipped means the Google Ads account could not be reached and nothing at all was written.
120386
- */
120387
119417
  status: ("ok" | "skipped");
120388
- /**
120389
- * The range of days this sweep read spend and metrics for.
120390
- */
120391
119418
  window: {
120392
- /**
120393
- * Last day covered, inclusive, as YYYY-MM-DD.
120394
- */
120395
119419
  end: string;
120396
- /**
120397
- * First day covered, inclusive, as YYYY-MM-DD.
120398
- */
120399
119420
  start: string;
120400
119421
  };
120401
- /**
120402
- * The tenant whose Google Ads account was swept.
120403
- */
120404
119422
  productId: string;
120405
- /**
120406
- * When the sweep finished. Null when nothing was written.
120407
- */
120408
119423
  lastSyncedAt: (string | null);
120409
119424
  }
120410
119425
  export interface TrackingGoogleadsTrackingHealthInput {
@@ -120418,212 +119433,61 @@ export interface TrackingGoogleadsTrackingHealthInput {
120418
119433
  from?: string;
120419
119434
  }
120420
119435
  export interface TrackingGoogleadsTrackingHealthOutput {
120421
- /**
120422
- * End of the range these figures cover, as an instant.
120423
- */
120424
119436
  to: string;
120425
- /**
120426
- * Start of the range these figures cover, as an instant. Echoes back the range that was asked for.
120427
- */
120428
119437
  from: string;
120429
- /**
120430
- * Whether the tracking template has been seen working live: true once at least one tagged click has arrived.
120431
- */
120432
119438
  installed: boolean;
120433
- /**
120434
- * Whether the sample above was cut short. True means more untagged URLs exist than are listed.
120435
- */
120436
119439
  truncated: boolean;
120437
- /**
120438
- * Google paid clicks that arrived on the site in this range. The denominator for everything below.
120439
- */
120440
119440
  paidClicks: number;
120441
- /**
120442
- * How complete the figures above are. Holds no metric of its own — it exists so the breakage rate is not read as one uniform population.
120443
- */
120444
119441
  dataQuality: {
120445
- /**
120446
- * Paid clicks from visitors who declined consent. Counted inside paidClicks, never added to it — a cookieless click is a real click. Clicks from sites running no consent banner are not counted here: nobody was asked, which is not the same as being told no.
120447
- */
120448
119442
  cookielessPaidClicks: number;
120449
119443
  };
120450
- /**
120451
- * Share of paid clicks that arrived untagged, between 0 and 1. Anything much above zero means the tracking template needs fixing.
120452
- */
120453
119444
  breakageRate: number;
120454
- /**
120455
- * Of those, the ones that arrived carrying our URL tracking parameters, so the campaign behind them is known.
120456
- */
120457
119445
  taggedClicks: number;
120458
- /**
120459
- * When the most recent untagged click arrived. Close to now means the breakage is still live. Null when none did.
120460
- */
120461
119446
  lastUntaggedAt: (string | null);
120462
- /**
120463
- * Of those, the ones that arrived without our parameters, so the money spent on them cannot be attributed. This is what the tracking template being missing or broken looks like.
120464
- */
120465
119447
  untaggedClicks: number;
120466
- /**
120467
- * When the first untagged click of the range arrived — roughly when the breakage started. Null when none did.
120468
- */
120469
119448
  firstUntaggedAt: (string | null);
120470
- /**
120471
- * A handful of the actual landing URLs that arrived untagged, to paste into a browser while fixing the template. Real customer URLs, query strings included.
120472
- */
120473
119449
  sampleUntaggedUrls: string[];
120474
119450
  }
120475
119451
  export interface TrackingGoogleadsUsVsPlatformInput {
120476
- /**
120477
- * End of the reporting window, inclusive. ISO-8601 date or timestamp; a date-only value covers that whole day, so revenue after midnight is not cut off. Omit to end now.
120478
- */
120479
- to?: string;
120480
- /**
120481
- * Start of the reporting window, inclusive. ISO-8601 date or timestamp, e.g. 2026-01-01. Omit to start 30 days before the end of the window.
120482
- */
120483
- from?: string;
120484
- /**
120485
- * Which touchpoint gets the credit for a conversion: the last paid click before it, or the first. Defaults to last_click.
120486
- */
119452
+ to: string;
119453
+ from: string;
120487
119454
  model?: ("last_click" | "first_click");
120488
- /**
120489
- * Restrict to conversions tracked on this installed site, e.g. acme.com. Omit to cover every domain of the product.
120490
- */
120491
119455
  domain?: string;
120492
- /**
120493
- * Restrict to one Google Ads account, by its customer id without dashes. Omit to cover every connected account.
120494
- */
120495
119456
  customerId?: string;
120496
- /**
120497
- * How far back before a conversion a paid click may sit and still earn the credit, in days. 1-365, silently clamped into that range; defaults to 30.
120498
- */
120499
119457
  lookbackDays?: number;
120500
119458
  }
120501
119459
  export interface TrackingGoogleadsUsVsPlatformOutput {
120502
- /**
120503
- * End of the window this comparison covers, echoed back as an ISO-8601 UTC timestamp.
120504
- */
120505
119460
  to: string;
120506
- /**
120507
- * Start of the window this comparison covers, echoed back as an ISO-8601 UTC timestamp.
120508
- */
120509
119461
  from: string;
120510
- /**
120511
- * Which touchpoint earned the credit on OUR side of the comparison: the last paid click before the conversion, or the first. Google always uses its own model.
120512
- */
120513
119462
  model: ("last_click" | "first_click");
120514
- /**
120515
- * True when any account below is running on cost older than the freshness threshold, or on no cost at all — read this before acting on the numbers.
120516
- */
120517
- stale: boolean;
120518
- /**
120519
- * The installed site this comparison was restricted to; null when it covers every domain of the product.
120520
- */
120521
119463
  domain: (string | null);
120522
- /**
120523
- * One entry per Google Ads account and currency, each holding its per-campaign comparison rows. Currencies are never added together.
120524
- */
120525
119464
  accounts: {
120526
- /**
120527
- * One row per campaign in this account, ours beside Google's.
120528
- */
120529
119465
  rows: {
120530
- /**
120531
- * What this campaign is called in Google Ads; null when the name has not been synced.
120532
- */
120533
119466
  name: (string | null);
120534
- /**
120535
- * ISO-4217 code both sides of this comparison are expressed in, e.g. USD. Ours and Google's are never converted.
120536
- */
120537
119467
  currency: string;
120538
- /**
120539
- * The Google Ads campaign this row compares, by its numeric id.
120540
- */
120541
119468
  campaignId: string;
120542
- /**
120543
- * Google Ads account this campaign belongs to, by customer id without dashes.
120544
- */
120545
119469
  customerId: string;
120546
- /**
120547
- * How many distinct customers WE traced to this campaign. A whole number: we never split a customer across campaigns.
120548
- */
120549
119470
  ourConversions: number;
120550
- /**
120551
- * Net revenue WE traced to this campaign, in minor units of the account currency (1250 = 12.50). 0 when we traced none.
120552
- */
120553
119471
  ourRevenueNetMinor: number;
120554
- /**
120555
- * Conversions GOOGLE counted for the same campaign. May be fractional, because Google splits credit across touchpoints — which is the usual reason the two sides disagree.
120556
- */
120557
119472
  platformConversions: number;
120558
- /**
120559
- * Conversion value GOOGLE reports for the same campaign, in minor units of the account currency. The counterpart of ourRevenueNetMinor.
120560
- */
120561
119473
  platformConversionsValueMinor: number;
120562
119474
  }[];
120563
- /**
120564
- * True when this account's Google-side numbers are older than the freshness threshold, or were never pulled — the comparison is then unfair to one side.
120565
- */
120566
119475
  stale: boolean;
120567
- /**
120568
- * ISO-4217 code every amount under this account is expressed in, e.g. USD. One account appears once per currency its cost was booked in.
120569
- */
120570
119476
  currency: string;
120571
- /**
120572
- * Google Ads account these comparison rows belong to, by customer id without dashes.
120573
- */
120574
119477
  customerId: string;
120575
- /**
120576
- * When cost was last pulled from Google Ads for this account (ISO-8601 UTC); null when it has never been pulled.
120577
- */
120578
119478
  costLastSyncedAt: (string | null);
120579
119479
  }[];
120580
- /**
120581
- * ISO-4217 code every amount in this report is expressed in, when all accounts share one; null when the report spans several currencies.
120582
- */
120583
- currency: (string | null);
120584
- /**
120585
- * When this comparison was calculated (ISO-8601 UTC). The figures are a snapshot at this moment, not live.
120586
- */
120587
119480
  computedAt: string;
120588
- /**
120589
- * Google Ads account this whole report covers, when it covers exactly one; null when it spans several accounts.
120590
- */
120591
- customerId: (string | null);
120592
- /**
120593
- * How far back before a conversion a paid click was allowed to sit and still earn the credit on our side, in days.
120594
- */
120595
119481
  lookbackDays: number;
120596
- /**
120597
- * Oldest moment cost was pulled from Google Ads across the accounts below (ISO-8601 UTC); null when any account has never synced.
120598
- */
120599
- costLastSyncedAt: (string | null);
120600
119482
  }
120601
119483
  export interface TrackingIdentityHealthInput {
120602
119484
  }
120603
119485
  export interface TrackingIdentityHealthOutput {
120604
- /**
120605
- * When these numbers were computed, ISO 8601 UTC. They are a live count, so this is effectively the moment of the call.
120606
- */
120607
119486
  computedAt: string;
120608
- /**
120609
- * How many people the product holds in total, anonymous ones included. The denominator of both rates below.
120610
- */
120611
119487
  totalProfiles: number;
120612
- /**
120613
- * Identified people as a share of the total, normally 0 to 1 (0.42 is 42%). A drop here usually means a broken identify() call, not fewer visitors.
120614
- */
120615
119488
  identifiedRate: number;
120616
- /**
120617
- * People with an ad touchpoint as a share of the total, normally 0 to 1. It counts click-id identifiers, so an identifier outliving its profile can push it just above 1 — read it as an indicator, not as a proportion to assert on.
120618
- */
120619
119489
  adTouchpointRate: number;
120620
- /**
120621
- * How many of them an email or phone is known for — the people a message can actually be sent to.
120622
- */
120623
119490
  identifiedProfiles: number;
120624
- /**
120625
- * How many people arrived carrying an ad click id. A proxy for paid reach: it counts anyone with at least one click id on record.
120626
- */
120627
119491
  adTouchpointProfiles: number;
120628
119492
  }
120629
119493
  export interface TrackingInstallDomainsCreateInput {
@@ -120633,9 +119497,6 @@ export interface TrackingInstallDomainsCreateInput {
120633
119497
  domain: string;
120634
119498
  }
120635
119499
  export interface TrackingInstallDomainsCreateOutput {
120636
- /**
120637
- * The domain as stored after normalisation, which may differ from what was submitted
120638
- */
120639
119500
  domain: string;
120640
119501
  }
120641
119502
  export interface TrackingInstallDomainsDeleteInput {
@@ -120645,43 +119506,19 @@ export interface TrackingInstallDomainsDeleteInput {
120645
119506
  domain: string;
120646
119507
  }
120647
119508
  export interface TrackingInstallDomainsDeleteOutput {
120648
- /**
120649
- * Always true — the domain was removed; a failure arrives as an error, not as false
120650
- */
120651
119509
  ok: true;
120652
119510
  }
120653
119511
  export interface TrackingInstallDomainsListInput {
120654
119512
  }
120655
119513
  export interface TrackingInstallDomainsListOutput {
120656
- /**
120657
- * Domains sending events that nobody registered — usually a staging host, a typo, or an install worth adding
120658
- */
120659
119514
  discovered: TrackingInstallDomainsListOutputItems[];
120660
- /**
120661
- * Domains deliberately put on the install checklist, each with whether its script has been seen
120662
- */
120663
119515
  registered: TrackingInstallDomainsListOutputItems[];
120664
- /**
120665
- * Length in days of the lookback window the `seen` and `lastSeen` figures are measured over
120666
- */
120667
119516
  windowDays: number;
120668
119517
  }
120669
119518
  export interface TrackingInstallDomainsListOutputItems {
120670
- /**
120671
- * Whether the tracking script actually sent an event from this domain inside the lookback window
120672
- */
120673
119519
  seen: boolean;
120674
- /**
120675
- * Normalised domain name the status is reported for
120676
- */
120677
119520
  domain: string;
120678
- /**
120679
- * ISO-8601 timestamp of the most recent event from this domain, or null if none arrived in the window
120680
- */
120681
119521
  lastSeen: (string | null);
120682
- /**
120683
- * Whether the domain is on the install checklist on purpose, as opposed to merely observed sending events
120684
- */
120685
119522
  registered: boolean;
120686
119523
  }
120687
119524
  export interface TrackingLinkDomainsCreateInput {
@@ -120691,9 +119528,6 @@ export interface TrackingLinkDomainsCreateInput {
120691
119528
  domain: string;
120692
119529
  }
120693
119530
  export interface TrackingLinkDomainsCreateOutput {
120694
- /**
120695
- * The domain as stored after normalisation, which may differ from what was submitted
120696
- */
120697
119531
  domain: string;
120698
119532
  }
120699
119533
  export interface TrackingLinkDomainsDeleteInput {
@@ -120703,17 +119537,11 @@ export interface TrackingLinkDomainsDeleteInput {
120703
119537
  domain: string;
120704
119538
  }
120705
119539
  export interface TrackingLinkDomainsDeleteOutput {
120706
- /**
120707
- * Always true — the domain left the linking group; a failure arrives as an error, not as false
120708
- */
120709
119540
  ok: true;
120710
119541
  }
120711
119542
  export interface TrackingLinkDomainsListInput {
120712
119543
  }
120713
119544
  export interface TrackingLinkDomainsListOutput {
120714
- /**
120715
- * Root domains in the linking group; the tracking script decorates links between any two of them so one visitor stays one visitor
120716
- */
120717
119545
  domains: string[];
120718
119546
  }
120719
119547
  export interface TrackingLiveEventsListInput {
@@ -120731,70 +119559,22 @@ export interface TrackingLiveEventsListInput {
120731
119559
  domain?: string;
120732
119560
  }
120733
119561
  export interface TrackingLiveEventsListOutput {
120734
- /**
120735
- * Pass back as `since` to fetch what arrived after this page. Null when there is nothing older to page into.
120736
- */
120737
119562
  cursor: (string | null);
120738
- /**
120739
- * The page of events, newest first.
120740
- */
120741
119563
  events: {
120742
- /**
120743
- * Stable identifier of this single event; unique within the product and safe to deduplicate on across polls.
120744
- */
120745
119564
  id: string;
120746
- /**
120747
- * When the event happened, as reported by the tracker (ISO 8601, UTC).
120748
- */
120749
119565
  ts: string;
120750
- /**
120751
- * Page address the event fired on, query string included. Free text from the customer site, so it can carry personal data.
120752
- */
120753
119566
  url: (string | null);
120754
- /**
120755
- * Event name as sent by the site, e.g. 'pageview' or a custom conversion name.
120756
- */
120757
119567
  name: string;
120758
- /**
120759
- * Document title of that page at the time. Free text from the customer site, so it can carry personal data.
120760
- */
120761
119568
  title: (string | null);
120762
- /**
120763
- * Site the event came from; null when the tracker could not determine one.
120764
- */
120765
119569
  domain: (string | null);
120766
- /**
120767
- * Where this visit came from, as read off the landing URL and referrer. Every field is null when the visit carried nothing.
120768
- */
120769
119570
  source: {
120770
- /**
120771
- * Address the visitor arrived from; null on a direct visit. Free text from the customer site, so it can carry personal data.
120772
- */
120773
119571
  referrer: (string | null);
120774
- /**
120775
- * utm_medium of the landing URL, e.g. cpc; null when absent.
120776
- */
120777
119572
  utmMedium: (string | null);
120778
- /**
120779
- * utm_source of the landing URL, e.g. newsletter; null when absent.
120780
- */
120781
119573
  utmSource: (string | null);
120782
- /**
120783
- * Which ad-network click id was present on the landing URL, e.g. 'gclid'. Null when the visit carried none.
120784
- */
120785
119574
  clickIdType: (string | null);
120786
- /**
120787
- * utm_campaign of the landing URL; null when absent.
120788
- */
120789
119575
  utmCampaign: (string | null);
120790
119576
  };
120791
- /**
120792
- * Two-letter ISO 3166-1 alpha-2 country resolved from the request, e.g. DE; null when it could not be resolved.
120793
- */
120794
119577
  country: (string | null);
120795
- /**
120796
- * Pseudonymous visitor id the person graph joins on. Null for a visitor who declined statistics consent or was never asked — those events arrive cookieless and carry no identifier at all.
120797
- */
120798
119578
  anonymousId: (string | null);
120799
119579
  }[];
120800
119580
  }
@@ -120805,52 +119585,18 @@ export interface TrackingProfilesDeleteInput {
120805
119585
  profileId: string;
120806
119586
  }
120807
119587
  export interface TrackingProfilesDeleteOutput {
120808
- /**
120809
- * Always true: the response only exists when the erasure ran. A failure arrives as an error, not as ok=false.
120810
- */
120811
119588
  ok: true;
120812
- /**
120813
- * What happened to the archived copy of the events. Postgres is erased synchronously; the archive is not, and this says so out loud.
120814
- */
120815
119589
  archive: {
120816
- /**
120817
- * Plain-language reason the archived copy could not be deleted in the same breath — text meant to be quoted into a compliance record.
120818
- */
120819
119590
  note: string;
120820
- /**
120821
- * Always gap_flagged: the archived copy is known to still hold this person and the gap has been recorded rather than silently ignored.
120822
- */
120823
119591
  status: "gap_flagged";
120824
119592
  };
120825
- /**
120826
- * How much was actually destroyed, by kind. Worth recording: it is the evidence that the erasure did something.
120827
- */
120828
119593
  deleted: {
120829
- /**
120830
- * Tracked events removed, found through the anonymous ids this person browsed under.
120831
- */
120832
119594
  events: number;
120833
- /**
120834
- * Merge records removed — the history of this person having been joined with another.
120835
- */
120836
119595
  merges: number;
120837
- /**
120838
- * Profile rows removed: 1 in practice, and 0 only if the row vanished between the lookup and the delete.
120839
- */
120840
119596
  profile: number;
120841
- /**
120842
- * Emails, phones, anonymous ids and click ids removed for this person.
120843
- */
120844
119597
  identifiers: number;
120845
119598
  };
120846
- /**
120847
- * The person who was erased. Nothing else of them remains, so this is all there is left to name them by.
120848
- */
120849
119599
  profileId: string;
120850
- /**
120851
- * This erasure attempt. The completion event carries the same value under the same name, so a step recognises its own completion even when another workflow is erasing the same person at the same moment.
120852
- */
120853
- requestId: string;
120854
119600
  }
120855
119601
  export interface TrackingProfilesExportInput {
120856
119602
  /**
@@ -120859,172 +119605,52 @@ export interface TrackingProfilesExportInput {
120859
119605
  profileId: string;
120860
119606
  }
120861
119607
  export interface TrackingProfilesExportOutput {
120862
- /**
120863
- * The complete history, newest event first, capped at 50000 events — check `truncated` before treating it as complete.
120864
- */
120865
119608
  journey: {
120866
- /**
120867
- * When the event happened, ISO 8601 UTC. The journey is ordered by this, newest first.
120868
- */
120869
119609
  ts: string;
120870
- /**
120871
- * Opaque handle for this one event, unique inside the product. Use it to deduplicate, not to sort — it carries no order.
120872
- */
120873
119610
  ref: string;
120874
- /**
120875
- * Full address of the page, query string included. Personal data — it can carry an email in a link. Null off-page.
120876
- */
120877
119611
  url: (string | null);
120878
- /**
120879
- * What happened, as the tracking snippet named it: page_view, signup, purchase, or any custom name the product sends.
120880
- */
120881
119612
  name: string;
120882
- /**
120883
- * Custom properties the product attached to this event. Free-form: the keys are whatever the snippet sent, and they differ by event name.
120884
- */
120885
119613
  props: {
120886
119614
  [k: string]: unknown;
120887
119615
  };
120888
- /**
120889
- * Title of the page as the browser reported it. Null off-page.
120890
- */
120891
119616
  title: (string | null);
120892
- /**
120893
- * Hostname the event was sent from. Null for an event with no page behind it, such as a server-side call.
120894
- */
120895
119617
  domain: (string | null);
120896
- /**
120897
- * Campaign tags and ad click carried by this event, as they were on the URL at the time.
120898
- */
120899
119618
  source: {
120900
- /**
120901
- * The ad click identifier on this URL, raw. Personal data: it resolves to one individual inside the ad network.
120902
- */
120903
119619
  clickId: (string | null);
120904
- /**
120905
- * utm_term on the URL of this event — the keyword bought, on a paid-search arrival.
120906
- */
120907
119620
  utmTerm: (string | null);
120908
- /**
120909
- * utm_medium on the URL of this event.
120910
- */
120911
119621
  utmMedium: (string | null);
120912
- /**
120913
- * utm_source on the URL of THIS event — the campaign at this moment, not the one that first acquired the person.
120914
- */
120915
119622
  utmSource: (string | null);
120916
- /**
120917
- * utm_content on the URL of this event — which creative or link variant was clicked.
120918
- */
120919
119623
  utmContent: (string | null);
120920
- /**
120921
- * Which ad network stamped the click id below: gclid for Google Ads, fbclid for Meta. Null on a non-ad arrival.
120922
- */
120923
119624
  clickIdType: (string | null);
120924
- /**
120925
- * utm_campaign on the URL of this event.
120926
- */
120927
119625
  utmCampaign: (string | null);
120928
119626
  };
120929
- /**
120930
- * Two-letter ISO 3166-1 country the request came from, resolved from the IP at collection time. Null when it could not be resolved.
120931
- */
120932
119627
  country: (string | null);
120933
- /**
120934
- * Where the person came from immediately before this event. Null on a direct arrival or off-page.
120935
- */
120936
119628
  referrer: (string | null);
120937
- /**
120938
- * Handle for the browsing session this event belongs to; events sharing it happened in one sitting. Null for an event collected outside a session.
120939
- */
120940
119629
  sessionId: (string | null);
120941
119630
  }[];
120942
- /**
120943
- * The person themselves: their handle, how far they have come, and when they were seen.
120944
- */
120945
119631
  profile: {
120946
- /**
120947
- * How far the person has come: anonymous = only a browser behind them, identified = an email or phone is known, customer = they have paid at least once.
120948
- */
120949
119632
  status: ("anonymous" | "identified" | "customer");
120950
- /**
120951
- * When this product first created the profile row, ISO 8601 UTC. Later than firstSeenAt when events were backfilled.
120952
- */
120953
119633
  createdAt: string;
120954
- /**
120955
- * Stable handle for this person inside the product. Pass it to any other people step; it survives identity merges.
120956
- */
120957
119634
  profileId: string;
120958
- /**
120959
- * Timestamp of their most recent event, ISO 8601 UTC — the freshness of everything else here.
120960
- */
120961
119635
  lastSeenAt: string;
120962
- /**
120963
- * Timestamp of the earliest event on record for this person, ISO 8601 UTC.
120964
- */
120965
119636
  firstSeenAt: string;
120966
119637
  };
120967
- /**
120968
- * Everything known about who this person is: the addresses they have been identified by, the ad clicks they arrived by, and the sites they were seen on. Every part of it is a list, and none of the lists names a primary.
120969
- */
120970
119638
  signals: {
120971
- /**
120972
- * Every email this person has ever been identified by. Stably ordered for display and diffing — the position of an address says NOTHING about which one to contact, and this toolkit holds no primary. Usually one entry; a person who signed up twice has several.
120973
- */
120974
119639
  emails: string[];
120975
- /**
120976
- * Every phone number this person has been identified by. Stably ordered for display and diffing only, with no primary among them.
120977
- */
120978
119640
  phones: string[];
120979
- /**
120980
- * Distinct hostnames this person browsed, taken from their events — not an identifier type, just where they were.
120981
- */
120982
119641
  domains: string[];
120983
- /**
120984
- * Every ad click this person arrived by, stably ordered and with no primary among them. Personal data: a click id resolves to one individual inside the ad network.
120985
- */
120986
119642
  clickIds: {
120987
- /**
120988
- * Which ad network the click came from — gclid for Google Ads, fbclid for Meta. Open set.
120989
- */
120990
119643
  type: string;
120991
- /**
120992
- * The click identifier itself, raw, as the network stamped it on the landing URL.
120993
- */
120994
119644
  value: string;
120995
119645
  }[];
120996
119646
  };
120997
- /**
120998
- * True when the history hit the 50000-event cap and older events were left out. False means this export is everything held.
120999
- */
121000
119647
  truncated: boolean;
121001
- /**
121002
- * When this export was produced, ISO 8601 UTC — the as-of date to put on a subject-access response.
121003
- */
121004
119648
  exportedAt: string;
121005
- /**
121006
- * First touch: the campaign that brought this person in, frozen at their earliest event and never overwritten by later visits. Null for a person with no events at all.
121007
- */
121008
119649
  acquisition: ({
121009
- /**
121010
- * Channel of that same first visit (utm_medium): cpc, email, social, and so on. Null when untagged.
121011
- */
121012
119650
  utmMedium: (string | null);
121013
- /**
121014
- * Where the person came from on their very first visit — the utm_source of their earliest event. Null when they arrived with no campaign tags.
121015
- */
121016
119651
  utmSource: (string | null);
121017
- /**
121018
- * Which ad network stamped the click that brought them in — gclid for Google Ads, fbclid for Meta. Null for a non-ad arrival. Open set: new networks appear without a release here.
121019
- */
121020
119652
  clickIdType: (string | null);
121021
- /**
121022
- * When that first visit happened, ISO 8601 UTC. This is the timestamp of the earliest event, not when the profile row was written.
121023
- */
121024
119653
  firstSeenAt: string;
121025
- /**
121026
- * Campaign of that same first visit (utm_campaign). Null when untagged.
121027
- */
121028
119654
  utmCampaign: (string | null);
121029
119655
  } | null);
121030
119656
  }
@@ -121038,226 +119664,76 @@ export interface TrackingProfilesGetInput {
121038
119664
  */
121039
119665
  journeyLimit?: number;
121040
119666
  /**
121041
- * Continue paging back through the journey: pass the cursor the previous page returned. Omit to start at the most recent event.
119667
+ * Opaque cursor to page further back through the journey
121042
119668
  */
121043
119669
  journeyCursor?: string;
121044
119670
  }
121045
119671
  export interface TrackingProfilesGetOutput {
121046
- /**
121047
- * Lifetime value of this person, per currency. Null when revenue tracking is not in use for the product.
121048
- */
121049
119672
  ltv: ({
121050
- /**
121051
- * One row per currency this person has paid in. Empty for someone who never paid; there is no cross-currency total, because converting would need a rate this toolkit does not hold.
121052
- */
121053
119673
  entries: {
121054
- /**
121055
- * ISO 4217 code the amounts beside it are denominated in, e.g. EUR. One entry per code the person ever paid in.
121056
- */
121057
119674
  currency: string;
121058
- /**
121059
- * What the business actually kept: gross minus refunded, in minor units. This is the number to rank customers by.
121060
- */
121061
119675
  netMinor: number;
121062
- /**
121063
- * Everything the person was ever charged, in minor units (1250 = 12.50 EUR). Refunds are not subtracted here.
121064
- */
121065
119676
  grossMinor: number;
121066
- /**
121067
- * Their most recent payment in this currency, ISO 8601 UTC — how live the relationship is.
121068
- */
121069
119677
  lastPaymentAt: (string | null);
121070
- /**
121071
- * How much of the gross went back to them, in minor units. Zero for a person who never had a refund.
121072
- */
121073
119678
  refundedMinor: number;
121074
- /**
121075
- * When this person first paid in this currency, ISO 8601 UTC. Null when the totals were computed without a dated payment.
121076
- */
121077
119679
  firstPaymentAt: (string | null);
121078
119680
  }[];
121079
- /**
121080
- * The person these totals belong to — the same handle as profile.profileId.
121081
- */
121082
119681
  profileId: string;
121083
- /**
121084
- * When these totals were last recomputed, ISO 8601 UTC. Null when they have never been computed.
121085
- */
121086
119682
  computedAt: (string | null);
121087
119683
  } | null);
121088
- /**
121089
- * What this person did, newest first, one page at a time. Use the export step instead when the whole history is wanted in one go.
121090
- */
121091
119684
  journey: {
121092
- /**
121093
- * Pass back as `journeyCursor` to page further back in time. Null once the journey is exhausted.
121094
- */
121095
119685
  cursor: (string | null);
121096
- /**
121097
- * This page of the journey, newest event first.
121098
- */
121099
119686
  events: {
121100
- /**
121101
- * When the event happened, ISO 8601 UTC. The journey is ordered by this, newest first.
121102
- */
121103
119687
  ts: string;
121104
- /**
121105
- * Opaque handle for this one event, unique inside the product. Use it to deduplicate, not to sort — it carries no order.
121106
- */
121107
119688
  ref: string;
121108
- /**
121109
- * Full address of the page, query string included. Personal data — it can carry an email in a link. Null off-page.
121110
- */
121111
119689
  url: (string | null);
121112
- /**
121113
- * What happened, as the tracking snippet named it: page_view, signup, purchase, or any custom name the product sends.
121114
- */
121115
119690
  name: string;
121116
- /**
121117
- * Custom properties the product attached to this event. Free-form: the keys are whatever the snippet sent, and they differ by event name.
121118
- */
121119
119691
  props: {
121120
119692
  [k: string]: unknown;
121121
119693
  };
121122
- /**
121123
- * Title of the page as the browser reported it. Null off-page.
121124
- */
121125
119694
  title: (string | null);
121126
- /**
121127
- * Hostname the event was sent from. Null for an event with no page behind it, such as a server-side call.
121128
- */
121129
119695
  domain: (string | null);
121130
- /**
121131
- * Campaign tags and ad click carried by this event, as they were on the URL at the time.
121132
- */
121133
119696
  source: {
121134
- /**
121135
- * The ad click identifier on this URL, raw. Personal data: it resolves to one individual inside the ad network.
121136
- */
121137
119697
  clickId: (string | null);
121138
- /**
121139
- * utm_term on the URL of this event — the keyword bought, on a paid-search arrival.
121140
- */
121141
119698
  utmTerm: (string | null);
121142
- /**
121143
- * utm_medium on the URL of this event.
121144
- */
121145
119699
  utmMedium: (string | null);
121146
- /**
121147
- * utm_source on the URL of THIS event — the campaign at this moment, not the one that first acquired the person.
121148
- */
121149
119700
  utmSource: (string | null);
121150
- /**
121151
- * utm_content on the URL of this event — which creative or link variant was clicked.
121152
- */
121153
119701
  utmContent: (string | null);
121154
- /**
121155
- * Which ad network stamped the click id below: gclid for Google Ads, fbclid for Meta. Null on a non-ad arrival.
121156
- */
121157
119702
  clickIdType: (string | null);
121158
- /**
121159
- * utm_campaign on the URL of this event.
121160
- */
121161
119703
  utmCampaign: (string | null);
121162
119704
  };
121163
- /**
121164
- * Two-letter ISO 3166-1 country the request came from, resolved from the IP at collection time. Null when it could not be resolved.
121165
- */
121166
119705
  country: (string | null);
121167
- /**
121168
- * Where the person came from immediately before this event. Null on a direct arrival or off-page.
121169
- */
121170
119706
  referrer: (string | null);
121171
- /**
121172
- * Handle for the browsing session this event belongs to; events sharing it happened in one sitting. Null for an event collected outside a session.
121173
- */
121174
119707
  sessionId: (string | null);
121175
119708
  }[];
121176
119709
  };
121177
- /**
121178
- * The person themselves: their handle, how far they have come, and when they were seen.
121179
- */
121180
119710
  profile: {
121181
- /**
121182
- * How far the person has come: anonymous = only a browser behind them, identified = an email or phone is known, customer = they have paid at least once.
121183
- */
121184
119711
  status: ("anonymous" | "identified" | "customer");
121185
- /**
121186
- * When this product first created the profile row, ISO 8601 UTC. Later than firstSeenAt when events were backfilled.
121187
- */
121188
119712
  createdAt: string;
121189
- /**
121190
- * Stable handle for this person inside the product. Pass it to any other people step; it survives identity merges.
121191
- */
121192
119713
  profileId: string;
121193
- /**
121194
- * Timestamp of their most recent event, ISO 8601 UTC — the freshness of everything else here.
121195
- */
121196
119714
  lastSeenAt: string;
121197
- /**
121198
- * Timestamp of the earliest event on record for this person, ISO 8601 UTC.
121199
- */
121200
119715
  firstSeenAt: string;
121201
119716
  };
121202
- /**
121203
- * Everything known about who this person is: the addresses they have been identified by, the ad clicks they arrived by, and the sites they were seen on. Every part of it is a list, and none of the lists names a primary.
121204
- */
121205
119717
  signals: {
121206
- /**
121207
- * Every email this person has ever been identified by. Stably ordered for display and diffing — the position of an address says NOTHING about which one to contact, and this toolkit holds no primary. Usually one entry; a person who signed up twice has several.
121208
- */
121209
119718
  emails: string[];
121210
- /**
121211
- * Every phone number this person has been identified by. Stably ordered for display and diffing only, with no primary among them.
121212
- */
121213
119719
  phones: string[];
121214
- /**
121215
- * Distinct hostnames this person browsed, taken from their events — not an identifier type, just where they were.
121216
- */
121217
119720
  domains: string[];
121218
- /**
121219
- * Every ad click this person arrived by, stably ordered and with no primary among them. Personal data: a click id resolves to one individual inside the ad network.
121220
- */
121221
119721
  clickIds: {
121222
- /**
121223
- * Which ad network the click came from — gclid for Google Ads, fbclid for Meta. Open set.
121224
- */
121225
119722
  type: string;
121226
- /**
121227
- * The click identifier itself, raw, as the network stamped it on the landing URL.
121228
- */
121229
119723
  value: string;
121230
119724
  }[];
121231
119725
  };
121232
- /**
121233
- * First touch: the campaign that brought this person in, frozen at their earliest event and never overwritten by later visits. Null for a person with no events at all.
121234
- */
121235
119726
  acquisition: ({
121236
- /**
121237
- * Channel of that same first visit (utm_medium): cpc, email, social, and so on. Null when untagged.
121238
- */
121239
119727
  utmMedium: (string | null);
121240
- /**
121241
- * Where the person came from on their very first visit — the utm_source of their earliest event. Null when they arrived with no campaign tags.
121242
- */
121243
119728
  utmSource: (string | null);
121244
- /**
121245
- * Which ad network stamped the click that brought them in — gclid for Google Ads, fbclid for Meta. Null for a non-ad arrival. Open set: new networks appear without a release here.
121246
- */
121247
119729
  clickIdType: (string | null);
121248
- /**
121249
- * When that first visit happened, ISO 8601 UTC. This is the timestamp of the earliest event, not when the profile row was written.
121250
- */
121251
119730
  firstSeenAt: string;
121252
- /**
121253
- * Campaign of that same first visit (utm_campaign). Null when untagged.
121254
- */
121255
119731
  utmCampaign: (string | null);
121256
119732
  } | null);
121257
119733
  }
121258
119734
  export interface TrackingProfilesListInput {
121259
119735
  /**
121260
- * Email to search people by — the whole address by default, or its beginning when emailMatch is prefix. Omit to search across everyone.
119736
+ * Exact email to find (case-insensitive), or a prefix when emailMatch=prefix
121261
119737
  */
121262
119738
  email?: string;
121263
119739
  /**
@@ -121265,357 +119741,126 @@ export interface TrackingProfilesListInput {
121265
119741
  */
121266
119742
  limit?: number;
121267
119743
  /**
121268
- * Continue a previous page: pass the cursor that page returned. Omit to start from the most recently seen person.
119744
+ * Opaque pagination cursor from a previous response
121269
119745
  */
121270
119746
  cursor?: string;
121271
119747
  /**
121272
- * Keep only people at this stage — anonymous, identified or customer. Omit to get all three.
119748
+ * Filter by profile status
121273
119749
  */
121274
119750
  status?: ("anonymous" | "identified" | "customer");
121275
119751
  /**
121276
- * How the email filter is matched: exact (default) compares the whole address case-insensitively, prefix matches everyone whose address starts with what you typed.
119752
+ * How to match the email filter
121277
119753
  */
121278
119754
  emailMatch?: ("exact" | "prefix");
121279
119755
  }
121280
119756
  export interface TrackingProfilesListOutput {
121281
- /**
121282
- * Pass this back as `cursor` to fetch the next page. Null on the last page — that null is how a loop knows to stop.
121283
- */
121284
119757
  cursor: (string | null);
121285
- /**
121286
- * The page of people, most recently seen first. Shorter than the requested limit on the last page.
121287
- */
121288
119758
  profiles: {
121289
- /**
121290
- * Every email this person has been identified by. Stably ordered for display, with no primary among them — position 0 is not the address to contact.
121291
- */
121292
119759
  emails: string[];
121293
- /**
121294
- * How far this person has come: anonymous = only a browser, identified = an email or phone is known, customer = they have paid.
121295
- */
121296
119760
  status: ("anonymous" | "identified" | "customer");
121297
- /**
121298
- * Stable handle for this person. Feed it to a get, export or erase step.
121299
- */
121300
119761
  profileId: string;
121301
- /**
121302
- * Timestamp of their most recent event, ISO 8601 UTC. The page is ordered by this, newest first.
121303
- */
121304
119762
  lastSeenAt: string;
121305
- /**
121306
- * First touch: the campaign that brought this person in, frozen at their earliest event and never overwritten by later visits. Null for a person with no events at all.
121307
- */
121308
119763
  acquisition: ({
121309
- /**
121310
- * Channel of that same first visit (utm_medium): cpc, email, social, and so on. Null when untagged.
121311
- */
121312
119764
  utmMedium: (string | null);
121313
- /**
121314
- * Where the person came from on their very first visit — the utm_source of their earliest event. Null when they arrived with no campaign tags.
121315
- */
121316
119765
  utmSource: (string | null);
121317
- /**
121318
- * Which ad network stamped the click that brought them in — gclid for Google Ads, fbclid for Meta. Null for a non-ad arrival. Open set: new networks appear without a release here.
121319
- */
121320
119766
  clickIdType: (string | null);
121321
- /**
121322
- * When that first visit happened, ISO 8601 UTC. This is the timestamp of the earliest event, not when the profile row was written.
121323
- */
121324
119767
  firstSeenAt: string;
121325
- /**
121326
- * Campaign of that same first visit (utm_campaign). Null when untagged.
121327
- */
121328
119768
  utmCampaign: (string | null);
121329
119769
  } | null);
121330
- /**
121331
- * Timestamp of their earliest event, ISO 8601 UTC.
121332
- */
121333
119770
  firstSeenAt: string;
121334
119771
  }[];
121335
119772
  }
121336
119773
  export interface TrackingReportsAttributedJourneyInput {
121337
- /**
121338
- * Show only journey events at or before this instant (ISO). Omit for the whole history.
121339
- */
121340
119774
  to?: string;
121341
- /**
121342
- * Show only journey events at or after this instant (ISO). Omit for the whole history.
121343
- */
121344
119775
  from?: string;
121345
- /**
121346
- * Attribution model to explain the decision under; re-reads the same history, so switching it is free (default 'last_click').
121347
- */
121348
119776
  model?: ("last_click" | "first_click");
121349
119777
  /**
121350
119778
  * The profile id (uuid)
121351
119779
  */
121352
119780
  profileId: string;
121353
- /**
121354
- * How far back before the conversion a touchpoint may be credited, in days (default 30).
121355
- */
121356
119781
  lookbackDays?: number;
121357
119782
  }
121358
119783
  export interface TrackingReportsAttributedJourneyOutput {
121359
- /**
121360
- * What this person actually did, in order.
121361
- */
121362
119784
  journey: {
121363
- /**
121364
- * Every tracked event for this person inside the requested window, oldest first.
121365
- */
121366
119785
  events: {
121367
- /**
121368
- * When the event happened (ISO 8601, UTC). Events are ordered oldest first.
121369
- */
121370
119786
  ts: string;
121371
- /**
121372
- * Handle for this event within the journey; `decisions[].winnerRef` points back at one of these to name the winning touchpoint.
121373
- */
121374
119787
  ref: string;
121375
- /**
121376
- * Page address the event fired on. Free text from the customer site, so it can carry personal data.
121377
- */
121378
119788
  url: (string | null);
121379
- /**
121380
- * Event name as sent by the site, e.g. 'pageview' or a custom conversion name.
121381
- */
121382
119789
  name: string;
121383
- /**
121384
- * Custom properties the site attached to this event. Shape is the customer's, so it can carry anything, personal data included.
121385
- */
121386
119790
  props: {
121387
119791
  [k: string]: unknown;
121388
119792
  };
121389
- /**
121390
- * Document title of that page. Free text from the customer site, so it can carry personal data.
121391
- */
121392
119793
  title: (string | null);
121393
- /**
121394
- * Site the event came from; null when the tracker could not determine one.
121395
- */
121396
119794
  domain: (string | null);
121397
- /**
121398
- * Where this event's visit came from, as read off the landing URL. Every field is null when the visit carried nothing.
121399
- */
121400
119795
  source: {
121401
- /**
121402
- * The click id value itself. Identifies one ad click by this person, so treat it as personal data.
121403
- */
121404
119796
  clickId: (string | null);
121405
- /**
121406
- * utm_term of the landing URL, the paid keyword; null when absent.
121407
- */
121408
119797
  utmTerm: (string | null);
121409
- /**
121410
- * utm_medium of the landing URL; null when absent.
121411
- */
121412
119798
  utmMedium: (string | null);
121413
- /**
121414
- * utm_source of the landing URL; null when absent.
121415
- */
121416
119799
  utmSource: (string | null);
121417
- /**
121418
- * utm_content of the landing URL, the creative variant; null when absent.
121419
- */
121420
119800
  utmContent: (string | null);
121421
- /**
121422
- * Which ad-network click id was present, e.g. 'gclid'; null when the visit carried none.
121423
- */
121424
119801
  clickIdType: (string | null);
121425
- /**
121426
- * utm_campaign of the landing URL; null when absent.
121427
- */
121428
119802
  utmCampaign: (string | null);
121429
119803
  };
121430
- /**
121431
- * Two-letter ISO 3166-1 alpha-2 country resolved from the request, e.g. DE; null when it could not be resolved.
121432
- */
121433
119804
  country: (string | null);
121434
- /**
121435
- * Address the visitor arrived from; null on a direct visit. Free text from the customer site, so it can carry personal data.
121436
- */
121437
119805
  referrer: (string | null);
121438
- /**
121439
- * Visit this event belongs to; events sharing one happened in the same sitting. Null when no session could be established.
121440
- */
121441
119806
  sessionId: (string | null);
121442
119807
  }[];
121443
119808
  };
121444
- /**
121445
- * Holds at most one entry: the decision for this person's originating conversion, present only when that conversion falls inside the requested window. Kept as a list for callers that already read it; `originatingDecision` is the same value at a bindable path.
121446
- */
121447
- decisions: TrackingReportsAttributedJourneyOutputItems[];
121448
- /**
121449
- * The person this journey belongs to, echoed back from the request.
121450
- */
121451
- profileId: string;
121452
- /**
121453
- * The attribution decision for this person's originating conversion — the same value as `decisions[0]`, at a path a workflow can bind. Null means the decision is not in THIS window, not that the person never converted: a conversion before `from` or after `to` is excluded here while still being their originating one. Widen the window to see it.
121454
- */
121455
- originatingDecision: (TrackingReportsAttributedJourneyOutputItems | null);
121456
- }
121457
- export interface TrackingReportsAttributedJourneyOutputItems {
121458
- /**
121459
- * Attribution model the winner was picked under, echoed back from the request.
121460
- */
121461
- model: ("last_click" | "first_click");
121462
- /**
121463
- * Why this touchpoint won, or why nothing did, in a sentence a person can read.
121464
- */
121465
- reason: string;
121466
- /**
121467
- * Revenue of that conversion, one row per currency.
121468
- */
121469
- revenue: {
121470
- /**
121471
- * ISO 4217 code the amounts below are denominated in, e.g. EUR.
121472
- */
121473
- currency: string;
121474
- /**
121475
- * `grossMinor` minus `refundedMinor`, in minor units of `currency`. This is the figure to report.
121476
- */
121477
- netMinor: number;
121478
- /**
121479
- * Billed amount before refunds, in minor units of `currency` (cents for EUR).
121480
- */
121481
- grossMinor: number;
121482
- /**
121483
- * Amount refunded out of `grossMinor`, in minor units of `currency`.
121484
- */
121485
- refundedMinor: number;
119809
+ decisions: {
119810
+ model: ("last_click" | "first_click");
119811
+ reason: string;
119812
+ revenue: {
119813
+ currency: string;
119814
+ netMinor: number;
119815
+ grossMinor: number;
119816
+ refundedMinor: number;
119817
+ }[];
119818
+ winnerRef: (string | null);
119819
+ conversionTs: string;
119820
+ lookbackDays: number;
119821
+ winningTouchpoint: ({
119822
+ ts: string;
119823
+ channel: ("paid" | "organic" | "direct" | "email");
119824
+ utmMedium: (string | null);
119825
+ utmSource: (string | null);
119826
+ clickIdType: (string | null);
119827
+ utmCampaign: (string | null);
119828
+ } | null);
121486
119829
  }[];
121487
- /**
121488
- * `journey.events[].ref` of the touchpoint that won the credit. Null when nothing inside the window qualified.
121489
- */
121490
- winnerRef: (string | null);
121491
- /**
121492
- * When the conversion this decision explains happened (ISO 8601, UTC).
121493
- */
121494
- conversionTs: string;
121495
- /**
121496
- * How far back before `conversionTs` a touchpoint was allowed to be credited, in days; echoed back.
121497
- */
121498
- lookbackDays: number;
121499
- /**
121500
- * The winning touchpoint spelled out, so a reader need not resolve `winnerRef`. Null exactly when `winnerRef` is null.
121501
- */
121502
- winningTouchpoint: ({
121503
- /**
121504
- * When the winning touchpoint happened (ISO 8601, UTC).
121505
- */
121506
- ts: string;
121507
- /**
121508
- * Channel the winning touchpoint belongs to.
121509
- */
121510
- channel: ("paid" | "organic" | "direct" | "email");
121511
- /**
121512
- * utm_medium of the winning touchpoint; null when it carried none.
121513
- */
121514
- utmMedium: (string | null);
121515
- /**
121516
- * utm_source of the winning touchpoint; null when it carried none.
121517
- */
121518
- utmSource: (string | null);
121519
- /**
121520
- * Campaign id carried by our own `_lt_campaign` landing-URL parameter; null when the visit carried none.
121521
- */
121522
- ltCampaign?: (string | null);
121523
- /**
121524
- * Ad-network click id present on the winning touchpoint, e.g. 'gclid'; null when it carried none.
121525
- */
121526
- clickIdType: (string | null);
121527
- /**
121528
- * utm_campaign of the winning touchpoint; null when it carried none.
121529
- */
121530
- utmCampaign: (string | null);
121531
- } | null);
119830
+ profileId: string;
121532
119831
  }
121533
119832
  export interface TrackingReportsEventVolumeInput {
121534
- /**
121535
- * End of the range to count, inclusive (ISO 8601). Optional — defaults to the moment of the call.
121536
- */
121537
- to?: string;
121538
- /**
121539
- * Start of the range to count, inclusive (ISO 8601). Optional — defaults to 30 days back, the start of that UTC day.
121540
- */
121541
- from?: string;
121542
- /**
121543
- * Count only this site. Omit to count every site the product sends from.
121544
- */
119833
+ to: string;
119834
+ from: string;
121545
119835
  domain?: string;
121546
119836
  }
121547
119837
  export interface TrackingReportsEventVolumeOutput {
121548
- /**
121549
- * End of the range the figures cover, echoed back (ISO 8601, UTC).
121550
- */
121551
119838
  to: string;
121552
- /**
121553
- * Start of the range the figures cover, echoed back (ISO 8601, UTC).
121554
- */
121555
119839
  from: string;
121556
- /**
121557
- * Site the figures were restricted to; null when every site of the product is included.
121558
- */
121559
119840
  domain: (string | null);
121560
- /**
121561
- * When this report was computed (ISO 8601, UTC).
121562
- */
121563
119841
  computedAt: string;
121564
- /**
121565
- * How COMPLETE the two headline figures above are. Contains no metric of its own — never present a field of it as a headline number and never add it to anything. consentGrantedEvents + cookielessEvents + noBannerEvents = totalEvents.
121566
- */
121567
119842
  dataQuality: {
121568
- /**
121569
- * Fraction of `totalEvents` (0..1) that came from sites running no consent banner, where nobody was ever asked.
121570
- */
121571
119843
  noBannerShare: number;
121572
- /**
121573
- * Events from sites with no consent banner. Kept apart from `cookielessEvents` on purpose: nobody refused here, nobody was asked.
121574
- */
121575
119844
  noBannerEvents: number;
121576
- /**
121577
- * How many UTC days the range spans; each one re-counts a returning declining visitor.
121578
- */
121579
119845
  utcDaysInRange: number;
121580
- /**
121581
- * Fraction of `totalEvents` (0..1) that came from visitors who declined statistics consent.
121582
- */
121583
119846
  cookielessShare: number;
121584
- /**
121585
- * Events from visitors who declined; no cookie was written and no identifier sent.
121586
- */
121587
119847
  cookielessEvents: number;
121588
- /**
121589
- * Events carrying an anonymous id. A different cut that overlaps the three consent buckets — it is not the complement of `cookielessEvents` and must never be added to it.
121590
- */
121591
119848
  identifiedEvents: number;
121592
- /**
121593
- * True when `visitorsDeduplicatedPerUtcDay` over-counts for this range: the range spans more than one UTC day and there is declining traffic in it.
121594
- */
121595
119849
  visitorsOverstated: boolean;
121596
- /**
121597
- * Events from visitors who granted statistics consent.
121598
- */
121599
119850
  consentGrantedEvents: number;
121600
119851
  };
121601
- /**
121602
- * How many events arrived in the range, across every consent state.
121603
- */
121604
119852
  totalEvents: number;
121605
- /**
121606
- * How many PEOPLE those events came from: one COUNT DISTINCT over consenting visitors (by anonymous id) and declining visitors (by a daily key destroyed each UTC midnight) at once. Over a range longer than one UTC day this is an OVER-count of the declining half — read `dataQuality.visitorsOverstated` before reporting it.
121607
- */
121608
119853
  visitorsDeduplicatedPerUtcDay: number;
121609
119854
  }
121610
119855
  export interface TrackingReportsRevenueBySourceInput {
121611
119856
  /**
121612
- * Cohort window end (ISO). Optional — defaults to the moment of the call.
119857
+ * Cohort window end (ISO)
121613
119858
  */
121614
- to?: string;
119859
+ to: string;
121615
119860
  /**
121616
- * Cohort window start (ISO); selects conversions by subscription start. Optional — defaults to 30 days back, the start of that UTC day.
119861
+ * Cohort window start (ISO); selects conversions by subscription start
121617
119862
  */
121618
- from?: string;
119863
+ from: string;
121619
119864
  /**
121620
119865
  * Attribution model
121621
119866
  */
@@ -121630,149 +119875,53 @@ export interface TrackingReportsRevenueBySourceInput {
121630
119875
  lookbackDays?: number;
121631
119876
  }
121632
119877
  export interface TrackingReportsRevenueBySourceOutput {
121633
- /**
121634
- * End of the cohort window the figures cover, echoed back (ISO 8601, UTC).
121635
- */
121636
119878
  to: string;
121637
- /**
121638
- * Start of the cohort window the figures cover, echoed back (ISO 8601, UTC).
121639
- */
121640
119879
  from: string;
121641
- /**
121642
- * Attribution model the credit was assigned under, echoed back. Pass the same value to `tracking_reports_source_people` to drill into a row.
121643
- */
121644
119880
  model: ("last_click" | "first_click");
121645
- /**
121646
- * Site touchpoints were restricted to; null when every site of the product was considered.
121647
- */
121648
119881
  domain: (string | null);
121649
- /**
121650
- * Every channel plus `unattributed`. This is the whole window, not the attributed part of it.
121651
- */
121652
119882
  totals: {
121653
- /**
121654
- * Revenue over every channel plus `unattributed`, one row per currency.
121655
- */
121656
119883
  revenue: TrackingReportsRevenueBySourceOutputItems[];
121657
- /**
121658
- * Distinct paying people over every channel plus `unattributed`.
121659
- */
121660
119884
  customers: number;
121661
119885
  };
121662
- /**
121663
- * One row per channel that earned revenue in the window. Channels with none are omitted.
121664
- */
121665
119886
  channels: {
121666
- /**
121667
- * Which acquisition channel this row aggregates.
121668
- */
121669
119887
  channel: ("paid" | "organic" | "direct" | "email");
121670
- /**
121671
- * Revenue credited to this channel, one row per currency, ordered by currency code. Currencies are never summed, so there is no single figure here: a product trading in two currencies has two rows and both must be reported.
121672
- */
121673
119888
  revenue: TrackingReportsRevenueBySourceOutputItems[];
121674
- /**
121675
- * Distinct paying people credited to this channel.
121676
- */
121677
119889
  customers: number;
121678
- /**
121679
- * The channel split by UTM combination. Each row is a drill-down target for `tracking_reports_source_people`.
121680
- */
121681
119890
  utmBreakdown: {
121682
- /**
121683
- * Revenue credited to this UTM combination, one row per currency.
121684
- */
121685
119891
  revenue: TrackingReportsRevenueBySourceOutputItems[];
121686
- /**
121687
- * Distinct paying people credited to this UTM combination.
121688
- */
121689
119892
  customers: number;
121690
- /**
121691
- * utm_medium of this row; null when the visit carried none.
121692
- */
121693
119893
  utmMedium: (string | null);
121694
- /**
121695
- * utm_source of this row; null when the visit carried none.
121696
- */
121697
119894
  utmSource: (string | null);
121698
- /**
121699
- * Ad-network click id present on the visit, e.g. 'gclid'; null when it carried none.
121700
- */
121701
119895
  clickIdType: (string | null);
121702
- /**
121703
- * utm_campaign of this row; null when the visit carried none.
121704
- */
121705
119896
  utmCampaign: (string | null);
121706
119897
  }[];
121707
119898
  }[];
121708
- /**
121709
- * Fraction of paying people (0..1) a touchpoint could be found for: attributed customers over `totals.customers`. Count-based, never revenue-weighted.
121710
- */
121711
119899
  matchRate: number;
121712
- /**
121713
- * When this report was computed (ISO 8601, UTC).
121714
- */
121715
119900
  computedAt: string;
121716
- /**
121717
- * How far back before a conversion a touchpoint was allowed to be credited, in days; echoed back.
121718
- */
121719
119901
  lookbackDays: number;
121720
- /**
121721
- * Revenue that reached no channel — kept as its own row so the channel rows are never quietly inflated to cover it.
121722
- */
121723
119902
  unattributed: {
121724
- /**
121725
- * Revenue no touchpoint could be credited for, one row per currency.
121726
- */
121727
119903
  revenue: TrackingReportsRevenueBySourceOutputItems[];
121728
- /**
121729
- * Distinct paying people no touchpoint could be credited for.
121730
- */
121731
119904
  customers: number;
121732
119905
  };
121733
119906
  }
121734
119907
  export interface TrackingReportsRevenueBySourceOutputItems {
121735
- /**
121736
- * ISO 4217 code the amounts below are denominated in, e.g. EUR.
121737
- */
121738
119908
  currency: string;
121739
- /**
121740
- * `grossMinor` minus `refundedMinor`, in minor units of `currency`. This is the figure to report.
121741
- */
121742
119909
  netMinor: number;
121743
- /**
121744
- * Billed amount before refunds, in minor units of `currency` (cents for EUR).
121745
- */
121746
119910
  grossMinor: number;
121747
- /**
121748
- * Amount refunded out of `grossMinor`, in minor units of `currency`.
121749
- */
121750
119911
  refundedMinor: number;
121751
119912
  }
121752
119913
  export interface TrackingReportsSourcePeopleInput {
121753
- /**
121754
- * Cohort window end (ISO); must match the report this row came from. Optional — defaults to the moment of the call.
121755
- */
121756
- to?: string;
121757
- /**
121758
- * Cohort window start (ISO); must match the report this row came from. Optional — defaults to 30 days back, the start of that UTC day.
121759
- */
121760
- from?: string;
119914
+ to: string;
119915
+ from: string;
121761
119916
  /**
121762
119917
  * People per page (default 50, max 200)
121763
119918
  */
121764
119919
  limit?: number;
121765
- /**
121766
- * Attribution model to credit the touchpoint under; must match the report this row came from (default 'last_click').
121767
- */
121768
119920
  model?: ("last_click" | "first_click");
121769
119921
  /**
121770
119922
  * Opaque keyset cursor from a previous page
121771
119923
  */
121772
119924
  cursor?: string;
121773
- /**
121774
- * Only consider touchpoints on this domain; must match the report this row came from. Omit for no restriction.
121775
- */
121776
119925
  domain?: string;
121777
119926
  /**
121778
119927
  * Channel to drill into
@@ -121782,71 +119931,26 @@ export interface TrackingReportsSourcePeopleInput {
121782
119931
  * Comma-separated dimension names (utmSource,utmMedium,utmCampaign,clickIdType) that must be IS NULL
121783
119932
  */
121784
119933
  utmNulls?: string;
121785
- /**
121786
- * utm_medium of the breakdown row to drill into. Omit for no filter; to match the IS-NULL row, list it in utmNulls instead.
121787
- */
121788
119934
  utmMedium?: string;
121789
- /**
121790
- * utm_source of the breakdown row to drill into. Omit for no filter; to match the IS-NULL row, list it in utmNulls instead.
121791
- */
121792
119935
  utmSource?: string;
121793
119936
  /**
121794
119937
  * Native click-id type of the breakdown row to drill into (e.g. 'gclid'). Tri-state: omit for no filter (all click ids), pass a value to match it, or list 'clickIdType' in utmNulls to match the IS-NULL row.
121795
119938
  */
121796
119939
  clickIdType?: string;
121797
- /**
121798
- * utm_campaign of the breakdown row to drill into. Omit for no filter; to match the IS-NULL row, list it in utmNulls instead.
121799
- */
121800
119940
  utmCampaign?: string;
121801
- /**
121802
- * How far back before a conversion a touchpoint may be credited, in days; must match the report this row came from (default 30).
121803
- */
121804
119941
  lookbackDays?: number;
121805
119942
  }
121806
119943
  export interface TrackingReportsSourcePeopleOutput {
121807
- /**
121808
- * Pass back as `cursor` for the next page. Null on the last page.
121809
- */
121810
119944
  cursor: (string | null);
121811
- /**
121812
- * The page of people behind the requested row, ordered by the keyset the cursor walks.
121813
- */
121814
119945
  people: {
121815
- /**
121816
- * Where this person stands in their subscription lifecycle, e.g. active or churned.
121817
- */
121818
119946
  status: string;
121819
- /**
121820
- * Identifier of this person; pass it to `tracking_reports_attributed_journey` to see why they were credited here.
121821
- */
121822
119947
  profileId: string;
121823
- /**
121824
- * Most recent tracked activity for this person (ISO 8601, UTC); null when none was recorded.
121825
- */
121826
119948
  lastSeenAt: (string | null);
121827
- /**
121828
- * Earliest tracked activity for this person (ISO 8601, UTC); null when none was recorded.
121829
- */
121830
119949
  firstSeenAt: (string | null);
121831
- /**
121832
- * Lifetime revenue credited to this person under the requested model, one row per currency.
121833
- */
121834
119950
  attributedRevenue: {
121835
- /**
121836
- * ISO 4217 code the amounts below are denominated in, e.g. EUR.
121837
- */
121838
119951
  currency: string;
121839
- /**
121840
- * `grossMinor` minus `refundedMinor`, in minor units of `currency`. This is the figure to report.
121841
- */
121842
119952
  netMinor: number;
121843
- /**
121844
- * Billed amount before refunds, in minor units of `currency` (cents for EUR).
121845
- */
121846
119953
  grossMinor: number;
121847
- /**
121848
- * Amount refunded out of `grossMinor`, in minor units of `currency`.
121849
- */
121850
119954
  refundedMinor: number;
121851
119955
  }[];
121852
119956
  }[];
@@ -121854,21 +119958,9 @@ export interface TrackingReportsSourcePeopleOutput {
121854
119958
  export interface TrackingSnippetsGetInput {
121855
119959
  }
121856
119960
  export interface TrackingSnippetsGetOutput {
121857
- /**
121858
- * Tracking host the snippet sends to — the customer-facing domain events and the bundle are served from.
121859
- */
121860
119961
  host: string;
121861
- /**
121862
- * The tag to paste into every page, verbatim, before </head>. Includes the consent-aware bootstrap; install it unconditionally rather than behind a consent gate.
121863
- */
121864
119962
  snippet: string;
121865
- /**
121866
- * Absolute URL of the tracker bundle the snippet loads; already points at this product's own tracking host.
121867
- */
121868
119963
  scriptUrl: string;
121869
- /**
121870
- * The same tag stripped to the bare script element, for tag managers and CMS fields that reject anything else. Behaves identically; use it only when the full snippet will not fit.
121871
- */
121872
119964
  minimalSnippet: string;
121873
119965
  }
121874
119966
  export interface UsersApikeysCreateInput {