@lessly/sdk-app 82.0.0 → 83.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.
@@ -74858,38 +74858,65 @@ attachedServiceId: (string | null)
74858
74858
 
74859
74859
  export interface MailApikeyCreateInput {
74860
74860
  /**
74861
- * Human-readable label for the key
74861
+ * Human-readable label for the key, e.g. "production sender"
74862
74862
  */
74863
74863
  name: string
74864
74864
  /**
74865
- * Permission scope: 'full_access' or 'sending_access'
74865
+ * Permission scope: full_access can call every mail tool, sending_access can only send email
74866
74866
  */
74867
74867
  scope: ("full_access" | "sending_access")
74868
74868
  /**
74869
- * Optional Domain id this key is locked to
74869
+ * Lock the key to this sending domain; omit to let it send from any verified domain
74870
74870
  */
74871
74871
  domainId?: string
74872
74872
  }
74873
74873
 
74874
74874
  export interface MailApikeyCreateOutput {
74875
+ /**
74876
+ * API key id; pass it to mail_apikey_delete to revoke the key
74877
+ */
74875
74878
  id: string
74879
+ /**
74880
+ * The full secret. Returned only by this call and never retrievable again — store it now
74881
+ */
74876
74882
  key: string
74883
+ /**
74884
+ * Human-readable label given when the key was issued
74885
+ */
74877
74886
  name: string
74878
- scope: string
74887
+ /**
74888
+ * Permission scope: full_access can call every mail tool, sending_access can only send email
74889
+ */
74890
+ scope: ("full_access" | "sending_access")
74891
+ /**
74892
+ * Opening characters of the secret, so a key can be recognised in a log or a header
74893
+ */
74879
74894
  prefix: string
74895
+ /**
74896
+ * Sending domain this key is locked to; null if it may send from any verified domain
74897
+ */
74880
74898
  domainId: (string | null)
74899
+ /**
74900
+ * When the key was issued (ISO 8601 UTC)
74901
+ */
74881
74902
  createdAt: string
74882
74903
  }
74883
74904
 
74884
74905
  export interface MailApikeyDeleteInput {
74885
74906
  /**
74886
- * UUID of the API key to revoke
74907
+ * Id of the API key to revoke; revocation is immediate and permanent
74887
74908
  */
74888
74909
  id: string
74889
74910
  }
74890
74911
 
74891
74912
  export interface MailApikeyDeleteOutput {
74913
+ /**
74914
+ * Id of the key that was revoked
74915
+ */
74892
74916
  id: string
74917
+ /**
74918
+ * Always true; the call throws rather than reporting a failure here
74919
+ */
74893
74920
  revoked: true
74894
74921
  }
74895
74922
 
@@ -74897,12 +74924,33 @@ export interface MailApikeyListInput {
74897
74924
 
74898
74925
  }
74899
74926
 
74927
+ /**
74928
+ * Active API keys for the current product, secrets omitted
74929
+ */
74900
74930
  export type MailApikeyListOutput = {
74931
+ /**
74932
+ * API key id; pass it to mail_apikey_delete to revoke the key
74933
+ */
74901
74934
  id: string
74935
+ /**
74936
+ * Human-readable label given when the key was issued
74937
+ */
74902
74938
  name: string
74903
- scope: string
74939
+ /**
74940
+ * Permission scope: full_access can call every mail tool, sending_access can only send email
74941
+ */
74942
+ scope: ("full_access" | "sending_access")
74943
+ /**
74944
+ * Opening characters of the secret, so a key can be recognised in a log or a header
74945
+ */
74904
74946
  prefix: string
74947
+ /**
74948
+ * Sending domain this key is locked to; null if it may send from any verified domain
74949
+ */
74905
74950
  domainId: (string | null)
74951
+ /**
74952
+ * When the key was issued (ISO 8601 UTC)
74953
+ */
74906
74954
  createdAt: string
74907
74955
  }[]
74908
74956
 
@@ -74914,9 +74962,21 @@ name: string
74914
74962
  }
74915
74963
 
74916
74964
  export interface MailAudienceCreateOutput {
74965
+ /**
74966
+ * Audience id
74967
+ */
74917
74968
  id: string
74969
+ /**
74970
+ * Human label for the audience
74971
+ */
74918
74972
  name: string
74973
+ /**
74974
+ * When the audience was created (ISO 8601 UTC)
74975
+ */
74919
74976
  createdAt: string
74977
+ /**
74978
+ * When the audience was last modified (ISO 8601 UTC)
74979
+ */
74920
74980
  updatedAt: string
74921
74981
  }
74922
74982
 
@@ -74928,6 +74988,9 @@ id: string
74928
74988
  }
74929
74989
 
74930
74990
  export interface MailAudienceDeleteOutput {
74991
+ /**
74992
+ * True once the audience and its contacts are gone
74993
+ */
74931
74994
  deleted: boolean
74932
74995
  }
74933
74996
 
@@ -74939,9 +75002,21 @@ id: string
74939
75002
  }
74940
75003
 
74941
75004
  export interface MailAudienceGetOutput {
75005
+ /**
75006
+ * Audience id
75007
+ */
74942
75008
  id: string
75009
+ /**
75010
+ * Human label for the audience
75011
+ */
74943
75012
  name: string
75013
+ /**
75014
+ * When the audience was created (ISO 8601 UTC)
75015
+ */
74944
75016
  createdAt: string
75017
+ /**
75018
+ * When the audience was last modified (ISO 8601 UTC)
75019
+ */
74945
75020
  updatedAt: string
74946
75021
  }
74947
75022
 
@@ -74950,9 +75025,21 @@ export interface MailAudienceListInput {
74950
75025
  }
74951
75026
 
74952
75027
  export type MailAudienceListOutput = {
75028
+ /**
75029
+ * Audience id
75030
+ */
74953
75031
  id: string
75032
+ /**
75033
+ * Human label for the audience
75034
+ */
74954
75035
  name: string
75036
+ /**
75037
+ * When the audience was created (ISO 8601 UTC)
75038
+ */
74955
75039
  createdAt: string
75040
+ /**
75041
+ * When the audience was last modified (ISO 8601 UTC)
75042
+ */
74956
75043
  updatedAt: string
74957
75044
  }[]
74958
75045
 
@@ -74968,235 +75055,724 @@ name?: string
74968
75055
  }
74969
75056
 
74970
75057
  export interface MailAudienceUpdateOutput {
75058
+ /**
75059
+ * Audience id
75060
+ */
74971
75061
  id: string
75062
+ /**
75063
+ * Human label for the audience
75064
+ */
74972
75065
  name: string
75066
+ /**
75067
+ * When the audience was created (ISO 8601 UTC)
75068
+ */
74973
75069
  createdAt: string
75070
+ /**
75071
+ * When the audience was last modified (ISO 8601 UTC)
75072
+ */
74974
75073
  updatedAt: string
74975
75074
  }
74976
75075
 
74977
75076
  export interface MailBroadcastCancelInput {
75077
+ /**
75078
+ * Broadcast id
75079
+ */
74978
75080
  id: string
74979
75081
  }
74980
75082
 
74981
75083
  export interface MailBroadcastCancelOutput {
75084
+ /**
75085
+ * Broadcast id
75086
+ */
74982
75087
  id: string
75088
+ /**
75089
+ * Sender the messages are sent as
75090
+ */
74983
75091
  from: string
75092
+ /**
75093
+ * Inline HTML body; null when a template supplies it
75094
+ */
74984
75095
  html: (string | null)
75096
+ /**
75097
+ * Internal label — never shown to recipients
75098
+ */
74985
75099
  name: string
75100
+ /**
75101
+ * Inline plain-text body; null when a template supplies it
75102
+ */
74986
75103
  text: (string | null)
75104
+ /**
75105
+ * When the last message left; null until sending finishes
75106
+ */
74987
75107
  sentAt: (string | null)
74988
- status: string
75108
+ /**
75109
+ * Lifecycle state: draft (editable), queued (fanned out, sending), sent, failed, canceled
75110
+ */
75111
+ status: ("draft" | "queued" | "sent" | "failed" | "canceled")
75112
+ /**
75113
+ * Custom MIME headers added to every message
75114
+ */
74989
75115
  headers: {
74990
75116
  [k: string]: string
74991
75117
  }
75118
+ /**
75119
+ * Reply-To addresses; empty when replies go to `from`
75120
+ */
74992
75121
  replyTo: string[]
75122
+ /**
75123
+ * Subject line for inline content; null when a template supplies it
75124
+ */
74993
75125
  subject: (string | null)
75126
+ /**
75127
+ * When the broadcast was queued; null while it is a draft
75128
+ */
74994
75129
  queuedAt: (string | null)
75130
+ /**
75131
+ * When the broadcast was created
75132
+ */
74995
75133
  createdAt: string
75134
+ /**
75135
+ * Why the broadcast failed; null unless status is failed
75136
+ */
74996
75137
  lastError: (string | null)
75138
+ /**
75139
+ * Product the broadcast belongs to
75140
+ */
74997
75141
  productId: string
75142
+ /**
75143
+ * When the broadcast was last modified
75144
+ */
74998
75145
  updatedAt: string
74999
- variables?: unknown
75146
+ /**
75147
+ * Values passed to the template variables; {} for inline content
75148
+ */
75149
+ variables: ({
75150
+ [k: string]: unknown
75151
+ } | null)
75152
+ /**
75153
+ * Audience whose contacts this broadcast is sent to
75154
+ */
75000
75155
  audienceId: string
75156
+ /**
75157
+ * Template rendered for every recipient; null for inline content
75158
+ */
75001
75159
  templateId: (string | null)
75160
+ /**
75161
+ * Contacts the broadcast fanned out to; 0 while it is still a draft
75162
+ */
75002
75163
  recipientCount: number
75003
75164
  }
75004
75165
 
75005
75166
  export interface MailBroadcastCreateInput {
75167
+ /**
75168
+ * Sender on a verified domain, e.g. "Name <you@your-domain.com>"
75169
+ */
75006
75170
  from: string
75171
+ /**
75172
+ * HTML body. Inline content only — forbidden with a template.
75173
+ */
75007
75174
  html?: string
75175
+ /**
75176
+ * Internal label for the broadcast — never shown to recipients
75177
+ */
75008
75178
  name: string
75179
+ /**
75180
+ * Plain-text body. Inline content only — forbidden with a template.
75181
+ */
75009
75182
  text?: string
75183
+ /**
75184
+ * Custom MIME headers added to every message. Defaults to {}.
75185
+ */
75010
75186
  headers?: {
75011
75187
  [k: string]: string
75012
75188
  }
75189
+ /**
75190
+ * Reply-To addresses. Defaults to [] — replies go to `from`.
75191
+ */
75013
75192
  replyTo?: string[]
75193
+ /**
75194
+ * Subject line, capped at the RFC-5322 line limit. Required with inline content, forbidden with a template.
75195
+ */
75014
75196
  subject?: string
75197
+ /**
75198
+ * Send by reference to a published template instead of inline content
75199
+ */
75015
75200
  template?: {
75201
+ /**
75202
+ * Published template id to render for every recipient
75203
+ */
75016
75204
  id: string
75205
+ /**
75206
+ * Values for the template variables, the same for every recipient. Defaults to {}.
75207
+ */
75017
75208
  variables?: {
75018
75209
  [k: string]: (string | number | boolean)
75019
75210
  }
75020
75211
  }
75212
+ /**
75213
+ * Audience whose subscribed contacts receive this broadcast
75214
+ */
75021
75215
  audienceId: string
75022
75216
  }
75023
75217
 
75024
75218
  export interface MailBroadcastCreateOutput {
75219
+ /**
75220
+ * Broadcast id
75221
+ */
75025
75222
  id: string
75223
+ /**
75224
+ * Sender the messages are sent as
75225
+ */
75026
75226
  from: string
75227
+ /**
75228
+ * Inline HTML body; null when a template supplies it
75229
+ */
75027
75230
  html: (string | null)
75231
+ /**
75232
+ * Internal label — never shown to recipients
75233
+ */
75028
75234
  name: string
75235
+ /**
75236
+ * Inline plain-text body; null when a template supplies it
75237
+ */
75029
75238
  text: (string | null)
75239
+ /**
75240
+ * When the last message left; null until sending finishes
75241
+ */
75030
75242
  sentAt: (string | null)
75031
- status: string
75243
+ /**
75244
+ * Lifecycle state: draft (editable), queued (fanned out, sending), sent, failed, canceled
75245
+ */
75246
+ status: ("draft" | "queued" | "sent" | "failed" | "canceled")
75247
+ /**
75248
+ * Custom MIME headers added to every message
75249
+ */
75032
75250
  headers: {
75033
75251
  [k: string]: string
75034
75252
  }
75253
+ /**
75254
+ * Reply-To addresses; empty when replies go to `from`
75255
+ */
75035
75256
  replyTo: string[]
75257
+ /**
75258
+ * Subject line for inline content; null when a template supplies it
75259
+ */
75036
75260
  subject: (string | null)
75261
+ /**
75262
+ * When the broadcast was queued; null while it is a draft
75263
+ */
75037
75264
  queuedAt: (string | null)
75265
+ /**
75266
+ * When the broadcast was created
75267
+ */
75038
75268
  createdAt: string
75269
+ /**
75270
+ * Why the broadcast failed; null unless status is failed
75271
+ */
75039
75272
  lastError: (string | null)
75273
+ /**
75274
+ * Product the broadcast belongs to
75275
+ */
75040
75276
  productId: string
75277
+ /**
75278
+ * When the broadcast was last modified
75279
+ */
75041
75280
  updatedAt: string
75042
- variables?: unknown
75281
+ /**
75282
+ * Values passed to the template variables; {} for inline content
75283
+ */
75284
+ variables: ({
75285
+ [k: string]: unknown
75286
+ } | null)
75287
+ /**
75288
+ * Audience whose contacts this broadcast is sent to
75289
+ */
75043
75290
  audienceId: string
75291
+ /**
75292
+ * Template rendered for every recipient; null for inline content
75293
+ */
75044
75294
  templateId: (string | null)
75295
+ /**
75296
+ * Contacts the broadcast fanned out to; 0 while it is still a draft
75297
+ */
75045
75298
  recipientCount: number
75046
75299
  }
