@lepsto/sdk-app 84.0.0 → 85.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +38 -6
  2. package/dist/_types/gen/client.gen.d.ts +38 -18
  3. package/dist/_types/gen/manifest.gen.d.ts +1 -1
  4. package/dist/_types/gen/playground/connect.gen.d.ts +3 -0
  5. package/dist/_types/gen/playground/index.d.ts +3 -0
  6. package/dist/_types/gen/playground/queryOptions.gen.d.ts +70 -0
  7. package/dist/_types/gen/types.gen.d.ts +1948 -212
  8. package/dist/chunk-HRKHYP5B.js +11397 -0
  9. package/dist/chunk-HRKHYP5B.js.map +1 -0
  10. package/dist/index.cjs +236 -176
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.js +31 -11354
  13. package/dist/index.js.map +1 -1
  14. package/dist/playground/index.cjs +106 -0
  15. package/dist/playground/index.cjs.map +1 -0
  16. package/dist/playground/index.d.cts +1 -0
  17. package/dist/playground/index.d.ts +1 -0
  18. package/dist/playground/index.js +78 -0
  19. package/dist/playground/index.js.map +1 -0
  20. package/docs/README.md +6 -6
  21. package/docs/recipes/access.md +12 -12
  22. package/docs/recipes/local-dev.md +2 -2
  23. package/docs/recipes/sdk-usage.md +11 -11
  24. package/docs/rules.md +10 -10
  25. package/package.json +22 -12
  26. package/src/gen/bindings.gen.ts +216 -150
  27. package/src/gen/client.gen.ts +71 -31
  28. package/src/gen/manifest.gen.ts +30 -28
  29. package/src/gen/playground/connect.gen.ts +9 -0
  30. package/src/gen/playground/index.ts +4 -0
  31. package/src/gen/playground/queryOptions.gen.ts +119 -0
  32. package/src/gen/types.gen.ts +1977 -211
  33. package/dist/_types/gen/waitlist/index.d.ts +0 -2
  34. package/dist/_types/gen/waitlist/queryOptions.gen.d.ts +0 -30
  35. package/dist/waitlist/index.cjs +0 -41
  36. package/dist/waitlist/index.cjs.map +0 -1
  37. package/dist/waitlist/index.d.cts +0 -1
  38. package/dist/waitlist/index.d.ts +0 -1
  39. package/dist/waitlist/index.js +0 -33
  40. package/dist/waitlist/index.js.map +0 -1
  41. package/src/gen/waitlist/index.ts +0 -3
  42. package/src/gen/waitlist/queryOptions.gen.ts +0 -50
@@ -90532,6 +90532,378 @@ export interface OrganizationYoutubeInstallOutput {
90532
90532
  url: string
90533
90533
  }
90534
90534
 
90535
+ export interface PlaygroundAnalyticsOverviewInput {
90536
+ /**
90537
+ * Max records per entity in recent[]; omit for the endpoint default
90538
+ */
90539
+ limit?: number
90540
+ }
90541
+
90542
+ export interface PlaygroundAnalyticsOverviewOutput {
90543
+ ok: boolean
90544
+ minted: boolean
90545
+ overview?: unknown
90546
+ http_status: number
90547
+ }
90548
+
90549
+ export interface PlaygroundBillingEntitlementsInput {
90550
+
90551
+ }
90552
+
90553
+ export interface PlaygroundBillingEntitlementsOutput {
90554
+ ok: boolean
90555
+ minted: boolean
90556
+ http_status: number
90557
+ entitlements?: unknown
90558
+ }
90559
+
90560
+ export interface PlaygroundBillingRecordUsageInput {
90561
+ /**
90562
+ * Quantity of events to record against playground-events (SUM); defaults to 1
90563
+ */
90564
+ value?: number
90565
+ }
90566
+
90567
+ export interface PlaygroundBillingRecordUsageOutput {
90568
+ minted: boolean
90569
+ accepted: (number | null)
90570
+ recorded: boolean
90571
+ duplicates: (number | null)
90572
+ http_status: number
90573
+ }
90574
+
90575
+ export interface PlaygroundClickupCreateTaskInput {
90576
+ /**
90577
+ * Task title; defaults to a fixture label
90578
+ */
90579
+ name?: string
90580
+ /**
90581
+ * ClickUp list id; falls back to CLICKUP_TEST_LIST_ID
90582
+ */
90583
+ listId?: string
90584
+ }
90585
+
90586
+ export interface PlaygroundClickupCreateTaskOutput {
90587
+ minted: boolean
90588
+ task_id: (string | null)
90589
+ list_status: number
90590
+ vend_status: number
90591
+ clickup_status: number
90592
+ installation_count: number
90593
+ }
90594
+
90595
+ export interface PlaygroundClickupGetLastWebhookInput {
90596
+
90597
+ }
90598
+
90599
+ export type PlaygroundClickupGetLastWebhookOutput = ({
90600
+ payload: string
90601
+ event_id: string
90602
+ provider: string
90603
+ verified: boolean
90604
+ product_id: string
90605
+ occurred_at: string
90606
+ connector_id: string
90607
+ clickup_event: (string | null)
90608
+ receipt_count: number
90609
+ } | {
90610
+ found: false
90611
+ })
90612
+
90613
+ export interface PlaygroundClickupGetOverviewInput {
90614
+
90615
+ }
90616
+
90617
+ export interface PlaygroundClickupGetOverviewOutput {
90618
+ team: ({
90619
+ teamId: string
90620
+ teamName: string
90621
+ } | null)
90622
+ lists: PlaygroundClickupGetOverviewOutputItems[]
90623
+ tasks: {
90624
+ id: string
90625
+ name: string
90626
+ status: (string | null)
90627
+ }[]
90628
+ minted: boolean
90629
+ spaces: PlaygroundClickupGetOverviewOutputItems[]
90630
+ list_status: number
90631
+ vend_status: number
90632
+ lists_status: number
90633
+ tasks_status: number
90634
+ spaces_status: number
90635
+ folders_status: number
90636
+ installation_count: number
90637
+ }
90638
+ export interface PlaygroundClickupGetOverviewOutputItems {
90639
+ id: string
90640
+ name: string
90641
+ }
90642
+
90643
+ export interface PlaygroundEchoPingInput {
90644
+ /**
90645
+ * The text to echo back, 1–1024 characters
90646
+ */
90647
+ message: string
90648
+ }
90649
+
90650
+ export interface PlaygroundEchoPingOutput {
90651
+ /**
90652
+ * The message exactly as it was received
90653
+ */
90654
+ message: string
90655
+ /**
90656
+ * The product the call was resolved to
90657
+ */
90658
+ productId: string
90659
+ /**
90660
+ * ISO-8601 instant (UTC) at which the call reached the service
90661
+ */
90662
+ receivedAt: string
90663
+ }
90664
+
90665
+ export interface PlaygroundGdriveGetLastChangeInput {
90666
+
90667
+ }
90668
+
90669
+ export type PlaygroundGdriveGetLastChangeOutput = ({
90670
+ file_id: string
90671
+ removed: boolean
90672
+ file_name: (string | null)
90673
+ mime_type: (string | null)
90674
+ product_id: string
90675
+ occurred_at: string
90676
+ connector_id: string
90677
+ resource_state: string
90678
+ } | {
90679
+ found: false
90680
+ })
90681
+
90682
+ export interface PlaygroundGdriveReadFileInput {
90683
+ /**
90684
+ * Drive file id; falls back to GDRIVE_TEST_FILE_ID, then the first picked file
90685
+ */
90686
+ fileId?: string
90687
+ }
90688
+
90689
+ export interface PlaygroundGdriveReadFileOutput {
90690
+ minted: boolean
90691
+ file_id: (string | null)
90692
+ file_name: (string | null)
90693
+ mime_type: (string | null)
90694
+ file_count: number
90695
+ get_status: number
90696
+ list_status: number
90697
+ vend_status: number
90698
+ content_bytes: (number | null)
90699
+ }
90700
+
90701
+ export interface PlaygroundGoogleadsReadCustomerInput {
90702
+
90703
+ }
90704
+
90705
+ export interface PlaygroundGoogleadsReadCustomerOutput {
90706
+ minted: boolean
90707
+ vended: boolean
90708
+ customer_id: (string | null)
90709
+ vend_status: number
90710
+ result_count: number
90711
+ search_status: number
90712
+ login_customer_id: (string | null)
90713
+ }
90714
+
90715
+ export interface PlaygroundLifecycleGetStateInput {
90716
+
90717
+ }
90718
+
90719
+ export interface PlaygroundLifecycleGetStateOutput {
90720
+ blocked: boolean
90721
+ archived: boolean
90722
+ productId: string
90723
+ lastBlockTransition: ({
90724
+ eventId: string
90725
+ eventName: string
90726
+ productId: string
90727
+ occurredAt: string
90728
+ recordedAt: string
90729
+ receiptCount: number
90730
+ organizationId: string
90731
+ cascadedFromOrg: boolean
90732
+ } | null)
90733
+ lastArchiveTransition: ({
90734
+ eventId: string
90735
+ eventName: string
90736
+ productId: string
90737
+ occurredAt: string
90738
+ recordedAt: string
90739
+ receiptCount: number
90740
+ organizationId: string
90741
+ cascadedFromOrg: boolean
90742
+ } | null)
90743
+ }
90744
+
90745
+ export interface PlaygroundLifecycleListEventsInput {
90746
+
90747
+ }
90748
+
90749
+ export type PlaygroundLifecycleListEventsOutput = {
90750
+ eventId: string
90751
+ eventName: string
90752
+ productId: string
90753
+ occurredAt: string
90754
+ recordedAt: string
90755
+ receiptCount: number
90756
+ organizationId: string
90757
+ cascadedFromOrg: boolean
90758
+ }[]
90759
+
90760
+ export interface PlaygroundWebhookGetLastInput {
90761
+
90762
+ }
90763
+
90764
+ export type PlaygroundWebhookGetLastOutput = ({
90765
+ payload?: unknown
90766
+ event_id: string
90767
+ provider: string
90768
+ verified: boolean
90769
+ product_id: string
90770
+ occurred_at: string
90771
+ connector_id: string
90772
+ delivery_count: number
90773
+ } | {
90774
+ found: false
90775
+ })
90776
+
90777
+ export interface PlaygroundWorkflowEchoInput {
90778
+ /**
90779
+ * The text to store, 1–1024 characters
90780
+ */
90781
+ note: string
90782
+ /**
90783
+ * Optional labels stored alongside the note, at most 20
90784
+ *
90785
+ * @maxItems 20
90786
+ */
90787
+ tags?: []|[string]|[string, string]|[string, string, string]|[string, string, string, string]|[string, string, string, string, string]|[string, string, string, string, string, string]|[string, string, string, string, string, string, string]|[string, string, string, string, string, string, string, string]|[string, string, string, string, string, string, string, string, string]|[string, string, string, string, string, string, string, string, string, string]|[string, string, string, string, string, string, string, string, string, string, string]|[string, string, string, string, string, string, string, string, string, string, string, string]|[string, string, string, string, string, string, string, string, string, string, string, string, string]|[string, string, string, string, string, string, string, string, string, string, string, string, string, string]|[string, string, string, string, string, string, string, string, string, string, string, string, string, string, string]|[string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string]|[string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string]|[string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string]|[string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string]|[string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string]
90788
+ }
90789
+
90790
+ export interface PlaygroundWorkflowEchoOutput {
90791
+ /**
90792
+ * Identifier of the stored echo
90793
+ */
90794
+ id: string
90795
+ /**
90796
+ * The note exactly as it was received
90797
+ */
90798
+ note: string
90799
+ /**
90800
+ * The tags exactly as they were received
90801
+ */
90802
+ tags: string[]
90803
+ /**
90804
+ * Correlation id for this echo. The playground/workflow.echoed event published about two seconds later repeats it, which is how a composer matches the completion back to this step.
90805
+ */
90806
+ echo_id: string
90807
+ /**
90808
+ * ISO-8601 instant (UTC) at which the echo was stored
90809
+ */
90810
+ received_at: string
90811
+ }
90812
+
90813
+ export interface PlaygroundWorkflowEchoListInput {
90814
+
90815
+ }
90816
+
90817
+ export type PlaygroundWorkflowEchoListOutput = {
90818
+ /**
90819
+ * Identifier of the stored echo
90820
+ */
90821
+ id: string
90822
+ /**
90823
+ * The note exactly as it was received
90824
+ */
90825
+ note: string
90826
+ /**
90827
+ * The tags exactly as they were received
90828
+ */
90829
+ tags: string[]
90830
+ /**
90831
+ * ISO-8601 instant (UTC) at which the echo was stored
90832
+ */
90833
+ received_at: string
90834
+ }[]
90835
+
90836
+ export interface PlaygroundWorkflowPingInput {
90837
+ /**
90838
+ * Class of ping, echoed on the emitted event and filterable on the trigger. Defaults to 'manual'.
90839
+ */
90840
+ kind?: string
90841
+ }
90842
+
90843
+ export interface PlaygroundWorkflowPingOutput {
90844
+ /**
90845
+ * Correlation id for this ping. The emitted playground/workflow.ping event repeats it, which is how a composer matches the event back to this step.
90846
+ */
90847
+ id: string
90848
+ /**
90849
+ * The name of the event that was published
90850
+ */
90851
+ event: string
90852
+ }
90853
+
90854
+ export interface PlaygroundWorkflowSubjectsListInput {
90855
+ /**
90856
+ * How many subjects to return, 1–100. Defaults to 25.
90857
+ */
90858
+ limit?: number
90859
+ /**
90860
+ * The next_cursor of the previous page. Opaque — pass it back unchanged. Omit for the first page.
90861
+ */
90862
+ cursor?: string
90863
+ /**
90864
+ * ISO-8601 UTC instant. Return only subjects whose last_activity_at is AT OR AFTER this — the opposite question, the recently active population. Omit for no lower bound.
90865
+ */
90866
+ last_activity_after?: string
90867
+ /**
90868
+ * ISO-8601 UTC instant. Return only subjects whose last_activity_at is AT OR BEFORE this — the "inactive for N days" question: pass now minus N days. Omit for no upper bound.
90869
+ */
90870
+ last_activity_before?: string
90871
+ }
90872
+
90873
+ export interface PlaygroundWorkflowSubjectsListOutput {
90874
+ /**
90875
+ * This page of subjects, most recently active first
90876
+ */
90877
+ items: {
90878
+ /**
90879
+ * Stable identifier for the subject. This is the field a batch trigger keys on, so a subject already served in an earlier run is skipped rather than served twice.
90880
+ */
90881
+ subject_key: string
90882
+ /**
90883
+ * Human-readable name of the subject
90884
+ */
90885
+ display_name: string
90886
+ /**
90887
+ * ISO-8601 instant (UTC) of the subject last activity
90888
+ */
90889
+ last_activity_at: string
90890
+ }[]
90891
+ /**
90892
+ * Whether another page follows. False and a null next_cursor both mark the last page, so a consumer that loops on either terminates.
90893
+ */
90894
+ has_more: boolean
90895
+ /**
90896
+ * Pass back as `cursor` to fetch the next page; null on the last page. Always null when has_more is false.
90897
+ */
90898
+ next_cursor: (string | null)
90899
+ }
90900
+
90901
+ export interface PlaygroundWsEchoInput {
90902
+
90903
+ }
90904
+
90905
+ export type PlaygroundWsEchoOutput = unknown;
90906
+
90535
90907
  export interface RealtimeArchiveExportInput {
90536
90908
  /**
90537
90909
  * Only entries with ts <= to_ts (epoch ms)
@@ -112241,54 +112613,150 @@ secretPrefix: string
112241
112613
  }
112242
112614
 
112243
112615
  export interface TrackingDomainsCreateInput {
112616
+ /**
112617
+ * Bare hostname to serve tracking from, which must sit under the chosen domain (e.g. analytics.example.com); a suggestion is used when omitted
112618
+ */
112244
112619
  host?: string
112620
+ /**
112621
+ * DNS records to request instead of the default CNAME to the tracking edge; leave unset unless the domain needs custom records
112622
+ */
112245
112623
  records?: {
112624
+ /**
112625
+ * Time-to-live in seconds the record should be published with; the platform picks one when omitted
112626
+ */
112246
112627
  ttl?: number
112628
+ /**
112629
+ * Fully-qualified host the record is published at; defaults to the claimed tracking host
112630
+ */
112247
112631
  name?: string
112632
+ /**
112633
+ * Value the record points at — the edge hostname for a CNAME, the proof string for a TXT
112634
+ */
112248
112635
  target: string
112636
+ /**
112637
+ * DNS record type to publish, e.g. CNAME or TXT
112638
+ */
112249
112639
  recordType: string
112250
112640
  }[]
112641
+ /**
112642
+ * Product domain to claim the tracking host under, as listed in `domains[].domainId` by tracking_domains_list
112643
+ */
112251
112644
  domainId: string
112252
112645
  }
