@lessly/sdk-app 78.0.0 → 80.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.
@@ -91984,6 +91984,32 @@ color: (string | null)
91984
91984
  createdAt: string
91985
91985
  }
91986
91986
 
91987
+ export interface SupportLabelGetInput {
91988
+ /**
91989
+ * Label id
91990
+ */
91991
+ id: string
91992
+ }
91993
+
91994
+ export interface SupportLabelGetOutput {
91995
+ /**
91996
+ * Label id
91997
+ */
91998
+ id: string
91999
+ /**
92000
+ * Label name, unique within the product
92001
+ */
92002
+ name: string
92003
+ /**
92004
+ * Display colour as a hex string, or null if uncoloured
92005
+ */
92006
+ color: (string | null)
92007
+ /**
92008
+ * ISO-8601 creation timestamp
92009
+ */
92010
+ createdAt: string
92011
+ }
92012
+
91987
92013
  export interface SupportLabelListInput {
91988
92014
 
91989
92015
  }
@@ -92099,10 +92125,97 @@ contentType: string
92099
92125
  */
92100
92126
  downloadUrl: string
92101
92127
  }[]
92128
+ /**
92129
+ * The same files as a flat list of ids, in the order attachments[] has them. This is the value support_message_create takes back; attachments.0.id names only the first file
92130
+ */
92131
+ attachmentIds: string[]
92132
+ /**
92133
+ * The agent author, or null when the external end user wrote the message
92134
+ */
92135
+ authorAgentId: (string | null)
92136
+ /**
92137
+ * How many files this message carries, 0 when it carries none. A dot-path has no length, so this is the only way a step can branch on whether there are files at all — and a message may carry a file and no body, so it is what tells those two messages apart
92138
+ */
92139
+ attachmentCount: number
92140
+ /**
92141
+ * The external author, or null when an agent wrote the message
92142
+ */
92143
+ authorExternalId: (string | null)
92144
+ }
92145
+
92146
+ export interface SupportMessageGetInput {
92147
+ /**
92148
+ * Message id
92149
+ */
92150
+ id: string
92151
+ }
92152
+
92153
+ export interface SupportMessageGetOutput {
92154
+ /**
92155
+ * Message id
92156
+ */
92157
+ id: string
92158
+ /**
92159
+ * The message text, byte-identical to what was stored
92160
+ */
92161
+ body: string
92162
+ /**
92163
+ * Thread this message belongs to
92164
+ */
92165
+ threadId: string
92166
+ /**
92167
+ * ISO-8601 creation timestamp
92168
+ */
92169
+ createdAt: string
92170
+ /**
92171
+ * inbound: written by the external end user. outbound: written by support, going out to them
92172
+ */
92173
+ direction: ("inbound" | "outbound")
92174
+ /**
92175
+ * public: part of the conversation the external end user sees. internal: a note between agents that never leaves the support contour
92176
+ */
92177
+ visibility: ("public" | "internal")
92178
+ /**
92179
+ * Files this message carries, each with a freshly signed download URL. Empty when there are none. Attachments whose upload was never confirmed are never listed here
92180
+ */
92181
+ attachments: {
92182
+ /**
92183
+ * Attachment id
92184
+ */
92185
+ id: string
92186
+ /**
92187
+ * Display name of the file
92188
+ */
92189
+ fileName: string
92190
+ /**
92191
+ * ISO-8601 timestamp of when the attachment was created
92192
+ */
92193
+ createdAt: string
92194
+ /**
92195
+ * Size in bytes as reported by storage
92196
+ */
92197
+ sizeBytes: number
92198
+ /**
92199
+ * MIME type of the file
92200
+ */
92201
+ contentType: string
92202
+ /**
92203
+ * Short-lived signed URL to read the file. Re-read the message to get a fresh one
92204
+ */
92205
+ downloadUrl: string
92206
+ }[]
92207
+ /**
92208
+ * The same files as a flat list of ids, in the order attachments[] has them. This is the value support_message_create takes back; attachments.0.id names only the first file
92209
+ */
92210
+ attachmentIds: string[]
92102
92211
  /**
92103
92212
  * The agent author, or null when the external end user wrote the message
92104
92213
  */
92105
92214
  authorAgentId: (string | null)
92215
+ /**
92216
+ * How many files this message carries, 0 when it carries none. A dot-path has no length, so this is the only way a step can branch on whether there are files at all — and a message may carry a file and no body, so it is what tells those two messages apart
92217
+ */
92218
+ attachmentCount: number
92106
92219
  /**
92107
92220
  * The external author, or null when an agent wrote the message
92108
92221
  */
@@ -92206,10 +92319,18 @@ contentType: string
92206
92319
  */
92207
92320
  downloadUrl: string
92208
92321
  }[]
92322
+ /**
92323
+ * The same files as a flat list of ids, in the order attachments[] has them. This is the value support_message_create takes back; attachments.0.id names only the first file
92324
+ */
92325
+ attachmentIds: string[]
92209
92326
  /**
92210
92327
  * The agent author, or null when the external end user wrote the message
92211
92328
  */
92212
92329
  authorAgentId: (string | null)
92330
+ /**
92331
+ * How many files this message carries, 0 when it carries none. A dot-path has no length, so this is the only way a step can branch on whether there are files at all — and a message may carry a file and no body, so it is what tells those two messages apart
92332
+ */
92333
+ attachmentCount: number
92213
92334
  /**
92214
92335
  * The external author, or null when an agent wrote the message
92215
92336
  */
@@ -92299,6 +92420,10 @@ archived: boolean
92299
92420
  */
92300
92421
  category: ("open" | "pending" | "resolved" | "closed")
92301
92422
  }
92423
+ /**
92424
+ * The same labels as a flat list of ids, in the order labels[] has them. This is the value support_thread_update takes back: a dot-path can name this whole set, while labels.0.id names only the first element
92425
+ */
92426
+ labelIds: string[]
92302
92427
  /**
92303
92428
  * Free-form client-owned JSON
92304
92429
  */
@@ -92321,6 +92446,10 @@ createdAt: string
92321
92446
  * ISO-8601 last-modification timestamp
92322
92447
  */
92323
92448
  updatedAt: string
92449
+ /**
92450
+ * The same labels as a flat list of names, in the order labels[] has them
92451
+ */
92452
+ labelNames: string[]
92324
92453
  /**
92325
92454
  * ISO-8601 timestamp of the last reply, or null while there are none
92326
92455
  */
@@ -92551,14 +92680,23 @@ enabled?: boolean
92551
92680
  * When to show the survey once the page matches
92552
92681
  */
