@lessly/sdk-app 83.4.0 → 85.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/_types/gen/client.gen.d.ts +41 -18
  2. package/dist/_types/gen/manifest.gen.d.ts +1 -1
  3. package/dist/_types/gen/playground/connect.gen.d.ts +3 -0
  4. package/dist/_types/gen/playground/index.d.ts +3 -0
  5. package/dist/_types/gen/playground/queryOptions.gen.d.ts +70 -0
  6. package/dist/_types/gen/types.gen.d.ts +3201 -260
  7. package/dist/_types/gen/users/index.d.ts +1 -1
  8. package/dist/_types/gen/users/queryOptions.gen.d.ts +13 -1
  9. package/dist/chunk-HRKHYP5B.js +11397 -0
  10. package/dist/chunk-HRKHYP5B.js.map +1 -0
  11. package/dist/index.cjs +295 -184
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/index.js +47 -11319
  14. package/dist/index.js.map +1 -1
  15. package/dist/playground/index.cjs +106 -0
  16. package/dist/playground/index.cjs.map +1 -0
  17. package/dist/playground/index.d.cts +1 -0
  18. package/dist/playground/index.d.ts +1 -0
  19. package/dist/playground/index.js +78 -0
  20. package/dist/playground/index.js.map +1 -0
  21. package/dist/users/index.cjs +15 -0
  22. package/dist/users/index.cjs.map +1 -1
  23. package/dist/users/index.js +13 -1
  24. package/dist/users/index.js.map +1 -1
  25. package/package.json +12 -12
  26. package/src/gen/bindings.gen.ts +259 -150
  27. package/src/gen/client.gen.ts +80 -31
  28. package/src/gen/manifest.gen.ts +46 -36
  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 +3230 -253
  33. package/src/gen/users/index.ts +1 -1
  34. package/src/gen/users/queryOptions.gen.ts +21 -0
  35. package/dist/_types/gen/waitlist/index.d.ts +0 -2
  36. package/dist/_types/gen/waitlist/queryOptions.gen.d.ts +0 -30
  37. package/dist/waitlist/index.cjs +0 -41
  38. package/dist/waitlist/index.cjs.map +0 -1
  39. package/dist/waitlist/index.d.cts +0 -1
  40. package/dist/waitlist/index.d.ts +0 -1
  41. package/dist/waitlist/index.js +0 -33
  42. package/dist/waitlist/index.js.map +0 -1
  43. package/src/gen/waitlist/index.ts +0 -3
  44. package/src/gen/waitlist/queryOptions.gen.ts +0 -50