112253
112646
 
112254
112647
  export interface TrackingDomainsCreateOutput {
112648
+ /**
112649
+ * The binding as just claimed; it starts `pending` and goes `active` once the DNS is observed live
112650
+ */
112255
112651
  binding: {
112652
+ /**
112653
+ * Fully-qualified tracking host this binding serves, e.g. analytics.example.com
112654
+ */
112256
112655
  host: string
112656
+ /**
112657
+ * Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
112658
+ */
112257
112659
  status: ("pending" | "active" | "failed")
112660
+ /**
112661
+ * DNS records the platform expects to see published for this host, as returned when the binding was claimed
112662
+ */
112258
112663
  records: unknown[]
112664
+ /**
112665
+ * Product domain this tracking host sits under
112666
+ */
112259
112667
  domainId: string
112668
+ /**
112669
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
112670
+ */
112260
112671
  bindingId: string
112672
+ /**
112673
+ * When the binding was claimed
112674
+ */
112261
112675
  createdAt: string
112676
+ /**
112677
+ * Product the binding belongs to
112678
+ */
112262
112679
  productId: string
112680
+ /**
112681
+ * When the binding last changed status or records
112682
+ */
112263
112683
  updatedAt: string
112684
+ /**
112685
+ * Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
112686
+ */
112264
112687
  statusDetail: (string | null)
112688
+ /**
112689
+ * Extension that claimed the binding; tracking bindings are owned by this toolkit
112690
+ */
112265
112691
  ownerExtension: string
112266
112692
  }
112693
+ /**
112694
+ * Ordered, human-readable steps for publishing the DNS the claim needs; empty when the platform manages the domain itself
112695
+ */
112267
112696
  instructions: string[]
112268
112697
  }
112269
112698
 
112270
112699
  export interface TrackingDomainsDeleteInput {
112700
+ /**
112701
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
112702
+ */
112271
112703
  bindingId: string
112272
112704
  }
112273
112705
 
112274
112706
  export interface TrackingDomainsDeleteOutput {
112707
+ /**
112708
+ * Always true — the release succeeded; a failure arrives as an error, not as false
112709
+ */
112275
112710
  ok: true
112276
112711
  }
112277
112712
 
112278
112713
  export interface TrackingDomainsGetInput {
112714
+ /**
112715
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
112716
+ */
112279
112717
  bindingId: string
112280
112718
  }
112281
112719
 
112282
112720
  export interface TrackingDomainsGetOutput {
112721
+ /**
112722
+ * Fully-qualified tracking host this binding serves, e.g. analytics.example.com
112723
+ */
112283
112724
  host: string
112725
+ /**
112726
+ * Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
112727
+ */
112284
112728
  status: ("pending" | "active" | "failed")
112729
+ /**
112730
+ * DNS records the platform expects to see published for this host, as returned when the binding was claimed
112731
+ */
112285
112732
  records: unknown[]
112733
+ /**
112734
+ * Product domain this tracking host sits under
112735
+ */
112286
112736
  domainId: string
112737
+ /**
112738
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
112739
+ */
112287
112740
  bindingId: string
112741
+ /**
112742
+ * When the binding was claimed
112743
+ */
112288
112744
  createdAt: string
112745
+ /**
112746
+ * Product the binding belongs to
112747
+ */
112289
112748
  productId: string
112749
+ /**
112750
+ * When the binding last changed status or records
112751
+ */
112290
112752
  updatedAt: string
112753
+ /**
112754
+ * Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
112755
+ */
112291
112756
  statusDetail: (string | null)
112757
+ /**
112758
+ * Extension that claimed the binding; tracking bindings are owned by this toolkit
112759
+ */
112292
112760
  ownerExtension: string
112293
112761
  }
112294
112762
 
@@ -112297,41 +112765,125 @@ export interface TrackingDomainsListInput {
112297
112765
  }
112298
112766
 
112299
112767
  export interface TrackingDomainsListOutput {
112768
+ /**
112769
+ * The product's domains as the platform vouches for them — the set a new tracking host may be claimed under
112770
+ */
112300
112771
  domains: {
112772
+ /**
112773
+ * Who runs the DNS: `managed` means the platform publishes records for you, `external` means you publish them yourself
112774
+ */
112301
112775
  mode: ("external" | "managed")
112776
+ /**
112777
+ * Apex domain name the product owns, e.g. example.com
112778
+ */
112302
112779
  domain: string
112780
+ /**
112781
+ * Stable platform id of the product domain, and what a claim takes as its `domainId`
112782
+ */
112303
112783
  domainId: string
112784
+ /**
112785
+ * ISO-8601 timestamp of when the domain was added to the product
112786
+ */
112304
112787
  createdAt: string
112788
+ /**
112789
+ * How many extensions currently hold a host binding under this domain
112790
+ */
112305
112791
  extensionCount: number
112306
112792
  }[]
112793
+ /**
112794
+ * Tracking-host bindings this toolkit currently holds across those domains
112795
+ */
112307
112796
  bindings: {
112797
+ /**
112798
+ * Fully-qualified tracking host this binding serves, e.g. analytics.example.com
112799
+ */
112308
112800
  host: string
112801
+ /**
112802
+ * Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
112803
+ */
112309
112804
  status: ("pending" | "active" | "failed")
112805
+ /**
112806
+ * DNS records the platform expects to see published for this host, as returned when the binding was claimed
112807
+ */
112310
112808
  records: unknown[]
112809
+ /**
112810
+ * Product domain this tracking host sits under
112811
+ */
112311
112812
  domainId: string
112813
+ /**
112814
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
112815
+ */
112312
112816
  bindingId: string
112817
+ /**
112818
+ * When the binding was claimed
112819
+ */
112313
112820
  createdAt: string
112821
+ /**
112822
+ * Product the binding belongs to
112823
+ */
112314
112824
  productId: string
112825
+ /**
112826
+ * When the binding last changed status or records
112827
+ */
112315
112828
  updatedAt: string
112829
+ /**
112830
+ * Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
112831
+ */
112316
112832
  statusDetail: (string | null)
112833
+ /**
112834
+ * Extension that claimed the binding; tracking bindings are owned by this toolkit
112835
+ */
112317
112836
  ownerExtension: string
112318
112837
  }[]
112319
112838
  }
112320
112839
 
112321
112840
  export interface TrackingDomainsVerifyInput {
112841
+ /**
112842
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
112843
+ */
112322
112844
  bindingId: string
112323
112845
  }
112324
112846
 
112325
112847
  export interface TrackingDomainsVerifyOutput {
112848
+ /**
112849
+ * Fully-qualified tracking host this binding serves, e.g. analytics.example.com
112850
+ */
112326
112851
  host: string
112852
+ /**
112853
+ * Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
112854
+ */
112327
112855
  status: ("pending" | "active" | "failed")
112856
+ /**
112857
+ * DNS records the platform expects to see published for this host, as returned when the binding was claimed
112858
+ */
112328
112859
  records: unknown[]
112860
+ /**
112861
+ * Product domain this tracking host sits under
112862
+ */
112329
112863
  domainId: string
112864
+ /**
112865
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
112866
+ */
112330
112867
  bindingId: string
112868
+ /**
112869
+ * When the binding was claimed
112870
+ */
112331
112871
  createdAt: string
112872
+ /**
112873
+ * Product the binding belongs to
112874
+ */
112332
112875
  productId: string
112876
+ /**
112877
+ * When the binding last changed status or records
112878
+ */
112333
112879
  updatedAt: string
112880
+ /**
112881
+ * Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
112882
+ */
112334
112883
  statusDetail: (string | null)
112884
+ /**
112885
+ * Extension that claimed the binding; tracking bindings are owned by this toolkit
112886
+ */
112335
112887
  ownerExtension: string
112336
112888
  }
112337
112889
 
@@ -112343,7 +112895,13 @@ name: string
112343
112895
  }
112344
112896
 
112345
112897
  export interface TrackingEventNamesArchiveOutput {
112898
+ /**
112899
+ * Event name whose status was changed
112900
+ */
112346
112901
  name: string
112902
+ /**
112903
+ * The status as it now stands: `archived` hides the name from pickers and reports, `active` restores it
112904
+ */
112347
112905
  status: ("active" | "archived")
112348
112906
  }
112349
112907
 
@@ -112367,13 +112925,37 @@ status?: ("active" | "archived")
112367
112925
  }
112368
112926
 
112369
112927
  export interface TrackingEventNamesListOutput {
112928
+ /**
112929
+ * The matching catalogue entries, ordered by the requested sort
112930
+ */
112370
112931
  names: {
112932
+ /**
112933
+ * Event name exactly as the tracking script sends it — the string other tools take as their `event`
112934
+ */
112371
112935
  name: string
112936
+ /**
112937
+ * How many events with this name have been received in total
112938
+ */
112372
112939
  count: number
112940
+ /**
112941
+ * `active` for a name in use, `archived` for one hidden from pickers and reports
112942
+ */
112373
112943
  status: string
112944
+ /**
112945
+ * ISO-8601 timestamp of the most recent event received under this name
112946
+ */
112374
112947
  lastSeen: string
112948
+ /**
112949
+ * ISO-8601 timestamp of the first event ever received under this name
112950
+ */
112375
112951
  firstSeen: string
112952
+ /**
112953
+ * Property keys sampled from recent events with this name, so you can see what the payload carries
112954
+ */
112376
112955
  propsKeys: string[]
112956
+ /**
112957
+ * Whether this name is marked a conversion, which is what makes it available as a workflow trigger
112958
+ */
112377
112959
  isConversion: boolean
112378
112960
  }[]
112379
112961
  }
@@ -112390,7 +112972,13 @@ isConversion: boolean
112390
112972
  }
112391
112973
 
112392
112974
  export interface TrackingEventNamesSetConversionOutput {
112975
+ /**
112976
+ * Event name the conversion flag was applied to
112977
+ */
112393
112978
  name: string
112979
+ /**
112980
+ * The flag as it now stands after the change
112981
+ */
112394
112982
  isConversion: boolean
112395
112983
  }
112396
112984
 
@@ -112402,7 +112990,13 @@ name: string
112402
112990
  }
112403
112991
 
112404
112992
  export interface TrackingEventNamesUnarchiveOutput {
112993
+ /**
112994
+ * Event name whose status was changed
112995
+ */
112405
112996
  name: string
112997
+ /**
112998
+ * The status as it now stands: `archived` hides the name from pickers and reports, `active` restores it
112999
+ */
112406
113000
  status: ("active" | "archived")
112407
113001
  }
112408
113002
 
@@ -112411,14 +113005,32 @@ export interface TrackingGoogleadsConnectionStatusInput {
112411
113005
  }
112412
113006
 
112413
113007
  export type TrackingGoogleadsConnectionStatusOutput = ({
113008
+ /**
113009
+ * Where the Google Ads connection stands: connected means an account is chosen and its credential works, so the other tools will run.
113010
+ */
112414
113011
  state: "connected"
113012
+ /**
113013
+ * The Google Ads account the data is read from and conversions are written to, as a customer id. Only present while connected.
113014
+ */
112415
113015
  customerId: string
113016
+ /**
113017
+ * 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.
113018
+ */
112416
113019
  loginCustomerId: string
112417
113020
  } | {
113021
+ /**
113022
+ * Google is authorised but nobody has picked which Google Ads account to use yet, so nothing can run until someone does.
113023
+ */
112418
113024
  state: "pending_account_selection"
112419
113025
  } | {
113026
+ /**
113027
+ * The Google authorisation expired or was revoked and has to be granted again before anything can run.
113028
+ */
112420
113029
  state: "reauth_required"
112421
113030
  } | {
113031
+ /**
113032
+ * No Google Ads connection has been set up for this product at all.
113033
+ */
112422
113034
  state: "not_connected"
112423
113035
  })
112424
113036
 
@@ -112439,26 +113051,77 @@ export interface TrackingGoogleadsFeedbackConfigGetInput {
112439
113051
  }
112440
113052
 