92553
92682
  trigger: ({
92683
+ /**
92684
+ * An immediate trigger, with nothing else to set
92685
+ */
92554
92686
  kind: "immediate"
92555
92687
  } | {
92688
+ /**
92689
+ * A delayed trigger, which needs seconds
92690
+ */
92556
92691
  kind: "delay"
92557
92692
  /**
92558
92693
  * How long to wait after the page matched, in seconds (at most a day)
92559
92694
  */
92560
92695
  seconds: number
92561
92696
  } | {
92697
+ /**
92698
+ * An event trigger, which needs the event name
92699
+ */
92562
92700
  kind: "event"
92563
92701
  /**
92564
92702
  * An event in the client’s own runtime. This toolkit never sees it
@@ -95333,6 +95471,9 @@ value?: string
95333
95471
  }]
95334
95472
  }
95335
95473
 
95474
+ /**
95475
+ * One delivery rule: which pages get which survey, when, how often, and to whom
95476
+ */
95336
95477
  export interface SupportRuleCreateOutput {
95337
95478
  /**
95338
95479
  * Rule id
@@ -95346,6 +95487,9 @@ device: ("any" | "desktop" | "mobile")
95346
95487
  * Whether the rule is live
95347
95488
  */
95348
95489
  enabled: boolean
95490
+ /**
95491
+ * When the client’s runtime shows the survey once the page matches: immediately, after a delay, or on an event of its own
95492
+ */
95349
95493
  trigger: {
95350
95494
  /**
95351
95495
  * Which kind of trigger this is
@@ -95372,13 +95516,22 @@ urlMatch: {
95372
95516
  * exact: the whole URL, character for character. prefix: the URL starts with the value. contains: the value appears anywhere in the URL. regex: a JavaScript regular expression, applied unanchored — write ^ yourself if you mean the start
95373
95517
  */
95374
95518
  kind: ("exact" | "prefix" | "contains" | "regex")
95519
+ /**
95520
+ * What the URL is compared against, read according to kind
95521
+ */
95375
95522
  value: string
95376
95523
  }
95377
95524
  /**
95378
95525
  * ISO-8601 creation timestamp
95379
95526
  */
95380
95527
  createdAt: string
95528
+ /**
95529
+ * How often the same person may see this survey. The client’s runtime enforces it — this toolkit never sees the end user
95530
+ */
95381
95531
  frequency: {
95532
+ /**
95533
+ * once: show it a single time, ever. until_answered: keep showing it until they respond. always: show it every time the rule matches
95534
+ */
95382
95535
  kind: ("once" | "until_answered" | "always")
95383
95536
  /**
95384
95537
  * Days between showings, when set
@@ -98152,6 +98305,9 @@ export interface SupportRuleGetInput {
98152
98305
  id: string
98153
98306
  }
98154
98307
 
98308
+ /**
98309
+ * One delivery rule: which pages get which survey, when, how often, and to whom
98310
+ */
98155
98311
  export interface SupportRuleGetOutput {
98156
98312
  /**
98157
98313
  * Rule id
@@ -98165,6 +98321,9 @@ device: ("any" | "desktop" | "mobile")
98165
98321
  * Whether the rule is live
98166
98322
  */
98167
98323
  enabled: boolean
98324
+ /**
98325
+ * When the client’s runtime shows the survey once the page matches: immediately, after a delay, or on an event of its own
98326
+ */
98168
98327
  trigger: {
98169
98328
  /**
98170
98329
  * Which kind of trigger this is
@@ -98191,13 +98350,22 @@ urlMatch: {
98191
98350
  * exact: the whole URL, character for character. prefix: the URL starts with the value. contains: the value appears anywhere in the URL. regex: a JavaScript regular expression, applied unanchored — write ^ yourself if you mean the start
98192
98351
  */
98193
98352
  kind: ("exact" | "prefix" | "contains" | "regex")
98353
+ /**
98354
+ * What the URL is compared against, read according to kind
98355
+ */
98194
98356
  value: string
98195
98357
  }
98196
98358
  /**
98197
98359
  * ISO-8601 creation timestamp
98198
98360
  */
98199
98361
  createdAt: string
98362
+ /**
98363
+ * How often the same person may see this survey. The client’s runtime enforces it — this toolkit never sees the end user
98364
+ */
98200
98365
  frequency: {
98366
+ /**
98367
+ * once: show it a single time, ever. until_answered: keep showing it until they respond. always: show it every time the rule matches
98368
+ */
98201
98369
  kind: ("once" | "until_answered" | "always")
98202
98370
  /**
98203
98371
  * Days between showings, when set
@@ -100994,6 +101162,9 @@ device: ("any" | "desktop" | "mobile")
100994
101162
  * Whether the rule is live
100995
101163
  */
100996
101164
  enabled: boolean
101165
+ /**
101166
+ * When the client’s runtime shows the survey once the page matches: immediately, after a delay, or on an event of its own
101167
+ */
100997
101168
  trigger: {
100998
101169
  /**
100999
101170
  * Which kind of trigger this is
@@ -101020,13 +101191,22 @@ urlMatch: {
101020
101191
  * exact: the whole URL, character for character. prefix: the URL starts with the value. contains: the value appears anywhere in the URL. regex: a JavaScript regular expression, applied unanchored — write ^ yourself if you mean the start
101021
101192
  */
101022
101193
  kind: ("exact" | "prefix" | "contains" | "regex")
101194
+ /**
101195
+ * What the URL is compared against, read according to kind
101196
+ */
101023
101197
  value: string
101024
101198
  }
101025
101199
  /**
101026
101200
  * ISO-8601 creation timestamp
101027
101201
  */
101028
101202
  createdAt: string
101203
+ /**
101204
+ * How often the same person may see this survey. The client’s runtime enforces it — this toolkit never sees the end user
101205
+ */
101029
101206
  frequency: {
101207
+ /**
101208
+ * once: show it a single time, ever. until_answered: keep showing it until they respond. always: show it every time the rule matches
101209
+ */
101030
101210
  kind: ("once" | "until_answered" | "always")
101031
101211
  /**
101032
101212
  * Days between showings, when set
@@ -103797,14 +103977,23 @@ enabled?: boolean
103797
103977
  * The new trigger, replacing the old one
103798
103978
  */
103799
103979
  trigger?: ({
103980
+ /**
103981
+ * An immediate trigger, with nothing else to set
103982
+ */
103800
103983
  kind: "immediate"
103801
103984
  } | {
103985
+ /**
103986
+ * A delayed trigger, which needs seconds
103987
+ */
103802
103988
  kind: "delay"
103803
103989
  /**
103804
103990
  * How long to wait after the page matched, in seconds (at most a day)
103805
103991
  */
103806
103992
  seconds: number
103807
103993
  } | {
103994
+ /**
103995
+ * An event trigger, which needs the event name
103996
+ */
103808
103997
  kind: "event"
103809
103998
  /**
103810
103999
  * An event in the client’s own runtime. This toolkit never sees it
@@ -106575,6 +106764,9 @@ value?: string
106575
106764
  }]
106576
106765
  }
106577
106766
 
106767
+ /**
106768
+ * One delivery rule: which pages get which survey, when, how often, and to whom
106769
+ */
106578
106770
  export interface SupportRuleUpdateOutput {
106579
106771
  /**
106580
106772
  * Rule id
@@ -106588,6 +106780,9 @@ device: ("any" | "desktop" | "mobile")
106588
106780
  * Whether the rule is live
106589
106781
  */
106590
106782
  enabled: boolean
106783
+ /**
106784
+ * When the client’s runtime shows the survey once the page matches: immediately, after a delay, or on an event of its own
106785
+ */
106591
106786
  trigger: {
106592
106787
  /**
106593
106788
  * Which kind of trigger this is
@@ -106614,13 +106809,22 @@ urlMatch: {
106614
106809
  * exact: the whole URL, character for character. prefix: the URL starts with the value. contains: the value appears anywhere in the URL. regex: a JavaScript regular expression, applied unanchored — write ^ yourself if you mean the start
106615
106810
  */
106616
106811
  kind: ("exact" | "prefix" | "contains" | "regex")
106812
+ /**
106813
+ * What the URL is compared against, read according to kind
106814
+ */
106617
106815
  value: string
106618
106816
  }
106619
106817
  /**
106620
106818
  * ISO-8601 creation timestamp
106621
106819
  */
106622
106820
  createdAt: string
106821
+ /**
106822
+ * How often the same person may see this survey. The client’s runtime enforces it — this toolkit never sees the end user
106823
+ */
106623
106824
  frequency: {
106825
+ /**
106826
+ * once: show it a single time, ever. until_answered: keep showing it until they respond. always: show it every time the rule matches
106827
+ */
106624
106828
  kind: ("once" | "until_answered" | "always")
106625
106829
  /**
106626
106830
  * Days between showings, when set
@@ -109453,6 +109657,40 @@ archived: boolean
109453
109657
  category: ("open" | "pending" | "resolved" | "closed")
109454
109658
  }
109455
109659
 
109660
+ export interface SupportStatusGetInput {
109661
+ /**
109662
+ * Status id
109663
+ */
109664
+ id: string
109665
+ }
109666
+
109667
+ export interface SupportStatusGetOutput {
109668
+ /**
109669
+ * Status id
109670
+ */
109671
+ id: string
109672
+ /**
109673
+ * Status name, unique within the product
109674
+ */
109675
+ name: string
109676
+ /**
109677
+ * Display colour as a hex string
109678
+ */
109679
+ color: string
109680
+ /**
109681
+ * Sort order within the status dictionary
109682
+ */
109683
+ order: number
109684
+ /**
109685
+ * Archived statuses stay readable but are not offered as targets
109686
+ */
109687
+ archived: boolean
109688
+ /**
109689
+ * Lifecycle bucket the status belongs to
109690
+ */
109691
+ category: ("open" | "pending" | "resolved" | "closed")
109692
+ }
109693
+
109456
109694
  export interface SupportStatusListInput {
109457
109695
  /**
109458
109696
  * Also return archived statuses (default false)
@@ -109635,6 +109873,14 @@ required?: boolean
109635
109873
  * ISO-8601 last-modification timestamp
109636
109874
  */
109637
109875
  updatedAt: string
109876
+ /**
109877
+ * The same questions as a flat list of ids, in the order they are asked
109878
+ */
109879
+ questionIds: string[]
109880
+ /**
109881
+ * How many questions this survey asks — the same field support/survey.published carries, so a workflow built from the trigger and one built from a get-step bind one shape
109882
+ */
109883
+ questionCount: number
109638
109884
  }
109639
109885
 
109640
109886
  export interface SupportSurveyCreateInput {
@@ -109797,6 +110043,14 @@ required?: boolean
109797
110043
  * ISO-8601 last-modification timestamp
109798
110044
  */
109799
110045
  updatedAt: string
110046
+ /**
110047
+ * The same questions as a flat list of ids, in the order they are asked
110048
+ */
110049
+ questionIds: string[]
110050
+ /**
110051
+ * How many questions this survey asks — the same field support/survey.published carries, so a workflow built from the trigger and one built from a get-step bind one shape
110052
+ */
110053
+ questionCount: number
109800
110054
  }
109801
110055
 
109802
110056
  export interface SupportSurveyGetInput {
@@ -109892,6 +110146,14 @@ required?: boolean
109892
110146
  * ISO-8601 last-modification timestamp
109893
110147
  */
109894
110148
  updatedAt: string
110149
+ /**
110150
+ * The same questions as a flat list of ids, in the order they are asked
110151
+ */
110152
+ questionIds: string[]
110153
+ /**
110154
+ * How many questions this survey asks — the same field support/survey.published carries, so a workflow built from the trigger and one built from a get-step bind one shape
110155
+ */
110156
+ questionCount: number
109895
110157
  }
109896
110158
 
109897
110159
  export interface SupportSurveyListInput {
@@ -110007,6 +110269,14 @@ required?: boolean
110007
110269
  * ISO-8601 last-modification timestamp
110008
110270
  */
110009
110271
  updatedAt: string
110272
+ /**
110273
+ * The same questions as a flat list of ids, in the order they are asked
110274
+ */
110275
+ questionIds: string[]
110276
+ /**
110277
+ * How many questions this survey asks — the same field support/survey.published carries, so a workflow built from the trigger and one built from a get-step bind one shape
110278
+ */
110279
+ questionCount: number
110010
110280
  }[]
110011
110281
  }
110012
110282
 
@@ -110103,6 +110373,14 @@ required?: boolean
110103
110373
  * ISO-8601 last-modification timestamp
110104
110374
  */
110105
110375
  updatedAt: string
110376
+ /**
110377
+ * The same questions as a flat list of ids, in the order they are asked
110378
+ */
110379
+ questionIds: string[]
110380
+ /**
110381
+ * How many questions this survey asks — the same field support/survey.published carries, so a workflow built from the trigger and one built from a get-step bind one shape
110382
+ */
110383
+ questionCount: number
110106
110384
  }
110107
110385
 
110108
110386
  export interface SupportSurveyStatsInput {
@@ -110325,6 +110603,14 @@ required?: boolean
110325
110603
  * ISO-8601 last-modification timestamp
110326
110604
  */
110327
110605
  updatedAt: string
110606
+ /**
110607
+ * The same questions as a flat list of ids, in the order they are asked
110608
+ */
110609
+ questionIds: string[]
110610
+ /**
110611
+ * How many questions this survey asks — the same field support/survey.published carries, so a workflow built from the trigger and one built from a get-step bind one shape
110612
+ */
110613
+ questionCount: number
110328
110614
  }
110329
110615
 
110330
110616
  export interface SupportSurveyUpdateInput {
@@ -110491,6 +110777,14 @@ required?: boolean
110491
110777
  * ISO-8601 last-modification timestamp
110492
110778
  */
110493
110779
  updatedAt: string
110780
+ /**
110781
+ * The same questions as a flat list of ids, in the order they are asked
110782
+ */
110783
+ questionIds: string[]
110784
+ /**
110785
+ * How many questions this survey asks — the same field support/survey.published carries, so a workflow built from the trigger and one built from a get-step bind one shape
110786
+ */
110787
+ questionCount: number
110494
110788
  }
110495
110789
 
110496
110790
  export interface SupportThreadAssignInput {
@@ -110571,6 +110865,10 @@ archived: boolean
110571
110865
  */
110572
110866
  category: ("open" | "pending" | "resolved" | "closed")
110573
110867
  }
110868
+ /**
110869
+ * The same labels as a flat list of ids, in the order labels[] has them. This is the value support_thread_update takes back: a dot-path can name this whole set, while labels.0.id names only the first element
110870
+ */
110871
+ labelIds: string[]
110574
110872
  /**
110575
110873
  * Free-form client-owned JSON
110576
110874
  */
@@ -110593,6 +110891,10 @@ createdAt: string
110593
110891
  * ISO-8601 last-modification timestamp
110594
110892
  */
110595
110893
  updatedAt: string
110894
+ /**
110895
+ * The same labels as a flat list of names, in the order labels[] has them
110896
+ */
110897
+ labelNames: string[]
110596
110898
  /**
110597
110899
  * ISO-8601 timestamp of the last reply, or null while there are none
110598
110900
  */
@@ -110713,6 +111015,10 @@ archived: boolean
110713
111015
  */
110714
111016
  category: ("open" | "pending" | "resolved" | "closed")
110715
111017
  }
111018
+ /**
111019
+ * The same labels as a flat list of ids, in the order labels[] has them. This is the value support_thread_update takes back: a dot-path can name this whole set, while labels.0.id names only the first element
111020
+ */
111021
+ labelIds: string[]
110716
111022
  /**
110717
111023
  * Free-form client-owned JSON
110718
111024
  */
@@ -110735,6 +111041,10 @@ createdAt: string
110735
111041
  * ISO-8601 last-modification timestamp
110736
111042
  */
110737
111043
  updatedAt: string
111044
+ /**
111045
+ * The same labels as a flat list of names, in the order labels[] has them
111046
+ */
111047
+ labelNames: string[]
110738
111048
  /**
110739
111049
  * ISO-8601 timestamp of the last reply, or null while there are none
110740
111050
  */
@@ -110827,6 +111137,10 @@ archived: boolean
110827
111137
  */
110828
111138
  category: ("open" | "pending" | "resolved" | "closed")
110829
111139
  }
111140
+ /**
111141
+ * The same labels as a flat list of ids, in the order labels[] has them. This is the value support_thread_update takes back: a dot-path can name this whole set, while labels.0.id names only the first element
111142
+ */
111143
+ labelIds: string[]
110830
111144
  /**
110831
111145
  * Free-form client-owned JSON
110832
111146
  */
@@ -110849,6 +111163,10 @@ createdAt: string
110849
111163
  * ISO-8601 last-modification timestamp
110850
111164
  */
110851
111165
  updatedAt: string
111166
+ /**
111167
+ * The same labels as a flat list of names, in the order labels[] has them
111168
+ */
111169
+ labelNames: string[]
110852
111170
  /**
110853
111171
  * ISO-8601 timestamp of the last reply, or null while there are none
110854
111172
  */
@@ -111001,6 +111319,10 @@ archived: boolean
111001
111319
  */
111002
111320
  category: ("open" | "pending" | "resolved" | "closed")
111003
111321
  }
111322
+ /**
111323
+ * The same labels as a flat list of ids, in the order labels[] has them. This is the value support_thread_update takes back: a dot-path can name this whole set, while labels.0.id names only the first element
111324
+ */
111325
+ labelIds: string[]
111004
111326
  /**
111005
111327
  * Free-form client-owned JSON
111006
111328
  */
@@ -111023,6 +111345,10 @@ createdAt: string
111023
111345
  * ISO-8601 last-modification timestamp
111024
111346
  */
111025
111347
  updatedAt: string
111348
+ /**
111349
+ * The same labels as a flat list of names, in the order labels[] has them
111350
+ */
111351
+ labelNames: string[]
111026
111352
  /**
111027
111353
  * ISO-8601 timestamp of the last reply, or null while there are none
111028
111354
  */
@@ -111120,6 +111446,10 @@ archived: boolean
111120
111446
  */
111121
111447
  category: ("open" | "pending" | "resolved" | "closed")
111122
111448
  }
111449
+ /**
111450
+ * The same labels as a flat list of ids, in the order labels[] has them. This is the value support_thread_update takes back: a dot-path can name this whole set, while labels.0.id names only the first element
111451
+ */
111452
+ labelIds: string[]
111123
111453
  /**
111124
111454
  * Free-form client-owned JSON
111125
111455
  */
@@ -111142,6 +111472,10 @@ createdAt: string
111142
111472
  * ISO-8601 last-modification timestamp
111143
111473
  */
111144
111474
  updatedAt: string
111475
+ /**
111476
+ * The same labels as a flat list of names, in the order labels[] has them
111477
+ */
111478
+ labelNames: string[]
111145
111479
  /**
111146
111480
  * ISO-8601 timestamp of the last reply, or null while there are none
111147
111481
  */
@@ -111254,6 +111588,10 @@ archived: boolean
111254
111588
  */
111255
111589
  category: ("open" | "pending" | "resolved" | "closed")
111256
111590
  }
111591
+ /**
111592
+ * The same labels as a flat list of ids, in the order labels[] has them. This is the value support_thread_update takes back: a dot-path can name this whole set, while labels.0.id names only the first element
111593
+ */
111594
+ labelIds: string[]
111257
111595
  /**
111258
111596
  * Free-form client-owned JSON
111259
111597
  */
@@ -111276,6 +111614,10 @@ createdAt: string
111276
111614
  * ISO-8601 last-modification timestamp
111277
111615
  */
111278
111616
  updatedAt: string
111617
+ /**
111618
+ * The same labels as a flat list of names, in the order labels[] has them
111619
+ */
111620
+ labelNames: string[]
111279
111621
  /**
111280
111622
  * ISO-8601 timestamp of the last reply, or null while there are none
111281
111623
  */
@@ -111723,54 +112065,150 @@ secretPrefix: string
111723
112065
  }
111724
112066
 
111725
112067
  export interface TrackingDomainsCreateInput {
112068
+ /**
112069
+ * Bare hostname to serve tracking from, which must sit under the chosen domain (e.g. analytics.example.com); a suggestion is used when omitted
112070
+ */
111726
112071
  host?: string
112072
+ /**
112073
+ * DNS records to request instead of the default CNAME to the tracking edge; leave unset unless the domain needs custom records
112074
+ */
111727
112075
  records?: {
111728
- ttl?: number
112076
+ /**
112077
+ * Time-to-live in seconds the record should be published with; the platform picks one when omitted
112078
+ */
112079
+ ttl?: number
112080
+ /**
112081
+ * Fully-qualified host the record is published at; defaults to the claimed tracking host
112082
+ */
111729
112083
  name?: string
112084
+ /**
112085
+ * Value the record points at — the edge hostname for a CNAME, the proof string for a TXT
112086
+ */
111730
112087
  target: string
112088
+ /**
112089
+ * DNS record type to publish, e.g. CNAME or TXT
112090
+ */
111731
112091
  recordType: string
111732
112092
  }[]
112093
+ /**
112094
+ * Product domain to claim the tracking host under, as listed in `domains[].domainId` by tracking_domains_list
112095
+ */
111733
112096
  domainId: string
111734
112097
  }
111735
112098
 
111736
112099
  export interface TrackingDomainsCreateOutput {
112100
+ /**
112101
+ * The binding as just claimed; it starts `pending` and goes `active` once the DNS is observed live
112102
+ */
111737
112103
  binding: {
112104
+ /**
112105
+ * Fully-qualified tracking host this binding serves, e.g. analytics.example.com
112106
+ */
111738
112107
  host: string
112108
+ /**
112109
+ * Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
112110
+ */
111739
112111
  status: ("pending" | "active" | "failed")
112112
+ /**
112113
+ * DNS records the platform expects to see published for this host, as returned when the binding was claimed
112114
+ */
111740
112115
  records: unknown[]
112116
+ /**
112117
+ * Product domain this tracking host sits under
112118
+ */
111741
112119
  domainId: string
112120
+ /**
112121
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
112122
+ */
111742
112123
  bindingId: string
112124
+ /**
112125
+ * When the binding was claimed
112126
+ */
111743
112127
  createdAt: string
112128
+ /**
112129
+ * Product the binding belongs to
112130
+ */
111744
112131
  productId: string
112132
+ /**
112133
+ * When the binding last changed status or records
112134
+ */
111745
112135
  updatedAt: string
112136
+ /**
112137
+ * Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
112138
+ */
111746
112139
  statusDetail: (string | null)
112140
+ /**
112141
+ * Extension that claimed the binding; tracking bindings are owned by this toolkit
112142
+ */
111747
112143
  ownerExtension: string
111748
112144
  }
112145
+ /**
112146
+ * Ordered, human-readable steps for publishing the DNS the claim needs; empty when the platform manages the domain itself
112147
+ */
111749
112148
  instructions: string[]
111750
112149
  }
111751
112150
 
111752
112151
  export interface TrackingDomainsDeleteInput {
112152
+ /**
112153
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
112154
+ */
111753
112155
  bindingId: string
111754
112156
  }
111755
112157
 
111756
112158
  export interface TrackingDomainsDeleteOutput {
112159
+ /**
112160
+ * Always true — the release succeeded; a failure arrives as an error, not as false
112161
+ */
111757
112162
  ok: true
111758
112163
  }
111759
112164
 
111760
112165
  export interface TrackingDomainsGetInput {
112166
+ /**
112167
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
112168
+ */
111761
112169
  bindingId: string
111762
112170
  }
111763
112171
 
111764
112172
  export interface TrackingDomainsGetOutput {
112173
+ /**
112174
+ * Fully-qualified tracking host this binding serves, e.g. analytics.example.com
112175
+ */
111765
112176
  host: string
112177
+ /**
112178
+ * Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
112179
+ */
111766
112180
  status: ("pending" | "active" | "failed")
112181
+ /**
112182
+ * DNS records the platform expects to see published for this host, as returned when the binding was claimed
112183
+ */
111767
112184
  records: unknown[]
112185
+ /**
112186
+ * Product domain this tracking host sits under
112187
+ */
111768
112188
  domainId: string
112189
+ /**
112190
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
112191
+ */
111769
112192
  bindingId: string
112193
+ /**
112194
+ * When the binding was claimed
112195
+ */
111770
112196
  createdAt: string
112197
+ /**
112198
+ * Product the binding belongs to
112199
+ */
111771
112200
  productId: string
112201
+ /**
112202
+ * When the binding last changed status or records
112203
+ */
111772
112204
  updatedAt: string
112205
+ /**
112206
+ * Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
112207
+ */
111773
112208
  statusDetail: (string | null)
112209
+ /**
112210
+ * Extension that claimed the binding; tracking bindings are owned by this toolkit
112211
+ */
111774
112212
  ownerExtension: string
111775
112213
  }
111776
112214
 
@@ -111779,41 +112217,125 @@ export interface TrackingDomainsListInput {
111779
112217
  }
111780
112218
 
111781
112219
  export interface TrackingDomainsListOutput {
112220
+ /**
112221
+ * The product's domains as the platform vouches for them — the set a new tracking host may be claimed under
112222
+ */
111782
112223
  domains: {
112224
+ /**
112225
+ * Who runs the DNS: `managed` means the platform publishes records for you, `external` means you publish them yourself
112226
+ */
111783
112227
  mode: ("external" | "managed")
112228
+ /**
112229
+ * Apex domain name the product owns, e.g. example.com
112230
+ */
111784
112231
  domain: string
112232
+ /**
112233
+ * Stable platform id of the product domain, and what a claim takes as its `domainId`
112234
+ */
111785
112235
  domainId: string
112236
+ /**
112237
+ * ISO-8601 timestamp of when the domain was added to the product
112238
+ */
111786
112239
  createdAt: string
112240
+ /**
112241
+ * How many extensions currently hold a host binding under this domain
112242
+ */
111787
112243
  extensionCount: number
111788
112244
  }[]
112245
+ /**
112246
+ * Tracking-host bindings this toolkit currently holds across those domains
112247
+ */
111789
112248
  bindings: {
112249
+ /**
112250
+ * Fully-qualified tracking host this binding serves, e.g. analytics.example.com
112251
+ */
111790
112252
  host: string
112253
+ /**
112254
+ * Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
112255
+ */
111791
112256
  status: ("pending" | "active" | "failed")
112257
+ /**
112258
+ * DNS records the platform expects to see published for this host, as returned when the binding was claimed
112259
+ */
111792
112260
  records: unknown[]
112261
+ /**
112262
+ * Product domain this tracking host sits under
112263
+ */
111793
112264
  domainId: string
112265
+ /**
112266
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
112267
+ */
111794
112268
  bindingId: string
112269
+ /**
112270
+ * When the binding was claimed
112271
+ */
111795
112272
  createdAt: string
112273
+ /**
112274
+ * Product the binding belongs to
112275
+ */
111796
112276
  productId: string
112277
+ /**
112278
+ * When the binding last changed status or records
112279
+ */
111797
112280
  updatedAt: string
112281
+ /**
112282
+ * Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
112283
+ */
111798
112284
  statusDetail: (string | null)
112285
+ /**
112286
+ * Extension that claimed the binding; tracking bindings are owned by this toolkit
112287
+ */
111799
112288
  ownerExtension: string
111800
112289
  }[]
111801
112290
  }
111802
112291
 
111803
112292
  export interface TrackingDomainsVerifyInput {
112293
+ /**
112294
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
112295
+ */
111804
112296
  bindingId: string
111805
112297
  }
111806
112298
 
111807
112299
  export interface TrackingDomainsVerifyOutput {
112300
+ /**
112301
+ * Fully-qualified tracking host this binding serves, e.g. analytics.example.com
112302
+ */
111808
112303
  host: string
112304
+ /**
112305
+ * Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
112306
+ */
111809
112307
  status: ("pending" | "active" | "failed")
112308
+ /**
112309
+ * DNS records the platform expects to see published for this host, as returned when the binding was claimed
112310
+ */
111810
112311
  records: unknown[]
112312
+ /**
112313
+ * Product domain this tracking host sits under
112314
+ */
111811
112315
  domainId: string
112316
+ /**
112317
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
112318
+ */
111812
112319
  bindingId: string
112320
+ /**
112321
+ * When the binding was claimed
112322
+ */
111813
112323
  createdAt: string
112324
+ /**
112325
+ * Product the binding belongs to
112326
+ */
111814
112327
  productId: string
112328
+ /**
112329
+ * When the binding last changed status or records
112330
+ */
111815
112331
  updatedAt: string
112332
+ /**
112333
+ * Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
112334
+ */
111816
112335
  statusDetail: (string | null)
112336
+ /**
112337
+ * Extension that claimed the binding; tracking bindings are owned by this toolkit
112338
+ */
111817
112339
  ownerExtension: string
111818
112340
  }
111819
112341
 
@@ -111825,7 +112347,13 @@ name: string
111825
112347
  }
111826
112348
 
111827
112349
  export interface TrackingEventNamesArchiveOutput {
112350
+ /**
112351
+ * Event name whose status was changed
112352
+ */
111828
112353
  name: string
112354
+ /**
112355
+ * The status as it now stands: `archived` hides the name from pickers and reports, `active` restores it
112356
+ */
111829
112357
  status: ("active" | "archived")
111830
112358
  }
111831
112359
 
@@ -111849,13 +112377,37 @@ status?: ("active" | "archived")
111849
112377
  }
