@lessly/sdk-app 76.1.0 → 78.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.
@@ -74678,38 +74678,65 @@ attachedServiceId: (string | null)
74678
74678
 
74679
74679
  export interface MailApikeyCreateInput {
74680
74680
  /**
74681
- * Human-readable label for the key
74681
+ * Human-readable label for the key, e.g. "production sender"
74682
74682
  */
74683
74683
  name: string
74684
74684
  /**
74685
- * Permission scope: 'full_access' or 'sending_access'
74685
+ * Permission scope: full_access can call every mail tool, sending_access can only send email
74686
74686
  */
74687
74687
  scope: ("full_access" | "sending_access")
74688
74688
  /**
74689
- * Optional Domain id this key is locked to
74689
+ * Lock the key to this sending domain; omit to let it send from any verified domain
74690
74690
  */
74691
74691
  domainId?: string
74692
74692
  }
74693
74693
 
74694
74694
  export interface MailApikeyCreateOutput {
74695
+ /**
74696
+ * API key id; pass it to mail_apikey_delete to revoke the key
74697
+ */
74695
74698
  id: string
74699
+ /**
74700
+ * The full secret. Returned only by this call and never retrievable again — store it now
74701
+ */
74696
74702
  key: string
74703
+ /**
74704
+ * Human-readable label given when the key was issued
74705
+ */
74697
74706
  name: string
74698
- scope: string
74707
+ /**
74708
+ * Permission scope: full_access can call every mail tool, sending_access can only send email
74709
+ */
74710
+ scope: ("full_access" | "sending_access")
74711
+ /**
74712
+ * Opening characters of the secret, so a key can be recognised in a log or a header
74713
+ */
74699
74714
  prefix: string
74715
+ /**
74716
+ * Sending domain this key is locked to; null if it may send from any verified domain
74717
+ */
74700
74718
  domainId: (string | null)
74719
+ /**
74720
+ * When the key was issued (ISO 8601 UTC)
74721
+ */
74701
74722
  createdAt: string
74702
74723
  }
74703
74724
 
74704
74725
  export interface MailApikeyDeleteInput {
74705
74726
  /**
74706
- * UUID of the API key to revoke
74727
+ * Id of the API key to revoke; revocation is immediate and permanent
74707
74728
  */
74708
74729
  id: string
74709
74730
  }
74710
74731
 
74711
74732
  export interface MailApikeyDeleteOutput {
74733
+ /**
74734
+ * Id of the key that was revoked
74735
+ */
74712
74736
  id: string
74737
+ /**
74738
+ * Always true; the call throws rather than reporting a failure here
74739
+ */
74713
74740
  revoked: true
74714
74741
  }
74715
74742
 
@@ -74717,12 +74744,33 @@ export interface MailApikeyListInput {
74717
74744
 
74718
74745
  }
74719
74746
 
74747
+ /**
74748
+ * Active API keys for the current product, secrets omitted
74749
+ */
74720
74750
  export type MailApikeyListOutput = {
74751
+ /**
74752
+ * API key id; pass it to mail_apikey_delete to revoke the key
74753
+ */
74721
74754
  id: string
74755
+ /**
74756
+ * Human-readable label given when the key was issued
74757
+ */
74722
74758
  name: string
74723
- scope: string
74759
+ /**
74760
+ * Permission scope: full_access can call every mail tool, sending_access can only send email
74761
+ */
74762
+ scope: ("full_access" | "sending_access")
74763
+ /**
74764
+ * Opening characters of the secret, so a key can be recognised in a log or a header
74765
+ */
74724
74766
  prefix: string
74767
+ /**
74768
+ * Sending domain this key is locked to; null if it may send from any verified domain
74769
+ */
74725
74770
  domainId: (string | null)
74771
+ /**
74772
+ * When the key was issued (ISO 8601 UTC)
74773
+ */
74726
74774
  createdAt: string
74727
74775
  }[]
74728
74776
 
@@ -74734,9 +74782,21 @@ name: string
74734
74782
  }
74735
74783
 
74736
74784
  export interface MailAudienceCreateOutput {
74785
+ /**
74786
+ * Audience id
74787
+ */
74737
74788
  id: string
74789
+ /**
74790
+ * Human label for the audience
74791
+ */
74738
74792
  name: string
74793
+ /**
74794
+ * When the audience was created (ISO 8601 UTC)
74795
+ */
74739
74796
  createdAt: string
74797
+ /**
74798
+ * When the audience was last modified (ISO 8601 UTC)
74799
+ */
74740
74800
  updatedAt: string
74741
74801
  }
74742
74802
 
@@ -74748,6 +74808,9 @@ id: string
74748
74808
  }
74749
74809
 
74750
74810
  export interface MailAudienceDeleteOutput {
74811
+ /**
74812
+ * True once the audience and its contacts are gone
74813
+ */
74751
74814
  deleted: boolean
74752
74815
  }
74753
74816
 
@@ -74759,9 +74822,21 @@ id: string
74759
74822
  }
74760
74823
 
74761
74824
  export interface MailAudienceGetOutput {
74825
+ /**
74826
+ * Audience id
74827
+ */
74762
74828
  id: string
74829
+ /**
74830
+ * Human label for the audience
74831
+ */
74763
74832
  name: string
74833
+ /**
74834
+ * When the audience was created (ISO 8601 UTC)
74835
+ */
74764
74836
  createdAt: string
74837
+ /**
74838
+ * When the audience was last modified (ISO 8601 UTC)
74839
+ */
74765
74840
  updatedAt: string
74766
74841
  }
74767
74842
 
@@ -74770,9 +74845,21 @@ export interface MailAudienceListInput {
74770
74845
  }
74771
74846
 
74772
74847
  export type MailAudienceListOutput = {
74848
+ /**
74849
+ * Audience id
74850
+ */
74773
74851
  id: string
74852
+ /**
74853
+ * Human label for the audience
74854
+ */
74774
74855
  name: string
74856
+ /**
74857
+ * When the audience was created (ISO 8601 UTC)
74858
+ */
74775
74859
  createdAt: string
74860
+ /**
74861
+ * When the audience was last modified (ISO 8601 UTC)
74862
+ */
74776
74863
  updatedAt: string
74777
74864
  }[]
74778
74865
 
@@ -74788,235 +74875,724 @@ name?: string
74788
74875
  }
74789
74876
 
74790
74877
  export interface MailAudienceUpdateOutput {
74878
+ /**
74879
+ * Audience id
74880
+ */
74791
74881
  id: string
74882
+ /**
74883
+ * Human label for the audience
74884
+ */
74792
74885
  name: string
74886
+ /**
74887
+ * When the audience was created (ISO 8601 UTC)
74888
+ */
74793
74889
  createdAt: string
74890
+ /**
74891
+ * When the audience was last modified (ISO 8601 UTC)
74892
+ */
74794
74893
  updatedAt: string
74795
74894
  }
74796
74895
 
74797
74896
  export interface MailBroadcastCancelInput {
74897
+ /**
74898
+ * Broadcast id
74899
+ */
74798
74900
  id: string
74799
74901
  }
74800
74902
 
74801
74903
  export interface MailBroadcastCancelOutput {
74904
+ /**
74905
+ * Broadcast id
74906
+ */
74802
74907
  id: string
74908
+ /**
74909
+ * Sender the messages are sent as
74910
+ */
74803
74911
  from: string
74912
+ /**
74913
+ * Inline HTML body; null when a template supplies it
74914
+ */
74804
74915
  html: (string | null)
74916
+ /**
74917
+ * Internal label — never shown to recipients
74918
+ */
74805
74919
  name: string
74920
+ /**
74921
+ * Inline plain-text body; null when a template supplies it
74922
+ */
74806
74923
  text: (string | null)
74924
+ /**
74925
+ * When the last message left; null until sending finishes
74926
+ */
74807
74927
  sentAt: (string | null)
74808
- status: string
74928
+ /**
74929
+ * Lifecycle state: draft (editable), queued (fanned out, sending), sent, failed, canceled
74930
+ */
74931
+ status: ("draft" | "queued" | "sent" | "failed" | "canceled")
74932
+ /**
74933
+ * Custom MIME headers added to every message
74934
+ */
74809
74935
  headers: {
74810
74936
  [k: string]: string
74811
74937
  }
74938
+ /**
74939
+ * Reply-To addresses; empty when replies go to `from`
74940
+ */
74812
74941
  replyTo: string[]
74942
+ /**
74943
+ * Subject line for inline content; null when a template supplies it
74944
+ */
74813
74945
  subject: (string | null)
74946
+ /**
74947
+ * When the broadcast was queued; null while it is a draft
74948
+ */
74814
74949
  queuedAt: (string | null)
74950
+ /**
74951
+ * When the broadcast was created
74952
+ */
74815
74953
  createdAt: string
74954
+ /**
74955
+ * Why the broadcast failed; null unless status is failed
74956
+ */
74816
74957
  lastError: (string | null)
74958
+ /**
74959
+ * Product the broadcast belongs to
74960
+ */
74817
74961
  productId: string
74962
+ /**
74963
+ * When the broadcast was last modified
74964
+ */
74818
74965
  updatedAt: string
74819
- variables?: unknown
74966
+ /**
74967
+ * Values passed to the template variables; {} for inline content
74968
+ */
74969
+ variables: ({
74970
+ [k: string]: unknown
74971
+ } | null)
74972
+ /**
74973
+ * Audience whose contacts this broadcast is sent to
74974
+ */
74820
74975
  audienceId: string
74976
+ /**
74977
+ * Template rendered for every recipient; null for inline content
74978
+ */
74821
74979
  templateId: (string | null)
74980
+ /**
74981
+ * Contacts the broadcast fanned out to; 0 while it is still a draft
74982
+ */
74822
74983
  recipientCount: number
74823
74984
  }
74824
74985
 
74825
74986
  export interface MailBroadcastCreateInput {
74987
+ /**
74988
+ * Sender on a verified domain, e.g. "Name <you@your-domain.com>"
74989
+ */
74826
74990
  from: string
74991
+ /**
74992
+ * HTML body. Inline content only — forbidden with a template.
74993
+ */
74827
74994
  html?: string
74995
+ /**
74996
+ * Internal label for the broadcast — never shown to recipients
74997
+ */
74828
74998
  name: string
74999
+ /**
75000
+ * Plain-text body. Inline content only — forbidden with a template.
75001
+ */
74829
75002
  text?: string
75003
+ /**
75004
+ * Custom MIME headers added to every message. Defaults to {}.
75005
+ */
74830
75006
  headers?: {
74831
75007
  [k: string]: string
74832
75008
  }
75009
+ /**
75010
+ * Reply-To addresses. Defaults to [] — replies go to `from`.
75011
+ */
74833
75012
  replyTo?: string[]
75013
+ /**
75014
+ * Subject line, capped at the RFC-5322 line limit. Required with inline content, forbidden with a template.
75015
+ */
74834
75016
  subject?: string
75017
+ /**
75018
+ * Send by reference to a published template instead of inline content
75019
+ */
74835
75020
  template?: {
75021
+ /**
75022
+ * Published template id to render for every recipient
75023
+ */
74836
75024
  id: string
75025
+ /**
75026
+ * Values for the template variables, the same for every recipient. Defaults to {}.
75027
+ */
74837
75028
  variables?: {
74838
75029
  [k: string]: (string | number | boolean)
74839
75030
  }
74840
75031
  }
75032
+ /**
75033
+ * Audience whose subscribed contacts receive this broadcast
75034
+ */
74841
75035
  audienceId: string
74842
75036
  }
74843
75037
 
74844
75038
  export interface MailBroadcastCreateOutput {
75039
+ /**
75040
+ * Broadcast id
75041
+ */
74845
75042
  id: string
75043
+ /**
75044
+ * Sender the messages are sent as
75045
+ */
74846
75046
  from: string
75047
+ /**
75048
+ * Inline HTML body; null when a template supplies it
75049
+ */
74847
75050
  html: (string | null)
75051
+ /**
75052
+ * Internal label — never shown to recipients
75053
+ */
74848
75054
  name: string
75055
+ /**
75056
+ * Inline plain-text body; null when a template supplies it
75057
+ */
74849
75058
  text: (string | null)
75059
+ /**
75060
+ * When the last message left; null until sending finishes
75061
+ */
74850
75062
  sentAt: (string | null)
74851
- status: string
75063
+ /**
75064
+ * Lifecycle state: draft (editable), queued (fanned out, sending), sent, failed, canceled
75065
+ */
75066
+ status: ("draft" | "queued" | "sent" | "failed" | "canceled")
75067
+ /**
75068
+ * Custom MIME headers added to every message
75069
+ */
74852
75070
  headers: {
74853
75071
  [k: string]: string
74854
75072
  }
75073
+ /**
75074
+ * Reply-To addresses; empty when replies go to `from`
75075
+ */
74855
75076
  replyTo: string[]
75077
+ /**
75078
+ * Subject line for inline content; null when a template supplies it
75079
+ */
74856
75080
  subject: (string | null)
75081
+ /**
75082
+ * When the broadcast was queued; null while it is a draft
75083
+ */
74857
75084
  queuedAt: (string | null)
75085
+ /**
75086
+ * When the broadcast was created
75087
+ */
74858
75088
  createdAt: string
75089
+ /**
75090
+ * Why the broadcast failed; null unless status is failed
75091
+ */
74859
75092
  lastError: (string | null)
75093
+ /**
75094
+ * Product the broadcast belongs to
75095
+ */
74860
75096
  productId: string
75097
+ /**
75098
+ * When the broadcast was last modified
75099
+ */
74861
75100
  updatedAt: string
74862
- variables?: unknown
75101
+ /**
75102
+ * Values passed to the template variables; {} for inline content
75103
+ */
75104
+ variables: ({
75105
+ [k: string]: unknown
75106
+ } | null)
75107
+ /**
75108
+ * Audience whose contacts this broadcast is sent to
75109
+ */
74863
75110
  audienceId: string
75111
+ /**
75112
+ * Template rendered for every recipient; null for inline content
75113
+ */
74864
75114
  templateId: (string | null)
75115
+ /**
75116
+ * Contacts the broadcast fanned out to; 0 while it is still a draft
75117
+ */
74865
75118
  recipientCount: number
74866
75119
  }