112441
113053
  export interface TrackingGoogleadsFeedbackConfigGetOutput {
113054
+ /**
113055
+ * 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.
113056
+ */
112442
113057
  mode: ("existing_pixel" | "fresh_pixel")
113058
+ /**
113059
+ * Which tracked events become which Google Ads conversion action, and where each one takes its money value from. Disabled rules stay listed.
113060
+ */
112443
113061
  rules: {
113062
+ /**
113063
+ * Tracked event-name this rule uploads, as listed by tracking_event-names_list
113064
+ */
112444
113065
  event: string
113066
+ /**
113067
+ * What monetary value is reported to Google for each conversion this rule uploads
113068
+ */
112445
113069
  value: ({
113070
+ /**
113071
+ * 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
113072
+ */
112446
113073
  source: "revenue"
112447
113074
  } | {
113075
+ /**
113076
+ * 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
113077
+ */
112448
113078
  source: "dynamic"
112449
113079
  } | {
113080
+ /**
113081
+ * 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
113082
+ */
112450
113083
  source: "fixed"
113084
+ /**
113085
+ * ISO-4217 currency the fixed amount is denominated in, e.g. USD
113086
+ */
112451
113087
  currency: string
113088
+ /**
113089
+ * The fixed value in minor units (e.g. cents); 0 means a value-less lead conversion
113090
+ */
112452
113091
  amountMinor: number
112453
113092
  })
113093
+ /**
113094
+ * Whether this single mapping is live; a disabled rule is kept but uploads nothing
113095
+ */
112454
113096
  enabled: boolean
113097
+ /**
113098
+ * Google conversion action the event is reported as, in the form customers/<cid>/conversionActions/<id>
113099
+ */
112455
113100
  conversionAction: string
112456
113101
  }[]
113102
+ /**
113103
+ * Whether conversions are being sent to Google Ads at all. False leaves every rule below in place but uploads nothing.
113104
+ */
112457
113105
  enabled: boolean
113106
+ /**
113107
+ * The tenant this configuration belongs to. Never supplied by a caller — it comes from the authenticated identity.
113108
+ */
112458
113109
  productId: string
113110
+ /**
113111
+ * 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.
113112
+ */
112459
113113
  lookbackDays: number
113114
+ /**
113115
+ * 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.
113116
+ */
112460
113117
  accountCurrency: (string | null)
113118
+ /**
113119
+ * The event names that may use the Dynamic value source, because revenue is known for them. Any other event needs a fixed amount.
113120
+ */
112461
113121
  dynamicValueEvents: string[]
113122
+ /**
113123
+ * Whether a stored email or phone number is sent alongside the click, so Google can match conversions the click id alone would miss.
113124
+ */
112462
113125
  enhancedConversions: boolean
112463
113126
  }
112464
113127
 
@@ -112475,11 +113138,23 @@ rules?: {
112475
113138
  * Any tracked event-name for this product (validated against the event-name catalog)
112476
113139
  */
112477
113140
  event: string
113141
+ /**
113142
+ * What monetary value to report to Google for each conversion this rule uploads
113143
+ */
112478
113144
  value: ({
113145
+ /**
113146
+ * 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
113147
+ */
112479
113148
  source: "revenue"
112480
113149
  } | {
113150
+ /**
113151
+ * 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
113152
+ */
112481
113153
  source: "dynamic"
112482
113154
  } | {
113155
+ /**
113156
+ * 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
113157
+ */
112483
113158
  source: "fixed"
112484
113159
  /**
112485
113160
  * ISO-4217 currency code, e.g. USD
@@ -112490,6 +113165,9 @@ currency: string
112490
113165
  */
112491
113166
  amountMinor?: number
112492
113167
  })
113168
+ /**
113169
+ * Whether this single mapping is live; a disabled rule is kept but uploads nothing
113170
+ */
112493
113171
  enabled: boolean
112494
113172
  /**
112495
113173
  * Google conversion action resource: customers/<cid>/conversionActions/<id>
@@ -112511,28 +113189,82 @@ enhancedConversions?: boolean
112511
113189
  }
112512
113190
 
112513
113191
  export interface TrackingGoogleadsFeedbackConfigSetOutput {
113192
+ /**
113193
+ * The config as it now stands after the write, with server-side normalisation applied
113194
+ */
112514
113195
  config: {
113196
+ /**
113197
+ * How our uploads sit beside your own tag: `existing_pixel` only fills gaps it left, `fresh_pixel` reports our data alone
113198
+ */
112515
113199
  mode: ("existing_pixel" | "fresh_pixel")
113200
+ /**
113201
+ * The event-to-conversion-action mappings, each with its own value source
113202
+ */
112516
113203
  rules: {
113204
+ /**
113205
+ * Tracked event-name this rule uploads, as listed by tracking_event-names_list
113206
+ */
112517
113207
  event: string
113208
+ /**
113209
+ * What monetary value is reported to Google for each conversion this rule uploads
113210
+ */
112518
113211
  value: ({
113212
+ /**
113213
+ * 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
113214
+ */
112519
113215
  source: "revenue"
112520
113216
  } | {
113217
+ /**
113218
+ * 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
113219
+ */
112521
113220
  source: "dynamic"
112522
113221
  } | {
113222
+ /**
113223
+ * 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
113224
+ */
112523
113225
  source: "fixed"
113226
+ /**
113227
+ * ISO-4217 currency the fixed amount is denominated in, e.g. USD
113228
+ */
112524
113229
  currency: string
113230
+ /**
113231
+ * The fixed value in minor units (e.g. cents); 0 means a value-less lead conversion
113232
+ */
112525
113233
  amountMinor: number
112526
113234
  })
113235
+ /**
113236
+ * Whether this single mapping is live; a disabled rule is kept but uploads nothing
113237
+ */
112527
113238
  enabled: boolean
113239
+ /**
113240
+ * Google conversion action the event is reported as, in the form customers/<cid>/conversionActions/<id>
113241
+ */
112528
113242
  conversionAction: string
112529
113243
  }[]
113244
+ /**
113245
+ * Master switch: with it off no rule uploads anything, however the individual rules are set
113246
+ */
112530
113247
  enabled: boolean
113248
+ /**
113249
+ * Product this conversion-feedback config belongs to
113250
+ */
112531
113251
  productId: string
113252
+ /**
113253
+ * How many days back a click may have happened and still be matched to a conversion (max 90)
113254
+ */
112532
113255
  lookbackDays: number
113256
+ /**
113257
+ * The connected Google Ads account's currency, best-effort; null or absent when it could not be read
113258
+ */
112533
113259
  accountCurrency?: (string | null)
113260
+ /**
113261
+ * Whether hashed email and phone are sent alongside gclid as additional match keys, which raises match rates
113262
+ */
112534
113263
  enhancedConversions: boolean
112535
113264
  }
113265
+ /**
113266
+ * Plain-language safety notes about what this combination of mode and match keys will do to the connected account
113267
+ */
112536
113268
  guidance: string[]
112537
113269
  }
112538
113270
 
@@ -112541,15 +113273,48 @@ export interface TrackingGoogleadsFeedbackRunInput {
112541
113273
  }
112542
113274
 
112543
113275
  export interface TrackingGoogleadsFeedbackRunOutput {
113276
+ /**
113277
+ * 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.
113278
+ */
113279
+ runId: string
113280
+ /**
113281
+ * Rows Google rejected in this pass.
113282
+ */
112544
113283
  failed: number
113284
+ /**
113285
+ * Of those, the ones that had a usable click id and a value, so a payload was actually built for them.
113286
+ */
112545
113287
  matched: number
113288
+ /**
113289
+ * Conversions dropped because no Google click could be tied to the person. A high count here is a tagging problem, not a Google one.
113290
+ */
112546
113291
  noGclid: number
113292
+ /**
113293
+ * 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.
113294
+ */
112547
113295
  skipped?: ("disabled" | "no_rules" | "not_connected")
113296
+ /**
113297
+ * Conversions in the lookback window that an enabled rule applied to.
113298
+ */
112548
113299
  selected: number
113300
+ /**
113301
+ * Rows Google accepted in this pass.
113302
+ */
112549
113303
  uploaded: number
113304
+ /**
113305
+ * The tenant whose conversions this pass uploaded.
113306
+ */
112550
113307
  productId: string
113308
+ /**
113309
+ * Conversions held back because their money value had not landed yet. They are retried on a later pass.
113310
+ */
112551
113311
  zeroValue: number
112552
- partialFailureError?: unknown
113312
+ /**
113313
+ * Google's own rejection detail, passed through unchanged, when it refused part of the batch. Absent when it accepted everything.
113314
+ */
113315
+ partialFailureError?: {
113316
+ [k: string]: unknown
113317
+ }
112553
113318
  }
112554
113319
 
112555
113320
  export interface TrackingGoogleadsFeedbackStatusInput {
@@ -112557,25 +113322,82 @@ export interface TrackingGoogleadsFeedbackStatusInput {
112557
113322
  }
112558
113323
 
112559
113324
  export interface TrackingGoogleadsFeedbackStatusOutput {
113325
+ /**
113326
+ * 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.
113327
+ */
112560
113328
  mode: ("existing_pixel" | "fresh_pixel")
113329
+ /**
113330
+ * Rows Google has rejected since this product was connected, across every pass.
113331
+ */
112561
113332
  failed: number
113333
+ /**
113334
+ * Whether conversions are being sent to Google Ads at all.
113335
+ */
112562
113336
  enabled: boolean
113337
+ /**
113338
+ * Coverage of the most recent pass. Null when no pass has run for this product yet.
113339
+ */
112563
113340
  lastRun: ({
113341
+ /**
113342
+ * When the last pass finished. Null when the stored summary predates this field.
113343
+ */
112564
113344
  ranAt: (string | null)
113345
+ /**
113346
+ * Rows Google rejected. Anything above zero is what makes the status partial.
113347
+ */
112565
113348
  failed: number
113349
+ /**
113350
+ * 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.
113351
+ */
112566
113352
  status: ("ok" | "partial" | "not_connected")
113353
+ /**
113354
+ * Of those, the ones that had a usable click id and a value, so a payload was actually built for them.
113355
+ */
112567
113356
  matched: number
113357
+ /**
113358
+ * Conversions dropped because no Google click could be tied to the person. A high count here is a tagging problem, not a Google one.
113359
+ */
112568
113360
  noGclid: number
113361
+ /**
113362
+ * Conversions in the lookback window that an enabled rule applied to.
113363
+ */
112569
113364
  selected: number
113365
+ /**
113366
+ * Rows Google accepted.
113367
+ */
112570
113368
  uploaded: number
113369
+ /**
113370
+ * Conversions held back because their money value had not landed yet. They are retried on a later pass.
113371
+ */
112571
113372
  zeroValue: number
112572
113373
  } | null)
113374
+ /**
113375
+ * 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.
113376
+ */
112573
113377
  guidance: string[]
113378
+ /**
113379
+ * Rows Google has accepted since this product was connected, across every pass.
113380
+ */
112574
113381
  uploaded: number
113382
+ /**
113383
+ * How many event-to-conversion-action rules are configured, enabled or not.
113384
+ */
112575
113385
  ruleCount: number
113386
+ /**
113387
+ * How many days back each pass looks for conversions to send, and how far back a click may be matched.
113388
+ */
112576
113389
  lookbackDays: number
113390
+ /**
113391
+ * 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.
113392
+ */
112577
113393
  accountCurrency: (string | null)
112578
- dynamicValueEvents: string[]
113394
+ /**
113395
+ * The event names that may use the Dynamic value source, because revenue is known for them.
113396
+ */
113397
+ dynamicValueEvents: string[]
113398
+ /**
113399
+ * Whether a stored email or phone number is sent alongside the click, so Google can match conversions the click id alone would miss.
113400
+ */
112579
113401
  enhancedConversions: boolean
112580
113402
  }
112581
113403
 
@@ -112597,65 +113419,228 @@ conversionDatetime: string
112597
113419
  }[]
112598
113420
 
112599
113421
  export interface TrackingGoogleadsRoasReportInput {
112600
- to: string
112601
- from: string
113422
+ /**
113423
+ * 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.
113424
+ */
113425
+ to?: string
113426
+ /**
113427
+ * 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.
113428
+ */
113429
+ from?: string
113430
+ /**
113431
+ * Which touchpoint gets the credit for a conversion: the last paid click before it, or the first. Defaults to last_click.
113432
+ */
112602
113433
  model?: ("last_click" | "first_click")
113434
+ /**
113435
+ * Restrict to conversions tracked on this installed site, e.g. acme.com. Omit to cover every domain of the product.
113436
+ */
112603
113437
  domain?: string
113438
+ /**
113439
+ * Restrict to one Google Ads account, by its customer id without dashes. Omit to cover every connected account.
113440
+ */
112604
113441
  customerId?: string
113442
+ /**
113443
+ * 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.
113444
+ */
112605
113445
  lookbackDays?: number
112606
113446
  }
112607
113447
 
112608
113448
  export interface TrackingGoogleadsRoasReportOutput {
113449
+ /**
113450
+ * End of the window this report covers, echoed back as an ISO-8601 UTC timestamp.
113451
+ */
112609
113452
  to: string
113453
+ /**
113454
+ * Start of the window this report covers, echoed back as an ISO-8601 UTC timestamp.
113455
+ */
112610
113456
  from: string
113457
+ /**
113458
+ * Which touchpoint earned the credit in these numbers: the last paid click before the conversion, or the first.
113459
+ */
112611
113460
  model: ("last_click" | "first_click")
113461
+ /**
113462
+ * 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.
113463
+ */
113464
+ stale: boolean
113465
+ /**
113466
+ * The installed site this report was restricted to; null when it covers every domain of the product.
113467
+ */
112612
113468
  domain: (string | null)
113469
+ /**
113470
+ * One entry per Google Ads account and currency. Kept apart on purpose: amounts in different currencies are never added together.
113471
+ */
112613
113472
  accounts: {
113473
+ /**
113474
+ * 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.
113475
+ */
112614
113476
  stale: boolean
113477
+ /**
113478
+ * 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.
113479
+ */
112615
113480
  currency: string
113481
+ /**
113482
+ * This account's campaigns, each with its ad groups and ads nested underneath.
113483
+ */
112616
113484
  campaigns: TrackingGoogleadsRoasReportOutputItems[]
113485
+ /**
113486
+ * Google Ads account these campaigns belong to, by customer id without dashes.
113487
+ */
112617
113488
  customerId: string
113489
+ /**
113490
+ * When cost was last pulled from Google Ads for this account (ISO-8601 UTC); null when it has never been pulled.
113491
+ */
112618
113492
  costLastSyncedAt: (string | null)
112619
113493
  }[]
113494
+ /**
113495
+ * ISO-4217 code every amount in this report is expressed in, when all accounts share one; null when the report spans several currencies.
113496
+ */
113497
+ currency: (string | null)
113498
+ /**
113499
+ * When this report was calculated (ISO-8601 UTC). The figures are a snapshot at this moment, not live.
113500
+ */
112620
113501
  computedAt: string
113502
+ /**
113503
+ * Google Ads account this whole report covers, when it covers exactly one; null when it spans several accounts.
113504
+ */
113505
+ customerId: (string | null)
113506
+ /**
113507
+ * How far back before a conversion a paid click was allowed to sit and still earn the credit, in days.
113508
+ */
112621
113509
  lookbackDays: number
113510
+ /**
113511
+ * Oldest moment cost was pulled from Google Ads across the accounts below (ISO-8601 UTC); null when any account has never synced.
113512
+ */
113513
+ costLastSyncedAt: (string | null)
113514
+ /**
113515
+ * 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.
113516
+ */
112622
113517
  unmatchedAttributed: {
113518
+ /**
113519
+ * Revenue that stayed outside every campaign, one row per currency. Never cross-summed.
113520
+ */
112623
113521
  revenue: TrackingGoogleadsRoasReportOutputItems1[]
113522
+ /**
113523
+ * How many distinct customers paid but could not be traced to any Google Ads campaign.
113524
+ */
112624
113525
  conversions: number
113526
+ /**
113527
+ * 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.
113528
+ */
112625
113529
  utmCampaign: (string | null)
112626
113530
  }[]
112627
113531
  }