75047
75300
 
75048
75301
  export interface MailBroadcastDeleteInput {
75302
+ /**
75303
+ * Broadcast id
75304
+ */
75049
75305
  id: string
75050
75306
  }
75051
75307
 
75052
75308
  export interface MailBroadcastDeleteOutput {
75309
+ /**
75310
+ * Id of the deleted broadcast
75311
+ */
75053
75312
  id: string
75313
+ /**
75314
+ * True when the broadcast was removed
75315
+ */
75054
75316
  deleted: boolean
75055
75317
  }
75056
75318
 
75057
75319
  export interface MailBroadcastGetInput {
75320
+ /**
75321
+ * Broadcast id
75322
+ */
75058
75323
  id: string
75059
75324
  }
75060
75325
 
75061
75326
  export interface MailBroadcastGetOutput {
75327
+ /**
75328
+ * Broadcast id
75329
+ */
75062
75330
  id: string
75331
+ /**
75332
+ * Sender the messages are sent as
75333
+ */
75063
75334
  from: string
75335
+ /**
75336
+ * Inline HTML body; null when a template supplies it
75337
+ */
75064
75338
  html: (string | null)
75339
+ /**
75340
+ * Internal label — never shown to recipients
75341
+ */
75065
75342
  name: string
75343
+ /**
75344
+ * Inline plain-text body; null when a template supplies it
75345
+ */
75066
75346
  text: (string | null)
75347
+ /**
75348
+ * When the last message left; null until sending finishes
75349
+ */
75067
75350
  sentAt: (string | null)
75068
- status: string
75351
+ /**
75352
+ * Lifecycle state: draft (editable), queued (fanned out, sending), sent, failed, canceled
75353
+ */
75354
+ status: ("draft" | "queued" | "sent" | "failed" | "canceled")
75355
+ /**
75356
+ * Custom MIME headers added to every message
75357
+ */
75069
75358
  headers: {
75070
75359
  [k: string]: string
75071
75360
  }
75361
+ /**
75362
+ * Reply-To addresses; empty when replies go to `from`
75363
+ */
75072
75364
  replyTo: string[]
75365
+ /**
75366
+ * Subject line for inline content; null when a template supplies it
75367
+ */
75073
75368
  subject: (string | null)
75369
+ /**
75370
+ * When the broadcast was queued; null while it is a draft
75371
+ */
75074
75372
  queuedAt: (string | null)
75373
+ /**
75374
+ * When the broadcast was created
75375
+ */
75075
75376
  createdAt: string
75377
+ /**
75378
+ * Why the broadcast failed; null unless status is failed
75379
+ */
75076
75380
  lastError: (string | null)
75381
+ /**
75382
+ * Product the broadcast belongs to
75383
+ */
75077
75384
  productId: string
75385
+ /**
75386
+ * When the broadcast was last modified
75387
+ */
75078
75388
  updatedAt: string
75079
- variables?: unknown
75389
+ /**
75390
+ * Values passed to the template variables; {} for inline content
75391
+ */
75392
+ variables: ({
75393
+ [k: string]: unknown
75394
+ } | null)
75395
+ /**
75396
+ * Audience whose contacts this broadcast is sent to
75397
+ */
75080
75398
  audienceId: string
75399
+ /**
75400
+ * Template rendered for every recipient; null for inline content
75401
+ */
75081
75402
  templateId: (string | null)
75403
+ /**
75404
+ * Contacts the broadcast fanned out to; 0 while it is still a draft
75405
+ */
75082
75406
  recipientCount: number
75083
75407
  }
75084
75408
 
75085
75409
  export interface MailBroadcastListInput {
75410
+ /**
75411
+ * Page size, 1-100. Defaults to 50.
75412
+ */
75086
75413
  limit?: number
75414
+ /**
75415
+ * Opaque cursor from the previous page’s `nextCursor`. Omit for the first page.
75416
+ */
75087
75417
  cursor?: string
75088
75418
  }
75089
75419
 
75090
75420
  export interface MailBroadcastListOutput {
75421
+ /**
75422
+ * The broadcasts on this page, newest first
75423
+ */
75091
75424
  items: {
75425
+ /**
75426
+ * Broadcast id
75427
+ */
75092
75428
  id: string
75429
+ /**
75430
+ * Sender the messages are sent as
75431
+ */
75093
75432
  from: string
75433
+ /**
75434
+ * Inline HTML body; null when a template supplies it
75435
+ */
75094
75436
  html: (string | null)
75437
+ /**
75438
+ * Internal label — never shown to recipients
75439
+ */
75095
75440
  name: string
75441
+ /**
75442
+ * Inline plain-text body; null when a template supplies it
75443
+ */
75096
75444
  text: (string | null)
75445
+ /**
75446
+ * When the last message left; null until sending finishes
75447
+ */
75097
75448
  sentAt: (string | null)
75098
- status: string
75449
+ /**
75450
+ * Lifecycle state: draft (editable), queued (fanned out, sending), sent, failed, canceled
75451
+ */
75452
+ status: ("draft" | "queued" | "sent" | "failed" | "canceled")
75453
+ /**
75454
+ * Custom MIME headers added to every message
75455
+ */
75099
75456
  headers: {
75100
75457
  [k: string]: string
75101
75458
  }
75459
+ /**
75460
+ * Reply-To addresses; empty when replies go to `from`
75461
+ */
75102
75462
  replyTo: string[]
75463
+ /**
75464
+ * Subject line for inline content; null when a template supplies it
75465
+ */
75103
75466
  subject: (string | null)
75467
+ /**
75468
+ * When the broadcast was queued; null while it is a draft
75469
+ */
75104
75470
  queuedAt: (string | null)
75471
+ /**
75472
+ * When the broadcast was created
75473
+ */
75105
75474
  createdAt: string
75475
+ /**
75476
+ * Why the broadcast failed; null unless status is failed
75477
+ */
75106
75478
  lastError: (string | null)
75479
+ /**
75480
+ * Product the broadcast belongs to
75481
+ */
75107
75482
  productId: string
75483
+ /**
75484
+ * When the broadcast was last modified
75485
+ */
75108
75486
  updatedAt: string
75109
- variables?: unknown
75487
+ /**
75488
+ * Values passed to the template variables; {} for inline content
75489
+ */
75490
+ variables: ({
75491
+ [k: string]: unknown
75492
+ } | null)
75493
+ /**
75494
+ * Audience whose contacts this broadcast is sent to
75495
+ */
75110
75496
  audienceId: string
75497
+ /**
75498
+ * Template rendered for every recipient; null for inline content
75499
+ */
75111
75500
  templateId: (string | null)
75501
+ /**
75502
+ * Contacts the broadcast fanned out to; 0 while it is still a draft
75503
+ */
75112
75504
  recipientCount: number
75113
75505
  }[]
75506
+ /**
75507
+ * Pass as `cursor` for the next page; null on the last page
75508
+ */
75114
75509
  nextCursor: (string | null)
75115
75510
  }
75116
75511
 
75117
75512
  export interface MailBroadcastQueueInput {
75513
+ /**
75514
+ * Broadcast id
75515
+ */
75118
75516
  id: string
75119
75517
  }
75120
75518
 
75121
75519
  export interface MailBroadcastQueueOutput {
75520
+ /**
75521
+ * Broadcast id
75522
+ */
75122
75523
  id: string
75524
+ /**
75525
+ * Sender the messages are sent as
75526
+ */
75123
75527
  from: string
75528
+ /**
75529
+ * Inline HTML body; null when a template supplies it
75530
+ */
75124
75531
  html: (string | null)
75532
+ /**
75533
+ * Internal label — never shown to recipients
75534
+ */
75125
75535
  name: string
75536
+ /**
75537
+ * Inline plain-text body; null when a template supplies it
75538
+ */
75126
75539
  text: (string | null)
75540
+ /**
75541
+ * When the last message left; null until sending finishes
75542
+ */
75127
75543
  sentAt: (string | null)
75128
- status: string
75544
+ /**
75545
+ * Lifecycle state: draft (editable), queued (fanned out, sending), sent, failed, canceled
75546
+ */
75547
+ status: ("draft" | "queued" | "sent" | "failed" | "canceled")
75548
+ /**
75549
+ * Custom MIME headers added to every message
75550
+ */
75129
75551
  headers: {
75130
75552
  [k: string]: string
75131
75553
  }
75554
+ /**
75555
+ * Reply-To addresses; empty when replies go to `from`
75556
+ */
75132
75557
  replyTo: string[]
75558
+ /**
75559
+ * Subject line for inline content; null when a template supplies it
75560
+ */
75133
75561
  subject: (string | null)
75562
+ /**
75563
+ * When the broadcast was queued; null while it is a draft
75564
+ */
75134
75565
  queuedAt: (string | null)
75566
+ /**
75567
+ * When the broadcast was created
75568
+ */
75135
75569
  createdAt: string
75570
+ /**
75571
+ * Why the broadcast failed; null unless status is failed
75572
+ */
75136
75573
  lastError: (string | null)
75574
+ /**
75575
+ * Product the broadcast belongs to
75576
+ */
75137
75577
  productId: string
75578
+ /**
75579
+ * When the broadcast was last modified
75580
+ */
75138
75581
  updatedAt: string
75139
- variables?: unknown
75582
+ /**
75583
+ * Values passed to the template variables; {} for inline content
75584
+ */
75585
+ variables: ({
75586
+ [k: string]: unknown
75587
+ } | null)
75588
+ /**
75589
+ * Audience whose contacts this broadcast is sent to
75590
+ */
75140
75591
  audienceId: string
75592
+ /**
75593
+ * Template rendered for every recipient; null for inline content
75594
+ */
75141
75595
  templateId: (string | null)
75596
+ /**
75597
+ * Contacts the broadcast fanned out to; 0 while it is still a draft
75598
+ */
75142
75599
  recipientCount: number
75143
75600
  }
75144
75601
 
75145
75602
  export interface MailBroadcastStatsInput {
75603
+ /**
75604
+ * Broadcast id
75605
+ */
75146
75606
  id: string
75147
75607
  }
75148
75608
 
75149
75609
  export interface MailBroadcastStatsOutput {
75610
+ /**
75611
+ * Messages that could not be handed to the provider
75612
+ */
75150
75613
  failed: number
75614
+ /**
75615
+ * Messages opened at least once, as seen by the tracking pixel
75616
+ */
75151
75617
  opened: number
75618
+ /**
75619
+ * Messages that bounced, hard or soft
75620
+ */
75152
75621
  bounced: number
75622
+ /**
75623
+ * Messages with at least one tracked link click
75624
+ */
75153
75625
  clicked: number
75626
+ /**
75627
+ * Messages the receiving server accepted
75628
+ */
75154
75629
  delivered: number
75630
+ /**
75631
+ * Contacts the broadcast fanned out to
75632
+ */
75155
75633
  recipients: number
75634
+ /**
75635
+ * Recipients skipped because they are on the suppression list
75636
+ */
75156
75637
  suppressed: number
75157
75638
  }
75158
75639
 
75159
75640
  export interface MailBroadcastUpdateInput {
75641
+ /**
75642
+ * Broadcast id
75643
+ */
75160
75644
  id: string
75645
+ /**
75646
+ * Sender on a verified domain, e.g. "Name <you@your-domain.com>"
75647
+ */
75161
75648
  from?: string
75649
+ /**
75650
+ * HTML body. Inline content only — forbidden with a template.
75651
+ */
75162
75652
  html?: string
75653
+ /**
75654
+ * Internal label for the broadcast — never shown to recipients
75655
+ */
75163
75656
  name?: string
75657
+ /**
75658
+ * Plain-text body. Inline content only — forbidden with a template.
75659
+ */
75164
75660
  text?: string
75661
+ /**
75662
+ * Custom MIME headers added to every message. Defaults to {}.
75663
+ */
75165
75664
  headers?: {
75166
75665
  [k: string]: string
75167
75666
  }
75667
+ /**
75668
+ * Reply-To addresses. Defaults to [] — replies go to `from`.
75669
+ */
75168
75670
  replyTo?: string[]
75671
+ /**
75672
+ * Subject line, capped at the RFC-5322 line limit. Required with inline content, forbidden with a template.
75673
+ */
75169
75674
  subject?: string
75675
+ /**
75676
+ * Send by reference to a published template instead of inline content
75677
+ */
75170
75678
  template?: {
75679
+ /**
75680
+ * Published template id to render for every recipient
75681
+ */
75171
75682
  id: string
75683
+ /**
75684
+ * Values for the template variables, the same for every recipient. Defaults to {}.
75685
+ */
75172
75686
  variables?: {
75173
75687
  [k: string]: (string | number | boolean)
75174
75688
  }
75175
75689
  }
75690
+ /**
75691
+ * Audience whose subscribed contacts receive this broadcast
75692
+ */
75176
75693
  audienceId?: string
75177
75694
  }