74867
75120
 
74868
75121
  export interface MailBroadcastDeleteInput {
75122
+ /**
75123
+ * Broadcast id
75124
+ */
74869
75125
  id: string
74870
75126
  }
74871
75127
 
74872
75128
  export interface MailBroadcastDeleteOutput {
75129
+ /**
75130
+ * Id of the deleted broadcast
75131
+ */
74873
75132
  id: string
75133
+ /**
75134
+ * True when the broadcast was removed
75135
+ */
74874
75136
  deleted: boolean
74875
75137
  }
74876
75138
 
74877
75139
  export interface MailBroadcastGetInput {
75140
+ /**
75141
+ * Broadcast id
75142
+ */
74878
75143
  id: string
74879
75144
  }
74880
75145
 
74881
75146
  export interface MailBroadcastGetOutput {
75147
+ /**
75148
+ * Broadcast id
75149
+ */
74882
75150
  id: string
75151
+ /**
75152
+ * Sender the messages are sent as
75153
+ */
74883
75154
  from: string
75155
+ /**
75156
+ * Inline HTML body; null when a template supplies it
75157
+ */
74884
75158
  html: (string | null)
75159
+ /**
75160
+ * Internal label — never shown to recipients
75161
+ */
74885
75162
  name: string
75163
+ /**
75164
+ * Inline plain-text body; null when a template supplies it
75165
+ */
74886
75166
  text: (string | null)
75167
+ /**
75168
+ * When the last message left; null until sending finishes
75169
+ */
74887
75170
  sentAt: (string | null)
74888
- status: string
75171
+ /**
75172
+ * Lifecycle state: draft (editable), queued (fanned out, sending), sent, failed, canceled
75173
+ */
75174
+ status: ("draft" | "queued" | "sent" | "failed" | "canceled")
75175
+ /**
75176
+ * Custom MIME headers added to every message
75177
+ */
74889
75178
  headers: {
74890
75179
  [k: string]: string
74891
75180
  }
75181
+ /**
75182
+ * Reply-To addresses; empty when replies go to `from`
75183
+ */
74892
75184
  replyTo: string[]
75185
+ /**
75186
+ * Subject line for inline content; null when a template supplies it
75187
+ */
74893
75188
  subject: (string | null)
75189
+ /**
75190
+ * When the broadcast was queued; null while it is a draft
75191
+ */
74894
75192
  queuedAt: (string | null)
75193
+ /**
75194
+ * When the broadcast was created
75195
+ */
74895
75196
  createdAt: string
75197
+ /**
75198
+ * Why the broadcast failed; null unless status is failed
75199
+ */
74896
75200
  lastError: (string | null)
75201
+ /**
75202
+ * Product the broadcast belongs to
75203
+ */
74897
75204
  productId: string
75205
+ /**
75206
+ * When the broadcast was last modified
75207
+ */
74898
75208
  updatedAt: string
74899
- variables?: unknown
75209
+ /**
75210
+ * Values passed to the template variables; {} for inline content
75211
+ */
75212
+ variables: ({
75213
+ [k: string]: unknown
75214
+ } | null)
75215
+ /**
75216
+ * Audience whose contacts this broadcast is sent to
75217
+ */
74900
75218
  audienceId: string
75219
+ /**
75220
+ * Template rendered for every recipient; null for inline content
75221
+ */
74901
75222
  templateId: (string | null)
75223
+ /**
75224
+ * Contacts the broadcast fanned out to; 0 while it is still a draft
75225
+ */
74902
75226
  recipientCount: number
74903
75227
  }
74904
75228
 
74905
75229
  export interface MailBroadcastListInput {
75230
+ /**
75231
+ * Page size, 1-100. Defaults to 50.
75232
+ */
74906
75233
  limit?: number
75234
+ /**
75235
+ * Opaque cursor from the previous page’s `nextCursor`. Omit for the first page.
75236
+ */
74907
75237
  cursor?: string
74908
75238
  }
74909
75239
 
74910
75240
  export interface MailBroadcastListOutput {
75241
+ /**
75242
+ * The broadcasts on this page, newest first
75243
+ */
74911
75244
  items: {
75245
+ /**
75246
+ * Broadcast id
75247
+ */
74912
75248
  id: string
75249
+ /**
75250
+ * Sender the messages are sent as
75251
+ */
74913
75252
  from: string
75253
+ /**
75254
+ * Inline HTML body; null when a template supplies it
75255
+ */
74914
75256
  html: (string | null)
75257
+ /**
75258
+ * Internal label — never shown to recipients
75259
+ */
74915
75260
  name: string
75261
+ /**
75262
+ * Inline plain-text body; null when a template supplies it
75263
+ */
74916
75264
  text: (string | null)
75265
+ /**
75266
+ * When the last message left; null until sending finishes
75267
+ */
74917
75268
  sentAt: (string | null)
74918
- status: string
75269
+ /**
75270
+ * Lifecycle state: draft (editable), queued (fanned out, sending), sent, failed, canceled
75271
+ */
75272
+ status: ("draft" | "queued" | "sent" | "failed" | "canceled")
75273
+ /**
75274
+ * Custom MIME headers added to every message
75275
+ */
74919
75276
  headers: {
74920
75277
  [k: string]: string
74921
75278
  }
75279
+ /**
75280
+ * Reply-To addresses; empty when replies go to `from`
75281
+ */
74922
75282
  replyTo: string[]
75283
+ /**
75284
+ * Subject line for inline content; null when a template supplies it
75285
+ */
74923
75286
  subject: (string | null)
75287
+ /**
75288
+ * When the broadcast was queued; null while it is a draft
75289
+ */
74924
75290
  queuedAt: (string | null)
75291
+ /**
75292
+ * When the broadcast was created
75293
+ */
74925
75294
  createdAt: string
75295
+ /**
75296
+ * Why the broadcast failed; null unless status is failed
75297
+ */
74926
75298
  lastError: (string | null)
75299
+ /**
75300
+ * Product the broadcast belongs to
75301
+ */
74927
75302
  productId: string
75303
+ /**
75304
+ * When the broadcast was last modified
75305
+ */
74928
75306
  updatedAt: string
74929
- variables?: unknown
75307
+ /**
75308
+ * Values passed to the template variables; {} for inline content
75309
+ */
75310
+ variables: ({
75311
+ [k: string]: unknown
75312
+ } | null)
75313
+ /**
75314
+ * Audience whose contacts this broadcast is sent to
75315
+ */
74930
75316
  audienceId: string
75317
+ /**
75318
+ * Template rendered for every recipient; null for inline content
75319
+ */
74931
75320
  templateId: (string | null)
75321
+ /**
75322
+ * Contacts the broadcast fanned out to; 0 while it is still a draft
75323
+ */
74932
75324
  recipientCount: number
74933
75325
  }[]
75326
+ /**
75327
+ * Pass as `cursor` for the next page; null on the last page
75328
+ */
74934
75329
  nextCursor: (string | null)
74935
75330
  }
74936
75331
 
74937
75332
  export interface MailBroadcastQueueInput {
75333
+ /**
75334
+ * Broadcast id
75335
+ */
74938
75336
  id: string
74939
75337
  }
74940
75338
 
74941
75339
  export interface MailBroadcastQueueOutput {
75340
+ /**
75341
+ * Broadcast id
75342
+ */
74942
75343
  id: string
75344
+ /**
75345
+ * Sender the messages are sent as
75346
+ */
74943
75347
  from: string
75348
+ /**
75349
+ * Inline HTML body; null when a template supplies it
75350
+ */
74944
75351
  html: (string | null)
75352
+ /**
75353
+ * Internal label — never shown to recipients
75354
+ */
74945
75355
  name: string
75356
+ /**
75357
+ * Inline plain-text body; null when a template supplies it
75358
+ */
74946
75359
  text: (string | null)
75360
+ /**
75361
+ * When the last message left; null until sending finishes
75362
+ */
74947
75363
  sentAt: (string | null)
74948
- status: string
75364
+ /**
75365
+ * Lifecycle state: draft (editable), queued (fanned out, sending), sent, failed, canceled
75366
+ */
75367
+ status: ("draft" | "queued" | "sent" | "failed" | "canceled")
75368
+ /**
75369
+ * Custom MIME headers added to every message
75370
+ */
74949
75371
  headers: {
74950
75372
  [k: string]: string
74951
75373
  }
75374
+ /**
75375
+ * Reply-To addresses; empty when replies go to `from`
75376
+ */
74952
75377
  replyTo: string[]
75378
+ /**
75379
+ * Subject line for inline content; null when a template supplies it
75380
+ */
74953
75381
  subject: (string | null)
75382
+ /**
75383
+ * When the broadcast was queued; null while it is a draft
75384
+ */
74954
75385
  queuedAt: (string | null)
75386
+ /**
75387
+ * When the broadcast was created
75388
+ */
74955
75389
  createdAt: string
75390
+ /**
75391
+ * Why the broadcast failed; null unless status is failed
75392
+ */
74956
75393
  lastError: (string | null)
75394
+ /**
75395
+ * Product the broadcast belongs to
75396
+ */
74957
75397
  productId: string
75398
+ /**
75399
+ * When the broadcast was last modified
75400
+ */
74958
75401
  updatedAt: string
74959
- variables?: unknown
75402
+ /**
75403
+ * Values passed to the template variables; {} for inline content
75404
+ */
75405
+ variables: ({
75406
+ [k: string]: unknown
75407
+ } | null)
75408
+ /**
75409
+ * Audience whose contacts this broadcast is sent to
75410
+ */
74960
75411
  audienceId: string
75412
+ /**
75413
+ * Template rendered for every recipient; null for inline content
75414
+ */
74961
75415
  templateId: (string | null)
75416
+ /**
75417
+ * Contacts the broadcast fanned out to; 0 while it is still a draft
75418
+ */
74962
75419
  recipientCount: number
74963
75420
  }
74964
75421
 
74965
75422
  export interface MailBroadcastStatsInput {
75423
+ /**
75424
+ * Broadcast id
75425
+ */
74966
75426
  id: string
74967
75427
  }
74968
75428
 
74969
75429
  export interface MailBroadcastStatsOutput {
75430
+ /**
75431
+ * Messages that could not be handed to the provider
75432
+ */
74970
75433
  failed: number
75434
+ /**
75435
+ * Messages opened at least once, as seen by the tracking pixel
75436
+ */
74971
75437
  opened: number
75438
+ /**
75439
+ * Messages that bounced, hard or soft
75440
+ */
74972
75441
  bounced: number
75442
+ /**
75443
+ * Messages with at least one tracked link click
75444
+ */
74973
75445
  clicked: number
75446
+ /**
75447
+ * Messages the receiving server accepted
75448
+ */
74974
75449
  delivered: number
75450
+ /**
75451
+ * Contacts the broadcast fanned out to
75452
+ */
74975
75453
  recipients: number
75454
+ /**
75455
+ * Recipients skipped because they are on the suppression list
75456
+ */
74976
75457
  suppressed: number
74977
75458
  }
74978
75459
 
74979
75460
  export interface MailBroadcastUpdateInput {
75461
+ /**
75462
+ * Broadcast id
75463
+ */
74980
75464
  id: string
75465
+ /**
75466
+ * Sender on a verified domain, e.g. "Name <you@your-domain.com>"
75467
+ */
74981
75468
  from?: string
75469
+ /**
75470
+ * HTML body. Inline content only — forbidden with a template.
75471
+ */
74982
75472
  html?: string
75473
+ /**
75474
+ * Internal label for the broadcast — never shown to recipients
75475
+ */
74983
75476
  name?: string
75477
+ /**
75478
+ * Plain-text body. Inline content only — forbidden with a template.
75479
+ */
74984
75480
  text?: string
75481
+ /**
75482
+ * Custom MIME headers added to every message. Defaults to {}.
75483
+ */
74985
75484
  headers?: {
74986
75485
  [k: string]: string
74987
75486
  }
75487
+ /**
75488
+ * Reply-To addresses. Defaults to [] — replies go to `from`.
75489
+ */
74988
75490
  replyTo?: string[]
75491
+ /**
75492
+ * Subject line, capped at the RFC-5322 line limit. Required with inline content, forbidden with a template.
75493
+ */
74989
75494
  subject?: string
75495
+ /**
75496
+ * Send by reference to a published template instead of inline content
75497
+ */
74990
75498
  template?: {
75499
+ /**
75500
+ * Published template id to render for every recipient
75501
+ */
74991
75502
  id: string
75503
+ /**
75504
+ * Values for the template variables, the same for every recipient. Defaults to {}.
75505
+ */
74992
75506
  variables?: {
74993
75507
  [k: string]: (string | number | boolean)
74994
75508
  }
74995
75509
  }
75510
+ /**
75511
+ * Audience whose subscribed contacts receive this broadcast
75512
+ */
74996
75513
  audienceId?: string
74997
75514
  }
