Domain.renewalDue
A live Domain entered its renewal window with no renewal yet.
Payload
Each delivery is an Event record. data holds the Domain as it stands, and previous holds the state it left.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | required | Domain.renewalDue. |
at | datetime | required | When it happened. |
seq | integer | Its position in the namespace, one more than the Event before; any seq is a cursor into the history. | |
data | json | required | The Thing as the Action left it. |
data.domain | Domain | required | The Domain as the change left it. |
data.domain.hostname | string | required | The name, such as leaseline.app. |
data.domain.role | string | required | What the Domain does for the Thing it serves; a defensive name takes redirect. |
data.domain.acquired | string | One of claimed, purchased, or connected. | |
data.domain.state | string | required | Where the Domain stands; verifying, live, degraded, expiring and lapsed are observed, the rest follow an Action. |
data.domain.registrant | Party | The owner of record: the holding Company while held, or the holder of a self-serve Startup’s Stripe account. | |
data.domain.expiresAt | datetime | When the registration ends, as the registrar reports it; empty for a claimed Domain. | |
data.domain.autoRenew | boolean | True when renewal runs without a Decision; false sends the Domain through renewal review. | |
data.domain.renewalPrice | money | What the next renewal costs, which for a premium name differs from the purchase price. | |
data.domain.transferableAt | datetime | The first moment the registrar allows a transfer out, after any registration, transfer or registrant lock. | |
data.domain.names | string | How its subdomains are given out: explicit records only, or one-label claims by other Startups. | |
data.domain.publicSuffix | boolean | True once the public suffix list browsers ship carries the Domain; an issuing Domain gives out no label before then. | |
data.domain.registrarAccount | string | The registrar account that holds the Domain: one per Startup, never shared with a sibling. | |
data.domain.registryLock | boolean | True when the registry refuses transfer, update and delete until a verified out-of-band request lifts it. | |
data.domain.certificate | json | Certificate state (pending, active, renewing or failed), its expiry, and the failing check with its fix. | |
data.domain.validation | string | delegated proves control through a CNAME to the platform; serving is for an apex that cannot hold one. | |
data.domain.walletsEnabled | boolean | True once Stripe lists the Domain as a payment method domain on the Startup’s account. | |
data.domain.carriedIdentity | boolean | True once the Domain received mail, hosted a Mailbox or verified an outside account; it never resets. | |
data.domain.to | Domain | For a redirect: the canonical Domain it forwards to permanently, path and query kept. | |
data.daysLeft | integer | required | Days until expiresAt. |
data.previous.state | string | required | The state before this Event: live. |
Example
{
"$id": "https: //api.sb/ kilnbakery.com/ events/ evt_4zfE6i11UG",
"$type": "Event",
"name": "Domain.renewalDue",
"at": "2026-10-22T12: 00: 00Z",
"data": {
"domain": {
"$id": "https: //api.sb/ kilnbakery.com/ domains/ domain_VbYut4CTsH",
"$type": "Domain",
"hostname": "kilnbakery.com",
"role": "canonical",
"acquired": "claimed",
"state": "expiring",
"registrant": "party_WiCo4Qi6JR",
"expiresAt": "2026-10-22T12: 00: 00Z",
"autoRenew": true,
"renewalPrice": {
"amount": 9,
"currency": "USD"
},
"transferableAt": "2026-10-22T12: 00: 00Z",
"names": "closed",
"publicSuffix": true,
"registrarAccount": "leaseline-0173",
"registryLock": true,
"certificate": {},
"validation": "delegated",
"walletsEnabled": true,
"carriedIdentity": true,
"to": "domain_VbYut4CTsH"
},
"daysLeft": 30,
"previous": {
"state": "live"
}
},
"seq": 399
}