112628
113532
  export interface TrackingGoogleadsRoasReportOutputItems {
113533
+ /**
113534
+ * What one attributed customer cost: cost divided by attributed conversions, in minor units of the account currency. null when there were no attributed conversions.
113535
+ */
112629
113536
  cpa: (number | null)
113537
+ /**
113538
+ * Google Ads ad this node is, by its numeric id; null on a campaign or ad group node.
113539
+ */
112630
113540
  adId: (string | null)
113541
+ /**
113542
+ * What Google charged and what Google itself counted for this node over the window.
113543
+ */
112631
113544
  cost: {
113545
+ /**
113546
+ * How many times someone clicked through from Google over the window.
113547
+ */
112632
113548
  clicks: number
113549
+ /**
113550
+ * ISO-4217 code of the Google Ads account these numbers come from, e.g. USD. Fixed per account.
113551
+ */
112633
113552
  currency: string
113553
+ /**
113554
+ * What Google charged for this campaign, ad group or ad over the window, in minor units (1250 = 12.50).
113555
+ */
112634
113556
  costMinor: number
113557
+ /**
113558
+ * How many times Google showed this ad over the window.
113559
+ */
112635
113560
  impressions: number
113561
+ /**
113562
+ * Conversions GOOGLE counted for this node — its own attribution, not ours. May be fractional, because Google splits credit across touchpoints.
113563
+ */
112636
113564
  platformConversions: number
113565
+ /**
113566
+ * Conversion value GOOGLE reports for this node, in minor units of the account currency. Compare it with our attributed revenue; the two rarely agree.
113567
+ */
112637
113568
  platformConversionsValueMinor: number
112638
113569
  }
113570
+ /**
113571
+ * What this campaign, ad group or ad is called in Google Ads; null when the name has not been synced.
113572
+ */
112639
113573
  name: (string | null)
113574
+ /**
113575
+ * 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.
113576
+ */
112640
113577
  roas: (number | null)
113578
+ /**
113579
+ * 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.
113580
+ */
112641
113581
  level: ("campaign" | "ad_group" | "ad")
113582
+ /**
113583
+ * Google Ads campaign state, passed through raw: ENABLED, PAUSED, REMOVED. Present on campaign nodes only — the key is absent below.
113584
+ */
112642
113585
  status?: string
113586
+ /**
113587
+ * The level below this one: ad groups under a campaign, ads under an ad group, empty on an ad.
113588
+ */
112643
113589
  children: TrackingGoogleadsRoasReportOutputItems[]
113590
+ /**
113591
+ * Google Ads ad group this node belongs to, by its numeric id; null on a campaign node.
113592
+ */
112644
113593
  adGroupId: (string | null)
113594
+ /**
113595
+ * What WE traced back to this node from our own tracking. null below campaign level, and null on a campaign nothing was traced to.
113596
+ */
112645
113597
  attributed: ({
113598
+ /**
113599
+ * What WE traced back to this campaign, one row per currency the customers paid in. Never cross-summed — use accountCurrencyNetMinor for a single figure.
113600
+ */
112646
113601
  revenue: TrackingGoogleadsRoasReportOutputItems1[]
112647
- matchedBy: (("campaign_id" | "campaign_name" | "gclid") | null)
113602
+ /**
113603
+ * 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.
113604
+ */
113605
+ matchedBy: (("lt_campaign_id" | "campaign_id" | "campaign_name" | "gclid") | null)
113606
+ /**
113607
+ * 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.
113608
+ */
112648
113609
  conversions: number
113610
+ /**
113611
+ * 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.
113612
+ */
112649
113613
  accountCurrencyNetMinor: number
112650
113614
  } | null)
113615
+ /**
113616
+ * Google Ads campaign this node belongs to, by its numeric id. Set at every level.
113617
+ */
112651
113618
  campaignId: string
113619
+ /**
113620
+ * Google Ads account this node belongs to, by customer id without dashes.
113621
+ */
112652
113622
  customerId: string
113623
+ /**
113624
+ * 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.
113625
+ */
112653
113626
  channelType?: (string | null)
112654
113627
  }
112655
113628
  export interface TrackingGoogleadsRoasReportOutputItems1 {
113629
+ /**
113630
+ * ISO-4217 code the three amounts on this row are denominated in, e.g. USD. One row per currency; rows are never added together.
113631
+ */
112656
113632
  currency: string
113633
+ /**
113634
+ * Money kept after refunds (gross minus refunded), in minor units of this row's currency. This is what ROAS is calculated from.
113635
+ */
112657
113636
  netMinor: number
113637
+ /**
113638
+ * Money taken before refunds, in minor units of this row's currency (1250 = 12.50).
113639
+ */
112658
113640
  grossMinor: number
113641
+ /**
113642
+ * Money given back within the window, in minor units of this row's currency; already subtracted from netMinor.
113643
+ */
112659
113644
  refundedMinor: number
112660
113645
  }
112661
113646
 
@@ -112664,21 +113649,67 @@ export interface TrackingGoogleadsSyncNowInput {
112664
113649
  }
112665
113650
 
112666
113651
  export interface TrackingGoogleadsSyncNowOutput {
113652
+ /**
113653
+ * 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.
113654
+ */
112667
113655
  rows: {
113656
+ /**
113657
+ * Ads written.
113658
+ */
112668
113659
  ads: number
113660
+ /**
113661
+ * Day-by-day ad spend and metric rows written.
113662
+ */
112669
113663
  adDaily: number
113664
+ /**
113665
+ * Ad groups written.
113666
+ */
112670
113667
  adGroups: number
113668
+ /**
113669
+ * Campaigns written, names and status included.
113670
+ */
112671
113671
  campaigns: number
113672
+ /**
113673
+ * Day-by-day ad-group spend and metric rows written.
113674
+ */
112672
113675
  adGroupDaily: number
113676
+ /**
113677
+ * Day-by-day campaign spend and metric rows written.
113678
+ */
112673
113679
  campaignDaily: number
112674
113680
  }
113681
+ /**
113682
+ * 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.
113683
+ */
113684
+ runId: string
113685
+ /**
113686
+ * 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.
113687
+ */
112675
113688
  reason?: string
113689
+ /**
113690
+ * Whether the sweep ran. skipped means the Google Ads account could not be reached and nothing at all was written.
113691
+ */
112676
113692
  status: ("ok" | "skipped")
113693
+ /**
113694
+ * The range of days this sweep read spend and metrics for.
113695
+ */
112677
113696
  window: {
113697
+ /**
113698
+ * Last day covered, inclusive, as YYYY-MM-DD.
113699
+ */
112678
113700
  end: string
113701
+ /**
113702
+ * First day covered, inclusive, as YYYY-MM-DD.
113703
+ */
112679
113704
  start: string
112680
113705
  }
113706
+ /**
113707
+ * The tenant whose Google Ads account was swept.
113708
+ */
112681
113709
  productId: string
113710
+ /**
113711
+ * When the sweep finished. Null when nothing was written.
113712
+ */
112682
113713
  lastSyncedAt: (string | null)
112683
113714
  }
112684
113715
 
@@ -112694,54 +113725,187 @@ from?: string
112694
113725
  }
112695
113726
 
112696
113727
  export interface TrackingGoogleadsTrackingHealthOutput {
113728
+ /**
113729
+ * End of the range these figures cover, as an instant.
113730
+ */
112697
113731
  to: string
113732
+ /**
113733
+ * Start of the range these figures cover, as an instant. Echoes back the range that was asked for.
113734
+ */
112698
113735
  from: string
113736
+ /**
113737
+ * Whether the tracking template has been seen working live: true once at least one tagged click has arrived.
113738
+ */
112699
113739
  installed: boolean
113740
+ /**
113741
+ * Whether the sample above was cut short. True means more untagged URLs exist than are listed.
113742
+ */
112700
113743
  truncated: boolean
113744
+ /**
113745
+ * Google paid clicks that arrived on the site in this range. The denominator for everything below.
113746
+ */
112701
113747
  paidClicks: number
113748
+ /**
113749
+ * 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.
113750
+ */
112702
113751
  dataQuality: {
113752
+ /**
113753
+ * 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.
113754
+ */
112703
113755
  cookielessPaidClicks: number
112704
113756
  }
113757
+ /**
113758
+ * Share of paid clicks that arrived untagged, between 0 and 1. Anything much above zero means the tracking template needs fixing.
113759
+ */
112705
113760
  breakageRate: number
113761
+ /**
113762
+ * Of those, the ones that arrived carrying our URL tracking parameters, so the campaign behind them is known.
113763
+ */
112706
113764
  taggedClicks: number
113765
+ /**
113766
+ * When the most recent untagged click arrived. Close to now means the breakage is still live. Null when none did.
113767
+ */
112707
113768
  lastUntaggedAt: (string | null)
113769
+ /**
113770
+ * 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.
113771
+ */
112708
113772
  untaggedClicks: number
113773
+ /**
113774
+ * When the first untagged click of the range arrived — roughly when the breakage started. Null when none did.
113775
+ */
112709
113776
  firstUntaggedAt: (string | null)
113777
+ /**
113778
+ * 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.
113779
+ */
112710
113780
  sampleUntaggedUrls: string[]
112711
113781
  }
112712
113782
 
112713
113783
  export interface TrackingGoogleadsUsVsPlatformInput {
112714
- to: string
112715
- from: string
113784
+ /**
113785
+ * 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.
113786
+ */
113787
+ to?: string
113788
+ /**
113789
+ * 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.
113790
+ */
113791
+ from?: string
113792
+ /**
113793
+ * Which touchpoint gets the credit for a conversion: the last paid click before it, or the first. Defaults to last_click.
113794
+ */
112716
113795
  model?: ("last_click" | "first_click")
113796
+ /**
113797
+ * Restrict to conversions tracked on this installed site, e.g. acme.com. Omit to cover every domain of the product.
113798
+ */
112717
113799
  domain?: string
113800
+ /**
113801
+ * Restrict to one Google Ads account, by its customer id without dashes. Omit to cover every connected account.
113802
+ */
112718
113803
  customerId?: string
113804
+ /**
113805
+ * 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.
113806
+ */
112719
113807
  lookbackDays?: number
112720
113808
  }
112721
113809
 
112722
113810
  export interface TrackingGoogleadsUsVsPlatformOutput {
113811
+ /**
113812
+ * End of the window this comparison covers, echoed back as an ISO-8601 UTC timestamp.
113813
+ */
112723
113814
  to: string
113815
+ /**
113816
+ * Start of the window this comparison covers, echoed back as an ISO-8601 UTC timestamp.
113817
+ */
112724
113818
  from: string
113819
+ /**
113820
+ * 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.
113821
+ */
112725
113822
  model: ("last_click" | "first_click")
113823
+ /**
113824
+ * 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.
113825
+ */
113826
+ stale: boolean
113827
+ /**
113828
+ * The installed site this comparison was restricted to; null when it covers every domain of the product.
113829
+ */
112726
113830
  domain: (string | null)
113831
+ /**
113832
+ * One entry per Google Ads account and currency, each holding its per-campaign comparison rows. Currencies are never added together.
113833
+ */
112727
113834
  accounts: {
113835
+ /**
113836
+ * One row per campaign in this account, ours beside Google's.
113837
+ */
112728
113838
  rows: {
113839
+ /**
113840
+ * What this campaign is called in Google Ads; null when the name has not been synced.
113841
+ */
112729
113842
  name: (string | null)
113843
+ /**
113844
+ * ISO-4217 code both sides of this comparison are expressed in, e.g. USD. Ours and Google's are never converted.
113845
+ */
112730
113846
  currency: string
113847
+ /**
113848
+ * The Google Ads campaign this row compares, by its numeric id.
113849
+ */
112731
113850
  campaignId: string
113851
+ /**
113852
+ * Google Ads account this campaign belongs to, by customer id without dashes.
113853
+ */
112732
113854
  customerId: string
113855
+ /**
113856
+ * How many distinct customers WE traced to this campaign. A whole number: we never split a customer across campaigns.
113857
+ */
112733
113858
  ourConversions: number
113859
+ /**
113860
+ * Net revenue WE traced to this campaign, in minor units of the account currency (1250 = 12.50). 0 when we traced none.
113861
+ */
112734
113862
  ourRevenueNetMinor: number
113863
+ /**
113864
+ * 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.
113865
+ */
112735
113866
  platformConversions: number
113867
+ /**
113868
+ * Conversion value GOOGLE reports for the same campaign, in minor units of the account currency. The counterpart of ourRevenueNetMinor.
113869
+ */
112736
113870
  platformConversionsValueMinor: number
112737
113871
  }[]
113872
+ /**
113873
+ * 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.
113874
+ */
112738
113875
  stale: boolean
113876
+ /**
113877
+ * 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.
113878
+ */
112739
113879
  currency: string
113880
+ /**
113881
+ * Google Ads account these comparison rows belong to, by customer id without dashes.
113882
+ */
112740
113883
  customerId: string
113884
+ /**
113885
+ * When cost was last pulled from Google Ads for this account (ISO-8601 UTC); null when it has never been pulled.
113886
+ */
112741
113887
  costLastSyncedAt: (string | null)
112742
113888
  }[]
113889
+ /**
113890
+ * ISO-4217 code every amount in this report is expressed in, when all accounts share one; null when the report spans several currencies.
113891
+ */
113892
+ currency: (string | null)
113893
+ /**
113894
+ * When this comparison was calculated (ISO-8601 UTC). The figures are a snapshot at this moment, not live.
113895
+ */
112743
113896
  computedAt: string
113897
+ /**
113898
+ * Google Ads account this whole report covers, when it covers exactly one; null when it spans several accounts.
113899
+ */
113900
+ customerId: (string | null)
113901
+ /**
113902
+ * How far back before a conversion a paid click was allowed to sit and still earn the credit on our side, in days.
113903
+ */
112744
113904
  lookbackDays: number
113905
+ /**
113906
+ * Oldest moment cost was pulled from Google Ads across the accounts below (ISO-8601 UTC); null when any account has never synced.
113907
+ */
113908
+ costLastSyncedAt: (string | null)
112745
113909
  }
