rfc-9167

Registry Maintenance Notification for the Extensible Provisioning Protocol (EPP)

T. Sattler, R. Carney, J. Kolker
date2021-12 streamIETF areaops wgregext statusPROPOSED STANDARD pages22 canonicalhttps://www.rfc-editor.org/rfc/rfc9167 doi10.17487/RFC9167 errataview
This document describes an Extensible Provisioning Protocol (EPP) extension called "Registry Maintenance Notification", which is used by EPP servers to notify EPP clients and allow EPP clients to query EPP servers regarding maintenance events.

Extracted elements (30)

design-rationale §1

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.

dns, registry

interoperability-note §2 MUST

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.

interoperability-note §4.1, 4.2

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.

normative-requirement §3.2 MUST

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'.

normative-requirement §2 MUST

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.

normative-requirement §4.1.1.1 MUST

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').

normative-requirement §3.1 MUST

Names of affected hosts MUST be provided in A-label form according to RFC 5891 (Internationalized Domain Names).

dns

normative-requirement §2 MUST

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.

normative-requirement §2 SHOULD

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.

normative-requirement §4.1.1 MUST

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).

normative-requirement §3.3 MUST

The <maint:end> element MUST be greater than the <maint:start> element, ensuring event end time is always after start time.

normative-requirement §1.1 MUST NOT

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.

normative-requirement §4.1.1 MUST

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.

protocol-element §4.1.2

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.

protocol-element §3.3 MUST

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'.

protocol-element §3.3 MUST

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'.

protocol-element §3.3

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.

protocol-element §3.3

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.

protocol-element §4.1.1.2

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.

protocol-element §3.3 MUST

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.

protocol-element §3.3

The <maint:reason> element's values MUST be either 'planned' or 'emergency', indicating the nature of the maintenance event.

protocol-element §3.3 MUST

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).

protocol-element §3.3

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>.

protocol-element §3.3

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.

dns

registry §6.2

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.

registry

registry §6.1

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.

registry

registry §6.1

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.

registry

security-consideration §7 MUST

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').

security

security-consideration §7

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.

security

security-consideration §7 SHOULD

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.

security, dns