75178
75695
 
75179
75696
  export interface MailBroadcastUpdateOutput {
75697
+ /**
75698
+ * Broadcast id
75699
+ */
75180
75700
  id: string
75701
+ /**
75702
+ * Sender the messages are sent as
75703
+ */
75181
75704
  from: string
75705
+ /**
75706
+ * Inline HTML body; null when a template supplies it
75707
+ */
75182
75708
  html: (string | null)
75709
+ /**
75710
+ * Internal label — never shown to recipients
75711
+ */
75183
75712
  name: string
75713
+ /**
75714
+ * Inline plain-text body; null when a template supplies it
75715
+ */
75184
75716
  text: (string | null)
75717
+ /**
75718
+ * When the last message left; null until sending finishes
75719
+ */
75185
75720
  sentAt: (string | null)
75186
- status: string
75721
+ /**
75722
+ * Lifecycle state: draft (editable), queued (fanned out, sending), sent, failed, canceled
75723
+ */
75724
+ status: ("draft" | "queued" | "sent" | "failed" | "canceled")
75725
+ /**
75726
+ * Custom MIME headers added to every message
75727
+ */
75187
75728
  headers: {
75188
75729
  [k: string]: string
75189
75730
  }
75731
+ /**
75732
+ * Reply-To addresses; empty when replies go to `from`
75733
+ */
75190
75734
  replyTo: string[]
75735
+ /**
75736
+ * Subject line for inline content; null when a template supplies it
75737
+ */
75191
75738
  subject: (string | null)
75739
+ /**
75740
+ * When the broadcast was queued; null while it is a draft
75741
+ */
75192
75742
  queuedAt: (string | null)
75743
+ /**
75744
+ * When the broadcast was created
75745
+ */
75193
75746
  createdAt: string
75747
+ /**
75748
+ * Why the broadcast failed; null unless status is failed
75749
+ */
75194
75750
  lastError: (string | null)
75751
+ /**
75752
+ * Product the broadcast belongs to
75753
+ */
75195
75754
  productId: string
75755
+ /**
75756
+ * When the broadcast was last modified
75757
+ */
75196
75758
  updatedAt: string
75197
- variables?: unknown
75759
+ /**
75760
+ * Values passed to the template variables; {} for inline content
75761
+ */
75762
+ variables: ({
75763
+ [k: string]: unknown
75764
+ } | null)
75765
+ /**
75766
+ * Audience whose contacts this broadcast is sent to
75767
+ */
75198
75768
  audienceId: string
75769
+ /**
75770
+ * Template rendered for every recipient; null for inline content
75771
+ */
75199
75772
  templateId: (string | null)
75773
+ /**
75774
+ * Contacts the broadcast fanned out to; 0 while it is still a draft
75775
+ */
75200
75776
  recipientCount: number
75201
75777
  }
75202
75778
 
@@ -75222,12 +75798,30 @@ unsubscribed?: boolean
75222
75798
  }
75223
75799
 
75224
75800
  export interface MailContactCreateOutput {
75801
+ /**
75802
+ * Contact id
75803
+ */
75225
75804
  id: string
75805
+ /**
75806
+ * Contact email address, normalized to lowercase
75807
+ */
75226
75808
  email: string
75809
+ /**
75810
+ * When the contact was created (ISO 8601 UTC)
75811
+ */
75227
75812
  createdAt: string
75813
+ /**
75814
+ * When the contact was last modified (ISO 8601 UTC)
75815
+ */
75228
75816
  updatedAt: string
75817
+ /**
75818
+ * Audience the contact belongs to
75819
+ */
75229
75820
  audienceId: string
75230
75821
  properties?: unknown
75822
+ /**
75823
+ * Marketing opt-out flag for this audience
75824
+ */
75231
75825
  unsubscribed: boolean
75232
75826
  }
75233
75827
 
@@ -75243,6 +75837,9 @@ audience_id: string
75243
75837
  }
75244
75838
 
75245
75839
  export interface MailContactDeleteOutput {
75840
+ /**
75841
+ * True once the contact is gone
75842
+ */
75246
75843
  deleted: boolean
75247
75844
  }
75248
75845
 
@@ -75258,12 +75855,30 @@ audience_id: string
75258
75855
  }
75259
75856
 
75260
75857
  export interface MailContactGetOutput {
75858
+ /**
75859
+ * Contact id
75860
+ */
75261
75861
  id: string
75862
+ /**
75863
+ * Contact email address, normalized to lowercase
75864
+ */
75262
75865
  email: string
75866
+ /**
75867
+ * When the contact was created (ISO 8601 UTC)
75868
+ */
75263
75869
  createdAt: string
75870
+ /**
75871
+ * When the contact was last modified (ISO 8601 UTC)
75872
+ */
75264
75873
  updatedAt: string
75874
+ /**
75875
+ * Audience the contact belongs to
75876
+ */
75265
75877
  audienceId: string
75266
75878
  properties?: unknown
75879
+ /**
75880
+ * Marketing opt-out flag for this audience
75881
+ */
75267
75882
  unsubscribed: boolean
75268
75883
  }
75269
75884
 
@@ -75273,7 +75888,7 @@ export interface MailContactListInput {
75273
75888
  */
75274
75889
  limit?: number
75275
75890
  /**
75276
- * Opaque pagination cursor from a prior page
75891
+ * Opaque pagination cursor from a prior page; omit for the first page
75277
75892
  */
75278
75893
  cursor?: string
75279
75894
  /**
@@ -75287,15 +75902,39 @@ unsubscribed?: (("true" | "false") | boolean)
75287
75902
  }
75288
75903
 
75289
75904
  export interface MailContactListOutput {
75905
+ /**
75906
+ * Contacts on this page, newest first
75907
+ */
75290
75908
  data: {
75909
+ /**
75910
+ * Contact id
75911
+ */
75291
75912
  id: string
75913
+ /**
75914
+ * Contact email address, normalized to lowercase
75915
+ */
75292
75916
  email: string
75917
+ /**
75918
+ * When the contact was created (ISO 8601 UTC)
75919
+ */
75293
75920
  createdAt: string
75921
+ /**
75922
+ * When the contact was last modified (ISO 8601 UTC)
75923
+ */
75294
75924
  updatedAt: string
75925
+ /**
75926
+ * Audience the contact belongs to
75927
+ */
75295
75928
  audienceId: string
75296
75929
  properties?: unknown
75930
+ /**
75931
+ * Marketing opt-out flag for this audience
75932
+ */
75297
75933
  unsubscribed: boolean
75298
75934
  }[]
75935
+ /**
75936
+ * Cursor for the next page; null on the last page
75937
+ */
75299
75938
  nextCursor: (string | null)
75300
75939
  }
75301
75940
 
@@ -75321,12 +75960,30 @@ unsubscribed?: boolean
75321
75960
  }
75322
75961
 
75323
75962
  export interface MailContactUpdateOutput {
75963
+ /**
75964
+ * Contact id
75965
+ */
75324
75966
  id: string
75967
+ /**
75968
+ * Contact email address, normalized to lowercase
75969
+ */
75325
75970
  email: string
75971
+ /**
75972
+ * When the contact was created (ISO 8601 UTC)
75973
+ */
75326
75974
  createdAt: string
75975
+ /**
75976
+ * When the contact was last modified (ISO 8601 UTC)
75977
+ */
75327
75978
  updatedAt: string
75979
+ /**
75980
+ * Audience the contact belongs to
75981
+ */
75328
75982
  audienceId: string
75329
75983
  properties?: unknown
75984
+ /**
75985
+ * Marketing opt-out flag for this audience
75986
+ */
75330
75987
  unsubscribed: boolean
75331
75988
  }
75332
75989
 
@@ -75334,105 +75991,297 @@ export interface MailDomainAllowedListInput {
75334
75991
 
75335
75992
  }
75336
75993
 
75994
+ /**
75995
+ * Apex domains this product may register sending domains under
75996
+ */
75337
75997
  export type MailDomainAllowedListOutput = {
75338
- mode: string
75998
+ /**
75999
+ * Who operates DNS under this apex: managed if the platform publishes the records, external if you do
76000
+ */
76001
+ mode: ("external" | "managed")
76002
+ /**
76003
+ * The apex domain itself, e.g. "example.com"
76004
+ */
75339
76005
  domain: string
76006
+ /**
76007
+ * Governance domain id — pass it to the governance console, not to mail_domain_get
76008
+ */
75340
76009
  domainId: string
76010
+ /**
76011
+ * How many extensions currently send under this apex
76012
+ */
75341
76013
  extensionCount: number
75342
76014
  }[]
75343
76015
 
75344
76016
  export interface MailDomainCreateInput {
75345
76017
  /**
75346
- * The sending domain to register, e.g. "example.com"
76018
+ * The sending domain to register, e.g. "example.com"; it must sit under an apex this product is allowed to use (see mail_domain_allowed_list)
75347
76019
  */
75348
76020
  name: string
75349
76021
  /**
75350
- * AWS region for the SES identity (data residency); immutable after create
76022
+ * AWS region for the SES identity, which fixes data residency (default "eu-north-1"); immutable once the domain is created
75351
76023
  */
75352
76024
  region?: string
75353
76025
  }
75354
76026
 
75355
76027
  export interface MailDomainCreateOutput {
76028
+ /**
76029
+ * Sending domain id
76030
+ */
75356
76031
  id: string
75357
- tls: string
76032
+ /**
76033
+ * TLS policy for delivery: opportunistic falls back to plaintext if the recipient offers no TLS, enforced fails the send instead
76034
+ */
76035
+ tls: ("opportunistic" | "enforced")
76036
+ /**
76037
+ * Governed apex this domain sits under; null if it is not governed
76038
+ */
75358
76039
  apex: (string | null)
75359
- mode: (string | null)
76040
+ /**
76041
+ * Who operates DNS: managed if the platform publishes the records for you, external if you publish them yourself; null if the domain is not governed
76042
+ */
76043
+ mode: (("external" | "managed") | null)
76044
+ /**
76045
+ * The sending domain itself, e.g. "example.com"
76046
+ */
75360
76047
  name: string
76048
+ /**
76049
+ * True only when the domain is verified AND its governance binding is active — the condition for sending from it
76050
+ */
75361
76051
  active: boolean
76052
+ /**
76053
+ * AWS region hosting the SES identity, which fixes data residency; set at create time and immutable
76054
+ */
75362
76055
  region: string
75363
- status: string
76056
+ /**
76057
+ * SES verification state: not_started before the first check, pending while DNS propagates, verified once sending is allowed, failed or temporary_failure when SES could not verify
76058
+ */
76059
+ status: ("not_started" | "pending" | "verified" | "failed" | "temporary_failure")
76060
+ /**
76061
+ * DNS records to publish for this domain, each with its last-seen resolution status
76062
+ */
75364
76063
  records: {
76064
+ /**
76065
+ * Fully-qualified host the record is published at
76066
+ */
75365
76067
  name: string
75366
- type: string
76068
+ /**
76069
+ * DNS record type to publish
76070
+ */
76071
+ type: ("CNAME" | "TXT" | "MX")
76072
+ /**
76073
+ * Value the record must resolve to
76074
+ */
75367
76075
  value: string
75368
- purpose: string
76076
+ /**
76077
+ * What the record is for: dkim signs outgoing mail, spf authorises the sender, return-path-mx routes bounces back, dmarc states the policy
76078
+ */
76079
+ purpose: ("dkim" | "spf" | "return-path-mx" | "dmarc")
76080
+ /**
76081
+ * MX priority; present only on MX records
76082
+ */
75369
76083
  priority?: number
75370
- required: boolean
76084
+ /**
76085
+ * True if the domain cannot verify without this record; false if it is optional
76086
+ */
76087
+ required: boolean
76088
+ /**
76089
+ * True if the record was found in DNS at the last check; absent when no check has run
76090
+ */
75371
76091
  resolved?: boolean
75372
76092
  }[]
76093
+ /**
76094
+ * When the domain was registered (ISO 8601 UTC)
76095
+ */
75373
76096
  createdAt: string
76097
+ /**
76098
+ * When the domain record was last changed (ISO 8601 UTC)
76099
+ */
75374
76100
  updatedAt: string
76101
+ /**
76102
+ * When the domain became verified (ISO 8601 UTC); null while it is not
76103
+ */
75375
76104
  verifiedAt: (string | null)
76105
+ /**
76106
+ * Human-readable steps still outstanding before this domain can send
76107
+ */
75376
76108
  instructions: string[]
76109
+ /**
76110
+ * True if a 1x1 pixel is injected into outgoing mail to record opens
76111
+ */
75377
76112
  openTracking: boolean
75378
- bindingStatus: string
76113
+ /**
76114
+ * Governance binding state: pending while it is being granted, active once the domain may be used, failed if it could not be granted
76115
+ */
76116
+ bindingStatus: ("pending" | "active" | "failed")
76117
+ /**
76118
+ * True if links are rewritten through the tracking host to record clicks
76119
+ */
75379
76120
  clickTracking: boolean
76121
+ /**
76122
+ * Host used as the bounce (Return-Path) address, so bounces come back to this product
76123
+ */
75380
76124
  customReturnPath: string
76125
+ /**
76126
+ * Host serving the click redirect and the open pixel; null if tracking is off
76127
+ */
75381
76128
  trackingSubdomain: (string | null)
76129
+ /**
76130
+ * Id of the governance domain this one is registered under; null if it is not governed
76131
+ */
75382
76132
  governanceDomainId: (string | null)
76133
+ /**
76134
+ * Id of the binding between this product and the governance domain; null if unbound
76135
+ */
75383
76136
  governanceBindingId: (string | null)
76137
+ /**
76138
+ * When verification was first requested (ISO 8601 UTC)
76139
+ */
75384
76140
  verificationStartedAt: string
76141
+ /**
76142
+ * When DNS and SES were last checked (ISO 8601 UTC); null if no check has run yet
76143
+ */
75385
76144
  lastVerificationCheckAt: (string | null)
75386
76145
  }