74998
75515
 
74999
75516
  export interface MailBroadcastUpdateOutput {
75517
+ /**
75518
+ * Broadcast id
75519
+ */
75000
75520
  id: string
75521
+ /**
75522
+ * Sender the messages are sent as
75523
+ */
75001
75524
  from: string
75525
+ /**
75526
+ * Inline HTML body; null when a template supplies it
75527
+ */
75002
75528
  html: (string | null)
75529
+ /**
75530
+ * Internal label — never shown to recipients
75531
+ */
75003
75532
  name: string
75533
+ /**
75534
+ * Inline plain-text body; null when a template supplies it
75535
+ */
75004
75536
  text: (string | null)
75537
+ /**
75538
+ * When the last message left; null until sending finishes
75539
+ */
75005
75540
  sentAt: (string | null)
75006
- status: string
75541
+ /**
75542
+ * Lifecycle state: draft (editable), queued (fanned out, sending), sent, failed, canceled
75543
+ */
75544
+ status: ("draft" | "queued" | "sent" | "failed" | "canceled")
75545
+ /**
75546
+ * Custom MIME headers added to every message
75547
+ */
75007
75548
  headers: {
75008
75549
  [k: string]: string
75009
75550
  }
75551
+ /**
75552
+ * Reply-To addresses; empty when replies go to `from`
75553
+ */
75010
75554
  replyTo: string[]
75555
+ /**
75556
+ * Subject line for inline content; null when a template supplies it
75557
+ */
75011
75558
  subject: (string | null)
75559
+ /**
75560
+ * When the broadcast was queued; null while it is a draft
75561
+ */
75012
75562
  queuedAt: (string | null)
75563
+ /**
75564
+ * When the broadcast was created
75565
+ */
75013
75566
  createdAt: string
75567
+ /**
75568
+ * Why the broadcast failed; null unless status is failed
75569
+ */
75014
75570
  lastError: (string | null)
75571
+ /**
75572
+ * Product the broadcast belongs to
75573
+ */
75015
75574
  productId: string
75575
+ /**
75576
+ * When the broadcast was last modified
75577
+ */
75016
75578
  updatedAt: string
75017
- variables?: unknown
75579
+ /**
75580
+ * Values passed to the template variables; {} for inline content
75581
+ */
75582
+ variables: ({
75583
+ [k: string]: unknown
75584
+ } | null)
75585
+ /**
75586
+ * Audience whose contacts this broadcast is sent to
75587
+ */
75018
75588
  audienceId: string
75589
+ /**
75590
+ * Template rendered for every recipient; null for inline content
75591
+ */
75019
75592
  templateId: (string | null)
75593
+ /**
75594
+ * Contacts the broadcast fanned out to; 0 while it is still a draft
75595
+ */
75020
75596
  recipientCount: number
75021
75597
  }
75022
75598
 
@@ -75042,12 +75618,30 @@ unsubscribed?: boolean
75042
75618
  }
75043
75619
 
75044
75620
  export interface MailContactCreateOutput {
75621
+ /**
75622
+ * Contact id
75623
+ */
75045
75624
  id: string
75625
+ /**
75626
+ * Contact email address, normalized to lowercase
75627
+ */
75046
75628
  email: string
75629
+ /**
75630
+ * When the contact was created (ISO 8601 UTC)
75631
+ */
75047
75632
  createdAt: string
75633
+ /**
75634
+ * When the contact was last modified (ISO 8601 UTC)
75635
+ */
75048
75636
  updatedAt: string
75637
+ /**
75638
+ * Audience the contact belongs to
75639
+ */
75049
75640
  audienceId: string
75050
75641
  properties?: unknown
75642
+ /**
75643
+ * Marketing opt-out flag for this audience
75644
+ */
75051
75645
  unsubscribed: boolean
75052
75646
  }
75053
75647
 
@@ -75063,6 +75657,9 @@ audience_id: string
75063
75657
  }
75064
75658
 
75065
75659
  export interface MailContactDeleteOutput {
75660
+ /**
75661
+ * True once the contact is gone
75662
+ */
75066
75663
  deleted: boolean
75067
75664
  }
75068
75665
 
@@ -75078,12 +75675,30 @@ audience_id: string
75078
75675
  }
75079
75676
 
75080
75677
  export interface MailContactGetOutput {
75678
+ /**
75679
+ * Contact id
75680
+ */
75081
75681
  id: string
75682
+ /**
75683
+ * Contact email address, normalized to lowercase
75684
+ */
75082
75685
  email: string
75686
+ /**
75687
+ * When the contact was created (ISO 8601 UTC)
75688
+ */
75083
75689
  createdAt: string
75690
+ /**
75691
+ * When the contact was last modified (ISO 8601 UTC)
75692
+ */
75084
75693
  updatedAt: string
75694
+ /**
75695
+ * Audience the contact belongs to
75696
+ */
75085
75697
  audienceId: string
75086
75698
  properties?: unknown
75699
+ /**
75700
+ * Marketing opt-out flag for this audience
75701
+ */
75087
75702
  unsubscribed: boolean
75088
75703
  }
75089
75704
 
@@ -75093,7 +75708,7 @@ export interface MailContactListInput {
75093
75708
  */
75094
75709
  limit?: number
75095
75710
  /**
75096
- * Opaque pagination cursor from a prior page
75711
+ * Opaque pagination cursor from a prior page; omit for the first page
75097
75712
  */
75098
75713
  cursor?: string
75099
75714
  /**
@@ -75107,15 +75722,39 @@ unsubscribed?: (("true" | "false") | boolean)
75107
75722
  }
75108
75723
 
75109
75724
  export interface MailContactListOutput {
75725
+ /**
75726
+ * Contacts on this page, newest first
75727
+ */
75110
75728
  data: {
75729
+ /**
75730
+ * Contact id
75731
+ */
75111
75732
  id: string
75733
+ /**
75734
+ * Contact email address, normalized to lowercase
75735
+ */
75112
75736
  email: string
75737
+ /**
75738
+ * When the contact was created (ISO 8601 UTC)
75739
+ */
75113
75740
  createdAt: string
75741
+ /**
75742
+ * When the contact was last modified (ISO 8601 UTC)
75743
+ */
75114
75744
  updatedAt: string
75745
+ /**
75746
+ * Audience the contact belongs to
75747
+ */
75115
75748
  audienceId: string
75116
75749
  properties?: unknown
75750
+ /**
75751
+ * Marketing opt-out flag for this audience
75752
+ */
75117
75753
  unsubscribed: boolean
75118
75754
  }[]
75755
+ /**
75756
+ * Cursor for the next page; null on the last page
75757
+ */
75119
75758
  nextCursor: (string | null)
75120
75759
  }
75121
75760
 
@@ -75141,12 +75780,30 @@ unsubscribed?: boolean
75141
75780
  }
75142
75781
 
75143
75782
  export interface MailContactUpdateOutput {
75783
+ /**
75784
+ * Contact id
75785
+ */
75144
75786
  id: string
75787
+ /**
75788
+ * Contact email address, normalized to lowercase
75789
+ */
75145
75790
  email: string
75791
+ /**
75792
+ * When the contact was created (ISO 8601 UTC)
75793
+ */
75146
75794
  createdAt: string
75795
+ /**
75796
+ * When the contact was last modified (ISO 8601 UTC)
75797
+ */
75147
75798
  updatedAt: string
75799
+ /**
75800
+ * Audience the contact belongs to
75801
+ */
75148
75802
  audienceId: string
75149
75803
  properties?: unknown
75804
+ /**
75805
+ * Marketing opt-out flag for this audience
75806
+ */
75150
75807
  unsubscribed: boolean
75151
75808
  }
75152
75809
 
@@ -75154,105 +75811,297 @@ export interface MailDomainAllowedListInput {
75154
75811
 
75155
75812
  }
75156
75813
 
75814
+ /**
75815
+ * Apex domains this product may register sending domains under
75816
+ */
75157
75817
  export type MailDomainAllowedListOutput = {
75158
- mode: string
75818
+ /**
75819
+ * Who operates DNS under this apex: managed if the platform publishes the records, external if you do
75820
+ */
75821
+ mode: ("external" | "managed")
75822
+ /**
75823
+ * The apex domain itself, e.g. "example.com"
75824
+ */
75159
75825
  domain: string
75826
+ /**
75827
+ * Governance domain id — pass it to the governance console, not to mail_domain_get
75828
+ */
75160
75829
  domainId: string
75830
+ /**
75831
+ * How many extensions currently send under this apex
75832
+ */
75161
75833
  extensionCount: number
75162
75834
  }[]
75163
75835
 
75164
75836
  export interface MailDomainCreateInput {
75165
75837
  /**
75166
- * The sending domain to register, e.g. "example.com"
75838
+ * 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)
75167
75839
  */
75168
75840
  name: string
75169
75841
  /**
75170
- * AWS region for the SES identity (data residency); immutable after create
75842
+ * AWS region for the SES identity, which fixes data residency (default "eu-north-1"); immutable once the domain is created
75171
75843
  */
75172
75844
  region?: string
75173
75845
  }
75174
75846
 
75175
75847
  export interface MailDomainCreateOutput {
75848
+ /**
75849
+ * Sending domain id
75850
+ */
75176
75851
  id: string
75177
- tls: string
75852
+ /**
75853
+ * TLS policy for delivery: opportunistic falls back to plaintext if the recipient offers no TLS, enforced fails the send instead
75854
+ */
75855
+ tls: ("opportunistic" | "enforced")
75856
+ /**
75857
+ * Governed apex this domain sits under; null if it is not governed
75858
+ */
75178
75859
  apex: (string | null)
75179
- mode: (string | null)
75860
+ /**
75861
+ * 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
75862
+ */
75863
+ mode: (("external" | "managed") | null)
75864
+ /**
75865
+ * The sending domain itself, e.g. "example.com"
75866
+ */
75180
75867
  name: string
75868
+ /**
75869
+ * True only when the domain is verified AND its governance binding is active — the condition for sending from it
75870
+ */
75181
75871
  active: boolean
75872
+ /**
75873
+ * AWS region hosting the SES identity, which fixes data residency; set at create time and immutable
75874
+ */
75182
75875
  region: string
75183
- status: string
75876
+ /**
75877
+ * 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
75878
+ */
75879
+ status: ("not_started" | "pending" | "verified" | "failed" | "temporary_failure")
75880
+ /**
75881
+ * DNS records to publish for this domain, each with its last-seen resolution status
75882
+ */
75184
75883
  records: {
75884
+ /**
75885
+ * Fully-qualified host the record is published at
75886
+ */
75185
75887
  name: string
75186
- type: string
75888
+ /**
75889
+ * DNS record type to publish
75890
+ */
75891
+ type: ("CNAME" | "TXT" | "MX")
75892
+ /**
75893
+ * Value the record must resolve to
75894
+ */
75187
75895
  value: string
75188
- purpose: string
75896
+ /**
75897
+ * What the record is for: dkim signs outgoing mail, spf authorises the sender, return-path-mx routes bounces back, dmarc states the policy
75898
+ */
75899
+ purpose: ("dkim" | "spf" | "return-path-mx" | "dmarc")
75900
+ /**
75901
+ * MX priority; present only on MX records
75902
+ */
75189
75903
  priority?: number
75190
- required: boolean
75904
+ /**
75905
+ * True if the domain cannot verify without this record; false if it is optional
75906
+ */
75907
+ required: boolean
75908
+ /**
75909
+ * True if the record was found in DNS at the last check; absent when no check has run
75910
+ */
75191
75911
  resolved?: boolean
75192
75912
  }[]
75913
+ /**
75914
+ * When the domain was registered (ISO 8601 UTC)
75915
+ */
75193
75916
  createdAt: string
75917
+ /**
75918
+ * When the domain record was last changed (ISO 8601 UTC)
75919
+ */
75194
75920
  updatedAt: string
75921
+ /**
75922
+ * When the domain became verified (ISO 8601 UTC); null while it is not
75923
+ */
75195
75924
  verifiedAt: (string | null)
75925
+ /**
75926
+ * Human-readable steps still outstanding before this domain can send
75927
+ */
75196
75928
  instructions: string[]
75929
+ /**
75930
+ * True if a 1x1 pixel is injected into outgoing mail to record opens
75931
+ */
75197
75932
  openTracking: boolean
75198
- bindingStatus: string
75933
+ /**
75934
+ * Governance binding state: pending while it is being granted, active once the domain may be used, failed if it could not be granted
75935
+ */
75936
+ bindingStatus: ("pending" | "active" | "failed")
75937
+ /**
75938
+ * True if links are rewritten through the tracking host to record clicks
75939
+ */
75199
75940
  clickTracking: boolean
75941
+ /**
75942
+ * Host used as the bounce (Return-Path) address, so bounces come back to this product
75943
+ */
75200
75944
  customReturnPath: string
75945
+ /**
75946
+ * Host serving the click redirect and the open pixel; null if tracking is off
75947
+ */
75201
75948
  trackingSubdomain: (string | null)
75949
+ /**
75950
+ * Id of the governance domain this one is registered under; null if it is not governed
75951
+ */
75202
75952
  governanceDomainId: (string | null)
75953
+ /**
75954
+ * Id of the binding between this product and the governance domain; null if unbound
75955
+ */
75203
75956
  governanceBindingId: (string | null)
75957
+ /**
75958
+ * When verification was first requested (ISO 8601 UTC)
75959
+ */
75204
75960
  verificationStartedAt: string
75961
+ /**
75962
+ * When DNS and SES were last checked (ISO 8601 UTC); null if no check has run yet
75963
+ */
75205
75964
  lastVerificationCheckAt: (string | null)
75206
75965
  }