112746
113910
 
112747
113911
  export interface TrackingIdentityHealthInput {
@@ -112749,11 +113913,29 @@ export interface TrackingIdentityHealthInput {
112749
113913
  }
112750
113914
 
112751
113915
  export interface TrackingIdentityHealthOutput {
113916
+ /**
113917
+ * When these numbers were computed, ISO 8601 UTC. They are a live count, so this is effectively the moment of the call.
113918
+ */
112752
113919
  computedAt: string
113920
+ /**
113921
+ * How many people the product holds in total, anonymous ones included. The denominator of both rates below.
113922
+ */
112753
113923
  totalProfiles: number
113924
+ /**
113925
+ * 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.
113926
+ */
112754
113927
  identifiedRate: number
113928
+ /**
113929
+ * 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.
113930
+ */
112755
113931
  adTouchpointRate: number
113932
+ /**
113933
+ * How many of them an email or phone is known for — the people a message can actually be sent to.
113934
+ */
112756
113935
  identifiedProfiles: number
113936
+ /**
113937
+ * 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.
113938
+ */
112757
113939
  adTouchpointProfiles: number
112758
113940
  }
112759
113941
 
@@ -112765,6 +113947,9 @@ domain: string
112765
113947
  }
112766
113948
 
112767
113949
  export interface TrackingInstallDomainsCreateOutput {
113950
+ /**
113951
+ * The domain as stored after normalisation, which may differ from what was submitted
113952
+ */
112768
113953
  domain: string
112769
113954
  }
112770
113955
 
@@ -112776,6 +113961,9 @@ domain: string
112776
113961
  }
112777
113962
 
112778
113963
  export interface TrackingInstallDomainsDeleteOutput {
113964
+ /**
113965
+ * Always true — the domain was removed; a failure arrives as an error, not as false
113966
+ */
112779
113967
  ok: true
112780
113968
  }
112781
113969
 
@@ -112784,14 +113972,35 @@ export interface TrackingInstallDomainsListInput {
112784
113972
  }
112785
113973
 
112786
113974
  export interface TrackingInstallDomainsListOutput {
113975
+ /**
113976
+ * Domains sending events that nobody registered — usually a staging host, a typo, or an install worth adding
113977
+ */
112787
113978
  discovered: TrackingInstallDomainsListOutputItems[]
113979
+ /**
113980
+ * Domains deliberately put on the install checklist, each with whether its script has been seen
113981
+ */
112788
113982
  registered: TrackingInstallDomainsListOutputItems[]
113983
+ /**
113984
+ * Length in days of the lookback window the `seen` and `lastSeen` figures are measured over
113985
+ */
112789
113986
  windowDays: number
112790
113987
  }
112791
113988
  export interface TrackingInstallDomainsListOutputItems {
113989
+ /**
113990
+ * Whether the tracking script actually sent an event from this domain inside the lookback window
113991
+ */
112792
113992
  seen: boolean
113993
+ /**
113994
+ * Normalised domain name the status is reported for
113995
+ */
112793
113996
  domain: string
113997
+ /**
113998
+ * ISO-8601 timestamp of the most recent event from this domain, or null if none arrived in the window
113999
+ */
112794
114000
  lastSeen: (string | null)
114001
+ /**
114002
+ * Whether the domain is on the install checklist on purpose, as opposed to merely observed sending events
114003
+ */
112795
114004
  registered: boolean
112796
114005
  }
112797
114006
 
@@ -112803,6 +114012,9 @@ domain: string
112803
114012
  }
112804
114013
 
112805
114014
  export interface TrackingLinkDomainsCreateOutput {
114015
+ /**
114016
+ * The domain as stored after normalisation, which may differ from what was submitted
114017
+ */
112806
114018
  domain: string
112807
114019
  }
112808
114020
 
@@ -112814,6 +114026,9 @@ domain: string
112814
114026
  }
112815
114027
 
112816
114028
  export interface TrackingLinkDomainsDeleteOutput {
114029
+ /**
114030
+ * Always true — the domain left the linking group; a failure arrives as an error, not as false
114031
+ */
112817
114032
  ok: true
112818
114033
  }
112819
114034
 
@@ -112822,6 +114037,9 @@ export interface TrackingLinkDomainsListInput {
112822
114037
  }
112823
114038
 
112824
114039
  export interface TrackingLinkDomainsListOutput {
114040
+ /**
114041
+ * Root domains in the linking group; the tracking script decorates links between any two of them so one visitor stays one visitor
114042
+ */
112825
114043
  domains: string[]
112826
114044
  }
112827
114045
 
@@ -112841,22 +114059,70 @@ domain?: string
112841
114059
  }
112842
114060
 
112843
114061
  export interface TrackingLiveEventsListOutput {
114062
+ /**
114063
+ * Pass back as `since` to fetch what arrived after this page. Null when there is nothing older to page into.
114064
+ */
112844
114065
  cursor: (string | null)
114066
+ /**
114067
+ * The page of events, newest first.
114068
+ */
112845
114069
  events: {
114070
+ /**
114071
+ * Stable identifier of this single event; unique within the product and safe to deduplicate on across polls.
114072
+ */
112846
114073
  id: string
114074
+ /**
114075
+ * When the event happened, as reported by the tracker (ISO 8601, UTC).
114076
+ */
112847
114077
  ts: string
114078
+ /**
114079
+ * Page address the event fired on, query string included. Free text from the customer site, so it can carry personal data.
114080
+ */
112848
114081
  url: (string | null)
114082
+ /**
114083
+ * Event name as sent by the site, e.g. 'pageview' or a custom conversion name.
114084
+ */
112849
114085
  name: string
114086
+ /**
114087
+ * Document title of that page at the time. Free text from the customer site, so it can carry personal data.
114088
+ */
112850
114089
  title: (string | null)
114090
+ /**
114091
+ * Site the event came from; null when the tracker could not determine one.
114092
+ */
112851
114093
  domain: (string | null)
114094
+ /**
114095
+ * Where this visit came from, as read off the landing URL and referrer. Every field is null when the visit carried nothing.
114096
+ */
112852
114097
  source: {
114098
+ /**
114099
+ * Address the visitor arrived from; null on a direct visit. Free text from the customer site, so it can carry personal data.
114100
+ */
112853
114101
  referrer: (string | null)
114102
+ /**
114103
+ * utm_medium of the landing URL, e.g. cpc; null when absent.
114104
+ */
112854
114105
  utmMedium: (string | null)
114106
+ /**
114107
+ * utm_source of the landing URL, e.g. newsletter; null when absent.
114108
+ */
112855
114109
  utmSource: (string | null)
114110
+ /**
114111
+ * Which ad-network click id was present on the landing URL, e.g. 'gclid'. Null when the visit carried none.
114112
+ */
112856
114113
  clickIdType: (string | null)
114114
+ /**
114115
+ * utm_campaign of the landing URL; null when absent.
114116
+ */
112857
114117
  utmCampaign: (string | null)
112858
114118
  }
114119
+ /**
114120
+ * Two-letter ISO 3166-1 alpha-2 country resolved from the request, e.g. DE; null when it could not be resolved.
114121
+ */
112859
114122
  country: (string | null)
114123
+ /**
114124
+ * 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.
114125
+ */
112860
114126
  anonymousId: (string | null)
112861
114127
  }[]
112862
114128
  }
@@ -112869,18 +114135,52 @@ profileId: string
112869
114135
  }
112870
114136
 
112871
114137
  export interface TrackingProfilesDeleteOutput {
114138
+ /**
114139
+ * Always true: the response only exists when the erasure ran. A failure arrives as an error, not as ok=false.
114140
+ */
112872
114141
  ok: true
114142
+ /**
114143
+ * What happened to the archived copy of the events. Postgres is erased synchronously; the archive is not, and this says so out loud.
114144
+ */
112873
114145
  archive: {
114146
+ /**
114147
+ * Plain-language reason the archived copy could not be deleted in the same breath — text meant to be quoted into a compliance record.
114148
+ */
112874
114149
  note: string
114150
+ /**
114151
+ * Always gap_flagged: the archived copy is known to still hold this person and the gap has been recorded rather than silently ignored.
114152
+ */
112875
114153
  status: "gap_flagged"
112876
114154
  }
114155
+ /**
114156
+ * How much was actually destroyed, by kind. Worth recording: it is the evidence that the erasure did something.
114157
+ */
112877
114158
  deleted: {
114159
+ /**
114160
+ * Tracked events removed, found through the anonymous ids this person browsed under.
114161
+ */
112878
114162
  events: number
114163
+ /**
114164
+ * Merge records removed — the history of this person having been joined with another.
114165
+ */
112879
114166
  merges: number
114167
+ /**
114168
+ * Profile rows removed: 1 in practice, and 0 only if the row vanished between the lookup and the delete.
114169
+ */
112880
114170
  profile: number
114171
+ /**
114172
+ * Emails, phones, anonymous ids and click ids removed for this person.
114173
+ */
112881
114174
  identifiers: number
112882
114175
  }
114176
+ /**
114177
+ * The person who was erased. Nothing else of them remains, so this is all there is left to name them by.
114178
+ */
112883
114179
  profileId: string
114180
+ /**
114181
+ * 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.
114182
+ */
114183
+ requestId: string
112884
114184
  }
112885
114185
 
112886
114186
  export interface TrackingProfilesExportInput {
@@ -112891,52 +114191,172 @@ profileId: string
112891
114191
  }
112892
114192
 
112893
114193
  export interface TrackingProfilesExportOutput {
114194
+ /**
114195
+ * The complete history, newest event first, capped at 50000 events — check `truncated` before treating it as complete.
114196
+ */
112894
114197
  journey: {
114198
+ /**
114199
+ * When the event happened, ISO 8601 UTC. The journey is ordered by this, newest first.
114200
+ */
112895
114201
  ts: string
114202
+ /**
114203
+ * Opaque handle for this one event, unique inside the product. Use it to deduplicate, not to sort — it carries no order.
114204
+ */
112896
114205
  ref: string
114206
+ /**
114207
+ * Full address of the page, query string included. Personal data — it can carry an email in a link. Null off-page.
114208
+ */
112897
114209
  url: (string | null)
114210
+ /**
114211
+ * What happened, as the tracking snippet named it: page_view, signup, purchase, or any custom name the product sends.
114212
+ */
112898
114213
  name: string
114214
+ /**
114215
+ * Custom properties the product attached to this event. Free-form: the keys are whatever the snippet sent, and they differ by event name.
114216
+ */
112899
114217
  props: {
112900
114218
  [k: string]: unknown
112901
114219
  }
114220
+ /**
114221
+ * Title of the page as the browser reported it. Null off-page.
114222
+ */
112902
114223
  title: (string | null)
114224
+ /**
114225
+ * Hostname the event was sent from. Null for an event with no page behind it, such as a server-side call.
114226
+ */
112903
114227
  domain: (string | null)
114228
+ /**
114229
+ * Campaign tags and ad click carried by this event, as they were on the URL at the time.
114230
+ */
112904
114231
  source: {
114232
+ /**
114233
+ * The ad click identifier on this URL, raw. Personal data: it resolves to one individual inside the ad network.
114234
+ */
112905
114235
  clickId: (string | null)
114236
+ /**
114237
+ * utm_term on the URL of this event — the keyword bought, on a paid-search arrival.
114238
+ */
112906
114239
  utmTerm: (string | null)
114240
+ /**
114241
+ * utm_medium on the URL of this event.
114242
+ */
112907
114243
  utmMedium: (string | null)
114244
+ /**
114245
+ * utm_source on the URL of THIS event — the campaign at this moment, not the one that first acquired the person.
114246
+ */
112908
114247
  utmSource: (string | null)
114248
+ /**
114249
+ * utm_content on the URL of this event — which creative or link variant was clicked.
114250
+ */
112909
114251
  utmContent: (string | null)
114252
+ /**
114253
+ * Which ad network stamped the click id below: gclid for Google Ads, fbclid for Meta. Null on a non-ad arrival.
114254
+ */
112910
114255
  clickIdType: (string | null)
114256
+ /**
114257
+ * utm_campaign on the URL of this event.
114258
+ */
112911
114259
  utmCampaign: (string | null)
112912
114260
  }
114261
+ /**
114262
+ * Two-letter ISO 3166-1 country the request came from, resolved from the IP at collection time. Null when it could not be resolved.
114263
+ */
112913
114264
  country: (string | null)
114265
+ /**
114266
+ * Where the person came from immediately before this event. Null on a direct arrival or off-page.
114267
+ */
112914
114268
  referrer: (string | null)
114269
+ /**
114270
+ * Handle for the browsing session this event belongs to; events sharing it happened in one sitting. Null for an event collected outside a session.
114271
+ */
112915
114272
  sessionId: (string | null)
112916
114273
  }[]
114274
+ /**
114275
+ * The person themselves: their handle, how far they have come, and when they were seen.
114276
+ */
112917
114277
  profile: {
114278
+ /**
114279
+ * 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.
114280
+ */
112918
114281
  status: ("anonymous" | "identified" | "customer")
114282
+ /**
114283
+ * When this product first created the profile row, ISO 8601 UTC. Later than firstSeenAt when events were backfilled.
114284
+ */
112919
114285
  createdAt: string
114286
+ /**
114287
+ * Stable handle for this person inside the product. Pass it to any other people step; it survives identity merges.
114288
+ */
112920
114289
  profileId: string
114290
+ /**
114291
+ * Timestamp of their most recent event, ISO 8601 UTC — the freshness of everything else here.
114292
+ */
112921
114293
  lastSeenAt: string
114294
+ /**
114295
+ * Timestamp of the earliest event on record for this person, ISO 8601 UTC.
114296
+ */
112922
114297
  firstSeenAt: string
112923
114298
  }
114299
+ /**
114300
+ * 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.
114301
+ */
112924
114302
  signals: {
114303
+ /**
114304
+ * 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.
114305
+ */
112925
114306
  emails: string[]
114307
+ /**
114308
+ * Every phone number this person has been identified by. Stably ordered for display and diffing only, with no primary among them.
114309
+ */
112926
114310
  phones: string[]
114311
+ /**
114312
+ * Distinct hostnames this person browsed, taken from their events — not an identifier type, just where they were.
114313
+ */
112927
114314
  domains: string[]
114315
+ /**
114316
+ * 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.
114317
+ */
112928
114318
  clickIds: {
114319
+ /**
114320
+ * Which ad network the click came from — gclid for Google Ads, fbclid for Meta. Open set.
114321
+ */
112929
114322
  type: string
114323
+ /**
114324
+ * The click identifier itself, raw, as the network stamped it on the landing URL.
114325
+ */
112930
114326
  value: string
112931
114327
  }[]
112932
114328
  }
114329
+ /**
114330
+ * True when the history hit the 50000-event cap and older events were left out. False means this export is everything held.
114331
+ */
112933
114332
  truncated: boolean
114333
+ /**
114334
+ * When this export was produced, ISO 8601 UTC — the as-of date to put on a subject-access response.
114335
+ */
112934
114336
  exportedAt: string
114337
+ /**
114338
+ * 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.
114339
+ */
112935
114340
  acquisition: ({
114341
+ /**
114342
+ * Channel of that same first visit (utm_medium): cpc, email, social, and so on. Null when untagged.
114343
+ */
112936
114344
  utmMedium: (string | null)
114345
+ /**
114346
+ * 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.
114347
+ */
112937
114348
  utmSource: (string | null)
114349
+ /**
114350
+ * 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.
114351
+ */
112938
114352
  clickIdType: (string | null)
114353
+ /**
114354
+ * When that first visit happened, ISO 8601 UTC. This is the timestamp of the earliest event, not when the profile row was written.
114355
+ */
112939
114356
  firstSeenAt: string
114357
+ /**
114358
+ * Campaign of that same first visit (utm_campaign). Null when untagged.
114359
+ */
112940
114360
  utmCampaign: (string | null)
112941
114361
  } | null)
112942
114362
  }