75387
76146
 
75388
76147
  export interface MailDomainDeleteInput {
75389
76148
  /**
75390
- * Domain id to delete
76149
+ * Sending domain to delete, along with its SES identity
75391
76150
  */
75392
76151
  id: string
75393
76152
  }
75394
76153
 
75395
76154
  export interface MailDomainDeleteOutput {
76155
+ /**
76156
+ * True once the domain and its SES identity are gone
76157
+ */
75396
76158
  deleted: boolean
75397
76159
  }
75398
76160
 
75399
76161
  export interface MailDomainGetInput {
75400
76162
  /**
75401
- * Domain id
76163
+ * Sending domain id
75402
76164
  */
75403
76165
  id: string
75404
76166
  }
75405
76167
 
75406
76168
  export interface MailDomainGetOutput {
76169
+ /**
76170
+ * Sending domain id
76171
+ */
75407
76172
  id: string
75408
- tls: string
76173
+ /**
76174
+ * TLS policy for delivery: opportunistic falls back to plaintext if the recipient offers no TLS, enforced fails the send instead
76175
+ */
76176
+ tls: ("opportunistic" | "enforced")
76177
+ /**
76178
+ * Governed apex this domain sits under; null if it is not governed
76179
+ */
75409
76180
  apex: (string | null)
75410
- mode: (string | null)
76181
+ /**
76182
+ * Who operates DNS: managed if the platform publishes the records for you, external if you publish them yourself; null if the domain is not governed
76183
+ */
76184
+ mode: (("external" | "managed") | null)
76185
+ /**
76186
+ * The sending domain itself, e.g. "example.com"
76187
+ */
75411
76188
  name: string
76189
+ /**
76190
+ * True only when the domain is verified AND its governance binding is active — the condition for sending from it
76191
+ */
75412
76192
  active: boolean
76193
+ /**
76194
+ * AWS region hosting the SES identity, which fixes data residency; set at create time and immutable
76195
+ */
75413
76196
  region: string
75414
- status: string
76197
+ /**
76198
+ * SES verification state: not_started before the first check, pending while DNS propagates, verified once sending is allowed, failed or temporary_failure when SES could not verify
76199
+ */
76200
+ status: ("not_started" | "pending" | "verified" | "failed" | "temporary_failure")
76201
+ /**
76202
+ * DNS records to publish for this domain, each with its last-seen resolution status
76203
+ */
75415
76204
  records: {
76205
+ /**
76206
+ * Fully-qualified host the record is published at
76207
+ */
75416
76208
  name: string
75417
- type: string
76209
+ /**
76210
+ * DNS record type to publish
76211
+ */
76212
+ type: ("CNAME" | "TXT" | "MX")
76213
+ /**
76214
+ * Value the record must resolve to
76215
+ */
75418
76216
  value: string
75419
- purpose: string
76217
+ /**
76218
+ * What the record is for: dkim signs outgoing mail, spf authorises the sender, return-path-mx routes bounces back, dmarc states the policy
76219
+ */
76220
+ purpose: ("dkim" | "spf" | "return-path-mx" | "dmarc")
76221
+ /**
76222
+ * MX priority; present only on MX records
76223
+ */
75420
76224
  priority?: number
76225
+ /**
76226
+ * True if the domain cannot verify without this record; false if it is optional
76227
+ */
75421
76228
  required: boolean
76229
+ /**
76230
+ * True if the record was found in DNS at the last check; absent when no check has run
76231
+ */
75422
76232
  resolved?: boolean
75423
76233
  }[]
76234
+ /**
76235
+ * When the domain was registered (ISO 8601 UTC)
76236
+ */
75424
76237
  createdAt: string
76238
+ /**
76239
+ * When the domain record was last changed (ISO 8601 UTC)
76240
+ */
75425
76241
  updatedAt: string
76242
+ /**
76243
+ * When the domain became verified (ISO 8601 UTC); null while it is not
76244
+ */
75426
76245
  verifiedAt: (string | null)
76246
+ /**
76247
+ * Human-readable steps still outstanding before this domain can send
76248
+ */
75427
76249
  instructions: string[]
76250
+ /**
76251
+ * True if a 1x1 pixel is injected into outgoing mail to record opens
76252
+ */
75428
76253
  openTracking: boolean
75429
- bindingStatus: string
76254
+ /**
76255
+ * Governance binding state: pending while it is being granted, active once the domain may be used, failed if it could not be granted
76256
+ */
76257
+ bindingStatus: ("pending" | "active" | "failed")
76258
+ /**
76259
+ * True if links are rewritten through the tracking host to record clicks
76260
+ */
75430
76261
  clickTracking: boolean
76262
+ /**
76263
+ * Host used as the bounce (Return-Path) address, so bounces come back to this product
76264
+ */
75431
76265
  customReturnPath: string
76266
+ /**
76267
+ * Host serving the click redirect and the open pixel; null if tracking is off
76268
+ */
75432
76269
  trackingSubdomain: (string | null)
76270
+ /**
76271
+ * Id of the governance domain this one is registered under; null if it is not governed
76272
+ */
75433
76273
  governanceDomainId: (string | null)
76274
+ /**
76275
+ * Id of the binding between this product and the governance domain; null if unbound
76276
+ */
75434
76277
  governanceBindingId: (string | null)
76278
+ /**
76279
+ * When verification was first requested (ISO 8601 UTC)
76280
+ */
75435
76281
  verificationStartedAt: string
76282
+ /**
76283
+ * When DNS and SES were last checked (ISO 8601 UTC); null if no check has run yet
76284
+ */
75436
76285
  lastVerificationCheckAt: (string | null)
75437
76286
  }
75438
76287
 
@@ -75440,170 +76289,485 @@ export interface MailDomainListInput {
75440
76289
 
75441
76290
  }
75442
76291
 
76292
+ /**
76293
+ * Sending domains registered for the current product
76294
+ */
75443
76295
  export type MailDomainListOutput = {
76296
+ /**
76297
+ * Sending domain id
76298
+ */
75444
76299
  id: string
75445
- tls: string
76300
+ /**
76301
+ * TLS policy for delivery: opportunistic falls back to plaintext if the recipient offers no TLS, enforced fails the send instead
76302
+ */
76303
+ tls: ("opportunistic" | "enforced")
76304
+ /**
76305
+ * Governed apex this domain sits under; null if it is not governed
76306
+ */
75446
76307
  apex: (string | null)
75447
- mode: (string | null)
76308
+ /**
76309
+ * Who operates DNS: managed if the platform publishes the records for you, external if you publish them yourself; null if the domain is not governed
76310
+ */
76311
+ mode: (("external" | "managed") | null)
76312
+ /**
76313
+ * The sending domain itself, e.g. "example.com"
76314
+ */
75448
76315
  name: string
76316
+ /**
76317
+ * True only when the domain is verified AND its governance binding is active — the condition for sending from it
76318
+ */
75449
76319
  active: boolean
76320
+ /**
76321
+ * AWS region hosting the SES identity, which fixes data residency; set at create time and immutable
76322
+ */
75450
76323
  region: string
75451
- status: string
76324
+ /**
76325
+ * SES verification state: not_started before the first check, pending while DNS propagates, verified once sending is allowed, failed or temporary_failure when SES could not verify
76326
+ */
76327
+ status: ("not_started" | "pending" | "verified" | "failed" | "temporary_failure")
76328
+ /**
76329
+ * DNS records to publish for this domain, each with its last-seen resolution status
76330
+ */
75452
76331
  records: {
76332
+ /**
76333
+ * Fully-qualified host the record is published at
76334
+ */
75453
76335
  name: string
75454
- type: string
76336
+ /**
76337
+ * DNS record type to publish
76338
+ */
76339
+ type: ("CNAME" | "TXT" | "MX")
76340
+ /**
76341
+ * Value the record must resolve to
76342
+ */
75455
76343
  value: string
75456
- purpose: string
76344
+ /**
76345
+ * What the record is for: dkim signs outgoing mail, spf authorises the sender, return-path-mx routes bounces back, dmarc states the policy
76346
+ */
76347
+ purpose: ("dkim" | "spf" | "return-path-mx" | "dmarc")
76348
+ /**
76349
+ * MX priority; present only on MX records
76350
+ */
75457
76351
  priority?: number
76352
+ /**
76353
+ * True if the domain cannot verify without this record; false if it is optional
76354
+ */
75458
76355
  required: boolean
76356
+ /**
76357
+ * True if the record was found in DNS at the last check; absent when no check has run
76358
+ */
75459
76359
  resolved?: boolean
75460
76360
  }[]
76361
+ /**
76362
+ * When the domain was registered (ISO 8601 UTC)
76363
+ */
75461
76364
  createdAt: string
76365
+ /**
76366
+ * When the domain record was last changed (ISO 8601 UTC)
76367
+ */
75462
76368
  updatedAt: string
76369
+ /**
76370
+ * When the domain became verified (ISO 8601 UTC); null while it is not
76371
+ */
75463
76372
  verifiedAt: (string | null)
76373
+ /**
76374
+ * Human-readable steps still outstanding before this domain can send
76375
+ */
75464
76376
  instructions: string[]
76377
+ /**
76378
+ * True if a 1x1 pixel is injected into outgoing mail to record opens
76379
+ */
75465
76380
  openTracking: boolean
75466
- bindingStatus: string
76381
+ /**
76382
+ * Governance binding state: pending while it is being granted, active once the domain may be used, failed if it could not be granted
76383
+ */
76384
+ bindingStatus: ("pending" | "active" | "failed")
76385
+ /**
76386
+ * True if links are rewritten through the tracking host to record clicks
76387
+ */
75467
76388
  clickTracking: boolean
76389
+ /**
76390
+ * Host used as the bounce (Return-Path) address, so bounces come back to this product
76391
+ */
75468
76392
  customReturnPath: string
76393
+ /**
76394
+ * Host serving the click redirect and the open pixel; null if tracking is off
76395
+ */
75469
76396
  trackingSubdomain: (string | null)
76397
+ /**
76398
+ * Id of the governance domain this one is registered under; null if it is not governed
76399
+ */
75470
76400
  governanceDomainId: (string | null)
76401
+ /**
76402
+ * Id of the binding between this product and the governance domain; null if unbound
76403
+ */
75471
76404
  governanceBindingId: (string | null)
76405
+ /**
76406
+ * When verification was first requested (ISO 8601 UTC)
76407
+ */
75472
76408
  verificationStartedAt: string
76409
+ /**
76410
+ * When DNS and SES were last checked (ISO 8601 UTC); null if no check has run yet
76411
+ */
75473
76412
  lastVerificationCheckAt: (string | null)
75474
76413
  }[]
75475
76414
 
75476
76415
  export interface MailDomainUpdateInput {
75477
76416
  /**
75478
- * Domain id
76417
+ * Sending domain id
75479
76418
  */
75480
76419
  id: string
75481
76420
  /**
75482
- * TLS policy: opportunistic (default) or enforced
76421
+ * TLS policy: opportunistic (default) falls back to plaintext, enforced fails the send instead; omit to leave it unchanged
75483
76422
  */
75484
76423
  tls?: ("opportunistic" | "enforced")
75485
76424
  /**
75486
- * Enable open tracking (1×1 pixel); off by default
76425
+ * Record opens by injecting a 1x1 pixel (off by default); omit to leave it unchanged
75487
76426
  */
75488
76427
  openTracking?: boolean
75489
76428
  /**
75490
- * Enable click tracking (link rewrite); off by default
76429
+ * Record clicks by rewriting links through the tracking host (off by default); omit to leave it unchanged
75491
76430
  */
75492
76431
  clickTracking?: boolean
75493
76432
  /**
75494
- * Host used for the click-redirect and open-pixel
76433
+ * Host to serve the click redirect and open pixel from, or null to clear it; omit to leave it unchanged
75495
76434
  */
75496
76435
  trackingSubdomain?: (string | null)
75497
76436
  }
75498
76437
 