111850
112378
 
111851
112379
  export interface TrackingEventNamesListOutput {
112380
+ /**
112381
+ * The matching catalogue entries, ordered by the requested sort
112382
+ */
111852
112383
  names: {
112384
+ /**
112385
+ * Event name exactly as the tracking script sends it — the string other tools take as their `event`
112386
+ */
111853
112387
  name: string
112388
+ /**
112389
+ * How many events with this name have been received in total
112390
+ */
111854
112391
  count: number
112392
+ /**
112393
+ * `active` for a name in use, `archived` for one hidden from pickers and reports
112394
+ */
111855
112395
  status: string
112396
+ /**
112397
+ * ISO-8601 timestamp of the most recent event received under this name
112398
+ */
111856
112399
  lastSeen: string
112400
+ /**
112401
+ * ISO-8601 timestamp of the first event ever received under this name
112402
+ */
111857
112403
  firstSeen: string
112404
+ /**
112405
+ * Property keys sampled from recent events with this name, so you can see what the payload carries
112406
+ */
111858
112407
  propsKeys: string[]
112408
+ /**
112409
+ * Whether this name is marked a conversion, which is what makes it available as a workflow trigger
112410
+ */
111859
112411
  isConversion: boolean
111860
112412
  }[]
111861
112413
  }
@@ -111872,7 +112424,13 @@ isConversion: boolean
111872
112424
  }
111873
112425
 
111874
112426
  export interface TrackingEventNamesSetConversionOutput {
112427
+ /**
112428
+ * Event name the conversion flag was applied to
112429
+ */
111875
112430
  name: string
112431
+ /**
112432
+ * The flag as it now stands after the change
112433
+ */
111876
112434
  isConversion: boolean
111877
112435
  }
111878
112436
 
@@ -111884,7 +112442,13 @@ name: string
111884
112442
  }
111885
112443
 
111886
112444
  export interface TrackingEventNamesUnarchiveOutput {
112445
+ /**
112446
+ * Event name whose status was changed
112447
+ */
111887
112448
  name: string
112449
+ /**
112450
+ * The status as it now stands: `archived` hides the name from pickers and reports, `active` restores it
112451
+ */
111888
112452
  status: ("active" | "archived")
111889
112453
  }
111890
112454
 
@@ -111893,14 +112457,32 @@ export interface TrackingGoogleadsConnectionStatusInput {
111893
112457
  }
111894
112458
 
111895
112459
  export type TrackingGoogleadsConnectionStatusOutput = ({
112460
+ /**
112461
+ * Where the Google Ads connection stands: connected means an account is chosen and its credential works, so the other tools will run.
112462
+ */
111896
112463
  state: "connected"
112464
+ /**
112465
+ * The Google Ads account the data is read from and conversions are written to, as a customer id. Only present while connected.
112466
+ */
111897
112467
  customerId: string
112468
+ /**
112469
+ * 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.
112470
+ */
111898
112471
  loginCustomerId: string
111899
112472
  } | {
112473
+ /**
112474
+ * Google is authorised but nobody has picked which Google Ads account to use yet, so nothing can run until someone does.
112475
+ */
111900
112476
  state: "pending_account_selection"
111901
112477
  } | {
112478
+ /**
112479
+ * The Google authorisation expired or was revoked and has to be granted again before anything can run.
112480
+ */
111902
112481
  state: "reauth_required"
111903
112482
  } | {
112483
+ /**
112484
+ * No Google Ads connection has been set up for this product at all.
112485
+ */
111904
112486
  state: "not_connected"
111905
112487
  })
111906
112488
 
@@ -111921,26 +112503,77 @@ export interface TrackingGoogleadsFeedbackConfigGetInput {
111921
112503
  }
111922
112504
 
111923
112505
  export interface TrackingGoogleadsFeedbackConfigGetOutput {
112506
+ /**
112507
+ * 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.
112508
+ */
111924
112509
  mode: ("existing_pixel" | "fresh_pixel")
112510
+ /**
112511
+ * Which tracked events become which Google Ads conversion action, and where each one takes its money value from. Disabled rules stay listed.
112512
+ */
111925
112513
  rules: {
112514
+ /**
112515
+ * Tracked event-name this rule uploads, as listed by tracking_event-names_list
112516
+ */
111926
112517
  event: string
112518
+ /**
112519
+ * What monetary value is reported to Google for each conversion this rule uploads
112520
+ */
111927
112521
  value: ({
112522
+ /**
112523
+ * 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
112524
+ */
111928
112525
  source: "revenue"
111929
112526
  } | {
112527
+ /**
112528
+ * 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
112529
+ */
111930
112530
  source: "dynamic"
111931
112531
  } | {
112532
+ /**
112533
+ * 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
112534
+ */
111932
112535
  source: "fixed"
112536
+ /**
112537
+ * ISO-4217 currency the fixed amount is denominated in, e.g. USD
112538
+ */
111933
112539
  currency: string
112540
+ /**
112541
+ * The fixed value in minor units (e.g. cents); 0 means a value-less lead conversion
112542
+ */
111934
112543
  amountMinor: number
111935
112544
  })
112545
+ /**
112546
+ * Whether this single mapping is live; a disabled rule is kept but uploads nothing
112547
+ */
111936
112548
  enabled: boolean
112549
+ /**
112550
+ * Google conversion action the event is reported as, in the form customers/<cid>/conversionActions/<id>
112551
+ */
111937
112552
  conversionAction: string
111938
112553
  }[]
112554
+ /**
112555
+ * Whether conversions are being sent to Google Ads at all. False leaves every rule below in place but uploads nothing.
112556
+ */
111939
112557
  enabled: boolean
112558
+ /**
112559
+ * The tenant this configuration belongs to. Never supplied by a caller — it comes from the authenticated identity.
112560
+ */
111940
112561
  productId: string
112562
+ /**
112563
+ * 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.
112564
+ */
111941
112565
  lookbackDays: number
112566
+ /**
112567
+ * 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.
112568
+ */
111942
112569
  accountCurrency: (string | null)
112570
+ /**
112571
+ * The event names that may use the Dynamic value source, because revenue is known for them. Any other event needs a fixed amount.
112572
+ */
111943
112573
  dynamicValueEvents: string[]
112574
+ /**
112575
+ * Whether a stored email or phone number is sent alongside the click, so Google can match conversions the click id alone would miss.
112576
+ */
111944
112577
  enhancedConversions: boolean
111945
112578
  }
111946
112579
 
@@ -111957,11 +112590,23 @@ rules?: {
111957
112590
  * Any tracked event-name for this product (validated against the event-name catalog)
111958
112591
  */
111959
112592
  event: string
112593
+ /**
112594
+ * What monetary value to report to Google for each conversion this rule uploads
112595
+ */
111960
112596
  value: ({
112597
+ /**
112598
+ * 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
112599
+ */
111961
112600
  source: "revenue"
111962
112601
  } | {
112602
+ /**
112603
+ * 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
112604
+ */
111963
112605
  source: "dynamic"
111964
112606
  } | {
112607
+ /**
112608
+ * 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
112609
+ */
111965
112610
  source: "fixed"
111966
112611
  /**
111967
112612
  * ISO-4217 currency code, e.g. USD
@@ -111972,6 +112617,9 @@ currency: string
111972
112617
  */
111973
112618
  amountMinor?: number
111974
112619
  })
112620
+ /**
112621
+ * Whether this single mapping is live; a disabled rule is kept but uploads nothing
112622
+ */
111975
112623
  enabled: boolean
111976
112624
  /**
111977
112625
  * Google conversion action resource: customers/<cid>/conversionActions/<id>
@@ -111993,28 +112641,82 @@ enhancedConversions?: boolean
111993
112641
  }
111994
112642
 
111995
112643
  export interface TrackingGoogleadsFeedbackConfigSetOutput {
112644
+ /**
112645
+ * The config as it now stands after the write, with server-side normalisation applied
112646
+ */
111996
112647
  config: {
112648
+ /**
112649
+ * How our uploads sit beside your own tag: `existing_pixel` only fills gaps it left, `fresh_pixel` reports our data alone
112650
+ */
111997
112651
  mode: ("existing_pixel" | "fresh_pixel")
112652
+ /**
112653
+ * The event-to-conversion-action mappings, each with its own value source
112654
+ */
111998
112655
  rules: {
112656
+ /**
112657
+ * Tracked event-name this rule uploads, as listed by tracking_event-names_list
112658
+ */
111999
112659
  event: string
112660
+ /**
112661
+ * What monetary value is reported to Google for each conversion this rule uploads
112662
+ */
112000
112663
  value: ({
112664
+ /**
112665
+ * 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
112666
+ */
112001
112667
  source: "revenue"
112002
112668
  } | {
112669
+ /**
112670
+ * 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
112671
+ */
112003
112672
  source: "dynamic"
112004
112673
  } | {
112674
+ /**
112675
+ * 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
112676
+ */
112005
112677
  source: "fixed"
112678
+ /**
112679
+ * ISO-4217 currency the fixed amount is denominated in, e.g. USD
112680
+ */
112006
112681
  currency: string
112682
+ /**
112683
+ * The fixed value in minor units (e.g. cents); 0 means a value-less lead conversion
112684
+ */
112007
112685
  amountMinor: number
112008
112686
  })
112687
+ /**
112688
+ * Whether this single mapping is live; a disabled rule is kept but uploads nothing
112689
+ */
112009
112690
  enabled: boolean
112691
+ /**
112692
+ * Google conversion action the event is reported as, in the form customers/<cid>/conversionActions/<id>
112693
+ */
112010
112694
  conversionAction: string
112011
112695
  }[]
112696
+ /**
112697
+ * Master switch: with it off no rule uploads anything, however the individual rules are set
112698
+ */
112012
112699
  enabled: boolean
112700
+ /**
112701
+ * Product this conversion-feedback config belongs to
112702
+ */
112013
112703
  productId: string
112704
+ /**
112705
+ * How many days back a click may have happened and still be matched to a conversion (max 90)
112706
+ */
112014
112707
  lookbackDays: number
112708
+ /**
112709
+ * The connected Google Ads account's currency, best-effort; null or absent when it could not be read
112710
+ */
112015
112711
  accountCurrency?: (string | null)
112712
+ /**
112713
+ * Whether hashed email and phone are sent alongside gclid as additional match keys, which raises match rates
112714
+ */
112016
112715
  enhancedConversions: boolean
112017
112716
  }
112717
+ /**
112718
+ * Plain-language safety notes about what this combination of mode and match keys will do to the connected account
112719
+ */
112018
112720
  guidance: string[]
112019
112721
  }
