@marlinjai/mail-contract 0.19.0 → 0.21.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.mjs CHANGED
@@ -131,8 +131,11 @@ var RETRYABLE_ERRORS = [
131
131
  "service_unavailable"
132
132
  ];
133
133
  var BILLING_NOT_CONFIGURED_REASON = "billing_not_configured";
134
+ var DOMAIN_BUYING_NOT_CONFIGURED_REASON = "domain_buying_not_configured";
135
+ var DOMAIN_PRICE_CHANGED_REASON = "price_changed";
136
+ var LASTING_REASONS = [BILLING_NOT_CONFIGURED_REASON, DOMAIN_BUYING_NOT_CONFIGURED_REASON];
134
137
  function isRetryableError(code, details) {
135
- return RETRYABLE_ERRORS.includes(code) && details?.reason !== BILLING_NOT_CONFIGURED_REASON;
138
+ return RETRYABLE_ERRORS.includes(code) && !LASTING_REASONS.includes(details?.reason);
136
139
  }
137
140
 
138
141
  // src/headers.ts
@@ -2785,7 +2788,7 @@ var EventListQuery = PageQuery.extend({
2785
2788
 
2786
2789
  // src/legal.ts
2787
2790
  import { z as z11 } from "zod";
2788
- var LEGAL_TERMS_VERSION = "2026-10-23";
2791
+ var LEGAL_TERMS_VERSION = "2026-10-28";
2789
2792
  var AcceptTerms = z11.literal(LEGAL_TERMS_VERSION, {
2790
2793
  errorMap: () => ({ message: `must be "${LEGAL_TERMS_VERSION}": accept the current terms of service and processing agreement` })
2791
2794
  });
@@ -3037,6 +3040,15 @@ var AUDIT_ACTIONS = [
3037
3040
  "billing.subscription_changed",
3038
3041
  "billing.exemption_changed",
3039
3042
  "billing.extra_sending_domains_changed",
3043
+ "billing.terms_accepted",
3044
+ // Domains bought inside Lumitra Mail
3045
+ "domain_order.created",
3046
+ "domain_order.paid",
3047
+ "domain_order.registered",
3048
+ "domain_order.ready",
3049
+ "domain_order.needs_attention",
3050
+ "domain_order.refunded",
3051
+ "domain_order.cancelled",
3040
3052
  // A1: automations
3041
3053
  "automation.created",
3042
3054
  "automation.updated",
@@ -3051,7 +3063,7 @@ var AUDIT_ACTIONS = [
3051
3063
  "event.recorded"
3052
3064
  ];
3053
3065
  var AuditAction = z12.enum(AUDIT_ACTIONS);
3054
- var TRUSTED_APPS = ["booking"];
3066
+ var TRUSTED_APPS = ["booking", "sites"];
3055
3067
  var TrustedApp = z12.enum(TRUSTED_APPS);
3056
3068
  var AuditActor = z12.discriminatedUnion("type", [
3057
3069
  z12.object({
@@ -3960,36 +3972,119 @@ function senderOnDomain(input, ctx) {
3960
3972
  var SendingDomainCreate = z15.object({ domain: SendingDomainName, ...SenderFields }).superRefine(senderOnDomain);
3961
3973
  var SendingDomainUpdate = z15.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");
3962
3974
 
3963
- // src/contacts.ts
3975
+ // src/domains.ts
3964
3976
  import { z as z16 } from "zod";
3965
- var Topic = z16.object({
3977
+ var DomainSearchQuery = z16.object({ q: z16.string().trim().min(1).max(63) });
3978
+ var DOMAIN_UNAVAILABLE_REASONS = ["taken", "extension_not_supported", "premium", "not_registrable"];
3979
+ var DomainUnavailableReason = z16.enum(DOMAIN_UNAVAILABLE_REASONS);
3980
+ var DomainOffer = z16.object({
3981
+ domain: z16.string(),
3982
+ available: z16.boolean(),
3983
+ reason: DomainUnavailableReason.nullable(),
3984
+ price_cents: z16.number().int().min(0).nullable(),
3985
+ renewal_price_cents: z16.number().int().min(0).nullable(),
3986
+ currency: z16.literal("EUR")
3987
+ });
3988
+ var DOMAIN_BUYING_BLOCKS = ["not_configured", "paid_plan_required", "no_company"];
3989
+ var DomainBuyingBlock = z16.enum(DOMAIN_BUYING_BLOCKS);
3990
+ var DomainSearchResult = z16.object({
3991
+ data: z16.array(DomainOffer),
3992
+ blocked: DomainBuyingBlock.nullable()
3993
+ });
3994
+ var DomainRegistrant = z16.object({
3995
+ name: z16.string().trim().min(3).max(120).regex(/\S+\s+\S+/, "must be a first and a last name"),
3996
+ organization: z16.string().trim().min(1).max(120).nullable().optional(),
3997
+ email: Email,
3998
+ phone: z16.string().trim().regex(/^\+\d{1,3}\.\d{4,14}$/, "must be +<country code>.<number>, such as +49.3012345678"),
3999
+ street: z16.string().trim().min(3).max(200),
4000
+ city: z16.string().trim().min(1).max(100),
4001
+ state: z16.string().trim().min(1).max(100),
4002
+ postal_code: z16.string().trim().min(2).max(20),
4003
+ country_code: z16.string().trim().toUpperCase().regex(/^[A-Z]{2}$/, "must be a two-letter country code such as DE")
4004
+ });
4005
+ var MAX_DOMAIN_ORDERS_PER_DAY = 2;
4006
+ var DomainOrderCreate = z16.object({
4007
+ domain: SendingDomainName,
4008
+ price_cents: z16.number().int().min(0),
4009
+ registrant: DomainRegistrant,
4010
+ from_name: z16.string().trim().min(1).max(120),
4011
+ from_local_part: z16.string().trim().toLowerCase().regex(/^[a-z0-9](?:[a-z0-9._+-]{0,62}[a-z0-9])?$/, "must be the part before the @, such as hello"),
4012
+ /**
4013
+ * Where Stripe returns to after paying, and after leaving the payment. The
4014
+ * service adds `domain_order=<order id>` to both, so the page coming back
4015
+ * knows which order to show (and read: `domainOrders.get` confirms a
4016
+ * payment at once, before Stripe's webhook arrives).
4017
+ */
4018
+ success_url: z16.string().url(),
4019
+ cancel_url: z16.string().url(),
4020
+ /** The buyer accepted the terms of service (which cover bought domains) of this version. */
4021
+ accept_terms: AcceptTerms
4022
+ });
4023
+ var DOMAIN_ORDER_STATES = [
4024
+ "awaiting_payment",
4025
+ "paid",
4026
+ "registering",
4027
+ "setting_up",
4028
+ "ready",
4029
+ "needs_attention",
4030
+ "refunded",
4031
+ "cancelled"
4032
+ ];
4033
+ var DomainOrderState = z16.enum(DOMAIN_ORDER_STATES);
4034
+ var DomainOrder = z16.object({
4035
+ id: Id,
4036
+ domain: z16.string(),
4037
+ state: DomainOrderState,
4038
+ price_cents: z16.number().int().min(0),
4039
+ renewal_price_cents: z16.number().int().min(0),
4040
+ currency: z16.literal("EUR"),
4041
+ /** Stripe's payment page while `awaiting_payment`; null otherwise. */
4042
+ checkout_url: z16.string().url().nullable(),
4043
+ registrant_name: z16.string(),
4044
+ from_name: z16.string(),
4045
+ from_email: Email,
4046
+ /** The sending domain once `ready`. */
4047
+ sending_domain_id: Id.nullable(),
4048
+ /** When the paid year ends, once registered. */
4049
+ expires_at: Timestamp.nullable(),
4050
+ /** What went wrong, for `needs_attention` and `refunded`; null otherwise. */
4051
+ last_error: z16.string().nullable(),
4052
+ paid_at: Timestamp.nullable(),
4053
+ registered_at: Timestamp.nullable(),
4054
+ created_at: Timestamp,
4055
+ updated_at: Timestamp
4056
+ });
4057
+
4058
+ // src/contacts.ts
4059
+ import { z as z17 } from "zod";
4060
+ var Topic = z17.object({
3966
4061
  id: Id,
3967
4062
  slug: Slug,
3968
- name: z16.string().min(1).max(120),
4063
+ name: z17.string().min(1).max(120),
3969
4064
  /** Shown on the hosted preference page. */
3970
- description: z16.string().max(1e3).nullable(),
4065
+ description: z17.string().max(1e3).nullable(),
3971
4066
  /** Translations of `name` and `description` per locale, for the hosted page. */
3972
- translations: z16.record(
3973
- z16.object({ name: z16.string().min(1).max(120), description: z16.string().max(1e3).nullable() })
4067
+ translations: z17.record(
4068
+ z17.object({ name: z17.string().min(1).max(120), description: z17.string().max(1e3).nullable() })
3974
4069
  ),
3975
4070
  created_at: Timestamp,
3976
4071
  updated_at: Timestamp
3977
4072
  });
3978
- var TopicCreate = z16.object({
4073
+ var TopicCreate = z17.object({
3979
4074
  slug: Slug,
3980
- name: z16.string().min(1).max(120),
3981
- description: z16.string().max(1e3).optional(),
4075
+ name: z17.string().min(1).max(120),
4076
+ description: z17.string().max(1e3).optional(),
3982
4077
  translations: Topic.shape.translations.optional()
3983
4078
  });
3984
4079
  var TopicUpdate = TopicCreate.omit({ slug: true }).partial().refine((v) => Object.keys(v).length > 0, "at least one field");
3985
- var Contact = z16.object({
4080
+ var Contact = z17.object({
3986
4081
  id: Id,
3987
- external_id: z16.string().min(1).max(255).nullable(),
4082
+ external_id: z17.string().min(1).max(255).nullable(),
3988
4083
  /** Stored lowercased, unique per workspace. */
3989
4084
  email: Email,
3990
- first_name: z16.string().max(200).nullable(),
3991
- last_name: z16.string().max(200).nullable(),
3992
- locale: z16.string().min(2).max(35).nullable(),
4085
+ first_name: z17.string().max(200).nullable(),
4086
+ last_name: z17.string().max(200).nullable(),
4087
+ locale: z17.string().min(2).max(35).nullable(),
3993
4088
  /**
3994
4089
  * The person's own time zone, an IANA name such as `Europe/Berlin` (A1).
3995
4090
  * Every wall clock an automation waits for is read in it, falling back to the
@@ -3997,65 +4092,65 @@ var Contact = z16.object({
3997
4092
  */
3998
4093
  timezone: TimezoneName.nullable(),
3999
4094
  properties: Properties,
4000
- topics: z16.array(Slug),
4095
+ topics: z17.array(Slug),
4001
4096
  /** The slugs of the contact's tags (S4). */
4002
- tags: z16.array(Slug),
4097
+ tags: z17.array(Slug),
4003
4098
  created_at: Timestamp,
4004
4099
  updated_at: Timestamp
4005
4100
  });
4006
- var ContactUpsert = z16.object({
4007
- external_id: z16.string().min(1).max(255).optional(),
4101
+ var ContactUpsert = z17.object({
4102
+ external_id: z17.string().min(1).max(255).optional(),
4008
4103
  email: Email.optional(),
4009
- first_name: z16.string().max(200).nullable().optional(),
4010
- last_name: z16.string().max(200).nullable().optional(),
4011
- locale: z16.string().min(2).max(35).nullable().optional(),
4104
+ first_name: z17.string().max(200).nullable().optional(),
4105
+ last_name: z17.string().max(200).nullable().optional(),
4106
+ locale: z17.string().min(2).max(35).nullable().optional(),
4012
4107
  timezone: TimezoneName.nullable().optional(),
4013
4108
  properties: Properties.optional(),
4014
- topics: z16.array(Slug).max(100).optional()
4109
+ topics: z17.array(Slug).max(100).optional()
4015
4110
  }).refine((v) => v.external_id !== void 0 || v.email !== void 0, {
4016
4111
  message: "external_id or email is required",
4017
4112
  path: ["email"]
4018
4113
  });
4019
- var ContactUpsertResult = z16.object({
4114
+ var ContactUpsertResult = z17.object({
4020
4115
  contact: Contact,
4021
- created: z16.boolean()
4116
+ created: z17.boolean()
4022
4117
  });
4023
4118
  var ContactListQuery = PageQuery.extend({
4024
- email: z16.string().min(1).max(254).optional(),
4025
- external_id: z16.string().min(1).max(255).optional(),
4119
+ email: z17.string().min(1).max(254).optional(),
4120
+ external_id: z17.string().min(1).max(255).optional(),
4026
4121
  topic: Slug.optional()
4027
4122
  });
4028
- var ContactErased = z16.object({
4029
- ok: z16.literal(true),
4030
- erased_messages: z16.number().int().min(0),
4031
- erased_recipients: z16.number().int().min(0),
4032
- suppressions_kept: z16.number().int().min(0)
4123
+ var ContactErased = z17.object({
4124
+ ok: z17.literal(true),
4125
+ erased_messages: z17.number().int().min(0),
4126
+ erased_recipients: z17.number().int().min(0),
4127
+ suppressions_kept: z17.number().int().min(0)
4033
4128
  });
4034
4129
  var SUPPRESSION_REASONS = ["unsubscribed", "bounced", "complained", "manual"];
4035
- var SuppressionReason = z16.enum(SUPPRESSION_REASONS);
4036
- var Suppression = z16.object({
4130
+ var SuppressionReason = z17.enum(SUPPRESSION_REASONS);
4131
+ var Suppression = z17.object({
4037
4132
  id: Id,
4038
4133
  email: Email,
4039
4134
  reason: SuppressionReason,
4040
4135
  topic: Slug.nullable(),
4041
4136
  source_message_id: Id.nullable(),
4042
- note: z16.string().max(1e3).nullable(),
4137
+ note: z17.string().max(1e3).nullable(),
4043
4138
  created_at: Timestamp
4044
4139
  });
4045
- var SuppressionCreate = z16.object({
4140
+ var SuppressionCreate = z17.object({
4046
4141
  email: Email,
4047
- reason: z16.enum(["manual", "unsubscribed"]),
4142
+ reason: z17.enum(["manual", "unsubscribed"]),
4048
4143
  topic: Slug.nullable().optional(),
4049
- note: z16.string().max(1e3).optional()
4144
+ note: z17.string().max(1e3).optional()
4050
4145
  });
4051
4146
  var SuppressionListQuery = PageQuery.extend({
4052
- email: z16.string().min(1).max(254).optional(),
4147
+ email: z17.string().min(1).max(254).optional(),
4053
4148
  reason: SuppressionReason.optional(),
4054
4149
  topic: Slug.optional()
4055
4150
  });
4056
4151
 
4057
4152
  // src/webhooks.ts
4058
- import { z as z17 } from "zod";
4153
+ import { z as z18 } from "zod";
4059
4154
  var WEBHOOK_EVENT_TYPES = [
4060
4155
  "message.sent",
4061
4156
  "message.failed",
@@ -4099,23 +4194,23 @@ var WEBHOOK_EVENT_TYPES = [
4099
4194
  "template.updated",
4100
4195
  "template.deleted"
4101
4196
  ];
4102
- var WebhookEventType = z17.enum(WEBHOOK_EVENT_TYPES);
4103
- var MessageEventBase = z17.object({
4197
+ var WebhookEventType = z18.enum(WEBHOOK_EVENT_TYPES);
4198
+ var MessageEventBase = z18.object({
4104
4199
  message_id: Id,
4105
4200
  mailing_id: Id.nullable(),
4106
4201
  mailing_metadata: MailingMetadata.nullable(),
4107
4202
  recipient_id: Id.nullable(),
4108
4203
  contact_id: Id.nullable(),
4109
- external_id: z17.string().nullable(),
4204
+ external_id: z18.string().nullable(),
4110
4205
  email: Email,
4111
- subject: z17.string(),
4206
+ subject: z18.string(),
4112
4207
  topic: Slug.nullable(),
4113
- provider_message_id: z17.string().nullable(),
4114
- is_test: z17.boolean()
4208
+ provider_message_id: z18.string().nullable(),
4209
+ is_test: z18.boolean()
4115
4210
  });
4116
4211
  var MessageSentData = MessageEventBase.extend({
4117
4212
  /** The final HTML as sent, so the client can archive it beside its own records. */
4118
- html: z17.string(),
4213
+ html: z18.string(),
4119
4214
  sent_at: Timestamp,
4120
4215
  /**
4121
4216
  * The choice each insertion made (see `Message.insertions`); absent or null
@@ -4126,20 +4221,20 @@ var MessageSentData = MessageEventBase.extend({
4126
4221
  insertions: InsertionChoices.nullish()
4127
4222
  });
4128
4223
  var MessageFailedData = MessageEventBase.extend({
4129
- error: z17.string(),
4224
+ error: z18.string(),
4130
4225
  /** False when the provider rejected permanently; the recipient will not be retried. */
4131
- retryable: z17.boolean(),
4226
+ retryable: z18.boolean(),
4132
4227
  failed_at: Timestamp
4133
4228
  });
4134
4229
  var UNSUBSCRIBE_SOURCES = ["hosted_page", "one_click", "api", "dashboard", "signup_form"];
4135
- var ContactUnsubscribedData = z17.object({
4230
+ var ContactUnsubscribedData = z18.object({
4136
4231
  contact_id: Id.nullable(),
4137
- external_id: z17.string().nullable(),
4232
+ external_id: z18.string().nullable(),
4138
4233
  email: Email,
4139
4234
  /** The topic unsubscribed from; null means every topic. */
4140
4235
  topic: Slug.nullable(),
4141
4236
  mailing_id: Id.nullable(),
4142
- source: z17.enum(UNSUBSCRIBE_SOURCES),
4237
+ source: z18.enum(UNSUBSCRIBE_SOURCES),
4143
4238
  unsubscribed_at: Timestamp
4144
4239
  });
4145
4240
  var ContactResubscribedData = ContactUnsubscribedData.omit({ unsubscribed_at: true }).extend({
@@ -4148,142 +4243,142 @@ var ContactResubscribedData = ContactUnsubscribedData.omit({ unsubscribed_at: tr
4148
4243
  * breaker undid a `bounced` block it judged false (a `contact.bounced` for the
4149
4244
  * same address and mailing went out before); `topic` is null.
4150
4245
  */
4151
- source: z17.enum([...UNSUBSCRIBE_SOURCES, "bounce_reverted"]),
4246
+ source: z18.enum([...UNSUBSCRIBE_SOURCES, "bounce_reverted"]),
4152
4247
  resubscribed_at: Timestamp
4153
4248
  });
4154
- var ContactBouncedData = z17.object({
4249
+ var ContactBouncedData = z18.object({
4155
4250
  contact_id: Id.nullable(),
4156
- external_id: z17.string().nullable(),
4251
+ external_id: z18.string().nullable(),
4157
4252
  email: Email,
4158
4253
  /** `bounced` for a hard bounce, `complained` for a spam complaint. */
4159
- reason: z17.enum(["bounced", "complained"]),
4254
+ reason: z18.enum(["bounced", "complained"]),
4160
4255
  message_id: Id.nullable(),
4161
- diagnostic: z17.string().nullable(),
4256
+ diagnostic: z18.string().nullable(),
4162
4257
  bounced_at: Timestamp
4163
4258
  });
4164
- var MailingFinishedData = z17.object({
4259
+ var MailingFinishedData = z18.object({
4165
4260
  mailing_id: Id,
4166
4261
  mailing_metadata: MailingMetadata,
4167
- status: z17.enum(["sent", "partially_failed", "cancelled"]),
4262
+ status: z18.enum(["sent", "partially_failed", "cancelled"]),
4168
4263
  counts: MailingCounts,
4169
4264
  finished_at: Timestamp
4170
4265
  });
4171
- var ContactSubscribedData = z17.object({
4266
+ var ContactSubscribedData = z18.object({
4172
4267
  contact_id: Id,
4173
- external_id: z17.string().nullable(),
4268
+ external_id: z18.string().nullable(),
4174
4269
  email: Email,
4175
- topics: z17.array(Slug),
4176
- source: z17.enum(["signup_form", "api", "dashboard", "automation"]),
4270
+ topics: z18.array(Slug),
4271
+ source: z18.enum(["signup_form", "api", "dashboard", "automation"]),
4177
4272
  signup_form_id: Id.nullable(),
4178
- signup_form_version: z17.number().int().min(1).nullable(),
4273
+ signup_form_version: z18.number().int().min(1).nullable(),
4179
4274
  subscribed_at: Timestamp
4180
4275
  });
4181
- var ImportFinishedData = z17.object({
4276
+ var ImportFinishedData = z18.object({
4182
4277
  import_id: Id,
4183
- status: z17.enum(["completed", "cancelled", "failed"]),
4278
+ status: z18.enum(["completed", "cancelled", "failed"]),
4184
4279
  result: ImportReport.nullable(),
4185
- error: z17.string().nullable(),
4280
+ error: z18.string().nullable(),
4186
4281
  finished_at: Timestamp
4187
4282
  });
4188
- var MailingScheduledData = z17.object({
4283
+ var MailingScheduledData = z18.object({
4189
4284
  mailing_id: Id,
4190
4285
  mailing_metadata: MailingMetadata,
4191
4286
  scheduled_at: Timestamp.nullable()
4192
4287
  });
4193
- var MailingStartedData = z17.object({
4288
+ var MailingStartedData = z18.object({
4194
4289
  mailing_id: Id,
4195
4290
  mailing_metadata: MailingMetadata,
4196
- trigger: z17.enum(["send", "schedule"]),
4197
- recipients: z17.number().int().min(0),
4291
+ trigger: z18.enum(["send", "schedule"]),
4292
+ recipients: z18.number().int().min(0),
4198
4293
  started_at: Timestamp
4199
4294
  });
4200
- var MailingScheduleFailedData = z17.object({
4295
+ var MailingScheduleFailedData = z18.object({
4201
4296
  mailing_id: Id,
4202
4297
  mailing_metadata: MailingMetadata,
4203
- code: z17.string(),
4204
- message: z17.string(),
4298
+ code: z18.string(),
4299
+ message: z18.string(),
4205
4300
  failed_at: Timestamp
4206
4301
  });
4207
- var MailingAbWinnerSelectedData = z17.object({
4302
+ var MailingAbWinnerSelectedData = z18.object({
4208
4303
  mailing_id: Id,
4209
4304
  mailing_metadata: MailingMetadata,
4210
- winner: z17.string(),
4211
- decided_by: z17.enum(["metric", "manual"]),
4212
- variants: z17.array(VariantAnalytics),
4305
+ winner: z18.string(),
4306
+ decided_by: z18.enum(["metric", "manual"]),
4307
+ variants: z18.array(VariantAnalytics),
4213
4308
  decided_at: Timestamp
4214
4309
  });
4215
- var ContactTaggedData = z17.object({
4310
+ var ContactTaggedData = z18.object({
4216
4311
  contact_id: Id,
4217
- external_id: z17.string().nullable(),
4312
+ external_id: z18.string().nullable(),
4218
4313
  email: Email,
4219
4314
  /** Only the tags the contact did not already have. */
4220
- tags: z17.array(Slug).min(1),
4221
- source: z17.enum(["api", "dashboard", "signup_form", "import", "automation"]),
4315
+ tags: z18.array(Slug).min(1),
4316
+ source: z18.enum(["api", "dashboard", "signup_form", "import", "automation"]),
4222
4317
  tagged_at: Timestamp
4223
4318
  });
4224
- var ContactUpdatedData = z17.object({
4319
+ var ContactUpdatedData = z18.object({
4225
4320
  contact_id: Id,
4226
- external_id: z17.string().nullable(),
4321
+ external_id: z18.string().nullable(),
4227
4322
  email: Email,
4228
- changed: z17.array(z17.string()).min(1),
4323
+ changed: z18.array(z18.string()).min(1),
4229
4324
  properties: Properties,
4230
- source: z17.enum(["api", "dashboard", "signup_form", "import", "automation"]),
4325
+ source: z18.enum(["api", "dashboard", "signup_form", "import", "automation"]),
4231
4326
  updated_at: Timestamp
4232
4327
  });
4233
- var AutomationRunEventBase = z17.object({
4328
+ var AutomationRunEventBase = z18.object({
4234
4329
  automation_id: Id,
4235
- automation_name: z17.string(),
4330
+ automation_name: z18.string(),
4236
4331
  run_id: Id,
4237
- version: z17.number().int().min(1),
4332
+ version: z18.number().int().min(1),
4238
4333
  contact_id: Id,
4239
- external_id: z17.string().nullable(),
4334
+ external_id: z18.string().nullable(),
4240
4335
  email: Email
4241
4336
  });
4242
4337
  var AutomationRunStartedData = AutomationRunEventBase.extend({
4243
4338
  /** What let them in: a trigger kind, or `manual` for an explicit enrolment. */
4244
- trigger_kind: z17.string(),
4339
+ trigger_kind: z18.string(),
4245
4340
  entered_at: Timestamp
4246
4341
  });
4247
4342
  var AutomationRunCompletedData = AutomationRunEventBase.extend({
4248
- last_step_id: z17.string().nullable(),
4343
+ last_step_id: z18.string().nullable(),
4249
4344
  completed_at: Timestamp
4250
4345
  });
4251
4346
  var AutomationRunExitedData = AutomationRunEventBase.extend({
4252
4347
  reason: AutomationEndReason,
4253
- step_id: z17.string().nullable(),
4348
+ step_id: z18.string().nullable(),
4254
4349
  exited_at: Timestamp
4255
4350
  });
4256
4351
  var AutomationRunFailedData = AutomationRunEventBase.extend({
4257
- reason: z17.string(),
4258
- step_id: z17.string().nullable(),
4352
+ reason: z18.string(),
4353
+ step_id: z18.string().nullable(),
4259
4354
  failed_at: Timestamp
4260
4355
  });
4261
4356
  var AutomationWebhookData = AutomationRunEventBase.extend({
4262
- step_id: z17.string(),
4357
+ step_id: z18.string(),
4263
4358
  /** The step's own label, when it was given one, so a receiver can branch on a name. */
4264
- step_label: z17.string().nullable(),
4359
+ step_label: z18.string().nullable(),
4265
4360
  /** Whatever the step carries, verbatim. Null when it carries nothing. */
4266
4361
  payload: JsonValue.nullable(),
4267
4362
  fired_at: Timestamp
4268
4363
  });
4269
- var TemplateEventBase = z17.object({
4364
+ var TemplateEventBase = z18.object({
4270
4365
  template_id: Id,
4271
- name: z17.string().min(1).max(200),
4272
- version: z17.number().int().min(1),
4273
- source: z17.enum(["api", "dashboard", "mjml_import"])
4366
+ name: z18.string().min(1).max(200),
4367
+ version: z18.number().int().min(1),
4368
+ source: z18.enum(["api", "dashboard", "mjml_import"])
4274
4369
  });
4275
4370
  var TemplateCreatedData = TemplateEventBase.extend({ created_at: Timestamp });
4276
- var TemplateUpdatedData = TemplateEventBase.extend({ archived: z17.boolean(), updated_at: Timestamp });
4371
+ var TemplateUpdatedData = TemplateEventBase.extend({ archived: z18.boolean(), updated_at: Timestamp });
4277
4372
  var TemplateDeletedData = TemplateEventBase.extend({ deleted_at: Timestamp });
4278
- var envelope = (type, data) => z17.object({
4373
+ var envelope = (type, data) => z18.object({
4279
4374
  /** Unique per event: a receiver deduplicates on it (deliveries may repeat). */
4280
4375
  id: Id,
4281
- type: z17.literal(type),
4376
+ type: z18.literal(type),
4282
4377
  created_at: Timestamp,
4283
4378
  workspace_id: Id,
4284
4379
  data
4285
4380
  });
4286
- var WebhookEvent = z17.discriminatedUnion("type", [
4381
+ var WebhookEvent = z18.discriminatedUnion("type", [
4287
4382
  envelope("message.sent", MessageSentData),
4288
4383
  envelope("message.failed", MessageFailedData),
4289
4384
  envelope("contact.unsubscribed", ContactUnsubscribedData),
@@ -4307,16 +4402,16 @@ var WebhookEvent = z17.discriminatedUnion("type", [
4307
4402
  envelope("template.updated", TemplateUpdatedData),
4308
4403
  envelope("template.deleted", TemplateDeletedData)
4309
4404
  ]);
4310
- var WebhookEndpoint = z17.object({
4405
+ var WebhookEndpoint = z18.object({
4311
4406
  id: Id,
4312
- url: z17.string().url(),
4313
- description: z17.string().max(500).nullable(),
4314
- events: z17.array(WebhookEventType).min(1),
4315
- enabled: z17.boolean(),
4407
+ url: z18.string().url(),
4408
+ description: z18.string().max(500).nullable(),
4409
+ events: z18.array(WebhookEventType).min(1),
4410
+ enabled: z18.boolean(),
4316
4411
  created_at: Timestamp,
4317
4412
  updated_at: Timestamp
4318
4413
  });
4319
- var WebhookUrl = z17.string().url().refine((u) => {
4414
+ var WebhookUrl = z18.string().url().refine((u) => {
4320
4415
  try {
4321
4416
  const url = new URL(u);
4322
4417
  if (url.protocol === "https:") return true;
@@ -4325,35 +4420,35 @@ var WebhookUrl = z17.string().url().refine((u) => {
4325
4420
  return false;
4326
4421
  }
4327
4422
  }, "must be https (http only for localhost)");
4328
- var WebhookEndpointCreate = z17.object({
4423
+ var WebhookEndpointCreate = z18.object({
4329
4424
  url: WebhookUrl,
4330
- description: z17.string().max(500).optional(),
4331
- events: z17.array(WebhookEventType).min(1),
4332
- enabled: z17.boolean().optional()
4425
+ description: z18.string().max(500).optional(),
4426
+ events: z18.array(WebhookEventType).min(1),
4427
+ enabled: z18.boolean().optional()
4333
4428
  });
4334
- var WebhookEndpointUpdate = z17.object({
4429
+ var WebhookEndpointUpdate = z18.object({
4335
4430
  url: WebhookUrl,
4336
- description: z17.string().max(500).nullable(),
4337
- events: z17.array(WebhookEventType).min(1),
4338
- enabled: z17.boolean()
4431
+ description: z18.string().max(500).nullable(),
4432
+ events: z18.array(WebhookEventType).min(1),
4433
+ enabled: z18.boolean()
4339
4434
  }).partial().refine((v) => Object.keys(v).length > 0, "at least one field");
4340
- var WebhookEndpointWithSecret = z17.object({
4435
+ var WebhookEndpointWithSecret = z18.object({
4341
4436
  endpoint: WebhookEndpoint,
4342
- secret: z17.string().min(32)
4437
+ secret: z18.string().min(32)
4343
4438
  });
4344
4439
  var WEBHOOK_DELIVERY_STATUSES = ["pending", "succeeded", "failed"];
4345
- var WebhookDeliveryStatus = z17.enum(WEBHOOK_DELIVERY_STATUSES);
4440
+ var WebhookDeliveryStatus = z18.enum(WEBHOOK_DELIVERY_STATUSES);
4346
4441
  var WEBHOOK_MAX_ATTEMPTS = 8;
4347
4442
  var WEBHOOK_RETRY_DELAYS_SECONDS = [30, 120, 600, 1800, 3600, 7200, 21600];
4348
- var WebhookDelivery = z17.object({
4443
+ var WebhookDelivery = z18.object({
4349
4444
  id: Id,
4350
4445
  endpoint_id: Id,
4351
4446
  event_id: Id,
4352
4447
  event_type: WebhookEventType,
4353
4448
  status: WebhookDeliveryStatus,
4354
- attempts: z17.number().int().min(0),
4355
- last_status_code: z17.number().int().min(100).max(599).nullable(),
4356
- last_error: z17.string().nullable(),
4449
+ attempts: z18.number().int().min(0),
4450
+ last_status_code: z18.number().int().min(100).max(599).nullable(),
4451
+ last_error: z18.string().nullable(),
4357
4452
  next_attempt_at: Timestamp.nullable(),
4358
4453
  delivered_at: Timestamp.nullable(),
4359
4454
  created_at: Timestamp
@@ -4362,7 +4457,7 @@ var WebhookDeliveryListQuery = PageQuery.extend({
4362
4457
  status: WebhookDeliveryStatus.optional(),
4363
4458
  event_type: WebhookEventType.optional()
4364
4459
  });
4365
- var WebhookDeliveryParams = z17.object({ id: Id, delivery_id: Id });
4460
+ var WebhookDeliveryParams = z18.object({ id: Id, delivery_id: Id });
4366
4461
 
4367
4462
  // src/webhook-signing.ts
4368
4463
  var WEBHOOK_SIGNATURE_HEADER = "x-mail-signature";
@@ -4429,96 +4524,99 @@ async function verifyWebhook(input) {
4429
4524
  }
4430
4525
 
4431
4526
  // src/billing.ts
4432
- import { z as z18 } from "zod";
4527
+ import { z as z19 } from "zod";
4433
4528
  var PLAN_IDS = ["free", "starter", "growth", "design_partner"];
4434
- var PlanId = z18.enum(PLAN_IDS);
4435
- var PlanLimits = z18.object({
4436
- monthly_messages: z18.number().int().min(0).nullable(),
4437
- contacts: z18.number().int().min(0).nullable(),
4438
- members: z18.number().int().min(1).nullable(),
4439
- providers: z18.number().int().min(1).nullable(),
4440
- webhook_endpoints: z18.number().int().min(0).nullable(),
4529
+ var PlanId = z19.enum(PLAN_IDS);
4530
+ var PlanLimits = z19.object({
4531
+ monthly_messages: z19.number().int().min(0).nullable(),
4532
+ contacts: z19.number().int().min(0).nullable(),
4533
+ members: z19.number().int().min(1).nullable(),
4534
+ providers: z19.number().int().min(1).nullable(),
4535
+ webhook_endpoints: z19.number().int().min(0).nullable(),
4441
4536
  /** Automations that may be live (active or paused) at once (A1). */
4442
- active_automations: z18.number().int().min(0).nullable(),
4537
+ active_automations: z19.number().int().min(0).nullable(),
4443
4538
  /** Steps one automation may hold. Null is the flow's own cap, not unlimited. */
4444
- automation_steps: z18.number().int().min(1).nullable(),
4539
+ automation_steps: z19.number().int().min(1).nullable(),
4445
4540
  /** Own domains Lumitra Mail sends from (managed sending domains); 0 when the plan has none. */
4446
- sending_domains: z18.number().int().min(0).nullable()
4541
+ sending_domains: z19.number().int().min(0).nullable()
4447
4542
  });
4448
- var PlanFeatures = z18.object({
4543
+ var PlanFeatures = z19.object({
4449
4544
  /** A/B tests of subject and content on a mailing (S4). */
4450
- ab_testing: z18.boolean(),
4545
+ ab_testing: z19.boolean(),
4451
4546
  /** Open and click tracking, still off until a workspace turns it on (`settings.tracking_enabled`). */
4452
- tracking: z18.boolean(),
4547
+ tracking: z19.boolean(),
4453
4548
  /** Automations: flows a person walks through step by step (A1). */
4454
- automations: z18.boolean()
4549
+ automations: z19.boolean()
4455
4550
  });
4456
4551
  var PLAN_FEATURES = ["ab_testing", "tracking", "automations"];
4457
- var Plan = z18.object({
4552
+ var Plan = z19.object({
4458
4553
  id: PlanId,
4459
- name: z18.string().min(1),
4554
+ name: z19.string().min(1),
4460
4555
  /** Price in the smallest currency unit per month; null for plans not sold. */
4461
- monthly_price_cents: z18.number().int().min(0).nullable(),
4462
- currency: z18.string().length(3),
4556
+ monthly_price_cents: z19.number().int().min(0).nullable(),
4557
+ currency: z19.string().length(3),
4463
4558
  limits: PlanLimits,
4464
4559
  features: PlanFeatures
4465
4560
  });
4466
- var CatalogPlan = Plan.extend({ sellable: z18.boolean() });
4467
- var Subscription = z18.object({
4561
+ var CatalogPlan = Plan.extend({ sellable: z19.boolean() });
4562
+ var Subscription = z19.object({
4468
4563
  workspace_id: Id,
4469
4564
  plan: PlanId,
4470
- status: z18.enum(["active", "trialing", "past_due", "cancelled"]),
4565
+ status: z19.enum(["active", "trialing", "past_due", "cancelled"]),
4471
4566
  current_period_start: Timestamp,
4472
4567
  current_period_end: Timestamp,
4473
- cancel_at_period_end: z18.boolean(),
4568
+ cancel_at_period_end: z19.boolean(),
4474
4569
  /**
4475
4570
  * A design partner outside billing (plan `design_partner`, no limits, no
4476
4571
  * checkout). Set only by an operator, never through the API.
4477
4572
  */
4478
- billing_exempt: z18.boolean(),
4573
+ billing_exempt: z19.boolean(),
4479
4574
  /**
4480
4575
  * Own sending domains bought on top of the plan's included ones (the
4481
4576
  * add-on), each a monthly charge on the same subscription. 0 without the
4482
4577
  * add-on; the usage limit `sending_domains` is the plan's plus these.
4483
4578
  */
4484
- extra_sending_domains: z18.number().int().min(0)
4579
+ extra_sending_domains: z19.number().int().min(0)
4485
4580
  });
4486
- var BillingAddons = z18.object({
4487
- sending_domain: z18.object({
4488
- monthly_price_cents: z18.number().int().min(0),
4489
- currency: z18.string().length(3),
4490
- sellable: z18.boolean()
4581
+ var BillingAddons = z19.object({
4582
+ sending_domain: z19.object({
4583
+ monthly_price_cents: z19.number().int().min(0),
4584
+ currency: z19.string().length(3),
4585
+ sellable: z19.boolean()
4491
4586
  })
4492
4587
  });
4493
4588
  var MAX_EXTRA_SENDING_DOMAINS = 100;
4494
- var ExtraSendingDomainsUpdate = z18.object({ quantity: z18.number().int().min(0).max(MAX_EXTRA_SENDING_DOMAINS) });
4589
+ var ExtraSendingDomainsUpdate = z19.object({ quantity: z19.number().int().min(0).max(MAX_EXTRA_SENDING_DOMAINS) });
4495
4590
  var USAGE_METRICS = ["messages", "contacts", "members", "providers", "webhook_endpoints", "active_automations", "sending_domains"];
4496
- var UsageMetric = z18.enum(USAGE_METRICS);
4591
+ var UsageMetric = z19.enum(USAGE_METRICS);
4497
4592
  var USAGE_WARNING_RATIO = 0.8;
4498
- var UsageWarning = z18.object({
4593
+ var UsageWarning = z19.object({
4499
4594
  metric: UsageMetric,
4500
- used: z18.number().int().min(0),
4501
- limit: z18.number().int().min(0),
4595
+ used: z19.number().int().min(0),
4596
+ limit: z19.number().int().min(0),
4502
4597
  /** `approaching`: at or above USAGE_WARNING_RATIO of the limit; `reached`: at or above the limit. */
4503
- level: z18.enum(["approaching", "reached"])
4598
+ level: z19.enum(["approaching", "reached"])
4504
4599
  });
4505
- var Usage = z18.object({
4600
+ var TermsStatus = z19.object({ accepted_version: z19.string().nullable(), current_version: z19.string() });
4601
+ var Usage = z19.object({
4506
4602
  plan: PlanId,
4507
4603
  period_start: Timestamp,
4508
4604
  period_end: Timestamp,
4509
- metrics: z18.record(UsageMetric, z18.object({ used: z18.number().int().min(0), limit: z18.number().int().min(0).nullable() })),
4510
- warnings: z18.array(UsageWarning)
4511
- });
4512
- var CheckoutRequest = z18.object({
4513
- plan: z18.enum(["starter", "growth"]),
4514
- success_url: z18.string().url(),
4515
- cancel_url: z18.string().url(),
4605
+ metrics: z19.record(UsageMetric, z19.object({ used: z19.number().int().min(0), limit: z19.number().int().min(0).nullable() })),
4606
+ warnings: z19.array(UsageWarning),
4607
+ terms: TermsStatus
4608
+ });
4609
+ var TermsAcceptance = z19.object({ accept_terms: AcceptTerms });
4610
+ var CheckoutRequest = z19.object({
4611
+ plan: z19.enum(["starter", "growth"]),
4612
+ success_url: z19.string().url(),
4613
+ cancel_url: z19.string().url(),
4516
4614
  /** The buyer accepted the terms of service and the processing agreement of this version. */
4517
4615
  accept_terms: AcceptTerms
4518
4616
  });
4519
- var CheckoutSession = z18.object({ url: z18.string().url() });
4520
- var PortalRequest = z18.object({ return_url: z18.string().url() });
4521
- var PortalSession = z18.object({ url: z18.string().url() });
4617
+ var CheckoutSession = z19.object({ url: z19.string().url() });
4618
+ var PortalRequest = z19.object({ return_url: z19.string().url() });
4619
+ var PortalSession = z19.object({ url: z19.string().url() });
4522
4620
  var USAGE_WARNING_HEADER = "x-mail-usage-warning";
4523
4621
  function formatUsageWarningHeader(warnings) {
4524
4622
  if (warnings.length === 0) return null;
@@ -4538,7 +4636,7 @@ function parseUsageWarningHeader(value) {
4538
4636
  }
4539
4637
 
4540
4638
  // src/routes.ts
4541
- import { z as z19 } from "zod";
4639
+ import { z as z20 } from "zod";
4542
4640
  var list = (item) => page(item);
4543
4641
  var foundationRoutes = {
4544
4642
  "workspaces.create": {
@@ -4784,7 +4882,7 @@ var templateRoutes = {
4784
4882
  path: "/v1/templates/:id/export",
4785
4883
  params: IdParams,
4786
4884
  query: TemplateExportQuery,
4787
- response: z19.string(),
4885
+ response: z20.string(),
4788
4886
  responseType: "text",
4789
4887
  status: 200,
4790
4888
  access: "read",
@@ -5164,7 +5262,7 @@ var sendingRoutes = {
5164
5262
  path: "/v1/mailings/:id/export",
5165
5263
  params: IdParams,
5166
5264
  query: MailingExportQuery,
5167
- response: z19.string(),
5265
+ response: z20.string(),
5168
5266
  responseType: "text",
5169
5267
  status: 200,
5170
5268
  access: "read",
@@ -5431,7 +5529,7 @@ var platformRoutes = {
5431
5529
  "contactProperties.list": {
5432
5530
  method: "GET",
5433
5531
  path: "/v1/contact-properties",
5434
- response: z19.object({ data: z19.array(ContactPropertyDefinition) }),
5532
+ response: z20.object({ data: z20.array(ContactPropertyDefinition) }),
5435
5533
  status: 200,
5436
5534
  access: "read",
5437
5535
  phase: "S4"
@@ -5730,7 +5828,7 @@ var billingRoutes = {
5730
5828
  "billing.plans": {
5731
5829
  method: "GET",
5732
5830
  path: "/v1/billing/plans",
5733
- response: z19.object({ data: z19.array(CatalogPlan), addons: BillingAddons }),
5831
+ response: z20.object({ data: z20.array(CatalogPlan), addons: BillingAddons }),
5734
5832
  status: 200,
5735
5833
  access: "read",
5736
5834
  phase: "S5"
@@ -5770,6 +5868,53 @@ var billingRoutes = {
5770
5868
  status: 200,
5771
5869
  access: "admin",
5772
5870
  phase: "S5"
5871
+ },
5872
+ "billing.acceptTerms": {
5873
+ method: "POST",
5874
+ path: "/v1/billing/terms",
5875
+ body: TermsAcceptance,
5876
+ response: TermsStatus,
5877
+ status: 200,
5878
+ access: "admin",
5879
+ phase: "S5"
5880
+ }
5881
+ };
5882
+ var domainBuyingRoutes = {
5883
+ "domains.search": {
5884
+ method: "GET",
5885
+ path: "/v1/domains/search",
5886
+ query: DomainSearchQuery,
5887
+ response: DomainSearchResult,
5888
+ status: 200,
5889
+ access: "admin",
5890
+ phase: "S5"
5891
+ },
5892
+ "domainOrders.create": {
5893
+ method: "POST",
5894
+ path: "/v1/domain-orders",
5895
+ body: DomainOrderCreate,
5896
+ response: DomainOrder,
5897
+ status: 201,
5898
+ access: "admin",
5899
+ phase: "S5"
5900
+ },
5901
+ "domainOrders.list": {
5902
+ method: "GET",
5903
+ path: "/v1/domain-orders",
5904
+ query: PageQuery,
5905
+ response: list(DomainOrder),
5906
+ status: 200,
5907
+ access: "admin",
5908
+ phase: "S5"
5909
+ },
5910
+ "domainOrders.get": {
5911
+ method: "GET",
5912
+ path: "/v1/domain-orders/:id",
5913
+ params: IdParams,
5914
+ response: DomainOrder,
5915
+ status: 200,
5916
+ access: "admin",
5917
+ phase: "S5"
5773
5918
  }
5774
5919
  };
5775
5920
  var inviteRoutes = {
@@ -5881,7 +6026,7 @@ var automationRoutes = {
5881
6026
  method: "POST",
5882
6027
  path: "/v1/automations/:id/pause",
5883
6028
  params: IdParams,
5884
- body: z19.object({}).strict(),
6029
+ body: z20.object({}).strict(),
5885
6030
  response: Automation,
5886
6031
  status: 200,
5887
6032
  access: "write",
@@ -5891,7 +6036,7 @@ var automationRoutes = {
5891
6036
  method: "POST",
5892
6037
  path: "/v1/automations/:id/resume",
5893
6038
  params: IdParams,
5894
- body: z19.object({}).strict(),
6039
+ body: z20.object({}).strict(),
5895
6040
  response: Automation,
5896
6041
  status: 200,
5897
6042
  access: "write",
@@ -5901,7 +6046,7 @@ var automationRoutes = {
5901
6046
  method: "POST",
5902
6047
  path: "/v1/automations/:id/archive",
5903
6048
  params: IdParams,
5904
- body: z19.object({}).strict(),
6049
+ body: z20.object({}).strict(),
5905
6050
  response: Automation,
5906
6051
  status: 200,
5907
6052
  access: "write",
@@ -6016,10 +6161,13 @@ var routes = {
6016
6161
  ...inviteRoutes,
6017
6162
  ...platformRoutes,
6018
6163
  ...billingRoutes,
6164
+ ...domainBuyingRoutes,
6019
6165
  ...automationRoutes
6020
6166
  };
6021
6167
  var TRUSTED_APP_OPERATIONS = {
6022
- booking: ["workspaces.list", "workspace.update", "providers.list", "sendingDomains.list", "apiKeys.create", "apiKeys.revoke"]
6168
+ booking: ["workspaces.list", "workspace.update", "providers.list", "sendingDomains.list", "apiKeys.create", "apiKeys.revoke"],
6169
+ // The shop's receipt email needs exactly what connecting a booking page needs.
6170
+ sites: ["workspaces.list", "workspace.update", "providers.list", "sendingDomains.list", "apiKeys.create", "apiKeys.revoke"]
6023
6171
  };
6024
6172
  function trustedAppMayCall(app, id) {
6025
6173
  return TRUSTED_APP_OPERATIONS[app].includes(id);
@@ -6180,10 +6328,24 @@ export {
6180
6328
  DEFAULT_INVITE_TTL_DAYS,
6181
6329
  DEFAULT_PAGE_LIMIT,
6182
6330
  DOCUMENT_SCHEMA_VERSIONS,
6331
+ DOMAIN_BUYING_BLOCKS,
6332
+ DOMAIN_BUYING_NOT_CONFIGURED_REASON,
6333
+ DOMAIN_ORDER_STATES,
6334
+ DOMAIN_PRICE_CHANGED_REASON,
6335
+ DOMAIN_UNAVAILABLE_REASONS,
6183
6336
  DateOnly,
6184
6337
  DatePassedAnswer,
6185
6338
  DelayStep,
6186
6339
  DocumentSchemaVersion,
6340
+ DomainBuyingBlock,
6341
+ DomainOffer,
6342
+ DomainOrder,
6343
+ DomainOrderCreate,
6344
+ DomainOrderState,
6345
+ DomainRegistrant,
6346
+ DomainSearchQuery,
6347
+ DomainSearchResult,
6348
+ DomainUnavailableReason,
6187
6349
  EDITABLE_MAILING_STATUSES,
6188
6350
  ERROR_CODES,
6189
6351
  ERROR_STATUS,
@@ -6267,6 +6429,7 @@ export {
6267
6429
  MAX_ASSET_BYTES,
6268
6430
  MAX_DELAY_SECONDS,
6269
6431
  MAX_DOCUMENT_BYTES,
6432
+ MAX_DOMAIN_ORDERS_PER_DAY,
6270
6433
  MAX_ENGAGEMENT_DAYS,
6271
6434
  MAX_EXPORT_WARNINGS_HEADER_LENGTH,
6272
6435
  MAX_EXTRA_SENDING_DOMAINS,
@@ -6500,6 +6663,8 @@ export {
6500
6663
  TemplateUpdatedData,
6501
6664
  TemplateVersion,
6502
6665
  TemplateVersionParams,
6666
+ TermsAcceptance,
6667
+ TermsStatus,
6503
6668
  TimeOfDay,
6504
6669
  Timestamp,
6505
6670
  TimezoneName,
@@ -6575,6 +6740,7 @@ export {
6575
6740
  demoteForSave,
6576
6741
  demotedBySave,
6577
6742
  describeMissingTexts,
6743
+ domainBuyingRoutes,
6578
6744
  draftDocument,
6579
6745
  draftInsertionProblems,
6580
6746
  draftsDirty,