75499
76438
  export interface MailDomainUpdateOutput {
76439
+ /**
76440
+ * Sending domain id
76441
+ */
75500
76442
  id: string
75501
- tls: string
76443
+ /**
76444
+ * TLS policy for delivery: opportunistic falls back to plaintext if the recipient offers no TLS, enforced fails the send instead
76445
+ */
76446
+ tls: ("opportunistic" | "enforced")
76447
+ /**
76448
+ * Governed apex this domain sits under; null if it is not governed
76449
+ */
75502
76450
  apex: (string | null)
75503
- mode: (string | null)
76451
+ /**
76452
+ * Who operates DNS: managed if the platform publishes the records for you, external if you publish them yourself; null if the domain is not governed
76453
+ */
76454
+ mode: (("external" | "managed") | null)
76455
+ /**
76456
+ * The sending domain itself, e.g. "example.com"
76457
+ */
75504
76458
  name: string
76459
+ /**
76460
+ * True only when the domain is verified AND its governance binding is active — the condition for sending from it
76461
+ */
75505
76462
  active: boolean
76463
+ /**
76464
+ * AWS region hosting the SES identity, which fixes data residency; set at create time and immutable
76465
+ */
75506
76466
  region: string
75507
- status: string
76467
+ /**
76468
+ * SES verification state: not_started before the first check, pending while DNS propagates, verified once sending is allowed, failed or temporary_failure when SES could not verify
76469
+ */
76470
+ status: ("not_started" | "pending" | "verified" | "failed" | "temporary_failure")
76471
+ /**
76472
+ * DNS records to publish for this domain, each with its last-seen resolution status
76473
+ */
75508
76474
  records: {
76475
+ /**
76476
+ * Fully-qualified host the record is published at
76477
+ */
75509
76478
  name: string
75510
- type: string
76479
+ /**
76480
+ * DNS record type to publish
76481
+ */
76482
+ type: ("CNAME" | "TXT" | "MX")
76483
+ /**
76484
+ * Value the record must resolve to
76485
+ */
75511
76486
  value: string
75512
- purpose: string
76487
+ /**
76488
+ * What the record is for: dkim signs outgoing mail, spf authorises the sender, return-path-mx routes bounces back, dmarc states the policy
76489
+ */
76490
+ purpose: ("dkim" | "spf" | "return-path-mx" | "dmarc")
76491
+ /**
76492
+ * MX priority; present only on MX records
76493
+ */
75513
76494
  priority?: number
76495
+ /**
76496
+ * True if the domain cannot verify without this record; false if it is optional
76497
+ */
75514
76498
  required: boolean
76499
+ /**
76500
+ * True if the record was found in DNS at the last check; absent when no check has run
76501
+ */
75515
76502
  resolved?: boolean
75516
76503
  }[]
76504
+ /**
76505
+ * When the domain was registered (ISO 8601 UTC)
76506
+ */
75517
76507
  createdAt: string
76508
+ /**
76509
+ * When the domain record was last changed (ISO 8601 UTC)
76510
+ */
75518
76511
  updatedAt: string
76512
+ /**
76513
+ * When the domain became verified (ISO 8601 UTC); null while it is not
76514
+ */
75519
76515
  verifiedAt: (string | null)
76516
+ /**
76517
+ * Human-readable steps still outstanding before this domain can send
76518
+ */
75520
76519
  instructions: string[]
76520
+ /**
76521
+ * True if a 1x1 pixel is injected into outgoing mail to record opens
76522
+ */
75521
76523
  openTracking: boolean
75522
- bindingStatus: string
76524
+ /**
76525
+ * Governance binding state: pending while it is being granted, active once the domain may be used, failed if it could not be granted
76526
+ */
76527
+ bindingStatus: ("pending" | "active" | "failed")
76528
+ /**
76529
+ * True if links are rewritten through the tracking host to record clicks
76530
+ */
75523
76531
  clickTracking: boolean
76532
+ /**
76533
+ * Host used as the bounce (Return-Path) address, so bounces come back to this product
76534
+ */
75524
76535
  customReturnPath: string
76536
+ /**
76537
+ * Host serving the click redirect and the open pixel; null if tracking is off
76538
+ */
75525
76539
  trackingSubdomain: (string | null)
76540
+ /**
76541
+ * Id of the governance domain this one is registered under; null if it is not governed
76542
+ */
75526
76543
  governanceDomainId: (string | null)
76544
+ /**
76545
+ * Id of the binding between this product and the governance domain; null if unbound
76546
+ */
75527
76547
  governanceBindingId: (string | null)
76548
+ /**
76549
+ * When verification was first requested (ISO 8601 UTC)
76550
+ */
75528
76551
  verificationStartedAt: string
76552
+ /**
76553
+ * When DNS and SES were last checked (ISO 8601 UTC); null if no check has run yet
76554
+ */
75529
76555
  lastVerificationCheckAt: (string | null)
75530
76556
  }
75531
76557
 
75532
76558
  export interface MailDomainVerifyInput {
75533
76559
  /**
75534
- * Domain id to re-check now
76560
+ * Sending domain to re-check against DNS and SES right now, instead of waiting for the next scheduled check
75535
76561
  */
75536
76562
  id: string
75537
76563
  }
75538
76564
 
75539
76565
  export interface MailDomainVerifyOutput {
76566
+ /**
76567
+ * Sending domain id
76568
+ */
75540
76569
  id: string
75541
- tls: string
76570
+ /**
76571
+ * TLS policy for delivery: opportunistic falls back to plaintext if the recipient offers no TLS, enforced fails the send instead
76572
+ */
76573
+ tls: ("opportunistic" | "enforced")
76574
+ /**
76575
+ * Governed apex this domain sits under; null if it is not governed
76576
+ */
75542
76577
  apex: (string | null)
75543
- mode: (string | null)
76578
+ /**
76579
+ * Who operates DNS: managed if the platform publishes the records for you, external if you publish them yourself; null if the domain is not governed
76580
+ */
76581
+ mode: (("external" | "managed") | null)
76582
+ /**
76583
+ * The sending domain itself, e.g. "example.com"
76584
+ */
75544
76585
  name: string
76586
+ /**
76587
+ * True only when the domain is verified AND its governance binding is active — the condition for sending from it
76588
+ */
75545
76589
  active: boolean
76590
+ /**
76591
+ * AWS region hosting the SES identity, which fixes data residency; set at create time and immutable
76592
+ */
75546
76593
  region: string
75547
- status: string
76594
+ /**
76595
+ * SES verification state: not_started before the first check, pending while DNS propagates, verified once sending is allowed, failed or temporary_failure when SES could not verify
76596
+ */
76597
+ status: ("not_started" | "pending" | "verified" | "failed" | "temporary_failure")
76598
+ /**
76599
+ * DNS records to publish for this domain, each with its last-seen resolution status
76600
+ */
75548
76601
  records: {
76602
+ /**
76603
+ * Fully-qualified host the record is published at
76604
+ */
75549
76605
  name: string
75550
- type: string
76606
+ /**
76607
+ * DNS record type to publish
76608
+ */
76609
+ type: ("CNAME" | "TXT" | "MX")
76610
+ /**
76611
+ * Value the record must resolve to
76612
+ */
75551
76613
  value: string
75552
- purpose: string
76614
+ /**
76615
+ * What the record is for: dkim signs outgoing mail, spf authorises the sender, return-path-mx routes bounces back, dmarc states the policy
76616
+ */
76617
+ purpose: ("dkim" | "spf" | "return-path-mx" | "dmarc")
76618
+ /**
76619
+ * MX priority; present only on MX records
76620
+ */
75553
76621
  priority?: number
76622
+ /**
76623
+ * True if the domain cannot verify without this record; false if it is optional
76624
+ */
75554
76625
  required: boolean
76626
+ /**
76627
+ * True if the record was found in DNS at the last check; absent when no check has run
76628
+ */
75555
76629
  resolved?: boolean
75556
76630
  }[]
76631
+ /**
76632
+ * When the domain was registered (ISO 8601 UTC)
76633
+ */
75557
76634
  createdAt: string
76635
+ /**
76636
+ * When the domain record was last changed (ISO 8601 UTC)
76637
+ */
75558
76638
  updatedAt: string
76639
+ /**
76640
+ * When the domain became verified (ISO 8601 UTC); null while it is not
76641
+ */
75559
76642
  verifiedAt: (string | null)
76643
+ /**
76644
+ * Human-readable steps still outstanding before this domain can send
76645
+ */
75560
76646
  instructions: string[]
76647
+ /**
76648
+ * True if a 1x1 pixel is injected into outgoing mail to record opens
76649
+ */
75561
76650
  openTracking: boolean
75562
- bindingStatus: string
76651
+ /**
76652
+ * Governance binding state: pending while it is being granted, active once the domain may be used, failed if it could not be granted
76653
+ */
76654
+ bindingStatus: ("pending" | "active" | "failed")
76655
+ /**
76656
+ * True if links are rewritten through the tracking host to record clicks
76657
+ */
75563
76658
  clickTracking: boolean
76659
+ /**
76660
+ * Host used as the bounce (Return-Path) address, so bounces come back to this product
76661
+ */
75564
76662
  customReturnPath: string
76663
+ /**
76664
+ * Host serving the click redirect and the open pixel; null if tracking is off
76665
+ */
75565
76666
  trackingSubdomain: (string | null)
76667
+ /**
76668
+ * Id of the governance domain this one is registered under; null if it is not governed
76669
+ */
75566
76670
  governanceDomainId: (string | null)
76671
+ /**
76672
+ * Id of the binding between this product and the governance domain; null if unbound
76673
+ */
75567
76674
  governanceBindingId: (string | null)
76675
+ /**
76676
+ * When verification was first requested (ISO 8601 UTC)
76677
+ */
75568
76678
  verificationStartedAt: string
76679
+ /**
76680
+ * When DNS and SES were last checked (ISO 8601 UTC); null if no check has run yet
76681
+ */
75569
76682
  lastVerificationCheckAt: (string | null)
75570
76683
  }
75571
76684
 
75572
76685
  export interface MailEmailCancelInput {
75573
76686
  /**
75574
- * Email id
76687
+ * Email id — as returned by mail_email_send
75575
76688
  */
75576
76689
  id: string
75577
76690
  }
75578
76691
 
75579
76692
  export interface MailEmailCancelOutput {
76693
+ /**
76694
+ * Id of the canceled email
76695
+ */
75580
76696
  id: string
76697
+ /**
76698
+ * The email’s state after the call — always "canceled"
76699
+ */
75581
76700
  status: "canceled"
75582
76701
  }
75583
76702
 
75584
76703
  export interface MailEmailGetInput {
75585
76704
  /**
75586
- * Email id
76705
+ * Email id — as returned by mail_email_send
75587
76706
  */
75588
76707
  id: string
75589
76708
  }
75590
76709
 
75591
76710
  export interface MailEmailGetOutput {
76711
+ /**
76712
+ * Cc recipients; empty when there were none
76713
+ */
75592
76714
  cc: string[]
76715
+ /**
76716
+ * Email id
76717
+ */
75593
76718
  id: string
76719
+ /**
76720
+ * Primary recipients
76721
+ */
75594
76722
  to: string[]
76723
+ /**
76724
+ * Bcc recipients; empty when there were none. Never appeared in the message headers.
76725
+ */
75595
76726
  bcc: string[]
76727
+ /**
76728
+ * Sender the message was sent as
76729
+ */
75596
76730
  from: string
76731
+ /**
76732
+ * Where the email stands: scheduled, queued, sent, failed, canceled, delivered, bounced, complained, suppressed or blocked
76733
+ */
75597
76734
  status: ("scheduled" | "queued" | "sent" | "failed" | "canceled" | "delivered" | "bounced" | "complained" | "suppressed" | "blocked")
76735
+ /**
76736
+ * Subject line as sent, after any template rendering
76737
+ */
75598
76738
  subject: string
76739
+ /**
76740
+ * ISO-8601 instant the email was accepted
76741
+ */
75599
76742
  created_at: string
76743
+ /**
76744
+ * The latest lifecycle event, the reason `status` reads as it does
76745
+ */
75600
76746
  last_event: {
76747
+ /**
76748
+ * The most recent lifecycle event — `email.` followed by the status it moved to
76749
+ */
75601
76750
  type: ("email.scheduled" | "email.queued" | "email.sent" | "email.failed" | "email.canceled" | "email.delivered" | "email.bounced" | "email.complained" | "email.suppressed" | "email.blocked")
76751
+ /**
76752
+ * ISO-8601 instant of that event; null when no event has been recorded yet
76753
+ */
75602
76754
  created_at: (string | null)
75603
76755
  }
76756
+ /**
76757
+ * Template the email was rendered from; null for an inline send
76758
+ */
75604
76759
  template_id: (string | null)
76760
+ /**
76761
+ * ISO-8601 instant the email is scheduled for; null when it was sent immediately
76762
+ */
75605
76763
  scheduled_at: (string | null)
76764
+ /**
76765
+ * Name of that template; null for an inline send
76766
+ */
75606
76767
  template_name: (string | null)
76768
+ /**
76769
+ * The sending provider’s own id, for correlating with its logs; null until the email leaves
76770
+ */
75607
76771
  provider_message_id: (string | null)
75608
76772
  }
75609
76773
 
@@ -75621,38 +76785,41 @@ to?: (string | string[])
75621
76785
  */
75622
76786
  bcc?: (string | string[])
75623
76787
  /**
75624
- * Sender, e.g. "Name <you@your-domain.com>"
76788
+ * Sender on a verified domain, e.g. "Name <you@your-domain.com>"
75625
76789
  */
75626
76790
  from: string
75627
76791
  /**
75628
- * HTML body
76792
+ * HTML body. Inline sends only — forbidden with a template.
75629
76793
  */
75630
76794
  html?: string
75631
76795
  /**
75632
- * Metadata tags
76796
+ * Metadata tags attached to the message as `X-Tag-<name>` headers
75633
76797
  */
