@marlinjai/mail-contract 0.15.2 → 0.16.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.
- package/dist/index.d.mts +943 -39429
- package/dist/index.d.ts +943 -39429
- package/dist/index.js +308 -178
- package/dist/index.mjs +298 -178
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -2962,6 +2962,10 @@ var AUDIT_ACTIONS = [
|
|
|
2962
2962
|
"provider.events_secret_set",
|
|
2963
2963
|
"provider.bounces_halted",
|
|
2964
2964
|
"provider.anomaly_cleared",
|
|
2965
|
+
"sending_domain.created",
|
|
2966
|
+
"sending_domain.updated",
|
|
2967
|
+
"sending_domain.checked",
|
|
2968
|
+
"sending_domain.deleted",
|
|
2965
2969
|
"topic.created",
|
|
2966
2970
|
"topic.updated",
|
|
2967
2971
|
"topic.deleted",
|
|
@@ -3793,7 +3797,7 @@ var ProviderRejections = z13.object({
|
|
|
3793
3797
|
});
|
|
3794
3798
|
var ProviderEvents = z13.object({
|
|
3795
3799
|
status: z13.enum(["active", "needs_secret"]),
|
|
3796
|
-
source: z13.enum(["automatic", "manual"]).nullable(),
|
|
3800
|
+
source: z13.enum(["automatic", "manual", "managed"]).nullable(),
|
|
3797
3801
|
url: z13.string().url(),
|
|
3798
3802
|
error: z13.string().nullable(),
|
|
3799
3803
|
/**
|
|
@@ -3880,36 +3884,86 @@ var ProviderVerifyResult = z13.object({
|
|
|
3880
3884
|
error: z13.string().nullable()
|
|
3881
3885
|
});
|
|
3882
3886
|
|
|
3883
|
-
// src/
|
|
3887
|
+
// src/sending-domains.ts
|
|
3884
3888
|
import { z as z14 } from "zod";
|
|
3885
|
-
var
|
|
3889
|
+
var SENDING_DOMAIN_STATUSES = ["pending_dns", "verifying", "verified", "failed", "temporary_failure"];
|
|
3890
|
+
var SendingDomainStatus = z14.enum(SENDING_DOMAIN_STATUSES);
|
|
3891
|
+
var SENDING_DOMAIN_DNS_MODES = ["manual", "managed"];
|
|
3892
|
+
var SendingDomainDnsMode = z14.enum(SENDING_DOMAIN_DNS_MODES);
|
|
3893
|
+
var SENDING_DOMAIN_REGION = "eu-west-1";
|
|
3894
|
+
var SendingDomainName = z14.string().trim().toLowerCase().max(253).regex(
|
|
3895
|
+
/^(?=.{1,253}$)(?!-)[a-z0-9-]{1,63}(?<!-)(\.(?!-)[a-z0-9-]{1,63}(?<!-))*\.[a-z]{2,63}$/,
|
|
3896
|
+
"must be a domain such as example.com, without https:// or an @"
|
|
3897
|
+
);
|
|
3898
|
+
var SendingDomainRecord = z14.object({
|
|
3899
|
+
record: z14.string().max(40),
|
|
3900
|
+
name: z14.string().max(253),
|
|
3901
|
+
type: z14.string().max(10),
|
|
3902
|
+
value: z14.string().max(4096),
|
|
3903
|
+
ttl: z14.string().max(20),
|
|
3904
|
+
status: z14.string().max(40),
|
|
3905
|
+
priority: z14.number().int().min(0).max(65535).optional()
|
|
3906
|
+
});
|
|
3907
|
+
var SendingDomain = z14.object({
|
|
3908
|
+
id: Id,
|
|
3909
|
+
domain: z14.string(),
|
|
3910
|
+
from_name: z14.string(),
|
|
3911
|
+
from_email: Email,
|
|
3912
|
+
reply_to: Email.nullable(),
|
|
3913
|
+
status: SendingDomainStatus,
|
|
3914
|
+
dns_mode: SendingDomainDnsMode,
|
|
3915
|
+
records: z14.array(SendingDomainRecord),
|
|
3916
|
+
provider_id: Id.nullable(),
|
|
3917
|
+
checked_at: Timestamp.nullable(),
|
|
3918
|
+
verified_at: Timestamp.nullable(),
|
|
3919
|
+
last_error: z14.string().nullable(),
|
|
3920
|
+
created_at: Timestamp,
|
|
3921
|
+
updated_at: Timestamp
|
|
3922
|
+
});
|
|
3923
|
+
var SenderFields = {
|
|
3924
|
+
from_name: z14.string().trim().min(1).max(120),
|
|
3925
|
+
from_email: Email,
|
|
3926
|
+
reply_to: Email.nullable().optional()
|
|
3927
|
+
};
|
|
3928
|
+
function senderOnDomain(input, ctx) {
|
|
3929
|
+
const at = input.from_email.lastIndexOf("@");
|
|
3930
|
+
if (at < 0 || input.from_email.slice(at + 1).toLowerCase() !== input.domain) {
|
|
3931
|
+
ctx.addIssue({ code: z14.ZodIssueCode.custom, path: ["from_email"], message: `must be an address on ${input.domain}` });
|
|
3932
|
+
}
|
|
3933
|
+
}
|
|
3934
|
+
var SendingDomainCreate = z14.object({ domain: SendingDomainName, ...SenderFields }).superRefine(senderOnDomain);
|
|
3935
|
+
var SendingDomainUpdate = z14.object({ from_name: SenderFields.from_name.optional(), from_email: Email.optional(), reply_to: Email.nullable().optional() }).refine((v) => Object.keys(v).length > 0, "nothing to change");
|
|
3936
|
+
|
|
3937
|
+
// src/contacts.ts
|
|
3938
|
+
import { z as z15 } from "zod";
|
|
3939
|
+
var Topic = z15.object({
|
|
3886
3940
|
id: Id,
|
|
3887
3941
|
slug: Slug,
|
|
3888
|
-
name:
|
|
3942
|
+
name: z15.string().min(1).max(120),
|
|
3889
3943
|
/** Shown on the hosted preference page. */
|
|
3890
|
-
description:
|
|
3944
|
+
description: z15.string().max(1e3).nullable(),
|
|
3891
3945
|
/** Translations of `name` and `description` per locale, for the hosted page. */
|
|
3892
|
-
translations:
|
|
3893
|
-
|
|
3946
|
+
translations: z15.record(
|
|
3947
|
+
z15.object({ name: z15.string().min(1).max(120), description: z15.string().max(1e3).nullable() })
|
|
3894
3948
|
),
|
|
3895
3949
|
created_at: Timestamp,
|
|
3896
3950
|
updated_at: Timestamp
|
|
3897
3951
|
});
|
|
3898
|
-
var TopicCreate =
|
|
3952
|
+
var TopicCreate = z15.object({
|
|
3899
3953
|
slug: Slug,
|
|
3900
|
-
name:
|
|
3901
|
-
description:
|
|
3954
|
+
name: z15.string().min(1).max(120),
|
|
3955
|
+
description: z15.string().max(1e3).optional(),
|
|
3902
3956
|
translations: Topic.shape.translations.optional()
|
|
3903
3957
|
});
|
|
3904
3958
|
var TopicUpdate = TopicCreate.omit({ slug: true }).partial().refine((v) => Object.keys(v).length > 0, "at least one field");
|
|
3905
|
-
var Contact =
|
|
3959
|
+
var Contact = z15.object({
|
|
3906
3960
|
id: Id,
|
|
3907
|
-
external_id:
|
|
3961
|
+
external_id: z15.string().min(1).max(255).nullable(),
|
|
3908
3962
|
/** Stored lowercased, unique per workspace. */
|
|
3909
3963
|
email: Email,
|
|
3910
|
-
first_name:
|
|
3911
|
-
last_name:
|
|
3912
|
-
locale:
|
|
3964
|
+
first_name: z15.string().max(200).nullable(),
|
|
3965
|
+
last_name: z15.string().max(200).nullable(),
|
|
3966
|
+
locale: z15.string().min(2).max(35).nullable(),
|
|
3913
3967
|
/**
|
|
3914
3968
|
* The person's own time zone, an IANA name such as `Europe/Berlin` (A1).
|
|
3915
3969
|
* Every wall clock an automation waits for is read in it, falling back to the
|
|
@@ -3917,65 +3971,65 @@ var Contact = z14.object({
|
|
|
3917
3971
|
*/
|
|
3918
3972
|
timezone: TimezoneName.nullable(),
|
|
3919
3973
|
properties: Properties,
|
|
3920
|
-
topics:
|
|
3974
|
+
topics: z15.array(Slug),
|
|
3921
3975
|
/** The slugs of the contact's tags (S4). */
|
|
3922
|
-
tags:
|
|
3976
|
+
tags: z15.array(Slug),
|
|
3923
3977
|
created_at: Timestamp,
|
|
3924
3978
|
updated_at: Timestamp
|
|
3925
3979
|
});
|
|
3926
|
-
var ContactUpsert =
|
|
3927
|
-
external_id:
|
|
3980
|
+
var ContactUpsert = z15.object({
|
|
3981
|
+
external_id: z15.string().min(1).max(255).optional(),
|
|
3928
3982
|
email: Email.optional(),
|
|
3929
|
-
first_name:
|
|
3930
|
-
last_name:
|
|
3931
|
-
locale:
|
|
3983
|
+
first_name: z15.string().max(200).nullable().optional(),
|
|
3984
|
+
last_name: z15.string().max(200).nullable().optional(),
|
|
3985
|
+
locale: z15.string().min(2).max(35).nullable().optional(),
|
|
3932
3986
|
timezone: TimezoneName.nullable().optional(),
|
|
3933
3987
|
properties: Properties.optional(),
|
|
3934
|
-
topics:
|
|
3988
|
+
topics: z15.array(Slug).max(100).optional()
|
|
3935
3989
|
}).refine((v) => v.external_id !== void 0 || v.email !== void 0, {
|
|
3936
3990
|
message: "external_id or email is required",
|
|
3937
3991
|
path: ["email"]
|
|
3938
3992
|
});
|
|
3939
|
-
var ContactUpsertResult =
|
|
3993
|
+
var ContactUpsertResult = z15.object({
|
|
3940
3994
|
contact: Contact,
|
|
3941
|
-
created:
|
|
3995
|
+
created: z15.boolean()
|
|
3942
3996
|
});
|
|
3943
3997
|
var ContactListQuery = PageQuery.extend({
|
|
3944
|
-
email:
|
|
3945
|
-
external_id:
|
|
3998
|
+
email: z15.string().min(1).max(254).optional(),
|
|
3999
|
+
external_id: z15.string().min(1).max(255).optional(),
|
|
3946
4000
|
topic: Slug.optional()
|
|
3947
4001
|
});
|
|
3948
|
-
var ContactErased =
|
|
3949
|
-
ok:
|
|
3950
|
-
erased_messages:
|
|
3951
|
-
erased_recipients:
|
|
3952
|
-
suppressions_kept:
|
|
4002
|
+
var ContactErased = z15.object({
|
|
4003
|
+
ok: z15.literal(true),
|
|
4004
|
+
erased_messages: z15.number().int().min(0),
|
|
4005
|
+
erased_recipients: z15.number().int().min(0),
|
|
4006
|
+
suppressions_kept: z15.number().int().min(0)
|
|
3953
4007
|
});
|
|
3954
4008
|
var SUPPRESSION_REASONS = ["unsubscribed", "bounced", "complained", "manual"];
|
|
3955
|
-
var SuppressionReason =
|
|
3956
|
-
var Suppression =
|
|
4009
|
+
var SuppressionReason = z15.enum(SUPPRESSION_REASONS);
|
|
4010
|
+
var Suppression = z15.object({
|
|
3957
4011
|
id: Id,
|
|
3958
4012
|
email: Email,
|
|
3959
4013
|
reason: SuppressionReason,
|
|
3960
4014
|
topic: Slug.nullable(),
|
|
3961
4015
|
source_message_id: Id.nullable(),
|
|
3962
|
-
note:
|
|
4016
|
+
note: z15.string().max(1e3).nullable(),
|
|
3963
4017
|
created_at: Timestamp
|
|
3964
4018
|
});
|
|
3965
|
-
var SuppressionCreate =
|
|
4019
|
+
var SuppressionCreate = z15.object({
|
|
3966
4020
|
email: Email,
|
|
3967
|
-
reason:
|
|
4021
|
+
reason: z15.enum(["manual", "unsubscribed"]),
|
|
3968
4022
|
topic: Slug.nullable().optional(),
|
|
3969
|
-
note:
|
|
4023
|
+
note: z15.string().max(1e3).optional()
|
|
3970
4024
|
});
|
|
3971
4025
|
var SuppressionListQuery = PageQuery.extend({
|
|
3972
|
-
email:
|
|
4026
|
+
email: z15.string().min(1).max(254).optional(),
|
|
3973
4027
|
reason: SuppressionReason.optional(),
|
|
3974
4028
|
topic: Slug.optional()
|
|
3975
4029
|
});
|
|
3976
4030
|
|
|
3977
4031
|
// src/webhooks.ts
|
|
3978
|
-
import { z as
|
|
4032
|
+
import { z as z16 } from "zod";
|
|
3979
4033
|
var WEBHOOK_EVENT_TYPES = [
|
|
3980
4034
|
"message.sent",
|
|
3981
4035
|
"message.failed",
|
|
@@ -4019,23 +4073,23 @@ var WEBHOOK_EVENT_TYPES = [
|
|
|
4019
4073
|
"template.updated",
|
|
4020
4074
|
"template.deleted"
|
|
4021
4075
|
];
|
|
4022
|
-
var WebhookEventType =
|
|
4023
|
-
var MessageEventBase =
|
|
4076
|
+
var WebhookEventType = z16.enum(WEBHOOK_EVENT_TYPES);
|
|
4077
|
+
var MessageEventBase = z16.object({
|
|
4024
4078
|
message_id: Id,
|
|
4025
4079
|
mailing_id: Id.nullable(),
|
|
4026
4080
|
mailing_metadata: MailingMetadata.nullable(),
|
|
4027
4081
|
recipient_id: Id.nullable(),
|
|
4028
4082
|
contact_id: Id.nullable(),
|
|
4029
|
-
external_id:
|
|
4083
|
+
external_id: z16.string().nullable(),
|
|
4030
4084
|
email: Email,
|
|
4031
|
-
subject:
|
|
4085
|
+
subject: z16.string(),
|
|
4032
4086
|
topic: Slug.nullable(),
|
|
4033
|
-
provider_message_id:
|
|
4034
|
-
is_test:
|
|
4087
|
+
provider_message_id: z16.string().nullable(),
|
|
4088
|
+
is_test: z16.boolean()
|
|
4035
4089
|
});
|
|
4036
4090
|
var MessageSentData = MessageEventBase.extend({
|
|
4037
4091
|
/** The final HTML as sent, so the client can archive it beside its own records. */
|
|
4038
|
-
html:
|
|
4092
|
+
html: z16.string(),
|
|
4039
4093
|
sent_at: Timestamp,
|
|
4040
4094
|
/**
|
|
4041
4095
|
* The choice each insertion made (see `Message.insertions`); absent or null
|
|
@@ -4046,20 +4100,20 @@ var MessageSentData = MessageEventBase.extend({
|
|
|
4046
4100
|
insertions: InsertionChoices.nullish()
|
|
4047
4101
|
});
|
|
4048
4102
|
var MessageFailedData = MessageEventBase.extend({
|
|
4049
|
-
error:
|
|
4103
|
+
error: z16.string(),
|
|
4050
4104
|
/** False when the provider rejected permanently; the recipient will not be retried. */
|
|
4051
|
-
retryable:
|
|
4105
|
+
retryable: z16.boolean(),
|
|
4052
4106
|
failed_at: Timestamp
|
|
4053
4107
|
});
|
|
4054
4108
|
var UNSUBSCRIBE_SOURCES = ["hosted_page", "one_click", "api", "dashboard", "signup_form"];
|
|
4055
|
-
var ContactUnsubscribedData =
|
|
4109
|
+
var ContactUnsubscribedData = z16.object({
|
|
4056
4110
|
contact_id: Id.nullable(),
|
|
4057
|
-
external_id:
|
|
4111
|
+
external_id: z16.string().nullable(),
|
|
4058
4112
|
email: Email,
|
|
4059
4113
|
/** The topic unsubscribed from; null means every topic. */
|
|
4060
4114
|
topic: Slug.nullable(),
|
|
4061
4115
|
mailing_id: Id.nullable(),
|
|
4062
|
-
source:
|
|
4116
|
+
source: z16.enum(UNSUBSCRIBE_SOURCES),
|
|
4063
4117
|
unsubscribed_at: Timestamp
|
|
4064
4118
|
});
|
|
4065
4119
|
var ContactResubscribedData = ContactUnsubscribedData.omit({ unsubscribed_at: true }).extend({
|
|
@@ -4068,142 +4122,142 @@ var ContactResubscribedData = ContactUnsubscribedData.omit({ unsubscribed_at: tr
|
|
|
4068
4122
|
* breaker undid a `bounced` block it judged false (a `contact.bounced` for the
|
|
4069
4123
|
* same address and mailing went out before); `topic` is null.
|
|
4070
4124
|
*/
|
|
4071
|
-
source:
|
|
4125
|
+
source: z16.enum([...UNSUBSCRIBE_SOURCES, "bounce_reverted"]),
|
|
4072
4126
|
resubscribed_at: Timestamp
|
|
4073
4127
|
});
|
|
4074
|
-
var ContactBouncedData =
|
|
4128
|
+
var ContactBouncedData = z16.object({
|
|
4075
4129
|
contact_id: Id.nullable(),
|
|
4076
|
-
external_id:
|
|
4130
|
+
external_id: z16.string().nullable(),
|
|
4077
4131
|
email: Email,
|
|
4078
4132
|
/** `bounced` for a hard bounce, `complained` for a spam complaint. */
|
|
4079
|
-
reason:
|
|
4133
|
+
reason: z16.enum(["bounced", "complained"]),
|
|
4080
4134
|
message_id: Id.nullable(),
|
|
4081
|
-
diagnostic:
|
|
4135
|
+
diagnostic: z16.string().nullable(),
|
|
4082
4136
|
bounced_at: Timestamp
|
|
4083
4137
|
});
|
|
4084
|
-
var MailingFinishedData =
|
|
4138
|
+
var MailingFinishedData = z16.object({
|
|
4085
4139
|
mailing_id: Id,
|
|
4086
4140
|
mailing_metadata: MailingMetadata,
|
|
4087
|
-
status:
|
|
4141
|
+
status: z16.enum(["sent", "partially_failed", "cancelled"]),
|
|
4088
4142
|
counts: MailingCounts,
|
|
4089
4143
|
finished_at: Timestamp
|
|
4090
4144
|
});
|
|
4091
|
-
var ContactSubscribedData =
|
|
4145
|
+
var ContactSubscribedData = z16.object({
|
|
4092
4146
|
contact_id: Id,
|
|
4093
|
-
external_id:
|
|
4147
|
+
external_id: z16.string().nullable(),
|
|
4094
4148
|
email: Email,
|
|
4095
|
-
topics:
|
|
4096
|
-
source:
|
|
4149
|
+
topics: z16.array(Slug),
|
|
4150
|
+
source: z16.enum(["signup_form", "api", "dashboard", "automation"]),
|
|
4097
4151
|
signup_form_id: Id.nullable(),
|
|
4098
|
-
signup_form_version:
|
|
4152
|
+
signup_form_version: z16.number().int().min(1).nullable(),
|
|
4099
4153
|
subscribed_at: Timestamp
|
|
4100
4154
|
});
|
|
4101
|
-
var ImportFinishedData =
|
|
4155
|
+
var ImportFinishedData = z16.object({
|
|
4102
4156
|
import_id: Id,
|
|
4103
|
-
status:
|
|
4157
|
+
status: z16.enum(["completed", "cancelled", "failed"]),
|
|
4104
4158
|
result: ImportReport.nullable(),
|
|
4105
|
-
error:
|
|
4159
|
+
error: z16.string().nullable(),
|
|
4106
4160
|
finished_at: Timestamp
|
|
4107
4161
|
});
|
|
4108
|
-
var MailingScheduledData =
|
|
4162
|
+
var MailingScheduledData = z16.object({
|
|
4109
4163
|
mailing_id: Id,
|
|
4110
4164
|
mailing_metadata: MailingMetadata,
|
|
4111
4165
|
scheduled_at: Timestamp.nullable()
|
|
4112
4166
|
});
|
|
4113
|
-
var MailingStartedData =
|
|
4167
|
+
var MailingStartedData = z16.object({
|
|
4114
4168
|
mailing_id: Id,
|
|
4115
4169
|
mailing_metadata: MailingMetadata,
|
|
4116
|
-
trigger:
|
|
4117
|
-
recipients:
|
|
4170
|
+
trigger: z16.enum(["send", "schedule"]),
|
|
4171
|
+
recipients: z16.number().int().min(0),
|
|
4118
4172
|
started_at: Timestamp
|
|
4119
4173
|
});
|
|
4120
|
-
var MailingScheduleFailedData =
|
|
4174
|
+
var MailingScheduleFailedData = z16.object({
|
|
4121
4175
|
mailing_id: Id,
|
|
4122
4176
|
mailing_metadata: MailingMetadata,
|
|
4123
|
-
code:
|
|
4124
|
-
message:
|
|
4177
|
+
code: z16.string(),
|
|
4178
|
+
message: z16.string(),
|
|
4125
4179
|
failed_at: Timestamp
|
|
4126
4180
|
});
|
|
4127
|
-
var MailingAbWinnerSelectedData =
|
|
4181
|
+
var MailingAbWinnerSelectedData = z16.object({
|
|
4128
4182
|
mailing_id: Id,
|
|
4129
4183
|
mailing_metadata: MailingMetadata,
|
|
4130
|
-
winner:
|
|
4131
|
-
decided_by:
|
|
4132
|
-
variants:
|
|
4184
|
+
winner: z16.string(),
|
|
4185
|
+
decided_by: z16.enum(["metric", "manual"]),
|
|
4186
|
+
variants: z16.array(VariantAnalytics),
|
|
4133
4187
|
decided_at: Timestamp
|
|
4134
4188
|
});
|
|
4135
|
-
var ContactTaggedData =
|
|
4189
|
+
var ContactTaggedData = z16.object({
|
|
4136
4190
|
contact_id: Id,
|
|
4137
|
-
external_id:
|
|
4191
|
+
external_id: z16.string().nullable(),
|
|
4138
4192
|
email: Email,
|
|
4139
4193
|
/** Only the tags the contact did not already have. */
|
|
4140
|
-
tags:
|
|
4141
|
-
source:
|
|
4194
|
+
tags: z16.array(Slug).min(1),
|
|
4195
|
+
source: z16.enum(["api", "dashboard", "signup_form", "import", "automation"]),
|
|
4142
4196
|
tagged_at: Timestamp
|
|
4143
4197
|
});
|
|
4144
|
-
var ContactUpdatedData =
|
|
4198
|
+
var ContactUpdatedData = z16.object({
|
|
4145
4199
|
contact_id: Id,
|
|
4146
|
-
external_id:
|
|
4200
|
+
external_id: z16.string().nullable(),
|
|
4147
4201
|
email: Email,
|
|
4148
|
-
changed:
|
|
4202
|
+
changed: z16.array(z16.string()).min(1),
|
|
4149
4203
|
properties: Properties,
|
|
4150
|
-
source:
|
|
4204
|
+
source: z16.enum(["api", "dashboard", "signup_form", "import", "automation"]),
|
|
4151
4205
|
updated_at: Timestamp
|
|
4152
4206
|
});
|
|
4153
|
-
var AutomationRunEventBase =
|
|
4207
|
+
var AutomationRunEventBase = z16.object({
|
|
4154
4208
|
automation_id: Id,
|
|
4155
|
-
automation_name:
|
|
4209
|
+
automation_name: z16.string(),
|
|
4156
4210
|
run_id: Id,
|
|
4157
|
-
version:
|
|
4211
|
+
version: z16.number().int().min(1),
|
|
4158
4212
|
contact_id: Id,
|
|
4159
|
-
external_id:
|
|
4213
|
+
external_id: z16.string().nullable(),
|
|
4160
4214
|
email: Email
|
|
4161
4215
|
});
|
|
4162
4216
|
var AutomationRunStartedData = AutomationRunEventBase.extend({
|
|
4163
4217
|
/** What let them in: a trigger kind, or `manual` for an explicit enrolment. */
|
|
4164
|
-
trigger_kind:
|
|
4218
|
+
trigger_kind: z16.string(),
|
|
4165
4219
|
entered_at: Timestamp
|
|
4166
4220
|
});
|
|
4167
4221
|
var AutomationRunCompletedData = AutomationRunEventBase.extend({
|
|
4168
|
-
last_step_id:
|
|
4222
|
+
last_step_id: z16.string().nullable(),
|
|
4169
4223
|
completed_at: Timestamp
|
|
4170
4224
|
});
|
|
4171
4225
|
var AutomationRunExitedData = AutomationRunEventBase.extend({
|
|
4172
4226
|
reason: AutomationEndReason,
|
|
4173
|
-
step_id:
|
|
4227
|
+
step_id: z16.string().nullable(),
|
|
4174
4228
|
exited_at: Timestamp
|
|
4175
4229
|
});
|
|
4176
4230
|
var AutomationRunFailedData = AutomationRunEventBase.extend({
|
|
4177
|
-
reason:
|
|
4178
|
-
step_id:
|
|
4231
|
+
reason: z16.string(),
|
|
4232
|
+
step_id: z16.string().nullable(),
|
|
4179
4233
|
failed_at: Timestamp
|
|
4180
4234
|
});
|
|
4181
4235
|
var AutomationWebhookData = AutomationRunEventBase.extend({
|
|
4182
|
-
step_id:
|
|
4236
|
+
step_id: z16.string(),
|
|
4183
4237
|
/** The step's own label, when it was given one, so a receiver can branch on a name. */
|
|
4184
|
-
step_label:
|
|
4238
|
+
step_label: z16.string().nullable(),
|
|
4185
4239
|
/** Whatever the step carries, verbatim. Null when it carries nothing. */
|
|
4186
4240
|
payload: JsonValue.nullable(),
|
|
4187
4241
|
fired_at: Timestamp
|
|
4188
4242
|
});
|
|
4189
|
-
var TemplateEventBase =
|
|
4243
|
+
var TemplateEventBase = z16.object({
|
|
4190
4244
|
template_id: Id,
|
|
4191
|
-
name:
|
|
4192
|
-
version:
|
|
4193
|
-
source:
|
|
4245
|
+
name: z16.string().min(1).max(200),
|
|
4246
|
+
version: z16.number().int().min(1),
|
|
4247
|
+
source: z16.enum(["api", "dashboard", "mjml_import"])
|
|
4194
4248
|
});
|
|
4195
4249
|
var TemplateCreatedData = TemplateEventBase.extend({ created_at: Timestamp });
|
|
4196
|
-
var TemplateUpdatedData = TemplateEventBase.extend({ archived:
|
|
4250
|
+
var TemplateUpdatedData = TemplateEventBase.extend({ archived: z16.boolean(), updated_at: Timestamp });
|
|
4197
4251
|
var TemplateDeletedData = TemplateEventBase.extend({ deleted_at: Timestamp });
|
|
4198
|
-
var envelope = (type, data) =>
|
|
4252
|
+
var envelope = (type, data) => z16.object({
|
|
4199
4253
|
/** Unique per event: a receiver deduplicates on it (deliveries may repeat). */
|
|
4200
4254
|
id: Id,
|
|
4201
|
-
type:
|
|
4255
|
+
type: z16.literal(type),
|
|
4202
4256
|
created_at: Timestamp,
|
|
4203
4257
|
workspace_id: Id,
|
|
4204
4258
|
data
|
|
4205
4259
|
});
|
|
4206
|
-
var WebhookEvent =
|
|
4260
|
+
var WebhookEvent = z16.discriminatedUnion("type", [
|
|
4207
4261
|
envelope("message.sent", MessageSentData),
|
|
4208
4262
|
envelope("message.failed", MessageFailedData),
|
|
4209
4263
|
envelope("contact.unsubscribed", ContactUnsubscribedData),
|
|
@@ -4227,16 +4281,16 @@ var WebhookEvent = z15.discriminatedUnion("type", [
|
|
|
4227
4281
|
envelope("template.updated", TemplateUpdatedData),
|
|
4228
4282
|
envelope("template.deleted", TemplateDeletedData)
|
|
4229
4283
|
]);
|
|
4230
|
-
var WebhookEndpoint =
|
|
4284
|
+
var WebhookEndpoint = z16.object({
|
|
4231
4285
|
id: Id,
|
|
4232
|
-
url:
|
|
4233
|
-
description:
|
|
4234
|
-
events:
|
|
4235
|
-
enabled:
|
|
4286
|
+
url: z16.string().url(),
|
|
4287
|
+
description: z16.string().max(500).nullable(),
|
|
4288
|
+
events: z16.array(WebhookEventType).min(1),
|
|
4289
|
+
enabled: z16.boolean(),
|
|
4236
4290
|
created_at: Timestamp,
|
|
4237
4291
|
updated_at: Timestamp
|
|
4238
4292
|
});
|
|
4239
|
-
var WebhookUrl =
|
|
4293
|
+
var WebhookUrl = z16.string().url().refine((u) => {
|
|
4240
4294
|
try {
|
|
4241
4295
|
const url = new URL(u);
|
|
4242
4296
|
if (url.protocol === "https:") return true;
|
|
@@ -4245,35 +4299,35 @@ var WebhookUrl = z15.string().url().refine((u) => {
|
|
|
4245
4299
|
return false;
|
|
4246
4300
|
}
|
|
4247
4301
|
}, "must be https (http only for localhost)");
|
|
4248
|
-
var WebhookEndpointCreate =
|
|
4302
|
+
var WebhookEndpointCreate = z16.object({
|
|
4249
4303
|
url: WebhookUrl,
|
|
4250
|
-
description:
|
|
4251
|
-
events:
|
|
4252
|
-
enabled:
|
|
4304
|
+
description: z16.string().max(500).optional(),
|
|
4305
|
+
events: z16.array(WebhookEventType).min(1),
|
|
4306
|
+
enabled: z16.boolean().optional()
|
|
4253
4307
|
});
|
|
4254
|
-
var WebhookEndpointUpdate =
|
|
4308
|
+
var WebhookEndpointUpdate = z16.object({
|
|
4255
4309
|
url: WebhookUrl,
|
|
4256
|
-
description:
|
|
4257
|
-
events:
|
|
4258
|
-
enabled:
|
|
4310
|
+
description: z16.string().max(500).nullable(),
|
|
4311
|
+
events: z16.array(WebhookEventType).min(1),
|
|
4312
|
+
enabled: z16.boolean()
|
|
4259
4313
|
}).partial().refine((v) => Object.keys(v).length > 0, "at least one field");
|
|
4260
|
-
var WebhookEndpointWithSecret =
|
|
4314
|
+
var WebhookEndpointWithSecret = z16.object({
|
|
4261
4315
|
endpoint: WebhookEndpoint,
|
|
4262
|
-
secret:
|
|
4316
|
+
secret: z16.string().min(32)
|
|
4263
4317
|
});
|
|
4264
4318
|
var WEBHOOK_DELIVERY_STATUSES = ["pending", "succeeded", "failed"];
|
|
4265
|
-
var WebhookDeliveryStatus =
|
|
4319
|
+
var WebhookDeliveryStatus = z16.enum(WEBHOOK_DELIVERY_STATUSES);
|
|
4266
4320
|
var WEBHOOK_MAX_ATTEMPTS = 8;
|
|
4267
4321
|
var WEBHOOK_RETRY_DELAYS_SECONDS = [30, 120, 600, 1800, 3600, 7200, 21600];
|
|
4268
|
-
var WebhookDelivery =
|
|
4322
|
+
var WebhookDelivery = z16.object({
|
|
4269
4323
|
id: Id,
|
|
4270
4324
|
endpoint_id: Id,
|
|
4271
4325
|
event_id: Id,
|
|
4272
4326
|
event_type: WebhookEventType,
|
|
4273
4327
|
status: WebhookDeliveryStatus,
|
|
4274
|
-
attempts:
|
|
4275
|
-
last_status_code:
|
|
4276
|
-
last_error:
|
|
4328
|
+
attempts: z16.number().int().min(0),
|
|
4329
|
+
last_status_code: z16.number().int().min(100).max(599).nullable(),
|
|
4330
|
+
last_error: z16.string().nullable(),
|
|
4277
4331
|
next_attempt_at: Timestamp.nullable(),
|
|
4278
4332
|
delivered_at: Timestamp.nullable(),
|
|
4279
4333
|
created_at: Timestamp
|
|
@@ -4282,7 +4336,7 @@ var WebhookDeliveryListQuery = PageQuery.extend({
|
|
|
4282
4336
|
status: WebhookDeliveryStatus.optional(),
|
|
4283
4337
|
event_type: WebhookEventType.optional()
|
|
4284
4338
|
});
|
|
4285
|
-
var WebhookDeliveryParams =
|
|
4339
|
+
var WebhookDeliveryParams = z16.object({ id: Id, delivery_id: Id });
|
|
4286
4340
|
|
|
4287
4341
|
// src/webhook-signing.ts
|
|
4288
4342
|
var WEBHOOK_SIGNATURE_HEADER = "x-mail-signature";
|
|
@@ -4349,79 +4403,79 @@ async function verifyWebhook(input) {
|
|
|
4349
4403
|
}
|
|
4350
4404
|
|
|
4351
4405
|
// src/billing.ts
|
|
4352
|
-
import { z as
|
|
4406
|
+
import { z as z17 } from "zod";
|
|
4353
4407
|
var PLAN_IDS = ["free", "starter", "growth", "design_partner"];
|
|
4354
|
-
var PlanId =
|
|
4355
|
-
var PlanLimits =
|
|
4356
|
-
monthly_messages:
|
|
4357
|
-
contacts:
|
|
4358
|
-
members:
|
|
4359
|
-
providers:
|
|
4360
|
-
webhook_endpoints:
|
|
4408
|
+
var PlanId = z17.enum(PLAN_IDS);
|
|
4409
|
+
var PlanLimits = z17.object({
|
|
4410
|
+
monthly_messages: z17.number().int().min(0).nullable(),
|
|
4411
|
+
contacts: z17.number().int().min(0).nullable(),
|
|
4412
|
+
members: z17.number().int().min(1).nullable(),
|
|
4413
|
+
providers: z17.number().int().min(1).nullable(),
|
|
4414
|
+
webhook_endpoints: z17.number().int().min(0).nullable(),
|
|
4361
4415
|
/** Automations that may be live (active or paused) at once (A1). */
|
|
4362
|
-
active_automations:
|
|
4416
|
+
active_automations: z17.number().int().min(0).nullable(),
|
|
4363
4417
|
/** Steps one automation may hold. Null is the flow's own cap, not unlimited. */
|
|
4364
|
-
automation_steps:
|
|
4418
|
+
automation_steps: z17.number().int().min(1).nullable(),
|
|
4419
|
+
/** Own domains Lumitra Mail sends from (managed sending domains); 0 when the plan has none. */
|
|
4420
|
+
sending_domains: z17.number().int().min(0).nullable()
|
|
4365
4421
|
});
|
|
4366
|
-
var PlanFeatures =
|
|
4422
|
+
var PlanFeatures = z17.object({
|
|
4367
4423
|
/** A/B tests of subject and content on a mailing (S4). */
|
|
4368
|
-
ab_testing:
|
|
4424
|
+
ab_testing: z17.boolean(),
|
|
4369
4425
|
/** Open and click tracking, still off until a workspace turns it on (`settings.tracking_enabled`). */
|
|
4370
|
-
tracking:
|
|
4371
|
-
/** Sending and hosting pages on the workspace's own domain (a later phase). */
|
|
4372
|
-
custom_domains: z16.boolean(),
|
|
4426
|
+
tracking: z17.boolean(),
|
|
4373
4427
|
/** Automations: flows a person walks through step by step (A1). */
|
|
4374
|
-
automations:
|
|
4428
|
+
automations: z17.boolean()
|
|
4375
4429
|
});
|
|
4376
|
-
var PLAN_FEATURES = ["ab_testing", "tracking", "
|
|
4377
|
-
var Plan =
|
|
4430
|
+
var PLAN_FEATURES = ["ab_testing", "tracking", "automations"];
|
|
4431
|
+
var Plan = z17.object({
|
|
4378
4432
|
id: PlanId,
|
|
4379
|
-
name:
|
|
4433
|
+
name: z17.string().min(1),
|
|
4380
4434
|
/** Price in the smallest currency unit per month; null for plans not sold. */
|
|
4381
|
-
monthly_price_cents:
|
|
4382
|
-
currency:
|
|
4435
|
+
monthly_price_cents: z17.number().int().min(0).nullable(),
|
|
4436
|
+
currency: z17.string().length(3),
|
|
4383
4437
|
limits: PlanLimits,
|
|
4384
4438
|
features: PlanFeatures
|
|
4385
4439
|
});
|
|
4386
|
-
var CatalogPlan = Plan.extend({ sellable:
|
|
4387
|
-
var Subscription =
|
|
4440
|
+
var CatalogPlan = Plan.extend({ sellable: z17.boolean() });
|
|
4441
|
+
var Subscription = z17.object({
|
|
4388
4442
|
workspace_id: Id,
|
|
4389
4443
|
plan: PlanId,
|
|
4390
|
-
status:
|
|
4444
|
+
status: z17.enum(["active", "trialing", "past_due", "cancelled"]),
|
|
4391
4445
|
current_period_start: Timestamp,
|
|
4392
4446
|
current_period_end: Timestamp,
|
|
4393
|
-
cancel_at_period_end:
|
|
4447
|
+
cancel_at_period_end: z17.boolean(),
|
|
4394
4448
|
/**
|
|
4395
4449
|
* A design partner outside billing (plan `design_partner`, no limits, no
|
|
4396
4450
|
* checkout). Set only by an operator, never through the API.
|
|
4397
4451
|
*/
|
|
4398
|
-
billing_exempt:
|
|
4452
|
+
billing_exempt: z17.boolean()
|
|
4399
4453
|
});
|
|
4400
|
-
var USAGE_METRICS = ["messages", "contacts", "members", "providers", "webhook_endpoints", "active_automations"];
|
|
4401
|
-
var UsageMetric =
|
|
4454
|
+
var USAGE_METRICS = ["messages", "contacts", "members", "providers", "webhook_endpoints", "active_automations", "sending_domains"];
|
|
4455
|
+
var UsageMetric = z17.enum(USAGE_METRICS);
|
|
4402
4456
|
var USAGE_WARNING_RATIO = 0.8;
|
|
4403
|
-
var UsageWarning =
|
|
4457
|
+
var UsageWarning = z17.object({
|
|
4404
4458
|
metric: UsageMetric,
|
|
4405
|
-
used:
|
|
4406
|
-
limit:
|
|
4459
|
+
used: z17.number().int().min(0),
|
|
4460
|
+
limit: z17.number().int().min(0),
|
|
4407
4461
|
/** `approaching`: at or above USAGE_WARNING_RATIO of the limit; `reached`: at or above the limit. */
|
|
4408
|
-
level:
|
|
4462
|
+
level: z17.enum(["approaching", "reached"])
|
|
4409
4463
|
});
|
|
4410
|
-
var Usage =
|
|
4464
|
+
var Usage = z17.object({
|
|
4411
4465
|
plan: PlanId,
|
|
4412
4466
|
period_start: Timestamp,
|
|
4413
4467
|
period_end: Timestamp,
|
|
4414
|
-
metrics:
|
|
4415
|
-
warnings:
|
|
4468
|
+
metrics: z17.record(UsageMetric, z17.object({ used: z17.number().int().min(0), limit: z17.number().int().min(0).nullable() })),
|
|
4469
|
+
warnings: z17.array(UsageWarning)
|
|
4416
4470
|
});
|
|
4417
|
-
var CheckoutRequest =
|
|
4418
|
-
plan:
|
|
4419
|
-
success_url:
|
|
4420
|
-
cancel_url:
|
|
4471
|
+
var CheckoutRequest = z17.object({
|
|
4472
|
+
plan: z17.enum(["starter", "growth"]),
|
|
4473
|
+
success_url: z17.string().url(),
|
|
4474
|
+
cancel_url: z17.string().url()
|
|
4421
4475
|
});
|
|
4422
|
-
var CheckoutSession =
|
|
4423
|
-
var PortalRequest =
|
|
4424
|
-
var PortalSession =
|
|
4476
|
+
var CheckoutSession = z17.object({ url: z17.string().url() });
|
|
4477
|
+
var PortalRequest = z17.object({ return_url: z17.string().url() });
|
|
4478
|
+
var PortalSession = z17.object({ url: z17.string().url() });
|
|
4425
4479
|
var USAGE_WARNING_HEADER = "x-mail-usage-warning";
|
|
4426
4480
|
function formatUsageWarningHeader(warnings) {
|
|
4427
4481
|
if (warnings.length === 0) return null;
|
|
@@ -4441,7 +4495,7 @@ function parseUsageWarningHeader(value) {
|
|
|
4441
4495
|
}
|
|
4442
4496
|
|
|
4443
4497
|
// src/routes.ts
|
|
4444
|
-
import { z as
|
|
4498
|
+
import { z as z18 } from "zod";
|
|
4445
4499
|
var list = (item) => page(item);
|
|
4446
4500
|
var foundationRoutes = {
|
|
4447
4501
|
"workspaces.create": {
|
|
@@ -4687,7 +4741,7 @@ var templateRoutes = {
|
|
|
4687
4741
|
path: "/v1/templates/:id/export",
|
|
4688
4742
|
params: IdParams,
|
|
4689
4743
|
query: TemplateExportQuery,
|
|
4690
|
-
response:
|
|
4744
|
+
response: z18.string(),
|
|
4691
4745
|
responseType: "text",
|
|
4692
4746
|
status: 200,
|
|
4693
4747
|
access: "read",
|
|
@@ -4868,6 +4922,62 @@ var sendingRoutes = {
|
|
|
4868
4922
|
access: "read",
|
|
4869
4923
|
phase: "S2"
|
|
4870
4924
|
},
|
|
4925
|
+
// Managed sending domains (docs/plans/2026-10-18-managed-sending-domains.md).
|
|
4926
|
+
"sendingDomains.list": {
|
|
4927
|
+
method: "GET",
|
|
4928
|
+
path: "/v1/sending-domains",
|
|
4929
|
+
query: PageQuery,
|
|
4930
|
+
response: list(SendingDomain),
|
|
4931
|
+
status: 200,
|
|
4932
|
+
access: "read",
|
|
4933
|
+
phase: "S2"
|
|
4934
|
+
},
|
|
4935
|
+
"sendingDomains.create": {
|
|
4936
|
+
method: "POST",
|
|
4937
|
+
path: "/v1/sending-domains",
|
|
4938
|
+
body: SendingDomainCreate,
|
|
4939
|
+
response: SendingDomain,
|
|
4940
|
+
status: 201,
|
|
4941
|
+
access: "admin",
|
|
4942
|
+
phase: "S2"
|
|
4943
|
+
},
|
|
4944
|
+
"sendingDomains.get": {
|
|
4945
|
+
method: "GET",
|
|
4946
|
+
path: "/v1/sending-domains/:id",
|
|
4947
|
+
params: IdParams,
|
|
4948
|
+
response: SendingDomain,
|
|
4949
|
+
status: 200,
|
|
4950
|
+
access: "read",
|
|
4951
|
+
phase: "S2"
|
|
4952
|
+
},
|
|
4953
|
+
"sendingDomains.update": {
|
|
4954
|
+
method: "PATCH",
|
|
4955
|
+
path: "/v1/sending-domains/:id",
|
|
4956
|
+
params: IdParams,
|
|
4957
|
+
body: SendingDomainUpdate,
|
|
4958
|
+
response: SendingDomain,
|
|
4959
|
+
status: 200,
|
|
4960
|
+
access: "admin",
|
|
4961
|
+
phase: "S2"
|
|
4962
|
+
},
|
|
4963
|
+
"sendingDomains.check": {
|
|
4964
|
+
method: "POST",
|
|
4965
|
+
path: "/v1/sending-domains/:id/check",
|
|
4966
|
+
params: IdParams,
|
|
4967
|
+
response: SendingDomain,
|
|
4968
|
+
status: 200,
|
|
4969
|
+
access: "admin",
|
|
4970
|
+
phase: "S2"
|
|
4971
|
+
},
|
|
4972
|
+
"sendingDomains.delete": {
|
|
4973
|
+
method: "DELETE",
|
|
4974
|
+
path: "/v1/sending-domains/:id",
|
|
4975
|
+
params: IdParams,
|
|
4976
|
+
response: Ok,
|
|
4977
|
+
status: 200,
|
|
4978
|
+
access: "admin",
|
|
4979
|
+
phase: "S2"
|
|
4980
|
+
},
|
|
4871
4981
|
"topics.list": {
|
|
4872
4982
|
method: "GET",
|
|
4873
4983
|
path: "/v1/topics",
|
|
@@ -5011,7 +5121,7 @@ var sendingRoutes = {
|
|
|
5011
5121
|
path: "/v1/mailings/:id/export",
|
|
5012
5122
|
params: IdParams,
|
|
5013
5123
|
query: MailingExportQuery,
|
|
5014
|
-
response:
|
|
5124
|
+
response: z18.string(),
|
|
5015
5125
|
responseType: "text",
|
|
5016
5126
|
status: 200,
|
|
5017
5127
|
access: "read",
|
|
@@ -5278,7 +5388,7 @@ var platformRoutes = {
|
|
|
5278
5388
|
"contactProperties.list": {
|
|
5279
5389
|
method: "GET",
|
|
5280
5390
|
path: "/v1/contact-properties",
|
|
5281
|
-
response:
|
|
5391
|
+
response: z18.object({ data: z18.array(ContactPropertyDefinition) }),
|
|
5282
5392
|
status: 200,
|
|
5283
5393
|
access: "read",
|
|
5284
5394
|
phase: "S4"
|
|
@@ -5577,7 +5687,7 @@ var billingRoutes = {
|
|
|
5577
5687
|
"billing.plans": {
|
|
5578
5688
|
method: "GET",
|
|
5579
5689
|
path: "/v1/billing/plans",
|
|
5580
|
-
response:
|
|
5690
|
+
response: z18.object({ data: z18.array(CatalogPlan) }),
|
|
5581
5691
|
status: 200,
|
|
5582
5692
|
access: "read",
|
|
5583
5693
|
phase: "S5"
|
|
@@ -5719,7 +5829,7 @@ var automationRoutes = {
|
|
|
5719
5829
|
method: "POST",
|
|
5720
5830
|
path: "/v1/automations/:id/pause",
|
|
5721
5831
|
params: IdParams,
|
|
5722
|
-
body:
|
|
5832
|
+
body: z18.object({}).strict(),
|
|
5723
5833
|
response: Automation,
|
|
5724
5834
|
status: 200,
|
|
5725
5835
|
access: "write",
|
|
@@ -5729,7 +5839,7 @@ var automationRoutes = {
|
|
|
5729
5839
|
method: "POST",
|
|
5730
5840
|
path: "/v1/automations/:id/resume",
|
|
5731
5841
|
params: IdParams,
|
|
5732
|
-
body:
|
|
5842
|
+
body: z18.object({}).strict(),
|
|
5733
5843
|
response: Automation,
|
|
5734
5844
|
status: 200,
|
|
5735
5845
|
access: "write",
|
|
@@ -5739,7 +5849,7 @@ var automationRoutes = {
|
|
|
5739
5849
|
method: "POST",
|
|
5740
5850
|
path: "/v1/automations/:id/archive",
|
|
5741
5851
|
params: IdParams,
|
|
5742
|
-
body:
|
|
5852
|
+
body: z18.object({}).strict(),
|
|
5743
5853
|
response: Automation,
|
|
5744
5854
|
status: 200,
|
|
5745
5855
|
access: "write",
|
|
@@ -5857,7 +5967,7 @@ var routes = {
|
|
|
5857
5967
|
...automationRoutes
|
|
5858
5968
|
};
|
|
5859
5969
|
var TRUSTED_APP_OPERATIONS = {
|
|
5860
|
-
booking: ["workspaces.list", "workspace.update", "providers.list", "apiKeys.create", "apiKeys.revoke"]
|
|
5970
|
+
booking: ["workspaces.list", "workspace.update", "providers.list", "sendingDomains.list", "apiKeys.create", "apiKeys.revoke"]
|
|
5861
5971
|
};
|
|
5862
5972
|
function trustedAppMayCall(app, id) {
|
|
5863
5973
|
return TRUSTED_APP_OPERATIONS[app].includes(id);
|
|
@@ -6244,6 +6354,9 @@ export {
|
|
|
6244
6354
|
ResolveProblem,
|
|
6245
6355
|
ResolvedRecipient,
|
|
6246
6356
|
ResolvedValue,
|
|
6357
|
+
SENDING_DOMAIN_DNS_MODES,
|
|
6358
|
+
SENDING_DOMAIN_REGION,
|
|
6359
|
+
SENDING_DOMAIN_STATUSES,
|
|
6247
6360
|
SERVICE_FILLED_MERGE_FIELDS,
|
|
6248
6361
|
SIGNUP_FORM_FIELDS,
|
|
6249
6362
|
SKIP_REASONS,
|
|
@@ -6259,6 +6372,13 @@ export {
|
|
|
6259
6372
|
SegmentFilter,
|
|
6260
6373
|
SegmentPreview,
|
|
6261
6374
|
SegmentPreviewRequest,
|
|
6375
|
+
SendingDomain,
|
|
6376
|
+
SendingDomainCreate,
|
|
6377
|
+
SendingDomainDnsMode,
|
|
6378
|
+
SendingDomainName,
|
|
6379
|
+
SendingDomainRecord,
|
|
6380
|
+
SendingDomainStatus,
|
|
6381
|
+
SendingDomainUpdate,
|
|
6262
6382
|
SignupForm,
|
|
6263
6383
|
SignupFormCreate,
|
|
6264
6384
|
SignupFormEmbed,
|