@@ -112951,78 +114371,228 @@ profileId: string
112951
114371
  */
112952
114372
  journeyLimit?: number
112953
114373
  /**
112954
- * Opaque cursor to page further back through the journey
114374
+ * Continue paging back through the journey: pass the cursor the previous page returned. Omit to start at the most recent event.
112955
114375
  */
112956
114376
  journeyCursor?: string
112957
114377
  }
112958
114378
 
112959
114379
  export interface TrackingProfilesGetOutput {
114380
+ /**
114381
+ * Lifetime value of this person, per currency. Null when revenue tracking is not in use for the product.
114382
+ */
112960
114383
  ltv: ({
114384
+ /**
114385
+ * 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.
114386
+ */
112961
114387
  entries: {
114388
+ /**
114389
+ * ISO 4217 code the amounts beside it are denominated in, e.g. EUR. One entry per code the person ever paid in.
114390
+ */
112962
114391
  currency: string
114392
+ /**
114393
+ * What the business actually kept: gross minus refunded, in minor units. This is the number to rank customers by.
114394
+ */
112963
114395
  netMinor: number
114396
+ /**
114397
+ * Everything the person was ever charged, in minor units (1250 = 12.50 EUR). Refunds are not subtracted here.
114398
+ */
112964
114399
  grossMinor: number
114400
+ /**
114401
+ * Their most recent payment in this currency, ISO 8601 UTC — how live the relationship is.
114402
+ */
112965
114403
  lastPaymentAt: (string | null)
114404
+ /**
114405
+ * How much of the gross went back to them, in minor units. Zero for a person who never had a refund.
114406
+ */
112966
114407
  refundedMinor: number
114408
+ /**
114409
+ * When this person first paid in this currency, ISO 8601 UTC. Null when the totals were computed without a dated payment.
114410
+ */
112967
114411
  firstPaymentAt: (string | null)
112968
114412
  }[]
114413
+ /**
114414
+ * The person these totals belong to — the same handle as profile.profileId.
114415
+ */
112969
114416
  profileId: string
114417
+ /**
114418
+ * When these totals were last recomputed, ISO 8601 UTC. Null when they have never been computed.
114419
+ */
112970
114420
  computedAt: (string | null)
112971
114421
  } | null)
114422
+ /**
114423
+ * 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.
114424
+ */
112972
114425
  journey: {
114426
+ /**
114427
+ * Pass back as `journeyCursor` to page further back in time. Null once the journey is exhausted.
114428
+ */
112973
114429
  cursor: (string | null)
114430
+ /**
114431
+ * This page of the journey, newest event first.
114432
+ */
112974
114433
  events: {
114434
+ /**
114435
+ * When the event happened, ISO 8601 UTC. The journey is ordered by this, newest first.
114436
+ */
112975
114437
  ts: string
114438
+ /**
114439
+ * Opaque handle for this one event, unique inside the product. Use it to deduplicate, not to sort — it carries no order.
114440
+ */
112976
114441
  ref: string
114442
+ /**
114443
+ * Full address of the page, query string included. Personal data — it can carry an email in a link. Null off-page.
114444
+ */
112977
114445
  url: (string | null)
114446
+ /**
114447
+ * What happened, as the tracking snippet named it: page_view, signup, purchase, or any custom name the product sends.
114448
+ */
112978
114449
  name: string
114450
+ /**
114451
+ * Custom properties the product attached to this event. Free-form: the keys are whatever the snippet sent, and they differ by event name.
114452
+ */
112979
114453
  props: {
112980
114454
  [k: string]: unknown
112981
114455
  }
114456
+ /**
114457
+ * Title of the page as the browser reported it. Null off-page.
114458
+ */
112982
114459
  title: (string | null)
114460
+ /**
114461
+ * Hostname the event was sent from. Null for an event with no page behind it, such as a server-side call.
114462
+ */
112983
114463
  domain: (string | null)
114464
+ /**
114465
+ * Campaign tags and ad click carried by this event, as they were on the URL at the time.
114466
+ */
112984
114467
  source: {
114468
+ /**
114469
+ * The ad click identifier on this URL, raw. Personal data: it resolves to one individual inside the ad network.
114470
+ */
112985
114471
  clickId: (string | null)
114472
+ /**
114473
+ * utm_term on the URL of this event — the keyword bought, on a paid-search arrival.
114474
+ */
112986
114475
  utmTerm: (string | null)
114476
+ /**
114477
+ * utm_medium on the URL of this event.
114478
+ */
112987
114479
  utmMedium: (string | null)
114480
+ /**
114481
+ * utm_source on the URL of THIS event — the campaign at this moment, not the one that first acquired the person.
114482
+ */
112988
114483
  utmSource: (string | null)
114484
+ /**
114485
+ * utm_content on the URL of this event — which creative or link variant was clicked.
114486
+ */
112989
114487
  utmContent: (string | null)
114488
+ /**
114489
+ * Which ad network stamped the click id below: gclid for Google Ads, fbclid for Meta. Null on a non-ad arrival.
114490
+ */
112990
114491
  clickIdType: (string | null)
114492
+ /**
114493
+ * utm_campaign on the URL of this event.
114494
+ */
112991
114495
  utmCampaign: (string | null)
112992
114496
  }
114497
+ /**
114498
+ * Two-letter ISO 3166-1 country the request came from, resolved from the IP at collection time. Null when it could not be resolved.
114499
+ */
112993
114500
  country: (string | null)
114501
+ /**
114502
+ * Where the person came from immediately before this event. Null on a direct arrival or off-page.
114503
+ */
112994
114504
  referrer: (string | null)
114505
+ /**
114506
+ * Handle for the browsing session this event belongs to; events sharing it happened in one sitting. Null for an event collected outside a session.
114507
+ */
112995
114508
  sessionId: (string | null)
112996
114509
  }[]
112997
114510
  }
114511
+ /**
114512
+ * The person themselves: their handle, how far they have come, and when they were seen.
114513
+ */
112998
114514
  profile: {
114515
+ /**
114516
+ * 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.
114517
+ */
112999
114518
  status: ("anonymous" | "identified" | "customer")
114519
+ /**
114520
+ * When this product first created the profile row, ISO 8601 UTC. Later than firstSeenAt when events were backfilled.
114521
+ */
113000
114522
  createdAt: string
114523
+ /**
114524
+ * Stable handle for this person inside the product. Pass it to any other people step; it survives identity merges.
114525
+ */
113001
114526
  profileId: string
114527
+ /**
114528
+ * Timestamp of their most recent event, ISO 8601 UTC — the freshness of everything else here.
114529
+ */
113002
114530
  lastSeenAt: string
114531
+ /**
114532
+ * Timestamp of the earliest event on record for this person, ISO 8601 UTC.
114533
+ */
113003
114534
  firstSeenAt: string
113004
114535
  }
114536
+ /**
114537
+ * 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.
114538
+ */
113005
114539
  signals: {
114540
+ /**
114541
+ * 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.
114542
+ */
113006
114543
  emails: string[]
114544
+ /**
114545
+ * Every phone number this person has been identified by. Stably ordered for display and diffing only, with no primary among them.
114546
+ */
113007
114547
  phones: string[]
114548
+ /**
114549
+ * Distinct hostnames this person browsed, taken from their events — not an identifier type, just where they were.
114550
+ */
113008
114551
  domains: string[]
114552
+ /**
114553
+ * 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.
114554
+ */
113009
114555
  clickIds: {
114556
+ /**
114557
+ * Which ad network the click came from — gclid for Google Ads, fbclid for Meta. Open set.
114558
+ */
113010
114559
  type: string
114560
+ /**
114561
+ * The click identifier itself, raw, as the network stamped it on the landing URL.
114562
+ */
113011
114563
  value: string
113012
114564
  }[]
113013
114565
  }
114566
+ /**
114567
+ * 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.
114568
+ */
113014
114569
  acquisition: ({
114570
+ /**
114571
+ * Channel of that same first visit (utm_medium): cpc, email, social, and so on. Null when untagged.
114572
+ */
113015
114573
  utmMedium: (string | null)
114574
+ /**
114575
+ * 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.
114576
+ */
113016
114577
  utmSource: (string | null)
114578
+ /**
114579
+ * 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.
114580
+ */
113017
114581
  clickIdType: (string | null)
114582
+ /**
114583
+ * When that first visit happened, ISO 8601 UTC. This is the timestamp of the earliest event, not when the profile row was written.
114584
+ */
113018
114585
  firstSeenAt: string
114586
+ /**
114587
+ * Campaign of that same first visit (utm_campaign). Null when untagged.
114588
+ */
113019
114589
  utmCampaign: (string | null)
113020
114590
  } | null)
113021
114591
  }
113022
114592
 
113023
114593
  export interface TrackingProfilesListInput {
113024
114594
  /**
113025
- * Exact email to find (case-insensitive), or a prefix when emailMatch=prefix
114595
+ * Email to search people by — the whole address by default, or its beginning when emailMatch is prefix. Omit to search across everyone.
113026
114596
  */
113027
114597
  email?: string
113028
114598
  /**
@@ -113030,132 +114600,363 @@ email?: string
113030
114600
  */
113031
114601
  limit?: number
113032
114602
  /**
113033
- * Opaque pagination cursor from a previous response
114603
+ * Continue a previous page: pass the cursor that page returned. Omit to start from the most recently seen person.
113034
114604
  */
113035
114605
  cursor?: string
113036
114606
  /**
113037
- * Filter by profile status
114607
+ * Keep only people at this stage — anonymous, identified or customer. Omit to get all three.
113038
114608
  */
113039
114609
  status?: ("anonymous" | "identified" | "customer")
113040
114610
  /**
113041
- * How to match the email filter
114611
+ * How the email filter is matched: exact (default) compares the whole address case-insensitively, prefix matches everyone whose address starts with what you typed.
113042
114612
  */
113043
114613
  emailMatch?: ("exact" | "prefix")
113044
114614
  }
113045
114615
 
113046
114616
  export interface TrackingProfilesListOutput {
114617
+ /**
114618
+ * Pass this back as `cursor` to fetch the next page. Null on the last page — that null is how a loop knows to stop.
114619
+ */
113047
114620
  cursor: (string | null)
114621
+ /**
114622
+ * The page of people, most recently seen first. Shorter than the requested limit on the last page.
114623
+ */
113048
114624
  profiles: {
114625
+ /**
114626
+ * 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.
114627
+ */
113049
114628
  emails: string[]
114629
+ /**
114630
+ * How far this person has come: anonymous = only a browser, identified = an email or phone is known, customer = they have paid.
114631
+ */
113050
114632
  status: ("anonymous" | "identified" | "customer")
114633
+ /**
114634
+ * Stable handle for this person. Feed it to a get, export or erase step.
114635
+ */
113051
114636
  profileId: string
114637
+ /**
114638
+ * Timestamp of their most recent event, ISO 8601 UTC. The page is ordered by this, newest first.
114639
+ */
113052
114640
  lastSeenAt: string
114641
+ /**
114642
+ * 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.
114643
+ */
113053
114644
  acquisition: ({
114645
+ /**
114646
+ * Channel of that same first visit (utm_medium): cpc, email, social, and so on. Null when untagged.
114647
+ */
113054
114648
  utmMedium: (string | null)
114649
+ /**
114650
+ * 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.
114651
+ */
113055
114652
  utmSource: (string | null)
114653
+ /**
114654
+ * 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.
114655
+ */
113056
114656
  clickIdType: (string | null)
114657
+ /**
114658
+ * When that first visit happened, ISO 8601 UTC. This is the timestamp of the earliest event, not when the profile row was written.
114659
+ */
113057
114660
  firstSeenAt: string
114661
+ /**
114662
+ * Campaign of that same first visit (utm_campaign). Null when untagged.
114663
+ */
113058
114664
  utmCampaign: (string | null)
113059
114665
  } | null)
114666
+ /**
114667
+ * Timestamp of their earliest event, ISO 8601 UTC.
114668
+ */
113060
114669
  firstSeenAt: string
113061
114670
  }[]
113062
114671
  }