75207
75966
 
75208
75967
  export interface MailDomainDeleteInput {
75209
75968
  /**
75210
- * Domain id to delete
75969
+ * Sending domain to delete, along with its SES identity
75211
75970
  */
75212
75971
  id: string
75213
75972
  }
75214
75973
 
75215
75974
  export interface MailDomainDeleteOutput {
75975
+ /**
75976
+ * True once the domain and its SES identity are gone
75977
+ */
75216
75978
  deleted: boolean
75217
75979
  }
75218
75980
 
75219
75981
  export interface MailDomainGetInput {
75220
75982
  /**
75221
- * Domain id
75983
+ * Sending domain id
75222
75984
  */
75223
75985
  id: string
75224
75986
  }
75225
75987
 
75226
75988
  export interface MailDomainGetOutput {
75989
+ /**
75990
+ * Sending domain id
75991
+ */
75227
75992
  id: string
75228
- tls: string
75993
+ /**
75994
+ * TLS policy for delivery: opportunistic falls back to plaintext if the recipient offers no TLS, enforced fails the send instead
75995
+ */
75996
+ tls: ("opportunistic" | "enforced")
75997
+ /**
75998
+ * Governed apex this domain sits under; null if it is not governed
75999
+ */
75229
76000
  apex: (string | null)
75230
- mode: (string | null)
76001
+ /**
76002
+ * 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
76003
+ */
76004
+ mode: (("external" | "managed") | null)
76005
+ /**
76006
+ * The sending domain itself, e.g. "example.com"
76007
+ */
75231
76008
  name: string
76009
+ /**
76010
+ * True only when the domain is verified AND its governance binding is active — the condition for sending from it
76011
+ */
75232
76012
  active: boolean
76013
+ /**
76014
+ * AWS region hosting the SES identity, which fixes data residency; set at create time and immutable
76015
+ */
75233
76016
  region: string
75234
- status: string
76017
+ /**
76018
+ * 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
76019
+ */
76020
+ status: ("not_started" | "pending" | "verified" | "failed" | "temporary_failure")
76021
+ /**
76022
+ * DNS records to publish for this domain, each with its last-seen resolution status
76023
+ */
75235
76024
  records: {
76025
+ /**
76026
+ * Fully-qualified host the record is published at
76027
+ */
75236
76028
  name: string
75237
- type: string
76029
+ /**
76030
+ * DNS record type to publish
76031
+ */
76032
+ type: ("CNAME" | "TXT" | "MX")
76033
+ /**
76034
+ * Value the record must resolve to
76035
+ */
75238
76036
  value: string
75239
- purpose: string
76037
+ /**
76038
+ * What the record is for: dkim signs outgoing mail, spf authorises the sender, return-path-mx routes bounces back, dmarc states the policy
76039
+ */
76040
+ purpose: ("dkim" | "spf" | "return-path-mx" | "dmarc")
76041
+ /**
76042
+ * MX priority; present only on MX records
76043
+ */
75240
76044
  priority?: number
76045
+ /**
76046
+ * True if the domain cannot verify without this record; false if it is optional
76047
+ */
75241
76048
  required: boolean
76049
+ /**
76050
+ * True if the record was found in DNS at the last check; absent when no check has run
76051
+ */
75242
76052
  resolved?: boolean
75243
76053
  }[]
76054
+ /**
76055
+ * When the domain was registered (ISO 8601 UTC)
76056
+ */
75244
76057
  createdAt: string
76058
+ /**
76059
+ * When the domain record was last changed (ISO 8601 UTC)
76060
+ */
75245
76061
  updatedAt: string
76062
+ /**
76063
+ * When the domain became verified (ISO 8601 UTC); null while it is not
76064
+ */
75246
76065
  verifiedAt: (string | null)
76066
+ /**
76067
+ * Human-readable steps still outstanding before this domain can send
76068
+ */
75247
76069
  instructions: string[]
76070
+ /**
76071
+ * True if a 1x1 pixel is injected into outgoing mail to record opens
76072
+ */
75248
76073
  openTracking: boolean
75249
- bindingStatus: string
76074
+ /**
76075
+ * Governance binding state: pending while it is being granted, active once the domain may be used, failed if it could not be granted
76076
+ */
76077
+ bindingStatus: ("pending" | "active" | "failed")
76078
+ /**
76079
+ * True if links are rewritten through the tracking host to record clicks
76080
+ */
75250
76081
  clickTracking: boolean
76082
+ /**
76083
+ * Host used as the bounce (Return-Path) address, so bounces come back to this product
76084
+ */
75251
76085
  customReturnPath: string
76086
+ /**
76087
+ * Host serving the click redirect and the open pixel; null if tracking is off
76088
+ */
75252
76089
  trackingSubdomain: (string | null)
76090
+ /**
76091
+ * Id of the governance domain this one is registered under; null if it is not governed
76092
+ */
75253
76093
  governanceDomainId: (string | null)
76094
+ /**
76095
+ * Id of the binding between this product and the governance domain; null if unbound
76096
+ */
75254
76097
  governanceBindingId: (string | null)
76098
+ /**
76099
+ * When verification was first requested (ISO 8601 UTC)
76100
+ */
75255
76101
  verificationStartedAt: string
76102
+ /**
76103
+ * When DNS and SES were last checked (ISO 8601 UTC); null if no check has run yet
76104
+ */
75256
76105
  lastVerificationCheckAt: (string | null)
75257
76106
  }
75258
76107
 
@@ -75260,170 +76109,485 @@ export interface MailDomainListInput {
75260
76109
 
75261
76110
  }
75262
76111
 
76112
+ /**
76113
+ * Sending domains registered for the current product
76114
+ */
75263
76115
  export type MailDomainListOutput = {
76116
+ /**
76117
+ * Sending domain id
76118
+ */
75264
76119
  id: string
75265
- tls: string
76120
+ /**
76121
+ * TLS policy for delivery: opportunistic falls back to plaintext if the recipient offers no TLS, enforced fails the send instead
76122
+ */
76123
+ tls: ("opportunistic" | "enforced")
76124
+ /**
76125
+ * Governed apex this domain sits under; null if it is not governed
76126
+ */
75266
76127
  apex: (string | null)
75267
- mode: (string | null)
76128
+ /**
76129
+ * 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
76130
+ */
76131
+ mode: (("external" | "managed") | null)
76132
+ /**
76133
+ * The sending domain itself, e.g. "example.com"
76134
+ */
75268
76135
  name: string
76136
+ /**
76137
+ * True only when the domain is verified AND its governance binding is active — the condition for sending from it
76138
+ */
75269
76139
  active: boolean
76140
+ /**
76141
+ * AWS region hosting the SES identity, which fixes data residency; set at create time and immutable
76142
+ */
75270
76143
  region: string
75271
- status: string
76144
+ /**
76145
+ * 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
76146
+ */
76147
+ status: ("not_started" | "pending" | "verified" | "failed" | "temporary_failure")
76148
+ /**
76149
+ * DNS records to publish for this domain, each with its last-seen resolution status
76150
+ */
75272
76151
  records: {
76152
+ /**
76153
+ * Fully-qualified host the record is published at
76154
+ */
75273
76155
  name: string
75274
- type: string
76156
+ /**
76157
+ * DNS record type to publish
76158
+ */
76159
+ type: ("CNAME" | "TXT" | "MX")
76160
+ /**
76161
+ * Value the record must resolve to
76162
+ */
75275
76163
  value: string
75276
- purpose: string
76164
+ /**
76165
+ * What the record is for: dkim signs outgoing mail, spf authorises the sender, return-path-mx routes bounces back, dmarc states the policy
76166
+ */
76167
+ purpose: ("dkim" | "spf" | "return-path-mx" | "dmarc")
76168
+ /**
76169
+ * MX priority; present only on MX records
76170
+ */
75277
76171
  priority?: number
76172
+ /**
76173
+ * True if the domain cannot verify without this record; false if it is optional
76174
+ */
75278
76175
  required: boolean
76176
+ /**
76177
+ * True if the record was found in DNS at the last check; absent when no check has run
76178
+ */
75279
76179
  resolved?: boolean
75280
76180
  }[]
76181
+ /**
76182
+ * When the domain was registered (ISO 8601 UTC)
76183
+ */
75281
76184
  createdAt: string
76185
+ /**
76186
+ * When the domain record was last changed (ISO 8601 UTC)
76187
+ */
75282
76188
  updatedAt: string
76189
+ /**
76190
+ * When the domain became verified (ISO 8601 UTC); null while it is not
76191
+ */
75283
76192
  verifiedAt: (string | null)
76193
+ /**
76194
+ * Human-readable steps still outstanding before this domain can send
76195
+ */
75284
76196
  instructions: string[]
76197
+ /**
76198
+ * True if a 1x1 pixel is injected into outgoing mail to record opens
76199
+ */
75285
76200
  openTracking: boolean
75286
- bindingStatus: string
76201
+ /**
76202
+ * Governance binding state: pending while it is being granted, active once the domain may be used, failed if it could not be granted
76203
+ */
76204
+ bindingStatus: ("pending" | "active" | "failed")
76205
+ /**
76206
+ * True if links are rewritten through the tracking host to record clicks
76207
+ */
75287
76208
  clickTracking: boolean
76209
+ /**
76210
+ * Host used as the bounce (Return-Path) address, so bounces come back to this product
76211
+ */
75288
76212
  customReturnPath: string
76213
+ /**
76214
+ * Host serving the click redirect and the open pixel; null if tracking is off
76215
+ */
75289
76216
  trackingSubdomain: (string | null)
76217
+ /**
76218
+ * Id of the governance domain this one is registered under; null if it is not governed
76219
+ */
75290
76220
  governanceDomainId: (string | null)
76221
+ /**
76222
+ * Id of the binding between this product and the governance domain; null if unbound
76223
+ */
75291
76224
  governanceBindingId: (string | null)
76225
+ /**
76226
+ * When verification was first requested (ISO 8601 UTC)
76227
+ */
75292
76228
  verificationStartedAt: string
76229
+ /**
76230
+ * When DNS and SES were last checked (ISO 8601 UTC); null if no check has run yet
76231
+ */
75293
76232
  lastVerificationCheckAt: (string | null)
75294
76233
  }[]
75295
76234
 
75296
76235
  export interface MailDomainUpdateInput {
75297
76236
  /**
75298
- * Domain id
76237
+ * Sending domain id
75299
76238
  */
75300
76239
  id: string
75301
76240
  /**
75302
- * TLS policy: opportunistic (default) or enforced
76241
+ * TLS policy: opportunistic (default) falls back to plaintext, enforced fails the send instead; omit to leave it unchanged
75303
76242
  */
75304
76243
  tls?: ("opportunistic" | "enforced")
75305
76244
  /**
75306
- * Enable open tracking (1×1 pixel); off by default
76245
+ * Record opens by injecting a 1x1 pixel (off by default); omit to leave it unchanged
75307
76246
  */
75308
76247
  openTracking?: boolean
75309
76248
  /**
75310
- * Enable click tracking (link rewrite); off by default
76249
+ * Record clicks by rewriting links through the tracking host (off by default); omit to leave it unchanged
75311
76250
  */
75312
76251
  clickTracking?: boolean
75313
76252
  /**
75314
- * Host used for the click-redirect and open-pixel
76253
+ * Host to serve the click redirect and open pixel from, or null to clear it; omit to leave it unchanged
75315
76254
  */
75316
76255
  trackingSubdomain?: (string | null)
75317
76256
  }
75318
76257
 