75634
76798
  tags?: {
75635
76799
  /**
75636
- * Tag name
76800
+ * Tag name — printable US-ASCII without a colon; becomes the `X-Tag-<name>` header
75637
76801
  */
75638
76802
  name: string
75639
76803
  /**
75640
- * Tag value
76804
+ * Tag value; must not contain CR or LF
75641
76805
  */
75642
76806
  value: string
75643
76807
  }[]
75644
76808
  /**
75645
- * Plain-text body; auto-derived from html if omitted
76809
+ * Plain-text body; auto-derived from html if omitted. Inline sends only.
75646
76810
  */
75647
76811
  text?: string
75648
76812
  /**
75649
- * Custom headers map
76813
+ * Custom MIME headers, keyed by header name
75650
76814
  */
75651
76815
  headers?: {
76816
+ /**
76817
+ * Header value; must not contain CR or LF
76818
+ */
75652
76819
  [k: string]: string
75653
76820
  }
75654
76821
  /**
75655
- * Email subject (required for inline sends)
76822
+ * Subject line, capped at the RFC-5322 line limit. Required for inline sends, forbidden with a template.
75656
76823
  */
75657
76824
  subject?: string
75658
76825
  /**
@@ -75668,25 +76835,28 @@ template?: {
75668
76835
  */
75669
76836
  id: string
75670
76837
  /**
75671
- * Values for the template variables
76838
+ * Values for the template variables. Defaults to {}.
75672
76839
  */
75673
76840
  variables?: {
75674
76841
  [k: string]: (string | number | boolean)
75675
76842
  }
75676
76843
  }
75677
76844
  /**
75678
- * ISO-8601 instant to send at; future, within 30 days. Omit to send now.
76845
+ * ISO-8601 instant to send at; must be in the future and within 30 days. Omit to send now.
75679
76846
  */
75680
76847
  scheduled_at?: string
75681
76848
  }
75682
76849
 
75683
76850
  export interface MailEmailSendOutput {
76851
+ /**
76852
+ * Id of the accepted email — pass it to mail_email_get to follow delivery
76853
+ */
75684
76854
  id: string
75685
76855
  }
75686
76856
 
75687
76857
  export interface MailEmailSendBatchInput {
75688
76858
  /**
75689
- * Up to 100 emails to send, each shaped like a single send
76859
+ * Up to 100 emails to send; `scheduled_at` is not allowed on a batch item
75690
76860
  */
75691
76861
  emails: {
75692
76862
  /**
@@ -75702,38 +76872,41 @@ to?: (string | string[])
75702
76872
  */
75703
76873
  bcc?: (string | string[])
75704
76874
  /**
75705
- * Sender, e.g. "Name <you@your-domain.com>"
76875
+ * Sender on a verified domain, e.g. "Name <you@your-domain.com>"
75706
76876
  */
75707
76877
  from: string
75708
76878
  /**
75709
- * HTML body
76879
+ * HTML body. Inline sends only — forbidden with a template.
75710
76880
  */
75711
76881
  html?: string
75712
76882
  /**
75713
- * Metadata tags
76883
+ * Metadata tags attached to the message as `X-Tag-<name>` headers
75714
76884
  */
75715
76885
  tags?: {
75716
76886
  /**
75717
- * Tag name
76887
+ * Tag name — printable US-ASCII without a colon; becomes the `X-Tag-<name>` header
75718
76888
  */
75719
76889
  name: string
75720
76890
  /**
75721
- * Tag value
76891
+ * Tag value; must not contain CR or LF
75722
76892
  */
75723
76893
  value: string
75724
76894
  }[]
75725
76895
  /**
75726
- * Plain-text body; auto-derived from html if omitted
76896
+ * Plain-text body; auto-derived from html if omitted. Inline sends only.
75727
76897
  */
75728
76898
  text?: string
75729
76899
  /**
75730
- * Custom headers map
76900
+ * Custom MIME headers, keyed by header name
75731
76901
  */
75732
76902
  headers?: {
76903
+ /**
76904
+ * Header value; must not contain CR or LF
76905
+ */
75733
76906
  [k: string]: string
75734
76907
  }
75735
76908
  /**
75736
- * Email subject (required for inline sends)
76909
+ * Subject line, capped at the RFC-5322 line limit. Required for inline sends, forbidden with a template.
75737
76910
  */
75738
76911
  subject?: string
75739
76912
  /**
@@ -75749,35 +76922,44 @@ template?: {
75749
76922
  */
75750
76923
  id: string
75751
76924
  /**
75752
- * Values for the template variables
76925
+ * Values for the template variables. Defaults to {}.
75753
76926
  */
75754
76927
  variables?: {
75755
76928
  [k: string]: (string | number | boolean)
75756
76929
  }
75757
76930
  }
75758
76931
  /**
75759
- * ISO-8601 instant to send at; future, within 30 days. Omit to send now.
76932
+ * ISO-8601 instant to send at; must be in the future and within 30 days. Omit to send now.
75760
76933
  */
75761
76934
  scheduled_at?: string
75762
76935
  }[]
75763
76936
  }
75764
76937
 
76938
+ /**
76939
+ * One entry per submitted email, in the order they were submitted
76940
+ */
75765
76941
  export type MailEmailSendBatchOutput = {
76942
+ /**
76943
+ * Id of the accepted email
76944
+ */
75766
76945
  id: string
75767
76946
  }[]
75768
76947
 
75769
76948
  export interface MailEmailUpdateInput {
75770
76949
  /**
75771
- * Email id
76950
+ * Email id — as returned by mail_email_send
75772
76951
  */
75773
76952
  id: string
75774
76953
  /**
75775
- * New ISO-8601 instant; future, within 30 days
76954
+ * New ISO-8601 instant to send at; must be in the future and within 30 days
75776
76955
  */
75777
76956
  scheduled_at: string
75778
76957
  }
75779
76958
 
75780
76959
  export interface MailEmailUpdateOutput {
76960
+ /**
76961
+ * Id of the accepted email — pass it to mail_email_get to follow delivery
76962
+ */
75781
76963
  id: string
75782
76964
  }
75783
76965
 
@@ -75786,116 +76968,272 @@ export interface MailReputationGetInput {
75786
76968
  }
75787
76969
 
75788
76970
  export interface MailReputationGetOutput {
76971
+ /**
76972
+ * True when sending is currently throttled because a rate crossed its threshold
76973
+ */
75789
76974
  gated: boolean
76975
+ /**
76976
+ * Emails sent in the window — the denominator of both rates
76977
+ */
75790
76978
  volume: number
76979
+ /**
76980
+ * Spam complaints in the window
76981
+ */
75791
76982
  complaints: number
76983
+ /**
76984
+ * The configured limits the rates above are compared against
76985
+ */
75792
76986
  thresholds: {
76987
+ /**
76988
+ * Emails needed in the window before either rate is acted on — below it the sample is too small to judge
76989
+ */
75793
76990
  min_volume: number
76991
+ /**
76992
+ * Ratio 0-1 at or above which sending is gated
76993
+ */
75794
76994
  complaint_rate: number
76995
+ /**
76996
+ * Ratio 0-1 at or above which sending is gated
76997
+ */
75795
76998
  hard_bounce_rate: number
75796
76999
  }
77000
+ /**
77001
+ * Length in days of the rolling window the rates below are measured over
77002
+ */
75797
77003
  window_days: number
77004
+ /**
77005
+ * Hard bounces in the window
77006
+ */
75798
77007
  hard_bounces: number
77008
+ /**
77009
+ * Complaints divided by volume, as a ratio 0-1 (0.001 = 0.1%)
77010
+ */
75799
77011
  complaint_rate: number
75800
- tripped_metric: (string | null)
77012
+ /**
77013
+ * Which rate crossed its threshold, or null when nothing did
77014
+ */
77015
+ tripped_metric: (("hard_bounce" | "complaint") | null)
77016
+ /**
77017
+ * Hard bounces divided by volume, as a ratio 0-1 (0.05 = 5%)
77018
+ */
75801
77019
  hard_bounce_rate: number
75802
77020
  }
75803
77021
 
75804
77022
  export interface MailStatsGetInput {
77023
+ /**
77024
+ * Rolling window the aggregation covers, ending now. Defaults to 30d.
77025
+ */
75805
77026
  period?: ("7d" | "30d" | "90d")
75806
77027
  }
75807
77028
 
75808
77029
  export interface MailStatsGetOutput {
77030
+ /**
77031
+ * The absolute instants the period resolved to
77032
+ */
75809
77033
  range: {
77034
+ /**
77035
+ * Exclusive end of the window (ISO-8601 instant, UTC)
77036
+ */
75810
77037
  to: string
77038
+ /**
77039
+ * Inclusive start of the window (ISO-8601 instant, UTC)
77040
+ */
75811
77041
  from: string
75812
77042
  }
77043
+ /**
77044
+ * Percent change of each total against the immediately preceding window of the same length
77045
+ */
75813
77046
  deltas: {
77047
+ /**
77048
+ * Change in sent against the previous window of the same length, in percent (-100 = halved to nothing, 25 = a quarter more); null when the previous window was empty
77049
+ */
75814
77050
  sent: (number | null)
77051
+ /**
77052
+ * Change in bounced against the previous window, in percent; null when the previous window was empty
77053
+ */
75815
77054
  bounced: (number | null)
77055
+ /**
77056
+ * Change in delivered against the previous window, in percent; null when the previous window was empty
77057
+ */
75816
77058
  delivered: (number | null)
77059
+ /**
77060
+ * Change in complained against the previous window, in percent; null when the previous window was empty
77061
+ */
75817
77062
  complained: (number | null)
75818
77063
  }
75819
- period: string
77064
+ /**
77065
+ * The window these numbers cover — the echo of the requested period
77066
+ */
77067
+ period: ("7d" | "30d" | "90d")
77068
+ /**
77069
+ * Counts over the window
77070
+ */
75820
77071
  totals: {
77072
+ /**
77073
+ * Emails accepted for delivery in the window
77074
+ */
75821
77075
  sent: number
77076
+ /**
77077
+ * Emails that bounced, hard or soft
77078
+ */
75822
77079
  bounced: number
77080
+ /**
77081
+ * Emails the receiving server accepted
77082
+ */
75823
77083
  delivered: number
77084
+ /**
77085
+ * Emails a recipient marked as spam
77086
+ */
75824
77087
  complained: number
75825
77088
  }
77089
+ /**
77090
+ * One bucket per UTC day in the window, oldest first
77091
+ */
75826
77092
  volume: {
77093
+ /**
77094
+ * The UTC day this bucket covers, as YYYY-MM-DD
77095
+ */
75827
77096
  date: string
77097
+ /**
77098
+ * Emails accepted for delivery on this day
77099
+ */
75828
77100
  sent: number
77101
+ /**
77102
+ * Emails bounced on this day
77103
+ */
75829
77104
  bounced: number
77105
+ /**
77106
+ * Emails delivered on this day
77107
+ */
75830
77108
  delivered: number
75831
77109
  }[]
77110
+ /**
77111
+ * The three rates senders are judged on, as percentages of sent
77112
+ */
75832
77113
  deliverability: {
77114
+ /**
77115
+ * Bounced as a percentage of sent (0-100)
77116
+ */
75833
77117
  bouncedPct: number
77118
+ /**
77119
+ * Delivered as a percentage of sent (0-100)
77120
+ */
75834
77121
  deliveredPct: number
77122
+ /**
77123
+ * Complaints as a percentage of sent (0-100)
77124
+ */
75835
77125
  complainedPct: number
75836
77126
  }
75837
77127
  }
75838
77128
 
75839
77129
  export interface MailSuppressionAddInput {
75840
77130
  /**
75841
- * Optional free-text note
77131
+ * Optional free-text note explaining why the address was suppressed
75842
77132
  */
75843
77133
  note?: string
75844
77134
  /**
75845
- * Email address to suppress
77135
+ * Email address to suppress, e.g. "user@example.com"; matched case-insensitively
75846
77136
  */
75847
77137
  address: string
75848
77138
  }
75849
77139
 
75850
77140
  export interface MailSuppressionAddOutput {
77141
+ /**
77142
+ * Suppression entry id
77143
+ */
75851
77144
  id: string
77145
+ /**
77146
+ * Free-text note recorded when the entry was added by hand; null otherwise
77147
+ */
75852
77148
  note: (string | null)
75853
- reason: string
77149
+ /**
77150
+ * Why the address is suppressed: hard_bounce and complaint come from SES feedback, unsubscribe from the recipient, manual from mail_suppression_add
77151
+ */
77152
+ reason: ("hard_bounce" | "complaint" | "manual" | "unsubscribe")
77153
+ /**
77154
+ * The suppressed recipient address, lowercased and trimmed
77155
+ */
75854
77156
  address: string
77157
+ /**
77158
+ * When the address was suppressed (ISO 8601 UTC)
77159
+ */
75855
77160
  created_at: string
77161
+ /**
77162
+ * Id of the email event that caused the suppression; null for a manual entry
77163
+ */
75856
77164
  source_event_id: (string | null)
75857
77165
  }
75858
77166
 