112020
112722
 
@@ -112023,15 +112725,48 @@ export interface TrackingGoogleadsFeedbackRunInput {
112023
112725
  }
112024
112726
 
112025
112727
  export interface TrackingGoogleadsFeedbackRunOutput {
112728
+ /**
112729
+ * 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.
112730
+ */
112731
+ runId: string
112732
+ /**
112733
+ * Rows Google rejected in this pass.
112734
+ */
112026
112735
  failed: number
112736
+ /**
112737
+ * Of those, the ones that had a usable click id and a value, so a payload was actually built for them.
112738
+ */
112027
112739
  matched: number
112740
+ /**
112741
+ * Conversions dropped because no Google click could be tied to the person. A high count here is a tagging problem, not a Google one.
112742
+ */
112028
112743
  noGclid: number
112744
+ /**
112745
+ * 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.
112746
+ */
112029
112747
  skipped?: ("disabled" | "no_rules" | "not_connected")
112748
+ /**
112749
+ * Conversions in the lookback window that an enabled rule applied to.
112750
+ */
112030
112751
  selected: number
112752
+ /**
112753
+ * Rows Google accepted in this pass.
112754
+ */
112031
112755
  uploaded: number
112756
+ /**
112757
+ * The tenant whose conversions this pass uploaded.
112758
+ */
112032
112759
  productId: string
112760
+ /**
112761
+ * Conversions held back because their money value had not landed yet. They are retried on a later pass.
112762
+ */
112033
112763
  zeroValue: number
112034
- partialFailureError?: unknown
112764
+ /**
112765
+ * Google's own rejection detail, passed through unchanged, when it refused part of the batch. Absent when it accepted everything.
112766
+ */
112767
+ partialFailureError?: {
112768
+ [k: string]: unknown
112769
+ }
112035
112770
  }
112036
112771
 
112037
112772
  export interface TrackingGoogleadsFeedbackStatusInput {
@@ -112039,25 +112774,82 @@ export interface TrackingGoogleadsFeedbackStatusInput {
112039
112774
  }
112040
112775
 
112041
112776
  export interface TrackingGoogleadsFeedbackStatusOutput {
112777
+ /**
112778
+ * 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.
112779
+ */
112042
112780
  mode: ("existing_pixel" | "fresh_pixel")
112781
+ /**
112782
+ * Rows Google has rejected since this product was connected, across every pass.
112783
+ */
112043
112784
  failed: number
112785
+ /**
112786
+ * Whether conversions are being sent to Google Ads at all.
112787
+ */
112044
112788
  enabled: boolean
112789
+ /**
112790
+ * Coverage of the most recent pass. Null when no pass has run for this product yet.
112791
+ */
112045
112792
  lastRun: ({
112793
+ /**
112794
+ * When the last pass finished. Null when the stored summary predates this field.
112795
+ */
112046
112796
  ranAt: (string | null)
112797
+ /**
112798
+ * Rows Google rejected. Anything above zero is what makes the status partial.
112799
+ */
112047
112800
  failed: number
112801
+ /**
112802
+ * 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.
112803
+ */
112048
112804
  status: ("ok" | "partial" | "not_connected")
112805
+ /**
112806
+ * Of those, the ones that had a usable click id and a value, so a payload was actually built for them.
112807
+ */
112049
112808
  matched: number
112809
+ /**
112810
+ * Conversions dropped because no Google click could be tied to the person. A high count here is a tagging problem, not a Google one.
112811
+ */
112050
112812
  noGclid: number
112813
+ /**
112814
+ * Conversions in the lookback window that an enabled rule applied to.
112815
+ */
112051
112816
  selected: number
112817
+ /**
112818
+ * Rows Google accepted.
112819
+ */
112052
112820
  uploaded: number
112821
+ /**
112822
+ * Conversions held back because their money value had not landed yet. They are retried on a later pass.
112823
+ */
112053
112824
  zeroValue: number
112054
112825
  } | null)
112826
+ /**
112827
+ * 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.
112828
+ */
112055
112829
  guidance: string[]
112830
+ /**
112831
+ * Rows Google has accepted since this product was connected, across every pass.
112832
+ */
112056
112833
  uploaded: number
112834
+ /**
112835
+ * How many event-to-conversion-action rules are configured, enabled or not.
112836
+ */
112057
112837
  ruleCount: number
112838
+ /**
112839
+ * How many days back each pass looks for conversions to send, and how far back a click may be matched.
112840
+ */
112058
112841
  lookbackDays: number
112842
+ /**
112843
+ * 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.
112844
+ */
112059
112845
  accountCurrency: (string | null)
112846
+ /**
112847
+ * The event names that may use the Dynamic value source, because revenue is known for them.
112848
+ */
112060
112849
  dynamicValueEvents: string[]
112850
+ /**
112851
+ * Whether a stored email or phone number is sent alongside the click, so Google can match conversions the click id alone would miss.
112852
+ */
112061
112853
  enhancedConversions: boolean
112062
112854
  }
112063
112855
 
@@ -112079,65 +112871,228 @@ conversionDatetime: string
112079
112871
  }[]
112080
112872
 
112081
112873
  export interface TrackingGoogleadsRoasReportInput {
112082
- to: string
112083
- from: string
112874
+ /**
112875
+ * 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.
112876
+ */
112877
+ to?: string
112878
+ /**
112879
+ * 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.
112880
+ */
112881
+ from?: string
112882
+ /**
112883
+ * Which touchpoint gets the credit for a conversion: the last paid click before it, or the first. Defaults to last_click.
112884
+ */
112084
112885
  model?: ("last_click" | "first_click")
112886
+ /**
112887
+ * Restrict to conversions tracked on this installed site, e.g. acme.com. Omit to cover every domain of the product.
112888
+ */
112085
112889
  domain?: string
112890
+ /**
112891
+ * Restrict to one Google Ads account, by its customer id without dashes. Omit to cover every connected account.
112892
+ */
112086
112893
  customerId?: string
112894
+ /**
112895
+ * 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.
112896
+ */
112087
112897
  lookbackDays?: number
112088
112898
  }
112089
112899
 
112090
112900
  export interface TrackingGoogleadsRoasReportOutput {
112901
+ /**
112902
+ * End of the window this report covers, echoed back as an ISO-8601 UTC timestamp.
112903
+ */
112091
112904
  to: string
112905
+ /**
112906
+ * Start of the window this report covers, echoed back as an ISO-8601 UTC timestamp.
112907
+ */
112092
112908
  from: string
112909
+ /**
112910
+ * Which touchpoint earned the credit in these numbers: the last paid click before the conversion, or the first.
112911
+ */
112093
112912
  model: ("last_click" | "first_click")
112913
+ /**
112914
+ * 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.
112915
+ */
112916
+ stale: boolean
112917
+ /**
112918
+ * The installed site this report was restricted to; null when it covers every domain of the product.
112919
+ */
112094
112920
  domain: (string | null)
112921
+ /**
112922
+ * One entry per Google Ads account and currency. Kept apart on purpose: amounts in different currencies are never added together.
112923
+ */
112095
112924
  accounts: {
112925
+ /**
112926
+ * 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.
112927
+ */
112096
112928
  stale: boolean
112929
+ /**
112930
+ * 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.
112931
+ */
112097
112932
  currency: string
112933
+ /**
112934
+ * This account's campaigns, each with its ad groups and ads nested underneath.
112935
+ */
112098
112936
  campaigns: TrackingGoogleadsRoasReportOutputItems[]
112937
+ /**
112938
+ * Google Ads account these campaigns belong to, by customer id without dashes.
112939
+ */
112099
112940
  customerId: string
112941
+ /**
112942
+ * When cost was last pulled from Google Ads for this account (ISO-8601 UTC); null when it has never been pulled.
112943
+ */
112100
112944
  costLastSyncedAt: (string | null)
112101
112945
  }[]
112946
+ /**
112947
+ * ISO-4217 code every amount in this report is expressed in, when all accounts share one; null when the report spans several currencies.
112948
+ */
112949
+ currency: (string | null)
112950
+ /**
112951
+ * When this report was calculated (ISO-8601 UTC). The figures are a snapshot at this moment, not live.
112952
+ */
112102
112953
  computedAt: string
112954
+ /**
112955
+ * Google Ads account this whole report covers, when it covers exactly one; null when it spans several accounts.
112956
+ */
112957
+ customerId: (string | null)
112958
+ /**
112959
+ * How far back before a conversion a paid click was allowed to sit and still earn the credit, in days.
112960
+ */
112103
112961
  lookbackDays: number
112962
+ /**
112963
+ * Oldest moment cost was pulled from Google Ads across the accounts below (ISO-8601 UTC); null when any account has never synced.
112964
+ */
112965
+ costLastSyncedAt: (string | null)
112966
+ /**
112967
+ * 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.
112968
+ */
112104
112969
  unmatchedAttributed: {
112970
+ /**
112971
+ * Revenue that stayed outside every campaign, one row per currency. Never cross-summed.
112972
+ */
112105
112973
  revenue: TrackingGoogleadsRoasReportOutputItems1[]
112974
+ /**
112975
+ * How many distinct customers paid but could not be traced to any Google Ads campaign.
112976
+ */
112106
112977
  conversions: number
112978
+ /**
112979
+ * 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.
112980
+ */
112107
112981
  utmCampaign: (string | null)
112108
112982
  }[]
112109
112983
  }
112110
112984
  export interface TrackingGoogleadsRoasReportOutputItems {
112985
+ /**
112986
+ * What one attributed customer cost: cost divided by attributed conversions, in minor units of the account currency. null when there were no attributed conversions.
112987
+ */
112111
112988
  cpa: (number | null)
112989
+ /**
112990
+ * Google Ads ad this node is, by its numeric id; null on a campaign or ad group node.
112991
+ */
112112
112992
  adId: (string | null)
112993
+ /**
112994
+ * What Google charged and what Google itself counted for this node over the window.
112995
+ */
112113
112996
  cost: {
112997
+ /**
112998
+ * How many times someone clicked through from Google over the window.
112999
+ */
112114
113000
  clicks: number
113001
+ /**
113002
+ * ISO-4217 code of the Google Ads account these numbers come from, e.g. USD. Fixed per account.
113003
+ */
112115
113004
  currency: string
113005
+ /**
113006
+ * What Google charged for this campaign, ad group or ad over the window, in minor units (1250 = 12.50).
113007
+ */
112116
113008
  costMinor: number
113009
+ /**
113010
+ * How many times Google showed this ad over the window.
113011
+ */
112117
113012
  impressions: number
113013
+ /**
113014
+ * Conversions GOOGLE counted for this node — its own attribution, not ours. May be fractional, because Google splits credit across touchpoints.
113015
+ */
112118
113016
  platformConversions: number
113017
+ /**
113018
+ * Conversion value GOOGLE reports for this node, in minor units of the account currency. Compare it with our attributed revenue; the two rarely agree.
113019
+ */
112119
113020
  platformConversionsValueMinor: number
112120
113021
  }
113022
+ /**
113023
+ * What this campaign, ad group or ad is called in Google Ads; null when the name has not been synced.
113024
+ */
112121
113025
  name: (string | null)
113026
+ /**
113027
+ * 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.
113028
+ */
112122
113029
  roas: (number | null)
113030
+ /**
113031
+ * 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.
113032
+ */
112123
113033
  level: ("campaign" | "ad_group" | "ad")
113034
+ /**
113035
+ * Google Ads campaign state, passed through raw: ENABLED, PAUSED, REMOVED. Present on campaign nodes only — the key is absent below.
113036
+ */
112124
113037
  status?: string
113038
+ /**
113039
+ * The level below this one: ad groups under a campaign, ads under an ad group, empty on an ad.
113040
+ */
112125
113041
  children: TrackingGoogleadsRoasReportOutputItems[]
113042
+ /**
113043
+ * Google Ads ad group this node belongs to, by its numeric id; null on a campaign node.
113044
+ */
112126
113045
  adGroupId: (string | null)
113046
+ /**
113047
+ * What WE traced back to this node from our own tracking. null below campaign level, and null on a campaign nothing was traced to.
113048
+ */
112127
113049
  attributed: ({
113050
+ /**
113051
+ * What WE traced back to this campaign, one row per currency the customers paid in. Never cross-summed — use accountCurrencyNetMinor for a single figure.
113052
+ */
112128
113053
  revenue: TrackingGoogleadsRoasReportOutputItems1[]
112129
- matchedBy: (("campaign_id" | "campaign_name" | "gclid") | null)
113054
+ /**
113055
+ * 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.
113056
+ */
113057
+ matchedBy: (("lt_campaign_id" | "campaign_id" | "campaign_name" | "gclid") | null)
113058
+ /**
113059
+ * 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.
113060
+ */
112130
113061
  conversions: number
113062
+ /**
113063
+ * 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.
113064
+ */
112131
113065
  accountCurrencyNetMinor: number
112132
113066
  } | null)
113067
+ /**
113068
+ * Google Ads campaign this node belongs to, by its numeric id. Set at every level.
113069
+ */
112133
113070
  campaignId: string
113071
+ /**
113072
+ * Google Ads account this node belongs to, by customer id without dashes.
113073
+ */
112134
113074
  customerId: string
113075
+ /**
113076
+ * 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.
113077
+ */
112135
113078
  channelType?: (string | null)
112136
113079
  }