75319
76258
  export interface MailDomainUpdateOutput {
76259
+ /**
76260
+ * Sending domain id
76261
+ */
75320
76262
  id: string
75321
- tls: string
76263
+ /**
76264
+ * TLS policy for delivery: opportunistic falls back to plaintext if the recipient offers no TLS, enforced fails the send instead
76265
+ */
76266
+ tls: ("opportunistic" | "enforced")
76267
+ /**
76268
+ * Governed apex this domain sits under; null if it is not governed
76269
+ */
75322
76270
  apex: (string | null)
75323
- mode: (string | null)
76271
+ /**
76272
+ * 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
76273
+ */
76274
+ mode: (("external" | "managed") | null)
76275
+ /**
76276
+ * The sending domain itself, e.g. "example.com"
76277
+ */
75324
76278
  name: string
76279
+ /**
76280
+ * True only when the domain is verified AND its governance binding is active — the condition for sending from it
76281
+ */
75325
76282
  active: boolean
76283
+ /**
76284
+ * AWS region hosting the SES identity, which fixes data residency; set at create time and immutable
76285
+ */
75326
76286
  region: string
75327
- status: string
76287
+ /**
76288
+ * 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
76289
+ */
76290
+ status: ("not_started" | "pending" | "verified" | "failed" | "temporary_failure")
76291
+ /**
76292
+ * DNS records to publish for this domain, each with its last-seen resolution status
76293
+ */
75328
76294
  records: {
76295
+ /**
76296
+ * Fully-qualified host the record is published at
76297
+ */
75329
76298
  name: string
75330
- type: string
76299
+ /**
76300
+ * DNS record type to publish
76301
+ */
76302
+ type: ("CNAME" | "TXT" | "MX")
76303
+ /**
76304
+ * Value the record must resolve to
76305
+ */
75331
76306
  value: string
75332
- purpose: string
76307
+ /**
76308
+ * What the record is for: dkim signs outgoing mail, spf authorises the sender, return-path-mx routes bounces back, dmarc states the policy
76309
+ */
76310
+ purpose: ("dkim" | "spf" | "return-path-mx" | "dmarc")
76311
+ /**
76312
+ * MX priority; present only on MX records
76313
+ */
75333
76314
  priority?: number
76315
+ /**
76316
+ * True if the domain cannot verify without this record; false if it is optional
76317
+ */
75334
76318
  required: boolean
76319
+ /**
76320
+ * True if the record was found in DNS at the last check; absent when no check has run
76321
+ */
75335
76322
  resolved?: boolean
75336
76323
  }[]
76324
+ /**
76325
+ * When the domain was registered (ISO 8601 UTC)
76326
+ */
75337
76327
  createdAt: string
76328
+ /**
76329
+ * When the domain record was last changed (ISO 8601 UTC)
76330
+ */
75338
76331
  updatedAt: string
76332
+ /**
76333
+ * When the domain became verified (ISO 8601 UTC); null while it is not
76334
+ */
75339
76335
  verifiedAt: (string | null)
76336
+ /**
76337
+ * Human-readable steps still outstanding before this domain can send
76338
+ */
75340
76339
  instructions: string[]
76340
+ /**
76341
+ * True if a 1x1 pixel is injected into outgoing mail to record opens
76342
+ */
75341
76343
  openTracking: boolean
75342
- bindingStatus: string
76344
+ /**
76345
+ * Governance binding state: pending while it is being granted, active once the domain may be used, failed if it could not be granted
76346
+ */
76347
+ bindingStatus: ("pending" | "active" | "failed")
76348
+ /**
76349
+ * True if links are rewritten through the tracking host to record clicks
76350
+ */
75343
76351
  clickTracking: boolean
76352
+ /**
76353
+ * Host used as the bounce (Return-Path) address, so bounces come back to this product
76354
+ */
75344
76355
  customReturnPath: string
76356
+ /**
76357
+ * Host serving the click redirect and the open pixel; null if tracking is off
76358
+ */
75345
76359
  trackingSubdomain: (string | null)
76360
+ /**
76361
+ * Id of the governance domain this one is registered under; null if it is not governed
76362
+ */
75346
76363
  governanceDomainId: (string | null)
76364
+ /**
76365
+ * Id of the binding between this product and the governance domain; null if unbound
76366
+ */
75347
76367
  governanceBindingId: (string | null)
76368
+ /**
76369
+ * When verification was first requested (ISO 8601 UTC)
76370
+ */
75348
76371
  verificationStartedAt: string
76372
+ /**
76373
+ * When DNS and SES were last checked (ISO 8601 UTC); null if no check has run yet
76374
+ */
75349
76375
  lastVerificationCheckAt: (string | null)
75350
76376
  }
75351
76377
 
75352
76378
  export interface MailDomainVerifyInput {
75353
76379
  /**
75354
- * Domain id to re-check now
76380
+ * Sending domain to re-check against DNS and SES right now, instead of waiting for the next scheduled check
75355
76381
  */
75356
76382
  id: string
75357
76383
  }
75358
76384
 
75359
76385
  export interface MailDomainVerifyOutput {
76386
+ /**
76387
+ * Sending domain id
76388
+ */
75360
76389
  id: string
75361
- tls: string
76390
+ /**
76391
+ * TLS policy for delivery: opportunistic falls back to plaintext if the recipient offers no TLS, enforced fails the send instead
76392
+ */
76393
+ tls: ("opportunistic" | "enforced")
76394
+ /**
76395
+ * Governed apex this domain sits under; null if it is not governed
76396
+ */
75362
76397
  apex: (string | null)
75363
- mode: (string | null)
76398
+ /**
76399
+ * 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
76400
+ */
76401
+ mode: (("external" | "managed") | null)
76402
+ /**
76403
+ * The sending domain itself, e.g. "example.com"
76404
+ */
75364
76405
  name: string
76406
+ /**
76407
+ * True only when the domain is verified AND its governance binding is active — the condition for sending from it
76408
+ */
75365
76409
  active: boolean
76410
+ /**
76411
+ * AWS region hosting the SES identity, which fixes data residency; set at create time and immutable
76412
+ */
75366
76413
  region: string
75367
- status: string
76414
+ /**
76415
+ * 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
76416
+ */
76417
+ status: ("not_started" | "pending" | "verified" | "failed" | "temporary_failure")
76418
+ /**
76419
+ * DNS records to publish for this domain, each with its last-seen resolution status
76420
+ */
75368
76421
  records: {
76422
+ /**
76423
+ * Fully-qualified host the record is published at
76424
+ */
75369
76425
  name: string
75370
- type: string
76426
+ /**
76427
+ * DNS record type to publish
76428
+ */
76429
+ type: ("CNAME" | "TXT" | "MX")
76430
+ /**
76431
+ * Value the record must resolve to
76432
+ */
75371
76433
  value: string
75372
- purpose: string
76434
+ /**
76435
+ * What the record is for: dkim signs outgoing mail, spf authorises the sender, return-path-mx routes bounces back, dmarc states the policy
76436
+ */
76437
+ purpose: ("dkim" | "spf" | "return-path-mx" | "dmarc")
76438
+ /**
76439
+ * MX priority; present only on MX records
76440
+ */
75373
76441
  priority?: number
76442
+ /**
76443
+ * True if the domain cannot verify without this record; false if it is optional
76444
+ */
75374
76445
  required: boolean
76446
+ /**
76447
+ * True if the record was found in DNS at the last check; absent when no check has run
76448
+ */
75375
76449
  resolved?: boolean
75376
76450
  }[]
76451
+ /**
76452
+ * When the domain was registered (ISO 8601 UTC)
76453
+ */
75377
76454
  createdAt: string
76455
+ /**
76456
+ * When the domain record was last changed (ISO 8601 UTC)
76457
+ */
75378
76458
  updatedAt: string
76459
+ /**
76460
+ * When the domain became verified (ISO 8601 UTC); null while it is not
76461
+ */
75379
76462
  verifiedAt: (string | null)
76463
+ /**
76464
+ * Human-readable steps still outstanding before this domain can send
76465
+ */
75380
76466
  instructions: string[]
76467
+ /**
76468
+ * True if a 1x1 pixel is injected into outgoing mail to record opens
76469
+ */
75381
76470
  openTracking: boolean
75382
- bindingStatus: string
76471
+ /**
76472
+ * Governance binding state: pending while it is being granted, active once the domain may be used, failed if it could not be granted
76473
+ */
76474
+ bindingStatus: ("pending" | "active" | "failed")
76475
+ /**
76476
+ * True if links are rewritten through the tracking host to record clicks
76477
+ */
75383
76478
  clickTracking: boolean
76479
+ /**
76480
+ * Host used as the bounce (Return-Path) address, so bounces come back to this product
76481
+ */
75384
76482
  customReturnPath: string
76483
+ /**
76484
+ * Host serving the click redirect and the open pixel; null if tracking is off
76485
+ */
75385
76486
  trackingSubdomain: (string | null)
76487
+ /**
76488
+ * Id of the governance domain this one is registered under; null if it is not governed
76489
+ */
75386
76490
  governanceDomainId: (string | null)
76491
+ /**
76492
+ * Id of the binding between this product and the governance domain; null if unbound
76493
+ */
75387
76494
  governanceBindingId: (string | null)
76495
+ /**
76496
+ * When verification was first requested (ISO 8601 UTC)
76497
+ */
75388
76498
  verificationStartedAt: string
76499
+ /**
76500
+ * When DNS and SES were last checked (ISO 8601 UTC); null if no check has run yet
76501
+ */
75389
76502
  lastVerificationCheckAt: (string | null)
75390
76503
  }
75391
76504
 
75392
76505
  export interface MailEmailCancelInput {
75393
76506
  /**
75394
- * Email id
76507
+ * Email id — as returned by mail_email_send
75395
76508
  */
75396
76509
  id: string
75397
76510
  }
75398
76511
 
75399
76512
  export interface MailEmailCancelOutput {
76513
+ /**
76514
+ * Id of the canceled email
76515
+ */
75400
76516
  id: string
76517
+ /**
76518
+ * The email’s state after the call — always "canceled"
76519
+ */
75401
76520
  status: "canceled"
75402
76521
  }
75403
76522
 
75404
76523
  export interface MailEmailGetInput {
75405
76524
  /**
75406
- * Email id
76525
+ * Email id — as returned by mail_email_send
75407
76526
  */
75408
76527
  id: string
75409
76528
  }
75410
76529
 
75411
76530
  export interface MailEmailGetOutput {
76531
+ /**
76532
+ * Cc recipients; empty when there were none
76533
+ */
75412
76534
  cc: string[]
76535
+ /**
76536
+ * Email id
76537
+ */
75413
76538
  id: string
76539
+ /**
76540
+ * Primary recipients
76541
+ */
75414
76542
  to: string[]
76543
+ /**
76544
+ * Bcc recipients; empty when there were none. Never appeared in the message headers.
76545
+ */
75415
76546
  bcc: string[]
76547
+ /**
76548
+ * Sender the message was sent as
76549
+ */
75416
76550
  from: string
76551
+ /**
76552
+ * Where the email stands: scheduled, queued, sent, failed, canceled, delivered, bounced, complained, suppressed or blocked
76553
+ */
75417
76554
  status: ("scheduled" | "queued" | "sent" | "failed" | "canceled" | "delivered" | "bounced" | "complained" | "suppressed" | "blocked")
76555
+ /**
76556
+ * Subject line as sent, after any template rendering
76557
+ */
75418
76558
  subject: string
76559
+ /**
76560
+ * ISO-8601 instant the email was accepted
76561
+ */
75419
76562
  created_at: string
76563
+ /**
76564
+ * The latest lifecycle event, the reason `status` reads as it does
76565
+ */
75420
76566
  last_event: {
76567
+ /**
76568
+ * The most recent lifecycle event — `email.` followed by the status it moved to
76569
+ */
75421
76570
  type: ("email.scheduled" | "email.queued" | "email.sent" | "email.failed" | "email.canceled" | "email.delivered" | "email.bounced" | "email.complained" | "email.suppressed" | "email.blocked")
76571
+ /**
76572
+ * ISO-8601 instant of that event; null when no event has been recorded yet
76573
+ */
75422
76574
  created_at: (string | null)
75423
76575
  }
76576
+ /**
76577
+ * Template the email was rendered from; null for an inline send
76578
+ */
75424
76579
  template_id: (string | null)
76580
+ /**
76581
+ * ISO-8601 instant the email is scheduled for; null when it was sent immediately
76582
+ */
75425
76583
  scheduled_at: (string | null)
76584
+ /**
76585
+ * Name of that template; null for an inline send
76586
+ */
75426
76587
  template_name: (string | null)
76588
+ /**
76589
+ * The sending provider’s own id, for correlating with its logs; null until the email leaves
76590
+ */
75427
76591
  provider_message_id: (string | null)
75428
76592
  }
75429
76593
 
@@ -75441,38 +76605,41 @@ to?: (string | string[])
75441
76605
  */
75442
76606
  bcc?: (string | string[])
75443
76607
  /**
75444
- * Sender, e.g. "Name <you@your-domain.com>"
76608
+ * Sender on a verified domain, e.g. "Name <you@your-domain.com>"
75445
76609
  */
75446
76610
  from: string
75447
76611
  /**
75448
- * HTML body
76612
+ * HTML body. Inline sends only — forbidden with a template.
75449
76613
  */
75450
76614
  html?: string
75451
76615
  /**
75452
- * Metadata tags
76616
+ * Metadata tags attached to the message as `X-Tag-<name>` headers
75453
76617
  */
75454
76618
  tags?: {
75455
76619
  /**
75456
- * Tag name
76620
+ * Tag name — printable US-ASCII without a colon; becomes the `X-Tag-<name>` header
75457
76621
  */
75458
76622
  name: string
75459
76623
  /**
75460
- * Tag value
76624
+ * Tag value; must not contain CR or LF
75461
76625
  */
75462
76626
  value: string
75463
76627
  }[]