113063
114672
 
113064
114673
  export interface TrackingReportsAttributedJourneyInput {
114674
+ /**
114675
+ * Show only journey events at or before this instant (ISO). Omit for the whole history.
114676
+ */
113065
114677
  to?: string
114678
+ /**
114679
+ * Show only journey events at or after this instant (ISO). Omit for the whole history.
114680
+ */
113066
114681
  from?: string
114682
+ /**
114683
+ * Attribution model to explain the decision under; re-reads the same history, so switching it is free (default 'last_click').
114684
+ */
113067
114685
  model?: ("last_click" | "first_click")
113068
114686
  /**
113069
114687
  * The profile id (uuid)
113070
114688
  */
113071
114689
  profileId: string
114690
+ /**
114691
+ * How far back before the conversion a touchpoint may be credited, in days (default 30).
114692
+ */
113072
114693
  lookbackDays?: number
113073
114694
  }
113074
114695
 
113075
114696
  export interface TrackingReportsAttributedJourneyOutput {
114697
+ /**
114698
+ * What this person actually did, in order.
114699
+ */
113076
114700
  journey: {
114701
+ /**
114702
+ * Every tracked event for this person inside the requested window, oldest first.
114703
+ */
113077
114704
  events: {
114705
+ /**
114706
+ * When the event happened (ISO 8601, UTC). Events are ordered oldest first.
114707
+ */
113078
114708
  ts: string
114709
+ /**
114710
+ * Handle for this event within the journey; `decisions[].winnerRef` points back at one of these to name the winning touchpoint.
114711
+ */
113079
114712
  ref: string
114713
+ /**
114714
+ * Page address the event fired on. Free text from the customer site, so it can carry personal data.
114715
+ */
113080
114716
  url: (string | null)
114717
+ /**
114718
+ * Event name as sent by the site, e.g. 'pageview' or a custom conversion name.
114719
+ */
113081
114720
  name: string
114721
+ /**
114722
+ * Custom properties the site attached to this event. Shape is the customer's, so it can carry anything, personal data included.
114723
+ */
113082
114724
  props: {
113083
114725
  [k: string]: unknown
113084
114726
  }
114727
+ /**
114728
+ * Document title of that page. Free text from the customer site, so it can carry personal data.
114729
+ */
113085
114730
  title: (string | null)
114731
+ /**
114732
+ * Site the event came from; null when the tracker could not determine one.
114733
+ */
113086
114734
  domain: (string | null)
114735
+ /**
114736
+ * Where this event's visit came from, as read off the landing URL. Every field is null when the visit carried nothing.
114737
+ */
113087
114738
  source: {
114739
+ /**
114740
+ * The click id value itself. Identifies one ad click by this person, so treat it as personal data.
114741
+ */
113088
114742
  clickId: (string | null)
114743
+ /**
114744
+ * utm_term of the landing URL, the paid keyword; null when absent.
114745
+ */
113089
114746
  utmTerm: (string | null)
114747
+ /**
114748
+ * utm_medium of the landing URL; null when absent.
114749
+ */
113090
114750
  utmMedium: (string | null)
114751
+ /**
114752
+ * utm_source of the landing URL; null when absent.
114753
+ */
113091
114754
  utmSource: (string | null)
114755
+ /**
114756
+ * utm_content of the landing URL, the creative variant; null when absent.
114757
+ */
113092
114758
  utmContent: (string | null)
114759
+ /**
114760
+ * Which ad-network click id was present, e.g. 'gclid'; null when the visit carried none.
114761
+ */
113093
114762
  clickIdType: (string | null)
114763
+ /**
114764
+ * utm_campaign of the landing URL; null when absent.
114765
+ */
113094
114766
  utmCampaign: (string | null)
113095
114767
  }
114768
+ /**
114769
+ * Two-letter ISO 3166-1 alpha-2 country resolved from the request, e.g. DE; null when it could not be resolved.
114770
+ */
113096
114771
  country: (string | null)
114772
+ /**
114773
+ * Address the visitor arrived from; null on a direct visit. Free text from the customer site, so it can carry personal data.
114774
+ */
113097
114775
  referrer: (string | null)
114776
+ /**
114777
+ * Visit this event belongs to; events sharing one happened in the same sitting. Null when no session could be established.
114778
+ */
113098
114779
  sessionId: (string | null)
113099
114780
  }[]
113100
114781
  }
113101
- decisions: {
114782
+ /**
114783
+ * 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.
114784
+ */
114785
+ decisions: TrackingReportsAttributedJourneyOutputItems[]
114786
+ /**
114787
+ * The person this journey belongs to, echoed back from the request.
114788
+ */
114789
+ profileId: string
114790
+ /**
114791
+ * 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.
114792
+ */
114793
+ originatingDecision: (TrackingReportsAttributedJourneyOutputItems | null)
114794
+ }
114795
+ export interface TrackingReportsAttributedJourneyOutputItems {
114796
+ /**
114797
+ * Attribution model the winner was picked under, echoed back from the request.
114798
+ */
113102
114799
  model: ("last_click" | "first_click")
114800
+ /**
114801
+ * Why this touchpoint won, or why nothing did, in a sentence a person can read.
114802
+ */
113103
114803
  reason: string
114804
+ /**
114805
+ * Revenue of that conversion, one row per currency.
114806
+ */
113104
114807
  revenue: {
114808
+ /**
114809
+ * ISO 4217 code the amounts below are denominated in, e.g. EUR.
114810
+ */
113105
114811
  currency: string
114812
+ /**
114813
+ * `grossMinor` minus `refundedMinor`, in minor units of `currency`. This is the figure to report.
114814
+ */
113106
114815
  netMinor: number
114816
+ /**
114817
+ * Billed amount before refunds, in minor units of `currency` (cents for EUR).
114818
+ */
113107
114819
  grossMinor: number
114820
+ /**
114821
+ * Amount refunded out of `grossMinor`, in minor units of `currency`.
114822
+ */
113108
114823
  refundedMinor: number
113109
114824
  }[]
114825
+ /**
114826
+ * `journey.events[].ref` of the touchpoint that won the credit. Null when nothing inside the window qualified.
114827
+ */
113110
114828
  winnerRef: (string | null)
114829
+ /**
114830
+ * When the conversion this decision explains happened (ISO 8601, UTC).
114831
+ */
113111
114832
  conversionTs: string
114833
+ /**
114834
+ * How far back before `conversionTs` a touchpoint was allowed to be credited, in days; echoed back.
114835
+ */
113112
114836
  lookbackDays: number
114837
+ /**
114838
+ * The winning touchpoint spelled out, so a reader need not resolve `winnerRef`. Null exactly when `winnerRef` is null.
114839
+ */
113113
114840
  winningTouchpoint: ({
114841
+ /**
114842
+ * When the winning touchpoint happened (ISO 8601, UTC).
114843
+ */
113114
114844
  ts: string
114845
+ /**
114846
+ * Channel the winning touchpoint belongs to.
114847
+ */
113115
114848
  channel: ("paid" | "organic" | "direct" | "email")
114849
+ /**
114850
+ * utm_medium of the winning touchpoint; null when it carried none.
114851
+ */
113116
114852
  utmMedium: (string | null)
114853
+ /**
114854
+ * utm_source of the winning touchpoint; null when it carried none.
114855
+ */
113117
114856
  utmSource: (string | null)
114857
+ /**
114858
+ * Campaign id carried by our own `_lt_campaign` landing-URL parameter; null when the visit carried none.
114859
+ */
114860
+ ltCampaign?: (string | null)
114861
+ /**
114862
+ * Ad-network click id present on the winning touchpoint, e.g. 'gclid'; null when it carried none.
114863
+ */
113118
114864
  clickIdType: (string | null)
114865
+ /**
114866
+ * utm_campaign of the winning touchpoint; null when it carried none.
114867
+ */
113119
114868
  utmCampaign: (string | null)
113120
114869
  } | null)
113121
- }[]
113122
- profileId: string
113123
114870
  }
113124
114871
 
113125
114872
  export interface TrackingReportsEventVolumeInput {
113126
- to: string
113127
- from: string
114873
+ /**
114874
+ * End of the range to count, inclusive (ISO 8601). Optional — defaults to the moment of the call.
114875
+ */
114876
+ to?: string
114877
+ /**
114878
+ * Start of the range to count, inclusive (ISO 8601). Optional — defaults to 30 days back, the start of that UTC day.
114879
+ */
114880
+ from?: string
114881
+ /**
114882
+ * Count only this site. Omit to count every site the product sends from.
114883
+ */
113128
114884
  domain?: string
113129
114885
  }
113130
114886
 
113131
114887
  export interface TrackingReportsEventVolumeOutput {
114888
+ /**
114889
+ * End of the range the figures cover, echoed back (ISO 8601, UTC).
114890
+ */
113132
114891
  to: string
114892
+ /**
114893
+ * Start of the range the figures cover, echoed back (ISO 8601, UTC).
114894
+ */
113133
114895
  from: string
114896
+ /**
114897
+ * Site the figures were restricted to; null when every site of the product is included.
114898
+ */
113134
114899
  domain: (string | null)
114900
+ /**
114901
+ * When this report was computed (ISO 8601, UTC).
114902
+ */
113135
114903
  computedAt: string
114904
+ /**
114905
+ * 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.
114906
+ */
113136
114907
  dataQuality: {
114908
+ /**
114909
+ * Fraction of `totalEvents` (0..1) that came from sites running no consent banner, where nobody was ever asked.
114910
+ */
113137
114911
  noBannerShare: number
114912
+ /**
114913
+ * Events from sites with no consent banner. Kept apart from `cookielessEvents` on purpose: nobody refused here, nobody was asked.
114914
+ */
113138
114915
  noBannerEvents: number
114916
+ /**
114917
+ * How many UTC days the range spans; each one re-counts a returning declining visitor.
114918
+ */
113139
114919
  utcDaysInRange: number
114920
+ /**
114921
+ * Fraction of `totalEvents` (0..1) that came from visitors who declined statistics consent.
114922
+ */
113140
114923
  cookielessShare: number
114924
+ /**
114925
+ * Events from visitors who declined; no cookie was written and no identifier sent.
114926
+ */
113141
114927
  cookielessEvents: number
114928
+ /**
114929
+ * 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.
114930
+ */
113142
114931
  identifiedEvents: number
114932
+ /**
114933
+ * True when `visitorsDeduplicatedPerUtcDay` over-counts for this range: the range spans more than one UTC day and there is declining traffic in it.
114934
+ */
113143
114935
  visitorsOverstated: boolean
114936
+ /**
114937
+ * Events from visitors who granted statistics consent.
114938
+ */
113144
114939
  consentGrantedEvents: number
113145
114940
  }
114941
+ /**
114942
+ * How many events arrived in the range, across every consent state.
114943
+ */
113146
114944
  totalEvents: number
114945
+ /**
114946
+ * 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.
114947
+ */
113147
114948
  visitorsDeduplicatedPerUtcDay: number
113148
114949
  }
113149
114950
 
113150
114951
  export interface TrackingReportsRevenueBySourceInput {
113151
114952
  /**
113152
- * Cohort window end (ISO)
114953
+ * Cohort window end (ISO). Optional — defaults to the moment of the call.
113153
114954
  */
113154
- to: string
114955
+ to?: string
113155
114956
  /**
113156
- * Cohort window start (ISO); selects conversions by subscription start
114957
+ * Cohort window start (ISO); selects conversions by subscription start. Optional — defaults to 30 days back, the start of that UTC day.
113157
114958
  */
113158
- from: string
114959
+ from?: string
113159
114960
  /**
113160
114961
  * Attribution model
113161
114962
  */
@@ -113171,54 +114972,150 @@ lookbackDays?: number
113171
114972
  }
113172
114973
 
113173
114974
  export interface TrackingReportsRevenueBySourceOutput {
114975
+ /**
114976
+ * End of the cohort window the figures cover, echoed back (ISO 8601, UTC).
114977
+ */
113174
114978
  to: string
114979
+ /**
114980
+ * Start of the cohort window the figures cover, echoed back (ISO 8601, UTC).
114981
+ */
113175
114982
  from: string
114983
+ /**
114984
+ * Attribution model the credit was assigned under, echoed back. Pass the same value to `tracking_reports_source_people` to drill into a row.
114985
+ */
113176
114986
  model: ("last_click" | "first_click")
114987
+ /**
114988
+ * Site touchpoints were restricted to; null when every site of the product was considered.
114989
+ */
113177
114990
  domain: (string | null)
114991
+ /**
114992
+ * Every channel plus `unattributed`. This is the whole window, not the attributed part of it.
114993
+ */
113178
114994
  totals: {
114995
+ /**
114996
+ * Revenue over every channel plus `unattributed`, one row per currency.
114997
+ */
113179
114998
  revenue: TrackingReportsRevenueBySourceOutputItems[]
114999
+ /**
115000
+ * Distinct paying people over every channel plus `unattributed`.
115001
+ */
113180
115002
  customers: number
113181
115003
  }
115004
+ /**
115005
+ * One row per channel that earned revenue in the window. Channels with none are omitted.
115006
+ */
113182
115007
  channels: {
115008
+ /**
115009
+ * Which acquisition channel this row aggregates.
115010
+ */
113183
115011
  channel: ("paid" | "organic" | "direct" | "email")
115012
+ /**
115013
+ * 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.
115014
+ */
113184
115015
  revenue: TrackingReportsRevenueBySourceOutputItems[]
115016
+ /**
115017
+ * Distinct paying people credited to this channel.
115018
+ */
113185
115019
  customers: number
115020
+ /**
115021
+ * The channel split by UTM combination. Each row is a drill-down target for `tracking_reports_source_people`.
115022
+ */
113186
115023
  utmBreakdown: {
115024
+ /**
115025
+ * Revenue credited to this UTM combination, one row per currency.
115026
+ */
113187
115027
  revenue: TrackingReportsRevenueBySourceOutputItems[]
115028
+ /**
115029
+ * Distinct paying people credited to this UTM combination.
115030
+ */
113188
115031
  customers: number
115032
+ /**
115033
+ * utm_medium of this row; null when the visit carried none.
115034
+ */
113189
115035
  utmMedium: (string | null)
115036
+ /**
115037
+ * utm_source of this row; null when the visit carried none.
115038
+ */
113190
115039
  utmSource: (string | null)
115040
+ /**
115041
+ * Ad-network click id present on the visit, e.g. 'gclid'; null when it carried none.
115042
+ */
113191
115043
  clickIdType: (string | null)
115044
+ /**
115045
+ * utm_campaign of this row; null when the visit carried none.
115046
+ */
113192
115047
  utmCampaign: (string | null)
113193
115048
  }[]
113194
115049
  }[]
115050
+ /**
115051
+ * Fraction of paying people (0..1) a touchpoint could be found for: attributed customers over `totals.customers`. Count-based, never revenue-weighted.
115052
+ */
113195
115053
  matchRate: number
115054
+ /**
115055
+ * When this report was computed (ISO 8601, UTC).
115056
+ */
113196
115057
  computedAt: string
115058
+ /**
115059
+ * How far back before a conversion a touchpoint was allowed to be credited, in days; echoed back.
115060
+ */
113197
115061
  lookbackDays: number
115062
+ /**
115063
+ * Revenue that reached no channel — kept as its own row so the channel rows are never quietly inflated to cover it.
115064
+ */
113198
115065
  unattributed: {
115066
+ /**
115067
+ * Revenue no touchpoint could be credited for, one row per currency.
115068
+ */
113199
115069
  revenue: TrackingReportsRevenueBySourceOutputItems[]
115070
+ /**
115071
+ * Distinct paying people no touchpoint could be credited for.
115072
+ */
113200
115073
  customers: number
113201
115074
  }
113202
115075
  }
