Registry Maintenance Notification for the Extensible Provisioning Protocol (EPP)
Extracted elements (30)
DNS namespace expansion has led to many additional registries that registrars must interact with, each communicating maintenance events in non-standardized formats. This extension provides a single EPP-based mechanism to notify registrars of upcoming maintenance events across all registries.
During version migration, the version of the maintenance <info> response MUST match the version of the maintenance <info> command executed. Servers SHOULD support older extension versions in parallel during a temporary migration period per server policy.
This extension does not add any elements to EPP <check>, <transfer>, <create>, <delete>, <renew>, or <update> commands or responses; it only extends <info> and <poll> commands.
All date and time attribute values MUST be expressed in UTC using the Gregorian calendar with the RFC 3339 'date-time' format and time-offset='Z'.
If the intersection of the maintenance objURI elements of the server greeting and client login command results in an empty set, the server MUST return the newest version of the Registry Maintenance Notification poll message supported by the server per RFC 9038.
If the maintenance identifier in an <info> command does not exist, the server MUST return an EPP error result code of 2303 ('Object does not exist').
Names of affected hosts MUST be provided in A-label form according to RFC 5891 (Internationalized Domain Names).
Servers MUST return a Registry Maintenance Notification poll message matching the newest negotiated version of the maintenance extension based on the intersection of maintenance objURI elements in the server greeting and the client login command.
Servers that implement this extension SHOULD provide a way for clients to progressively update their implementations when a new version of the extension is deployed, using an XML namespace with a higher version number.
The EPP <info> command MUST contain a <maint:info> element that identifies the maintenance namespace, with either a <maint:id> child (query specific item) or an empty <maint:list> child (query all items).
The <maint:end> element MUST be greater than the <maint:start> element, ensuring event end time is always after start time.
The XML namespace prefix 'maint' is used for 'urn:ietf:params:xml:ns:epp:maintenance-1.0', but implementations MUST NOT depend on it; instead, a proper namespace-aware XML parser and serializer must be employed.
When an <info> command has been processed successfully, the EPP <resData> element MUST contain a child <maint:infData> element containing either a <maint:list> (with zero or more <maint:listItem> elements) or a <maint:item> element.
Five types of EPP poll messages are defined for Registry Maintenance Notification via the <maint:pollType> element: create, update, delete, courtesy, and end. Poll responses include a <maint:infData> element within <resData> containing the <maint:item> element.
The <maint:description> element is an optional free-form description with optional 'lang' (RFC 5646 language tag, default 'en') and 'type' attributes. The 'type' MUST be 'plain' for plain text or 'html' for HTML text (as defined in HTML5, XML-escaped), defaulting to 'plain'.
The <maint:environment> element has a REQUIRED 'type' attribute that MUST be 'production', 'ote', 'staging', 'dev', or 'custom'. An optional 'name' attribute provides the custom environment name when type is 'custom'.
The <maint:id> element is the server-unique identifier for the maintenance event; it SHALL NOT be changed if the event is updated or deleted. It includes optional 'name' (human-readable) and 'lang' attributes.
The <maint:item> element describes a single registry maintenance event during a specific period and is used in maintenance item EPP <info> command/response and <poll> responses. It contains id, type, pollType, systems, environment, start, end, reason, detail, description, tlds, intervention, crDate, and optional upDate.
The <maint:listItem> element in a list response contains: <maint:id>, <maint:start>, <maint:end>, <maint:crDate>, and optional <maint:upDate>. Server policy determines whether completed maintenance events are included in the list.
The <maint:pollType> element is OPTIONAL and present only in poll messages; values MUST be 'create', 'update', 'delete', 'courtesy', or 'end'. For 'create'/'update' the server includes post-change state; for 'delete' it includes pre-delete state; 'courtesy' is a reminder; 'end' signals event completion.
The <maint:reason> element's values MUST be either 'planned' or 'emergency', indicating the nature of the maintenance event.
The <maint:system> element within <maint:systems> contains <maint:name>, optional <maint:host> (in A-label form), and <maint:impact>. The impact value MUST be 'full' (completely unavailable), 'partial' (intermittently unavailable), or 'none' (not affected).
The optional <maint:intervention> element contains two boolean child elements: <maint:connection> (indicates if clients need a reconnect) and <maint:implementation> (indicates if clients need a code change). These are flags; detailed descriptions should be in <maint:description> or <maint:detail>.
The optional <maint:tlds> element contains one or more <maint:tld> child elements specifying affected top-level domains or registry zones in A-label form. If <maint:tlds> is not present, the entire system is considered affected.
An entry has been added to the 'Extensions for the Extensible Provisioning Protocol (EPP)' registry (RFC 7451) for 'Registry Maintenance Notification for the Extensible Provisioning Protocol (EPP)', Standards Track, RFC 9167, applicable to any TLDs.
An XML namespace entry has been registered in the IETF XML Registry (RFC 3688): URI 'urn:ietf:params:xml:ns:epp:maintenance-1.0' with IESG as registrant contact.
An XML schema entry has been registered: URI 'urn:ietf:params:xml:schema:epp:maintenance-1.0' with IESG as registrant contact, with the XML schema defined in Section 5.
A server MUST only provide maintenance information to clients that are authorized. If a client queries a maintenance identifier it is not authorized to access, the server SHOULD return EPP error 2201 ('Authorization error') or 2303 ('Object does not exist').
Authorization of poll messages is done at the time of poll message insertion and not at the time of poll message consumption, meaning access control is enforced when the message is enqueued rather than when the client dequeues it.
The list of top-level domains or registry zones returned in the 'Info Maintenance Item' response SHOULD be filtered based on the TLDs or registry zones for which the client is authorized, preventing information leakage.