75464
76628
  /**
75465
- * Plain-text body; auto-derived from html if omitted
76629
+ * Plain-text body; auto-derived from html if omitted. Inline sends only.
75466
76630
  */
75467
76631
  text?: string
75468
76632
  /**
75469
- * Custom headers map
76633
+ * Custom MIME headers, keyed by header name
75470
76634
  */
75471
76635
  headers?: {
76636
+ /**
76637
+ * Header value; must not contain CR or LF
76638
+ */
75472
76639
  [k: string]: string
75473
76640
  }
75474
76641
  /**
75475
- * Email subject (required for inline sends)
76642
+ * Subject line, capped at the RFC-5322 line limit. Required for inline sends, forbidden with a template.
75476
76643
  */
75477
76644
  subject?: string
75478
76645
  /**
@@ -75488,25 +76655,28 @@ template?: {
75488
76655
  */
75489
76656
  id: string
75490
76657
  /**
75491
- * Values for the template variables
76658
+ * Values for the template variables. Defaults to {}.
75492
76659
  */
75493
76660
  variables?: {
75494
76661
  [k: string]: (string | number | boolean)
75495
76662
  }
75496
76663
  }
75497
76664
  /**
75498
- * ISO-8601 instant to send at; future, within 30 days. Omit to send now.
76665
+ * ISO-8601 instant to send at; must be in the future and within 30 days. Omit to send now.
75499
76666
  */
75500
76667
  scheduled_at?: string
75501
76668
  }
75502
76669
 
75503
76670
  export interface MailEmailSendOutput {
76671
+ /**
76672
+ * Id of the accepted email — pass it to mail_email_get to follow delivery
76673
+ */
75504
76674
  id: string
75505
76675
  }
75506
76676
 
75507
76677
  export interface MailEmailSendBatchInput {
75508
76678
  /**
75509
- * Up to 100 emails to send, each shaped like a single send
76679
+ * Up to 100 emails to send; `scheduled_at` is not allowed on a batch item
75510
76680
  */
75511
76681
  emails: {
75512
76682
  /**
@@ -75522,38 +76692,41 @@ to?: (string | string[])
75522
76692
  */
75523
76693
  bcc?: (string | string[])
75524
76694
  /**
75525
- * Sender, e.g. "Name <you@your-domain.com>"
76695
+ * Sender on a verified domain, e.g. "Name <you@your-domain.com>"
75526
76696
  */
75527
76697
  from: string
75528
76698
  /**
75529
- * HTML body
76699
+ * HTML body. Inline sends only — forbidden with a template.
75530
76700
  */
75531
76701
  html?: string
75532
76702
  /**
75533
- * Metadata tags
76703
+ * Metadata tags attached to the message as `X-Tag-<name>` headers
75534
76704
  */
75535
76705
  tags?: {
75536
76706
  /**
75537
- * Tag name
76707
+ * Tag name — printable US-ASCII without a colon; becomes the `X-Tag-<name>` header
75538
76708
  */
75539
76709
  name: string
75540
76710
  /**
75541
- * Tag value
76711
+ * Tag value; must not contain CR or LF
75542
76712
  */
75543
76713
  value: string
75544
76714
  }[]
75545
76715
  /**
75546
- * Plain-text body; auto-derived from html if omitted
76716
+ * Plain-text body; auto-derived from html if omitted. Inline sends only.
75547
76717
  */
75548
76718
  text?: string
75549
76719
  /**
75550
- * Custom headers map
76720
+ * Custom MIME headers, keyed by header name
75551
76721
  */
75552
76722
  headers?: {
76723
+ /**
76724
+ * Header value; must not contain CR or LF
76725
+ */
75553
76726
  [k: string]: string
75554
76727
  }
75555
76728
  /**
75556
- * Email subject (required for inline sends)
76729
+ * Subject line, capped at the RFC-5322 line limit. Required for inline sends, forbidden with a template.
75557
76730
  */
75558
76731
  subject?: string
75559
76732
  /**
@@ -75569,35 +76742,44 @@ template?: {
75569
76742
  */
75570
76743
  id: string
75571
76744
  /**
75572
- * Values for the template variables
76745
+ * Values for the template variables. Defaults to {}.
75573
76746
  */
75574
76747
  variables?: {
75575
76748
  [k: string]: (string | number | boolean)
75576
76749
  }
75577
76750
  }
75578
76751
  /**
75579
- * ISO-8601 instant to send at; future, within 30 days. Omit to send now.
76752
+ * ISO-8601 instant to send at; must be in the future and within 30 days. Omit to send now.
75580
76753
  */
75581
76754
  scheduled_at?: string
75582
76755
  }[]
75583
76756
  }
75584
76757
 
76758
+ /**
76759
+ * One entry per submitted email, in the order they were submitted
76760
+ */
75585
76761
  export type MailEmailSendBatchOutput = {
76762
+ /**
76763
+ * Id of the accepted email
76764
+ */
75586
76765
  id: string
75587
76766
  }[]
75588
76767
 
75589
76768
  export interface MailEmailUpdateInput {
75590
76769
  /**
75591
- * Email id
76770
+ * Email id — as returned by mail_email_send
75592
76771
  */
75593
76772
  id: string
75594
76773
  /**
75595
- * New ISO-8601 instant; future, within 30 days
76774
+ * New ISO-8601 instant to send at; must be in the future and within 30 days
75596
76775
  */
75597
76776
  scheduled_at: string
75598
76777
  }
75599
76778
 
75600
76779
  export interface MailEmailUpdateOutput {
76780
+ /**
76781
+ * Id of the accepted email — pass it to mail_email_get to follow delivery
76782
+ */
75601
76783
  id: string
75602
76784
  }
75603
76785
 
@@ -75606,116 +76788,272 @@ export interface MailReputationGetInput {
75606
76788
  }
75607
76789
 
75608
76790
  export interface MailReputationGetOutput {
76791
+ /**
76792
+ * True when sending is currently throttled because a rate crossed its threshold
76793
+ */
75609
76794
  gated: boolean
76795
+ /**
76796
+ * Emails sent in the window — the denominator of both rates
76797
+ */
75610
76798
  volume: number
76799
+ /**
76800
+ * Spam complaints in the window
76801
+ */
75611
76802
  complaints: number
76803
+ /**
76804
+ * The configured limits the rates above are compared against
76805
+ */
75612
76806
  thresholds: {
76807
+ /**
76808
+ * Emails needed in the window before either rate is acted on — below it the sample is too small to judge
76809
+ */
75613
76810
  min_volume: number
76811
+ /**
76812
+ * Ratio 0-1 at or above which sending is gated
76813
+ */
75614
76814
  complaint_rate: number
76815
+ /**
76816
+ * Ratio 0-1 at or above which sending is gated
76817
+ */
75615
76818
  hard_bounce_rate: number
75616
76819
  }
76820
+ /**
76821
+ * Length in days of the rolling window the rates below are measured over
76822
+ */
75617
76823
  window_days: number
76824
+ /**
76825
+ * Hard bounces in the window
76826
+ */
75618
76827
  hard_bounces: number
76828
+ /**
76829
+ * Complaints divided by volume, as a ratio 0-1 (0.001 = 0.1%)
76830
+ */
75619
76831
  complaint_rate: number
75620
- tripped_metric: (string | null)
76832
+ /**
76833
+ * Which rate crossed its threshold, or null when nothing did
76834
+ */
76835
+ tripped_metric: (("hard_bounce" | "complaint") | null)
76836
+ /**
76837
+ * Hard bounces divided by volume, as a ratio 0-1 (0.05 = 5%)
76838
+ */
75621
76839
  hard_bounce_rate: number
75622
76840
  }
75623
76841
 
75624
76842
  export interface MailStatsGetInput {
76843
+ /**
76844
+ * Rolling window the aggregation covers, ending now. Defaults to 30d.
76845
+ */
75625
76846
  period?: ("7d" | "30d" | "90d")
75626
76847
  }
75627
76848
 
75628
76849
  export interface MailStatsGetOutput {
76850
+ /**
76851
+ * The absolute instants the period resolved to
76852
+ */
75629
76853
  range: {
76854
+ /**
76855
+ * Exclusive end of the window (ISO-8601 instant, UTC)
76856
+ */
75630
76857
  to: string
76858
+ /**
76859
+ * Inclusive start of the window (ISO-8601 instant, UTC)
76860
+ */
75631
76861
  from: string
75632
76862
  }
76863
+ /**
76864
+ * Percent change of each total against the immediately preceding window of the same length
76865
+ */
75633
76866
  deltas: {
76867
+ /**
76868
+ * 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
76869
+ */
75634
76870
  sent: (number | null)
76871
+ /**
76872
+ * Change in bounced against the previous window, in percent; null when the previous window was empty
76873
+ */
75635
76874
  bounced: (number | null)
76875
+ /**
76876
+ * Change in delivered against the previous window, in percent; null when the previous window was empty
76877
+ */
75636
76878
  delivered: (number | null)
76879
+ /**
76880
+ * Change in complained against the previous window, in percent; null when the previous window was empty
76881
+ */
75637
76882
  complained: (number | null)
75638
76883
  }
75639
- period: string
76884
+ /**
76885
+ * The window these numbers cover — the echo of the requested period
76886
+ */
76887
+ period: ("7d" | "30d" | "90d")
76888
+ /**
76889
+ * Counts over the window
76890
+ */
75640
76891
  totals: {
76892
+ /**
76893
+ * Emails accepted for delivery in the window
76894
+ */
75641
76895
  sent: number
76896
+ /**
76897
+ * Emails that bounced, hard or soft
76898
+ */
75642
76899
  bounced: number
76900
+ /**
76901
+ * Emails the receiving server accepted
76902
+ */
75643
76903
  delivered: number
76904
+ /**
76905
+ * Emails a recipient marked as spam
76906
+ */
75644
76907
  complained: number
75645
76908
  }
76909
+ /**
76910
+ * One bucket per UTC day in the window, oldest first
76911
+ */
75646
76912
  volume: {
76913
+ /**
76914
+ * The UTC day this bucket covers, as YYYY-MM-DD
76915
+ */
75647
76916
  date: string
76917
+ /**
76918
+ * Emails accepted for delivery on this day
76919
+ */
75648
76920
  sent: number
76921
+ /**
76922
+ * Emails bounced on this day
76923
+ */
75649
76924
  bounced: number
76925
+ /**
76926
+ * Emails delivered on this day
76927
+ */
75650
76928
  delivered: number
75651
76929
  }[]
76930
+ /**
76931
+ * The three rates senders are judged on, as percentages of sent
76932
+ */
75652
76933
  deliverability: {
76934
+ /**
76935
+ * Bounced as a percentage of sent (0-100)
76936
+ */
75653
76937
  bouncedPct: number
76938
+ /**
76939
+ * Delivered as a percentage of sent (0-100)
76940
+ */
75654
76941
  deliveredPct: number
76942
+ /**
76943
+ * Complaints as a percentage of sent (0-100)
76944
+ */
75655
76945
  complainedPct: number
75656
76946
  }
75657
76947
  }
75658
76948
 
75659
76949
  export interface MailSuppressionAddInput {
75660
76950
  /**
75661
- * Optional free-text note
76951
+ * Optional free-text note explaining why the address was suppressed
75662
76952
  */
75663
76953
  note?: string
75664
76954
  /**
75665
- * Email address to suppress
76955
+ * Email address to suppress, e.g. "user@example.com"; matched case-insensitively
75666
76956
  */
75667
76957
  address: string
75668
76958
  }
75669
76959
 
75670
76960
  export interface MailSuppressionAddOutput {
76961
+ /**
76962
+ * Suppression entry id
76963
+ */
75671
76964
  id: string
76965
+ /**
76966
+ * Free-text note recorded when the entry was added by hand; null otherwise
76967
+ */
75672
76968
  note: (string | null)
75673
- reason: string
76969
+ /**
76970
+ * Why the address is suppressed: hard_bounce and complaint come from SES feedback, unsubscribe from the recipient, manual from mail_suppression_add
76971
+ */
76972
+ reason: ("hard_bounce" | "complaint" | "manual" | "unsubscribe")
76973
+ /**
76974
+ * The suppressed recipient address, lowercased and trimmed
76975
+ */
75674
76976
  address: string
76977
+ /**
76978
+ * When the address was suppressed (ISO 8601 UTC)
76979
+ */
75675
76980
  created_at: string
76981
+ /**
76982
+ * Id of the email event that caused the suppression; null for a manual entry
76983
+ */
75676
76984
  source_event_id: (string | null)
75677
76985
  }
75678
76986
 
75679
76987
  export interface MailSuppressionListInput {
75680
76988
  /**
75681
- * Case-insensitive substring match on address
76989
+ * Case-insensitive substring match on the address; omit for no address filter
75682
76990
  */
75683
76991
  q?: string
75684
76992
  /**
75685
- * Max items per page (1–100, default 50)
76993
+ * Max entries per page, 1-100 (default 50)
75686
76994
  */
75687
76995
  limit?: number
75688
76996
  /**
75689
- * Opaque pagination cursor from a prior page
76997
+ * Opaque pagination cursor from a prior page's next_cursor; omit for the first page
75690
76998
  */
75691
76999
  cursor?: string
75692
77000
  /**
75693
- * Filter by reason
77001
+ * Only return entries suppressed for this reason; omit for every reason
75694
77002
  */
75695
77003
  reason?: ("hard_bounce" | "complaint" | "manual" | "unsubscribe")
75696
77004
  }
