1 Internet Engineering Task Force (IETF) T. Sattler
2 Request for Comments: 9167
3 Category: Standards Track R. Carney
4 ISSN: 2070-1721 J. Kolker
5 GoDaddy Inc.
6 December 2021
7
8
9 Registry Maintenance Notification for the Extensible Provisioning
10 Protocol (EPP)
11
12 Abstract
13
14 This document describes an Extensible Provisioning Protocol (EPP)
15 extension called "Registry Maintenance Notification", which is used
16 by EPP servers to notify EPP clients and allow EPP clients to query
17 EPP servers regarding maintenance events.
18
19 Status of This Memo
20
21 This is an Internet Standards Track document.
22
23 This document is a product of the Internet Engineering Task Force
24 (IETF). It represents the consensus of the IETF community. It has
25 received public review and has been approved for publication by the
26 Internet Engineering Steering Group (IESG). Further information on
27 Internet Standards is available in Section 2 of RFC 7841.
28
29 Information about the current status of this document, any errata,
30 and how to provide feedback on it may be obtained at
31 https://www.rfc-editor.org/info/rfc9167.
32
33 Copyright Notice
34
35 Copyright (c) 2021 IETF Trust and the persons identified as the
36 document authors. All rights reserved.
37
38 This document is subject to BCP 78 and the IETF Trust's Legal
39 Provisions Relating to IETF Documents
40 (https://trustee.ietf.org/license-info) in effect on the date of
41 publication of this document. Please review these documents
42 carefully, as they describe your rights and restrictions with respect
43 to this document. Code Components extracted from this document must
44 include Revised BSD License text as described in Section 4.e of the
45 Trust Legal Provisions and are provided without warranty as described
46 in the Revised BSD License.
47
48 Table of Contents
49
50 1. Introduction
51 1.1. Terminology and Definitions
52 2. Migrating to Newer Versions of This Extension
53 3. Object Attributes
54 3.1. Internationalized Domain Names
55 3.2. Dates and Times
56 3.3. Maintenance Elements
57 4. EPP Command Mapping
58 4.1. EPP Query Commands
59 4.1.1. EPP <info> Command
60 4.1.2. EPP <poll> Command
61 4.2. EPP Transform Commands
62 5. Formal Syntax
63 5.1. Registry Maintenance Notification EPP Mapping Schema
64 6. IANA Considerations
65 6.1. XML Namespace
66 6.2. EPP Extension Registry
67 7. Security Considerations
68 8. References
69 8.1. Normative References
70 8.2. Informative References
71 Acknowledgments
72 Authors' Addresses
73
74 1. Introduction
75
76 The Extensible Provisioning Protocol (EPP), as defined in [RFC5730],
77 is a protocol whose original motivation is to provide a standard
78 Internet domain name registration protocol for use between registries
79 and registrars.
80
81 Registries routinely update systems to ensure a higher quality of
82 service, implement new services, or upgrade protocols to the latest
83 standards. These updates are pushed to various registry environments
84 during time frames communicated to registrars as "maintenance
85 events". Maintenance events may require making services unavailable
86 for some limited time while the upgrade happens. Registries usually
87 inform registrars about maintenance events in various formats, none
88 of which are standardized between registries.
89
90 The DNS namespace expansion has led to many additional registries
91 that registrars must interact with, adding more maintenance events
92 and formats. It is now desirable to provide an efficient approach to
93 notify registrars.
94
95 This document describes an extension mapping for version 1.0 of the
96 EPP to provide a mechanism by which EPP servers may notify EPP
97 clients of and allow EPP clients to query EPP servers on upcoming
98 maintenance events.
99
100 1.1. Terminology and Definitions
101
102 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
103 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
104 "OPTIONAL" in this document are to be interpreted as described in
105 BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
106 capitals, as shown here.
107
108 XML [W3C.REC-xml-20081126] is case sensitive. Unless stated
109 otherwise, XML specifications and examples provided in this document
110 MUST be interpreted in the character case presented in order to
111 develop a conforming implementation.
112
113 The XML namespace prefix "maint" is used for the namespace
114 "urn:ietf:params:xml:ns:epp:maintenance-1.0", but implementations
115 MUST NOT depend on it and instead employ a proper namespace-aware XML
116 parser and serializer to interpret and output the XML documents.
117
118 "ote" is an abbreviation for "Operational Test and Evaluation".
119
120 In examples, "C:" represents lines sent by a protocol client, and
121 "S:" represents lines returned by a protocol server. Indentation and
122 white space in examples are provided only to illustrate element
123 relationships and are not a required feature of this protocol.
124
125 2. Migrating to Newer Versions of This Extension
126
127 Servers that implement this extension SHOULD provide a way for
128 clients to progressively update their implementations when a new
129 version of the extension is deployed. A newer version of the
130 extension is expected to use an XML namespace with a higher version
131 number than the prior versions.
132
133 Servers SHOULD (for a temporary migration period up to server policy)
134 provide support for older versions of the extension in parallel to
135 the newest version and allow clients to execute their preferred
136 version of the <info> command based on the maintenance <objURI>
137 elements of the server <greeting>. The version of the maintenance
138 <info> response MUST match the version of the maintenance <info>
139 command executed by the server.
140
141 Servers MUST return a Registry Maintenance Notification poll message
142 matching the newest negotiated version of the maintenance extension,
143 based on an intersection of the maintenance <objURI> elements in the
144 server <greeting> and the client <login> command. If the
145 intersection of the maintenance <objURI> elements of the server
146 <greeting> and the client <login> command results in an empty set,
147 the server MUST return the newest version of the Registry Maintenance
148 Notification poll message supported by the server based on "Usage
149 with Poll-Message EPP Responses" in Section 6 of [RFC9038].
150
151 3. Object Attributes
152
153 3.1. Internationalized Domain Names
154
155 Names of affected hosts MUST be provided in A-label form, according
156 to [RFC5891].
157
158 3.2. Dates and Times
159
160 All date and time attribute values MUST be expressed in Universal
161 Coordinated Time (UTC) using the Gregorian calendar. The date-time
162 format defined as "date-time" in [RFC3339], with time-offset="Z",
163 MUST be used.
164
165 3.3. Maintenance Elements
166
167 The <maint:item> element describes a single registry maintenance
168 event during a specific period. This element is used in a
169 maintenance item EPP <info> command and response as well as in a
170 <poll> response.
171
172 If an element is not marked as optional, it is mandatory.
173
174 <maint:id>
175 The server-unique identifier for the maintenance event with the
176 OPTIONAL "name" attribute that includes a human-readable name of
177 the event. The server-unique identifier SHALL NOT be changed if
178 the event is updated or deleted. When the "name" attribute is
179 set, the OPTIONAL "lang" attribute, per the language structure in
180 [RFC5646], MAY be present to identify the language if the
181 negotiated value is something other than the default value of "en"
182 (English).
183
184 <maint:type>
185 Zero or more OPTIONAL types of the maintenance event, with the
186 possible set of values defined by server policy, such as "Routine
187 Maintenance", "Software Update", "Software Upgrade", or "Extended
188 Outage". The OPTIONAL "lang" attribute MAY be present to identify
189 the language if the negotiated value is something other than the
190 default value of "en" (English).
191
192 <maint:pollType>
193 The OPTIONAL <maint:pollType> element for a Registry Maintenance
194 Notification poll message; values MUST be "create", "update",
195 "delete", "courtesy", or "end". For the "create" and "update"
196 types, the server includes the state of the maintenance event
197 after the creation or update. For the "delete" type, the server
198 includes the state of the event before the delete. The "courtesy"
199 provides a reminder of an event, and the "end" provides a
200 notification of the end of the event without updating the
201 maintenance object and includes the latest state of the event.
202 This element MUST be present only for poll messages.
203
204 <maint:systems>
205 One or more <maint:system> elements that are affected by the
206 maintenance event.
207
208 <maint:system>
209 The <maint:system> element contains the following child
210 elements:
211
212 <maint:name>
213 The name of the affected system, such as "EPP", "WHOIS",
214 "DNS", "Portal", "RDAP", etc.
215
216 <maint:host>
217 The OPTIONAL affected maintained system's hostname, which
218 SHALL be in A-label form, according to [RFC5891].
219
220 <maint:impact>
221 The impact level; the values MUST be "full", "partial", or
222 "none". If access is expected to be intermittently
223 unavailable, it is "partial". If access is expected to be
224 completely unavailable, it is "full". If access is not
225 affected, it is "none".
226
227 <maint:environment>
228 The type of the affected system; the attribute "type" is REQUIRED
229 and MUST be "production", "ote", "staging", "dev", or "custom".
230 For extensibility, the <maint:environment> element includes the
231 OPTIONAL "name" attribute that can define the name of the custom
232 environment when the <maint:environment> element "type" attribute
233 has the "custom" value. For example, for the custom "marketing"
234 environment, the <maint:environment> element should be:
235 <maint:environment type="custom" name="marketing"/>.
236
237 <maint:start>
238 The date and time of the start of the maintenance event.
239
240 <maint:end>
241 The date and time of the end of the maintenance event. The
242 <maint:end> element MUST be greater than the <maint:start>
243 element.
244
245 <maint:reason>
246 The reason behind the maintenance event; the values MUST be either
247 "planned" or "emergency".
248
249 <maint:detail>
250 The OPTIONAL URI to the detailed maintenance event description,
251 formatted according to [RFC3986].
252
253 <maint:description>
254 Zero or more OPTIONAL free-form descriptions of the maintenance
255 event, usable without creating and traversing an external resource
256 as defined by the <maint:detail> element. The OPTIONAL "lang"
257 attribute MAY be present to identify the language if the
258 negotiated value is something other than the default value of "en"
259 (English). The OPTIONAL "type" attribute MAY be present to
260 identify the format of the description. It MUST be either "plain"
261 for plain text or "html" for HTML text, as defined in [HTML5], and
262 XML-escaped, with a default value of "plain".
263
264 <maint:tlds>
265 The OPTIONAL <maint:tlds> element contains one or more <maint:tld>
266 child elements. If the <maint:tlds> is not present, the entire
267 system is affected.
268
269 <maint:tld>
270 The affected top-level domain or registry zone, which SHALL be
271 in A-label form, according to [RFC5891].
272
273
274 <maint:intervention>
275 The OPTIONAL <maint:intervention> element contains the
276 following child elements:
277
278 <maint:connection>
279 The value SHALL be boolean and indicates if a client needs
280 to perform a connection-related action such as a reconnect.
281 The attribute should only be used as a flag to indicate
282 connections will be affected. Servers SHOULD include a
283 description of how the connections are affected in the
284 <maint:description> element or use the <maint:detail>
285 element above.
286
287 <maint:implementation>
288 The value SHALL be boolean and indicates if a client needs
289 to perform an implementation-related action such as a code
290 change. The attribute should only be used as a flag to
291 indicate implementation will be affected. Servers SHOULD
292 include a description of how the implementation is affected
293 in the <maint:description> element or use the <maint:detail>
294 element above.
295
296 <maint:crDate>
297 The date and time of the maintenance object creation.
298
299 <maint:upDate>
300 The OPTIONAL date and time of the most recent maintenance
301 object modification. This element MUST NOT be present if the
302 maintenance object has never been modified.
303
304 4. EPP Command Mapping
305
306 A detailed description of the EPP syntax and semantics can be found
307 in the EPP core protocol specification [RFC5730]. The command
308 mappings described here are specifically used to notify registrars of
309 registry maintenance events and object mapping.
310
311 4.1. EPP Query Commands
312
313 EPP [RFC5730] provides three commands to retrieve object information:
314 <check> to determine if an object is known to the server, <info> to
315 retrieve detailed information associated with an object, and
316 <transfer> to retrieve object transfer status information.
317
318 This extension does not add any elements to EPP <check> and
319 <transfer> commands or responses.
320
321 4.1.1. EPP <info> Command
322
323 EPP provides the <info> command that is used to retrieve registry
324 maintenance information. In addition to the standard EPP command
325 elements, the <info> command MUST contain a <maint:info> element that
326 identifies the maintenance namespace.
327
328 The <maint:info> element MUST contain a child element. It is either
329 the <maint:id> child element, described in Section 4.1.1.1, to query
330 for a specific maintenance item or the <maint:list> child element,
331 described in Section 4.1.1.2, to query all maintenance items.
332
333 4.1.1.1. Info Maintenance Item
334
335 The information regarding a specific maintenance item can be
336 retrieved by using the <info> command with the <maint:info> element
337 and the <maint:id> child element, defined in Section 3.3. If the
338 maintenance identifier does not exist, the server MUST return an EPP
339 error result code of 2303 ("Object does not exist") [RFC5730].
340
341 The following is an example of retrieving a specific maintenance item
342 in an <info> command.
343
344 C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
345 C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
346 C: <command>
347 C: <info>
348 C: <maint:info
349 C: xmlns:maint="urn:ietf:params:xml:ns:epp:maintenance-1.0">
350 C: <maint:id>2e6df9b0-4092-4491-bcc8-9fb2166dcee6</maint:id>
351 C: </maint:info>
352 C: </info>
353 C: <clTRID>ABC-12345</clTRID>
354 C: </command>
355 C:</epp>
356
357 When an <info> command has been processed successfully, the EPP
358 <resData> element MUST contain a child <maint:infData> element that
359 identifies the maintenance namespace. The <maint:infData> element
360 contains the <maint:item> element defined in Section 3.3.
361
362 The following is an example of returning a specific maintenance item
363 in an <info> response.
364
365 S:<?xml version="1.0" encoding="UTF-8"?>
366 S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
367 S: <response>
368 S: <result code="1000">
369 S: <msg>Command completed successfully</msg>
370 S: </result>
371 S: <resData>
372 S: <maint:infData
373 S: xmlns:maint="urn:ietf:params:xml:ns:epp:maintenance-1.0">
374 S: <maint:item>
375 S: <maint:id>2e6df9b0-4092-4491-bcc8-9fb2166dcee6
376 S: </maint:id>
377 S: <maint:type lang="en">Routine Maintenance</maint:type>
378 S: <maint:systems>
379 S: <maint:system>
380 S: <maint:name>EPP</maint:name>
381 S: <maint:host>epp.registry.example
382 S: </maint:host>
383 S: <maint:impact>full</maint:impact>
384 S: </maint:system>
385 S: </maint:systems>
386 S: <maint:environment type="production"/>
387 S: <maint:start>2021-12-30T06:00:00Z</maint:start>
388 S: <maint:end>2021-12-30T07:00:00Z</maint:end>
389 S: <maint:reason>planned</maint:reason>
390 S: <maint:detail>
391 S: https://www.registry.example/notice?123
392 S: </maint:detail>
393 S: <maint:description lang="en">free-text
394 S: </maint:description>
395 S: <maint:description lang="de">Freitext
396 S: </maint:description>
397 S: <maint:tlds>
398 S: <maint:tld>example</maint:tld>
399 S: <maint:tld>test</maint:tld>
400 S: </maint:tlds>
401 S: <maint:intervention>
402 S: <maint:connection>false</maint:connection>
403 S: <maint:implementation>false</maint:implementation>
404 S: </maint:intervention>
405 S: <maint:crDate>2021-11-08T22:10:00Z</maint:crDate>
406 S: </maint:item>
407 S: </maint:infData>
408 S: </resData>
409 S: <trID>
410 S: <clTRID>ABC-12345</clTRID>
411 S: <svTRID>54321-XYZ</svTRID>
412 S: </trID>
413 S: </response>
414 S:</epp>
415
416 4.1.1.2. Info Maintenance List
417
418 The information for a list of maintenance items can be retrieved by
419 using the <info> command with the <maint:info> element and the empty
420 <maint:list> child element. Server policy determines if completed
421 maintenance events will be included in the list of maintenance items.
422
423 The following is an example of retrieving the list of maintenance
424 items in an <info> command.
425
426 C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
427 C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
428 C: <command>
429 C: <info>
430 C: <maint:info
431 C: xmlns:maint="urn:ietf:params:xml:ns:epp:maintenance-1.0">
432 C: <maint:list/>
433 C: </maint:info>
434 C: </info>
435 C: <clTRID>ABC-12345</clTRID>
436 C: </command>
437 C:</epp>
438
439 When an <info> command has been processed successfully, the EPP
440 <resData> element MUST contain a child <maint:infData> element that
441 identifies the maintenance namespace. The <maint:infData> element
442 contains the <maint:list> element with zero or more <maint:listItem>
443 child elements. The <maint:listItem> element contains the following
444 child elements:
445
446 <maint:id>
447 The <maint:id> element defined in Section 3.3.
448
449 <maint:start>
450 The <maint:start> element defined in Section 3.3.
451
452 <maint:end>
453 The <maint:end> element defined in Section 3.3.
454
455 <maint:crDate>
456 The <maint:crDate> element defined in Section 3.3.
457
458 <maint:upDate>
459 The OPTIONAL <maint:upDate> element defined in Section 3.3.
460
461 The following is an example of returning the list of maintenance
462 items in an <info> response.
463
464 S:<?xml version="1.0" encoding="UTF-8"?>
465 S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
466 S: <response>
467 S: <result code="1000">
468 S: <msg>Command completed successfully</msg>
469 S: </result>
470 S: <resData>
471 S: <maint:infData
472 S: xmlns:maint="urn:ietf:params:xml:ns:epp:maintenance-1.0">
473 S: <maint:list>
474 S: <maint:listItem>
475 S: <maint:id>2e6df9b0-4092-4491-bcc8-9fb2166dcee6
476 S: </maint:id>
477 S: <maint:start>2021-12-30T06:00:00Z</maint:start>
478 S: <maint:end>2021-12-30T07:00:00Z</maint:end>
479 S: <maint:crDate>2021-11-08T22:10:00Z</maint:crDate>
480 S: </maint:listItem>
481 S: <maint:listItem>
482 S: <maint:id>91e9dabf-c4e9-4c19-a56c-78e3e89c2e2f
483 S: </maint:id>
484 S: <maint:start>2021-12-15T04:30:00Z</maint:start>
485 S: <maint:end>2021-12-15T05:30:00Z</maint:end>
486 S: <maint:crDate>2021-11-08T22:11:00Z</maint:crDate>
487 S: <maint:upDate>2021-11-17T15:00:00Z</maint:upDate>
488 S: </maint:listItem>
489 S: </maint:list>
490 S: </maint:infData>
491 S: </resData>
492 S: <trID>
493 S: <clTRID>ABC-12345</clTRID>
494 S: <svTRID>54321-XYZ</svTRID>
495 S: </trID>
496 S: </response>
497 S:</epp>
498
499 4.1.2. EPP <poll> Command
500
501 The EPP <poll> command and response are defined in Section 2.9.2.3 of
502 [RFC5730]. The Registry Maintenance Notification is included in the
503 EPP <poll> response in [RFC5730].
504
505 There are five types of poll messages for the Registry Maintenance
506 Notification, defined by the <maint:pollType> element in Section 3.3.
507 A poll message might be generated when a maintenance event is
508 created, updated, or deleted. A courtesy poll message can be sent as
509 a reminder of an upcoming maintenance event. An end poll message can
510 be sent when the maintenance event is completed. In the case of a
511 message specific to Registry Maintenance, a <maint:infData> element
512 that identifies the maintenance namespace will be included within the
513 <resData> element of the standard <poll> response. The
514 <maint:infData> element contains the <maint:item> element defined in
515 Section 3.3.
516
517 The following is an example of a <poll> command:
518
519 C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
520 C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
521 C: <command>
522 C: <poll op="req"/>
523 C: <clTRID>ABC-12345</clTRID>
524 C: </command>
525 C:</epp>
526
527 Example <poll> response:
528
529 S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
530 S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
531 S: <response>
532 S: <result code="1301">
533 S: <msg>Command completed successfully; ack to dequeue</msg>
534 S: </result>
535 S: <msgQ count="1" id="12345">
536 S: <qDate>2021-11-08T22:10:00Z</qDate>
537 S: <msg lang="en">Registry Maintenance Notification</msg>
538 S: </msgQ>
539 S: <resData>
540 S: <maint:infData
541 S: xmlns:maint="urn:ietf:params:xml:ns:epp:maintenance-1.0">
542 S: <maint:item>
543 S: <maint:id>2e6df9b0-4092-4491-bcc8-9fb2166dcee6</maint:id>
544 S: <maint:pollType>create</maint:pollType>
545 S: <maint:systems>
546 S: <maint:system>
547 S: <maint:name>EPP</maint:name>
548 S: <maint:host>epp.registry.example
549 S: </maint:host>
550 S: <maint:impact>full</maint:impact>
551 S: </maint:system>
552 S: </maint:systems>
553 S: <maint:environment type="production"/>
554 S: <maint:start>2021-12-30T06:00:00Z</maint:start>
555 S: <maint:end>2021-12-30T07:00:00Z</maint:end>
556 S: <maint:reason>planned</maint:reason>
557 S: <maint:detail>
558 S: https://www.registry.example/notice?123
559 S: </maint:detail>
560 S: <maint:tlds>
561 S: <maint:tld>example</maint:tld>
562 S: <maint:tld>test</maint:tld>
563 S: </maint:tlds>
564 S: <maint:intervention>
565 S: <maint:connection>false</maint:connection>
566 S: <maint:implementation>false</maint:implementation>
567 S: </maint:intervention>
568 S: <maint:crDate>2021-11-08T22:10:00Z</maint:crDate>
569 S: </maint:item>
570 S: </maint:infData>
571 S: </resData>
572 S: <trID>
573 S: <clTRID>ABC-12345</clTRID>
574 S: <svTRID>54321-XYZ</svTRID>
575 S: </trID>
576 S: </response>
577 S:</epp>
578
579 4.2. EPP Transform Commands
580
581 EPP provides five commands to transform objects: <create> to create
582 an instance of an object, <delete> to delete an instance of an
583 object, <renew> to extend the validity period of an object,
584 <transfer> to manage object sponsorship changes, and <update> to
585 change information associated with an object.
586
587 This extension does not add any elements to the EPP <create>,
588 <delete>, <renew>, <transfer>, and <update> commands.
589
590 5. Formal Syntax
591
592 The EPP Registry Maintenance Notification schema is presented here.
593
594 The formal syntax is a complete schema representation of the object
595 mapping suitable for automated validation of EPP XML instances. The
596 <CODE BEGINS> and <CODE ENDS> tags are not part of the schema; they
597 are used to note the beginning and end of the schema for URI
598 registration purposes.
599
The IETF is responsible for the creation and maintenance of the DNS RFCs. The ICANN DNS RFC annotation project provides a forum for collecting community annotations on these RFCs as an aid to understanding for implementers and any interested parties. The annotations displayed here are not the result of the IETF consensus process.
This RFC is included in the DNS RFCs annotation project whose home page is here.
600 5.1. Registry Maintenance Notification EPP Mapping Schema
601
602 <CODE BEGINS>
603 <?xml version="1.0" encoding="UTF-8"?>
604 <schema targetNamespace="urn:ietf:params:xml:ns:epp:
605 maintenance-1.0"
606 xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
607 xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
608 xmlns:maint="urn:ietf:params:xml:ns:epp:maintenance-1.0"
609 xmlns="https://www.w3.org/2001/XMLSchema"
610 elementFormDefault="qualified">
611 <!--
612 Import common element types
613 -->
614 <import namespace="urn:ietf:params:xml:ns:eppcom-1.0"/>
615 <import namespace="urn:ietf:params:xml:ns:epp-1.0"/>
616 <annotation>
617 <documentation>
618 Extensible Provisioning Protocol v1.0
619 Registry Maintenance Notification Mapping Schema.
620 </documentation>
621 </annotation>
622 <!--
623 Child elements found in EPP commands.
624 -->
625 <element name="info" type="maint:infoType"/>
626 <!--
627 Child elements of the <info> command.
628 -->
629 <complexType name="infoType">
630 <sequence>
631 <choice>
632 <element name="list"/>
633 <element name="id" type="maint:idType"/>
634 </choice>
635 </sequence>
636 </complexType>
637 <!--
638 Human-readable text may describe the maintenance
639 -->
640 <complexType name="idType">
641 <simpleContent>
642 <extension base="token">
643 <attribute name="name" type="token"/>
644 <attribute name="lang" type="language" default="en"/>
645 </extension>
646 </simpleContent>
647 </complexType>
648 <!--
649 Info Response element
650 -->
651 <element name="infData" type="maint:infDataType"/>
652 <!--
653 <info> response elements.
654 -->
655 <complexType name="infDataType">
656 <choice>
657 <element name="list" type="maint:listDataType"/>
658 <element name="item" type="maint:maintDataType"/>
659 </choice>
660 </complexType>
661 <!--
662 Attributes associated with the list info response
663 -->
664 <complexType name="listDataType">
665 <sequence>
666 <element name="listItem" type="maint:maintItemType"
667 minOccurs="0" maxOccurs="unbounded"/>
668 </sequence>
669 </complexType>
670 <!--
671 Attributes associated with the list item info response
672 -->
673 <complexType name="maintItemType">
674 <sequence>
675 <element name="id" type="maint:idType"/>
676 <element name="start" type="dateTime"/>
677 <element name="end" type="dateTime"/>
678 <element name="crDate" type="dateTime"/>
679 <element name="upDate" type="dateTime" minOccurs="0"/>
680 </sequence>
681 </complexType>
682 <!--
683 Attributes associated with the maintenance info response
684 -->
685 <complexType name="maintDataType">
686 <sequence>
687 <element name="id" type="maint:idType"/>
688 <element name="type" type="maint:typeType" minOccurs="0"
689 maxOccurs="unbounded"/>
690 <element name="pollType" type="maint:pollType" minOccurs="0"/>
691 <element name="systems" type="maint:systemsType"/>
692 <element name="environment" type="maint:envType"/>
693 <element name="start" type="dateTime"/>
694 <element name="end" type="dateTime"/>
695 <element name="reason" type="maint:reasonEnum"/>
696 <element name="detail" type="anyURI" minOccurs="0"/>
697 <element name="description" type="maint:descriptionType"
698 minOccurs="0" maxOccurs="unbounded"/>
699 <element name="tlds" type="maint:tldsType" minOccurs="0"/>
700 <element name="intervention" type="maint:interventionType"
701 minOccurs="0"/>
702 <element name="crDate" type="dateTime"/>
703 <element name="upDate" type="dateTime" minOccurs="0"/>
704 </sequence>
705 </complexType>
706 <!--
707 systems element
708 -->
709 <complexType name="systemsType">
710 <sequence>
711 <element name="system" type="maint:systemType"
712 maxOccurs="unbounded"/>
713 </sequence>
714 </complexType>
715 <!--
716 Enumerated list of poll types
717 -->
718 <simpleType name="pollType">
719 <restriction base="token">
720 <enumeration value="create"/>
721 <enumeration value="update"/>
722 <enumeration value="delete"/>
723 <enumeration value="courtesy"/>
724 <enumeration value="end"/>
725 </restriction>
726 </simpleType>
727 <!--
728 Enumerated list of impacts
729 -->
730 <simpleType name="impactEnum">
731 <restriction base="token">
732 <enumeration value="none"/>
733 <enumeration value="partial"/>
734 <enumeration value="full"/>
735 </restriction>
736 </simpleType>
737 <!--
738 description element
739 -->
740 <complexType name="descriptionType">
741 <simpleContent>
742 <extension base="string">
743 <attribute name="lang" type="language" default="en"/>
744 <attribute name="type" type="maint:descEnum" default="plain"
745 />
746 </extension>
747 </simpleContent>
748 </complexType>
749 <!--
750 Enumerated list of description mime types
751 -->
752 <simpleType name="descEnum">
753 <restriction base="token">
754 <enumeration value="plain"/>
755 <enumeration value="html"/>
756 </restriction>
757 </simpleType>
758 <!--
759 type element
760 -->
761 <complexType name="typeType">
762 <simpleContent>
763 <extension base="string">
764 <attribute name="lang" type="language" default="en"/>
765 </extension>
766 </simpleContent>
767 </complexType>
768 <!--
769 system element
770 -->
771 <complexType name="systemType">
772 <sequence>
773 <element name="name" type="token"/>
774 <element name="host" type="eppcom:labelType" minOccurs="0"/>
775 <element name="impact" type="maint:impactEnum"/>
776 </sequence>
777 </complexType>
778 <!--
779 Enumerated list of environments
780 -->
781 <simpleType name="envEnum">
782 <restriction base="token">
783 <enumeration value="production"/>
784 <enumeration value="ote"/>
785 <enumeration value="staging"/>
786 <enumeration value="dev"/>
787 <enumeration value="custom"/>
788 </restriction>
789 </simpleType>
790 <!--
791 environment element
792 -->
793 <complexType name="envType">
794 <simpleContent>
795 <extension base="token">
796 <attribute name="type" type="maint:envEnum" use="required"/>
797 <attribute name="name" type="token" use="optional"/>
798 </extension>
799 </simpleContent>
800 </complexType>
801 <!--
802 Enumerated list of reasons
803 -->
804 <simpleType name="reasonEnum">
805 <restriction base="token">
806 <enumeration value="planned"/>
807 <enumeration value="emergency"/>
808 </restriction>
809 </simpleType>
810 <!--
811 tlds element
812 -->
813 <complexType name="tldsType">
814 <sequence>
815 <element name="tld" type="eppcom:labelType"
816 maxOccurs="unbounded"/>
817 </sequence>
818 </complexType>
819 <!--
820 intervention element
821 -->
822 <complexType name="interventionType">
823 <sequence>
824 <element name="connection" type="boolean"/>
825 <element name="implementation" type="boolean"/>
826 </sequence>
827 </complexType>
828 <!--
829 End of schema.
830 -->
831 </schema>
832 <CODE ENDS>
833
834 6. IANA Considerations
835
836 6.1. XML Namespace
837
838 This document uses URNs to describe XML namespaces and XML schemas
839 conforming to a registry mechanism defined in [RFC3688].
840
841 The following entry has been registered as an XML namespace:
842
843 URI: urn:ietf:params:xml:ns:epp:maintenance-1.0
844 Registrant Contact: IESG
845 XML: None. Namespace URIs do not represent an XML specification.
846
847 The following entry has been registered to the XML maintenance
848 schema:
849
850 URI: urn:ietf:params:xml:schema:epp:maintenance-1.0
851 Registrant Contact: IESG
852 XML: See the "Formal Syntax" section of this document.
853
854 6.2. EPP Extension Registry
855
856 The following entry has been added to the "Extensions for the
857 Extensible Provisioning Protocol (EPP)" registry, described in
858 [RFC7451]:
859
860 Name of Extension: Registry Maintenance Notification for the
861 Extensible Provisioning Protocol (EPP)
862 Document status: Standards Track
863 Reference: RFC 9167
864 Registrant Name and Email Address: IESG <iesg@ietf.org>
865 TLDs: Any
866 IPR Disclosure: None
867 Status: Active
868 Notes: None
869
870 7. Security Considerations
871
872 The security considerations of [RFC5730] apply in this document.
873 Additionally, a server MUST only provide maintenance information to
874 clients that are authorized. Suppose a client queries a maintenance
875 identifier that it is not authorized to access per Section 4.1.1.1,
876 "Info Maintenance Item". In that case, the server SHOULD return an
877 EPP error result code of 2201 ("Authorization error") or 2303
878 ("Object does not exist") [RFC5730]. The list of top-level domains
879 or registry zones returned in the "Info Maintenance Item" response
880 SHOULD be filtered based on the top-level domains or registry zones
881 for which the client is authorized. Authorization of poll messages
882 is done at the time of poll message insertion and not at the time of
883 poll message consumption.
884
885 8. References
886
887 8.1. Normative References
888
889 [HTML5] WHATWG, "HTML - Living Standard", December 2021,
890 <https://html.spec.whatwg.org/multipage/>.
891
892 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
893 Requirement Levels", BCP 14, RFC 2119,
894 DOI 10.17487/RFC2119, March 1997,
895 <https://www.rfc-editor.org/info/rfc2119>.
896
897 [RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet:
898 Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002,
899 <https://www.rfc-editor.org/info/rfc3339>.
900
901 [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
902 Resource Identifier (URI): Generic Syntax", STD 66,
903 RFC 3986, DOI 10.17487/RFC3986, January 2005,
904 <https://www.rfc-editor.org/info/rfc3986>.
905
906 [RFC5646] Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying
907 Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646,
908 September 2009, <https://www.rfc-editor.org/info/rfc5646>.
909
910 [RFC5730] Hollenbeck, S., "Extensible Provisioning Protocol (EPP)",
911 STD 69, RFC 5730, DOI 10.17487/RFC5730, August 2009,
912 <https://www.rfc-editor.org/info/rfc5730>.
913
914 [RFC5891] Klensin, J., "Internationalized Domain Names in
915 Applications (IDNA): Protocol", RFC 5891,
916 DOI 10.17487/RFC5891, August 2010,
917 <https://www.rfc-editor.org/info/rfc5891>.
918
919 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
920 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
921 May 2017, <https://www.rfc-editor.org/info/rfc8174>.
922
923 [RFC9038] Gould, J. and M. Casanova, "Extensible Provisioning
924 Protocol (EPP) Unhandled Namespaces", RFC 9038,
925 DOI 10.17487/RFC9038, May 2021,
926 <https://www.rfc-editor.org/info/rfc9038>.
927
928 [W3C.REC-xml-20081126]
929 Bray, T., Paoli, J., Sperberg-McQueen, M., Maler, E., and
930 F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth
931 Edition)", World Wide Web Consortium Recommendation REC-
932 xml-20081126, November 2008,
933 <https://www.w3.org/TR/2008/REC-xml-20081126>.
934
935 8.2. Informative References
936
937 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
938 DOI 10.17487/RFC3688, January 2004,
939 <https://www.rfc-editor.org/info/rfc3688>.
940
941 [RFC7451] Hollenbeck, S., "Extension Registry for the Extensible
942 Provisioning Protocol", RFC 7451, DOI 10.17487/RFC7451,
943 February 2015, <https://www.rfc-editor.org/info/rfc7451>.
944
945 Acknowledgments
946
947 The authors wish to thank the following persons for their feedback
948 and suggestions: James Gould, Michael Bauland, Patrick Mevzek, Quoc-
949 Anh Pham, Raymond Zylstra, Christopher Martens, Anthony Eden, Neal
950 McPherson, Craig Marchant, and Andreas Huber.
951
952 Authors' Addresses
953
954 Tobias Sattler
955
956 Email: mail@tobiassattler.com
957 URI: https://tobiassattler.com
958
959
960 Roger Carney
961 GoDaddy Inc.
962 2155 E GoDaddy Way
963 Tempe, AZ 85284
964 United States of America
965
966 Email: rcarney@godaddy.com
967 URI: https://www.godaddy.com
968
969
970 Jody Kolker
971 GoDaddy Inc.
972 2155 E GoDaddy Way
973 Tempe, AZ 85284
974 United States of America
975
976 Email: jkolker@godaddy.com
977 URI: https://www.godaddy.com
978
xmlns="https://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/2001/XMLSchema"
XML Schema standard https://www.w3.org/TR/xmlschema-1/ "The XML representation of schema components uses a vocabulary identified by the namespace name http://www.w3.org/2001/XMLSchema. "