112137
113080
  export interface TrackingGoogleadsRoasReportOutputItems1 {
113081
+ /**
113082
+ * ISO-4217 code the three amounts on this row are denominated in, e.g. USD. One row per currency; rows are never added together.
113083
+ */
112138
113084
  currency: string
113085
+ /**
113086
+ * Money kept after refunds (gross minus refunded), in minor units of this row's currency. This is what ROAS is calculated from.
113087
+ */
112139
113088
  netMinor: number
113089
+ /**
113090
+ * Money taken before refunds, in minor units of this row's currency (1250 = 12.50).
113091
+ */
112140
113092
  grossMinor: number
113093
+ /**
113094
+ * Money given back within the window, in minor units of this row's currency; already subtracted from netMinor.
113095
+ */
112141
113096
  refundedMinor: number
112142
113097
  }
112143
113098
 
@@ -112146,21 +113101,67 @@ export interface TrackingGoogleadsSyncNowInput {
112146
113101
  }
112147
113102
 
112148
113103
  export interface TrackingGoogleadsSyncNowOutput {
113104
+ /**
113105
+ * 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.
113106
+ */
112149
113107
  rows: {
113108
+ /**
113109
+ * Ads written.
113110
+ */
112150
113111
  ads: number
113112
+ /**
113113
+ * Day-by-day ad spend and metric rows written.
113114
+ */
112151
113115
  adDaily: number
113116
+ /**
113117
+ * Ad groups written.
113118
+ */
112152
113119
  adGroups: number
113120
+ /**
113121
+ * Campaigns written, names and status included.
113122
+ */
112153
113123
  campaigns: number
113124
+ /**
113125
+ * Day-by-day ad-group spend and metric rows written.
113126
+ */
112154
113127
  adGroupDaily: number
113128
+ /**
113129
+ * Day-by-day campaign spend and metric rows written.
113130
+ */
112155
113131
  campaignDaily: number
112156
113132
  }
113133
+ /**
113134
+ * 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.
113135
+ */
113136
+ runId: string
113137
+ /**
113138
+ * 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.
113139
+ */
112157
113140
  reason?: string
113141
+ /**
113142
+ * Whether the sweep ran. skipped means the Google Ads account could not be reached and nothing at all was written.
113143
+ */
112158
113144
  status: ("ok" | "skipped")
113145
+ /**
113146
+ * The range of days this sweep read spend and metrics for.
113147
+ */
112159
113148
  window: {
113149
+ /**
113150
+ * Last day covered, inclusive, as YYYY-MM-DD.
113151
+ */
112160
113152
  end: string
113153
+ /**
113154
+ * First day covered, inclusive, as YYYY-MM-DD.
113155
+ */
112161
113156
  start: string
112162
113157
  }
113158
+ /**
113159
+ * The tenant whose Google Ads account was swept.
113160
+ */
112163
113161
  productId: string
113162
+ /**
113163
+ * When the sweep finished. Null when nothing was written.
113164
+ */
112164
113165
  lastSyncedAt: (string | null)
112165
113166
  }
112166
113167
 
@@ -112176,54 +113177,187 @@ from?: string
112176
113177
  }
112177
113178
 
112178
113179
  export interface TrackingGoogleadsTrackingHealthOutput {
113180
+ /**
113181
+ * End of the range these figures cover, as an instant.
113182
+ */
112179
113183
  to: string
113184
+ /**
113185
+ * Start of the range these figures cover, as an instant. Echoes back the range that was asked for.
113186
+ */
112180
113187
  from: string
113188
+ /**
113189
+ * Whether the tracking template has been seen working live: true once at least one tagged click has arrived.
113190
+ */
112181
113191
  installed: boolean
113192
+ /**
113193
+ * Whether the sample above was cut short. True means more untagged URLs exist than are listed.
113194
+ */
112182
113195
  truncated: boolean
113196
+ /**
113197
+ * Google paid clicks that arrived on the site in this range. The denominator for everything below.
113198
+ */
112183
113199
  paidClicks: number
113200
+ /**
113201
+ * 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.
113202
+ */
112184
113203
  dataQuality: {
113204
+ /**
113205
+ * 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.
113206
+ */
112185
113207
  cookielessPaidClicks: number
112186
113208
  }
113209
+ /**
113210
+ * Share of paid clicks that arrived untagged, between 0 and 1. Anything much above zero means the tracking template needs fixing.
113211
+ */
112187
113212
  breakageRate: number
113213
+ /**
113214
+ * Of those, the ones that arrived carrying our URL tracking parameters, so the campaign behind them is known.
113215
+ */
112188
113216
  taggedClicks: number
113217
+ /**
113218
+ * When the most recent untagged click arrived. Close to now means the breakage is still live. Null when none did.
113219
+ */
112189
113220
  lastUntaggedAt: (string | null)
113221
+ /**
113222
+ * 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.
113223
+ */
112190
113224
  untaggedClicks: number
113225
+ /**
113226
+ * When the first untagged click of the range arrived — roughly when the breakage started. Null when none did.
113227
+ */
112191
113228
  firstUntaggedAt: (string | null)
113229
+ /**
113230
+ * 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.
113231
+ */
112192
113232
  sampleUntaggedUrls: string[]
112193
113233
  }
112194
113234
 
112195
113235
  export interface TrackingGoogleadsUsVsPlatformInput {
112196
- to: string
112197
- from: string
113236
+ /**
113237
+ * 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.
113238
+ */
113239
+ to?: string
113240
+ /**
113241
+ * 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.
113242
+ */
113243
+ from?: string
113244
+ /**
113245
+ * Which touchpoint gets the credit for a conversion: the last paid click before it, or the first. Defaults to last_click.
113246
+ */
112198
113247
  model?: ("last_click" | "first_click")
113248
+ /**
113249
+ * Restrict to conversions tracked on this installed site, e.g. acme.com. Omit to cover every domain of the product.
113250
+ */
112199
113251
  domain?: string
113252
+ /**
113253
+ * Restrict to one Google Ads account, by its customer id without dashes. Omit to cover every connected account.
113254
+ */
112200
113255
  customerId?: string
113256
+ /**
113257
+ * 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.
113258
+ */
112201
113259
  lookbackDays?: number
112202
113260
  }
112203
113261
 
112204
113262
  export interface TrackingGoogleadsUsVsPlatformOutput {
113263
+ /**
113264
+ * End of the window this comparison covers, echoed back as an ISO-8601 UTC timestamp.
113265
+ */
112205
113266
  to: string
113267
+ /**
113268
+ * Start of the window this comparison covers, echoed back as an ISO-8601 UTC timestamp.
113269
+ */
112206
113270
  from: string
113271
+ /**
113272
+ * 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.
113273
+ */
112207
113274
  model: ("last_click" | "first_click")
113275
+ /**
113276
+ * 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.
113277
+ */
113278
+ stale: boolean
113279
+ /**
113280
+ * The installed site this comparison was restricted to; null when it covers every domain of the product.
113281
+ */
112208
113282
  domain: (string | null)
113283
+ /**
113284
+ * One entry per Google Ads account and currency, each holding its per-campaign comparison rows. Currencies are never added together.
113285
+ */
112209
113286
  accounts: {
113287
+ /**
113288
+ * One row per campaign in this account, ours beside Google's.
113289
+ */
112210
113290
  rows: {
113291
+ /**
113292
+ * What this campaign is called in Google Ads; null when the name has not been synced.
113293
+ */
112211
113294
  name: (string | null)
113295
+ /**
113296
+ * ISO-4217 code both sides of this comparison are expressed in, e.g. USD. Ours and Google's are never converted.
113297
+ */
112212
113298
  currency: string
113299
+ /**
113300
+ * The Google Ads campaign this row compares, by its numeric id.
113301
+ */
112213
113302
  campaignId: string
113303
+ /**
113304
+ * Google Ads account this campaign belongs to, by customer id without dashes.
113305
+ */
112214
113306
  customerId: string
113307
+ /**
113308
+ * How many distinct customers WE traced to this campaign. A whole number: we never split a customer across campaigns.
113309
+ */
112215
113310
  ourConversions: number
113311
+ /**
113312
+ * Net revenue WE traced to this campaign, in minor units of the account currency (1250 = 12.50). 0 when we traced none.
113313
+ */
112216
113314
  ourRevenueNetMinor: number
113315
+ /**
113316
+ * 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.
113317
+ */
112217
113318
  platformConversions: number
113319
+ /**
113320
+ * Conversion value GOOGLE reports for the same campaign, in minor units of the account currency. The counterpart of ourRevenueNetMinor.
113321
+ */
112218
113322
  platformConversionsValueMinor: number
112219
113323
  }[]
113324
+ /**
113325
+ * 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.
113326
+ */
112220
113327
  stale: boolean
113328
+ /**
113329
+ * 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.
113330
+ */
112221
113331
  currency: string
113332
+ /**
113333
+ * Google Ads account these comparison rows belong to, by customer id without dashes.
113334
+ */
112222
113335
  customerId: string
113336
+ /**
113337
+ * When cost was last pulled from Google Ads for this account (ISO-8601 UTC); null when it has never been pulled.
113338
+ */
112223
113339
  costLastSyncedAt: (string | null)
112224
113340
  }[]
113341
+ /**
113342
+ * ISO-4217 code every amount in this report is expressed in, when all accounts share one; null when the report spans several currencies.
113343
+ */
113344
+ currency: (string | null)
113345
+ /**
113346
+ * When this comparison was calculated (ISO-8601 UTC). The figures are a snapshot at this moment, not live.
113347
+ */
112225
113348
  computedAt: string
113349
+ /**
113350
+ * Google Ads account this whole report covers, when it covers exactly one; null when it spans several accounts.
113351
+ */
113352
+ customerId: (string | null)
113353
+ /**
113354
+ * How far back before a conversion a paid click was allowed to sit and still earn the credit on our side, in days.
113355
+ */
112226
113356
  lookbackDays: number
113357
+ /**
113358
+ * Oldest moment cost was pulled from Google Ads across the accounts below (ISO-8601 UTC); null when any account has never synced.
113359
+ */
113360
+ costLastSyncedAt: (string | null)
112227
113361
  }
112228
113362
 
112229
113363
  export interface TrackingIdentityHealthInput {
@@ -112231,11 +113365,29 @@ export interface TrackingIdentityHealthInput {
112231
113365
  }
112232
113366
 
112233
113367
  export interface TrackingIdentityHealthOutput {
113368
+ /**
113369
+ * When these numbers were computed, ISO 8601 UTC. They are a live count, so this is effectively the moment of the call.
113370
+ */
112234
113371
  computedAt: string
113372
+ /**
113373
+ * How many people the product holds in total, anonymous ones included. The denominator of both rates below.
113374
+ */
112235
113375
  totalProfiles: number
113376
+ /**
113377
+ * 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.
113378
+ */
112236
113379
  identifiedRate: number
113380
+ /**
113381
+ * 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.
113382
+ */
112237
113383
  adTouchpointRate: number
113384
+ /**
113385
+ * How many of them an email or phone is known for — the people a message can actually be sent to.
113386
+ */
112238
113387
  identifiedProfiles: number
113388
+ /**
113389
+ * 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.
113390
+ */
112239
113391
  adTouchpointProfiles: number
112240
113392
  }
112241
113393
 
@@ -112247,6 +113399,9 @@ domain: string
112247
113399
  }
112248
113400
 
112249
113401
  export interface TrackingInstallDomainsCreateOutput {
113402
+ /**
113403
+ * The domain as stored after normalisation, which may differ from what was submitted
113404
+ */
112250
113405
  domain: string
112251
113406
  }
112252
113407
 
@@ -112258,6 +113413,9 @@ domain: string
112258
113413
  }
112259
113414
 
112260
113415
  export interface TrackingInstallDomainsDeleteOutput {
113416
+ /**
113417
+ * Always true — the domain was removed; a failure arrives as an error, not as false
113418
+ */
112261
113419
  ok: true
112262
113420
  }
112263
113421
 
@@ -112266,14 +113424,35 @@ export interface TrackingInstallDomainsListInput {
112266
113424
  }
112267
113425
 
112268
113426
  export interface TrackingInstallDomainsListOutput {
113427
+ /**
113428
+ * Domains sending events that nobody registered — usually a staging host, a typo, or an install worth adding
113429
+ */
112269
113430
  discovered: TrackingInstallDomainsListOutputItems[]
113431
+ /**
113432
+ * Domains deliberately put on the install checklist, each with whether its script has been seen
113433
+ */
112270
113434
  registered: TrackingInstallDomainsListOutputItems[]
113435
+ /**
113436
+ * Length in days of the lookback window the `seen` and `lastSeen` figures are measured over
113437
+ */
112271
113438
  windowDays: number
112272
113439
  }
112273
113440
  export interface TrackingInstallDomainsListOutputItems {
113441
+ /**
113442
+ * Whether the tracking script actually sent an event from this domain inside the lookback window
113443
+ */
112274
113444
  seen: boolean
113445
+ /**
113446
+ * Normalised domain name the status is reported for
113447
+ */
112275
113448
  domain: string
113449
+ /**
113450
+ * ISO-8601 timestamp of the most recent event from this domain, or null if none arrived in the window
113451
+ */
112276
113452
  lastSeen: (string | null)
113453
+ /**
113454
+ * Whether the domain is on the install checklist on purpose, as opposed to merely observed sending events
113455
+ */
112277
113456
  registered: boolean
112278
113457
  }
112279
113458
 
@@ -112285,6 +113464,9 @@ domain: string
112285
113464
  }
112286
113465
 
112287
113466
  export interface TrackingLinkDomainsCreateOutput {
113467
+ /**
113468
+ * The domain as stored after normalisation, which may differ from what was submitted
113469
+ */
112288
113470
  domain: string
112289
113471
  }
112290
113472
 
@@ -112296,6 +113478,9 @@ domain: string
112296
113478
  }
112297
113479
 
112298
113480
  export interface TrackingLinkDomainsDeleteOutput {
113481
+ /**
113482
+ * Always true — the domain left the linking group; a failure arrives as an error, not as false
113483
+ */
112299
113484
  ok: true
112300
113485
  }
112301
113486
 
@@ -112304,6 +113489,9 @@ export interface TrackingLinkDomainsListInput {
112304
113489
  }
112305
113490
 
112306
113491
  export interface TrackingLinkDomainsListOutput {
113492
+ /**
113493
+ * Root domains in the linking group; the tracking script decorates links between any two of them so one visitor stays one visitor
113494
+ */
112307
113495
  domains: string[]
112308
113496
  }
112309
113497
 
@@ -112323,22 +113511,70 @@ domain?: string
112323
113511
  }
112324
113512
 