75697
77005
 
75698
77006
  export interface MailSuppressionListOutput {
77007
+ /**
77008
+ * This page of suppression entries, newest first
77009
+ */
75699
77010
  items: {
77011
+ /**
77012
+ * Suppression entry id
77013
+ */
75700
77014
  id: string
77015
+ /**
77016
+ * Free-text note recorded when the entry was added by hand; null otherwise
77017
+ */
75701
77018
  note: (string | null)
75702
- reason: string
77019
+ /**
77020
+ * Why the address is suppressed: hard_bounce and complaint come from SES feedback, unsubscribe from the recipient, manual from mail_suppression_add
77021
+ */
77022
+ reason: ("hard_bounce" | "complaint" | "manual" | "unsubscribe")
77023
+ /**
77024
+ * The suppressed recipient address, lowercased and trimmed
77025
+ */
75703
77026
  address: string
77027
+ /**
77028
+ * When the address was suppressed (ISO 8601 UTC)
77029
+ */
75704
77030
  created_at: string
77031
+ /**
77032
+ * Id of the email event that caused the suppression; null for a manual entry
77033
+ */
75705
77034
  source_event_id: (string | null)
75706
77035
  }[]
77036
+ /**
77037
+ * Opaque cursor to pass back as `cursor` for the next page; null on the last page
77038
+ */
75707
77039
  next_cursor: (string | null)
75708
77040
  }
75709
77041
 
75710
77042
  export interface MailSuppressionRemoveInput {
75711
77043
  /**
75712
- * Email address to remove from the suppression list
77044
+ * Email address to remove from the suppression list; matched case-insensitively
75713
77045
  */
75714
77046
  address: string
75715
77047
  }
75716
77048
 
75717
77049
  export interface MailSuppressionRemoveOutput {
77050
+ /**
77051
+ * The address the removal was attempted for, as normalized
77052
+ */
75718
77053
  address: string
77054
+ /**
77055
+ * True if an entry was removed; false if the address was not suppressed (the call is idempotent)
77056
+ */
75719
77057
  removed: boolean
75720
77058
  }
75721
77059
 
@@ -79315,18 +80653,57 @@ optional?: boolean
79315
80653
  }
79316
80654
 
79317
80655
  export interface MailTemplateCreateOutput {
80656
+ /**
80657
+ * Template id
80658
+ */
79318
80659
  id: string
80660
+ /**
80661
+ * HTML body; may contain {{ variable }} placeholders
80662
+ */
79319
80663
  html: string
80664
+ /**
80665
+ * Human label for the template
80666
+ */
79320
80667
  name: string
80668
+ /**
80669
+ * Plaintext body; null when none was supplied
80670
+ */
79321
80671
  text: (string | null)
79322
- status: string
80672
+ /**
80673
+ * Lifecycle status: a draft is editable, a published template is not
80674
+ */
80675
+ status: ("draft" | "published")
80676
+ /**
80677
+ * Email subject; may contain {{ variable }} placeholders
80678
+ */
79323
80679
  subject: string
80680
+ /**
80681
+ * When the template was created (ISO 8601 UTC)
80682
+ */
79324
80683
  createdAt: string
80684
+ /**
80685
+ * When the template was last modified (ISO 8601 UTC)
80686
+ */
79325
80687
  updatedAt: string
80688
+ /**
80689
+ * Declared variables of this template (at most 20)
80690
+ */
79326
80691
  variables: {
80692
+ /**
80693
+ * Placeholder identifier used as {{ name }}
80694
+ */
79327
80695
  name: string
79328
- type: string
80696
+ /**
80697
+ * Declared type (metadata; rendered as string in v1)
80698
+ */
80699
+ type: ("string" | "number" | "boolean")
80700
+ /**
80701
+ * Value used when none is supplied
80702
+ */
79329
80703
  fallback?: string
80704
+ /**
80705
+ * If true, an absent value renders as empty string
80706
+ */
79330
80707
  optional: boolean
79331
80708
  }[]
79332
80709
  }
@@ -79339,6 +80716,9 @@ id: string
79339
80716
  }
79340
80717
 
79341
80718
  export interface MailTemplateDeleteOutput {
80719
+ /**
80720
+ * True once the template is gone
80721
+ */
79342
80722
  deleted: boolean
79343
80723
  }
79344
80724
 
@@ -79350,22 +80730,70 @@ id: string
79350
80730
  }
79351
80731
 
79352
80732
  export interface MailTemplateGetOutput {
80733
+ /**
80734
+ * Template id
80735
+ */
79353
80736
  id: string
80737
+ /**
80738
+ * HTML body; may contain {{ variable }} placeholders
80739
+ */
79354
80740
  html: string
80741
+ /**
80742
+ * Human label for the template
80743
+ */
79355
80744
  name: string
80745
+ /**
80746
+ * Plaintext body; null when none was supplied
80747
+ */
79356
80748
  text: (string | null)
80749
+ /**
80750
+ * Send-usage rollup for this template
80751
+ */
79357
80752
  usage: {
80753
+ /**
80754
+ * How many emails were sent from this template
80755
+ */
79358
80756
  email_count: number
80757
+ /**
80758
+ * When the template was last sent from (ISO 8601 UTC); null if never
80759
+ */
79359
80760
  last_sent_at: (string | null)
79360
80761
  }
79361
- status: string
80762
+ /**
80763
+ * Lifecycle status: a draft is editable, a published template is not
80764
+ */
80765
+ status: ("draft" | "published")
80766
+ /**
80767
+ * Email subject; may contain {{ variable }} placeholders
80768
+ */
79362
80769
  subject: string
80770
+ /**
80771
+ * When the template was created (ISO 8601 UTC)
80772
+ */
79363
80773
  createdAt: string
80774
+ /**
80775
+ * When the template was last modified (ISO 8601 UTC)
80776
+ */
79364
80777
  updatedAt: string
80778
+ /**
80779
+ * Declared variables of this template (at most 20)
80780
+ */
79365
80781
  variables: {
80782
+ /**
80783
+ * Placeholder identifier used as {{ name }}
80784
+ */
79366
80785
  name: string
79367
- type: string
80786
+ /**
80787
+ * Declared type (metadata; rendered as string in v1)
80788
+ */
80789
+ type: ("string" | "number" | "boolean")
80790
+ /**
80791
+ * Value used when none is supplied
80792
+ */
79368
80793
  fallback?: string
80794
+ /**
80795
+ * If true, an absent value renders as empty string
80796
+ */
79369
80797
  optional: boolean
79370
80798
  }[]
79371
80799
  }
@@ -79375,18 +80803,57 @@ export interface MailTemplateListInput {
79375
80803
  }
79376
80804
 
79377
80805
  export type MailTemplateListOutput = {
80806
+ /**
80807
+ * Template id
80808
+ */
79378
80809
  id: string
80810
+ /**
80811
+ * HTML body; may contain {{ variable }} placeholders
80812
+ */
79379
80813
  html: string
80814
+ /**
80815
+ * Human label for the template
80816
+ */
79380
80817
  name: string
80818
+ /**
80819
+ * Plaintext body; null when none was supplied
80820
+ */
79381
80821
  text: (string | null)
79382
- status: string
80822
+ /**
80823
+ * Lifecycle status: a draft is editable, a published template is not
80824
+ */
80825
+ status: ("draft" | "published")
80826
+ /**
80827
+ * Email subject; may contain {{ variable }} placeholders
80828
+ */
79383
80829
  subject: string
80830
+ /**
80831
+ * When the template was created (ISO 8601 UTC)
80832
+ */
79384
80833
  createdAt: string
80834
+ /**
80835
+ * When the template was last modified (ISO 8601 UTC)
80836
+ */
79385
80837
  updatedAt: string
80838
+ /**
80839
+ * Declared variables of this template (at most 20)
80840
+ */
79386
80841
  variables: {
80842
+ /**
80843
+ * Placeholder identifier used as {{ name }}
80844
+ */
79387
80845
  name: string
79388
- type: string
80846
+ /**
80847
+ * Declared type (metadata; rendered as string in v1)
80848
+ */
80849
+ type: ("string" | "number" | "boolean")
80850
+ /**
80851
+ * Value used when none is supplied
80852
+ */
79389
80853
  fallback?: string
80854
+ /**
80855
+ * If true, an absent value renders as empty string
80856
+ */
79390
80857
  optional: boolean
79391
80858
  }[]
79392
80859
  }[]
@@ -79399,18 +80866,57 @@ id: string
79399
80866
  }
79400
80867
 
79401
80868
  export interface MailTemplatePublishOutput {
80869
+ /**
80870
+ * Template id
80871
+ */
79402
80872
  id: string
80873
+ /**
80874
+ * HTML body; may contain {{ variable }} placeholders
80875
+ */
79403
80876
  html: string
80877
+ /**
80878
+ * Human label for the template
80879
+ */
79404
80880
  name: string
80881
+ /**
80882
+ * Plaintext body; null when none was supplied
80883
+ */
79405
80884
  text: (string | null)
79406
- status: string
80885
+ /**
80886
+ * Lifecycle status: a draft is editable, a published template is not
80887
+ */
80888
+ status: ("draft" | "published")
80889
+ /**
80890
+ * Email subject; may contain {{ variable }} placeholders
80891
+ */
79407
80892
  subject: string
80893
+ /**
80894
+ * When the template was created (ISO 8601 UTC)
80895
+ */
79408
80896
  createdAt: string
80897
+ /**
80898
+ * When the template was last modified (ISO 8601 UTC)
80899
+ */
79409
80900
  updatedAt: string
80901
+ /**
80902
+ * Declared variables of this template (at most 20)
80903
+ */
79410
80904
  variables: {
80905
+ /**
80906
+ * Placeholder identifier used as {{ name }}
80907
+ */
79411
80908
  name: string
79412
- type: string
80909
+ /**
80910
+ * Declared type (metadata; rendered as string in v1)
80911
+ */
80912
+ type: ("string" | "number" | "boolean")
80913
+ /**
80914
+ * Value used when none is supplied
80915
+ */
79413
80916
  fallback?: string
80917
+ /**
80918
+ * If true, an absent value renders as empty string
80919
+ */
79414
80920
  optional: boolean
79415
80921
  }[]
79416
80922
  }