113203
115076
  export interface TrackingReportsRevenueBySourceOutputItems {
115077
+ /**
115078
+ * ISO 4217 code the amounts below are denominated in, e.g. EUR.
115079
+ */
113204
115080
  currency: string
115081
+ /**
115082
+ * `grossMinor` minus `refundedMinor`, in minor units of `currency`. This is the figure to report.
115083
+ */
113205
115084
  netMinor: number
115085
+ /**
115086
+ * Billed amount before refunds, in minor units of `currency` (cents for EUR).
115087
+ */
113206
115088
  grossMinor: number
115089
+ /**
115090
+ * Amount refunded out of `grossMinor`, in minor units of `currency`.
115091
+ */
113207
115092
  refundedMinor: number
113208
115093
  }
113209
115094
 
113210
115095
  export interface TrackingReportsSourcePeopleInput {
113211
- to: string
113212
- from: string
115096
+ /**
115097
+ * Cohort window end (ISO); must match the report this row came from. Optional — defaults to the moment of the call.
115098
+ */
115099
+ to?: string
115100
+ /**
115101
+ * Cohort window start (ISO); must match the report this row came from. Optional — defaults to 30 days back, the start of that UTC day.
115102
+ */
115103
+ from?: string
113213
115104
  /**
113214
115105
  * People per page (default 50, max 200)
113215
115106
  */
113216
115107
  limit?: number
115108
+ /**
115109
+ * Attribution model to credit the touchpoint under; must match the report this row came from (default 'last_click').
115110
+ */
113217
115111
  model?: ("last_click" | "first_click")
113218
115112
  /**
113219
115113
  * Opaque keyset cursor from a previous page
113220
115114
  */
113221
115115
  cursor?: string
115116
+ /**
115117
+ * Only consider touchpoints on this domain; must match the report this row came from. Omit for no restriction.
115118
+ */
113222
115119
  domain?: string
113223
115120
  /**
113224
115121
  * Channel to drill into
@@ -113228,27 +115125,72 @@ channel: ("paid" | "organic" | "direct" | "email")
113228
115125
  * Comma-separated dimension names (utmSource,utmMedium,utmCampaign,clickIdType) that must be IS NULL
113229
115126
  */
113230
115127
  utmNulls?: string
115128
+ /**
115129
+ * utm_medium of the breakdown row to drill into. Omit for no filter; to match the IS-NULL row, list it in utmNulls instead.
115130
+ */
113231
115131
  utmMedium?: string
115132
+ /**
115133
+ * utm_source of the breakdown row to drill into. Omit for no filter; to match the IS-NULL row, list it in utmNulls instead.
115134
+ */
113232
115135
  utmSource?: string
113233
115136
  /**
113234
115137
  * 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.
113235
115138
  */
113236
115139
  clickIdType?: string
115140
+ /**
115141
+ * utm_campaign of the breakdown row to drill into. Omit for no filter; to match the IS-NULL row, list it in utmNulls instead.
115142
+ */
113237
115143
  utmCampaign?: string
115144
+ /**
115145
+ * How far back before a conversion a touchpoint may be credited, in days; must match the report this row came from (default 30).
115146
+ */
113238
115147
  lookbackDays?: number
113239
115148
  }
113240
115149
 
113241
115150
  export interface TrackingReportsSourcePeopleOutput {
115151
+ /**
115152
+ * Pass back as `cursor` for the next page. Null on the last page.
115153
+ */
113242
115154
  cursor: (string | null)
115155
+ /**
115156
+ * The page of people behind the requested row, ordered by the keyset the cursor walks.
115157
+ */
113243
115158
  people: {
115159
+ /**
115160
+ * Where this person stands in their subscription lifecycle, e.g. active or churned.
115161
+ */
113244
115162
  status: string
115163
+ /**
115164
+ * Identifier of this person; pass it to `tracking_reports_attributed_journey` to see why they were credited here.
115165
+ */
113245
115166
  profileId: string
115167
+ /**
115168
+ * Most recent tracked activity for this person (ISO 8601, UTC); null when none was recorded.
115169
+ */
113246
115170
  lastSeenAt: (string | null)
115171
+ /**
115172
+ * Earliest tracked activity for this person (ISO 8601, UTC); null when none was recorded.
115173
+ */
113247
115174
  firstSeenAt: (string | null)
115175
+ /**
115176
+ * Lifetime revenue credited to this person under the requested model, one row per currency.
115177
+ */
113248
115178
  attributedRevenue: {
115179
+ /**
115180
+ * ISO 4217 code the amounts below are denominated in, e.g. EUR.
115181
+ */
113249
115182
  currency: string
115183
+ /**
115184
+ * `grossMinor` minus `refundedMinor`, in minor units of `currency`. This is the figure to report.
115185
+ */
113250
115186
  netMinor: number
115187
+ /**
115188
+ * Billed amount before refunds, in minor units of `currency` (cents for EUR).
115189
+ */
113251
115190
  grossMinor: number
115191
+ /**
115192
+ * Amount refunded out of `grossMinor`, in minor units of `currency`.
115193
+ */
113252
115194
  refundedMinor: number
113253
115195
  }[]
113254
115196
  }[]
@@ -113259,9 +115201,21 @@ export interface TrackingSnippetsGetInput {
113259
115201
  }
113260
115202
 
113261
115203
  export interface TrackingSnippetsGetOutput {
115204
+ /**
115205
+ * Tracking host the snippet sends to — the customer-facing domain events and the bundle are served from.
115206
+ */
113262
115207
  host: string
115208
+ /**
115209
+ * The tag to paste into every page, verbatim, before </head>. Includes the consent-aware bootstrap; install it unconditionally rather than behind a consent gate.
115210
+ */
113263
115211
  snippet: string
115212
+ /**
115213
+ * Absolute URL of the tracker bundle the snippet loads; already points at this product's own tracking host.
115214
+ */
113264
115215
  scriptUrl: string
115216
+ /**
115217
+ * 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.
115218
+ */
113265
115219
  minimalSnippet: string
113266
115220
  }
113267
115221
 
@@ -117107,194 +119061,6 @@ description: (string | null)
117107
119061
  secretPrefix: string
117108
119062
  }
117109
119063
 
117110
- export interface WaitlistConfigGetInput {
117111
-
117112
- }
117113
-
117114
- export type WaitlistConfigGetOutput = ({
117115
- createdAt: string
117116
- policyUrl: (string | null)
117117
- productId: string
117118
- updatedAt: string
117119
- senderName: (string | null)
117120
- consentText: string
117121
- policyLabel: (string | null)
117122
- siteBaseUrl: (string | null)
117123
- senderDomain: (string | null)
117124
- inviteSubject: (string | null)
117125
- policyVersion: string
117126
- inviteTemplate: (string | null)
117127
- } | null)
117128
-
117129
- export interface WaitlistConfigUpsertInput {
117130
- /**
117131
- * Policy link URL (http/https/mailto). Rendered as a structured link in the form. Null to clear.
117132
- */
117133
- policyUrl?: (string | null)
117134
- /**
117135
- * Controller display name shown as the invite From name and in the default email body (A7§64 controller identity). Stored as-is. Null to clear (falls back to a generic sender name).
117136
- */
117137
- senderName?: (string | null)
117138
- /**
117139
- * Plain-text consent statement shown at signup. May contain a {policy} placeholder marking the policy link. Stored as-is (no HTML sanitization).
117140
- */
117141
- consentText: string
117142
- /**
117143
- * Visible text for the policy link. Falls back to the URL itself if absent.
117144
- */
117145
- policyLabel?: (string | null)
117146
- /**
117147
- * Per-product public base URL of the tenant site; invite (/signup) and opt-out (/withdraw) links are built from it. http/https only, path allowed, trailing slash stripped. Stored as-is (DP-013); not content-verified. Null to clear.
117148
- */
117149
- siteBaseUrl?: (string | null)
117150
- /**
117151
- * Sender domain for invite emails (bare hostname). Verification happens at send time, not here. Null to clear.
117152
- */
117153
- senderDomain?: (string | null)
117154
- /**
117155
- * Invite email subject line. Plain text, stored as-is; CR/LF stripped at send time. Null to clear (falls back to a default subject).
117156
- */
117157
- inviteSubject?: (string | null)
117158
- /**
117159
- * Policy version label, controller-owned free string. Stored as-is, not validated for monotonicity.
117160
- */
117161
- policyVersion: string
117162
- /**
117163
- * Invite email template ({{vars}}). Stored as-is; rendered/validated at send time. Null to clear.
117164
- */
117165
- inviteTemplate?: (string | null)
117166
- }
117167
-
117168
- export interface WaitlistConfigUpsertOutput {
117169
- createdAt: string
117170
- policyUrl: (string | null)
117171
- productId: string
117172
- updatedAt: string
117173
- senderName: (string | null)
117174
- consentText: string
117175
- policyLabel: (string | null)
117176
- siteBaseUrl: (string | null)
117177
- senderDomain: (string | null)
117178
- inviteSubject: (string | null)
117179
- policyVersion: string
117180
- inviteTemplate: (string | null)
117181
- }
117182
-
117183
- export interface WaitlistEmbedGetInput {
117184
-
117185
- }
117186
-
117187
- export interface WaitlistEmbedGetOutput {
117188
- product_id: string
117189
- script_tag: string
117190
- public_edge_url: string
117191
- }
117192
-
117193
- export interface WaitlistInvitesSendInput {
117194
- /**
117195
- * Resend even when a live invite token already exists (mints a fresh token).
117196
- */
117197
- force?: boolean
117198
- /**
117199
- * Explicit recipient emails (e.g. from waitlist_signups_list). Combined with filter if both given.
117200
- */
117201
- emails?: string[]
117202
- /**
117203
- * Selection filter over signups; resolved server-side with pagination.
117204
- */
117205
- filter?: {
117206
- /**
117207
- * Prefix match on email (case-insensitive).
117208
- */
117209
- q?: string
117210
- /**
117211
- * Select signups by status (single value or array).
117212
- */
117213
- status?: (("pending" | "invited" | "registered") | ("pending" | "invited" | "registered")[])
117214
- }
117215
- }
117216
-
117217
- export interface WaitlistInvitesSendOutput {
117218
- sent: {
117219
- email: string
117220
- emailId: string
117221
- }[]
117222
- failed: {
117223
- email: string
117224
- reason: ("quota_exceeded" | "reputation_throttled" | "send_failed")
117225
- }[]
117226
- skipped: {
117227
- email: string
117228
- reason: ("suppressed" | "already_invited" | "already_registered")
117229
- }[]
117230
- }
117231
-
117232
- export interface WaitlistSignupsEraseInput {
117233
- /**
117234
- * Email address to erase (GDPR Art.17) within the current product. Normalized (trimmed + lowercased) server-side. The operation is idempotent.
117235
- */
117236
- email: string
117237
- }
117238
-
117239
- export interface WaitlistSignupsEraseOutput {
117240
- suppressed: boolean
117241
- deletedTokens: number
117242
- deletedSignups: number
117243
- reducedConsents: number
117244
- }
117245
-
117246
- export interface WaitlistSignupsFunnelInput {
117247
- /**
117248
- * Time window. "7d"/"30d"/"90d" = trailing N days ending now; "all" = all time. Default "30d".
117249
- */
117250
- period?: ("7d" | "30d" | "90d" | "all")
117251
- }
117252
-
117253
- export interface WaitlistSignupsFunnelOutput {
117254
- to: string
117255
- from: (string | null)
117256
- period: string
117257
- signup: number
117258
- invited: number
117259
- registered: number
117260
- non_monotonic: boolean
117261
- }
117262
-
117263
- export interface WaitlistSignupsListInput {
117264
- /**
117265
- * Prefix search on email (case-insensitive). Returns signups whose email starts with this value. Audited as PII access (DP-009).
117266
- */
117267
- q?: string
117268
- /**
117269
- * Page size, 1–200. Default 50.
117270
- */
117271
- limit?: number
117272
- /**
117273
- * Sort by created_at. newest = most recent first. Default newest.
117274
- */
117275
- order?: ("newest" | "oldest")
117276
- /**
117277
- * Keyset cursor from a previous response next_cursor. Omit to start from the beginning.
117278
- */
117279
- cursor?: string
117280
- /**
117281
- * Fields to include per row. Default ["status","created_at"]; id is always included. email and ip_hash are PII and audited when requested.
117282
- */
117283
- fields?: ("status" | "created_at" | "source" | "country" | "email" | "ip_hash")[]
117284
- /**
117285
- * Filter by status. A single value or an array. Omit to return all statuses.
117286
- */
117287
- status?: (("pending" | "invited" | "registered") | ("pending" | "invited" | "registered")[])
117288
- }
117289
-
117290
- export interface WaitlistSignupsListOutput {
117291
- items: {
117292
- [k: string]: unknown
117293
- }[]
117294
- has_more: boolean
117295
- next_cursor: (string | null)
117296
- }
117297
-
117298
119064
  export interface WorkflowCapListInput {
117299
119065
 
117300
119066
  }