112325
113513
  export interface TrackingLiveEventsListOutput {
113514
+ /**
113515
+ * Pass back as `since` to fetch what arrived after this page. Null when there is nothing older to page into.
113516
+ */
112326
113517
  cursor: (string | null)
113518
+ /**
113519
+ * The page of events, newest first.
113520
+ */
112327
113521
  events: {
113522
+ /**
113523
+ * Stable identifier of this single event; unique within the product and safe to deduplicate on across polls.
113524
+ */
112328
113525
  id: string
113526
+ /**
113527
+ * When the event happened, as reported by the tracker (ISO 8601, UTC).
113528
+ */
112329
113529
  ts: string
113530
+ /**
113531
+ * Page address the event fired on, query string included. Free text from the customer site, so it can carry personal data.
113532
+ */
112330
113533
  url: (string | null)
113534
+ /**
113535
+ * Event name as sent by the site, e.g. 'pageview' or a custom conversion name.
113536
+ */
112331
113537
  name: string
113538
+ /**
113539
+ * Document title of that page at the time. Free text from the customer site, so it can carry personal data.
113540
+ */
112332
113541
  title: (string | null)
113542
+ /**
113543
+ * Site the event came from; null when the tracker could not determine one.
113544
+ */
112333
113545
  domain: (string | null)
113546
+ /**
113547
+ * Where this visit came from, as read off the landing URL and referrer. Every field is null when the visit carried nothing.
113548
+ */
112334
113549
  source: {
113550
+ /**
113551
+ * Address the visitor arrived from; null on a direct visit. Free text from the customer site, so it can carry personal data.
113552
+ */
112335
113553
  referrer: (string | null)
113554
+ /**
113555
+ * utm_medium of the landing URL, e.g. cpc; null when absent.
113556
+ */
112336
113557
  utmMedium: (string | null)
113558
+ /**
113559
+ * utm_source of the landing URL, e.g. newsletter; null when absent.
113560
+ */
112337
113561
  utmSource: (string | null)
113562
+ /**
113563
+ * Which ad-network click id was present on the landing URL, e.g. 'gclid'. Null when the visit carried none.
113564
+ */
112338
113565
  clickIdType: (string | null)
113566
+ /**
113567
+ * utm_campaign of the landing URL; null when absent.
113568
+ */
112339
113569
  utmCampaign: (string | null)
112340
113570
  }
113571
+ /**
113572
+ * Two-letter ISO 3166-1 alpha-2 country resolved from the request, e.g. DE; null when it could not be resolved.
113573
+ */
112341
113574
  country: (string | null)
113575
+ /**
113576
+ * 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.
113577
+ */
112342
113578
  anonymousId: (string | null)
112343
113579
  }[]
112344
113580
  }
@@ -112351,18 +113587,52 @@ profileId: string
112351
113587
  }
112352
113588
 
112353
113589
  export interface TrackingProfilesDeleteOutput {
113590
+ /**
113591
+ * Always true: the response only exists when the erasure ran. A failure arrives as an error, not as ok=false.
113592
+ */
112354
113593
  ok: true
113594
+ /**
113595
+ * What happened to the archived copy of the events. Postgres is erased synchronously; the archive is not, and this says so out loud.
113596
+ */
112355
113597
  archive: {
113598
+ /**
113599
+ * Plain-language reason the archived copy could not be deleted in the same breath — text meant to be quoted into a compliance record.
113600
+ */
112356
113601
  note: string
113602
+ /**
113603
+ * Always gap_flagged: the archived copy is known to still hold this person and the gap has been recorded rather than silently ignored.
113604
+ */
112357
113605
  status: "gap_flagged"
112358
113606
  }
113607
+ /**
113608
+ * How much was actually destroyed, by kind. Worth recording: it is the evidence that the erasure did something.
113609
+ */
112359
113610
  deleted: {
113611
+ /**
113612
+ * Tracked events removed, found through the anonymous ids this person browsed under.
113613
+ */
112360
113614
  events: number
113615
+ /**
113616
+ * Merge records removed — the history of this person having been joined with another.
113617
+ */
112361
113618
  merges: number
113619
+ /**
113620
+ * Profile rows removed: 1 in practice, and 0 only if the row vanished between the lookup and the delete.
113621
+ */
112362
113622
  profile: number
113623
+ /**
113624
+ * Emails, phones, anonymous ids and click ids removed for this person.
113625
+ */
112363
113626
  identifiers: number
112364
113627
  }
113628
+ /**
113629
+ * The person who was erased. Nothing else of them remains, so this is all there is left to name them by.
113630
+ */
112365
113631
  profileId: string
113632
+ /**
113633
+ * 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.
113634
+ */
113635
+ requestId: string
112366
113636
  }
112367
113637
 
112368
113638
  export interface TrackingProfilesExportInput {
@@ -112373,52 +113643,172 @@ profileId: string
112373
113643
  }
112374
113644
 
112375
113645
  export interface TrackingProfilesExportOutput {
113646
+ /**
113647
+ * The complete history, newest event first, capped at 50000 events — check `truncated` before treating it as complete.
113648
+ */
112376
113649
  journey: {
113650
+ /**
113651
+ * When the event happened, ISO 8601 UTC. The journey is ordered by this, newest first.
113652
+ */
112377
113653
  ts: string
113654
+ /**
113655
+ * Opaque handle for this one event, unique inside the product. Use it to deduplicate, not to sort — it carries no order.
113656
+ */
112378
113657
  ref: string
113658
+ /**
113659
+ * Full address of the page, query string included. Personal data — it can carry an email in a link. Null off-page.
113660
+ */
112379
113661
  url: (string | null)
113662
+ /**
113663
+ * What happened, as the tracking snippet named it: page_view, signup, purchase, or any custom name the product sends.
113664
+ */
112380
113665
  name: string
113666
+ /**
113667
+ * Custom properties the product attached to this event. Free-form: the keys are whatever the snippet sent, and they differ by event name.
113668
+ */
112381
113669
  props: {
112382
113670
  [k: string]: unknown
112383
113671
  }
113672
+ /**
113673
+ * Title of the page as the browser reported it. Null off-page.
113674
+ */
112384
113675
  title: (string | null)
113676
+ /**
113677
+ * Hostname the event was sent from. Null for an event with no page behind it, such as a server-side call.
113678
+ */
112385
113679
  domain: (string | null)
113680
+ /**
113681
+ * Campaign tags and ad click carried by this event, as they were on the URL at the time.
113682
+ */
112386
113683
  source: {
113684
+ /**
113685
+ * The ad click identifier on this URL, raw. Personal data: it resolves to one individual inside the ad network.
113686
+ */
112387
113687
  clickId: (string | null)
113688
+ /**
113689
+ * utm_term on the URL of this event — the keyword bought, on a paid-search arrival.
113690
+ */
112388
113691
  utmTerm: (string | null)
113692
+ /**
113693
+ * utm_medium on the URL of this event.
113694
+ */
112389
113695
  utmMedium: (string | null)
113696
+ /**
113697
+ * utm_source on the URL of THIS event — the campaign at this moment, not the one that first acquired the person.
113698
+ */
112390
113699
  utmSource: (string | null)
113700
+ /**
113701
+ * utm_content on the URL of this event — which creative or link variant was clicked.
113702
+ */
112391
113703
  utmContent: (string | null)
113704
+ /**
113705
+ * Which ad network stamped the click id below: gclid for Google Ads, fbclid for Meta. Null on a non-ad arrival.
113706
+ */
112392
113707
  clickIdType: (string | null)
113708
+ /**
113709
+ * utm_campaign on the URL of this event.
113710
+ */
112393
113711
  utmCampaign: (string | null)
112394
113712
  }
113713
+ /**
113714
+ * Two-letter ISO 3166-1 country the request came from, resolved from the IP at collection time. Null when it could not be resolved.
113715
+ */
112395
113716
  country: (string | null)
113717
+ /**
113718
+ * Where the person came from immediately before this event. Null on a direct arrival or off-page.
113719
+ */
112396
113720
  referrer: (string | null)
113721
+ /**
113722
+ * Handle for the browsing session this event belongs to; events sharing it happened in one sitting. Null for an event collected outside a session.
113723
+ */
112397
113724
  sessionId: (string | null)
112398
113725
  }[]
113726
+ /**
113727
+ * The person themselves: their handle, how far they have come, and when they were seen.
113728
+ */
112399
113729
  profile: {
113730
+ /**
113731
+ * 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.
113732
+ */
112400
113733
  status: ("anonymous" | "identified" | "customer")
113734
+ /**
113735
+ * When this product first created the profile row, ISO 8601 UTC. Later than firstSeenAt when events were backfilled.
113736
+ */
112401
113737
  createdAt: string
113738
+ /**
113739
+ * Stable handle for this person inside the product. Pass it to any other people step; it survives identity merges.
113740
+ */
112402
113741
  profileId: string
113742
+ /**
113743
+ * Timestamp of their most recent event, ISO 8601 UTC — the freshness of everything else here.
113744
+ */
112403
113745
  lastSeenAt: string
113746
+ /**
113747
+ * Timestamp of the earliest event on record for this person, ISO 8601 UTC.
113748
+ */
112404
113749
  firstSeenAt: string
112405
113750
  }
113751
+ /**
113752
+ * 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.
113753
+ */
112406
113754
  signals: {
113755
+ /**
113756
+ * 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.
113757
+ */
112407
113758
  emails: string[]
113759
+ /**
113760
+ * Every phone number this person has been identified by. Stably ordered for display and diffing only, with no primary among them.
113761
+ */
112408
113762
  phones: string[]
113763
+ /**
113764
+ * Distinct hostnames this person browsed, taken from their events — not an identifier type, just where they were.
113765
+ */
112409
113766
  domains: string[]
113767
+ /**
113768
+ * 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.
113769
+ */
112410
113770
  clickIds: {
113771
+ /**
113772
+ * Which ad network the click came from — gclid for Google Ads, fbclid for Meta. Open set.
113773
+ */
112411
113774
  type: string
113775
+ /**
113776
+ * The click identifier itself, raw, as the network stamped it on the landing URL.
113777
+ */
112412
113778
  value: string
112413
113779
  }[]
112414
113780
  }
113781
+ /**
113782
+ * True when the history hit the 50000-event cap and older events were left out. False means this export is everything held.
113783
+ */
112415
113784
  truncated: boolean
113785
+ /**
113786
+ * When this export was produced, ISO 8601 UTC — the as-of date to put on a subject-access response.
113787
+ */
112416
113788
  exportedAt: string
113789
+ /**
113790
+ * 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.
113791
+ */
112417
113792
  acquisition: ({
113793
+ /**
113794
+ * Channel of that same first visit (utm_medium): cpc, email, social, and so on. Null when untagged.
113795
+ */
112418
113796
  utmMedium: (string | null)
113797
+ /**
113798
+ * 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.
113799
+ */
112419
113800
  utmSource: (string | null)
113801
+ /**
113802
+ * 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.
113803
+ */
112420
113804
  clickIdType: (string | null)
113805
+ /**
113806
+ * When that first visit happened, ISO 8601 UTC. This is the timestamp of the earliest event, not when the profile row was written.
113807
+ */
112421
113808
  firstSeenAt: string
113809
+ /**
113810
+ * Campaign of that same first visit (utm_campaign). Null when untagged.
113811
+ */
112422
113812
  utmCampaign: (string | null)
112423
113813
  } | null)
112424
113814
  }
@@ -112433,78 +113823,228 @@ profileId: string
112433
113823
  */
112434
113824
  journeyLimit?: number
112435
113825
  /**
112436
- * Opaque cursor to page further back through the journey
113826
+ * Continue paging back through the journey: pass the cursor the previous page returned. Omit to start at the most recent event.
112437
113827
  */
112438
113828
  journeyCursor?: string
112439
113829
  }
112440
113830
 