75859
77167
  export interface MailSuppressionListInput {
75860
77168
  /**
75861
- * Case-insensitive substring match on address
77169
+ * Case-insensitive substring match on the address; omit for no address filter
75862
77170
  */
75863
77171
  q?: string
75864
77172
  /**
75865
- * Max items per page (1–100, default 50)
77173
+ * Max entries per page, 1-100 (default 50)
75866
77174
  */
75867
77175
  limit?: number
75868
77176
  /**
75869
- * Opaque pagination cursor from a prior page
77177
+ * Opaque pagination cursor from a prior page's next_cursor; omit for the first page
75870
77178
  */
75871
77179
  cursor?: string
75872
77180
  /**
75873
- * Filter by reason
77181
+ * Only return entries suppressed for this reason; omit for every reason
75874
77182
  */
75875
77183
  reason?: ("hard_bounce" | "complaint" | "manual" | "unsubscribe")
75876
77184
  }
75877
77185
 
75878
77186
  export interface MailSuppressionListOutput {
77187
+ /**
77188
+ * This page of suppression entries, newest first
77189
+ */
75879
77190
  items: {
77191
+ /**
77192
+ * Suppression entry id
77193
+ */
75880
77194
  id: string
77195
+ /**
77196
+ * Free-text note recorded when the entry was added by hand; null otherwise
77197
+ */
75881
77198
  note: (string | null)
75882
- reason: string
77199
+ /**
77200
+ * Why the address is suppressed: hard_bounce and complaint come from SES feedback, unsubscribe from the recipient, manual from mail_suppression_add
77201
+ */
77202
+ reason: ("hard_bounce" | "complaint" | "manual" | "unsubscribe")
77203
+ /**
77204
+ * The suppressed recipient address, lowercased and trimmed
77205
+ */
75883
77206
  address: string
77207
+ /**
77208
+ * When the address was suppressed (ISO 8601 UTC)
77209
+ */
75884
77210
  created_at: string
77211
+ /**
77212
+ * Id of the email event that caused the suppression; null for a manual entry
77213
+ */
75885
77214
  source_event_id: (string | null)
75886
77215
  }[]
77216
+ /**
77217
+ * Opaque cursor to pass back as `cursor` for the next page; null on the last page
77218
+ */
75887
77219
  next_cursor: (string | null)
75888
77220
  }
75889
77221
 
75890
77222
  export interface MailSuppressionRemoveInput {
75891
77223
  /**
75892
- * Email address to remove from the suppression list
77224
+ * Email address to remove from the suppression list; matched case-insensitively
75893
77225
  */
75894
77226
  address: string
75895
77227
  }
75896
77228
 
75897
77229
  export interface MailSuppressionRemoveOutput {
77230
+ /**
77231
+ * The address the removal was attempted for, as normalized
77232
+ */
75898
77233
  address: string
77234
+ /**
77235
+ * True if an entry was removed; false if the address was not suppressed (the call is idempotent)
77236
+ */
75899
77237
  removed: boolean
75900
77238
  }
75901
77239
 
@@ -79495,18 +80833,57 @@ optional?: boolean
79495
80833
  }
79496
80834
 
79497
80835
  export interface MailTemplateCreateOutput {
80836
+ /**
80837
+ * Template id
80838
+ */
79498
80839
  id: string
80840
+ /**
80841
+ * HTML body; may contain {{ variable }} placeholders
80842
+ */
79499
80843
  html: string
80844
+ /**
80845
+ * Human label for the template
80846
+ */
79500
80847
  name: string
80848
+ /**
80849
+ * Plaintext body; null when none was supplied
80850
+ */
79501
80851
  text: (string | null)
79502
- status: string
80852
+ /**
80853
+ * Lifecycle status: a draft is editable, a published template is not
80854
+ */
80855
+ status: ("draft" | "published")
80856
+ /**
80857
+ * Email subject; may contain {{ variable }} placeholders
80858
+ */
79503
80859
  subject: string
80860
+ /**
80861
+ * When the template was created (ISO 8601 UTC)
80862
+ */
79504
80863
  createdAt: string
80864
+ /**
80865
+ * When the template was last modified (ISO 8601 UTC)
80866
+ */
79505
80867
  updatedAt: string
80868
+ /**
80869
+ * Declared variables of this template (at most 20)
80870
+ */
79506
80871
  variables: {
80872
+ /**
80873
+ * Placeholder identifier used as {{ name }}
80874
+ */
79507
80875
  name: string
79508
- type: string
80876
+ /**
80877
+ * Declared type (metadata; rendered as string in v1)
80878
+ */
80879
+ type: ("string" | "number" | "boolean")
80880
+ /**
80881
+ * Value used when none is supplied
80882
+ */
79509
80883
  fallback?: string
80884
+ /**
80885
+ * If true, an absent value renders as empty string
80886
+ */
79510
80887
  optional: boolean
79511
80888
  }[]
79512
80889
  }
@@ -79519,6 +80896,9 @@ id: string
79519
80896
  }
79520
80897
 
79521
80898
  export interface MailTemplateDeleteOutput {
80899
+ /**
80900
+ * True once the template is gone
80901
+ */
79522
80902
  deleted: boolean
79523
80903
  }
79524
80904
 
@@ -79530,22 +80910,70 @@ id: string
79530
80910
  }
79531
80911
 
79532
80912
  export interface MailTemplateGetOutput {
80913
+ /**
80914
+ * Template id
80915
+ */
79533
80916
  id: string
80917
+ /**
80918
+ * HTML body; may contain {{ variable }} placeholders
80919
+ */
79534
80920
  html: string
80921
+ /**
80922
+ * Human label for the template
80923
+ */
79535
80924
  name: string
80925
+ /**
80926
+ * Plaintext body; null when none was supplied
80927
+ */
79536
80928
  text: (string | null)
80929
+ /**
80930
+ * Send-usage rollup for this template
80931
+ */
79537
80932
  usage: {
80933
+ /**
80934
+ * How many emails were sent from this template
80935
+ */
79538
80936
  email_count: number
80937
+ /**
80938
+ * When the template was last sent from (ISO 8601 UTC); null if never
80939
+ */
79539
80940
  last_sent_at: (string | null)
79540
80941
  }
79541
- status: string
80942
+ /**
80943
+ * Lifecycle status: a draft is editable, a published template is not
80944
+ */
80945
+ status: ("draft" | "published")
80946
+ /**
80947
+ * Email subject; may contain {{ variable }} placeholders
80948
+ */
79542
80949
  subject: string
80950
+ /**
80951
+ * When the template was created (ISO 8601 UTC)
80952
+ */
79543
80953
  createdAt: string
80954
+ /**
80955
+ * When the template was last modified (ISO 8601 UTC)
80956
+ */
79544
80957
  updatedAt: string
80958
+ /**
80959
+ * Declared variables of this template (at most 20)
80960
+ */
79545
80961
  variables: {
80962
+ /**
80963
+ * Placeholder identifier used as {{ name }}
80964
+ */
79546
80965
  name: string
79547
- type: string
80966
+ /**
80967
+ * Declared type (metadata; rendered as string in v1)
80968
+ */
80969
+ type: ("string" | "number" | "boolean")
80970
+ /**
80971
+ * Value used when none is supplied
80972
+ */
79548
80973
  fallback?: string
80974
+ /**
80975
+ * If true, an absent value renders as empty string
80976
+ */
79549
80977
  optional: boolean
79550
80978
  }[]
79551
80979
  }
@@ -79555,18 +80983,57 @@ export interface MailTemplateListInput {
79555
80983
  }
79556
80984
 
79557
80985
  export type MailTemplateListOutput = {
80986
+ /**
80987
+ * Template id
80988
+ */
79558
80989
  id: string
80990
+ /**
80991
+ * HTML body; may contain {{ variable }} placeholders
80992
+ */
79559
80993
  html: string
80994
+ /**
80995
+ * Human label for the template
80996
+ */
79560
80997
  name: string
80998
+ /**
80999
+ * Plaintext body; null when none was supplied
81000
+ */
79561
81001
  text: (string | null)
79562
- status: string
81002
+ /**
81003
+ * Lifecycle status: a draft is editable, a published template is not
81004
+ */
81005
+ status: ("draft" | "published")
81006
+ /**
81007
+ * Email subject; may contain {{ variable }} placeholders
81008
+ */
79563
81009
  subject: string
81010
+ /**
81011
+ * When the template was created (ISO 8601 UTC)
81012
+ */
79564
81013
  createdAt: string
81014
+ /**
81015
+ * When the template was last modified (ISO 8601 UTC)
81016
+ */
79565
81017
  updatedAt: string
81018
+ /**
81019
+ * Declared variables of this template (at most 20)
81020
+ */
79566
81021
  variables: {
81022
+ /**
81023
+ * Placeholder identifier used as {{ name }}
81024
+ */
79567
81025
  name: string
79568
- type: string
81026
+ /**
81027
+ * Declared type (metadata; rendered as string in v1)
81028
+ */
81029
+ type: ("string" | "number" | "boolean")
81030
+ /**
81031
+ * Value used when none is supplied
81032
+ */
79569
81033
  fallback?: string
81034
+ /**
81035
+ * If true, an absent value renders as empty string
81036
+ */
79570
81037
  optional: boolean
79571
81038
  }[]
79572
81039
  }[]
@@ -79579,18 +81046,57 @@ id: string
79579
81046
  }
79580
81047
 
79581
81048
  export interface MailTemplatePublishOutput {
81049
+ /**
81050
+ * Template id
81051
+ */
79582
81052
  id: string
81053
+ /**
81054
+ * HTML body; may contain {{ variable }} placeholders
81055
+ */
79583
81056
  html: string
81057
+ /**
81058
+ * Human label for the template
81059
+ */
79584
81060
  name: string
81061
+ /**
81062
+ * Plaintext body; null when none was supplied
81063
+ */
79585
81064
  text: (string | null)
79586
- status: string
81065
+ /**
81066
+ * Lifecycle status: a draft is editable, a published template is not
81067
+ */
81068
+ status: ("draft" | "published")
81069
+ /**
81070
+ * Email subject; may contain {{ variable }} placeholders
81071
+ */
79587
81072
  subject: string
81073
+ /**
81074
+ * When the template was created (ISO 8601 UTC)
81075
+ */
79588
81076
  createdAt: string
81077
+ /**
81078
+ * When the template was last modified (ISO 8601 UTC)
81079
+ */
79589
81080
  updatedAt: string
81081
+ /**
81082
+ * Declared variables of this template (at most 20)
81083
+ */
79590
81084
  variables: {
81085
+ /**
81086
+ * Placeholder identifier used as {{ name }}
81087
+ */
79591
81088
  name: string
79592
- type: string
81089
+ /**
81090
+ * Declared type (metadata; rendered as string in v1)
81091
+ */
81092
+ type: ("string" | "number" | "boolean")
81093
+ /**
81094
+ * Value used when none is supplied
81095
+ */
79593
81096
  fallback?: string
81097
+ /**
81098
+ * If true, an absent value renders as empty string
81099
+ */
79594
81100
  optional: boolean
79595
81101
  }[]
79596
81102
  }