@@ -79420,11 +80926,25 @@ export interface MailTemplateUpdateInput {
79420
80926
  * Template id
79421
80927
  */
79422
80928
  id: string
80929
+ /**
80930
+ * New HTML body; unchanged when omitted
80931
+ */
79423
80932
  html?: string
80933
+ /**
80934
+ * New human label; unchanged when omitted
80935
+ */
79424
80936
  name?: string
80937
+ /**
80938
+ * New plaintext body; null clears it and it is re-derived from html. Unchanged when omitted
80939
+ */
79425
80940
  text?: (string | null)
80941
+ /**
80942
+ * New email subject; may contain {{ variable }} placeholders. Unchanged when omitted
80943
+ */
79426
80944
  subject?: string
79427
80945
  /**
80946
+ * Replacement list of declared variables ([{name,type,optional,fallback}], <=20). Unchanged when omitted
80947
+ *
79428
80948
  * @maxItems 20
79429
80949
  */
79430
80950
  variables?: []|[{
@@ -83001,18 +84521,57 @@ optional?: boolean
83001
84521
  }
83002
84522
 
83003
84523
  export interface MailTemplateUpdateOutput {
84524
+ /**
84525
+ * Template id
84526
+ */
83004
84527
  id: string
84528
+ /**
84529
+ * HTML body; may contain {{ variable }} placeholders
84530
+ */
83005
84531
  html: string
84532
+ /**
84533
+ * Human label for the template
84534
+ */
83006
84535
  name: string
84536
+ /**
84537
+ * Plaintext body; null when none was supplied
84538
+ */
83007
84539
  text: (string | null)
83008
- status: string
84540
+ /**
84541
+ * Lifecycle status: a draft is editable, a published template is not
84542
+ */
84543
+ status: ("draft" | "published")
84544
+ /**
84545
+ * Email subject; may contain {{ variable }} placeholders
84546
+ */
83009
84547
  subject: string
84548
+ /**
84549
+ * When the template was created (ISO 8601 UTC)
84550
+ */
83010
84551
  createdAt: string
84552
+ /**
84553
+ * When the template was last modified (ISO 8601 UTC)
84554
+ */
83011
84555
  updatedAt: string
84556
+ /**
84557
+ * Declared variables of this template (at most 20)
84558
+ */
83012
84559
  variables: {
84560
+ /**
84561
+ * Placeholder identifier used as {{ name }}
84562
+ */
83013
84563
  name: string
83014
- type: string
84564
+ /**
84565
+ * Declared type (metadata; rendered as string in v1)
84566
+ */
84567
+ type: ("string" | "number" | "boolean")
84568
+ /**
84569
+ * Value used when none is supplied
84570
+ */
83015
84571
  fallback?: string
84572
+ /**
84573
+ * If true, an absent value renders as empty string
84574
+ */
83016
84575
  optional: boolean
83017
84576
  }[]
83018
84577
  }
@@ -83022,37 +84581,88 @@ export interface MailUsageGetInput {
83022
84581
  }
83023
84582
 
83024
84583
  export interface MailUsageGetOutput {
84584
+ /**
84585
+ * Email sending usage against the free-tier limits
84586
+ */
83025
84587
  emails: {
83026
- day: MailUsageGetOutputDay
83027
- month: MailUsageGetOutputDay
84588
+ /**
84589
+ * Sending allowance today (UTC)
84590
+ */
84591
+ day: {
84592
+ /**
84593
+ * Emails accepted for delivery so far today (UTC)
84594
+ */
84595
+ used: number
84596
+ /**
84597
+ * Free-tier allowance today (UTC)
84598
+ */
84599
+ limit: number
84600
+ /**
84601
+ * Allowance left today (UTC) — limit minus used, never below zero
84602
+ */
84603
+ remaining: number
84604
+ }
84605
+ /**
84606
+ * Sending allowance this month (UTC)
84607
+ */
84608
+ month: {
84609
+ /**
84610
+ * Emails accepted for delivery so far this month (UTC)
84611
+ */
84612
+ used: number
84613
+ /**
84614
+ * Free-tier allowance this month (UTC)
84615
+ */
84616
+ limit: number
84617
+ /**
84618
+ * Allowance left this month (UTC) — limit minus used, never below zero
84619
+ */
84620
+ remaining: number
84621
+ }
84622
+ /**
84623
+ * True when a further send would be refused right now because a limit or the hard cap is reached
84624
+ */
83028
84625
  blocked: boolean
84626
+ /**
84627
+ * Monthly ceiling that cannot be exceeded even with an allowance left elsewhere
84628
+ */
83029
84629
  hard_cap: number
83030
84630
  }
84631
+ /**
84632
+ * The two windows the counters below are scoped to
84633
+ */
83031
84634
  period: {
84635
+ /**
84636
+ * The UTC day the daily counters cover, as YYYY-MM-DD
84637
+ */
83032
84638
  day: string
84639
+ /**
84640
+ * The UTC month the monthly counters cover, as YYYY-MM
84641
+ */
83033
84642
  month: string
83034
84643
  }
84644
+ /**
84645
+ * Point-in-time contact storage — a stock, not a per-period flow
84646
+ */
83035
84647
  contacts: {
84648
+ /**
84649
+ * Contacts stored for the product at this instant
84650
+ */
83036
84651
  count: number
83037
84652
  }
83038
84653
  }
83039
- export interface MailUsageGetOutputDay {
83040
- used: number
83041
- limit: number
83042
- remaining: number
83043
- }
83044
84654
 
83045
84655
  export interface MailWebhookCreateInput {
83046
84656
  /**
83047
- * HTTPS URL that signed events are POSTed to
84657
+ * HTTPS URL that signed events are POSTed to; plain http is rejected
83048
84658
  */
83049
84659
  url: string
83050
84660
  /**
83051
- * Optional human label
84661
+ * Optional human label for the endpoint, e.g. "billing service"
83052
84662
  */
83053
84663
  description?: string
83054
84664
  /**
83055
- * Event types to deliver. One or more of: email.delivered, email.bounced, email.complained, email.suppressed, email.opened, email.clicked
84665
+ * Event types to deliver; at least one. One or more of: email.delivered, email.bounced, email.complained, email.suppressed, email.opened, email.clicked
83056
84666
  *
83057
84667
  * @minItems 1
83058
84668
  */
@@ -83060,50 +84670,116 @@ enabled_events: [("email.delivered" | "email.bounced" | "email.complained" | "em
83060
84670
  }
83061
84671
 
83062
84672
  export interface MailWebhookCreateOutput {
84673
+ /**
84674
+ * Webhook endpoint id
84675
+ */
83063
84676
  id: string
84677
+ /**
84678
+ * HTTPS URL that signed events are POSTed to
84679
+ */
83064
84680
  url: string
84681
+ /**
84682
+ * Signing secret for verifying the delivery signature. Returned only when the endpoint is created and never retrievable again — store it now
84683
+ */
83065
84684
  secret: string
84685
+ /**
84686
+ * False if delivery is switched off — the endpoint is kept but nothing is sent to it
84687
+ */
83066
84688
  enabled: boolean
84689
+ /**
84690
+ * When the endpoint was registered (ISO 8601 UTC)
84691
+ */
83067
84692
  created_at: string
84693
+ /**
84694
+ * When the endpoint was last changed (ISO 8601 UTC)
84695
+ */
83068
84696
  updated_at: string
84697
+ /**
84698
+ * Human label for the endpoint; null if none was given
84699
+ */
83069
84700
  description: (string | null)
83070
- enabled_events: string[]
84701
+ /**
84702
+ * Event types this endpoint receives; anything else is not delivered to it
84703
+ */
84704
+ enabled_events: ("email.delivered" | "email.bounced" | "email.complained" | "email.suppressed" | "email.opened" | "email.clicked")[]
83071
84705
  }
83072
84706
 
83073
84707
  export interface MailWebhookDeleteInput {
83074
84708
  /**
83075
- * Webhook endpoint id
84709
+ * Webhook endpoint id; deleting it also discards its delivery history
83076
84710
  */
83077
84711
  id: string
83078
84712
  }
83079
84713
 
83080
84714
  export interface MailWebhookDeleteOutput {
84715
+ /**
84716
+ * Id of the endpoint that was deleted
84717
+ */
83081
84718
  id: string
84719
+ /**
84720
+ * True once the endpoint and its delivery history are gone
84721
+ */
83082
84722
  deleted: boolean
83083
84723
  }
83084
84724
 
83085
84725
  export interface MailWebhookDeliveriesListInput {
83086
84726
  /**
83087
- * Webhook endpoint id
84727
+ * Webhook endpoint whose delivery attempts to list
83088
84728
  */
83089
84729
  id: string
83090
84730
  /**
83091
- * Max items (1-100, default 50)
84731
+ * Max delivery attempts to return, 1-100 (default 50)
83092
84732
  */
83093
84733
  limit?: number
83094
84734
  }
83095
84735
 
84736
+ /**
84737
+ * Recent delivery attempts for the endpoint, newest first
84738
+ */
83096
84739
  export type MailWebhookDeliveriesListOutput = {
84740
+ /**
84741
+ * Delivery attempt id
84742
+ */
83097
84743
  id: string
83098
- status: string
84744
+ /**
84745
+ * Delivery state: pending while attempts remain, succeeded once the endpoint answered 2xx, failed once retries are exhausted
84746
+ */
84747
+ status: ("pending" | "succeeded" | "failed")
84748
+ /**
84749
+ * How many times delivery has been attempted so far
84750
+ */
83099
84751
  attempts: number
84752
+ /**
84753
+ * Id of the email event that was delivered
84754
+ */
83100
84755
  event_id: string
84756
+ /**
84757
+ * When the delivery was queued (ISO 8601 UTC)
84758
+ */
83101
84759
  created_at: string
83102
- event_type: string
84760
+ /**
84761
+ * Type of the delivered event
84762
+ */
84763
+ event_type: ("email.delivered" | "email.bounced" | "email.complained" | "email.suppressed" | "email.opened" | "email.clicked")
84764
+ /**
84765
+ * Error from the last failed attempt; null if the last attempt succeeded or none has run
84766
+ */
83103
84767
  last_error: (string | null)
84768
+ /**
84769
+ * When the delivery record was last updated (ISO 8601 UTC)
84770
+ */
83104
84771
  updated_at: string
84772
+ /**
84773
+ * Id of the webhook endpoint the event was delivered to
84774
+ */
83105
84775
  endpoint_id: string
84776
+ /**
84777
+ * When delivery was last attempted (ISO 8601 UTC); null before the first attempt
84778
+ */
83106
84779
  last_attempt_at: (string | null)
84780
+ /**
84781
+ * HTTP status the endpoint returned on the last attempt; null if it could not be reached
84782
+ */
83107
84783
  response_status: (number | null)
83108
84784
  }[]
83109
84785
 
@@ -83115,27 +84791,72 @@ id: string
83115
84791
  }
83116
84792
 
83117
84793
  export interface MailWebhookGetOutput {
84794
+ /**
84795
+ * Webhook endpoint id
84796
+ */
83118
84797
  id: string
84798
+ /**
84799
+ * HTTPS URL that signed events are POSTed to
84800
+ */
83119
84801
  url: string
84802
+ /**
84803
+ * False if delivery is switched off — the endpoint is kept but nothing is sent to it
84804
+ */
83120
84805
  enabled: boolean
84806
+ /**
84807
+ * When the endpoint was registered (ISO 8601 UTC)
84808
+ */
83121
84809
  created_at: string
84810
+ /**
84811
+ * When the endpoint was last changed (ISO 8601 UTC)
84812
+ */
83122
84813
  updated_at: string
84814
+ /**
84815
+ * Human label for the endpoint; null if none was given
84816
+ */
83123
84817
  description: (string | null)
83124
- enabled_events: string[]
84818
+ /**
84819
+ * Event types this endpoint receives; anything else is not delivered to it
84820
+ */
84821
+ enabled_events: ("email.delivered" | "email.bounced" | "email.complained" | "email.suppressed" | "email.opened" | "email.clicked")[]
83125
84822
  }
83126
84823
 
83127
84824
  export interface MailWebhookListInput {
83128
84825
 
83129
84826
  }
83130
84827
 
84828
+ /**
84829
+ * Webhook endpoints for the current product, signing secrets omitted
84830
+ */
83131
84831
  export type MailWebhookListOutput = {
84832
+ /**
84833
+ * Webhook endpoint id
84834
+ */
83132
84835
  id: string
84836
+ /**
84837
+ * HTTPS URL that signed events are POSTed to
84838
+ */
83133
84839
  url: string
84840
+ /**
84841
+ * False if delivery is switched off — the endpoint is kept but nothing is sent to it
84842
+ */
83134
84843
  enabled: boolean
84844
+ /**
84845
+ * When the endpoint was registered (ISO 8601 UTC)
84846
+ */
83135
84847
  created_at: string
84848
+ /**
84849
+ * When the endpoint was last changed (ISO 8601 UTC)
84850
+ */
83136
84851
  updated_at: string
84852
+ /**
84853
+ * Human label for the endpoint; null if none was given
84854
+ */
83137
84855
  description: (string | null)
83138
- enabled_events: string[]
84856
+ /**
84857
+ * Event types this endpoint receives; anything else is not delivered to it
84858
+ */
84859
+ enabled_events: ("email.delivered" | "email.bounced" | "email.complained" | "email.suppressed" | "email.opened" | "email.clicked")[]
83139
84860
  }[]
83140
84861
 
83141
84862
  export interface MailWebhookUpdateInput {
@@ -83144,19 +84865,19 @@ export interface MailWebhookUpdateInput {
83144
84865
  */
83145
84866
  id: string
83146
84867
  /**
83147
- * HTTPS URL that signed events are POSTed to
84868
+ * New HTTPS delivery URL; omit to leave it unchanged
83148
84869
  */
83149
84870
  url?: string
83150
84871
  /**
83151
- * Enable (true) or disable (false) delivery
84872
+ * Switch delivery on (true) or off (false); omit to leave it unchanged
83152
84873
  */
83153
84874
  enabled?: boolean
83154
84875
  /**
83155
- * Optional human label
84876
+ * New human label, or null to clear it; omit to leave it unchanged
83156
84877
  */
83157
84878
  description?: (string | null)
83158
84879
  /**
83159
- * Event types to deliver. One or more of: email.delivered, email.bounced, email.complained, email.suppressed, email.opened, email.clicked
84880
+ * Replace the delivered event types; omit to leave them unchanged
83160
84881
  *
83161
84882
  * @minItems 1
83162
84883
  */
@@ -83164,13 +84885,34 @@ enabled_events?: [("email.delivered" | "email.bounced" | "email.complained" | "e
83164
84885
  }
83165
84886
 
83166
84887
  export interface MailWebhookUpdateOutput {
84888
+ /**
84889
+ * Webhook endpoint id
84890
+ */
83167
84891
  id: string
84892
+ /**
84893
+ * HTTPS URL that signed events are POSTed to
84894
+ */
83168
84895
  url: string
84896
+ /**
84897
+ * False if delivery is switched off — the endpoint is kept but nothing is sent to it
84898
+ */
83169
84899
  enabled: boolean
84900
+ /**
84901
+ * When the endpoint was registered (ISO 8601 UTC)
84902
+ */
83170
84903
  created_at: string
84904
+ /**
84905
+ * When the endpoint was last changed (ISO 8601 UTC)
84906
+ */
83171
84907
  updated_at: string
84908
+ /**
84909
+ * Human label for the endpoint; null if none was given
84910
+ */
83172
84911
  description: (string | null)
83173
- enabled_events: string[]
84912
+ /**
84913
+ * Event types this endpoint receives; anything else is not delivered to it
84914
+ */
84915
+ enabled_events: ("email.delivered" | "email.bounced" | "email.complained" | "email.suppressed" | "email.opened" | "email.clicked")[]
83174
84916
  }
83175
84917
 
83176
84918
  export interface ObserveAlertsCreateInput {