@@ -96072,6 +96072,332 @@ export interface OrganizationYoutubeInstallInput {
96072
96072
  export interface OrganizationYoutubeInstallOutput {
96073
96073
  url: string;
96074
96074
  }
96075
+ export interface PlaygroundAnalyticsOverviewInput {
96076
+ /**
96077
+ * Max records per entity in recent[]; omit for the endpoint default
96078
+ */
96079
+ limit?: number;
96080
+ }
96081
+ export interface PlaygroundAnalyticsOverviewOutput {
96082
+ ok: boolean;
96083
+ minted: boolean;
96084
+ overview?: unknown;
96085
+ http_status: number;
96086
+ }
96087
+ export interface PlaygroundBillingEntitlementsInput {
96088
+ }
96089
+ export interface PlaygroundBillingEntitlementsOutput {
96090
+ ok: boolean;
96091
+ minted: boolean;
96092
+ http_status: number;
96093
+ entitlements?: unknown;
96094
+ }
96095
+ export interface PlaygroundBillingRecordUsageInput {
96096
+ /**
96097
+ * Quantity of events to record against playground-events (SUM); defaults to 1
96098
+ */
96099
+ value?: number;
96100
+ }
96101
+ export interface PlaygroundBillingRecordUsageOutput {
96102
+ minted: boolean;
96103
+ accepted: (number | null);
96104
+ recorded: boolean;
96105
+ duplicates: (number | null);
96106
+ http_status: number;
96107
+ }
96108
+ export interface PlaygroundClickupCreateTaskInput {
96109
+ /**
96110
+ * Task title; defaults to a fixture label
96111
+ */
96112
+ name?: string;
96113
+ /**
96114
+ * ClickUp list id; falls back to CLICKUP_TEST_LIST_ID
96115
+ */
96116
+ listId?: string;
96117
+ }
96118
+ export interface PlaygroundClickupCreateTaskOutput {
96119
+ minted: boolean;
96120
+ task_id: (string | null);
96121
+ list_status: number;
96122
+ vend_status: number;
96123
+ clickup_status: number;
96124
+ installation_count: number;
96125
+ }
96126
+ export interface PlaygroundClickupGetLastWebhookInput {
96127
+ }
96128
+ export type PlaygroundClickupGetLastWebhookOutput = ({
96129
+ payload: string;
96130
+ event_id: string;
96131
+ provider: string;
96132
+ verified: boolean;
96133
+ product_id: string;
96134
+ occurred_at: string;
96135
+ connector_id: string;
96136
+ clickup_event: (string | null);
96137
+ receipt_count: number;
96138
+ } | {
96139
+ found: false;
96140
+ });
96141
+ export interface PlaygroundClickupGetOverviewInput {
96142
+ }
96143
+ export interface PlaygroundClickupGetOverviewOutput {
96144
+ team: ({
96145
+ teamId: string;
96146
+ teamName: string;
96147
+ } | null);
96148
+ lists: PlaygroundClickupGetOverviewOutputItems[];
96149
+ tasks: {
96150
+ id: string;
96151
+ name: string;
96152
+ status: (string | null);
96153
+ }[];
96154
+ minted: boolean;
96155
+ spaces: PlaygroundClickupGetOverviewOutputItems[];
96156
+ list_status: number;
96157
+ vend_status: number;
96158
+ lists_status: number;
96159
+ tasks_status: number;
96160
+ spaces_status: number;
96161
+ folders_status: number;
96162
+ installation_count: number;
96163
+ }
96164
+ export interface PlaygroundClickupGetOverviewOutputItems {
96165
+ id: string;
96166
+ name: string;
96167
+ }
96168
+ export interface PlaygroundEchoPingInput {
96169
+ /**
96170
+ * The text to echo back, 1–1024 characters
96171
+ */
96172
+ message: string;
96173
+ }
96174
+ export interface PlaygroundEchoPingOutput {
96175
+ /**
96176
+ * The message exactly as it was received
96177
+ */
96178
+ message: string;
96179
+ /**
96180
+ * The product the call was resolved to
96181
+ */
96182
+ productId: string;
96183
+ /**
96184
+ * ISO-8601 instant (UTC) at which the call reached the service
96185
+ */
96186
+ receivedAt: string;
96187
+ }
96188
+ export interface PlaygroundGdriveGetLastChangeInput {
96189
+ }
96190
+ export type PlaygroundGdriveGetLastChangeOutput = ({
96191
+ file_id: string;
96192
+ removed: boolean;
96193
+ file_name: (string | null);
96194
+ mime_type: (string | null);
96195
+ product_id: string;
96196
+ occurred_at: string;
96197
+ connector_id: string;
96198
+ resource_state: string;
96199
+ } | {
96200
+ found: false;
96201
+ });
96202
+ export interface PlaygroundGdriveReadFileInput {
96203
+ /**
96204
+ * Drive file id; falls back to GDRIVE_TEST_FILE_ID, then the first picked file
96205
+ */
96206
+ fileId?: string;
96207
+ }
96208
+ export interface PlaygroundGdriveReadFileOutput {
96209
+ minted: boolean;
96210
+ file_id: (string | null);
96211
+ file_name: (string | null);
96212
+ mime_type: (string | null);
96213
+ file_count: number;
96214
+ get_status: number;
96215
+ list_status: number;
96216
+ vend_status: number;
96217
+ content_bytes: (number | null);
96218
+ }
96219
+ export interface PlaygroundGoogleadsReadCustomerInput {
96220
+ }
96221
+ export interface PlaygroundGoogleadsReadCustomerOutput {
96222
+ minted: boolean;
96223
+ vended: boolean;
96224
+ customer_id: (string | null);
96225
+ vend_status: number;
96226
+ result_count: number;
96227
+ search_status: number;
96228
+ login_customer_id: (string | null);
96229
+ }
96230
+ export interface PlaygroundLifecycleGetStateInput {
96231
+ }
96232
+ export interface PlaygroundLifecycleGetStateOutput {
96233
+ blocked: boolean;
96234
+ archived: boolean;
96235
+ productId: string;
96236
+ lastBlockTransition: ({
96237
+ eventId: string;
96238
+ eventName: string;
96239
+ productId: string;
96240
+ occurredAt: string;
96241
+ recordedAt: string;
96242
+ receiptCount: number;
96243
+ organizationId: string;
96244
+ cascadedFromOrg: boolean;
96245
+ } | null);
96246
+ lastArchiveTransition: ({
96247
+ eventId: string;
96248
+ eventName: string;
96249
+ productId: string;
96250
+ occurredAt: string;
96251
+ recordedAt: string;
96252
+ receiptCount: number;
96253
+ organizationId: string;
96254
+ cascadedFromOrg: boolean;
96255
+ } | null);
96256
+ }
96257
+ export interface PlaygroundLifecycleListEventsInput {
96258
+ }
96259
+ export type PlaygroundLifecycleListEventsOutput = {
96260
+ eventId: string;
96261
+ eventName: string;
96262
+ productId: string;
96263
+ occurredAt: string;
96264
+ recordedAt: string;
96265
+ receiptCount: number;
96266
+ organizationId: string;
96267
+ cascadedFromOrg: boolean;
96268
+ }[];
96269
+ export interface PlaygroundWebhookGetLastInput {
96270
+ }
96271
+ export type PlaygroundWebhookGetLastOutput = ({
96272
+ payload?: unknown;
96273
+ event_id: string;
96274
+ provider: string;
96275
+ verified: boolean;
96276
+ product_id: string;
96277
+ occurred_at: string;
96278
+ connector_id: string;
96279
+ delivery_count: number;
96280
+ } | {
96281
+ found: false;
96282
+ });
96283
+ export interface PlaygroundWorkflowEchoInput {
96284
+ /**
96285
+ * The text to store, 1–1024 characters
96286
+ */
96287
+ note: string;
96288
+ /**
96289
+ * Optional labels stored alongside the note, at most 20
96290
+ *
96291
+ * @maxItems 20
96292
+ */
96293
+ tags?: [] | [string] | [string, string] | [string, string, string] | [string, string, string, string] | [string, string, string, string, string] | [string, string, string, string, string, string] | [string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string];
96294
+ }
96295
+ export interface PlaygroundWorkflowEchoOutput {
96296
+ /**
96297
+ * Identifier of the stored echo
96298
+ */
96299
+ id: string;
96300
+ /**
96301
+ * The note exactly as it was received
96302
+ */
96303
+ note: string;
96304
+ /**
96305
+ * The tags exactly as they were received
96306
+ */
96307
+ tags: string[];
96308
+ /**
96309
+ * Correlation id for this echo. The playground/workflow.echoed event published about two seconds later repeats it, which is how a composer matches the completion back to this step.
96310
+ */
96311
+ echo_id: string;
96312
+ /**
96313
+ * ISO-8601 instant (UTC) at which the echo was stored
96314
+ */
96315
+ received_at: string;
96316
+ }
96317
+ export interface PlaygroundWorkflowEchoListInput {
96318
+ }
96319
+ export type PlaygroundWorkflowEchoListOutput = {
96320
+ /**
96321
+ * Identifier of the stored echo
96322
+ */
96323
+ id: string;
96324
+ /**
96325
+ * The note exactly as it was received
96326
+ */
96327
+ note: string;
96328
+ /**
96329
+ * The tags exactly as they were received
96330
+ */
96331
+ tags: string[];
96332
+ /**
96333
+ * ISO-8601 instant (UTC) at which the echo was stored
96334
+ */
96335
+ received_at: string;
96336
+ }[];
96337
+ export interface PlaygroundWorkflowPingInput {
96338
+ /**
96339
+ * Class of ping, echoed on the emitted event and filterable on the trigger. Defaults to 'manual'.
96340
+ */
96341
+ kind?: string;
96342
+ }
96343
+ export interface PlaygroundWorkflowPingOutput {
96344
+ /**
96345
+ * Correlation id for this ping. The emitted playground/workflow.ping event repeats it, which is how a composer matches the event back to this step.
96346
+ */
96347
+ id: string;
96348
+ /**
96349
+ * The name of the event that was published
96350
+ */
96351
+ event: string;
96352
+ }
96353
+ export interface PlaygroundWorkflowSubjectsListInput {
96354
+ /**
96355
+ * How many subjects to return, 1–100. Defaults to 25.
96356
+ */
96357
+ limit?: number;
96358
+ /**
96359
+ * The next_cursor of the previous page. Opaque — pass it back unchanged. Omit for the first page.
96360
+ */
96361
+ cursor?: string;
96362
+ /**
96363
+ * ISO-8601 UTC instant. Return only subjects whose last_activity_at is AT OR AFTER this — the opposite question, the recently active population. Omit for no lower bound.
96364
+ */
96365
+ last_activity_after?: string;
96366
+ /**
96367
+ * ISO-8601 UTC instant. Return only subjects whose last_activity_at is AT OR BEFORE this — the "inactive for N days" question: pass now minus N days. Omit for no upper bound.
96368
+ */
96369
+ last_activity_before?: string;
96370
+ }
96371
+ export interface PlaygroundWorkflowSubjectsListOutput {
96372
+ /**
96373
+ * This page of subjects, most recently active first
96374
+ */
96375
+ items: {
96376
+ /**
96377
+ * Stable identifier for the subject. This is the field a batch trigger keys on, so a subject already served in an earlier run is skipped rather than served twice.
96378
+ */
96379
+ subject_key: string;
96380
+ /**
96381
+ * Human-readable name of the subject
96382
+ */
96383
+ display_name: string;
96384
+ /**
96385
+ * ISO-8601 instant (UTC) of the subject last activity
96386
+ */
96387
+ last_activity_at: string;
96388
+ }[];
96389
+ /**
96390
+ * Whether another page follows. False and a null next_cursor both mark the last page, so a consumer that loops on either terminates.
96391
+ */
96392
+ has_more: boolean;
96393
+ /**
96394
+ * Pass back as `cursor` to fetch the next page; null on the last page. Always null when has_more is false.
96395
+ */
96396
+ next_cursor: (string | null);
96397
+ }
96398
+ export interface PlaygroundWsEchoInput {
96399
+ }
96400
+ export type PlaygroundWsEchoOutput = unknown;
96075
96401
  export interface RealtimeArchiveExportInput {
96076
96402
  /**
96077
96403
  * Only entries with ts <= to_ts (epoch ms)
@@ -119024,87 +119350,267 @@ export interface SupportWebhookUpdateOutput {
119024
119350
  secretPrefix: string;
119025
119351
  }
119026
119352
  export interface TrackingDomainsCreateInput {
119353
+ /**
119354
+ * Bare hostname to serve tracking from, which must sit under the chosen domain (e.g. analytics.example.com); a suggestion is used when omitted
119355
+ */
119027
119356
  host?: string;
119357
+ /**
119358
+ * DNS records to request instead of the default CNAME to the tracking edge; leave unset unless the domain needs custom records
119359
+ */
119028
119360
  records?: {
119361
+ /**
119362
+ * Time-to-live in seconds the record should be published with; the platform picks one when omitted
119363
+ */
119029
119364
  ttl?: number;
119365
+ /**
119366
+ * Fully-qualified host the record is published at; defaults to the claimed tracking host
119367
+ */
119030
119368
  name?: string;
119369
+ /**
119370
+ * Value the record points at — the edge hostname for a CNAME, the proof string for a TXT
119371
+ */
119031
119372
  target: string;
119373
+ /**
119374
+ * DNS record type to publish, e.g. CNAME or TXT
119375
+ */
119032
119376
  recordType: string;
119033
119377
  }[];
119378
+ /**
119379
+ * Product domain to claim the tracking host under, as listed in `domains[].domainId` by tracking_domains_list
119380
+ */
119034
119381
  domainId: string;
119035
119382
  }
119036
119383
  export interface TrackingDomainsCreateOutput {
119384
+ /**
119385
+ * The binding as just claimed; it starts `pending` and goes `active` once the DNS is observed live
119386
+ */
119037
119387
  binding: {
119388
+ /**
119389
+ * Fully-qualified tracking host this binding serves, e.g. analytics.example.com
119390
+ */
119038
119391
  host: string;
119392
+ /**
119393
+ * Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
119394
+ */
119039
119395
  status: ("pending" | "active" | "failed");
119396
+ /**
119397
+ * DNS records the platform expects to see published for this host, as returned when the binding was claimed
119398
+ */
119040
119399
  records: unknown[];
119400
+ /**
119401
+ * Product domain this tracking host sits under
119402
+ */
119041
119403
  domainId: string;
119404
+ /**
119405
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
119406
+ */
119042
119407
  bindingId: string;
119408
+ /**
119409
+ * When the binding was claimed
119410
+ */
119043
119411
  createdAt: string;
119412
+ /**
119413
+ * Product the binding belongs to
119414
+ */
119044
119415
  productId: string;
119416
+ /**
119417
+ * When the binding last changed status or records
119418
+ */
119045
119419
  updatedAt: string;
119420
+ /**
119421
+ * Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
119422
+ */
119046
119423
  statusDetail: (string | null);
119424
+ /**
119425
+ * Extension that claimed the binding; tracking bindings are owned by this toolkit
119426
+ */
119047
119427
  ownerExtension: string;
119048
119428
  };
119429
+ /**
119430
+ * Ordered, human-readable steps for publishing the DNS the claim needs; empty when the platform manages the domain itself
119431
+ */
119049
119432
  instructions: string[];
119050
119433
  }
119051
119434
  export interface TrackingDomainsDeleteInput {
119435
+ /**
119436
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
119437
+ */
119052
119438
  bindingId: string;
119053
119439
  }
119054
119440
  export interface TrackingDomainsDeleteOutput {
119441
+ /**
119442
+ * Always true — the release succeeded; a failure arrives as an error, not as false
119443
+ */
119055
119444
  ok: true;
119056
119445
  }
119057
119446
  export interface TrackingDomainsGetInput {
119447
+ /**
119448
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
119449
+ */
119058
119450
  bindingId: string;
119059
119451
  }
119060
119452
  export interface TrackingDomainsGetOutput {
119453
+ /**
119454
+ * Fully-qualified tracking host this binding serves, e.g. analytics.example.com
119455
+ */
119061
119456
  host: string;
119457
+ /**
119458
+ * Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
119459
+ */
119062
119460
  status: ("pending" | "active" | "failed");
119461
+ /**
119462
+ * DNS records the platform expects to see published for this host, as returned when the binding was claimed
119463
+ */
119063
119464
  records: unknown[];
119465
+ /**
119466
+ * Product domain this tracking host sits under
119467
+ */
119064
119468
  domainId: string;
119469
+ /**
119470
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
119471
+ */
119065
119472
  bindingId: string;
119473
+ /**
119474
+ * When the binding was claimed
119475
+ */
119066
119476
  createdAt: string;
119477
+ /**
119478
+ * Product the binding belongs to
119479
+ */
119067
119480
  productId: string;
119481
+ /**
119482
+ * When the binding last changed status or records
119483
+ */
119068
119484
  updatedAt: string;
119485
+ /**
119486
+ * Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
119487
+ */
119069
119488
  statusDetail: (string | null);
119489
+ /**
119490
+ * Extension that claimed the binding; tracking bindings are owned by this toolkit
119491
+ */
119070
119492
  ownerExtension: string;
119071
119493
  }
119072
119494
  export interface TrackingDomainsListInput {
119073
119495
  }
119074
119496
  export interface TrackingDomainsListOutput {
119497
+ /**
119498
+ * The product's domains as the platform vouches for them — the set a new tracking host may be claimed under
119499
+ */
119075
119500
  domains: {
119501
+ /**
119502
+ * Who runs the DNS: `managed` means the platform publishes records for you, `external` means you publish them yourself
119503
+ */
119076
119504
  mode: ("external" | "managed");
119505
+ /**
119506
+ * Apex domain name the product owns, e.g. example.com
119507
+ */
119077
119508
  domain: string;
119509
+ /**
119510
+ * Stable platform id of the product domain, and what a claim takes as its `domainId`
119511
+ */
119078
119512
  domainId: string;
119513
+ /**
119514
+ * ISO-8601 timestamp of when the domain was added to the product
119515
+ */
119079
119516
  createdAt: string;
119517
+ /**
119518
+ * How many extensions currently hold a host binding under this domain
119519
+ */
119080
119520
  extensionCount: number;
119081
119521
  }[];
119522
+ /**
119523
+ * Tracking-host bindings this toolkit currently holds across those domains
119524
+ */
119082
119525
  bindings: {
119526
+ /**
119527
+ * Fully-qualified tracking host this binding serves, e.g. analytics.example.com
119528
+ */
119083
119529
  host: string;
119530
+ /**
119531
+ * Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
119532
+ */
119084
119533
  status: ("pending" | "active" | "failed");
119534
+ /**
119535
+ * DNS records the platform expects to see published for this host, as returned when the binding was claimed
119536
+ */
119085
119537
  records: unknown[];
119538
+ /**
119539
+ * Product domain this tracking host sits under
119540
+ */
119086
119541
  domainId: string;
119542
+ /**
119543
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
119544
+ */
119087
119545
  bindingId: string;
119546
+ /**
119547
+ * When the binding was claimed
119548
+ */
119088
119549
  createdAt: string;
119550
+ /**
119551
+ * Product the binding belongs to
119552
+ */
119089
119553
  productId: string;
119554
+ /**
119555
+ * When the binding last changed status or records
119556
+ */
119090
119557
  updatedAt: string;
119558
+ /**
119559
+ * Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
119560
+ */
119091
119561
  statusDetail: (string | null);
119562
+ /**
119563
+ * Extension that claimed the binding; tracking bindings are owned by this toolkit
119564
+ */
119092
119565
  ownerExtension: string;
119093
119566
  }[];
119094
119567
  }
119095
119568
  export interface TrackingDomainsVerifyInput {
119569
+ /**
119570
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
119571
+ */
119096
119572
  bindingId: string;
119097
119573
  }
119098
119574
  export interface TrackingDomainsVerifyOutput {
119575
+ /**
119576
+ * Fully-qualified tracking host this binding serves, e.g. analytics.example.com
119577
+ */
119099
119578
  host: string;
119579
+ /**
119580
+ * Where the claim stands: `pending` while DNS has not been observed live, `active` once it serves, `failed` when the check gave up
119581
+ */
119100
119582
  status: ("pending" | "active" | "failed");
119583
+ /**
119584
+ * DNS records the platform expects to see published for this host, as returned when the binding was claimed
119585
+ */
119101
119586
  records: unknown[];
119587
+ /**
119588
+ * Product domain this tracking host sits under
119589
+ */
119102
119590
  domainId: string;
119591
+ /**
119592
+ * Id of the tracking-host binding to act on, as returned in `bindings[].bindingId` by tracking_domains_list
119593
+ */
119103
119594
  bindingId: string;
119595
+ /**
119596
+ * When the binding was claimed
119597
+ */
119104
119598
  createdAt: string;
119599
+ /**
119600
+ * Product the binding belongs to
119601
+ */
119105
119602
  productId: string;
119603
+ /**
119604
+ * When the binding last changed status or records
119605
+ */
119106
119606
  updatedAt: string;
119607
+ /**
119608
+ * Human-readable reason behind the current status, such as the DNS error that made it fail; null while there is nothing to report
119609
+ */
119107
119610
  statusDetail: (string | null);
119611
+ /**
119612
+ * Extension that claimed the binding; tracking bindings are owned by this toolkit
119613
+ */
119108
119614
  ownerExtension: string;
119109
119615
  }
119110
119616
  export interface TrackingEventNamesArchiveInput {
@@ -119114,7 +119620,13 @@ export interface TrackingEventNamesArchiveInput {
119114
119620
  name: string;
119115
119621
  }
119116
119622
  export interface TrackingEventNamesArchiveOutput {
119623
+ /**
119624
+ * Event name whose status was changed
119625
+ */
119117
119626
  name: string;
119627
+ /**
119628
+ * The status as it now stands: `archived` hides the name from pickers and reports, `active` restores it
119629
+ */
119118
119630
  status: ("active" | "archived");
119119
119631
  }
119120
119632
  export interface TrackingEventNamesListInput {
@@ -119136,13 +119648,37 @@ export interface TrackingEventNamesListInput {
119136
119648
  status?: ("active" | "archived");
119137
119649
  }
119138
119650
  export interface TrackingEventNamesListOutput {
119651
+ /**
119652
+ * The matching catalogue entries, ordered by the requested sort
119653
+ */
119139
119654
  names: {
119655
+ /**
119656
+ * Event name exactly as the tracking script sends it — the string other tools take as their `event`
119657
+ */
119140
119658
  name: string;
119659
+ /**
119660
+ * How many events with this name have been received in total
119661
+ */
119141
119662
  count: number;
119663
+ /**
119664
+ * `active` for a name in use, `archived` for one hidden from pickers and reports
119665
+ */
119142
119666
  status: string;
119667
+ /**
119668
+ * ISO-8601 timestamp of the most recent event received under this name
119669
+ */
119143
119670
  lastSeen: string;
119671
+ /**
119672
+ * ISO-8601 timestamp of the first event ever received under this name
119673
+ */
119144
119674
  firstSeen: string;
119675
+ /**
119676
+ * Property keys sampled from recent events with this name, so you can see what the payload carries
119677
+ */
119145
119678
  propsKeys: string[];
119679
+ /**
119680
+ * Whether this name is marked a conversion, which is what makes it available as a workflow trigger
119681
+ */
119146
119682
  isConversion: boolean;
119147
119683
  }[];
119148
119684
  }
@@ -119157,7 +119693,13 @@ export interface TrackingEventNamesSetConversionInput {
119157
119693
  isConversion: boolean;
119158
119694
  }
119159
119695
  export interface TrackingEventNamesSetConversionOutput {
119696
+ /**
119697
+ * Event name the conversion flag was applied to
119698
+ */
119160
119699
  name: string;
119700
+ /**
119701
+ * The flag as it now stands after the change
119702
+ */
119161
119703
  isConversion: boolean;
119162
119704
  }
119163
119705
  export interface TrackingEventNamesUnarchiveInput {
@@ -119167,20 +119709,44 @@ export interface TrackingEventNamesUnarchiveInput {
119167
119709
  name: string;
119168
119710
  }
119169
119711
  export interface TrackingEventNamesUnarchiveOutput {
119712
+ /**
119713
+ * Event name whose status was changed
119714
+ */
119170
119715
  name: string;
119716
+ /**
119717
+ * The status as it now stands: `archived` hides the name from pickers and reports, `active` restores it
119718
+ */
119171
119719
  status: ("active" | "archived");
119172
119720
  }
119173
119721
  export interface TrackingGoogleadsConnectionStatusInput {
119174
119722
  }
119175
119723
  export type TrackingGoogleadsConnectionStatusOutput = ({
119724
+ /**
119725
+ * Where the Google Ads connection stands: connected means an account is chosen and its credential works, so the other tools will run.
119726
+ */
119176
119727
  state: "connected";
119728
+ /**
119729
+ * The Google Ads account the data is read from and conversions are written to, as a customer id. Only present while connected.
119730
+ */
119177
119731
  customerId: string;
119732
+ /**
119733
+ * The manager account the connection authenticates through, as a Google customer id. Same as customerId when the account is not managed. Only present while connected.
119734
+ */
119178
119735
  loginCustomerId: string;
119179
119736
  } | {
119737
+ /**
119738
+ * Google is authorised but nobody has picked which Google Ads account to use yet, so nothing can run until someone does.
119739
+ */
119180
119740
  state: "pending_account_selection";
119181
119741
  } | {
119742
+ /**
119743
+ * The Google authorisation expired or was revoked and has to be granted again before anything can run.
119744
+ */
119182
119745
  state: "reauth_required";
119183
119746
  } | {
119747
+ /**
119748
+ * No Google Ads connection has been set up for this product at all.
119749
+ */
119184
119750
  state: "not_connected";
119185
119751
  });
119186
119752
  export interface TrackingGoogleadsConversionActionsInput {
@@ -119195,26 +119761,77 @@ export type TrackingGoogleadsConversionActionsOutput = {
119195
119761
  export interface TrackingGoogleadsFeedbackConfigGetInput {
119196
119762
  }
119197
119763
  export interface TrackingGoogleadsFeedbackConfigGetOutput {
119764
+ /**
119765
+ * How the uploads coexist with the account's own tag: existing_pixel means the Google tag also records these conversions, so send only to actions the tag does not already cover; fresh_pixel means these uploads are the only source.
119766
+ */
119198
119767
  mode: ("existing_pixel" | "fresh_pixel");
119768
+ /**
119769
+ * Which tracked events become which Google Ads conversion action, and where each one takes its money value from. Disabled rules stay listed.
119770
+ */
119199
119771
  rules: {
119772
+ /**
119773
+ * Tracked event-name this rule uploads, as listed by tracking_event-names_list
119774
+ */
119200
119775
  event: string;
119776
+ /**
119777
+ * What monetary value is reported to Google for each conversion this rule uploads
119778
+ */
119201
119779
  value: ({
119780
+ /**
119781
+ * Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
119782
+ */
119202
119783
  source: "revenue";
119203
119784
  } | {
119785
+ /**
119786
+ * Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
119787
+ */
119204
119788
  source: "dynamic";
119205
119789
  } | {
119790
+ /**
119791
+ * Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
119792
+ */
119206
119793
  source: "fixed";
119794
+ /**
119795
+ * ISO-4217 currency the fixed amount is denominated in, e.g. USD
119796
+ */
119207
119797
  currency: string;
119798
+ /**
119799
+ * The fixed value in minor units (e.g. cents); 0 means a value-less lead conversion
119800
+ */
119208
119801
  amountMinor: number;
119209
119802
  });
119803
+ /**
119804
+ * Whether this single mapping is live; a disabled rule is kept but uploads nothing
119805
+ */
119210
119806
  enabled: boolean;
119807
+ /**
119808
+ * Google conversion action the event is reported as, in the form customers/<cid>/conversionActions/<id>
119809
+ */
119211
119810
  conversionAction: string;
119212
119811
  }[];
119812
+ /**
119813
+ * Whether conversions are being sent to Google Ads at all. False leaves every rule below in place but uploads nothing.
119814
+ */
119213
119815
  enabled: boolean;
119816
+ /**
119817
+ * The tenant this configuration belongs to. Never supplied by a caller — it comes from the authenticated identity.
119818
+ */
119214
119819
  productId: string;
119820
+ /**
119821
+ * How many days back each pass looks for conversions to send, and how far back a click may be matched. Google rejects clicks older than about 90 days.
119822
+ */
119215
119823
  lookbackDays: number;
119824
+ /**
119825
+ * Currency of the connected Google Ads account, as a three-letter ISO 4217 code such as EUR. Null when the account could not be read.
119826
+ */
119216
119827
  accountCurrency: (string | null);
119828
+ /**
119829
+ * The event names that may use the Dynamic value source, because revenue is known for them. Any other event needs a fixed amount.
119830
+ */
119217
119831
  dynamicValueEvents: string[];
119832
+ /**
119833
+ * Whether a stored email or phone number is sent alongside the click, so Google can match conversions the click id alone would miss.
119834
+ */
119218
119835
  enhancedConversions: boolean;
119219
119836
  }
119220
119837
  export interface TrackingGoogleadsFeedbackConfigSetInput {
@@ -119230,11 +119847,23 @@ export interface TrackingGoogleadsFeedbackConfigSetInput {
119230
119847
  * Any tracked event-name for this product (validated against the event-name catalog)
119231
119848
  */
119232
119849
  event: string;
119850
+ /**
119851
+ * What monetary value to report to Google for each conversion this rule uploads
119852
+ */
119233
119853
  value: ({
119854
+ /**
119855
+ * Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
119856
+ */
119234
119857
  source: "revenue";
119235
119858
  } | {
119859
+ /**
119860
+ * Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
119861
+ */
119236
119862
  source: "dynamic";
119237
119863
  } | {
119864
+ /**
119865
+ * Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
119866
+ */
119238
119867
  source: "fixed";
119239
119868
  /**
119240
119869
  * ISO-4217 currency code, e.g. USD
@@ -119245,6 +119874,9 @@ export interface TrackingGoogleadsFeedbackConfigSetInput {
119245
119874
  */
119246
119875
  amountMinor?: number;
119247
119876
  });
119877
+ /**
119878
+ * Whether this single mapping is live; a disabled rule is kept but uploads nothing
119879
+ */
119248
119880
  enabled: boolean;
119249
119881
  /**
119250
119882
  * Google conversion action resource: customers/<cid>/conversionActions/<id>
@@ -119265,65 +119897,209 @@ export interface TrackingGoogleadsFeedbackConfigSetInput {
119265
119897
  enhancedConversions?: boolean;
119266
119898
  }
119267
119899
  export interface TrackingGoogleadsFeedbackConfigSetOutput {
119900
+ /**
119901
+ * The config as it now stands after the write, with server-side normalisation applied
119902
+ */
119268
119903
  config: {
119904
+ /**
119905
+ * How our uploads sit beside your own tag: `existing_pixel` only fills gaps it left, `fresh_pixel` reports our data alone
119906
+ */
119269
119907
  mode: ("existing_pixel" | "fresh_pixel");
119908
+ /**
119909
+ * The event-to-conversion-action mappings, each with its own value source
119910
+ */
119270
119911
  rules: {
119912
+ /**
119913
+ * Tracked event-name this rule uploads, as listed by tracking_event-names_list
119914
+ */
119271
119915
  event: string;
119916
+ /**
119917
+ * What monetary value is reported to Google for each conversion this rule uploads
119918
+ */
119272
119919
  value: ({
119920
+ /**
119921
+ * Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
119922
+ */
119273
119923
  source: "revenue";
119274
119924
  } | {
119925
+ /**
119926
+ * Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
119927
+ */
119275
119928
  source: "dynamic";
119276
119929
  } | {
119930
+ /**
119931
+ * Where the conversion value comes from: `revenue` uses the net revenue of the subscription, `dynamic` reads the amount carried by the occurrence itself, `fixed` always sends the same amount
119932
+ */
119277
119933
  source: "fixed";
119934
+ /**
119935
+ * ISO-4217 currency the fixed amount is denominated in, e.g. USD
119936
+ */
119278
119937
  currency: string;
119938
+ /**
119939
+ * The fixed value in minor units (e.g. cents); 0 means a value-less lead conversion
119940
+ */
119279
119941
  amountMinor: number;
119280
119942
  });
119943
+ /**
119944
+ * Whether this single mapping is live; a disabled rule is kept but uploads nothing
119945
+ */
119281
119946
  enabled: boolean;
119947
+ /**
119948
+ * Google conversion action the event is reported as, in the form customers/<cid>/conversionActions/<id>
119949
+ */
119282
119950
  conversionAction: string;
119283
119951
  }[];
119952
+ /**
119953
+ * Master switch: with it off no rule uploads anything, however the individual rules are set
119954
+ */
119284
119955
  enabled: boolean;
119956
+ /**
119957
+ * Product this conversion-feedback config belongs to
119958
+ */
119285
119959
  productId: string;
119960
+ /**
119961
+ * How many days back a click may have happened and still be matched to a conversion (max 90)
119962
+ */
119286
119963
  lookbackDays: number;
119964
+ /**
119965
+ * The connected Google Ads account's currency, best-effort; null or absent when it could not be read
119966
+ */
119287
119967
  accountCurrency?: (string | null);
119968
+ /**
119969
+ * Whether hashed email and phone are sent alongside gclid as additional match keys, which raises match rates
119970
+ */
119288
119971
  enhancedConversions: boolean;
119289
119972
  };
119973
+ /**
119974
+ * Plain-language safety notes about what this combination of mode and match keys will do to the connected account
119975
+ */
119290
119976
  guidance: string[];
119291
119977
  }
119292
119978
  export interface TrackingGoogleadsFeedbackRunInput {
119293
119979
  }
119294
119980
  export interface TrackingGoogleadsFeedbackRunOutput {
119981
+ /**
119982
+ * This one upload pass. Match the completion event back to this step on it, not on productId: the daily cron pass and a manual run on the same day are two passes of the same product.
119983
+ */
119984
+ runId: string;
119985
+ /**
119986
+ * Rows Google rejected in this pass.
119987
+ */
119295
119988
  failed: number;
119989
+ /**
119990
+ * Of those, the ones that had a usable click id and a value, so a payload was actually built for them.
119991
+ */
119296
119992
  matched: number;
119993
+ /**
119994
+ * Conversions dropped because no Google click could be tied to the person. A high count here is a tagging problem, not a Google one.
119995
+ */
119297
119996
  noGclid: number;
119997
+ /**
119998
+ * Present only when the pass did no work, and says why: feedback is switched off, no rule is enabled, or no Google Ads account is connected. Absent on a pass that ran.
119999
+ */
119298
120000
  skipped?: ("disabled" | "no_rules" | "not_connected");
120001
+ /**
120002
+ * Conversions in the lookback window that an enabled rule applied to.
120003
+ */
119299
120004
  selected: number;
120005
+ /**
120006
+ * Rows Google accepted in this pass.
120007
+ */
119300
120008
  uploaded: number;
120009
+ /**
120010
+ * The tenant whose conversions this pass uploaded.
120011
+ */
119301
120012
  productId: string;
120013
+ /**
120014
+ * Conversions held back because their money value had not landed yet. They are retried on a later pass.
120015
+ */
119302
120016
  zeroValue: number;
119303
- partialFailureError?: unknown;
120017
+ /**
120018
+ * Google's own rejection detail, passed through unchanged, when it refused part of the batch. Absent when it accepted everything.
120019
+ */
120020
+ partialFailureError?: {
120021
+ [k: string]: unknown;
120022
+ };
119304
120023
  }
119305
120024
  export interface TrackingGoogleadsFeedbackStatusInput {
119306
120025
  }
119307
120026
  export interface TrackingGoogleadsFeedbackStatusOutput {
120027
+ /**
120028
+ * How the uploads coexist with the account's own tag: existing_pixel means the Google tag also records these conversions; fresh_pixel means these uploads are the only source.
120029
+ */
119308
120030
  mode: ("existing_pixel" | "fresh_pixel");
120031
+ /**
120032
+ * Rows Google has rejected since this product was connected, across every pass.
120033
+ */
119309
120034
  failed: number;
120035
+ /**
120036
+ * Whether conversions are being sent to Google Ads at all.
120037
+ */
119310
120038
  enabled: boolean;
120039
+ /**
120040
+ * Coverage of the most recent pass. Null when no pass has run for this product yet.
120041
+ */
119311
120042
  lastRun: ({
120043
+ /**
120044
+ * When the last pass finished. Null when the stored summary predates this field.
120045
+ */
119312
120046
  ranAt: (string | null);
120047
+ /**
120048
+ * Rows Google rejected. Anything above zero is what makes the status partial.
120049
+ */
119313
120050
  failed: number;
120051
+ /**
120052
+ * How the pass ended: ok is a clean pass, partial means Google rejected some rows and accepted others, not_connected means no Google Ads account was reachable and nothing was sent.
120053
+ */
119314
120054
  status: ("ok" | "partial" | "not_connected");
120055
+ /**
120056
+ * Of those, the ones that had a usable click id and a value, so a payload was actually built for them.
120057
+ */
119315
120058
  matched: number;
120059
+ /**
120060
+ * Conversions dropped because no Google click could be tied to the person. A high count here is a tagging problem, not a Google one.
120061
+ */
119316
120062
  noGclid: number;
120063
+ /**
120064
+ * Conversions in the lookback window that an enabled rule applied to.
120065
+ */
119317
120066
  selected: number;
120067
+ /**
120068
+ * Rows Google accepted.
120069
+ */
119318
120070
  uploaded: number;
120071
+ /**
120072
+ * Conversions held back because their money value had not landed yet. They are retried on a later pass.
120073
+ */
119319
120074
  zeroValue: number;
119320
120075
  } | null);
120076
+ /**
120077
+ * Plain-language warnings about the current setup, such as double counting when the Google tag already records the same conversion. Empty when nothing needs saying.
120078
+ */
119321
120079
  guidance: string[];
120080
+ /**
120081
+ * Rows Google has accepted since this product was connected, across every pass.
120082
+ */
119322
120083
  uploaded: number;
120084
+ /**
120085
+ * How many event-to-conversion-action rules are configured, enabled or not.
120086
+ */
119323
120087
  ruleCount: number;
120088
+ /**
120089
+ * How many days back each pass looks for conversions to send, and how far back a click may be matched.
120090
+ */
119324
120091
  lookbackDays: number;
120092
+ /**
120093
+ * Currency of the connected Google Ads account, as a three-letter ISO 4217 code such as EUR. Null when the account could not be read.
120094
+ */
119325
120095
  accountCurrency: (string | null);
120096
+ /**
120097
+ * The event names that may use the Dynamic value source, because revenue is known for them.
120098
+ */
119326
120099
  dynamicValueEvents: string[];
120100
+ /**
120101
+ * Whether a stored email or phone number is sent alongside the click, so Google can match conversions the click id alone would miss.
120102
+ */
119327
120103
  enhancedConversions: boolean;
119328
120104
  }
119329
120105
  export interface TrackingGoogleadsFeedbackUploadsInput {
@@ -119342,84 +120118,293 @@ export type TrackingGoogleadsFeedbackUploadsOutput = {
119342
120118
  conversionDatetime: string;
119343
120119
  }[];
119344
120120
  export interface TrackingGoogleadsRoasReportInput {
119345
- to: string;
119346
- from: string;
120121
+ /**
120122
+ * End of the reporting window, inclusive. ISO-8601 date or timestamp; a date-only value covers that whole day, so revenue after midnight is not cut off. Omit to end now.
120123
+ */
120124
+ to?: string;
120125
+ /**
120126
+ * Start of the reporting window, inclusive. ISO-8601 date or timestamp, e.g. 2026-01-01. Omit to start 30 days before the end of the window.
120127
+ */
120128
+ from?: string;
120129
+ /**
120130
+ * Which touchpoint gets the credit for a conversion: the last paid click before it, or the first. Defaults to last_click.
120131
+ */
119347
120132
  model?: ("last_click" | "first_click");
120133
+ /**
120134
+ * Restrict to conversions tracked on this installed site, e.g. acme.com. Omit to cover every domain of the product.
120135
+ */
119348
120136
  domain?: string;
120137
+ /**
120138
+ * Restrict to one Google Ads account, by its customer id without dashes. Omit to cover every connected account.
120139
+ */
119349
120140
  customerId?: string;
120141
+ /**
120142
+ * How far back before a conversion a paid click may sit and still earn the credit, in days. 1-365, silently clamped into that range; defaults to 30.
120143
+ */
119350
120144
  lookbackDays?: number;
119351
120145
  }
119352
120146
  export interface TrackingGoogleadsRoasReportOutput {
120147
+ /**
120148
+ * End of the window this report covers, echoed back as an ISO-8601 UTC timestamp.
120149
+ */
119353
120150
  to: string;
120151
+ /**
120152
+ * Start of the window this report covers, echoed back as an ISO-8601 UTC timestamp.
120153
+ */
119354
120154
  from: string;
120155
+ /**
120156
+ * Which touchpoint earned the credit in these numbers: the last paid click before the conversion, or the first.
120157
+ */
119355
120158
  model: ("last_click" | "first_click");
120159
+ /**
120160
+ * True when any account below is running on cost older than the freshness threshold, or on no cost at all — read this before acting on the numbers.
120161
+ */
120162
+ stale: boolean;
120163
+ /**
120164
+ * The installed site this report was restricted to; null when it covers every domain of the product.
120165
+ */
119356
120166
  domain: (string | null);
120167
+ /**
120168
+ * One entry per Google Ads account and currency. Kept apart on purpose: amounts in different currencies are never added together.
120169
+ */
119357
120170
  accounts: {
120171
+ /**
120172
+ * True when this account's cost is older than the freshness threshold, or was never pulled — the ROAS below is then built on outdated spend.
120173
+ */
119358
120174
  stale: boolean;
120175
+ /**
120176
+ * ISO-4217 code every amount under this account is expressed in, e.g. USD. One account appears once per currency its cost was booked in.
120177
+ */
119359
120178
  currency: string;
120179
+ /**
120180
+ * This account's campaigns, each with its ad groups and ads nested underneath.
120181
+ */
119360
120182
  campaigns: TrackingGoogleadsRoasReportOutputItems[];
120183
+ /**
120184
+ * Google Ads account these campaigns belong to, by customer id without dashes.
120185
+ */
119361
120186
  customerId: string;
120187
+ /**
120188
+ * When cost was last pulled from Google Ads for this account (ISO-8601 UTC); null when it has never been pulled.
120189
+ */
119362
120190
  costLastSyncedAt: (string | null);
119363
120191
  }[];
120192
+ /**
120193
+ * ISO-4217 code every amount in this report is expressed in, when all accounts share one; null when the report spans several currencies.
120194
+ */
120195
+ currency: (string | null);
120196
+ /**
120197
+ * When this report was calculated (ISO-8601 UTC). The figures are a snapshot at this moment, not live.
120198
+ */
119364
120199
  computedAt: string;
120200
+ /**
120201
+ * Google Ads account this whole report covers, when it covers exactly one; null when it spans several accounts.
120202
+ */
120203
+ customerId: (string | null);
120204
+ /**
120205
+ * How far back before a conversion a paid click was allowed to sit and still earn the credit, in days.
120206
+ */
119365
120207
  lookbackDays: number;
120208
+ /**
120209
+ * Oldest moment cost was pulled from Google Ads across the accounts below (ISO-8601 UTC); null when any account has never synced.
120210
+ */
120211
+ costLastSyncedAt: (string | null);
120212
+ /**
120213
+ * Revenue we tracked but could not tie to any Google Ads campaign, grouped by the utm_campaign we saw. A long list here means the ad tagging needs fixing, not that the ads failed.
120214
+ */
119366
120215
  unmatchedAttributed: {
120216
+ /**
120217
+ * Revenue that stayed outside every campaign, one row per currency. Never cross-summed.
120218
+ */
119367
120219
  revenue: TrackingGoogleadsRoasReportOutputItems1[];
120220
+ /**
120221
+ * How many distinct customers paid but could not be traced to any Google Ads campaign.
120222
+ */
119368
120223
  conversions: number;
120224
+ /**
120225
+ * The utm_campaign value we saw on the visit, which matched no Google Ads campaign; null when the visit carried none. This is the diagnostic: fix the tagging and the revenue moves into a campaign.
120226
+ */
119369
120227
  utmCampaign: (string | null);
119370
120228
  }[];
119371
120229
  }
119372
120230
  export interface TrackingGoogleadsRoasReportOutputItems {
120231
+ /**
120232
+ * What one attributed customer cost: cost divided by attributed conversions, in minor units of the account currency. null when there were no attributed conversions.
120233
+ */
119373
120234
  cpa: (number | null);
120235
+ /**
120236
+ * Google Ads ad this node is, by its numeric id; null on a campaign or ad group node.
120237
+ */
119374
120238
  adId: (string | null);
120239
+ /**
120240
+ * What Google charged and what Google itself counted for this node over the window.
120241
+ */
119375
120242
  cost: {
120243
+ /**
120244
+ * How many times someone clicked through from Google over the window.
120245
+ */
119376
120246
  clicks: number;
120247
+ /**
120248
+ * ISO-4217 code of the Google Ads account these numbers come from, e.g. USD. Fixed per account.
120249
+ */
119377
120250
  currency: string;
120251
+ /**
120252
+ * What Google charged for this campaign, ad group or ad over the window, in minor units (1250 = 12.50).
120253
+ */
119378
120254
  costMinor: number;
120255
+ /**
120256
+ * How many times Google showed this ad over the window.
120257
+ */
119379
120258
  impressions: number;
120259
+ /**
120260
+ * Conversions GOOGLE counted for this node — its own attribution, not ours. May be fractional, because Google splits credit across touchpoints.
120261
+ */
119380
120262
  platformConversions: number;
120263
+ /**
120264
+ * Conversion value GOOGLE reports for this node, in minor units of the account currency. Compare it with our attributed revenue; the two rarely agree.
120265
+ */
119381
120266
  platformConversionsValueMinor: number;
119382
120267
  };
120268
+ /**
120269
+ * What this campaign, ad group or ad is called in Google Ads; null when the name has not been synced.
120270
+ */
119383
120271
  name: (string | null);
120272
+ /**
120273
+ * Return on ad spend: our net attributed revenue divided by cost, both in the account currency. A plain ratio, not a percentage — 2.4 means 2.40 back per 1.00 spent. null when cost is 0 or nothing was attributed.
120274
+ */
119384
120275
  roas: (number | null);
120276
+ /**
120277
+ * How deep in the Google Ads hierarchy this node sits. Attributed revenue, ROAS and CPA exist at campaign level only; cost exists at all three.
120278
+ */
119385
120279
  level: ("campaign" | "ad_group" | "ad");
120280
+ /**
120281
+ * Google Ads campaign state, passed through raw: ENABLED, PAUSED, REMOVED. Present on campaign nodes only — the key is absent below.
120282
+ */
119386
120283
  status?: string;
120284
+ /**
120285
+ * The level below this one: ad groups under a campaign, ads under an ad group, empty on an ad.
120286
+ */
119387
120287
  children: TrackingGoogleadsRoasReportOutputItems[];
120288
+ /**
120289
+ * Google Ads ad group this node belongs to, by its numeric id; null on a campaign node.
120290
+ */
119388
120291
  adGroupId: (string | null);
120292
+ /**
120293
+ * What WE traced back to this node from our own tracking. null below campaign level, and null on a campaign nothing was traced to.
120294
+ */
119389
120295
  attributed: ({
120296
+ /**
120297
+ * What WE traced back to this campaign, one row per currency the customers paid in. Never cross-summed — use accountCurrencyNetMinor for a single figure.
120298
+ */
119390
120299
  revenue: TrackingGoogleadsRoasReportOutputItems1[];
119391
- matchedBy: (("campaign_id" | "campaign_name" | "gclid") | null);
120300
+ /**
120301
+ * Which key actually joined this revenue to the Google campaign, strongest first: lt_campaign_id (the id our own tracking template stamps on the landing URL), campaign_id (the id inside utm_campaign), campaign_name (the campaign name inside utm_campaign, a guess), gclid (the click id). null means the join key is unknown; treat campaign_name as the weakest evidence.
120302
+ */
120303
+ matchedBy: (("lt_campaign_id" | "campaign_id" | "campaign_name" | "gclid") | null);
120304
+ /**
120305
+ * How many distinct customers we traced back to this campaign over the window. Whole numbers: we give a conversion to one campaign, we never split it.
120306
+ */
119392
120307
  conversions: number;
120308
+ /**
120309
+ * Our net attributed revenue in the account currency alone, in minor units. 0 when nobody paid in that currency. This is the ROAS numerator, and the single-value answer beside the revenue list.
120310
+ */
119393
120311
  accountCurrencyNetMinor: number;
119394
120312
  } | null);
120313
+ /**
120314
+ * Google Ads campaign this node belongs to, by its numeric id. Set at every level.
120315
+ */
119395
120316
  campaignId: string;
120317
+ /**
120318
+ * Google Ads account this node belongs to, by customer id without dashes.
120319
+ */
119396
120320
  customerId: string;
120321
+ /**
120322
+ * Where Google ran the campaign, passed through raw: SEARCH, DISPLAY, VIDEO, PERFORMANCE_MAX and so on. Present on campaign nodes only, and may be null there.
120323
+ */
119397
120324
  channelType?: (string | null);
119398
120325
  }
119399
120326
  export interface TrackingGoogleadsRoasReportOutputItems1 {
120327
+ /**
120328
+ * ISO-4217 code the three amounts on this row are denominated in, e.g. USD. One row per currency; rows are never added together.
120329
+ */
119400
120330
  currency: string;
120331
+ /**
120332
+ * Money kept after refunds (gross minus refunded), in minor units of this row's currency. This is what ROAS is calculated from.
120333
+ */
119401
120334
  netMinor: number;
120335
+ /**
120336
+ * Money taken before refunds, in minor units of this row's currency (1250 = 12.50).
120337
+ */
119402
120338
  grossMinor: number;
120339
+ /**
120340
+ * Money given back within the window, in minor units of this row's currency; already subtracted from netMinor.
120341
+ */
119403
120342
  refundedMinor: number;
119404
120343
  }
119405
120344
  export interface TrackingGoogleadsSyncNowInput {
119406
120345
  }
119407
120346
  export interface TrackingGoogleadsSyncNowOutput {
120347
+ /**
120348
+ * How much this sweep wrote, split by what it wrote. Re-running the same window updates rows in place rather than adding, so these are rows touched, not rows gained. All zero when the status is skipped.
120349
+ */
119408
120350
  rows: {
120351
+ /**
120352
+ * Ads written.
120353
+ */
119409
120354
  ads: number;
120355
+ /**
120356
+ * Day-by-day ad spend and metric rows written.
120357
+ */
119410
120358
  adDaily: number;
120359
+ /**
120360
+ * Ad groups written.
120361
+ */
119411
120362
  adGroups: number;
120363
+ /**
120364
+ * Campaigns written, names and status included.
120365
+ */
119412
120366
  campaigns: number;
120367
+ /**
120368
+ * Day-by-day ad-group spend and metric rows written.
120369
+ */
119413
120370
  adGroupDaily: number;
120371
+ /**
120372
+ * Day-by-day campaign spend and metric rows written.
120373
+ */
119414
120374
  campaignDaily: number;
119415
120375
  };
120376
+ /**
120377
+ * This one sync run. Match the completion event back to this step on it, not on productId: a product syncs many times, and the daily cron run and a manual one are different runs.
120378
+ */
120379
+ runId: string;
120380
+ /**
120381
+ * Why nothing was written, when the status is skipped: the account is not chosen yet, the authorisation expired, or Google was unavailable. Absent on a sweep that ran.
120382
+ */
119416
120383
  reason?: string;
120384
+ /**
120385
+ * Whether the sweep ran. skipped means the Google Ads account could not be reached and nothing at all was written.
120386
+ */
119417
120387
  status: ("ok" | "skipped");
120388
+ /**
120389
+ * The range of days this sweep read spend and metrics for.
120390
+ */
119418
120391
  window: {
120392
+ /**
120393
+ * Last day covered, inclusive, as YYYY-MM-DD.
120394
+ */
119419
120395
  end: string;
120396
+ /**
120397
+ * First day covered, inclusive, as YYYY-MM-DD.
120398
+ */
119420
120399
  start: string;
119421
120400
  };
120401
+ /**
120402
+ * The tenant whose Google Ads account was swept.
120403
+ */
119422
120404
  productId: string;
120405
+ /**
120406
+ * When the sweep finished. Null when nothing was written.
120407
+ */
119423
120408
  lastSyncedAt: (string | null);
119424
120409
  }
119425
120410
  export interface TrackingGoogleadsTrackingHealthInput {
@@ -119433,61 +120418,212 @@ export interface TrackingGoogleadsTrackingHealthInput {
119433
120418
  from?: string;
119434
120419
  }
119435
120420
  export interface TrackingGoogleadsTrackingHealthOutput {
120421
+ /**
120422
+ * End of the range these figures cover, as an instant.
120423
+ */
119436
120424
  to: string;
120425
+ /**
120426
+ * Start of the range these figures cover, as an instant. Echoes back the range that was asked for.
120427
+ */
119437
120428
  from: string;
120429
+ /**
120430
+ * Whether the tracking template has been seen working live: true once at least one tagged click has arrived.
120431
+ */
119438
120432
  installed: boolean;
120433
+ /**
120434
+ * Whether the sample above was cut short. True means more untagged URLs exist than are listed.
120435
+ */
119439
120436
  truncated: boolean;
120437
+ /**
120438
+ * Google paid clicks that arrived on the site in this range. The denominator for everything below.
120439
+ */
119440
120440
  paidClicks: number;
120441
+ /**
120442
+ * How complete the figures above are. Holds no metric of its own — it exists so the breakage rate is not read as one uniform population.
120443
+ */
119441
120444
  dataQuality: {
120445
+ /**
120446
+ * Paid clicks from visitors who declined consent. Counted inside paidClicks, never added to it — a cookieless click is a real click. Clicks from sites running no consent banner are not counted here: nobody was asked, which is not the same as being told no.
120447
+ */
119442
120448
  cookielessPaidClicks: number;
119443
120449
  };
120450
+ /**
120451
+ * Share of paid clicks that arrived untagged, between 0 and 1. Anything much above zero means the tracking template needs fixing.
120452
+ */
119444
120453
  breakageRate: number;
120454
+ /**
120455
+ * Of those, the ones that arrived carrying our URL tracking parameters, so the campaign behind them is known.
120456
+ */
119445
120457
  taggedClicks: number;
120458
+ /**
120459
+ * When the most recent untagged click arrived. Close to now means the breakage is still live. Null when none did.
120460
+ */
119446
120461
  lastUntaggedAt: (string | null);
120462
+ /**
120463
+ * Of those, the ones that arrived without our parameters, so the money spent on them cannot be attributed. This is what the tracking template being missing or broken looks like.
120464
+ */
119447
120465
  untaggedClicks: number;
120466
+ /**
120467
+ * When the first untagged click of the range arrived — roughly when the breakage started. Null when none did.
120468
+ */
119448
120469
  firstUntaggedAt: (string | null);
120470
+ /**
120471
+ * A handful of the actual landing URLs that arrived untagged, to paste into a browser while fixing the template. Real customer URLs, query strings included.
120472
+ */
119449
120473
  sampleUntaggedUrls: string[];
119450
120474
  }
119451
120475
  export interface TrackingGoogleadsUsVsPlatformInput {
119452
- to: string;
119453
- from: string;
120476
+ /**
120477
+ * End of the reporting window, inclusive. ISO-8601 date or timestamp; a date-only value covers that whole day, so revenue after midnight is not cut off. Omit to end now.
120478
+ */
120479
+ to?: string;
120480
+ /**
120481
+ * Start of the reporting window, inclusive. ISO-8601 date or timestamp, e.g. 2026-01-01. Omit to start 30 days before the end of the window.
120482
+ */
120483
+ from?: string;
120484
+ /**
120485
+ * Which touchpoint gets the credit for a conversion: the last paid click before it, or the first. Defaults to last_click.
120486
+ */
119454
120487
  model?: ("last_click" | "first_click");
120488
+ /**
120489
+ * Restrict to conversions tracked on this installed site, e.g. acme.com. Omit to cover every domain of the product.
120490
+ */
119455
120491
  domain?: string;
120492
+ /**
120493
+ * Restrict to one Google Ads account, by its customer id without dashes. Omit to cover every connected account.
120494
+ */
119456
120495
  customerId?: string;
120496
+ /**
120497
+ * How far back before a conversion a paid click may sit and still earn the credit, in days. 1-365, silently clamped into that range; defaults to 30.
120498
+ */
119457
120499
  lookbackDays?: number;
119458
120500
  }
119459
120501
  export interface TrackingGoogleadsUsVsPlatformOutput {
120502
+ /**
120503
+ * End of the window this comparison covers, echoed back as an ISO-8601 UTC timestamp.
120504
+ */
119460
120505
  to: string;
120506
+ /**
120507
+ * Start of the window this comparison covers, echoed back as an ISO-8601 UTC timestamp.
120508
+ */
119461
120509
  from: string;
120510
+ /**
120511
+ * Which touchpoint earned the credit on OUR side of the comparison: the last paid click before the conversion, or the first. Google always uses its own model.
120512
+ */
119462
120513
  model: ("last_click" | "first_click");
120514
+ /**
120515
+ * True when any account below is running on cost older than the freshness threshold, or on no cost at all — read this before acting on the numbers.
120516
+ */
120517
+ stale: boolean;
120518
+ /**
120519
+ * The installed site this comparison was restricted to; null when it covers every domain of the product.
120520
+ */
119463
120521
  domain: (string | null);
120522
+ /**
120523
+ * One entry per Google Ads account and currency, each holding its per-campaign comparison rows. Currencies are never added together.
120524
+ */
119464
120525
  accounts: {
120526
+ /**
120527
+ * One row per campaign in this account, ours beside Google's.
120528
+ */
119465
120529
  rows: {
120530
+ /**
120531
+ * What this campaign is called in Google Ads; null when the name has not been synced.
120532
+ */
119466
120533
  name: (string | null);
120534
+ /**
120535
+ * ISO-4217 code both sides of this comparison are expressed in, e.g. USD. Ours and Google's are never converted.
120536
+ */
119467
120537
  currency: string;
120538
+ /**
120539
+ * The Google Ads campaign this row compares, by its numeric id.
120540
+ */
119468
120541
  campaignId: string;
120542
+ /**
120543
+ * Google Ads account this campaign belongs to, by customer id without dashes.
120544
+ */
119469
120545
  customerId: string;
120546
+ /**
120547
+ * How many distinct customers WE traced to this campaign. A whole number: we never split a customer across campaigns.
120548
+ */
119470
120549
  ourConversions: number;
120550
+ /**
120551
+ * Net revenue WE traced to this campaign, in minor units of the account currency (1250 = 12.50). 0 when we traced none.
120552
+ */
119471
120553
  ourRevenueNetMinor: number;
120554
+ /**
120555
+ * Conversions GOOGLE counted for the same campaign. May be fractional, because Google splits credit across touchpoints — which is the usual reason the two sides disagree.
120556
+ */
119472
120557
  platformConversions: number;
120558
+ /**
120559
+ * Conversion value GOOGLE reports for the same campaign, in minor units of the account currency. The counterpart of ourRevenueNetMinor.
120560
+ */
119473
120561
  platformConversionsValueMinor: number;
119474
120562
  }[];
120563
+ /**
120564
+ * True when this account's Google-side numbers are older than the freshness threshold, or were never pulled — the comparison is then unfair to one side.
120565
+ */
119475
120566
  stale: boolean;
120567
+ /**
120568
+ * ISO-4217 code every amount under this account is expressed in, e.g. USD. One account appears once per currency its cost was booked in.
120569
+ */
119476
120570
  currency: string;
120571
+ /**
120572
+ * Google Ads account these comparison rows belong to, by customer id without dashes.
120573
+ */
119477
120574
  customerId: string;
120575
+ /**
120576
+ * When cost was last pulled from Google Ads for this account (ISO-8601 UTC); null when it has never been pulled.
120577
+ */
119478
120578
  costLastSyncedAt: (string | null);
119479
120579
  }[];
120580
+ /**
120581
+ * ISO-4217 code every amount in this report is expressed in, when all accounts share one; null when the report spans several currencies.
120582
+ */
120583
+ currency: (string | null);
120584
+ /**
120585
+ * When this comparison was calculated (ISO-8601 UTC). The figures are a snapshot at this moment, not live.
120586
+ */
119480
120587
  computedAt: string;
120588
+ /**
120589
+ * Google Ads account this whole report covers, when it covers exactly one; null when it spans several accounts.
120590
+ */
120591
+ customerId: (string | null);
120592
+ /**
120593
+ * How far back before a conversion a paid click was allowed to sit and still earn the credit on our side, in days.
120594
+ */
119481
120595
  lookbackDays: number;
120596
+ /**
120597
+ * Oldest moment cost was pulled from Google Ads across the accounts below (ISO-8601 UTC); null when any account has never synced.
120598
+ */
120599
+ costLastSyncedAt: (string | null);
119482
120600
  }
119483
120601
  export interface TrackingIdentityHealthInput {
119484
120602
  }
119485
120603
  export interface TrackingIdentityHealthOutput {
120604
+ /**
120605
+ * When these numbers were computed, ISO 8601 UTC. They are a live count, so this is effectively the moment of the call.
120606
+ */
119486
120607
  computedAt: string;
120608
+ /**
120609
+ * How many people the product holds in total, anonymous ones included. The denominator of both rates below.
120610
+ */
119487
120611
  totalProfiles: number;
120612
+ /**
120613
+ * Identified people as a share of the total, normally 0 to 1 (0.42 is 42%). A drop here usually means a broken identify() call, not fewer visitors.
120614
+ */
119488
120615
  identifiedRate: number;
120616
+ /**
120617
+ * People with an ad touchpoint as a share of the total, normally 0 to 1. It counts click-id identifiers, so an identifier outliving its profile can push it just above 1 — read it as an indicator, not as a proportion to assert on.
120618
+ */
119489
120619
  adTouchpointRate: number;
120620
+ /**
120621
+ * How many of them an email or phone is known for — the people a message can actually be sent to.
120622
+ */
119490
120623
  identifiedProfiles: number;
120624
+ /**
120625
+ * How many people arrived carrying an ad click id. A proxy for paid reach: it counts anyone with at least one click id on record.
120626
+ */
119491
120627
  adTouchpointProfiles: number;
119492
120628
  }
119493
120629
  export interface TrackingInstallDomainsCreateInput {
@@ -119497,6 +120633,9 @@ export interface TrackingInstallDomainsCreateInput {
119497
120633
  domain: string;
119498
120634
  }
119499
120635
  export interface TrackingInstallDomainsCreateOutput {
120636
+ /**
120637
+ * The domain as stored after normalisation, which may differ from what was submitted
120638
+ */
119500
120639
  domain: string;
119501
120640
  }
119502
120641
  export interface TrackingInstallDomainsDeleteInput {
@@ -119506,19 +120645,43 @@ export interface TrackingInstallDomainsDeleteInput {
119506
120645
  domain: string;
119507
120646
  }
119508
120647
  export interface TrackingInstallDomainsDeleteOutput {
120648
+ /**
120649
+ * Always true — the domain was removed; a failure arrives as an error, not as false
120650
+ */
119509
120651
  ok: true;
119510
120652
  }
119511
120653
  export interface TrackingInstallDomainsListInput {
119512
120654
  }
119513
120655
  export interface TrackingInstallDomainsListOutput {
120656
+ /**
120657
+ * Domains sending events that nobody registered — usually a staging host, a typo, or an install worth adding
120658
+ */
119514
120659
  discovered: TrackingInstallDomainsListOutputItems[];
120660
+ /**
120661
+ * Domains deliberately put on the install checklist, each with whether its script has been seen
120662
+ */
119515
120663
  registered: TrackingInstallDomainsListOutputItems[];
120664
+ /**
120665
+ * Length in days of the lookback window the `seen` and `lastSeen` figures are measured over
120666
+ */
119516
120667
  windowDays: number;
119517
120668
  }
119518
120669
  export interface TrackingInstallDomainsListOutputItems {
120670
+ /**
120671
+ * Whether the tracking script actually sent an event from this domain inside the lookback window
120672
+ */
119519
120673
  seen: boolean;
120674
+ /**
120675
+ * Normalised domain name the status is reported for
120676
+ */
119520
120677
  domain: string;
120678
+ /**
120679
+ * ISO-8601 timestamp of the most recent event from this domain, or null if none arrived in the window
120680
+ */
119521
120681
  lastSeen: (string | null);
120682
+ /**
120683
+ * Whether the domain is on the install checklist on purpose, as opposed to merely observed sending events
120684
+ */
119522
120685
  registered: boolean;
119523
120686
  }
119524
120687
  export interface TrackingLinkDomainsCreateInput {
@@ -119528,6 +120691,9 @@ export interface TrackingLinkDomainsCreateInput {
119528
120691
  domain: string;
119529
120692
  }
119530
120693
  export interface TrackingLinkDomainsCreateOutput {
120694
+ /**
120695
+ * The domain as stored after normalisation, which may differ from what was submitted
120696
+ */
119531
120697
  domain: string;
119532
120698
  }
119533
120699
  export interface TrackingLinkDomainsDeleteInput {
@@ -119537,11 +120703,17 @@ export interface TrackingLinkDomainsDeleteInput {
119537
120703
  domain: string;
119538
120704
  }
119539
120705
  export interface TrackingLinkDomainsDeleteOutput {
120706
+ /**
120707
+ * Always true — the domain left the linking group; a failure arrives as an error, not as false
120708
+ */
119540
120709
  ok: true;
119541
120710
  }
119542
120711
  export interface TrackingLinkDomainsListInput {
119543
120712
  }
119544
120713
  export interface TrackingLinkDomainsListOutput {
120714
+ /**
120715
+ * Root domains in the linking group; the tracking script decorates links between any two of them so one visitor stays one visitor
120716
+ */
119545
120717
  domains: string[];
119546
120718
  }
119547
120719
  export interface TrackingLiveEventsListInput {
@@ -119559,22 +120731,70 @@ export interface TrackingLiveEventsListInput {
119559
120731
  domain?: string;
119560
120732
  }
119561
120733
  export interface TrackingLiveEventsListOutput {
120734
+ /**
120735
+ * Pass back as `since` to fetch what arrived after this page. Null when there is nothing older to page into.
120736
+ */
119562
120737
  cursor: (string | null);
120738
+ /**
120739
+ * The page of events, newest first.
120740
+ */
119563
120741
  events: {
120742
+ /**
120743
+ * Stable identifier of this single event; unique within the product and safe to deduplicate on across polls.
120744
+ */
119564
120745
  id: string;
120746
+ /**
120747
+ * When the event happened, as reported by the tracker (ISO 8601, UTC).
120748
+ */
119565
120749
  ts: string;
120750
+ /**
120751
+ * Page address the event fired on, query string included. Free text from the customer site, so it can carry personal data.
120752
+ */
119566
120753
  url: (string | null);
120754
+ /**
120755
+ * Event name as sent by the site, e.g. 'pageview' or a custom conversion name.
120756
+ */
119567
120757
  name: string;
120758
+ /**
120759
+ * Document title of that page at the time. Free text from the customer site, so it can carry personal data.
120760
+ */
119568
120761
  title: (string | null);
120762
+ /**
120763
+ * Site the event came from; null when the tracker could not determine one.
120764
+ */
119569
120765
  domain: (string | null);
120766
+ /**
120767
+ * Where this visit came from, as read off the landing URL and referrer. Every field is null when the visit carried nothing.
120768
+ */
119570
120769
  source: {
120770
+ /**
120771
+ * Address the visitor arrived from; null on a direct visit. Free text from the customer site, so it can carry personal data.
120772
+ */
119571
120773
  referrer: (string | null);
120774
+ /**
120775
+ * utm_medium of the landing URL, e.g. cpc; null when absent.
120776
+ */
119572
120777
  utmMedium: (string | null);
120778
+ /**
120779
+ * utm_source of the landing URL, e.g. newsletter; null when absent.
120780
+ */
119573
120781
  utmSource: (string | null);
120782
+ /**
120783
+ * Which ad-network click id was present on the landing URL, e.g. 'gclid'. Null when the visit carried none.
120784
+ */
119574
120785
  clickIdType: (string | null);
120786
+ /**
120787
+ * utm_campaign of the landing URL; null when absent.
120788
+ */
119575
120789
  utmCampaign: (string | null);
119576
120790
  };
120791
+ /**
120792
+ * Two-letter ISO 3166-1 alpha-2 country resolved from the request, e.g. DE; null when it could not be resolved.
120793
+ */
119577
120794
  country: (string | null);
120795
+ /**
120796
+ * Pseudonymous visitor id the person graph joins on. Null for a visitor who declined statistics consent or was never asked — those events arrive cookieless and carry no identifier at all.
120797
+ */
119578
120798
  anonymousId: (string | null);
119579
120799
  }[];
119580
120800
  }
@@ -119585,18 +120805,52 @@ export interface TrackingProfilesDeleteInput {
119585
120805
  profileId: string;
119586
120806
  }
119587
120807
  export interface TrackingProfilesDeleteOutput {
120808
+ /**
120809
+ * Always true: the response only exists when the erasure ran. A failure arrives as an error, not as ok=false.
120810
+ */
119588
120811
  ok: true;
120812
+ /**
120813
+ * What happened to the archived copy of the events. Postgres is erased synchronously; the archive is not, and this says so out loud.
120814
+ */
119589
120815
  archive: {
120816
+ /**
120817
+ * Plain-language reason the archived copy could not be deleted in the same breath — text meant to be quoted into a compliance record.
120818
+ */
119590
120819
  note: string;
120820
+ /**
120821
+ * Always gap_flagged: the archived copy is known to still hold this person and the gap has been recorded rather than silently ignored.
120822
+ */
119591
120823
  status: "gap_flagged";
119592
120824
  };
120825
+ /**
120826
+ * How much was actually destroyed, by kind. Worth recording: it is the evidence that the erasure did something.
120827
+ */
119593
120828
  deleted: {
120829
+ /**
120830
+ * Tracked events removed, found through the anonymous ids this person browsed under.
120831
+ */
119594
120832
  events: number;
120833
+ /**
120834
+ * Merge records removed — the history of this person having been joined with another.
120835
+ */
119595
120836
  merges: number;
120837
+ /**
120838
+ * Profile rows removed: 1 in practice, and 0 only if the row vanished between the lookup and the delete.
120839
+ */
119596
120840
  profile: number;
120841
+ /**
120842
+ * Emails, phones, anonymous ids and click ids removed for this person.
120843
+ */
119597
120844
  identifiers: number;
119598
120845
  };
120846
+ /**
120847
+ * The person who was erased. Nothing else of them remains, so this is all there is left to name them by.
120848
+ */
119599
120849
  profileId: string;
120850
+ /**
120851
+ * This erasure attempt. The completion event carries the same value under the same name, so a step recognises its own completion even when another workflow is erasing the same person at the same moment.
120852
+ */
120853
+ requestId: string;
119600
120854
  }
119601
120855
  export interface TrackingProfilesExportInput {
119602
120856
  /**
@@ -119605,52 +120859,172 @@ export interface TrackingProfilesExportInput {
119605
120859
  profileId: string;
119606
120860
  }
119607
120861
  export interface TrackingProfilesExportOutput {
120862
+ /**
120863
+ * The complete history, newest event first, capped at 50000 events — check `truncated` before treating it as complete.
120864
+ */
119608
120865
  journey: {
120866
+ /**
120867
+ * When the event happened, ISO 8601 UTC. The journey is ordered by this, newest first.
120868
+ */
119609
120869
  ts: string;
120870
+ /**
120871
+ * Opaque handle for this one event, unique inside the product. Use it to deduplicate, not to sort — it carries no order.
120872
+ */
119610
120873
  ref: string;
120874
+ /**
120875
+ * Full address of the page, query string included. Personal data — it can carry an email in a link. Null off-page.
120876
+ */
119611
120877
  url: (string | null);
120878
+ /**
120879
+ * What happened, as the tracking snippet named it: page_view, signup, purchase, or any custom name the product sends.
120880
+ */
119612
120881
  name: string;
120882
+ /**
120883
+ * Custom properties the product attached to this event. Free-form: the keys are whatever the snippet sent, and they differ by event name.
120884
+ */
119613
120885
  props: {
119614
120886
  [k: string]: unknown;
119615
120887
  };
120888
+ /**
120889
+ * Title of the page as the browser reported it. Null off-page.
120890
+ */
119616
120891
  title: (string | null);
120892
+ /**
120893
+ * Hostname the event was sent from. Null for an event with no page behind it, such as a server-side call.
120894
+ */
119617
120895
  domain: (string | null);
120896
+ /**
120897
+ * Campaign tags and ad click carried by this event, as they were on the URL at the time.
120898
+ */
119618
120899
  source: {
120900
+ /**
120901
+ * The ad click identifier on this URL, raw. Personal data: it resolves to one individual inside the ad network.
120902
+ */
119619
120903
  clickId: (string | null);
120904
+ /**
120905
+ * utm_term on the URL of this event — the keyword bought, on a paid-search arrival.
120906
+ */
119620
120907
  utmTerm: (string | null);
120908
+ /**
120909
+ * utm_medium on the URL of this event.
120910
+ */
119621
120911
  utmMedium: (string | null);
120912
+ /**
120913
+ * utm_source on the URL of THIS event — the campaign at this moment, not the one that first acquired the person.
120914
+ */
119622
120915
  utmSource: (string | null);
120916
+ /**
120917
+ * utm_content on the URL of this event — which creative or link variant was clicked.
120918
+ */
119623
120919
  utmContent: (string | null);
120920
+ /**
120921
+ * Which ad network stamped the click id below: gclid for Google Ads, fbclid for Meta. Null on a non-ad arrival.
120922
+ */
119624
120923
  clickIdType: (string | null);
120924
+ /**
120925
+ * utm_campaign on the URL of this event.
120926
+ */
119625
120927
  utmCampaign: (string | null);
119626
120928
  };
120929
+ /**
120930
+ * Two-letter ISO 3166-1 country the request came from, resolved from the IP at collection time. Null when it could not be resolved.
120931
+ */
119627
120932
  country: (string | null);
120933
+ /**
120934
+ * Where the person came from immediately before this event. Null on a direct arrival or off-page.
120935
+ */
119628
120936
  referrer: (string | null);
120937
+ /**
120938
+ * Handle for the browsing session this event belongs to; events sharing it happened in one sitting. Null for an event collected outside a session.
120939
+ */
119629
120940
  sessionId: (string | null);
119630
120941
  }[];
120942
+ /**
120943
+ * The person themselves: their handle, how far they have come, and when they were seen.
120944
+ */
119631
120945
  profile: {
120946
+ /**
120947
+ * How far the person has come: anonymous = only a browser behind them, identified = an email or phone is known, customer = they have paid at least once.
120948
+ */
119632
120949
  status: ("anonymous" | "identified" | "customer");
120950
+ /**
120951
+ * When this product first created the profile row, ISO 8601 UTC. Later than firstSeenAt when events were backfilled.
120952
+ */
119633
120953
  createdAt: string;
120954
+ /**
120955
+ * Stable handle for this person inside the product. Pass it to any other people step; it survives identity merges.
120956
+ */
119634
120957
  profileId: string;
120958
+ /**
120959
+ * Timestamp of their most recent event, ISO 8601 UTC — the freshness of everything else here.
120960
+ */
119635
120961
  lastSeenAt: string;
120962
+ /**
120963
+ * Timestamp of the earliest event on record for this person, ISO 8601 UTC.
120964
+ */
119636
120965
  firstSeenAt: string;
119637
120966
  };
120967
+ /**
120968
+ * Everything known about who this person is: the addresses they have been identified by, the ad clicks they arrived by, and the sites they were seen on. Every part of it is a list, and none of the lists names a primary.
120969
+ */
119638
120970
  signals: {
120971
+ /**
120972
+ * Every email this person has ever been identified by. Stably ordered for display and diffing — the position of an address says NOTHING about which one to contact, and this toolkit holds no primary. Usually one entry; a person who signed up twice has several.
120973
+ */
119639
120974
  emails: string[];
120975
+ /**
120976
+ * Every phone number this person has been identified by. Stably ordered for display and diffing only, with no primary among them.
120977
+ */
119640
120978
  phones: string[];
120979
+ /**
120980
+ * Distinct hostnames this person browsed, taken from their events — not an identifier type, just where they were.
120981
+ */
119641
120982
  domains: string[];
120983
+ /**
120984
+ * Every ad click this person arrived by, stably ordered and with no primary among them. Personal data: a click id resolves to one individual inside the ad network.
120985
+ */
119642
120986
  clickIds: {
120987
+ /**
120988
+ * Which ad network the click came from — gclid for Google Ads, fbclid for Meta. Open set.
120989
+ */
119643
120990
  type: string;
120991
+ /**
120992
+ * The click identifier itself, raw, as the network stamped it on the landing URL.
120993
+ */
119644
120994
  value: string;
119645
120995
  }[];
119646
120996
  };
120997
+ /**
120998
+ * True when the history hit the 50000-event cap and older events were left out. False means this export is everything held.
120999
+ */
119647
121000
  truncated: boolean;
121001
+ /**
121002
+ * When this export was produced, ISO 8601 UTC — the as-of date to put on a subject-access response.
121003
+ */
119648
121004
  exportedAt: string;
121005
+ /**
121006
+ * First touch: the campaign that brought this person in, frozen at their earliest event and never overwritten by later visits. Null for a person with no events at all.
121007
+ */
119649
121008
  acquisition: ({
121009
+ /**
121010
+ * Channel of that same first visit (utm_medium): cpc, email, social, and so on. Null when untagged.
121011
+ */
119650
121012
  utmMedium: (string | null);
121013
+ /**
121014
+ * Where the person came from on their very first visit — the utm_source of their earliest event. Null when they arrived with no campaign tags.
121015
+ */
119651
121016
  utmSource: (string | null);
121017
+ /**
121018
+ * Which ad network stamped the click that brought them in — gclid for Google Ads, fbclid for Meta. Null for a non-ad arrival. Open set: new networks appear without a release here.
121019
+ */
119652
121020
  clickIdType: (string | null);
121021
+ /**
121022
+ * When that first visit happened, ISO 8601 UTC. This is the timestamp of the earliest event, not when the profile row was written.
121023
+ */
119653
121024
  firstSeenAt: string;
121025
+ /**
121026
+ * Campaign of that same first visit (utm_campaign). Null when untagged.
121027
+ */
119654
121028
  utmCampaign: (string | null);
119655
121029
  } | null);
119656
121030
  }
@@ -119664,76 +121038,226 @@ export interface TrackingProfilesGetInput {
119664
121038
  */
119665
121039
  journeyLimit?: number;
119666
121040
  /**
119667
- * Opaque cursor to page further back through the journey
121041
+ * Continue paging back through the journey: pass the cursor the previous page returned. Omit to start at the most recent event.
119668
121042
  */
119669
121043
  journeyCursor?: string;
119670
121044
  }
119671
121045
  export interface TrackingProfilesGetOutput {
121046
+ /**
121047
+ * Lifetime value of this person, per currency. Null when revenue tracking is not in use for the product.
121048
+ */
119672
121049
  ltv: ({
121050
+ /**
121051
+ * One row per currency this person has paid in. Empty for someone who never paid; there is no cross-currency total, because converting would need a rate this toolkit does not hold.
121052
+ */
119673
121053
  entries: {
121054
+ /**
121055
+ * ISO 4217 code the amounts beside it are denominated in, e.g. EUR. One entry per code the person ever paid in.
121056
+ */
119674
121057
  currency: string;
121058
+ /**
121059
+ * What the business actually kept: gross minus refunded, in minor units. This is the number to rank customers by.
121060
+ */
119675
121061
  netMinor: number;
121062
+ /**
121063
+ * Everything the person was ever charged, in minor units (1250 = 12.50 EUR). Refunds are not subtracted here.
121064
+ */
119676
121065
  grossMinor: number;
121066
+ /**
121067
+ * Their most recent payment in this currency, ISO 8601 UTC — how live the relationship is.
121068
+ */
119677
121069
  lastPaymentAt: (string | null);
121070
+ /**
121071
+ * How much of the gross went back to them, in minor units. Zero for a person who never had a refund.
121072
+ */
119678
121073
  refundedMinor: number;
121074
+ /**
121075
+ * When this person first paid in this currency, ISO 8601 UTC. Null when the totals were computed without a dated payment.
121076
+ */
119679
121077
  firstPaymentAt: (string | null);
119680
121078
  }[];
121079
+ /**
121080
+ * The person these totals belong to — the same handle as profile.profileId.
121081
+ */
119681
121082
  profileId: string;
121083
+ /**
121084
+ * When these totals were last recomputed, ISO 8601 UTC. Null when they have never been computed.
121085
+ */
119682
121086
  computedAt: (string | null);
119683
121087
  } | null);
121088
+ /**
121089
+ * What this person did, newest first, one page at a time. Use the export step instead when the whole history is wanted in one go.
121090
+ */
119684
121091
  journey: {
121092
+ /**
121093
+ * Pass back as `journeyCursor` to page further back in time. Null once the journey is exhausted.
121094
+ */
119685
121095
  cursor: (string | null);
121096
+ /**
121097
+ * This page of the journey, newest event first.
121098
+ */
119686
121099
  events: {
121100
+ /**
121101
+ * When the event happened, ISO 8601 UTC. The journey is ordered by this, newest first.
121102
+ */
119687
121103
  ts: string;
121104
+ /**
121105
+ * Opaque handle for this one event, unique inside the product. Use it to deduplicate, not to sort — it carries no order.
121106
+ */
119688
121107
  ref: string;
121108
+ /**
121109
+ * Full address of the page, query string included. Personal data — it can carry an email in a link. Null off-page.
121110
+ */
119689
121111
  url: (string | null);
121112
+ /**
121113
+ * What happened, as the tracking snippet named it: page_view, signup, purchase, or any custom name the product sends.
121114
+ */
119690
121115
  name: string;
121116
+ /**
121117
+ * Custom properties the product attached to this event. Free-form: the keys are whatever the snippet sent, and they differ by event name.
121118
+ */
119691
121119
  props: {
119692
121120
  [k: string]: unknown;
119693
121121
  };
121122
+ /**
121123
+ * Title of the page as the browser reported it. Null off-page.
121124
+ */
119694
121125
  title: (string | null);
121126
+ /**
121127
+ * Hostname the event was sent from. Null for an event with no page behind it, such as a server-side call.
121128
+ */
119695
121129
  domain: (string | null);
121130
+ /**
121131
+ * Campaign tags and ad click carried by this event, as they were on the URL at the time.
121132
+ */
119696
121133
  source: {
121134
+ /**
121135
+ * The ad click identifier on this URL, raw. Personal data: it resolves to one individual inside the ad network.
121136
+ */
119697
121137
  clickId: (string | null);
121138
+ /**
121139
+ * utm_term on the URL of this event — the keyword bought, on a paid-search arrival.
121140
+ */
119698
121141
  utmTerm: (string | null);
121142
+ /**
121143
+ * utm_medium on the URL of this event.
121144
+ */
119699
121145
  utmMedium: (string | null);
121146
+ /**
121147
+ * utm_source on the URL of THIS event — the campaign at this moment, not the one that first acquired the person.
121148
+ */
119700
121149
  utmSource: (string | null);
121150
+ /**
121151
+ * utm_content on the URL of this event — which creative or link variant was clicked.
121152
+ */
119701
121153
  utmContent: (string | null);
121154
+ /**
121155
+ * Which ad network stamped the click id below: gclid for Google Ads, fbclid for Meta. Null on a non-ad arrival.
121156
+ */
119702
121157
  clickIdType: (string | null);
121158
+ /**
121159
+ * utm_campaign on the URL of this event.
121160
+ */
119703
121161
  utmCampaign: (string | null);
119704
121162
  };
121163
+ /**
121164
+ * Two-letter ISO 3166-1 country the request came from, resolved from the IP at collection time. Null when it could not be resolved.
121165
+ */
119705
121166
  country: (string | null);
121167
+ /**
121168
+ * Where the person came from immediately before this event. Null on a direct arrival or off-page.
121169
+ */
119706
121170
  referrer: (string | null);
121171
+ /**
121172
+ * Handle for the browsing session this event belongs to; events sharing it happened in one sitting. Null for an event collected outside a session.
121173
+ */
119707
121174
  sessionId: (string | null);
119708
121175
  }[];
119709
121176
  };
121177
+ /**
121178
+ * The person themselves: their handle, how far they have come, and when they were seen.
121179
+ */
119710
121180
  profile: {
121181
+ /**
121182
+ * How far the person has come: anonymous = only a browser behind them, identified = an email or phone is known, customer = they have paid at least once.
121183
+ */
119711
121184
  status: ("anonymous" | "identified" | "customer");
121185
+ /**
121186
+ * When this product first created the profile row, ISO 8601 UTC. Later than firstSeenAt when events were backfilled.
121187
+ */
119712
121188
  createdAt: string;
121189
+ /**
121190
+ * Stable handle for this person inside the product. Pass it to any other people step; it survives identity merges.
121191
+ */
119713
121192
  profileId: string;
121193
+ /**
121194
+ * Timestamp of their most recent event, ISO 8601 UTC — the freshness of everything else here.
121195
+ */
119714
121196
  lastSeenAt: string;
121197
+ /**
121198
+ * Timestamp of the earliest event on record for this person, ISO 8601 UTC.
121199
+ */
119715
121200
  firstSeenAt: string;
119716
121201
  };
121202
+ /**
121203
+ * Everything known about who this person is: the addresses they have been identified by, the ad clicks they arrived by, and the sites they were seen on. Every part of it is a list, and none of the lists names a primary.
121204
+ */
119717
121205
  signals: {
121206
+ /**
121207
+ * Every email this person has ever been identified by. Stably ordered for display and diffing — the position of an address says NOTHING about which one to contact, and this toolkit holds no primary. Usually one entry; a person who signed up twice has several.
121208
+ */
119718
121209
  emails: string[];
121210
+ /**
121211
+ * Every phone number this person has been identified by. Stably ordered for display and diffing only, with no primary among them.
121212
+ */
119719
121213
  phones: string[];
121214
+ /**
121215
+ * Distinct hostnames this person browsed, taken from their events — not an identifier type, just where they were.
121216
+ */
119720
121217
  domains: string[];
121218
+ /**
121219
+ * Every ad click this person arrived by, stably ordered and with no primary among them. Personal data: a click id resolves to one individual inside the ad network.
121220
+ */
119721
121221
  clickIds: {
121222
+ /**
121223
+ * Which ad network the click came from — gclid for Google Ads, fbclid for Meta. Open set.
121224
+ */
119722
121225
  type: string;
121226
+ /**
121227
+ * The click identifier itself, raw, as the network stamped it on the landing URL.
121228
+ */
119723
121229
  value: string;
119724
121230
  }[];
119725
121231
  };
121232
+ /**
121233
+ * First touch: the campaign that brought this person in, frozen at their earliest event and never overwritten by later visits. Null for a person with no events at all.
121234
+ */
119726
121235
  acquisition: ({
121236
+ /**
121237
+ * Channel of that same first visit (utm_medium): cpc, email, social, and so on. Null when untagged.
121238
+ */
119727
121239
  utmMedium: (string | null);
121240
+ /**
121241
+ * Where the person came from on their very first visit — the utm_source of their earliest event. Null when they arrived with no campaign tags.
121242
+ */
119728
121243
  utmSource: (string | null);
121244
+ /**
121245
+ * Which ad network stamped the click that brought them in — gclid for Google Ads, fbclid for Meta. Null for a non-ad arrival. Open set: new networks appear without a release here.
121246
+ */
119729
121247
  clickIdType: (string | null);
121248
+ /**
121249
+ * When that first visit happened, ISO 8601 UTC. This is the timestamp of the earliest event, not when the profile row was written.
121250
+ */
119730
121251
  firstSeenAt: string;
121252
+ /**
121253
+ * Campaign of that same first visit (utm_campaign). Null when untagged.
121254
+ */
119731
121255
  utmCampaign: (string | null);
119732
121256
  } | null);
119733
121257
  }
119734
121258
  export interface TrackingProfilesListInput {
119735
121259
  /**
119736
- * Exact email to find (case-insensitive), or a prefix when emailMatch=prefix
121260
+ * Email to search people by — the whole address by default, or its beginning when emailMatch is prefix. Omit to search across everyone.
119737
121261
  */
119738
121262
  email?: string;
119739
121263
  /**
@@ -119741,126 +121265,357 @@ export interface TrackingProfilesListInput {
119741
121265
  */
119742
121266
  limit?: number;
119743
121267
  /**
119744
- * Opaque pagination cursor from a previous response
121268
+ * Continue a previous page: pass the cursor that page returned. Omit to start from the most recently seen person.
119745
121269
  */
119746
121270
  cursor?: string;
119747
121271
  /**
119748
- * Filter by profile status
121272
+ * Keep only people at this stage — anonymous, identified or customer. Omit to get all three.
119749
121273
  */
119750
121274
  status?: ("anonymous" | "identified" | "customer");
119751
121275
  /**
119752
- * How to match the email filter
121276
+ * How the email filter is matched: exact (default) compares the whole address case-insensitively, prefix matches everyone whose address starts with what you typed.
119753
121277
  */
119754
121278
  emailMatch?: ("exact" | "prefix");
119755
121279
  }
119756
121280
  export interface TrackingProfilesListOutput {
121281
+ /**
121282
+ * Pass this back as `cursor` to fetch the next page. Null on the last page — that null is how a loop knows to stop.
121283
+ */
119757
121284
  cursor: (string | null);
121285
+ /**
121286
+ * The page of people, most recently seen first. Shorter than the requested limit on the last page.
121287
+ */
119758
121288
  profiles: {
121289
+ /**
121290
+ * Every email this person has been identified by. Stably ordered for display, with no primary among them — position 0 is not the address to contact.
121291
+ */
119759
121292
  emails: string[];
121293
+ /**
121294
+ * How far this person has come: anonymous = only a browser, identified = an email or phone is known, customer = they have paid.
121295
+ */
119760
121296
  status: ("anonymous" | "identified" | "customer");
121297
+ /**
121298
+ * Stable handle for this person. Feed it to a get, export or erase step.
121299
+ */
119761
121300
  profileId: string;
121301
+ /**
121302
+ * Timestamp of their most recent event, ISO 8601 UTC. The page is ordered by this, newest first.
121303
+ */
119762
121304
  lastSeenAt: string;
121305
+ /**
121306
+ * First touch: the campaign that brought this person in, frozen at their earliest event and never overwritten by later visits. Null for a person with no events at all.
121307
+ */
119763
121308
  acquisition: ({
121309
+ /**
121310
+ * Channel of that same first visit (utm_medium): cpc, email, social, and so on. Null when untagged.
121311
+ */
119764
121312
  utmMedium: (string | null);
121313
+ /**
121314
+ * Where the person came from on their very first visit — the utm_source of their earliest event. Null when they arrived with no campaign tags.
121315
+ */
119765
121316
  utmSource: (string | null);
121317
+ /**
121318
+ * Which ad network stamped the click that brought them in — gclid for Google Ads, fbclid for Meta. Null for a non-ad arrival. Open set: new networks appear without a release here.
121319
+ */
119766
121320
  clickIdType: (string | null);
121321
+ /**
121322
+ * When that first visit happened, ISO 8601 UTC. This is the timestamp of the earliest event, not when the profile row was written.
121323
+ */
119767
121324
  firstSeenAt: string;
121325
+ /**
121326
+ * Campaign of that same first visit (utm_campaign). Null when untagged.
121327
+ */
119768
121328
  utmCampaign: (string | null);
119769
121329
  } | null);
121330
+ /**
121331
+ * Timestamp of their earliest event, ISO 8601 UTC.
121332
+ */
119770
121333
  firstSeenAt: string;
119771
121334
  }[];
119772
121335
  }
119773
121336
  export interface TrackingReportsAttributedJourneyInput {
121337
+ /**
121338
+ * Show only journey events at or before this instant (ISO). Omit for the whole history.
121339
+ */
119774
121340
  to?: string;
121341
+ /**
121342
+ * Show only journey events at or after this instant (ISO). Omit for the whole history.
121343
+ */
119775
121344
  from?: string;
121345
+ /**
121346
+ * Attribution model to explain the decision under; re-reads the same history, so switching it is free (default 'last_click').
121347
+ */
119776
121348
  model?: ("last_click" | "first_click");
119777
121349
  /**
119778
121350
  * The profile id (uuid)
119779
121351
  */
119780
121352
  profileId: string;
121353
+ /**
121354
+ * How far back before the conversion a touchpoint may be credited, in days (default 30).
121355
+ */
119781
121356
  lookbackDays?: number;
119782
121357
  }
119783
121358
  export interface TrackingReportsAttributedJourneyOutput {
121359
+ /**
121360
+ * What this person actually did, in order.
121361
+ */
119784
121362
  journey: {
121363
+ /**
121364
+ * Every tracked event for this person inside the requested window, oldest first.
121365
+ */
119785
121366
  events: {
121367
+ /**
121368
+ * When the event happened (ISO 8601, UTC). Events are ordered oldest first.
121369
+ */
119786
121370
  ts: string;
121371
+ /**
121372
+ * Handle for this event within the journey; `decisions[].winnerRef` points back at one of these to name the winning touchpoint.
121373
+ */
119787
121374
  ref: string;
121375
+ /**
121376
+ * Page address the event fired on. Free text from the customer site, so it can carry personal data.
121377
+ */
119788
121378
  url: (string | null);
121379
+ /**
121380
+ * Event name as sent by the site, e.g. 'pageview' or a custom conversion name.
121381
+ */
119789
121382
  name: string;
121383
+ /**
121384
+ * Custom properties the site attached to this event. Shape is the customer's, so it can carry anything, personal data included.
121385
+ */
119790
121386
  props: {
119791
121387
  [k: string]: unknown;
119792
121388
  };
121389
+ /**
121390
+ * Document title of that page. Free text from the customer site, so it can carry personal data.
121391
+ */
119793
121392
  title: (string | null);
121393
+ /**
121394
+ * Site the event came from; null when the tracker could not determine one.
121395
+ */
119794
121396
  domain: (string | null);
121397
+ /**
121398
+ * Where this event's visit came from, as read off the landing URL. Every field is null when the visit carried nothing.
121399
+ */
119795
121400
  source: {
121401
+ /**
121402
+ * The click id value itself. Identifies one ad click by this person, so treat it as personal data.
121403
+ */
119796
121404
  clickId: (string | null);
121405
+ /**
121406
+ * utm_term of the landing URL, the paid keyword; null when absent.
121407
+ */
119797
121408
  utmTerm: (string | null);
121409
+ /**
121410
+ * utm_medium of the landing URL; null when absent.
121411
+ */
119798
121412
  utmMedium: (string | null);
121413
+ /**
121414
+ * utm_source of the landing URL; null when absent.
121415
+ */
119799
121416
  utmSource: (string | null);
121417
+ /**
121418
+ * utm_content of the landing URL, the creative variant; null when absent.
121419
+ */
119800
121420
  utmContent: (string | null);
121421
+ /**
121422
+ * Which ad-network click id was present, e.g. 'gclid'; null when the visit carried none.
121423
+ */
119801
121424
  clickIdType: (string | null);
121425
+ /**
121426
+ * utm_campaign of the landing URL; null when absent.
121427
+ */
119802
121428
  utmCampaign: (string | null);
119803
121429
  };
121430
+ /**
121431
+ * Two-letter ISO 3166-1 alpha-2 country resolved from the request, e.g. DE; null when it could not be resolved.
121432
+ */
119804
121433
  country: (string | null);
121434
+ /**
121435
+ * Address the visitor arrived from; null on a direct visit. Free text from the customer site, so it can carry personal data.
121436
+ */
119805
121437
  referrer: (string | null);
121438
+ /**
121439
+ * Visit this event belongs to; events sharing one happened in the same sitting. Null when no session could be established.
121440
+ */
119806
121441
  sessionId: (string | null);
119807
121442
  }[];
119808
121443
  };
119809
- decisions: {
119810
- model: ("last_click" | "first_click");
119811
- reason: string;
119812
- revenue: {
119813
- currency: string;
119814
- netMinor: number;
119815
- grossMinor: number;
119816
- refundedMinor: number;
119817
- }[];
119818
- winnerRef: (string | null);
119819
- conversionTs: string;
119820
- lookbackDays: number;
119821
- winningTouchpoint: ({
119822
- ts: string;
119823
- channel: ("paid" | "organic" | "direct" | "email");
119824
- utmMedium: (string | null);
119825
- utmSource: (string | null);
119826
- clickIdType: (string | null);
119827
- utmCampaign: (string | null);
119828
- } | null);
119829
- }[];
121444
+ /**
121445
+ * Holds at most one entry: the decision for this person's originating conversion, present only when that conversion falls inside the requested window. Kept as a list for callers that already read it; `originatingDecision` is the same value at a bindable path.
121446
+ */
121447
+ decisions: TrackingReportsAttributedJourneyOutputItems[];
121448
+ /**
121449
+ * The person this journey belongs to, echoed back from the request.
121450
+ */
119830
121451
  profileId: string;
121452
+ /**
121453
+ * The attribution decision for this person's originating conversion — the same value as `decisions[0]`, at a path a workflow can bind. Null means the decision is not in THIS window, not that the person never converted: a conversion before `from` or after `to` is excluded here while still being their originating one. Widen the window to see it.
121454
+ */
121455
+ originatingDecision: (TrackingReportsAttributedJourneyOutputItems | null);
121456
+ }
121457
+ export interface TrackingReportsAttributedJourneyOutputItems {
121458
+ /**
121459
+ * Attribution model the winner was picked under, echoed back from the request.
121460
+ */
121461
+ model: ("last_click" | "first_click");
121462
+ /**
121463
+ * Why this touchpoint won, or why nothing did, in a sentence a person can read.
121464
+ */
121465
+ reason: string;
121466
+ /**
121467
+ * Revenue of that conversion, one row per currency.
121468
+ */
121469
+ revenue: {
121470
+ /**
121471
+ * ISO 4217 code the amounts below are denominated in, e.g. EUR.
121472
+ */
121473
+ currency: string;
121474
+ /**
121475
+ * `grossMinor` minus `refundedMinor`, in minor units of `currency`. This is the figure to report.
121476
+ */
121477
+ netMinor: number;
121478
+ /**
121479
+ * Billed amount before refunds, in minor units of `currency` (cents for EUR).
121480
+ */
121481
+ grossMinor: number;
121482
+ /**
121483
+ * Amount refunded out of `grossMinor`, in minor units of `currency`.
121484
+ */
121485
+ refundedMinor: number;
121486
+ }[];
121487
+ /**
121488
+ * `journey.events[].ref` of the touchpoint that won the credit. Null when nothing inside the window qualified.
121489
+ */
121490
+ winnerRef: (string | null);
121491
+ /**
121492
+ * When the conversion this decision explains happened (ISO 8601, UTC).
121493
+ */
121494
+ conversionTs: string;
121495
+ /**
121496
+ * How far back before `conversionTs` a touchpoint was allowed to be credited, in days; echoed back.
121497
+ */
121498
+ lookbackDays: number;
121499
+ /**
121500
+ * The winning touchpoint spelled out, so a reader need not resolve `winnerRef`. Null exactly when `winnerRef` is null.
121501
+ */
121502
+ winningTouchpoint: ({
121503
+ /**
121504
+ * When the winning touchpoint happened (ISO 8601, UTC).
121505
+ */
121506
+ ts: string;
121507
+ /**
121508
+ * Channel the winning touchpoint belongs to.
121509
+ */
121510
+ channel: ("paid" | "organic" | "direct" | "email");
121511
+ /**
121512
+ * utm_medium of the winning touchpoint; null when it carried none.
121513
+ */
121514
+ utmMedium: (string | null);
121515
+ /**
121516
+ * utm_source of the winning touchpoint; null when it carried none.
121517
+ */
121518
+ utmSource: (string | null);
121519
+ /**
121520
+ * Campaign id carried by our own `_lt_campaign` landing-URL parameter; null when the visit carried none.
121521
+ */
121522
+ ltCampaign?: (string | null);
121523
+ /**
121524
+ * Ad-network click id present on the winning touchpoint, e.g. 'gclid'; null when it carried none.
121525
+ */
121526
+ clickIdType: (string | null);
121527
+ /**
121528
+ * utm_campaign of the winning touchpoint; null when it carried none.
121529
+ */
121530
+ utmCampaign: (string | null);
121531
+ } | null);
119831
121532
  }
119832
121533
  export interface TrackingReportsEventVolumeInput {
119833
- to: string;
119834
- from: string;
121534
+ /**
121535
+ * End of the range to count, inclusive (ISO 8601). Optional — defaults to the moment of the call.
121536
+ */
121537
+ to?: string;
121538
+ /**
121539
+ * Start of the range to count, inclusive (ISO 8601). Optional — defaults to 30 days back, the start of that UTC day.
121540
+ */
121541
+ from?: string;
121542
+ /**
121543
+ * Count only this site. Omit to count every site the product sends from.
121544
+ */
119835
121545
  domain?: string;
119836
121546
  }
119837
121547
  export interface TrackingReportsEventVolumeOutput {
121548
+ /**
121549
+ * End of the range the figures cover, echoed back (ISO 8601, UTC).
121550
+ */
119838
121551
  to: string;
121552
+ /**
121553
+ * Start of the range the figures cover, echoed back (ISO 8601, UTC).
121554
+ */
119839
121555
  from: string;
121556
+ /**
121557
+ * Site the figures were restricted to; null when every site of the product is included.
121558
+ */
119840
121559
  domain: (string | null);
121560
+ /**
121561
+ * When this report was computed (ISO 8601, UTC).
121562
+ */
119841
121563
  computedAt: string;
121564
+ /**
121565
+ * How COMPLETE the two headline figures above are. Contains no metric of its own — never present a field of it as a headline number and never add it to anything. consentGrantedEvents + cookielessEvents + noBannerEvents = totalEvents.
121566
+ */
119842
121567
  dataQuality: {
121568
+ /**
121569
+ * Fraction of `totalEvents` (0..1) that came from sites running no consent banner, where nobody was ever asked.
121570
+ */
119843
121571
  noBannerShare: number;
121572
+ /**
121573
+ * Events from sites with no consent banner. Kept apart from `cookielessEvents` on purpose: nobody refused here, nobody was asked.
121574
+ */
119844
121575
  noBannerEvents: number;
121576
+ /**
121577
+ * How many UTC days the range spans; each one re-counts a returning declining visitor.
121578
+ */
119845
121579
  utcDaysInRange: number;
121580
+ /**
121581
+ * Fraction of `totalEvents` (0..1) that came from visitors who declined statistics consent.
121582
+ */
119846
121583
  cookielessShare: number;
121584
+ /**
121585
+ * Events from visitors who declined; no cookie was written and no identifier sent.
121586
+ */
119847
121587
  cookielessEvents: number;
121588
+ /**
121589
+ * Events carrying an anonymous id. A different cut that overlaps the three consent buckets — it is not the complement of `cookielessEvents` and must never be added to it.
121590
+ */
119848
121591
  identifiedEvents: number;
121592
+ /**
121593
+ * True when `visitorsDeduplicatedPerUtcDay` over-counts for this range: the range spans more than one UTC day and there is declining traffic in it.
121594
+ */
119849
121595
  visitorsOverstated: boolean;
121596
+ /**
121597
+ * Events from visitors who granted statistics consent.
121598
+ */
119850
121599
  consentGrantedEvents: number;
119851
121600
  };
121601
+ /**
121602
+ * How many events arrived in the range, across every consent state.
121603
+ */
119852
121604
  totalEvents: number;
121605
+ /**
121606
+ * How many PEOPLE those events came from: one COUNT DISTINCT over consenting visitors (by anonymous id) and declining visitors (by a daily key destroyed each UTC midnight) at once. Over a range longer than one UTC day this is an OVER-count of the declining half — read `dataQuality.visitorsOverstated` before reporting it.
121607
+ */
119853
121608
  visitorsDeduplicatedPerUtcDay: number;
119854
121609
  }
119855
121610
  export interface TrackingReportsRevenueBySourceInput {
119856
121611
  /**
119857
- * Cohort window end (ISO)
121612
+ * Cohort window end (ISO). Optional — defaults to the moment of the call.
119858
121613
  */
119859
- to: string;
121614
+ to?: string;
119860
121615
  /**
119861
- * Cohort window start (ISO); selects conversions by subscription start
121616
+ * Cohort window start (ISO); selects conversions by subscription start. Optional — defaults to 30 days back, the start of that UTC day.
119862
121617
  */
119863
- from: string;
121618
+ from?: string;
119864
121619
  /**
119865
121620
  * Attribution model
119866
121621
  */
@@ -119875,53 +121630,149 @@ export interface TrackingReportsRevenueBySourceInput {
119875
121630
  lookbackDays?: number;
119876
121631
  }
119877
121632
  export interface TrackingReportsRevenueBySourceOutput {
121633
+ /**
121634
+ * End of the cohort window the figures cover, echoed back (ISO 8601, UTC).
121635
+ */
119878
121636
  to: string;
121637
+ /**
121638
+ * Start of the cohort window the figures cover, echoed back (ISO 8601, UTC).
121639
+ */
119879
121640
  from: string;
121641
+ /**
121642
+ * Attribution model the credit was assigned under, echoed back. Pass the same value to `tracking_reports_source_people` to drill into a row.
121643
+ */
119880
121644
  model: ("last_click" | "first_click");
121645
+ /**
121646
+ * Site touchpoints were restricted to; null when every site of the product was considered.
121647
+ */
119881
121648
  domain: (string | null);
121649
+ /**
121650
+ * Every channel plus `unattributed`. This is the whole window, not the attributed part of it.
121651
+ */
119882
121652
  totals: {
121653
+ /**
121654
+ * Revenue over every channel plus `unattributed`, one row per currency.
121655
+ */
119883
121656
  revenue: TrackingReportsRevenueBySourceOutputItems[];
121657
+ /**
121658
+ * Distinct paying people over every channel plus `unattributed`.
121659
+ */
119884
121660
  customers: number;
119885
121661
  };
121662
+ /**
121663
+ * One row per channel that earned revenue in the window. Channels with none are omitted.
121664
+ */
119886
121665
  channels: {
121666
+ /**
121667
+ * Which acquisition channel this row aggregates.
121668
+ */
119887
121669
  channel: ("paid" | "organic" | "direct" | "email");
121670
+ /**
121671
+ * Revenue credited to this channel, one row per currency, ordered by currency code. Currencies are never summed, so there is no single figure here: a product trading in two currencies has two rows and both must be reported.
121672
+ */
119888
121673
  revenue: TrackingReportsRevenueBySourceOutputItems[];
121674
+ /**
121675
+ * Distinct paying people credited to this channel.
121676
+ */
119889
121677
  customers: number;
121678
+ /**
121679
+ * The channel split by UTM combination. Each row is a drill-down target for `tracking_reports_source_people`.
121680
+ */
119890
121681
  utmBreakdown: {
121682
+ /**
121683
+ * Revenue credited to this UTM combination, one row per currency.
121684
+ */
119891
121685
  revenue: TrackingReportsRevenueBySourceOutputItems[];
121686
+ /**
121687
+ * Distinct paying people credited to this UTM combination.
121688
+ */
119892
121689
  customers: number;
121690
+ /**
121691
+ * utm_medium of this row; null when the visit carried none.
121692
+ */
119893
121693
  utmMedium: (string | null);
121694
+ /**
121695
+ * utm_source of this row; null when the visit carried none.
121696
+ */
119894
121697
  utmSource: (string | null);
121698
+ /**
121699
+ * Ad-network click id present on the visit, e.g. 'gclid'; null when it carried none.
121700
+ */
119895
121701
  clickIdType: (string | null);
121702
+ /**
121703
+ * utm_campaign of this row; null when the visit carried none.
121704
+ */
119896
121705
  utmCampaign: (string | null);
119897
121706
  }[];
119898
121707
  }[];
121708
+ /**
121709
+ * Fraction of paying people (0..1) a touchpoint could be found for: attributed customers over `totals.customers`. Count-based, never revenue-weighted.
121710
+ */
119899
121711
  matchRate: number;
121712
+ /**
121713
+ * When this report was computed (ISO 8601, UTC).
121714
+ */
119900
121715
  computedAt: string;
121716
+ /**
121717
+ * How far back before a conversion a touchpoint was allowed to be credited, in days; echoed back.
121718
+ */
119901
121719
  lookbackDays: number;
121720
+ /**
121721
+ * Revenue that reached no channel — kept as its own row so the channel rows are never quietly inflated to cover it.
121722
+ */
119902
121723
  unattributed: {
121724
+ /**
121725
+ * Revenue no touchpoint could be credited for, one row per currency.
121726
+ */
119903
121727
  revenue: TrackingReportsRevenueBySourceOutputItems[];
121728
+ /**
121729
+ * Distinct paying people no touchpoint could be credited for.
121730
+ */
119904
121731
  customers: number;
119905
121732
  };
119906
121733
  }
119907
121734
  export interface TrackingReportsRevenueBySourceOutputItems {
121735
+ /**
121736
+ * ISO 4217 code the amounts below are denominated in, e.g. EUR.
121737
+ */
119908
121738
  currency: string;
121739
+ /**
121740
+ * `grossMinor` minus `refundedMinor`, in minor units of `currency`. This is the figure to report.
121741
+ */
119909
121742
  netMinor: number;
121743
+ /**
121744
+ * Billed amount before refunds, in minor units of `currency` (cents for EUR).
121745
+ */
119910
121746
  grossMinor: number;
121747
+ /**
121748
+ * Amount refunded out of `grossMinor`, in minor units of `currency`.
121749
+ */
119911
121750
  refundedMinor: number;
119912
121751
  }
119913
121752
  export interface TrackingReportsSourcePeopleInput {
119914
- to: string;
119915
- from: string;
121753
+ /**
121754
+ * Cohort window end (ISO); must match the report this row came from. Optional — defaults to the moment of the call.
121755
+ */
121756
+ to?: string;
121757
+ /**
121758
+ * Cohort window start (ISO); must match the report this row came from. Optional — defaults to 30 days back, the start of that UTC day.
121759
+ */
121760
+ from?: string;
119916
121761
  /**
119917
121762
  * People per page (default 50, max 200)
119918
121763
  */
119919
121764
  limit?: number;
121765
+ /**
121766
+ * Attribution model to credit the touchpoint under; must match the report this row came from (default 'last_click').
121767
+ */
119920
121768
  model?: ("last_click" | "first_click");
119921
121769
  /**
119922
121770
  * Opaque keyset cursor from a previous page
119923
121771
  */
119924
121772
  cursor?: string;
121773
+ /**
121774
+ * Only consider touchpoints on this domain; must match the report this row came from. Omit for no restriction.
121775
+ */
119925
121776
  domain?: string;
119926
121777
  /**
119927
121778
  * Channel to drill into
@@ -119931,26 +121782,71 @@ export interface TrackingReportsSourcePeopleInput {
119931
121782
  * Comma-separated dimension names (utmSource,utmMedium,utmCampaign,clickIdType) that must be IS NULL
119932
121783
  */
119933
121784
  utmNulls?: string;
121785
+ /**
121786
+ * utm_medium of the breakdown row to drill into. Omit for no filter; to match the IS-NULL row, list it in utmNulls instead.
121787
+ */
119934
121788
  utmMedium?: string;
121789
+ /**
121790
+ * utm_source of the breakdown row to drill into. Omit for no filter; to match the IS-NULL row, list it in utmNulls instead.
121791
+ */
119935
121792
  utmSource?: string;
119936
121793
  /**
119937
121794
  * 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.
119938
121795
  */
119939
121796
  clickIdType?: string;
121797
+ /**
121798
+ * utm_campaign of the breakdown row to drill into. Omit for no filter; to match the IS-NULL row, list it in utmNulls instead.
121799
+ */
119940
121800
  utmCampaign?: string;
121801
+ /**
121802
+ * How far back before a conversion a touchpoint may be credited, in days; must match the report this row came from (default 30).
121803
+ */
119941
121804
  lookbackDays?: number;
119942
121805
  }
119943
121806
  export interface TrackingReportsSourcePeopleOutput {
121807
+ /**
121808
+ * Pass back as `cursor` for the next page. Null on the last page.
121809
+ */
119944
121810
  cursor: (string | null);
121811
+ /**
121812
+ * The page of people behind the requested row, ordered by the keyset the cursor walks.
121813
+ */
119945
121814
  people: {
121815
+ /**
121816
+ * Where this person stands in their subscription lifecycle, e.g. active or churned.
121817
+ */
119946
121818
  status: string;
121819
+ /**
121820
+ * Identifier of this person; pass it to `tracking_reports_attributed_journey` to see why they were credited here.
121821
+ */
119947
121822
  profileId: string;
121823
+ /**
121824
+ * Most recent tracked activity for this person (ISO 8601, UTC); null when none was recorded.
121825
+ */
119948
121826
  lastSeenAt: (string | null);
121827
+ /**
121828
+ * Earliest tracked activity for this person (ISO 8601, UTC); null when none was recorded.
121829
+ */
119949
121830
  firstSeenAt: (string | null);
121831
+ /**
121832
+ * Lifetime revenue credited to this person under the requested model, one row per currency.
121833
+ */
119950
121834
  attributedRevenue: {
121835
+ /**
121836
+ * ISO 4217 code the amounts below are denominated in, e.g. EUR.
121837
+ */
119951
121838
  currency: string;
121839
+ /**
121840
+ * `grossMinor` minus `refundedMinor`, in minor units of `currency`. This is the figure to report.
121841
+ */
119952
121842
  netMinor: number;
121843
+ /**
121844
+ * Billed amount before refunds, in minor units of `currency` (cents for EUR).
121845
+ */
119953
121846
  grossMinor: number;
121847
+ /**
121848
+ * Amount refunded out of `grossMinor`, in minor units of `currency`.
121849
+ */
119954
121850
  refundedMinor: number;
119955
121851
  }[];
119956
121852
  }[];
@@ -119958,9 +121854,21 @@ export interface TrackingReportsSourcePeopleOutput {
119958
121854
  export interface TrackingSnippetsGetInput {
119959
121855
  }
119960
121856
  export interface TrackingSnippetsGetOutput {
121857
+ /**
121858
+ * Tracking host the snippet sends to — the customer-facing domain events and the bundle are served from.
121859
+ */
119961
121860
  host: string;
121861
+ /**
121862
+ * The tag to paste into every page, verbatim, before </head>. Includes the consent-aware bootstrap; install it unconditionally rather than behind a consent gate.
121863
+ */
119962
121864
  snippet: string;
121865
+ /**
121866
+ * Absolute URL of the tracker bundle the snippet loads; already points at this product's own tracking host.
121867
+ */
119963
121868
  scriptUrl: string;
121869
+ /**
121870
+ * The same tag stripped to the bare script element, for tag managers and CMS fields that reject anything else. Behaves identically; use it only when the full snippet will not fit.
121871
+ */
119964
121872
  minimalSnippet: string;
119965
121873
  }
119966
121874
  export interface UsersApikeysCreateInput {
@@ -119974,25 +121882,106 @@ export interface UsersApikeysCreateInput {
119974
121882
  type: ("server" | "publishable");
119975
121883
  }
119976
121884
  export interface UsersApikeysCreateOutput {
121885
+ /**
121886
+ * Id of the key. Pass it to users_apikeys_revoke.
121887
+ */
119977
121888
  id: string;
121889
+ /**
121890
+ * The full secret key, shown ONCE. Store it now — it is never returned again, and a lost key is replaced by minting a new one.
121891
+ */
119978
121892
  key: string;
121893
+ /**
121894
+ * The label a human gave this key — which backend or environment holds it.
121895
+ */
121896
+ name: string;
121897
+ /**
121898
+ * `server` for a secret backend key (usk_…), `publishable` for a browser-safe one (upk_…).
121899
+ */
121900
+ type: ("server" | "publishable");
121901
+ /**
121902
+ * The full value of a publishable key, which is not a secret. Null for a server key — that value exists in exactly one response, ever.
121903
+ */
121904
+ value: (string | null);
121905
+ /**
121906
+ * `usk_`/`upk_` plus six characters — enough to recognise a key, never to use one.
121907
+ */
121908
+ prefix: string;
121909
+ /**
121910
+ * When the key was issued (ISO 8601).
121911
+ */
121912
+ createdAt: string;
121913
+ /**
121914
+ * When the key was revoked (ISO 8601). Null while it still works.
121915
+ */
121916
+ revokedAt: (string | null);
121917
+ }
121918
+ export interface UsersApikeysGetInput {
121919
+ /**
121920
+ * Id of the key to read — the `id` from users_apikeys_list.
121921
+ */
121922
+ id: string;
121923
+ }
121924
+ export interface UsersApikeysGetOutput {
121925
+ /**
121926
+ * Id of the key. Pass it to users_apikeys_revoke.
121927
+ */
121928
+ id: string;
121929
+ /**
121930
+ * The label a human gave this key — which backend or environment holds it.
121931
+ */
119979
121932
  name: string;
121933
+ /**
121934
+ * `server` for a secret backend key (usk_…), `publishable` for a browser-safe one (upk_…).
121935
+ */
119980
121936
  type: ("server" | "publishable");
121937
+ /**
121938
+ * The full value of a publishable key, which is not a secret. Null for a server key — that value exists in exactly one response, ever.
121939
+ */
119981
121940
  value: (string | null);
121941
+ /**
121942
+ * `usk_`/`upk_` plus six characters — enough to recognise a key, never to use one.
121943
+ */
119982
121944
  prefix: string;
121945
+ /**
121946
+ * When the key was issued (ISO 8601).
121947
+ */
119983
121948
  createdAt: string;
121949
+ /**
121950
+ * When the key was revoked (ISO 8601). Null while it still works.
121951
+ */
119984
121952
  revokedAt: (string | null);
119985
121953
  }
119986
121954
  export interface UsersApikeysListInput {
119987
121955
  }
119988
121956
  export interface UsersApikeysListOutput {
119989
121957
  keys: {
121958
+ /**
121959
+ * Id of the key. Pass it to users_apikeys_revoke.
121960
+ */
119990
121961
  id: string;
121962
+ /**
121963
+ * The label a human gave this key — which backend or environment holds it.
121964
+ */
119991
121965
  name: string;
121966
+ /**
121967
+ * `server` for a secret backend key (usk_…), `publishable` for a browser-safe one (upk_…).
121968
+ */
119992
121969
  type: ("server" | "publishable");
121970
+ /**
121971
+ * The full value of a publishable key, which is not a secret. Null for a server key — that value exists in exactly one response, ever.
121972
+ */
119993
121973
  value: (string | null);
121974
+ /**
121975
+ * `usk_`/`upk_` plus six characters — enough to recognise a key, never to use one.
121976
+ */
119994
121977
  prefix: string;
121978
+ /**
121979
+ * When the key was issued (ISO 8601).
121980
+ */
119995
121981
  createdAt: string;
121982
+ /**
121983
+ * When the key was revoked (ISO 8601). Null while it still works.
121984
+ */
119996
121985
  revokedAt: (string | null);
119997
121986
  }[];
119998
121987
  }
@@ -120003,7 +121992,13 @@ export interface UsersApikeysRevokeInput {
120003
121992
  id: string;
120004
121993
  }
120005
121994
  export interface UsersApikeysRevokeOutput {
121995
+ /**
121996
+ * Id of the key that was revoked.
121997
+ */
120006
121998
  id: string;
121999
+ /**
122000
+ * Always true — revocation is immediate and final.
122001
+ */
120007
122002
  revoked: true;
120008
122003
  }
120009
122004
  export interface UsersAuditListInput {
@@ -120037,21 +122032,60 @@ export interface UsersAuditListInput {
120037
122032
  targetType?: string;
120038
122033
  }
120039
122034
  export interface UsersAuditListOutput {
122035
+ /**
122036
+ * The page of audit events, newest first.
122037
+ */
120040
122038
  events: {
122039
+ /**
122040
+ * Id of this audit row.
122041
+ */
120041
122042
  id: string;
122043
+ /**
122044
+ * IP the action came from. Null when it was not an HTTP action.
122045
+ */
120042
122046
  ip: (string | null);
122047
+ /**
122048
+ * What happened, as a dotted name — `user.created`, `passkey.deleted`, `email_change.override_applied`.
122049
+ */
120043
122050
  action: string;
122051
+ /**
122052
+ * Id of the actor. Null for a system action.
122053
+ */
120044
122054
  actorId: (string | null);
122055
+ /**
122056
+ * Action-specific detail — the reason text, counts, whatever the action recorded.
122057
+ */
120045
122058
  metadata: {
120046
122059
  [k: string]: unknown;
120047
122060
  };
122061
+ /**
122062
+ * Id of the row the action was about. Null when there was none.
122063
+ */
120048
122064
  targetId: (string | null);
122065
+ /**
122066
+ * Who acted: `operator` (a human or agent on the management plane), `end_user`, or `system`.
122067
+ */
120049
122068
  actorType: ("operator" | "system" | "end_user");
122069
+ /**
122070
+ * When the action happened (ISO 8601).
122071
+ */
120050
122072
  createdAt: string;
122073
+ /**
122074
+ * Product the audited action happened in.
122075
+ */
120051
122076
  productId: string;
122077
+ /**
122078
+ * User agent the action came from. Null when none was sent.
122079
+ */
120052
122080
  userAgent: (string | null);
122081
+ /**
122082
+ * What kind of row the action was about — `user` or `product`. Null when it was about nothing in particular.
122083
+ */
120053
122084
  targetType: (string | null);
120054
122085
  }[];
122086
+ /**
122087
+ * Pass back as `cursor` to fetch the next page. Null when this page is the last.
122088
+ */
120055
122089
  nextCursor: (string | null);
120056
122090
  }
120057
122091
  export interface UsersConfigGetInput {
@@ -121027,12 +123061,33 @@ export interface UsersFactorsListInput {
121027
123061
  userId: string;
121028
123062
  }
121029
123063
  export interface UsersFactorsListOutput {
123064
+ /**
123065
+ * Every second factor this user has — types and status only, never material.
123066
+ */
121030
123067
  factors: {
123068
+ /**
123069
+ * Kind of second factor: `totp` or `backup_codes`. No key material is ever returned.
123070
+ */
121031
123071
  type: ("totp" | "backup_codes" | "webauthn");
123072
+ /**
123073
+ * Whether this factor is enrolled and usable, or still pending verification.
123074
+ */
121032
123075
  status: ("unverified" | "verified");
123076
+ /**
123077
+ * When the factor was enrolled (ISO 8601).
123078
+ */
121033
123079
  createdAt: string;
123080
+ /**
123081
+ * `backup_codes` only: how many of the batch are still unspent. Null for any other factor type.
123082
+ */
121034
123083
  remaining: (number | null);
123084
+ /**
123085
+ * When the factor was last used to sign in (ISO 8601). Null if it never was.
123086
+ */
121035
123087
  lastUsedAt: (string | null);
123088
+ /**
123089
+ * When the user first proved the factor works (ISO 8601). Null while it is unverified.
123090
+ */
121036
123091
  verifiedAt: (string | null);
121037
123092
  }[];
121038
123093
  }
@@ -121047,7 +123102,13 @@ export interface UsersFactorsResetInput {
121047
123102
  userId: string;
121048
123103
  }
121049
123104
  export interface UsersFactorsResetOutput {
123105
+ /**
123106
+ * Id of the scheduled reset. The same value arrives on `users/mfa.reset-settled`, which is what finishes this step.
123107
+ */
121050
123108
  requestId: string;
123109
+ /**
123110
+ * When the removal happens, if nobody aborts it first (ISO 8601). The delay is this product's, not a fixed one.
123111
+ */
121051
123112
  scheduledFor: string;
121052
123113
  }
121053
123114
  export interface UsersKeysListInput {
@@ -121328,6 +123389,50 @@ export interface UsersOpsSloGetOutput {
121328
123389
  signInFailureBaseline: (number | null);
121329
123390
  };
121330
123391
  }
123392
+ export interface UsersPasskeysGetInput {
123393
+ /**
123394
+ * The end user the credential belongs to.
123395
+ */
123396
+ userId: string;
123397
+ /**
123398
+ * Which credential to read — the `id` from `users_passkeys_list`.
123399
+ */
123400
+ passkeyId: string;
123401
+ }
123402
+ export interface UsersPasskeysGetOutput {
123403
+ /**
123404
+ * Id of the credential. Pass it to users_passkeys_revoke.
123405
+ */
123406
+ id: string;
123407
+ /**
123408
+ * The name the user gave this credential, so a person can tell their devices apart. Null when they never named it.
123409
+ */
123410
+ name: (string | null);
123411
+ /**
123412
+ * The authenticator MODEL’s identifier, which says what kind of device this is, never which one. Null when the authenticator withheld it.
123413
+ */
123414
+ aaguid: (string | null);
123415
+ /**
123416
+ * True when the platform syncs this credential, so it survives losing the device. False means it lives on that device alone.
123417
+ */
123418
+ backedUp: boolean;
123419
+ /**
123420
+ * When the credential was registered (ISO 8601).
123421
+ */
123422
+ createdAt: string;
123423
+ /**
123424
+ * The authenticator’s own counter as of the last assertion. 0 when the authenticator does not count.
123425
+ */
123426
+ signCount: number;
123427
+ /**
123428
+ * When it last signed in (ISO 8601). Null when it never has.
123429
+ */
123430
+ lastUsedAt: (string | null);
123431
+ /**
123432
+ * How this authenticator can be reached. Empty when the browser reported nothing — the vocabulary is the platform’s and grows, so it is not an enum.
123433
+ */
123434
+ transports: string[];
123435
+ }
121331
123436
  export interface UsersPasskeysListInput {
121332
123437
  /**
121333
123438
  * The end user whose passkeys to list.
@@ -121335,14 +123440,41 @@ export interface UsersPasskeysListInput {
121335
123440
  userId: string;
121336
123441
  }
121337
123442
  export interface UsersPasskeysListOutput {
123443
+ /**
123444
+ * The credentials this user has registered, newest first. Empty when they have none.
123445
+ */
121338
123446
  passkeys: {
123447
+ /**
123448
+ * Id of the credential. Pass it to users_passkeys_revoke.
123449
+ */
121339
123450
  id: string;
123451
+ /**
123452
+ * The name the user gave this credential, so a person can tell their devices apart. Null when they never named it.
123453
+ */
121340
123454
  name: (string | null);
123455
+ /**
123456
+ * The authenticator MODEL’s identifier, which says what kind of device this is, never which one. Null when the authenticator withheld it.
123457
+ */
121341
123458
  aaguid: (string | null);
123459
+ /**
123460
+ * True when the platform syncs this credential, so it survives losing the device. False means it lives on that device alone.
123461
+ */
121342
123462
  backedUp: boolean;
123463
+ /**
123464
+ * When the credential was registered (ISO 8601).
123465
+ */
121343
123466
  createdAt: string;
123467
+ /**
123468
+ * The authenticator’s own counter as of the last assertion. 0 when the authenticator does not count.
123469
+ */
121344
123470
  signCount: number;
123471
+ /**
123472
+ * When it last signed in (ISO 8601). Null when it never has.
123473
+ */
121345
123474
  lastUsedAt: (string | null);
123475
+ /**
123476
+ * How this authenticator can be reached. Empty when the browser reported nothing — the vocabulary is the platform’s and grows, so it is not an enum.
123477
+ */
121346
123478
  transports: string[];
121347
123479
  }[];
121348
123480
  }
@@ -121365,9 +123497,18 @@ export interface UsersPasskeysRevokeOutput {
121365
123497
  * Present when the revoke was refused — today, only because it was the last way in.
121366
123498
  */
121367
123499
  error: ({
123500
+ /**
123501
+ * Why it was refused. Today only `passkey_last_way_in`.
123502
+ */
121368
123503
  code: string;
123504
+ /**
123505
+ * The refusal in a sentence, safe to show a human.
123506
+ */
121369
123507
  message: string;
121370
123508
  } | null);
123509
+ /**
123510
+ * `deleted` when the credential is gone, `failed` when the revoke was refused.
123511
+ */
121371
123512
  status: ("deleted" | "failed");
121372
123513
  }
121373
123514
  export interface UsersSessionsGetInput {
@@ -121377,7 +123518,13 @@ export interface UsersSessionsGetInput {
121377
123518
  sessionId: string;
121378
123519
  }
121379
123520
  export interface UsersSessionsGetOutput {
123521
+ /**
123522
+ * Id of this session. Pass it to users_sessions_revoke.
123523
+ */
121380
123524
  id: string;
123525
+ /**
123526
+ * IP the session was opened from. Null when it was not recorded.
123527
+ */
121381
123528
  ip: (string | null);
121382
123529
  /**
121383
123530
  * `aal2` only if a verified second factor completed.
@@ -121387,18 +123534,45 @@ export interface UsersSessionsGetOutput {
121387
123534
  * The factors this session was established with.
121388
123535
  */
121389
123536
  amr: string[];
123537
+ /**
123538
+ * Whether the session is still usable, expired, or revoked.
123539
+ */
121390
123540
  status: ("active" | "revoked");
123541
+ /**
123542
+ * The end user this session belongs to.
123543
+ */
121391
123544
  userId: string;
123545
+ /**
123546
+ * When the session was opened (ISO 8601).
123547
+ */
121392
123548
  createdAt: string;
123549
+ /**
123550
+ * When the current token stops working unless refreshed (ISO 8601).
123551
+ */
121393
123552
  expiresAt: string;
123553
+ /**
123554
+ * When the session was revoked (ISO 8601). Null while it is live.
123555
+ */
121394
123556
  revokedAt: (string | null);
123557
+ /**
123558
+ * User agent the session was opened from. Null when none was sent.
123559
+ */
121395
123560
  userAgent: (string | null);
123561
+ /**
123562
+ * Why the session ended, when it was revoked — e.g. `signout`, `ban`, `mfa_reset`. Null while it is live. The vocabulary is additive, so it is not an enum.
123563
+ */
121396
123564
  revokedReason: (string | null);
121397
123565
  /**
121398
123566
  * The operator behind an impersonated session, or null for an ordinary one.
121399
123567
  */
121400
123568
  impersonatedBy: (string | null);
123569
+ /**
123570
+ * When the session last refreshed its tokens (ISO 8601). Null if it never has.
123571
+ */
121401
123572
  lastRefreshedAt: (string | null);
123573
+ /**
123574
+ * When the session ends no matter how often it refreshes (ISO 8601).
123575
+ */
121402
123576
  absoluteExpiresAt: string;
121403
123577
  }
121404
123578
  export interface UsersSessionsImpersonateInput {
@@ -121434,16 +123608,49 @@ export interface UsersSessionsListInput {
121434
123608
  userId: string;
121435
123609
  }
121436
123610
  export interface UsersSessionsListOutput {
123611
+ /**
123612
+ * The sessions matching the filter, newest first.
123613
+ */
121437
123614
  sessions: {
123615
+ /**
123616
+ * Id of this session. Pass it to users_sessions_revoke.
123617
+ */
121438
123618
  id: string;
123619
+ /**
123620
+ * IP the session was opened from. Null when it was not recorded.
123621
+ */
121439
123622
  ip: (string | null);
123623
+ /**
123624
+ * Whether the session is still usable, expired, or revoked.
123625
+ */
121440
123626
  status: ("active" | "revoked");
123627
+ /**
123628
+ * The end user this session belongs to.
123629
+ */
121441
123630
  userId: string;
123631
+ /**
123632
+ * When the session was opened (ISO 8601).
123633
+ */
121442
123634
  createdAt: string;
123635
+ /**
123636
+ * When the current token stops working unless refreshed (ISO 8601).
123637
+ */
121443
123638
  expiresAt: string;
123639
+ /**
123640
+ * When the session was revoked (ISO 8601). Null while it is live.
123641
+ */
121444
123642
  revokedAt: (string | null);
123643
+ /**
123644
+ * User agent the session was opened from. Null when none was sent.
123645
+ */
121445
123646
  userAgent: (string | null);
123647
+ /**
123648
+ * When the session last refreshed its tokens (ISO 8601). Null if it never has.
123649
+ */
121446
123650
  lastRefreshedAt: (string | null);
123651
+ /**
123652
+ * When the session ends no matter how often it refreshes (ISO 8601).
123653
+ */
121447
123654
  absoluteExpiresAt: string;
121448
123655
  }[];
121449
123656
  }
@@ -121458,6 +123665,9 @@ export interface UsersSessionsRevokeInput {
121458
123665
  sessionId?: string;
121459
123666
  }
121460
123667
  export interface UsersSessionsRevokeOutput {
123668
+ /**
123669
+ * How many sessions were revoked. Zero when there was nothing live to revoke.
123670
+ */
121461
123671
  revoked: number;
121462
123672
  }
121463
123673
  export interface UsersStatsGetInput {
@@ -121580,37 +123790,126 @@ export interface UsersUsersBanInput {
121580
123790
  userId: string;
121581
123791
  }
121582
123792
  export interface UsersUsersBanOutput {
123793
+ /**
123794
+ * Id of this end user. Pass it to any users_users_* tool.
123795
+ */
121583
123796
  id: string;
123797
+ /**
123798
+ * The user's display name. Null when nobody set one.
123799
+ */
121584
123800
  name: (string | null);
123801
+ /**
123802
+ * When the user was banned (ISO 8601). Null while they are not banned.
123803
+ */
121585
123804
  bannedAt: (string | null);
123805
+ /**
123806
+ * When this user's personal data was purged for good (ISO 8601). Null while it is intact.
123807
+ */
121586
123808
  erasedAt: (string | null);
123809
+ /**
123810
+ * URL of the user's avatar. Null when there is none.
123811
+ */
121587
123812
  imageUrl: (string | null);
123813
+ /**
123814
+ * Whether this is a test fixture — excluded from metering and from the default listing.
123815
+ */
121588
123816
  testUser: boolean;
123817
+ /**
123818
+ * When the user was created (ISO 8601).
123819
+ */
121589
123820
  createdAt: string;
123821
+ /**
123822
+ * When the user was soft-deleted (ISO 8601). Null while the account is live.
123823
+ */
121590
123824
  deletedAt: (string | null);
123825
+ /**
123826
+ * Product this user belongs to. Never an input — it comes from the calling identity.
123827
+ */
121591
123828
  productId: string;
123829
+ /**
123830
+ * When the user was last changed (ISO 8601).
123831
+ */
121592
123832
  updatedAt: string;
123833
+ /**
123834
+ * Whether this user is still on the waitlist and cannot sign in yet.
123835
+ */
121593
123836
  waitlisted: boolean;
123837
+ /**
123838
+ * Every identifier of this user, the primary one flagged. To bind the primary address itself, use `primaryEmail` — `identifiers.0` means "the first", not "the primary".
123839
+ */
121594
123840
  identifiers: {
123841
+ /**
123842
+ * Id of this identifier row.
123843
+ */
121595
123844
  id: string;
123845
+ /**
123846
+ * What kind of identifier this is. Today always `email`.
123847
+ */
121596
123848
  type: "email";
123849
+ /**
123850
+ * The address as the user typed it, for display.
123851
+ */
121597
123852
  value: string;
123853
+ /**
123854
+ * Whether this is the identifier the user signs in with and is contacted at.
123855
+ */
121598
123856
  isPrimary: boolean;
123857
+ /**
123858
+ * When this address was verified (ISO 8601). Null while it never was.
123859
+ */
121599
123860
  verifiedAt: (string | null);
123861
+ /**
123862
+ * The address lowercased and NFC-normalised — what uniqueness is checked against.
123863
+ */
121600
123864
  valueCanonical: string;
123865
+ /**
123866
+ * `unverified`, `verified`, or `expired` when a verification link ran out before it was used.
123867
+ */
121601
123868
  verificationStatus: ("unverified" | "verified" | "expired");
121602
123869
  }[];
123870
+ /**
123871
+ * When a failed-attempt lockout expires (ISO 8601). Null when the user is not locked out.
123872
+ */
121603
123873
  lockedUntil: (string | null);
123874
+ /**
123875
+ * When the user last signed in (ISO 8601). Null if they never have.
123876
+ */
121604
123877
  lastSignInAt: (string | null);
123878
+ /**
123879
+ * The user's primary email address, as typed. Null when they have no primary identifier. Bind this rather than `identifiers.0.value`.
123880
+ */
123881
+ primaryEmail: (string | null);
123882
+ /**
123883
+ * Whether the user must set a new password at their next sign-in.
123884
+ */
121605
123885
  requiresReset: boolean;
121606
- publicMetadata: UsersUsersBanOutputPublicMetadata;
121607
- unsafeMetadata: UsersUsersBanOutputPublicMetadata;
121608
- privateMetadata: UsersUsersBanOutputPublicMetadata;
123886
+ /**
123887
+ * Metadata the end user may read; the only bag projected into their access token. Capped at 1.2 KB.
123888
+ */
123889
+ publicMetadata: {
123890
+ [k: string]: unknown;
123891
+ };
123892
+ /**
123893
+ * Metadata the end user may write themselves. Treat it as untrusted.
123894
+ */
123895
+ unsafeMetadata: {
123896
+ [k: string]: unknown;
123897
+ };
123898
+ /**
123899
+ * Metadata for the management plane only. Never reaches the end user or a token.
123900
+ */
123901
+ privateMetadata: {
123902
+ [k: string]: unknown;
123903
+ };
123904
+ /**
123905
+ * Id of the primary identifier row. Null when there is no primary identifier.
123906
+ */
123907
+ primaryIdentifierId: (string | null);
123908
+ /**
123909
+ * Until this instant the user may not start another email change, because somebody reverted one (ISO 8601). Null for a user who never reverted one.
123910
+ */
121609
123911
  emailChangeLockedUntil: (string | null);
121610
123912
  }
121611
- export interface UsersUsersBanOutputPublicMetadata {
121612
- [k: string]: unknown;
121613
- }
121614
123913
  export interface UsersUsersCreateInput {
121615
123914
  /**
121616
123915
  * The user's display name.
@@ -121714,37 +124013,126 @@ export interface UsersUsersCreateInputPublicMetadata1 {
121714
124013
  [k: string]: unknown;
121715
124014
  }
121716
124015
  export interface UsersUsersCreateOutput {
124016
+ /**
124017
+ * Id of this end user. Pass it to any users_users_* tool.
124018
+ */
121717
124019
  id: string;
124020
+ /**
124021
+ * The user's display name. Null when nobody set one.
124022
+ */
121718
124023
  name: (string | null);
124024
+ /**
124025
+ * When the user was banned (ISO 8601). Null while they are not banned.
124026
+ */
121719
124027
  bannedAt: (string | null);
124028
+ /**
124029
+ * When this user's personal data was purged for good (ISO 8601). Null while it is intact.
124030
+ */
121720
124031
  erasedAt: (string | null);
124032
+ /**
124033
+ * URL of the user's avatar. Null when there is none.
124034
+ */
121721
124035
  imageUrl: (string | null);
124036
+ /**
124037
+ * Whether this is a test fixture — excluded from metering and from the default listing.
124038
+ */
121722
124039
  testUser: boolean;
124040
+ /**
124041
+ * When the user was created (ISO 8601).
124042
+ */
121723
124043
  createdAt: string;
124044
+ /**
124045
+ * When the user was soft-deleted (ISO 8601). Null while the account is live.
124046
+ */
121724
124047
  deletedAt: (string | null);
124048
+ /**
124049
+ * Product this user belongs to. Never an input — it comes from the calling identity.
124050
+ */
121725
124051
  productId: string;
124052
+ /**
124053
+ * When the user was last changed (ISO 8601).
124054
+ */
121726
124055
  updatedAt: string;
124056
+ /**
124057
+ * Whether this user is still on the waitlist and cannot sign in yet.
124058
+ */
121727
124059
  waitlisted: boolean;
124060
+ /**
124061
+ * Every identifier of this user, the primary one flagged. To bind the primary address itself, use `primaryEmail` — `identifiers.0` means "the first", not "the primary".
124062
+ */
121728
124063
  identifiers: {
124064
+ /**
124065
+ * Id of this identifier row.
124066
+ */
121729
124067
  id: string;
124068
+ /**
124069
+ * What kind of identifier this is. Today always `email`.
124070
+ */
121730
124071
  type: "email";
124072
+ /**
124073
+ * The address as the user typed it, for display.
124074
+ */
121731
124075
  value: string;
124076
+ /**
124077
+ * Whether this is the identifier the user signs in with and is contacted at.
124078
+ */
121732
124079
  isPrimary: boolean;
124080
+ /**
124081
+ * When this address was verified (ISO 8601). Null while it never was.
124082
+ */
121733
124083
  verifiedAt: (string | null);
124084
+ /**
124085
+ * The address lowercased and NFC-normalised — what uniqueness is checked against.
124086
+ */
121734
124087
  valueCanonical: string;
124088
+ /**
124089
+ * `unverified`, `verified`, or `expired` when a verification link ran out before it was used.
124090
+ */
121735
124091
  verificationStatus: ("unverified" | "verified" | "expired");
121736
124092
  }[];
124093
+ /**
124094
+ * When a failed-attempt lockout expires (ISO 8601). Null when the user is not locked out.
124095
+ */
121737
124096
  lockedUntil: (string | null);
124097
+ /**
124098
+ * When the user last signed in (ISO 8601). Null if they never have.
124099
+ */
121738
124100
  lastSignInAt: (string | null);
124101
+ /**
124102
+ * The user's primary email address, as typed. Null when they have no primary identifier. Bind this rather than `identifiers.0.value`.
124103
+ */
124104
+ primaryEmail: (string | null);
124105
+ /**
124106
+ * Whether the user must set a new password at their next sign-in.
124107
+ */
121739
124108
  requiresReset: boolean;
121740
- publicMetadata: UsersUsersCreateOutputPublicMetadata;
121741
- unsafeMetadata: UsersUsersCreateOutputPublicMetadata;
121742
- privateMetadata: UsersUsersCreateOutputPublicMetadata;
124109
+ /**
124110
+ * Metadata the end user may read; the only bag projected into their access token. Capped at 1.2 KB.
124111
+ */
124112
+ publicMetadata: {
124113
+ [k: string]: unknown;
124114
+ };
124115
+ /**
124116
+ * Metadata the end user may write themselves. Treat it as untrusted.
124117
+ */
124118
+ unsafeMetadata: {
124119
+ [k: string]: unknown;
124120
+ };
124121
+ /**
124122
+ * Metadata for the management plane only. Never reaches the end user or a token.
124123
+ */
124124
+ privateMetadata: {
124125
+ [k: string]: unknown;
124126
+ };
124127
+ /**
124128
+ * Id of the primary identifier row. Null when there is no primary identifier.
124129
+ */
124130
+ primaryIdentifierId: (string | null);
124131
+ /**
124132
+ * Until this instant the user may not start another email change, because somebody reverted one (ISO 8601). Null for a user who never reverted one.
124133
+ */
121743
124134
  emailChangeLockedUntil: (string | null);
121744
124135
  }
121745
- export interface UsersUsersCreateOutputPublicMetadata {
121746
- [k: string]: unknown;
121747
- }
121748
124136
  export interface UsersUsersDeleteInput {
121749
124137
  /**
121750
124138
  * The opaque user id returned by users_users_create or _list.
@@ -121752,37 +124140,126 @@ export interface UsersUsersDeleteInput {
121752
124140
  userId: string;
121753
124141
  }
121754
124142
  export interface UsersUsersDeleteOutput {
124143
+ /**
124144
+ * Id of this end user. Pass it to any users_users_* tool.
124145
+ */
121755
124146
  id: string;
124147
+ /**
124148
+ * The user's display name. Null when nobody set one.
124149
+ */
121756
124150
  name: (string | null);
124151
+ /**
124152
+ * When the user was banned (ISO 8601). Null while they are not banned.
124153
+ */
121757
124154
  bannedAt: (string | null);
124155
+ /**
124156
+ * When this user's personal data was purged for good (ISO 8601). Null while it is intact.
124157
+ */
121758
124158
  erasedAt: (string | null);
124159
+ /**
124160
+ * URL of the user's avatar. Null when there is none.
124161
+ */
121759
124162
  imageUrl: (string | null);
124163
+ /**
124164
+ * Whether this is a test fixture — excluded from metering and from the default listing.
124165
+ */
121760
124166
  testUser: boolean;
124167
+ /**
124168
+ * When the user was created (ISO 8601).
124169
+ */
121761
124170
  createdAt: string;
124171
+ /**
124172
+ * When the user was soft-deleted (ISO 8601). Null while the account is live.
124173
+ */
121762
124174
  deletedAt: (string | null);
124175
+ /**
124176
+ * Product this user belongs to. Never an input — it comes from the calling identity.
124177
+ */
121763
124178
  productId: string;
124179
+ /**
124180
+ * When the user was last changed (ISO 8601).
124181
+ */
121764
124182
  updatedAt: string;
124183
+ /**
124184
+ * Whether this user is still on the waitlist and cannot sign in yet.
124185
+ */
121765
124186
  waitlisted: boolean;
124187
+ /**
124188
+ * Every identifier of this user, the primary one flagged. To bind the primary address itself, use `primaryEmail` — `identifiers.0` means "the first", not "the primary".
124189
+ */
121766
124190
  identifiers: {
124191
+ /**
124192
+ * Id of this identifier row.
124193
+ */
121767
124194
  id: string;
124195
+ /**
124196
+ * What kind of identifier this is. Today always `email`.
124197
+ */
121768
124198
  type: "email";
124199
+ /**
124200
+ * The address as the user typed it, for display.
124201
+ */
121769
124202
  value: string;
124203
+ /**
124204
+ * Whether this is the identifier the user signs in with and is contacted at.
124205
+ */
121770
124206
  isPrimary: boolean;
124207
+ /**
124208
+ * When this address was verified (ISO 8601). Null while it never was.
124209
+ */
121771
124210
  verifiedAt: (string | null);
124211
+ /**
124212
+ * The address lowercased and NFC-normalised — what uniqueness is checked against.
124213
+ */
121772
124214
  valueCanonical: string;
124215
+ /**
124216
+ * `unverified`, `verified`, or `expired` when a verification link ran out before it was used.
124217
+ */
121773
124218
  verificationStatus: ("unverified" | "verified" | "expired");
121774
124219
  }[];
124220
+ /**
124221
+ * When a failed-attempt lockout expires (ISO 8601). Null when the user is not locked out.
124222
+ */
121775
124223
  lockedUntil: (string | null);
124224
+ /**
124225
+ * When the user last signed in (ISO 8601). Null if they never have.
124226
+ */
121776
124227
  lastSignInAt: (string | null);
124228
+ /**
124229
+ * The user's primary email address, as typed. Null when they have no primary identifier. Bind this rather than `identifiers.0.value`.
124230
+ */
124231
+ primaryEmail: (string | null);
124232
+ /**
124233
+ * Whether the user must set a new password at their next sign-in.
124234
+ */
121777
124235
  requiresReset: boolean;
121778
- publicMetadata: UsersUsersDeleteOutputPublicMetadata;
121779
- unsafeMetadata: UsersUsersDeleteOutputPublicMetadata;
121780
- privateMetadata: UsersUsersDeleteOutputPublicMetadata;
124236
+ /**
124237
+ * Metadata the end user may read; the only bag projected into their access token. Capped at 1.2 KB.
124238
+ */
124239
+ publicMetadata: {
124240
+ [k: string]: unknown;
124241
+ };
124242
+ /**
124243
+ * Metadata the end user may write themselves. Treat it as untrusted.
124244
+ */
124245
+ unsafeMetadata: {
124246
+ [k: string]: unknown;
124247
+ };
124248
+ /**
124249
+ * Metadata for the management plane only. Never reaches the end user or a token.
124250
+ */
124251
+ privateMetadata: {
124252
+ [k: string]: unknown;
124253
+ };
124254
+ /**
124255
+ * Id of the primary identifier row. Null when there is no primary identifier.
124256
+ */
124257
+ primaryIdentifierId: (string | null);
124258
+ /**
124259
+ * Until this instant the user may not start another email change, because somebody reverted one (ISO 8601). Null for a user who never reverted one.
124260
+ */
121781
124261
  emailChangeLockedUntil: (string | null);
121782
124262
  }
121783
- export interface UsersUsersDeleteOutputPublicMetadata {
121784
- [k: string]: unknown;
121785
- }
121786
124263
  export interface UsersUsersExportInput {
121787
124264
  /**
121788
124265
  * Rows per page, 1-500. Default 100.
@@ -121808,40 +124285,129 @@ export interface UsersUsersExportInput {
121808
124285
  export interface UsersUsersExportOutput {
121809
124286
  count: number;
121810
124287
  users: {
124288
+ /**
124289
+ * Id of this end user. Pass it to any users_users_* tool.
124290
+ */
121811
124291
  id: string;
124292
+ /**
124293
+ * The user's display name. Null when nobody set one.
124294
+ */
121812
124295
  name: (string | null);
124296
+ /**
124297
+ * When the user was banned (ISO 8601). Null while they are not banned.
124298
+ */
121813
124299
  bannedAt: (string | null);
124300
+ /**
124301
+ * When this user's personal data was purged for good (ISO 8601). Null while it is intact.
124302
+ */
121814
124303
  erasedAt: (string | null);
124304
+ /**
124305
+ * URL of the user's avatar. Null when there is none.
124306
+ */
121815
124307
  imageUrl: (string | null);
124308
+ /**
124309
+ * Whether this is a test fixture — excluded from metering and from the default listing.
124310
+ */
121816
124311
  testUser: boolean;
124312
+ /**
124313
+ * When the user was created (ISO 8601).
124314
+ */
121817
124315
  createdAt: string;
124316
+ /**
124317
+ * When the user was soft-deleted (ISO 8601). Null while the account is live.
124318
+ */
121818
124319
  deletedAt: (string | null);
124320
+ /**
124321
+ * Product this user belongs to. Never an input — it comes from the calling identity.
124322
+ */
121819
124323
  productId: string;
124324
+ /**
124325
+ * When the user was last changed (ISO 8601).
124326
+ */
121820
124327
  updatedAt: string;
124328
+ /**
124329
+ * Whether this user is still on the waitlist and cannot sign in yet.
124330
+ */
121821
124331
  waitlisted: boolean;
124332
+ /**
124333
+ * Every identifier of this user, the primary one flagged. To bind the primary address itself, use `primaryEmail` — `identifiers.0` means "the first", not "the primary".
124334
+ */
121822
124335
  identifiers: {
124336
+ /**
124337
+ * Id of this identifier row.
124338
+ */
121823
124339
  id: string;
124340
+ /**
124341
+ * What kind of identifier this is. Today always `email`.
124342
+ */
121824
124343
  type: "email";
124344
+ /**
124345
+ * The address as the user typed it, for display.
124346
+ */
121825
124347
  value: string;
124348
+ /**
124349
+ * Whether this is the identifier the user signs in with and is contacted at.
124350
+ */
121826
124351
  isPrimary: boolean;
124352
+ /**
124353
+ * When this address was verified (ISO 8601). Null while it never was.
124354
+ */
121827
124355
  verifiedAt: (string | null);
124356
+ /**
124357
+ * The address lowercased and NFC-normalised — what uniqueness is checked against.
124358
+ */
121828
124359
  valueCanonical: string;
124360
+ /**
124361
+ * `unverified`, `verified`, or `expired` when a verification link ran out before it was used.
124362
+ */
121829
124363
  verificationStatus: ("unverified" | "verified" | "expired");
121830
124364
  }[];
124365
+ /**
124366
+ * When a failed-attempt lockout expires (ISO 8601). Null when the user is not locked out.
124367
+ */
121831
124368
  lockedUntil: (string | null);
124369
+ /**
124370
+ * When the user last signed in (ISO 8601). Null if they never have.
124371
+ */
121832
124372
  lastSignInAt: (string | null);
124373
+ /**
124374
+ * The user's primary email address, as typed. Null when they have no primary identifier. Bind this rather than `identifiers.0.value`.
124375
+ */
124376
+ primaryEmail: (string | null);
124377
+ /**
124378
+ * Whether the user must set a new password at their next sign-in.
124379
+ */
121833
124380
  requiresReset: boolean;
121834
- publicMetadata: UsersUsersExportOutputPublicMetadata;
121835
- unsafeMetadata: UsersUsersExportOutputPublicMetadata;
121836
- privateMetadata: UsersUsersExportOutputPublicMetadata;
124381
+ /**
124382
+ * Metadata the end user may read; the only bag projected into their access token. Capped at 1.2 KB.
124383
+ */
124384
+ publicMetadata: {
124385
+ [k: string]: unknown;
124386
+ };
124387
+ /**
124388
+ * Metadata the end user may write themselves. Treat it as untrusted.
124389
+ */
124390
+ unsafeMetadata: {
124391
+ [k: string]: unknown;
124392
+ };
124393
+ /**
124394
+ * Metadata for the management plane only. Never reaches the end user or a token.
124395
+ */
124396
+ privateMetadata: {
124397
+ [k: string]: unknown;
124398
+ };
124399
+ /**
124400
+ * Id of the primary identifier row. Null when there is no primary identifier.
124401
+ */
124402
+ primaryIdentifierId: (string | null);
124403
+ /**
124404
+ * Until this instant the user may not start another email change, because somebody reverted one (ISO 8601). Null for a user who never reverted one.
124405
+ */
121837
124406
  emailChangeLockedUntil: (string | null);
121838
124407
  }[];
121839
124408
  exportedAt: string;
121840
124409
  nextCursor: (string | null);
121841
124410
  }
121842
- export interface UsersUsersExportOutputPublicMetadata {
121843
- [k: string]: unknown;
121844
- }
121845
124411
  export interface UsersUsersGetInput {
121846
124412
  /**
121847
124413
  * The opaque user id returned by users_users_create or _list.
@@ -121849,37 +124415,126 @@ export interface UsersUsersGetInput {
121849
124415
  userId: string;
121850
124416
  }
121851
124417
  export interface UsersUsersGetOutput {
124418
+ /**
124419
+ * Id of this end user. Pass it to any users_users_* tool.
124420
+ */
121852
124421
  id: string;
124422
+ /**
124423
+ * The user's display name. Null when nobody set one.
124424
+ */
121853
124425
  name: (string | null);
124426
+ /**
124427
+ * When the user was banned (ISO 8601). Null while they are not banned.
124428
+ */
121854
124429
  bannedAt: (string | null);
124430
+ /**
124431
+ * When this user's personal data was purged for good (ISO 8601). Null while it is intact.
124432
+ */
121855
124433
  erasedAt: (string | null);
124434
+ /**
124435
+ * URL of the user's avatar. Null when there is none.
124436
+ */
121856
124437
  imageUrl: (string | null);
124438
+ /**
124439
+ * Whether this is a test fixture — excluded from metering and from the default listing.
124440
+ */
121857
124441
  testUser: boolean;
124442
+ /**
124443
+ * When the user was created (ISO 8601).
124444
+ */
121858
124445
  createdAt: string;
124446
+ /**
124447
+ * When the user was soft-deleted (ISO 8601). Null while the account is live.
124448
+ */
121859
124449
  deletedAt: (string | null);
124450
+ /**
124451
+ * Product this user belongs to. Never an input — it comes from the calling identity.
124452
+ */
121860
124453
  productId: string;
124454
+ /**
124455
+ * When the user was last changed (ISO 8601).
124456
+ */
121861
124457
  updatedAt: string;
124458
+ /**
124459
+ * Whether this user is still on the waitlist and cannot sign in yet.
124460
+ */
121862
124461
  waitlisted: boolean;
124462
+ /**
124463
+ * Every identifier of this user, the primary one flagged. To bind the primary address itself, use `primaryEmail` — `identifiers.0` means "the first", not "the primary".
124464
+ */
121863
124465
  identifiers: {
124466
+ /**
124467
+ * Id of this identifier row.
124468
+ */
121864
124469
  id: string;
124470
+ /**
124471
+ * What kind of identifier this is. Today always `email`.
124472
+ */
121865
124473
  type: "email";
124474
+ /**
124475
+ * The address as the user typed it, for display.
124476
+ */
121866
124477
  value: string;
124478
+ /**
124479
+ * Whether this is the identifier the user signs in with and is contacted at.
124480
+ */
121867
124481
  isPrimary: boolean;
124482
+ /**
124483
+ * When this address was verified (ISO 8601). Null while it never was.
124484
+ */
121868
124485
  verifiedAt: (string | null);
124486
+ /**
124487
+ * The address lowercased and NFC-normalised — what uniqueness is checked against.
124488
+ */
121869
124489
  valueCanonical: string;
124490
+ /**
124491
+ * `unverified`, `verified`, or `expired` when a verification link ran out before it was used.
124492
+ */
121870
124493
  verificationStatus: ("unverified" | "verified" | "expired");
121871
124494
  }[];
124495
+ /**
124496
+ * When a failed-attempt lockout expires (ISO 8601). Null when the user is not locked out.
124497
+ */
121872
124498
  lockedUntil: (string | null);
124499
+ /**
124500
+ * When the user last signed in (ISO 8601). Null if they never have.
124501
+ */
121873
124502
  lastSignInAt: (string | null);
124503
+ /**
124504
+ * The user's primary email address, as typed. Null when they have no primary identifier. Bind this rather than `identifiers.0.value`.
124505
+ */
124506
+ primaryEmail: (string | null);
124507
+ /**
124508
+ * Whether the user must set a new password at their next sign-in.
124509
+ */
121874
124510
  requiresReset: boolean;
121875
- publicMetadata: UsersUsersGetOutputPublicMetadata;
121876
- unsafeMetadata: UsersUsersGetOutputPublicMetadata;
121877
- privateMetadata: UsersUsersGetOutputPublicMetadata;
124511
+ /**
124512
+ * Metadata the end user may read; the only bag projected into their access token. Capped at 1.2 KB.
124513
+ */
124514
+ publicMetadata: {
124515
+ [k: string]: unknown;
124516
+ };
124517
+ /**
124518
+ * Metadata the end user may write themselves. Treat it as untrusted.
124519
+ */
124520
+ unsafeMetadata: {
124521
+ [k: string]: unknown;
124522
+ };
124523
+ /**
124524
+ * Metadata for the management plane only. Never reaches the end user or a token.
124525
+ */
124526
+ privateMetadata: {
124527
+ [k: string]: unknown;
124528
+ };
124529
+ /**
124530
+ * Id of the primary identifier row. Null when there is no primary identifier.
124531
+ */
124532
+ primaryIdentifierId: (string | null);
124533
+ /**
124534
+ * Until this instant the user may not start another email change, because somebody reverted one (ISO 8601). Null for a user who never reverted one.
124535
+ */
121878
124536
  emailChangeLockedUntil: (string | null);
121879
124537
  }
121880
- export interface UsersUsersGetOutputPublicMetadata {
121881
- [k: string]: unknown;
121882
- }
121883
124538
  export interface UsersUsersImportInput {
121884
124539
  /**
121885
124540
  * The users to import, at most 500 per call — batch client-side beyond that. Each row: identifiers (email), optional profile, optional password HASH, optional flags.
@@ -121890,15 +124545,42 @@ export interface UsersUsersImportInput {
121890
124545
  users: [unknown, ...(unknown)[]];
121891
124546
  }
121892
124547
  export interface UsersUsersImportOutput {
124548
+ /**
124549
+ * How many rows could not be imported at all.
124550
+ */
121893
124551
  failed: number;
124552
+ /**
124553
+ * How many users were created.
124554
+ */
121894
124555
  created: number;
124556
+ /**
124557
+ * One row per submitted row, in the order you sent them.
124558
+ */
121895
124559
  results: {
124560
+ /**
124561
+ * Zero-based index of the row in the `users` array you sent.
124562
+ */
121896
124563
  row: number;
124564
+ /**
124565
+ * Why it was skipped, or what went wrong. Null for a created row.
124566
+ */
121897
124567
  reason: (string | null);
124568
+ /**
124569
+ * What happened to this row.
124570
+ */
121898
124571
  status: ("created" | "skipped" | "failed");
124572
+ /**
124573
+ * The created user's id. Null for skipped and failed rows.
124574
+ */
121899
124575
  userId: (string | null);
121900
124576
  }[];
124577
+ /**
124578
+ * How many rows were passed over — an address already in the directory, typically.
124579
+ */
121901
124580
  skipped: number;
124581
+ /**
124582
+ * How many rows you submitted.
124583
+ */
121902
124584
  requested: number;
121903
124585
  }
121904
124586
  export interface UsersUsersInviteInput {
@@ -121924,9 +124606,21 @@ export interface UsersUsersInviteInput {
121924
124606
  };
121925
124607
  }
121926
124608
  export interface UsersUsersInviteOutput {
124609
+ /**
124610
+ * False when the re-invite cooldown or the mail toolkit refused the send. The invite is still live.
124611
+ */
121927
124612
  mailed: boolean;
124613
+ /**
124614
+ * The invited user, created immediately and listed straight away — they simply cannot sign in until they accept.
124615
+ */
121928
124616
  userId: string;
124617
+ /**
124618
+ * False when this address had already been invited; the same user is returned.
124619
+ */
121929
124620
  created: boolean;
124621
+ /**
124622
+ * When the invite link stops working (ISO 8601).
124623
+ */
121930
124624
  expiresAt: string;
121931
124625
  }
121932
124626
  export interface UsersUsersListInput {
@@ -121960,40 +124654,135 @@ export interface UsersUsersListInput {
121960
124654
  includeWaitlisted?: boolean;
121961
124655
  }
121962
124656
  export interface UsersUsersListOutput {
124657
+ /**
124658
+ * The page of users, newest first.
124659
+ */
121963
124660
  users: {
124661
+ /**
124662
+ * Id of this end user. Pass it to any users_users_* tool.
124663
+ */
121964
124664
  id: string;
124665
+ /**
124666
+ * The user's display name. Null when nobody set one.
124667
+ */
121965
124668
  name: (string | null);
124669
+ /**
124670
+ * When the user was banned (ISO 8601). Null while they are not banned.
124671
+ */
121966
124672
  bannedAt: (string | null);
124673
+ /**
124674
+ * When this user's personal data was purged for good (ISO 8601). Null while it is intact.
124675
+ */
121967
124676
  erasedAt: (string | null);
124677
+ /**
124678
+ * URL of the user's avatar. Null when there is none.
124679
+ */
121968
124680
  imageUrl: (string | null);
124681
+ /**
124682
+ * Whether this is a test fixture — excluded from metering and from the default listing.
124683
+ */
121969
124684
  testUser: boolean;
124685
+ /**
124686
+ * When the user was created (ISO 8601).
124687
+ */
121970
124688
  createdAt: string;
124689
+ /**
124690
+ * When the user was soft-deleted (ISO 8601). Null while the account is live.
124691
+ */
121971
124692
  deletedAt: (string | null);
124693
+ /**
124694
+ * Product this user belongs to. Never an input — it comes from the calling identity.
124695
+ */
121972
124696
  productId: string;
124697
+ /**
124698
+ * When the user was last changed (ISO 8601).
124699
+ */
121973
124700
  updatedAt: string;
124701
+ /**
124702
+ * Whether this user is still on the waitlist and cannot sign in yet.
124703
+ */
121974
124704
  waitlisted: boolean;
124705
+ /**
124706
+ * Every identifier of this user, the primary one flagged. To bind the primary address itself, use `primaryEmail` — `identifiers.0` means "the first", not "the primary".
124707
+ */
121975
124708
  identifiers: {
124709
+ /**
124710
+ * Id of this identifier row.
124711
+ */
121976
124712
  id: string;
124713
+ /**
124714
+ * What kind of identifier this is. Today always `email`.
124715
+ */
121977
124716
  type: "email";
124717
+ /**
124718
+ * The address as the user typed it, for display.
124719
+ */
121978
124720
  value: string;
124721
+ /**
124722
+ * Whether this is the identifier the user signs in with and is contacted at.
124723
+ */
121979
124724
  isPrimary: boolean;
124725
+ /**
124726
+ * When this address was verified (ISO 8601). Null while it never was.
124727
+ */
121980
124728
  verifiedAt: (string | null);
124729
+ /**
124730
+ * The address lowercased and NFC-normalised — what uniqueness is checked against.
124731
+ */
121981
124732
  valueCanonical: string;
124733
+ /**
124734
+ * `unverified`, `verified`, or `expired` when a verification link ran out before it was used.
124735
+ */
121982
124736
  verificationStatus: ("unverified" | "verified" | "expired");
121983
124737
  }[];
124738
+ /**
124739
+ * When a failed-attempt lockout expires (ISO 8601). Null when the user is not locked out.
124740
+ */
121984
124741
  lockedUntil: (string | null);
124742
+ /**
124743
+ * When the user last signed in (ISO 8601). Null if they never have.
124744
+ */
121985
124745
  lastSignInAt: (string | null);
124746
+ /**
124747
+ * The user's primary email address, as typed. Null when they have no primary identifier. Bind this rather than `identifiers.0.value`.
124748
+ */
124749
+ primaryEmail: (string | null);
124750
+ /**
124751
+ * Whether the user must set a new password at their next sign-in.
124752
+ */
121986
124753
  requiresReset: boolean;
121987
- publicMetadata: UsersUsersListOutputPublicMetadata;
121988
- unsafeMetadata: UsersUsersListOutputPublicMetadata;
121989
- privateMetadata: UsersUsersListOutputPublicMetadata;
124754
+ /**
124755
+ * Metadata the end user may read; the only bag projected into their access token. Capped at 1.2 KB.
124756
+ */
124757
+ publicMetadata: {
124758
+ [k: string]: unknown;
124759
+ };
124760
+ /**
124761
+ * Metadata the end user may write themselves. Treat it as untrusted.
124762
+ */
124763
+ unsafeMetadata: {
124764
+ [k: string]: unknown;
124765
+ };
124766
+ /**
124767
+ * Metadata for the management plane only. Never reaches the end user or a token.
124768
+ */
124769
+ privateMetadata: {
124770
+ [k: string]: unknown;
124771
+ };
124772
+ /**
124773
+ * Id of the primary identifier row. Null when there is no primary identifier.
124774
+ */
124775
+ primaryIdentifierId: (string | null);
124776
+ /**
124777
+ * Until this instant the user may not start another email change, because somebody reverted one (ISO 8601). Null for a user who never reverted one.
124778
+ */
121990
124779
  emailChangeLockedUntil: (string | null);
121991
124780
  }[];
124781
+ /**
124782
+ * Pass back as `cursor` to fetch the next page. Null when this page is the last.
124783
+ */
121992
124784
  nextCursor: (string | null);
121993
124785
  }
121994
- export interface UsersUsersListOutputPublicMetadata {
121995
- [k: string]: unknown;
121996
- }
121997
124786
  export interface UsersUsersSetPrimaryIdentifierInput {
121998
124787
  /**
121999
124788
  * The address to make primary. Must not already belong, verified, to another user of this product.
@@ -122009,7 +124798,13 @@ export interface UsersUsersSetPrimaryIdentifierInput {
122009
124798
  userId: string;
122010
124799
  }
122011
124800
  export interface UsersUsersSetPrimaryIdentifierOutput {
124801
+ /**
124802
+ * Id of the scheduled change. It appears in the audit rows and in the abort link mailed to the old address.
124803
+ */
122012
124804
  requestId: string;
124805
+ /**
124806
+ * When the swap becomes applicable, if nobody aborts it first (ISO 8601). The delay is this product's `emailChange.overrideDelayHours`, 72 by default.
124807
+ */
122013
124808
  scheduledFor: string;
122014
124809
  }
122015
124810
  export interface UsersUsersUnbanInput {
@@ -122019,37 +124814,126 @@ export interface UsersUsersUnbanInput {
122019
124814
  userId: string;
122020
124815
  }
122021
124816
  export interface UsersUsersUnbanOutput {
124817
+ /**
124818
+ * Id of this end user. Pass it to any users_users_* tool.
124819
+ */
122022
124820
  id: string;
124821
+ /**
124822
+ * The user's display name. Null when nobody set one.
124823
+ */
122023
124824
  name: (string | null);
124825
+ /**
124826
+ * When the user was banned (ISO 8601). Null while they are not banned.
124827
+ */
122024
124828
  bannedAt: (string | null);
124829
+ /**
124830
+ * When this user's personal data was purged for good (ISO 8601). Null while it is intact.
124831
+ */
122025
124832
  erasedAt: (string | null);
124833
+ /**
124834
+ * URL of the user's avatar. Null when there is none.
124835
+ */
122026
124836
  imageUrl: (string | null);
124837
+ /**
124838
+ * Whether this is a test fixture — excluded from metering and from the default listing.
124839
+ */
122027
124840
  testUser: boolean;
124841
+ /**
124842
+ * When the user was created (ISO 8601).
124843
+ */
122028
124844
  createdAt: string;
124845
+ /**
124846
+ * When the user was soft-deleted (ISO 8601). Null while the account is live.
124847
+ */
122029
124848
  deletedAt: (string | null);
124849
+ /**
124850
+ * Product this user belongs to. Never an input — it comes from the calling identity.
124851
+ */
122030
124852
  productId: string;
124853
+ /**
124854
+ * When the user was last changed (ISO 8601).
124855
+ */
122031
124856
  updatedAt: string;
124857
+ /**
124858
+ * Whether this user is still on the waitlist and cannot sign in yet.
124859
+ */
122032
124860
  waitlisted: boolean;
124861
+ /**
124862
+ * Every identifier of this user, the primary one flagged. To bind the primary address itself, use `primaryEmail` — `identifiers.0` means "the first", not "the primary".
124863
+ */
122033
124864
  identifiers: {
124865
+ /**
124866
+ * Id of this identifier row.
124867
+ */
122034
124868
  id: string;
124869
+ /**
124870
+ * What kind of identifier this is. Today always `email`.
124871
+ */
122035
124872
  type: "email";
124873
+ /**
124874
+ * The address as the user typed it, for display.
124875
+ */
122036
124876
  value: string;
124877
+ /**
124878
+ * Whether this is the identifier the user signs in with and is contacted at.
124879
+ */
122037
124880
  isPrimary: boolean;
124881
+ /**
124882
+ * When this address was verified (ISO 8601). Null while it never was.
124883
+ */
122038
124884
  verifiedAt: (string | null);
124885
+ /**
124886
+ * The address lowercased and NFC-normalised — what uniqueness is checked against.
124887
+ */
122039
124888
  valueCanonical: string;
124889
+ /**
124890
+ * `unverified`, `verified`, or `expired` when a verification link ran out before it was used.
124891
+ */
122040
124892
  verificationStatus: ("unverified" | "verified" | "expired");
122041
124893
  }[];
124894
+ /**
124895
+ * When a failed-attempt lockout expires (ISO 8601). Null when the user is not locked out.
124896
+ */
122042
124897
  lockedUntil: (string | null);
124898
+ /**
124899
+ * When the user last signed in (ISO 8601). Null if they never have.
124900
+ */
122043
124901
  lastSignInAt: (string | null);
124902
+ /**
124903
+ * The user's primary email address, as typed. Null when they have no primary identifier. Bind this rather than `identifiers.0.value`.
124904
+ */
124905
+ primaryEmail: (string | null);
124906
+ /**
124907
+ * Whether the user must set a new password at their next sign-in.
124908
+ */
122044
124909
  requiresReset: boolean;
122045
- publicMetadata: UsersUsersUnbanOutputPublicMetadata;
122046
- unsafeMetadata: UsersUsersUnbanOutputPublicMetadata;
122047
- privateMetadata: UsersUsersUnbanOutputPublicMetadata;
124910
+ /**
124911
+ * Metadata the end user may read; the only bag projected into their access token. Capped at 1.2 KB.
124912
+ */
124913
+ publicMetadata: {
124914
+ [k: string]: unknown;
124915
+ };
124916
+ /**
124917
+ * Metadata the end user may write themselves. Treat it as untrusted.
124918
+ */
124919
+ unsafeMetadata: {
124920
+ [k: string]: unknown;
124921
+ };
124922
+ /**
124923
+ * Metadata for the management plane only. Never reaches the end user or a token.
124924
+ */
124925
+ privateMetadata: {
124926
+ [k: string]: unknown;
124927
+ };
124928
+ /**
124929
+ * Id of the primary identifier row. Null when there is no primary identifier.
124930
+ */
124931
+ primaryIdentifierId: (string | null);
124932
+ /**
124933
+ * Until this instant the user may not start another email change, because somebody reverted one (ISO 8601). Null for a user who never reverted one.
124934
+ */
122048
124935
  emailChangeLockedUntil: (string | null);
122049
124936
  }
122050
- export interface UsersUsersUnbanOutputPublicMetadata {
122051
- [k: string]: unknown;
122052
- }
122053
124937
  export interface UsersUsersUpdateInput {
122054
124938
  /**
122055
124939
  * The user's display name. Pass null to clear.
@@ -122097,37 +124981,126 @@ export interface UsersUsersUpdateInputPublicMetadata1 {
122097
124981
  [k: string]: unknown;
122098
124982
  }
122099
124983
  export interface UsersUsersUpdateOutput {
124984
+ /**
124985
+ * Id of this end user. Pass it to any users_users_* tool.
124986
+ */
122100
124987
  id: string;
124988
+ /**
124989
+ * The user's display name. Null when nobody set one.
124990
+ */
122101
124991
  name: (string | null);
124992
+ /**
124993
+ * When the user was banned (ISO 8601). Null while they are not banned.
124994
+ */
122102
124995
  bannedAt: (string | null);
124996
+ /**
124997
+ * When this user's personal data was purged for good (ISO 8601). Null while it is intact.
124998
+ */
122103
124999
  erasedAt: (string | null);
125000
+ /**
125001
+ * URL of the user's avatar. Null when there is none.
125002
+ */
122104
125003
  imageUrl: (string | null);
125004
+ /**
125005
+ * Whether this is a test fixture — excluded from metering and from the default listing.
125006
+ */
122105
125007
  testUser: boolean;
125008
+ /**
125009
+ * When the user was created (ISO 8601).
125010
+ */
122106
125011
  createdAt: string;
125012
+ /**
125013
+ * When the user was soft-deleted (ISO 8601). Null while the account is live.
125014
+ */
122107
125015
  deletedAt: (string | null);
125016
+ /**
125017
+ * Product this user belongs to. Never an input — it comes from the calling identity.
125018
+ */
122108
125019
  productId: string;
125020
+ /**
125021
+ * When the user was last changed (ISO 8601).
125022
+ */
122109
125023
  updatedAt: string;
125024
+ /**
125025
+ * Whether this user is still on the waitlist and cannot sign in yet.
125026
+ */
122110
125027
  waitlisted: boolean;
125028
+ /**
125029
+ * Every identifier of this user, the primary one flagged. To bind the primary address itself, use `primaryEmail` — `identifiers.0` means "the first", not "the primary".
125030
+ */
122111
125031
  identifiers: {
125032
+ /**
125033
+ * Id of this identifier row.
125034
+ */
122112
125035
  id: string;
125036
+ /**
125037
+ * What kind of identifier this is. Today always `email`.
125038
+ */
122113
125039
  type: "email";
125040
+ /**
125041
+ * The address as the user typed it, for display.
125042
+ */
122114
125043
  value: string;
125044
+ /**
125045
+ * Whether this is the identifier the user signs in with and is contacted at.
125046
+ */
122115
125047
  isPrimary: boolean;
125048
+ /**
125049
+ * When this address was verified (ISO 8601). Null while it never was.
125050
+ */
122116
125051
  verifiedAt: (string | null);
125052
+ /**
125053
+ * The address lowercased and NFC-normalised — what uniqueness is checked against.
125054
+ */
122117
125055
  valueCanonical: string;
125056
+ /**
125057
+ * `unverified`, `verified`, or `expired` when a verification link ran out before it was used.
125058
+ */
122118
125059
  verificationStatus: ("unverified" | "verified" | "expired");
122119
125060
  }[];
125061
+ /**
125062
+ * When a failed-attempt lockout expires (ISO 8601). Null when the user is not locked out.
125063
+ */
122120
125064
  lockedUntil: (string | null);
125065
+ /**
125066
+ * When the user last signed in (ISO 8601). Null if they never have.
125067
+ */
122121
125068
  lastSignInAt: (string | null);
125069
+ /**
125070
+ * The user's primary email address, as typed. Null when they have no primary identifier. Bind this rather than `identifiers.0.value`.
125071
+ */
125072
+ primaryEmail: (string | null);
125073
+ /**
125074
+ * Whether the user must set a new password at their next sign-in.
125075
+ */
122122
125076
  requiresReset: boolean;
122123
- publicMetadata: UsersUsersUpdateOutputPublicMetadata;
122124
- unsafeMetadata: UsersUsersUpdateOutputPublicMetadata;
122125
- privateMetadata: UsersUsersUpdateOutputPublicMetadata;
125077
+ /**
125078
+ * Metadata the end user may read; the only bag projected into their access token. Capped at 1.2 KB.
125079
+ */
125080
+ publicMetadata: {
125081
+ [k: string]: unknown;
125082
+ };
125083
+ /**
125084
+ * Metadata the end user may write themselves. Treat it as untrusted.
125085
+ */
125086
+ unsafeMetadata: {
125087
+ [k: string]: unknown;
125088
+ };
125089
+ /**
125090
+ * Metadata for the management plane only. Never reaches the end user or a token.
125091
+ */
125092
+ privateMetadata: {
125093
+ [k: string]: unknown;
125094
+ };
125095
+ /**
125096
+ * Id of the primary identifier row. Null when there is no primary identifier.
125097
+ */
125098
+ primaryIdentifierId: (string | null);
125099
+ /**
125100
+ * Until this instant the user may not start another email change, because somebody reverted one (ISO 8601). Null for a user who never reverted one.
125101
+ */
122126
125102
  emailChangeLockedUntil: (string | null);
122127
125103
  }
122128
- export interface UsersUsersUpdateOutputPublicMetadata {
122129
- [k: string]: unknown;
122130
- }
122131
125104
  export interface UsersWaitlistFunnelInput {
122132
125105
  }
122133
125106
  export interface UsersWaitlistFunnelOutput {
@@ -122138,6 +125111,62 @@ export interface UsersWaitlistFunnelOutput {
122138
125111
  registered: number;
122139
125112
  unconfirmed: number;
122140
125113
  }
125114
+ export interface UsersWaitlistGetInput {
125115
+ /**
125116
+ * The waitlisted user to read — the `userId` from `users_waitlist_list`.
125117
+ */
125118
+ userId: string;
125119
+ }
125120
+ export interface UsersWaitlistGetOutput {
125121
+ /**
125122
+ * Where in the funnel this entry is: `pending`, `invited`, `registered` or `withdrawn`.
125123
+ */
125124
+ status: ("pending" | "invited" | "registered" | "withdrawn");
125125
+ /**
125126
+ * The waitlisted user. Every users_users_* tool takes this id.
125127
+ */
125128
+ userId: string;
125129
+ /**
125130
+ * When the entry joined the waitlist (ISO 8601).
125131
+ */
125132
+ createdAt: string;
125133
+ /**
125134
+ * When the invite was sent (ISO 8601). Null while the entry is pending.
125135
+ */
125136
+ invitedAt: (string | null);
125137
+ /**
125138
+ * The email address that signed up.
125139
+ */
125140
+ identifier: string;
125141
+ /**
125142
+ * Where the signup came from — the campaign, referrer and landing page recorded at the time.
125143
+ */
125144
+ attribution: {
125145
+ [k: string]: unknown;
125146
+ };
125147
+ /**
125148
+ * When the address confirmed a double opt-in (ISO 8601). Null when it never did.
125149
+ */
125150
+ confirmedAt: (string | null);
125151
+ /**
125152
+ * When the address asked to be taken off the list (ISO 8601). Null when it did not.
125153
+ */
125154
+ withdrawnAt: (string | null);
125155
+ /**
125156
+ * What was recorded to show this address consented: when, from where, and under which wording.
125157
+ */
125158
+ consentProof: {
125159
+ [k: string]: unknown;
125160
+ };
125161
+ /**
125162
+ * When the invitee finished signing up (ISO 8601). Null until they do.
125163
+ */
125164
+ registeredAt: (string | null);
125165
+ /**
125166
+ * Id of the live invite token. Null while the entry has not been invited.
125167
+ */
125168
+ inviteTokenId: (string | null);
125169
+ }
122141
125170
  export interface UsersWaitlistImportInput {
122142
125171
  /**
122143
125172
  * The legacy signups to import, at most 500 per call — batch client-side beyond that.
@@ -122305,15 +125334,42 @@ export interface UsersWaitlistImportInput {
122305
125334
  ];
122306
125335
  }
122307
125336
  export interface UsersWaitlistImportOutput {
125337
+ /**
125338
+ * How many could not be imported at all.
125339
+ */
122308
125340
  failed: number;
125341
+ /**
125342
+ * One row per submitted row, in the order you sent them.
125343
+ */
122309
125344
  results: {
125345
+ /**
125346
+ * Zero-based index of the row in the array you sent.
125347
+ */
122310
125348
  row: number;
125349
+ /**
125350
+ * Why it was skipped, or what went wrong. Null for an imported row.
125351
+ */
122311
125352
  reason: (string | null);
125353
+ /**
125354
+ * What happened to this row.
125355
+ */
122312
125356
  status: ("imported" | "skipped" | "failed");
125357
+ /**
125358
+ * The waitlisted user this row created. Null for skipped and failed rows.
125359
+ */
122313
125360
  userId: (string | null);
122314
125361
  }[];
125362
+ /**
125363
+ * How many were already on the list or otherwise passed over.
125364
+ */
122315
125365
  skipped: number;
125366
+ /**
125367
+ * How many became waitlist entries.
125368
+ */
122316
125369
  imported: number;
125370
+ /**
125371
+ * How many rows you submitted.
125372
+ */
122317
125373
  requested: number;
122318
125374
  }
122319
125375
  export interface UsersWaitlistInviteInput {
@@ -122326,12 +125382,30 @@ export interface UsersWaitlistInviteInput {
122326
125382
  userIds: [string, ...(string)[]];
122327
125383
  }
122328
125384
  export interface UsersWaitlistInviteOutput {
125385
+ /**
125386
+ * How many of the requested users were invited.
125387
+ */
122329
125388
  invited: number;
125389
+ /**
125390
+ * One row per user you asked for, in the order you sent them.
125391
+ */
122330
125392
  results: {
125393
+ /**
125394
+ * Why this user was skipped. Null for an invited row.
125395
+ */
122331
125396
  reason: (("suppressed" | "not_found" | "already_registered") | null);
125397
+ /**
125398
+ * Whether this user was invited or passed over.
125399
+ */
122332
125400
  status: ("invited" | "skipped");
125401
+ /**
125402
+ * The user this row is about.
125403
+ */
122333
125404
  userId: string;
122334
125405
  }[];
125406
+ /**
125407
+ * How many were passed over — see each row's `reason`.
125408
+ */
122335
125409
  skipped: number;
122336
125410
  }
122337
125411
  export interface UsersWaitlistListInput {
@@ -122353,23 +125427,62 @@ export interface UsersWaitlistListInput {
122353
125427
  confirmed?: boolean;
122354
125428
  }
122355
125429
  export interface UsersWaitlistListOutput {
125430
+ /**
125431
+ * The page of waitlist entries, newest first.
125432
+ */
122356
125433
  entries: {
125434
+ /**
125435
+ * Where in the funnel this entry is: `pending`, `invited`, `registered` or `withdrawn`.
125436
+ */
122357
125437
  status: ("pending" | "invited" | "registered" | "withdrawn");
125438
+ /**
125439
+ * The waitlisted user. Every users_users_* tool takes this id.
125440
+ */
122358
125441
  userId: string;
125442
+ /**
125443
+ * When the entry joined the waitlist (ISO 8601).
125444
+ */
122359
125445
  createdAt: string;
125446
+ /**
125447
+ * When the invite was sent (ISO 8601). Null while the entry is pending.
125448
+ */
122360
125449
  invitedAt: (string | null);
125450
+ /**
125451
+ * The email address that signed up.
125452
+ */
122361
125453
  identifier: string;
125454
+ /**
125455
+ * Where the signup came from — the campaign, referrer and landing page recorded at the time.
125456
+ */
122362
125457
  attribution: {
122363
125458
  [k: string]: unknown;
122364
125459
  };
125460
+ /**
125461
+ * When the address confirmed a double opt-in (ISO 8601). Null when it never did.
125462
+ */
122365
125463
  confirmedAt: (string | null);
125464
+ /**
125465
+ * When the address asked to be taken off the list (ISO 8601). Null when it did not.
125466
+ */
122366
125467
  withdrawnAt: (string | null);
125468
+ /**
125469
+ * What was recorded to show this address consented: when, from where, and under which wording.
125470
+ */
122367
125471
  consentProof: {
122368
125472
  [k: string]: unknown;
122369
125473
  };
125474
+ /**
125475
+ * When the invitee finished signing up (ISO 8601). Null until they do.
125476
+ */
122370
125477
  registeredAt: (string | null);
125478
+ /**
125479
+ * Id of the live invite token. Null while the entry has not been invited.
125480
+ */
122371
125481
  inviteTokenId: (string | null);
122372
125482
  }[];
125483
+ /**
125484
+ * Pass back as `cursor` to fetch the next page. Null when this page is the last.
125485
+ */
122373
125486
  nextCursor: (string | null);
122374
125487
  }
122375
125488
  export interface UsersWebhooksCreateInput {
@@ -122508,178 +125621,6 @@ export interface UsersWebhooksUpdateOutput {
122508
125621
  description: (string | null);
122509
125622
  secretPrefix: string;
122510
125623
  }
122511
- export interface WaitlistConfigGetInput {
122512
- }
122513
- export type WaitlistConfigGetOutput = ({
122514
- createdAt: string;
122515
- policyUrl: (string | null);
122516
- productId: string;
122517
- updatedAt: string;
122518
- senderName: (string | null);
122519
- consentText: string;
122520
- policyLabel: (string | null);
122521
- siteBaseUrl: (string | null);
122522
- senderDomain: (string | null);
122523
- inviteSubject: (string | null);
122524
- policyVersion: string;
122525
- inviteTemplate: (string | null);
122526
- } | null);
122527
- export interface WaitlistConfigUpsertInput {
122528
- /**
122529
- * Policy link URL (http/https/mailto). Rendered as a structured link in the form. Null to clear.
122530
- */
122531
- policyUrl?: (string | null);
122532
- /**
122533
- * 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).
122534
- */
122535
- senderName?: (string | null);
122536
- /**
122537
- * Plain-text consent statement shown at signup. May contain a {policy} placeholder marking the policy link. Stored as-is (no HTML sanitization).
122538
- */
122539
- consentText: string;
122540
- /**
122541
- * Visible text for the policy link. Falls back to the URL itself if absent.
122542
- */
122543
- policyLabel?: (string | null);
122544
- /**
122545
- * 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.
122546
- */
122547
- siteBaseUrl?: (string | null);
122548
- /**
122549
- * Sender domain for invite emails (bare hostname). Verification happens at send time, not here. Null to clear.
122550
- */
122551
- senderDomain?: (string | null);
122552
- /**
122553
- * Invite email subject line. Plain text, stored as-is; CR/LF stripped at send time. Null to clear (falls back to a default subject).
122554
- */
122555
- inviteSubject?: (string | null);
122556
- /**
122557
- * Policy version label, controller-owned free string. Stored as-is, not validated for monotonicity.
122558
- */
122559
- policyVersion: string;
122560
- /**
122561
- * Invite email template ({{vars}}). Stored as-is; rendered/validated at send time. Null to clear.
122562
- */
122563
- inviteTemplate?: (string | null);
122564
- }
122565
- export interface WaitlistConfigUpsertOutput {
122566
- createdAt: string;
122567
- policyUrl: (string | null);
122568
- productId: string;
122569
- updatedAt: string;
122570
- senderName: (string | null);
122571
- consentText: string;
122572
- policyLabel: (string | null);
122573
- siteBaseUrl: (string | null);
122574
- senderDomain: (string | null);
122575
- inviteSubject: (string | null);
122576
- policyVersion: string;
122577
- inviteTemplate: (string | null);
122578
- }
122579
- export interface WaitlistEmbedGetInput {
122580
- }
122581
- export interface WaitlistEmbedGetOutput {
122582
- product_id: string;
122583
- script_tag: string;
122584
- public_edge_url: string;
122585
- }
122586
- export interface WaitlistInvitesSendInput {
122587
- /**
122588
- * Resend even when a live invite token already exists (mints a fresh token).
122589
- */
122590
- force?: boolean;
122591
- /**
122592
- * Explicit recipient emails (e.g. from waitlist_signups_list). Combined with filter if both given.
122593
- */
122594
- emails?: string[];
122595
- /**
122596
- * Selection filter over signups; resolved server-side with pagination.
122597
- */
122598
- filter?: {
122599
- /**
122600
- * Prefix match on email (case-insensitive).
122601
- */
122602
- q?: string;
122603
- /**
122604
- * Select signups by status (single value or array).
122605
- */
122606
- status?: (("pending" | "invited" | "registered") | ("pending" | "invited" | "registered")[]);
122607
- };
122608
- }
122609
- export interface WaitlistInvitesSendOutput {
122610
- sent: {
122611
- email: string;
122612
- emailId: string;
122613
- }[];
122614
- failed: {
122615
- email: string;
122616
- reason: ("quota_exceeded" | "reputation_throttled" | "send_failed");
122617
- }[];
122618
- skipped: {
122619
- email: string;
122620
- reason: ("suppressed" | "already_invited" | "already_registered");
122621
- }[];
122622
- }
122623
- export interface WaitlistSignupsEraseInput {
122624
- /**
122625
- * Email address to erase (GDPR Art.17) within the current product. Normalized (trimmed + lowercased) server-side. The operation is idempotent.
122626
- */
122627
- email: string;
122628
- }
122629
- export interface WaitlistSignupsEraseOutput {
122630
- suppressed: boolean;
122631
- deletedTokens: number;
122632
- deletedSignups: number;
122633
- reducedConsents: number;
122634
- }
122635
- export interface WaitlistSignupsFunnelInput {
122636
- /**
122637
- * Time window. "7d"/"30d"/"90d" = trailing N days ending now; "all" = all time. Default "30d".
122638
- */
122639
- period?: ("7d" | "30d" | "90d" | "all");
122640
- }
122641
- export interface WaitlistSignupsFunnelOutput {
122642
- to: string;
122643
- from: (string | null);
122644
- period: string;
122645
- signup: number;
122646
- invited: number;
122647
- registered: number;
122648
- non_monotonic: boolean;
122649
- }
122650
- export interface WaitlistSignupsListInput {
122651
- /**
122652
- * Prefix search on email (case-insensitive). Returns signups whose email starts with this value. Audited as PII access (DP-009).
122653
- */
122654
- q?: string;
122655
- /**
122656
- * Page size, 1–200. Default 50.
122657
- */
122658
- limit?: number;
122659
- /**
122660
- * Sort by created_at. newest = most recent first. Default newest.
122661
- */
122662
- order?: ("newest" | "oldest");
122663
- /**
122664
- * Keyset cursor from a previous response next_cursor. Omit to start from the beginning.
122665
- */
122666
- cursor?: string;
122667
- /**
122668
- * Fields to include per row. Default ["status","created_at"]; id is always included. email and ip_hash are PII and audited when requested.
122669
- */
122670
- fields?: ("status" | "created_at" | "source" | "country" | "email" | "ip_hash")[];
122671
- /**
122672
- * Filter by status. A single value or an array. Omit to return all statuses.
122673
- */
122674
- status?: (("pending" | "invited" | "registered") | ("pending" | "invited" | "registered")[]);
122675
- }
122676
- export interface WaitlistSignupsListOutput {
122677
- items: {
122678
- [k: string]: unknown;
122679
- }[];
122680
- has_more: boolean;
122681
- next_cursor: (string | null);
122682
- }
122683
125624
  export interface WorkflowCapListInput {
122684
125625
  }
122685
125626
  export interface WorkflowCapListOutput {