@@ -79600,11 +81106,25 @@ export interface MailTemplateUpdateInput {
79600
81106
  * Template id
79601
81107
  */
79602
81108
  id: string
81109
+ /**
81110
+ * New HTML body; unchanged when omitted
81111
+ */
79603
81112
  html?: string
81113
+ /**
81114
+ * New human label; unchanged when omitted
81115
+ */
79604
81116
  name?: string
81117
+ /**
81118
+ * New plaintext body; null clears it and it is re-derived from html. Unchanged when omitted
81119
+ */
79605
81120
  text?: (string | null)
81121
+ /**
81122
+ * New email subject; may contain {{ variable }} placeholders. Unchanged when omitted
81123
+ */
79606
81124
  subject?: string
79607
81125
  /**
81126
+ * Replacement list of declared variables ([{name,type,optional,fallback}], <=20). Unchanged when omitted
81127
+ *
79608
81128
  * @maxItems 20
79609
81129
  */
79610
81130
  variables?: []|[{
@@ -83181,18 +84701,57 @@ optional?: boolean
83181
84701
  }
83182
84702
 
83183
84703
  export interface MailTemplateUpdateOutput {
84704
+ /**
84705
+ * Template id
84706
+ */
83184
84707
  id: string
84708
+ /**
84709
+ * HTML body; may contain {{ variable }} placeholders
84710
+ */
83185
84711
  html: string
84712
+ /**
84713
+ * Human label for the template
84714
+ */
83186
84715
  name: string
84716
+ /**
84717
+ * Plaintext body; null when none was supplied
84718
+ */
83187
84719
  text: (string | null)
83188
- status: string
84720
+ /**
84721
+ * Lifecycle status: a draft is editable, a published template is not
84722
+ */
84723
+ status: ("draft" | "published")
84724
+ /**
84725
+ * Email subject; may contain {{ variable }} placeholders
84726
+ */
83189
84727
  subject: string
84728
+ /**
84729
+ * When the template was created (ISO 8601 UTC)
84730
+ */
83190
84731
  createdAt: string
84732
+ /**
84733
+ * When the template was last modified (ISO 8601 UTC)
84734
+ */
83191
84735
  updatedAt: string
84736
+ /**
84737
+ * Declared variables of this template (at most 20)
84738
+ */
83192
84739
  variables: {
84740
+ /**
84741
+ * Placeholder identifier used as {{ name }}
84742
+ */
83193
84743
  name: string
83194
- type: string
84744
+ /**
84745
+ * Declared type (metadata; rendered as string in v1)
84746
+ */
84747
+ type: ("string" | "number" | "boolean")
84748
+ /**
84749
+ * Value used when none is supplied
84750
+ */
83195
84751
  fallback?: string
84752
+ /**
84753
+ * If true, an absent value renders as empty string
84754
+ */
83196
84755
  optional: boolean
83197
84756
  }[]
83198
84757
  }
@@ -83202,37 +84761,88 @@ export interface MailUsageGetInput {
83202
84761
  }
83203
84762
 
83204
84763
  export interface MailUsageGetOutput {
84764
+ /**
84765
+ * Email sending usage against the free-tier limits
84766
+ */
83205
84767
  emails: {
83206
- day: MailUsageGetOutputDay
83207
- month: MailUsageGetOutputDay
84768
+ /**
84769
+ * Sending allowance today (UTC)
84770
+ */
84771
+ day: {
84772
+ /**
84773
+ * Emails accepted for delivery so far today (UTC)
84774
+ */
84775
+ used: number
84776
+ /**
84777
+ * Free-tier allowance today (UTC)
84778
+ */
84779
+ limit: number
84780
+ /**
84781
+ * Allowance left today (UTC) — limit minus used, never below zero
84782
+ */
84783
+ remaining: number
84784
+ }
84785
+ /**
84786
+ * Sending allowance this month (UTC)
84787
+ */
84788
+ month: {
84789
+ /**
84790
+ * Emails accepted for delivery so far this month (UTC)
84791
+ */
84792
+ used: number
84793
+ /**
84794
+ * Free-tier allowance this month (UTC)
84795
+ */
84796
+ limit: number
84797
+ /**
84798
+ * Allowance left this month (UTC) — limit minus used, never below zero
84799
+ */
84800
+ remaining: number
84801
+ }
84802
+ /**
84803
+ * True when a further send would be refused right now because a limit or the hard cap is reached
84804
+ */
83208
84805
  blocked: boolean
84806
+ /**
84807
+ * Monthly ceiling that cannot be exceeded even with an allowance left elsewhere
84808
+ */
83209
84809
  hard_cap: number
83210
84810
  }
84811
+ /**
84812
+ * The two windows the counters below are scoped to
84813
+ */
83211
84814
  period: {
84815
+ /**
84816
+ * The UTC day the daily counters cover, as YYYY-MM-DD
84817
+ */
83212
84818
  day: string
84819
+ /**
84820
+ * The UTC month the monthly counters cover, as YYYY-MM
84821
+ */
83213
84822
  month: string
83214
84823
  }
84824
+ /**
84825
+ * Point-in-time contact storage — a stock, not a per-period flow
84826
+ */
83215
84827
  contacts: {
84828
+ /**
84829
+ * Contacts stored for the product at this instant
84830
+ */
83216
84831
  count: number
83217
84832
  }
83218
84833
  }
83219
- export interface MailUsageGetOutputDay {
83220
- used: number
83221
- limit: number
83222
- remaining: number
83223
- }
83224
84834
 
83225
84835
  export interface MailWebhookCreateInput {
83226
84836
  /**
83227
- * HTTPS URL that signed events are POSTed to
84837
+ * HTTPS URL that signed events are POSTed to; plain http is rejected
83228
84838
  */
83229
84839
  url: string
83230
84840
  /**
83231
- * Optional human label
84841
+ * Optional human label for the endpoint, e.g. "billing service"
83232
84842
  */
83233
84843
  description?: string
83234
84844
  /**
83235
- * Event types to deliver. One or more of: email.delivered, email.bounced, email.complained, email.suppressed, email.opened, email.clicked
84845
+ * Event types to deliver; at least one. One or more of: email.delivered, email.bounced, email.complained, email.suppressed, email.opened, email.clicked
83236
84846
  *
83237
84847
  * @minItems 1
83238
84848
  */
@@ -83240,50 +84850,116 @@ enabled_events: [("email.delivered" | "email.bounced" | "email.complained" | "em
83240
84850
  }
83241
84851
 
83242
84852
  export interface MailWebhookCreateOutput {
84853
+ /**
84854
+ * Webhook endpoint id
84855
+ */
83243
84856
  id: string
84857
+ /**
84858
+ * HTTPS URL that signed events are POSTed to
84859
+ */
83244
84860
  url: string
84861
+ /**
84862
+ * Signing secret for verifying the delivery signature. Returned only when the endpoint is created and never retrievable again — store it now
84863
+ */
83245
84864
  secret: string
84865
+ /**
84866
+ * False if delivery is switched off — the endpoint is kept but nothing is sent to it
84867
+ */
83246
84868
  enabled: boolean
84869
+ /**
84870
+ * When the endpoint was registered (ISO 8601 UTC)
84871
+ */
83247
84872
  created_at: string
84873
+ /**
84874
+ * When the endpoint was last changed (ISO 8601 UTC)
84875
+ */
83248
84876
  updated_at: string
84877
+ /**
84878
+ * Human label for the endpoint; null if none was given
84879
+ */
83249
84880
  description: (string | null)
83250
- enabled_events: string[]
84881
+ /**
84882
+ * Event types this endpoint receives; anything else is not delivered to it
84883
+ */
84884
+ enabled_events: ("email.delivered" | "email.bounced" | "email.complained" | "email.suppressed" | "email.opened" | "email.clicked")[]
83251
84885
  }
83252
84886
 
83253
84887
  export interface MailWebhookDeleteInput {
83254
84888
  /**
83255
- * Webhook endpoint id
84889
+ * Webhook endpoint id; deleting it also discards its delivery history
83256
84890
  */
83257
84891
  id: string
83258
84892
  }
83259
84893
 
83260
84894
  export interface MailWebhookDeleteOutput {
84895
+ /**
84896
+ * Id of the endpoint that was deleted
84897
+ */
83261
84898
  id: string
84899
+ /**
84900
+ * True once the endpoint and its delivery history are gone
84901
+ */
83262
84902
  deleted: boolean
83263
84903
  }
83264
84904
 
83265
84905
  export interface MailWebhookDeliveriesListInput {
83266
84906
  /**
83267
- * Webhook endpoint id
84907
+ * Webhook endpoint whose delivery attempts to list
83268
84908
  */
83269
84909
  id: string
83270
84910
  /**
83271
- * Max items (1-100, default 50)
84911
+ * Max delivery attempts to return, 1-100 (default 50)
83272
84912
  */
83273
84913
  limit?: number
83274
84914
  }
83275
84915
 
84916
+ /**
84917
+ * Recent delivery attempts for the endpoint, newest first
84918
+ */
83276
84919
  export type MailWebhookDeliveriesListOutput = {
84920
+ /**
84921
+ * Delivery attempt id
84922
+ */
83277
84923
  id: string
83278
- status: string
84924
+ /**
84925
+ * Delivery state: pending while attempts remain, succeeded once the endpoint answered 2xx, failed once retries are exhausted
84926
+ */
84927
+ status: ("pending" | "succeeded" | "failed")
84928
+ /**
84929
+ * How many times delivery has been attempted so far
84930
+ */
83279
84931
  attempts: number
84932
+ /**
84933
+ * Id of the email event that was delivered
84934
+ */
83280
84935
  event_id: string
84936
+ /**
84937
+ * When the delivery was queued (ISO 8601 UTC)
84938
+ */
83281
84939
  created_at: string
83282
- event_type: string
84940
+ /**
84941
+ * Type of the delivered event
84942
+ */
84943
+ event_type: ("email.delivered" | "email.bounced" | "email.complained" | "email.suppressed" | "email.opened" | "email.clicked")
84944
+ /**
84945
+ * Error from the last failed attempt; null if the last attempt succeeded or none has run
84946
+ */
83283
84947
  last_error: (string | null)
84948
+ /**
84949
+ * When the delivery record was last updated (ISO 8601 UTC)
84950
+ */
83284
84951
  updated_at: string
84952
+ /**
84953
+ * Id of the webhook endpoint the event was delivered to
84954
+ */
83285
84955
  endpoint_id: string
84956
+ /**
84957
+ * When delivery was last attempted (ISO 8601 UTC); null before the first attempt
84958
+ */
83286
84959
  last_attempt_at: (string | null)
84960
+ /**
84961
+ * HTTP status the endpoint returned on the last attempt; null if it could not be reached
84962
+ */
83287
84963
  response_status: (number | null)
83288
84964
  }[]
83289
84965
 
@@ -83295,27 +84971,72 @@ id: string
83295
84971
  }
83296
84972
 
83297
84973
  export interface MailWebhookGetOutput {
84974
+ /**
84975
+ * Webhook endpoint id
84976
+ */
83298
84977
  id: string
84978
+ /**
84979
+ * HTTPS URL that signed events are POSTed to
84980
+ */
83299
84981
  url: string
84982
+ /**
84983
+ * False if delivery is switched off — the endpoint is kept but nothing is sent to it
84984
+ */
83300
84985
  enabled: boolean
84986
+ /**
84987
+ * When the endpoint was registered (ISO 8601 UTC)
84988
+ */
83301
84989
  created_at: string
84990
+ /**
84991
+ * When the endpoint was last changed (ISO 8601 UTC)
84992
+ */
83302
84993
  updated_at: string
84994
+ /**
84995
+ * Human label for the endpoint; null if none was given
84996
+ */
83303
84997
  description: (string | null)
83304
- enabled_events: string[]
84998
+ /**
84999
+ * Event types this endpoint receives; anything else is not delivered to it
85000
+ */
85001
+ enabled_events: ("email.delivered" | "email.bounced" | "email.complained" | "email.suppressed" | "email.opened" | "email.clicked")[]
83305
85002
  }
83306
85003
 
83307
85004
  export interface MailWebhookListInput {
83308
85005
 
83309
85006
  }
83310
85007
 
85008
+ /**
85009
+ * Webhook endpoints for the current product, signing secrets omitted
85010
+ */
83311
85011
  export type MailWebhookListOutput = {
85012
+ /**
85013
+ * Webhook endpoint id
85014
+ */
83312
85015
  id: string
85016
+ /**
85017
+ * HTTPS URL that signed events are POSTed to
85018
+ */
83313
85019
  url: string
85020
+ /**
85021
+ * False if delivery is switched off — the endpoint is kept but nothing is sent to it
85022
+ */
83314
85023
  enabled: boolean
85024
+ /**
85025
+ * When the endpoint was registered (ISO 8601 UTC)
85026
+ */
83315
85027
  created_at: string
85028
+ /**
85029
+ * When the endpoint was last changed (ISO 8601 UTC)
85030
+ */
83316
85031
  updated_at: string
85032
+ /**
85033
+ * Human label for the endpoint; null if none was given
85034
+ */
83317
85035
  description: (string | null)
83318
- enabled_events: string[]
85036
+ /**
85037
+ * Event types this endpoint receives; anything else is not delivered to it
85038
+ */
85039
+ enabled_events: ("email.delivered" | "email.bounced" | "email.complained" | "email.suppressed" | "email.opened" | "email.clicked")[]
83319
85040
  }[]
83320
85041
 
83321
85042
  export interface MailWebhookUpdateInput {
@@ -83324,19 +85045,19 @@ export interface MailWebhookUpdateInput {
83324
85045
  */
83325
85046
  id: string
83326
85047
  /**
83327
- * HTTPS URL that signed events are POSTed to
85048
+ * New HTTPS delivery URL; omit to leave it unchanged
83328
85049
  */
83329
85050
  url?: string
83330
85051
  /**
83331
- * Enable (true) or disable (false) delivery
85052
+ * Switch delivery on (true) or off (false); omit to leave it unchanged
83332
85053
  */
83333
85054
  enabled?: boolean
83334
85055
  /**
83335
- * Optional human label
85056
+ * New human label, or null to clear it; omit to leave it unchanged
83336
85057
  */
83337
85058
  description?: (string | null)
83338
85059
  /**
83339
- * Event types to deliver. One or more of: email.delivered, email.bounced, email.complained, email.suppressed, email.opened, email.clicked
85060
+ * Replace the delivered event types; omit to leave them unchanged
83340
85061
  *
83341
85062
  * @minItems 1
83342
85063
  */
@@ -83344,13 +85065,34 @@ enabled_events?: [("email.delivered" | "email.bounced" | "email.complained" | "e
83344
85065
  }
83345
85066
 
83346
85067
  export interface MailWebhookUpdateOutput {
85068
+ /**
85069
+ * Webhook endpoint id
85070
+ */
83347
85071
  id: string
85072
+ /**
85073
+ * HTTPS URL that signed events are POSTed to
85074
+ */
83348
85075
  url: string
85076
+ /**
85077
+ * False if delivery is switched off — the endpoint is kept but nothing is sent to it
85078
+ */
83349
85079
  enabled: boolean
85080
+ /**
85081
+ * When the endpoint was registered (ISO 8601 UTC)
85082
+ */
83350
85083
  created_at: string
85084
+ /**
85085
+ * When the endpoint was last changed (ISO 8601 UTC)
85086
+ */
83351
85087
  updated_at: string
85088
+ /**
85089
+ * Human label for the endpoint; null if none was given
85090
+ */
83352
85091
  description: (string | null)
83353
- enabled_events: string[]
85092
+ /**
85093
+ * Event types this endpoint receives; anything else is not delivered to it
85094
+ */
85095
+ enabled_events: ("email.delivered" | "email.bounced" | "email.complained" | "email.suppressed" | "email.opened" | "email.clicked")[]
83354
85096
  }
83355
85097
 
83356
85098
  export interface ObserveAlertsCreateInput {