112441
113831
  export interface TrackingProfilesGetOutput {
113832
+ /**
113833
+ * Lifetime value of this person, per currency. Null when revenue tracking is not in use for the product.
113834
+ */
112442
113835
  ltv: ({
113836
+ /**
113837
+ * 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.
113838
+ */
112443
113839
  entries: {
113840
+ /**
113841
+ * ISO 4217 code the amounts beside it are denominated in, e.g. EUR. One entry per code the person ever paid in.
113842
+ */
112444
113843
  currency: string
113844
+ /**
113845
+ * What the business actually kept: gross minus refunded, in minor units. This is the number to rank customers by.
113846
+ */
112445
113847
  netMinor: number
113848
+ /**
113849
+ * Everything the person was ever charged, in minor units (1250 = 12.50 EUR). Refunds are not subtracted here.
113850
+ */
112446
113851
  grossMinor: number
113852
+ /**
113853
+ * Their most recent payment in this currency, ISO 8601 UTC — how live the relationship is.
113854
+ */
112447
113855
  lastPaymentAt: (string | null)
113856
+ /**
113857
+ * How much of the gross went back to them, in minor units. Zero for a person who never had a refund.
113858
+ */
112448
113859
  refundedMinor: number
113860
+ /**
113861
+ * When this person first paid in this currency, ISO 8601 UTC. Null when the totals were computed without a dated payment.
113862
+ */
112449
113863
  firstPaymentAt: (string | null)
112450
113864
  }[]
113865
+ /**
113866
+ * The person these totals belong to — the same handle as profile.profileId.
113867
+ */
112451
113868
  profileId: string
113869
+ /**
113870
+ * When these totals were last recomputed, ISO 8601 UTC. Null when they have never been computed.
113871
+ */
112452
113872
  computedAt: (string | null)
112453
113873
  } | null)
113874
+ /**
113875
+ * 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.
113876
+ */
112454
113877
  journey: {
113878
+ /**
113879
+ * Pass back as `journeyCursor` to page further back in time. Null once the journey is exhausted.
113880
+ */
112455
113881
  cursor: (string | null)
113882
+ /**
113883
+ * This page of the journey, newest event first.
113884
+ */
112456
113885
  events: {
113886
+ /**
113887
+ * When the event happened, ISO 8601 UTC. The journey is ordered by this, newest first.
113888
+ */
112457
113889
  ts: string
113890
+ /**
113891
+ * Opaque handle for this one event, unique inside the product. Use it to deduplicate, not to sort — it carries no order.
113892
+ */
112458
113893
  ref: string
113894
+ /**
113895
+ * Full address of the page, query string included. Personal data — it can carry an email in a link. Null off-page.
113896
+ */
112459
113897
  url: (string | null)
113898
+ /**
113899
+ * What happened, as the tracking snippet named it: page_view, signup, purchase, or any custom name the product sends.
113900
+ */
112460
113901
  name: string
113902
+ /**
113903
+ * Custom properties the product attached to this event. Free-form: the keys are whatever the snippet sent, and they differ by event name.
113904
+ */
112461
113905
  props: {
112462
113906
  [k: string]: unknown
112463
113907
  }
113908
+ /**
113909
+ * Title of the page as the browser reported it. Null off-page.
113910
+ */
112464
113911
  title: (string | null)
113912
+ /**
113913
+ * Hostname the event was sent from. Null for an event with no page behind it, such as a server-side call.
113914
+ */
112465
113915
  domain: (string | null)
113916
+ /**
113917
+ * Campaign tags and ad click carried by this event, as they were on the URL at the time.
113918
+ */
112466
113919
  source: {
113920
+ /**
113921
+ * The ad click identifier on this URL, raw. Personal data: it resolves to one individual inside the ad network.
113922
+ */
112467
113923
  clickId: (string | null)
113924
+ /**
113925
+ * utm_term on the URL of this event — the keyword bought, on a paid-search arrival.
113926
+ */
112468
113927
  utmTerm: (string | null)
113928
+ /**
113929
+ * utm_medium on the URL of this event.
113930
+ */
112469
113931
  utmMedium: (string | null)
113932
+ /**
113933
+ * utm_source on the URL of THIS event — the campaign at this moment, not the one that first acquired the person.
113934
+ */
112470
113935
  utmSource: (string | null)
113936
+ /**
113937
+ * utm_content on the URL of this event — which creative or link variant was clicked.
113938
+ */
112471
113939
  utmContent: (string | null)
113940
+ /**
113941
+ * Which ad network stamped the click id below: gclid for Google Ads, fbclid for Meta. Null on a non-ad arrival.
113942
+ */
112472
113943
  clickIdType: (string | null)
113944
+ /**
113945
+ * utm_campaign on the URL of this event.
113946
+ */
112473
113947
  utmCampaign: (string | null)
112474
113948
  }
113949
+ /**
113950
+ * Two-letter ISO 3166-1 country the request came from, resolved from the IP at collection time. Null when it could not be resolved.
113951
+ */
112475
113952
  country: (string | null)
113953
+ /**
113954
+ * Where the person came from immediately before this event. Null on a direct arrival or off-page.
113955
+ */
112476
113956
  referrer: (string | null)
113957
+ /**
113958
+ * Handle for the browsing session this event belongs to; events sharing it happened in one sitting. Null for an event collected outside a session.
113959
+ */
112477
113960
  sessionId: (string | null)
112478
113961
  }[]
112479
113962
  }
113963
+ /**
113964
+ * The person themselves: their handle, how far they have come, and when they were seen.
113965
+ */
112480
113966
  profile: {
113967
+ /**
113968
+ * 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.
113969
+ */
112481
113970
  status: ("anonymous" | "identified" | "customer")
113971
+ /**
113972
+ * When this product first created the profile row, ISO 8601 UTC. Later than firstSeenAt when events were backfilled.
113973
+ */
112482
113974
  createdAt: string
113975
+ /**
113976
+ * Stable handle for this person inside the product. Pass it to any other people step; it survives identity merges.
113977
+ */
112483
113978
  profileId: string
113979
+ /**
113980
+ * Timestamp of their most recent event, ISO 8601 UTC — the freshness of everything else here.
113981
+ */
112484
113982
  lastSeenAt: string
113983
+ /**
113984
+ * Timestamp of the earliest event on record for this person, ISO 8601 UTC.
113985
+ */
112485
113986
  firstSeenAt: string
112486
113987
  }
113988
+ /**
113989
+ * 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.
113990
+ */
112487
113991
  signals: {
113992
+ /**
113993
+ * 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.
113994
+ */
112488
113995
  emails: string[]
113996
+ /**
113997
+ * Every phone number this person has been identified by. Stably ordered for display and diffing only, with no primary among them.
113998
+ */
112489
113999
  phones: string[]
114000
+ /**
114001
+ * Distinct hostnames this person browsed, taken from their events — not an identifier type, just where they were.
114002
+ */
112490
114003
  domains: string[]
114004
+ /**
114005
+ * 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.
114006
+ */
112491
114007
  clickIds: {
114008
+ /**
114009
+ * Which ad network the click came from — gclid for Google Ads, fbclid for Meta. Open set.
114010
+ */
112492
114011
  type: string
114012
+ /**
114013
+ * The click identifier itself, raw, as the network stamped it on the landing URL.
114014
+ */
112493
114015
  value: string
112494
114016
  }[]
112495
114017
  }
114018
+ /**
114019
+ * 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.
114020
+ */
112496
114021
  acquisition: ({
114022
+ /**
114023
+ * Channel of that same first visit (utm_medium): cpc, email, social, and so on. Null when untagged.
114024
+ */
112497
114025
  utmMedium: (string | null)
114026
+ /**
114027
+ * 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.
114028
+ */
112498
114029
  utmSource: (string | null)
114030
+ /**
114031
+ * 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.
114032
+ */
112499
114033
  clickIdType: (string | null)
114034
+ /**
114035
+ * When that first visit happened, ISO 8601 UTC. This is the timestamp of the earliest event, not when the profile row was written.
114036
+ */
112500
114037
  firstSeenAt: string
114038
+ /**
114039
+ * Campaign of that same first visit (utm_campaign). Null when untagged.
114040
+ */
112501
114041
  utmCampaign: (string | null)
112502
114042
  } | null)
112503
114043
  }
112504
114044
 
112505
114045
  export interface TrackingProfilesListInput {
112506
114046
  /**
112507
- * Exact email to find (case-insensitive), or a prefix when emailMatch=prefix
114047
+ * Email to search people by — the whole address by default, or its beginning when emailMatch is prefix. Omit to search across everyone.
112508
114048
  */
112509
114049
  email?: string
112510
114050
  /**
@@ -112512,132 +114052,363 @@ email?: string
112512
114052
  */
112513
114053
  limit?: number
112514
114054
  /**
112515
- * Opaque pagination cursor from a previous response
114055
+ * Continue a previous page: pass the cursor that page returned. Omit to start from the most recently seen person.
112516
114056
  */
112517
114057
  cursor?: string
112518
114058
  /**
112519
- * Filter by profile status
114059
+ * Keep only people at this stage — anonymous, identified or customer. Omit to get all three.
112520
114060
  */
112521
114061
  status?: ("anonymous" | "identified" | "customer")
112522
114062
  /**
112523
- * How to match the email filter
114063
+ * How the email filter is matched: exact (default) compares the whole address case-insensitively, prefix matches everyone whose address starts with what you typed.
112524
114064
  */
112525
114065
  emailMatch?: ("exact" | "prefix")
112526
114066
  }
112527
114067
 
112528
114068
  export interface TrackingProfilesListOutput {
114069
+ /**
114070
+ * Pass this back as `cursor` to fetch the next page. Null on the last page — that null is how a loop knows to stop.
114071
+ */
112529
114072
  cursor: (string | null)
114073
+ /**
114074
+ * The page of people, most recently seen first. Shorter than the requested limit on the last page.
114075
+ */
112530
114076
  profiles: {
114077
+ /**
114078
+ * 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.
114079
+ */
112531
114080
  emails: string[]
114081
+ /**
114082
+ * How far this person has come: anonymous = only a browser, identified = an email or phone is known, customer = they have paid.
114083
+ */
112532
114084
  status: ("anonymous" | "identified" | "customer")
114085
+ /**
114086
+ * Stable handle for this person. Feed it to a get, export or erase step.
114087
+ */
112533
114088
  profileId: string
114089
+ /**
114090
+ * Timestamp of their most recent event, ISO 8601 UTC. The page is ordered by this, newest first.
114091
+ */
112534
114092
  lastSeenAt: string
114093
+ /**
114094
+ * 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.
114095
+ */
112535
114096
  acquisition: ({
114097
+ /**
114098
+ * Channel of that same first visit (utm_medium): cpc, email, social, and so on. Null when untagged.
114099
+ */
112536
114100
  utmMedium: (string | null)
114101
+ /**
114102
+ * 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.
114103
+ */
112537
114104
  utmSource: (string | null)
114105
+ /**
114106
+ * 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.
114107
+ */
112538
114108
  clickIdType: (string | null)
114109
+ /**
114110
+ * When that first visit happened, ISO 8601 UTC. This is the timestamp of the earliest event, not when the profile row was written.
114111
+ */
112539
114112
  firstSeenAt: string
114113
+ /**
114114
+ * Campaign of that same first visit (utm_campaign). Null when untagged.
114115
+ */
112540
114116
  utmCampaign: (string | null)
112541
114117
  } | null)
114118
+ /**
114119
+ * Timestamp of their earliest event, ISO 8601 UTC.
114120
+ */
112542
114121
  firstSeenAt: string
112543
114122
  }[]
112544
114123
  }
112545
114124
 
112546
114125
  export interface TrackingReportsAttributedJourneyInput {
114126
+ /**
114127
+ * Show only journey events at or before this instant (ISO). Omit for the whole history.
114128
+ */
112547
114129
  to?: string
114130
+ /**
114131
+ * Show only journey events at or after this instant (ISO). Omit for the whole history.
114132
+ */
112548
114133
  from?: string
114134
+ /**
114135
+ * Attribution model to explain the decision under; re-reads the same history, so switching it is free (default 'last_click').
114136
+ */
112549
114137
  model?: ("last_click" | "first_click")
112550
114138
  /**
112551
114139
  * The profile id (uuid)
112552
114140
  */
112553
114141
  profileId: string
114142
+ /**
114143
+ * How far back before the conversion a touchpoint may be credited, in days (default 30).
114144
+ */
112554
114145
  lookbackDays?: number
112555
114146
  }
112556
114147
 
112557
114148
  export interface TrackingReportsAttributedJourneyOutput {
114149
+ /**
114150
+ * What this person actually did, in order.
114151
+ */
112558
114152
  journey: {
114153
+ /**
114154
+ * Every tracked event for this person inside the requested window, oldest first.
114155
+ */
112559
114156
  events: {
114157
+ /**
114158
+ * When the event happened (ISO 8601, UTC). Events are ordered oldest first.
114159
+ */
112560
114160
  ts: string
114161
+ /**
114162
+ * Handle for this event within the journey; `decisions[].winnerRef` points back at one of these to name the winning touchpoint.
114163
+ */
112561
114164
  ref: string
114165
+ /**
114166
+ * Page address the event fired on. Free text from the customer site, so it can carry personal data.
114167
+ */
112562
114168
  url: (string | null)
114169
+ /**
114170
+ * Event name as sent by the site, e.g. 'pageview' or a custom conversion name.
114171
+ */
112563
114172
  name: string
114173
+ /**
114174
+ * Custom properties the site attached to this event. Shape is the customer's, so it can carry anything, personal data included.
114175
+ */
112564
114176
  props: {
112565
114177
  [k: string]: unknown
112566
114178
  }
114179
+ /**
114180
+ * Document title of that page. Free text from the customer site, so it can carry personal data.
114181
+ */
112567
114182
  title: (string | null)
114183
+ /**
114184
+ * Site the event came from; null when the tracker could not determine one.
114185
+ */
112568
114186
  domain: (string | null)
114187
+ /**
114188
+ * Where this event's visit came from, as read off the landing URL. Every field is null when the visit carried nothing.
114189
+ */
112569
114190
  source: {
114191
+ /**
114192
+ * The click id value itself. Identifies one ad click by this person, so treat it as personal data.
114193
+ */
112570
114194
  clickId: (string | null)
114195
+ /**
114196
+ * utm_term of the landing URL, the paid keyword; null when absent.
114197
+ */
112571
114198
  utmTerm: (string | null)
114199
+ /**
114200
+ * utm_medium of the landing URL; null when absent.
114201
+ */
112572
114202
  utmMedium: (string | null)
114203
+ /**
114204
+ * utm_source of the landing URL; null when absent.
114205
+ */
112573
114206
  utmSource: (string | null)
114207
+ /**
114208
+ * utm_content of the landing URL, the creative variant; null when absent.
114209
+ */
112574
114210
  utmContent: (string | null)
114211
+ /**
114212
+ * Which ad-network click id was present, e.g. 'gclid'; null when the visit carried none.
114213
+ */
112575
114214
  clickIdType: (string | null)
114215
+ /**
114216
+ * utm_campaign of the landing URL; null when absent.
114217
+ */
112576
114218
  utmCampaign: (string | null)
112577
114219
  }
114220
+ /**
114221
+ * Two-letter ISO 3166-1 alpha-2 country resolved from the request, e.g. DE; null when it could not be resolved.
114222
+ */
112578
114223
  country: (string | null)
114224
+ /**
114225
+ * Address the visitor arrived from; null on a direct visit. Free text from the customer site, so it can carry personal data.
114226
+ */
112579
114227
  referrer: (string | null)
114228
+ /**
114229
+ * Visit this event belongs to; events sharing one happened in the same sitting. Null when no session could be established.
114230
+ */
112580
114231
  sessionId: (string | null)
112581
114232
  }[]
112582
114233
  }
112583
- decisions: {
114234
+ /**
114235
+ * 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.
114236
+ */
114237
+ decisions: TrackingReportsAttributedJourneyOutputItems[]
114238
+ /**
114239
+ * The person this journey belongs to, echoed back from the request.
114240
+ */
114241
+ profileId: string
114242
+ /**
114243
+ * 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.
114244
+ */
114245
+ originatingDecision: (TrackingReportsAttributedJourneyOutputItems | null)
114246
+ }
114247
+ export interface TrackingReportsAttributedJourneyOutputItems {
114248
+ /**
114249
+ * Attribution model the winner was picked under, echoed back from the request.
114250
+ */
112584
114251
  model: ("last_click" | "first_click")
114252
+ /**
114253
+ * Why this touchpoint won, or why nothing did, in a sentence a person can read.
114254
+ */
112585
114255
  reason: string
114256
+ /**
114257
+ * Revenue of that conversion, one row per currency.
114258
+ */
112586
114259
  revenue: {
114260
+ /**
114261
+ * ISO 4217 code the amounts below are denominated in, e.g. EUR.
114262
+ */
112587
114263
  currency: string
114264
+ /**
114265
+ * `grossMinor` minus `refundedMinor`, in minor units of `currency`. This is the figure to report.
114266
+ */
112588
114267
  netMinor: number
114268
+ /**
114269
+ * Billed amount before refunds, in minor units of `currency` (cents for EUR).
114270
+ */
112589
114271
  grossMinor: number
114272
+ /**
114273
+ * Amount refunded out of `grossMinor`, in minor units of `currency`.
114274
+ */
112590
114275
  refundedMinor: number
112591
114276
  }[]
114277
+ /**
114278
+ * `journey.events[].ref` of the touchpoint that won the credit. Null when nothing inside the window qualified.
114279
+ */
112592
114280
  winnerRef: (string | null)
114281
+ /**
114282
+ * When the conversion this decision explains happened (ISO 8601, UTC).
114283
+ */
112593
114284
  conversionTs: string
114285
+ /**
114286
+ * How far back before `conversionTs` a touchpoint was allowed to be credited, in days; echoed back.
114287
+ */
112594
114288
  lookbackDays: number
114289
+ /**
114290
+ * The winning touchpoint spelled out, so a reader need not resolve `winnerRef`. Null exactly when `winnerRef` is null.
114291
+ */
112595
114292
  winningTouchpoint: ({
114293
+ /**
114294
+ * When the winning touchpoint happened (ISO 8601, UTC).
114295
+ */
112596
114296
  ts: string
114297
+ /**
114298
+ * Channel the winning touchpoint belongs to.
114299
+ */
112597
114300
  channel: ("paid" | "organic" | "direct" | "email")
114301
+ /**
114302
+ * utm_medium of the winning touchpoint; null when it carried none.
114303
+ */
112598
114304
  utmMedium: (string | null)
114305
+ /**
114306
+ * utm_source of the winning touchpoint; null when it carried none.
114307
+ */
112599
114308
  utmSource: (string | null)
114309
+ /**
114310
+ * Campaign id carried by our own `_lt_campaign` landing-URL parameter; null when the visit carried none.
114311
+ */
114312
+ ltCampaign?: (string | null)
114313
+ /**
114314
+ * Ad-network click id present on the winning touchpoint, e.g. 'gclid'; null when it carried none.
114315
+ */
112600
114316
  clickIdType: (string | null)
114317
+ /**
114318
+ * utm_campaign of the winning touchpoint; null when it carried none.
114319
+ */
112601
114320
  utmCampaign: (string | null)
112602
114321
  } | null)
112603
- }[]
112604
- profileId: string
112605
114322
  }
112606
114323
 
112607
114324
  export interface TrackingReportsEventVolumeInput {
112608
- to: string
112609
- from: string
114325
+ /**
114326
+ * End of the range to count, inclusive (ISO 8601). Optional — defaults to the moment of the call.
114327
+ */
114328
+ to?: string
114329
+ /**
114330
+ * Start of the range to count, inclusive (ISO 8601). Optional — defaults to 30 days back, the start of that UTC day.
114331
+ */
114332
+ from?: string
114333
+ /**
114334
+ * Count only this site. Omit to count every site the product sends from.
114335
+ */
112610
114336
  domain?: string
112611
114337
  }
112612
114338
 
112613
114339
  export interface TrackingReportsEventVolumeOutput {
114340
+ /**
114341
+ * End of the range the figures cover, echoed back (ISO 8601, UTC).
114342
+ */
112614
114343
  to: string
114344
+ /**
114345
+ * Start of the range the figures cover, echoed back (ISO 8601, UTC).
114346
+ */
112615
114347
  from: string
114348
+ /**
114349
+ * Site the figures were restricted to; null when every site of the product is included.
114350
+ */
112616
114351
  domain: (string | null)
114352
+ /**
114353
+ * When this report was computed (ISO 8601, UTC).
114354
+ */
112617
114355
  computedAt: string
114356
+ /**
114357
+ * 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.
114358
+ */
112618
114359
  dataQuality: {
114360
+ /**
114361
+ * Fraction of `totalEvents` (0..1) that came from sites running no consent banner, where nobody was ever asked.
114362
+ */
112619
114363
  noBannerShare: number
114364
+ /**
114365
+ * Events from sites with no consent banner. Kept apart from `cookielessEvents` on purpose: nobody refused here, nobody was asked.
114366
+ */
112620
114367
  noBannerEvents: number
114368
+ /**
114369
+ * How many UTC days the range spans; each one re-counts a returning declining visitor.
114370
+ */
112621
114371
  utcDaysInRange: number
114372
+ /**
114373
+ * Fraction of `totalEvents` (0..1) that came from visitors who declined statistics consent.
114374
+ */
112622
114375
  cookielessShare: number
114376
+ /**
114377
+ * Events from visitors who declined; no cookie was written and no identifier sent.
114378
+ */
112623
114379
  cookielessEvents: number
114380
+ /**
114381
+ * 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.
114382
+ */
112624
114383
  identifiedEvents: number
114384
+ /**
114385
+ * True when `visitorsDeduplicatedPerUtcDay` over-counts for this range: the range spans more than one UTC day and there is declining traffic in it.
114386
+ */
112625
114387
  visitorsOverstated: boolean
114388
+ /**
114389
+ * Events from visitors who granted statistics consent.
114390
+ */
112626
114391
  consentGrantedEvents: number
112627
114392
  }
114393
+ /**
114394
+ * How many events arrived in the range, across every consent state.
114395
+ */
112628
114396
  totalEvents: number
114397
+ /**
114398
+ * 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.
114399
+ */
112629
114400
  visitorsDeduplicatedPerUtcDay: number
112630
114401
  }
112631
114402
 
112632
114403
  export interface TrackingReportsRevenueBySourceInput {
112633
114404
  /**
112634
- * Cohort window end (ISO)
114405
+ * Cohort window end (ISO). Optional — defaults to the moment of the call.
112635
114406
  */
112636
- to: string
114407
+ to?: string
112637
114408
  /**
112638
- * Cohort window start (ISO); selects conversions by subscription start
114409
+ * Cohort window start (ISO); selects conversions by subscription start. Optional — defaults to 30 days back, the start of that UTC day.
112639
114410
  */
112640
- from: string
114411
+ from?: string
112641
114412
  /**
112642
114413
  * Attribution model
112643
114414
  */
@@ -112653,54 +114424,150 @@ lookbackDays?: number
112653
114424
  }
112654
114425
 
112655
114426
  export interface TrackingReportsRevenueBySourceOutput {
114427
+ /**
114428
+ * End of the cohort window the figures cover, echoed back (ISO 8601, UTC).
114429
+ */
112656
114430
  to: string
114431
+ /**
114432
+ * Start of the cohort window the figures cover, echoed back (ISO 8601, UTC).
114433
+ */
112657
114434
  from: string
114435
+ /**
114436
+ * Attribution model the credit was assigned under, echoed back. Pass the same value to `tracking_reports_source_people` to drill into a row.
114437
+ */
112658
114438
  model: ("last_click" | "first_click")
114439
+ /**
114440
+ * Site touchpoints were restricted to; null when every site of the product was considered.
114441
+ */
112659
114442
  domain: (string | null)
114443
+ /**
114444
+ * Every channel plus `unattributed`. This is the whole window, not the attributed part of it.
114445
+ */
112660
114446
  totals: {
114447
+ /**
114448
+ * Revenue over every channel plus `unattributed`, one row per currency.
114449
+ */
112661
114450
  revenue: TrackingReportsRevenueBySourceOutputItems[]
114451
+ /**
114452
+ * Distinct paying people over every channel plus `unattributed`.
114453
+ */
112662
114454
  customers: number
112663
114455
  }
114456
+ /**
114457
+ * One row per channel that earned revenue in the window. Channels with none are omitted.
114458
+ */
112664
114459
  channels: {
114460
+ /**
114461
+ * Which acquisition channel this row aggregates.
114462
+ */
112665
114463
  channel: ("paid" | "organic" | "direct" | "email")
114464
+ /**
114465
+ * 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.
114466
+ */
112666
114467
  revenue: TrackingReportsRevenueBySourceOutputItems[]
114468
+ /**
114469
+ * Distinct paying people credited to this channel.
114470
+ */
112667
114471
  customers: number
114472
+ /**
114473
+ * The channel split by UTM combination. Each row is a drill-down target for `tracking_reports_source_people`.
114474
+ */
112668
114475
  utmBreakdown: {
114476
+ /**
114477
+ * Revenue credited to this UTM combination, one row per currency.
114478
+ */
112669
114479
  revenue: TrackingReportsRevenueBySourceOutputItems[]
114480
+ /**
114481
+ * Distinct paying people credited to this UTM combination.
114482
+ */
112670
114483
  customers: number
114484
+ /**
114485
+ * utm_medium of this row; null when the visit carried none.
114486
+ */
112671
114487
  utmMedium: (string | null)
114488
+ /**
114489
+ * utm_source of this row; null when the visit carried none.
114490
+ */
112672
114491
  utmSource: (string | null)
114492
+ /**
114493
+ * Ad-network click id present on the visit, e.g. 'gclid'; null when it carried none.
114494
+ */
112673
114495
  clickIdType: (string | null)
114496
+ /**
114497
+ * utm_campaign of this row; null when the visit carried none.
114498
+ */
112674
114499
  utmCampaign: (string | null)
112675
114500
  }[]
112676
114501
  }[]
114502
+ /**
114503
+ * Fraction of paying people (0..1) a touchpoint could be found for: attributed customers over `totals.customers`. Count-based, never revenue-weighted.
114504
+ */
112677
114505
  matchRate: number
114506
+ /**
114507
+ * When this report was computed (ISO 8601, UTC).
114508
+ */
112678
114509
  computedAt: string
114510
+ /**
114511
+ * How far back before a conversion a touchpoint was allowed to be credited, in days; echoed back.
114512
+ */
112679
114513
  lookbackDays: number
114514
+ /**
114515
+ * Revenue that reached no channel — kept as its own row so the channel rows are never quietly inflated to cover it.
114516
+ */
112680
114517
  unattributed: {
114518
+ /**
114519
+ * Revenue no touchpoint could be credited for, one row per currency.
114520
+ */
112681
114521
  revenue: TrackingReportsRevenueBySourceOutputItems[]
114522
+ /**
114523
+ * Distinct paying people no touchpoint could be credited for.
114524
+ */
112682
114525
  customers: number
112683
114526
  }
112684
114527
  }
112685
114528
  export interface TrackingReportsRevenueBySourceOutputItems {
114529
+ /**
114530
+ * ISO 4217 code the amounts below are denominated in, e.g. EUR.
114531
+ */
112686
114532
  currency: string
114533
+ /**
114534
+ * `grossMinor` minus `refundedMinor`, in minor units of `currency`. This is the figure to report.
114535
+ */
112687
114536
  netMinor: number
114537
+ /**
114538
+ * Billed amount before refunds, in minor units of `currency` (cents for EUR).
114539
+ */
112688
114540
  grossMinor: number
114541
+ /**
114542
+ * Amount refunded out of `grossMinor`, in minor units of `currency`.
114543
+ */
112689
114544
  refundedMinor: number
112690
114545
  }
112691
114546
 
112692
114547
  export interface TrackingReportsSourcePeopleInput {
112693
- to: string
112694
- from: string
114548
+ /**
114549
+ * Cohort window end (ISO); must match the report this row came from. Optional — defaults to the moment of the call.
114550
+ */
114551
+ to?: string
114552
+ /**
114553
+ * Cohort window start (ISO); must match the report this row came from. Optional — defaults to 30 days back, the start of that UTC day.
114554
+ */
114555
+ from?: string
112695
114556
  /**
112696
114557
  * People per page (default 50, max 200)
112697
114558
  */
112698
114559
  limit?: number
114560
+ /**
114561
+ * Attribution model to credit the touchpoint under; must match the report this row came from (default 'last_click').
114562
+ */
112699
114563
  model?: ("last_click" | "first_click")
112700
114564
  /**
112701
114565
  * Opaque keyset cursor from a previous page
112702
114566
  */
112703
114567
  cursor?: string
114568
+ /**
114569
+ * Only consider touchpoints on this domain; must match the report this row came from. Omit for no restriction.
114570
+ */
112704
114571
  domain?: string
112705
114572
  /**
112706
114573
  * Channel to drill into
@@ -112710,27 +114577,72 @@ channel: ("paid" | "organic" | "direct" | "email")
112710
114577
  * Comma-separated dimension names (utmSource,utmMedium,utmCampaign,clickIdType) that must be IS NULL
112711
114578
  */
112712
114579
  utmNulls?: string
114580
+ /**
114581
+ * utm_medium of the breakdown row to drill into. Omit for no filter; to match the IS-NULL row, list it in utmNulls instead.
114582
+ */
112713
114583
  utmMedium?: string
114584
+ /**
114585
+ * utm_source of the breakdown row to drill into. Omit for no filter; to match the IS-NULL row, list it in utmNulls instead.
114586
+ */
112714
114587
  utmSource?: string
112715
114588
  /**
112716
114589
  * 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.
112717
114590
  */
112718
114591
  clickIdType?: string
114592
+ /**
114593
+ * utm_campaign of the breakdown row to drill into. Omit for no filter; to match the IS-NULL row, list it in utmNulls instead.
114594
+ */
112719
114595
  utmCampaign?: string
114596
+ /**
114597
+ * How far back before a conversion a touchpoint may be credited, in days; must match the report this row came from (default 30).
114598
+ */
112720
114599
  lookbackDays?: number
112721
114600
  }
112722
114601
 
112723
114602
  export interface TrackingReportsSourcePeopleOutput {
114603
+ /**
114604
+ * Pass back as `cursor` for the next page. Null on the last page.
114605
+ */
112724
114606
  cursor: (string | null)
114607
+ /**
114608
+ * The page of people behind the requested row, ordered by the keyset the cursor walks.
114609
+ */
112725
114610
  people: {
114611
+ /**
114612
+ * Where this person stands in their subscription lifecycle, e.g. active or churned.
114613
+ */
112726
114614
  status: string
114615
+ /**
114616
+ * Identifier of this person; pass it to `tracking_reports_attributed_journey` to see why they were credited here.
114617
+ */
112727
114618
  profileId: string
114619
+ /**
114620
+ * Most recent tracked activity for this person (ISO 8601, UTC); null when none was recorded.
114621
+ */
112728
114622
  lastSeenAt: (string | null)
114623
+ /**
114624
+ * Earliest tracked activity for this person (ISO 8601, UTC); null when none was recorded.
114625
+ */
112729
114626
  firstSeenAt: (string | null)
114627
+ /**
114628
+ * Lifetime revenue credited to this person under the requested model, one row per currency.
114629
+ */
112730
114630
  attributedRevenue: {
114631
+ /**
114632
+ * ISO 4217 code the amounts below are denominated in, e.g. EUR.
114633
+ */
112731
114634
  currency: string
114635
+ /**
114636
+ * `grossMinor` minus `refundedMinor`, in minor units of `currency`. This is the figure to report.
114637
+ */
112732
114638
  netMinor: number
114639
+ /**
114640
+ * Billed amount before refunds, in minor units of `currency` (cents for EUR).
114641
+ */
112733
114642
  grossMinor: number
114643
+ /**
114644
+ * Amount refunded out of `grossMinor`, in minor units of `currency`.
114645
+ */
112734
114646
  refundedMinor: number
112735
114647
  }[]
112736
114648
  }[]
@@ -112741,9 +114653,21 @@ export interface TrackingSnippetsGetInput {
112741
114653
  }
112742
114654
 
112743
114655
  export interface TrackingSnippetsGetOutput {
114656
+ /**
114657
+ * Tracking host the snippet sends to — the customer-facing domain events and the bundle are served from.
114658
+ */
112744
114659
  host: string
114660
+ /**
114661
+ * The tag to paste into every page, verbatim, before </head>. Includes the consent-aware bootstrap; install it unconditionally rather than behind a consent gate.
114662
+ */
112745
114663
  snippet: string
114664
+ /**
114665
+ * Absolute URL of the tracker bundle the snippet loads; already points at this product's own tracking host.
114666
+ */
112746
114667
  scriptUrl: string
114668
+ /**
114669
+ * 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.
114670
+ */
112747
114671
  minimalSnippet: string
112748
114672
  }
112749
114673