RFC 3915
Domain Registry Grace Period Mapping for the Extensible Provisioning Protocol (EPP)
RFC 3915: Domain Registry Grace Period Mapping for EPP π
okay bestie, let's get into it π This one's from September 2004 and it's a Standards Track document by S. Hollenbeck at VeriSign, Inc. It's published under the Network Working Group banner, and it's all about the Extensible Provisioning Protocol (EPP) and how domain names handle "grace periods" π¦ The header doesn't list anything it obsoletes or updates, so it's standing on its own β¨
Status of this Memo β¨
okay so this is an Internet standards track protocol for the Internet community, and it's literally asking for discussion and suggestions for improvements π
If you want to know where it stands officially, check the current edition of the "Internet Official Protocol Standards" (STD 1). Distribution is unlimited, so share it with everyone π
Copyright Notice π
Copyright (C) The Internet Society (2004). Mine? Nope, it's the Internet Society's π
Abstract π¦
this doc describes an EPP extension mapping for managing DNS domain names that are subject to "grace period" policies set by ICANN πΈ Grace periods exist so a protocol action can be reversed or revoked for a short window after it happens. It's specified in XML, and it extends the EPP domain name mapping to add the features grace period processing needs π
Table of Contents π§
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Conventions Used In This Document. . . . . . . . . . . . 4
2. Redemption Grace Period State Diagram . . . . . . . . . . . . 4
3. Object Attributes . . . . . . . . . . . . . . . . . . . . . . 6
3.1. Status Values . . . . . . . . . . . . . . . . . . . . . 6
3.2. Registration Data and Supporting Information . . . . . . 7
3.3. Dates and Times . . . . . . . . . . . . . . . . . . . . 7
3.4. Client Statements . . . . . . . . . . . . . . . . . . . 8
4. EPP Command Mapping . . . . . . . . . . . . . . . . . . . . . 8
4.1 EPP Query Commands . . . . . . . . . . . . . . . . . . . 8
4.1.1. EPP <check> Command . . . . . . . . . . . . . . 8
4.1.2. EPP <info> Command . . . . . . . . . . . . . . . 8
4.1.3. EPP <transfer> Command . . . . . . . . . . . . . 11
4.2. EPP Transform Commands . . . . . . . . . . . . . . . . . 11
4.2.1. EPP <create> Command . . . . . . . . . . . . . . 12
4.2.2. EPP <delete> Command . . . . . . . . . . . . . . 12
4.2.3. EPP <renew> Command . . . . . . . . . . . . . . 12
4.2.4. EPP <transfer> Command . . . . . . . . . . . . . 12
4.2.5. EPP <update> Command . . . . . . . . . . . . . . 12
5. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 16
6. Internationalization Considerations . . . . . . . . . . . . . 19
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20
8. Security Considerations . . . . . . . . . . . . . . . . . . . 20
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 20
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 21
10.1. Normative References . . . . . . . . . . . . . . . . . . 21
10.2. Informative References . . . . . . . . . . . . . . . . . 21
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 22
Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . 23
1. Introduction πΈ
okay so this doc describes an extension mapping for version 1.0 of EPP, which is defined in RFC 3730 [1] β¨ It's an extension of the domain name mapping in RFC 3731 [2], and it's written in Extensible Markup Language (XML) 1.0 [3] with XML Schema notation ([4], [5]) π
The EPP core spec [1] has the full picture of EPP command and response structures. You really need to understand that base protocol before this mapping makes sense π«Ά
Over several months in 2002, ICANN came up with a proposal for a "grace period" so a Domain Name System (DNS) domain can be recovered (redeemed) before it gets purged from the authoritative registry's repository π This mapping extends the EPP domain <update> command so a domain in the Redemption Grace Period (RGP) can start the redemption process. It also extends the EPP domain <info> response so you can see which grace period a domain is in π
In March 2003, ICANN published a task force report about other registry grace periods tied to EPP operations. This mapping adds extension status values for those grace periods, including:
- An "add grace period" after the initial registration of a domain name. If the registrar deletes the domain name during this period, the registry gives the registrar a credit for the cost of the registration. π°
- An "auto-renew grace period" after a domain name registration period expires and the registry automatically extends (renews) it. If the registrar deletes the domain name during this period, the registry gives a credit for the cost of the renewal. π
- A "renew grace period" after the registrar explicitly extends (renews) a domain name registration period. If the registrar deletes the domain name during this period, the registry gives a credit for the cost of the renewal. β¨
- A "transfer grace period" after a domain name registration sponsorship moves successfully from one registrar to another. If the new sponsoring registrar deletes the domain name during this period, the registry gives a credit for the cost of the transfer. π¦
Each grace period lasts a specific amount of time, usually measured in days π How long each one lasts is up to registry operational policy, and this document doesn't cover it β¨
1.1. Conventions Used In This Document π
Here's the key-word situation, so pay attention bestie π The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14, RFC 2119 [6].
In examples, "C:" means lines sent by a protocol client, and "S:" means lines returned by a protocol server π Indentation and white space in examples are only there to show how elements relate. They are not a REQUIRED feature of this specification π
XML is case sensitive, which is very important π Unless stated otherwise, XML specifications and examples in this document MUST be interpreted in the character case shown, so you can build a conforming implementation π₯
2. Redemption Grace Period State Diagram π¦
The Redemption Grace Period (RGP) involves several domain state transitions as a domain name moves through the redemption process. Here's the whole journey π
- A domain starts out in the EPP
"ok"status, or some other status that allows processing of the EPP<delete>command. - A
<delete>command is received and processed for the domain name. - RGP begins once the
<delete>command is processed successfully. The EPP status changes to"pendingDelete", and the RGP status is set to"redemptionPeriod". The domain stays in this state until either a<restore>operation is requested or the redemption period runs out. - A
<restore>operation can be requested using the extended EPP<update>command. Go to step 8 if the redemption period runs out before a<restore>request comes in. - If the
<restore>succeeds, the Registry waits for a restore report from the registrar for a period of time the Registry defines. The EPP status stays"pendingDelete"and the RGP status changes to"pendingRestore". This extension defines a way to deliver a restore report over EPP, but an out-of-band mechanism (such as a web site) can also be used to deliver restore reports π - The domain name goes back to the redemption period state (state 3) if no restore report is received.
- If a restore report is received, the EPP status goes back to
"ok"(or whatever it was before the<delete>command was processed), and the RGP status is removed completely β¨ - The redemption period runs out before a
<restore>request is received. - The EPP status stays
"pendingDelete"and the RGP status changes to"pendingDelete". The domain name stays in this state for a period of time the Registry defines. - The domain name is purged once the pending delete period runs out.
- The domain name is available for re-registration π
Figure 1 is the RGP state diagram, and it's giving a whole map πΊοΈ
|
v
+----------------------+ (2) +----------------------+
|EPP: ok (1)| <delete> |EPP: pendingDelete (3)|
|RGP: N/A |--------->|RGP: redemptionPeriod |
+----------------------+ +----------------------+
^ (4) | ^ |
| <restore> | | No (8) |
| +-----------+ | <restore> |
| | | |
| v | v
| +----------------------+ | +----------------------+
| |EPP: pendingDelete (5)| | |EPP: pendingDelete (9)|
| |RGP: pendingRestore |---------+ |RGP: pendingDelete |
| +----------------------+ Report +----------------------+
| | not (6) |
| (7) | Received Purge (10) |
| Report Received | |
+--------------------+ v
+----------------------+
| Purged (11)|
| |
+----------------------+
Figure 1: RGP State Diagram π
3. Object Attributes π
This extension adds more elements to the EPP domain name mapping [2]. Only the descriptions of the new elements are covered here π§
3.1. Status Values β¨
okay so this extension adds new status values π to show every state a domain name can be in during grace period processing π¦. here they are:
addPeriod: this grace period starts right after a domain name is first registered πΈ. if the registrar deletes the domain during this window, the registry gives the registrar a credit for the cost of the registration πΈ.autoRenewPeriod: this one kicks in after a registration period expires and the registry renews the domain automatically π. if the registrar deletes it during this window, the registry credits the registrar for the cost of the renewal.renewPeriod: this grace period starts after the registrar explicitly renews the domain π. if the registrar deletes it during this window, the registry credits the registrar for the cost of the renewal.transferPeriod: this one starts after sponsorship of a domain name moves successfully from one registrar to another π¦. if the new sponsoring registrar deletes the domain during this window, the registry credits the registrar for the cost of the transfer.redemptionPeriod: this status describes a domain that has received a<delete>command but hasn't been purged yet π. there's still a chance to restore it and cancel the deletion, so it's giving second chances.pendingRestore: this status describes a domain that is in the middle of being restored after being in theredemptionPeriodstate π§.pendingDelete: this status describes a domain that has moved into purge processing after finishing theredemptionPeriodstate π. a domain in this status MUST also be in the pendingDelete status described in the EPP domain mapping [2].
3.2. Registration Data and Supporting Information π
this extension lets a client send copies of registration data (whois [9] data, for example) and supporting info in a restore report, since the RGP process needs it π. there's no specific format required here, so both free text and XML markup MAY be used π«Ά.
operators of servers that provide registration data might find it useful to include grace period status values in their responses to client queries π. this info is super helpful for people who want to know what they can do with a domain name at any given time β¨.
3.3. Dates and Times β°
date and time attribute values MUST be represented in Universal Coordinated Time (UTC) using the Gregorian calendar π. the extended date-time form that uses upper case "T" and "Z" characters, as defined in RFC 3339 [7], MUST be used to represent date-time values. the reason is that XML Schema doesn't support truncated date-time forms or lower case "T" and "Z" characters π.
3.4. Client Statements π
the RGP process requires a client to make two statements about the data in a restore report π . there's no specific format required, so both free text and XML markup MAY be used. English is the default language for the statements, but other languages MAY be used too π.
4. EPP Command Mapping π
the detailed EPP syntax and semantics live in the EPP core protocol specification [1] π. the command mappings here are specifically for running redemption grace period processes via EPP, so this is the part that's actually about RGP π₯.
4.1. EPP Query Commands π
EPP has three commands to retrieve object information: <check> to see if an object is known to the server, <info> to get detailed info about an object, and <transfer> to get object transfer status π¦.
4.1.1. EPP <check> Command β
this extension doesn't add any elements to the <check> command or the <check> response in the EPP domain mapping [2] π.
4.1.2. EPP <info> Command π§Ύ
this extension doesn't add any elements to the <info> command in the EPP domain mapping [2] π. it does define additional elements for the <info> response, and that's where the fun is β¨.
when an <info> command is processed successfully, the <resData> element MUST contain child elements as described in [2]. on top of that, the <extension> element MUST contain a child <rgp:infData> element that identifies the registry grace period namespace and the location of the registry grace period schema πΈ. the <rgp:infData> element holds one <rgp:rgpStatus> element, which has a single attribute "s" whose value describes the domain's current grace period status π. possible status values are described in section Section 3.1.
here's an example <info> response for the addPeriod status π·:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
S: epp-1.0.xsd">
S: <response>
S: <result code="1000">
S: <msg>Command completed successfully</msg>
S: </result>
S: <resData>
S: <domain:infData
S: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0
S: domain-1.0.xsd">
S: <domain:name>example.com</domain:name>
S: <domain:roid>EXAMPLE1-REP</domain:roid>
S: <domain:status s="ok"/>
S: <domain:registrant>jd1234</domain:registrant>
S: <domain:contact type="admin">sh8013</domain:contact>
S: <domain:contact type="tech">sh8013</domain:contact>
S: <domain:ns>
S: <domain:hostObj>ns1.example.com</domain:hostObj>
S: <domain:hostObj>ns1.example.net</domain:hostObj>
S: </domain:ns>
S: <domain:host>ns1.example.com</domain:host>
S: <domain:host>ns2.example.com</domain:host>
S: <domain:clID>ClientX</domain:clID>
S: <domain:crID>ClientX</domain:crID>
S: <domain:crDate>2003-11-26T22:00:00.0Z</domain:crDate>
S: <domain:exDate>2005-11-26T22:00:00.0Z</domain:exDate>
S: <domain:authInfo>
S: <domain:pw>2fooBAR</domain:pw>
S: </domain:authInfo>
S: </domain:infData>
S: </resData>
S: <extension>
S: <rgp:infData xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:rgp-1.0
S: rgp-1.0.xsd">
S: <rgp:rgpStatus s="addPeriod"/>
S: </rgp:infData>
S: </extension>
S: <trID>
S: <clTRID>ABC-12345</clTRID>
S: <svTRID>54322-XYZ</svTRID>
S: </trID>
S: </response>
S:</epp>
here's an example <info> response for the redemptionPeriod status π:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
S: epp-1.0.xsd">
S: <response>
S: <result code="1000">
S: <msg>Command completed successfully</msg>
S: </result>
S: <resData>
S: <domain:infData
S: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0
S: domain-1.0.xsd">
S: <domain:name>example.com</domain:name>
S: <domain:roid>EXAMPLE1-REP</domain:roid>
S: <domain:status s="pendingDelete"/>
S: <domain:registrant>jd1234</domain:registrant>
S: <domain:contact type="admin">sh8013</domain:contact>
S: <domain:contact type="tech">sh8013</domain:contact>
S: <domain:ns>
S: <domain:hostObj>ns1.example.com</domain:hostObj>
S: <domain:hostObj>ns1.example.net</domain:hostObj>
S: </domain:ns>
S: <domain:host>ns1.example.com</domain:host>
S: <domain:host>ns2.example.com</domain:host>
S: <domain:clID>ClientX</domain:clID>
S: <domain:crID>ClientY</domain:crID>
S: <domain:crDate>1999-04-03T22:00:00.0Z</domain:crDate>
S: <domain:upID>ClientX</domain:upID>
S: <domain:upDate>1999-12-03T09:00:00.0Z</domain:upDate>
S: <domain:exDate>2005-04-03T22:00:00.0Z</domain:exDate>
S: <domain:trDate>2000-04-08T09:00:00.0Z</domain:trDate>
S: <domain:authInfo>
S: <domain:pw>2fooBAR</domain:pw>
S: </domain:authInfo>
S: </domain:infData>
S: </resData>
S: <extension>
S: <rgp:infData xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:rgp-1.0
S: rgp-1.0.xsd">
S: <rgp:rgpStatus s="redemptionPeriod"/>
S: </rgp:infData>
S: </extension>
S: <trID>
S: <clTRID>ABC-12345</clTRID>
S: <svTRID>54322-XYZ</svTRID>
S: </trID>
S: </response>
S:</epp>
here's an example <info> response extension for the pendingRestore status π (only the extension element changes from the first example):
S:<extension>
S: <rgp:infData xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:rgp-1.0
S: rgp-1.0.xsd">
S: <rgp:rgpStatus s="pendingRestore"/>
S: </rgp:infData>
S:</extension>
and here's the example <info> response extension for the pendingDelete status π (again, only the extension element changes from the first example):
S:<extension>
S: <rgp:infData xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:rgp-1.0
S: rgp-1.0.xsd">
S: <rgp:rgpStatus s="pendingDelete"/>
S: </rgp:infData>
S:</extension>
4.1.3. EPP <transfer> Command π¦
this extension doesn't add any elements to the <transfer> command or <transfer> response in the EPP domain mapping [2] π«Ά.
4.2. EPP Transform Commands π οΈ
EPP has five commands to transform objects π
: <create> to create an instance of an object, <delete> to delete an instance of an object, <renew> to extend the validity period of an object, <transfer> to manage object sponsorship changes, and <update> to change the info associated with an object π.
4.2.1. EPP <create> Command π±
this extension doesn't add any elements to the <create> command or <create> response in the EPP domain mapping [2] β¨.
4.2.2. EPP <delete> Command ποΈ
this extension doesn't add any elements to the <delete> command or <delete> response in the EPP domain mapping [2] π.
4.2.3. EPP <renew> Command π
this extension doesn't add any elements to the <renew> command or <renew> response in the EPP domain mapping [2] πΈ.
4.2.4. EPP <transfer> Command π
this extension doesn't add any elements to the <transfer> command or <transfer> response in the EPP domain mapping [2] π§.
4.2.5. EPP <update> Command β¨
okay so this extension is all about adding extra bits to the EPP <update> command and response from the EPP domain mapping [2] for redemption grace period processing π
the EPP <update> command is the transform op that lets a client change the state of a domain object π₯. the registry grace period extension tweaks base update processing so you can redeem a domain name whose <delete> was already processed but hasn't been purged yet π¦
Section 3.2.5 of the EPP domain mapping spells out what has to go inside an <update> command π. but this extension changes the "at least one" rule. if the extension is in there, at least one empty <domain:add>, <domain:rem>, or <domain:chg> element MUST be present π«Ά. and no, you can't modify the domain object during redemption grace period recovery. it's a recovery-only moment, bestie π ββοΈ
in addition to the EPP command elements from the EPP domain mapping [2], the <update> command MUST contain an <extension> element π . that <extension> element MUST contain a child <rgp:update> element that names the registry grace period namespace and where its schema lives ποΈ. the <rgp:update> element holds one <rgp:restore> element, and that <rgp:restore> element can hold an OPTIONAL <rgp:report> element that MAY be used to deliver a redemption grace period restore report π
the <rgp:restore> element has a REQUIRED "op" attribute that says which redemption grace period operation you're asking for π. there are two values. "request" means a restore request with no restore report attached, and "report" means a restore request that does include a restore report πΈ. a report MAY be submitted more than once if corrections are needed π. if "op" is "request", then an <rgp:report> element MUST NOT be present π«. if "op" is "report", then an <rgp:report> element MUST be present β¨
the <rgp:report> element has these child elements, and honestly they're all important π§
- An
<rgp:preData>element holds a copy of the registration data that existed for the domain name before it was deleted π. This element MAY contain both text and XML markup. - An
<rgp:postData>element holds a copy of the registration data that exists for the domain name when the restore report gets submitted πΈ. This element MAY contain both text and XML markup. - An
<rgp:delTime>element holds the date and time when the domain name delete request was sent to the server β°. - An
<rgp:resTime>element holds the date and time when the original<rgp:restore>command was sent to the server π°οΈ. - An
<rgp:resReason>element holds a brief explanation of why the domain name is being restored π¬. - An
<rgp:statement>element holds a text statement saying the client has not restored the domain name in order to assume the rights to use or sell it for itself or for any third party π . Supporting information for this statement MAY be supplied in the<rgp:other>element described below. An OPTIONAL "lang" attribute MAY be present to identify the language if English (value "en") is not used to represent the statement π. - A second
<rgp:statement>element holds a text statement saying the information in the restore report is factual to the best of the client's knowledge π€. An OPTIONAL "lang" attribute MAY be present to identify the language if English (value "en") is not used to represent the statement π. - An OPTIONAL
<rgp:other>element holds any information needed to support the statements the client provided π. This element MAY contain both text and XML markup.
more detailed info about what a restore report needs is available from ICANN π
here's an example <update> command without a restore report π
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
C: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
C: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
C: epp-1.0.xsd">
C: <command>
C: <update>
C: <domain:update
C: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
C: xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0
C: domain-1.0.xsd">
C: <domain:name>example.com</domain:name>
C: <domain:chg/>
C: </domain:update>
C: </update>
C: <extension>
C: <rgp:update xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
C: xsi:schemaLocation="urn:ietf:params:xml:ns:rgp-1.0
C: rgp-1.0.xsd">
C: <rgp:restore op="request"/>
C: </rgp:update>
C: </extension>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
and here's one with a restore report attached π
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
C: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
C: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
C: epp-1.0.xsd">
C: <command>
C: <update>
C: <domain:update
C: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
C: xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0
C: domain-1.0.xsd">
C: <domain:name>example.com</domain:name>
C: <domain:chg/>
C: </domain:update>
C: </update>
C: <extension>
C: <rgp:update xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
C: xsi:schemaLocation="urn:ietf:params:xml:ns:rgp-1.0
C: rgp-1.0.xsd">
C: <rgp:restore op="report">
C: <rgp:report>
C: <rgp:preData>Pre-delete registration data goes here.
C: Both XML and free text are allowed.</rgp:preData>
C: <rgp:postData>Post-restore registration data goes here.
C: Both XML and free text are allowed.</rgp:postData>
C: <rgp:delTime>2003-07-10T22:00:00.0Z</rgp:delTime>
C: <rgp:resTime>2003-07-20T22:00:00.0Z</rgp:resTime>
C: <rgp:resReason>Registrant error.</rgp:resReason>
C: <rgp:statement>This registrar has not restored the
C: Registered Name in order to assume the rights to use
C: or sell the Registered Name for itself or for any
C: third party.</rgp:statement>
C: <rgp:statement>The information in this report is
C: true to best of this registrar's knowledge, and this
C: registrar acknowledges that intentionally supplying
C: false information in this report shall constitute an
C: incurable material breach of the
C: Registry-Registrar Agreement.</rgp:statement>
C: <rgp:other>Supporting information goes
C: here.</rgp:other>
C: </rgp:report>
C: </rgp:restore>
C: </rgp:update>
C: </extension>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
when an extended <update> command without a restore report gets processed successfully, the response is the same as the EPP domain mapping [2] describes, with one addition π. there's an extension element that shows the grace period status from processing the <update> command. that extension element has a single child, <upData>, which has a single child, <rgpStatus>. the <rgpStatus> element has a single attribute, "s", and its value MUST be "pendingRestore" if the <restore> request was accepted β
here's an example "restore request" <update> response π
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
S: epp-1.0.xsd">
S: <response>
S: <result code="1000">
S: <msg lang="en">Command completed successfully</msg>
S: </result>
S: <extension>
S: <rgp:upData xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:rgp-1.0
S: rgp-1.0.xsd">
S: <rgp:rgpStatus s="pendingRestore"/>
S: </rgp:upData>
S: </extension>
S: <trID>
S: <clTRID>ABC-12345</clTRID>
S: <svTRID>54321-XYZ</svTRID>
S: </trID>
S: </response>
S:</epp>
and when an extended <update> command with a restore report gets processed successfully, the response follows the EPP domain mapping [2] with <color>no registry grace period extension</color> π. the extension isn't required here because accepting the restore report is what finishes redemption grace period processing π
5. Formal Syntax π
okay so this section is the whole schema written in XML Schema notation, so automated tools can validate EPP XML instances against it π€β¨ The BEGIN and END lines aren't part of the schema. They just mark where it starts and ends for URI registration purposes π
BEGIN
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:rgp-1.0"
xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<annotation>
<documentation>
Extensible Provisioning Protocol v1.0
domain name extension schema for registry grace period
processing.
</documentation>
</annotation>
<!--
Child elements found in EPP commands.
-->
<element name="update" type="rgp:updateType"/>
<!--
Child elements of the <update> command for the
redemption grace period.
-->
<complexType name="updateType">
<sequence>
<element name="restore" type="rgp:restoreType"/>
</sequence>
</complexType>
<complexType name="restoreType">
<sequence>
<element name="report" type="rgp:reportType"
minOccurs="0"/>
</sequence>
<attribute name="op" type="rgp:rgpOpType" use="required"/>
</complexType>
<!--
New redemption grace period operations can be defined
by adding to this enumeration.
-->
<simpleType name="rgpOpType">
<restriction base="token">
<enumeration value="request"/>
<enumeration value="report"/>
</restriction>
</simpleType>
<complexType name="reportType">
<sequence>
<element name="preData" type="rgp:mixedType"/>
<element name="postData" type="rgp:mixedType"/>
<element name="delTime" type="dateTime"/>
<element name="resTime" type="dateTime"/>
<element name="resReason" type="rgp:reportTextType"/>
<element name="statement" type="rgp:reportTextType"
maxOccurs="2"/>
<element name="other" type="rgp:mixedType"
minOccurs="0"/>
</sequence>
</complexType>
<complexType name="mixedType">
<complexContent mixed="true">
<restriction base="anyType">
<sequence>
<any processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</restriction>
</complexContent>
</complexType>
<complexType name="reportTextType">
<complexContent mixed="true">
<restriction base="anyType">
<sequence>
<any processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="lang" type="language" default="en"/>
</restriction>
</complexContent>
</complexType>
<!--
Child response elements.
-->
<element name="infData" type="rgp:respDataType"/>
<element name="upData" type="rgp:respDataType"/>
<!--
Response elements.
-->
<complexType name="respDataType">
<sequence>
<element name="rgpStatus" type="rgp:statusType"
maxOccurs="unbounded"/>
</sequence>
</complexType>
<!--
Status is a combination of attributes and an optional
human-readable message that may be expressed in languages
other than English.
-->
<complexType name="statusType">
<simpleContent>
<extension base="normalizedString">
<attribute name="s" type="rgp:statusValueType"
use="required"/>
<attribute name="lang" type="language" default="en"/>
</extension>
</simpleContent>
</complexType>
<simpleType name="statusValueType">
<restriction base="token">
<enumeration value="addPeriod"/>
<enumeration value="autoRenewPeriod"/>
<enumeration value="renewPeriod"/>
<enumeration value="transferPeriod"/>
<enumeration value="pendingDelete"/>
<enumeration value="pendingRestore"/>
<enumeration value="redemptionPeriod"/>
</restriction>
</simpleType>
<!--
End of schema.
-->
</schema>
END
6. Internationalization Considerations π
EPP is written in XML, and XML natively handles information encoded with the Unicode character set, including its more compact forms like UTF-8 [10] π«Ά Conformant XML processors recognize both UTF-8 and UTF-16 [11]. XML can also work with other encodings if you declare them with an "encoding" attribute in the <?xml?> declaration, but in environments where parsers don't fully support the encoding, UTF-8 is RECOMMENDED π
Since this is an extension of the EPP domain mapping [2], the elements, element content, attributes, and attribute values described here MUST inherit the internationalization conventions already used for the higher-layer domain and core protocol structures in any XML instance that includes this extension πΈ
7. IANA Considerations π
This document uses URNs to name XML namespaces and XML schemas, following the registry mechanism from RFC 3688 [8]. Two URI assignments were requested, and IANA has registered them β¨
Registration request for the registry grace period namespace:
URI: urn:ietf:params:xml:ns:rgp-1.0Registrant Contact: See the "Author's Address" section of this document.XML: None. Namespace URIs do not represent an XML specification.
Registration request for the registry grace period XML schema:
URI: urn:ietf:params:xml:schema:rgp-1.0Registrant Contact: See the "Author's Address" section of this document.XML: See the "Formal Syntax" section of this document.
8. Security Considerations π
β οΈ Please read this section carefully, bestie. It's serious.
The mapping extensions in this document don't add any security services beyond what EPP [1], the EPP domain name mapping [2], and the protocol layers EPP uses already provide. The security considerations in those other specifications apply to this one too π«Ά
As with other domain object updates, redemption of a deleted domain object MUST be restricted to the sponsoring client, authenticated using the mechanisms described in sections 2.9.1.1 and 7 of RFC 3730 [1] π Any attempt to recover a deleted domain object by any client other than the sponsoring client MUST be rejected with an appropriate EPP authorization error π«π
9. Acknowledgements π«Ά
The author would like to thank the following people, who made significant contributions to the development of this document π
James Gould, Antony Perkov, and Janusz Sienkiewicz π
10. References π
10.1. Normative References
- [1] Hollenbeck, S., "Extensible Provisioning Protocol (EPP)", RFC 3730, March 2004.
- [2] Hollenbeck, S., "Extensible Provisioning Protocol (EPP) Domain Name Mapping", RFC 3731, March 2004.
- [3] Bray, T., Paoli, J., Sperberg-McQueen, C., and E. Maler, "Extensible Markup Language (XML) 1.0 (2nd ed)", W3C REC-xml, October 2000, <http://www.w3.org/TR/REC-xml>.
- [4] Thompson, H., Beech, D., Maloney, M., and N. Mendelsohn, "XML Schema Part 1: Structures", W3C REC-xmlschema-1, May 2001, <http://www.w3.org/TR/xmlschema-1/>.
- [5] Biron, P. and A. Malhotra, "XML Schema Part 2: Datatypes", W3C REC-xmlschema-2, May 2001, <http://www.w3.org/TR/xmlschema-2/>.
- [6] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
- [7] Klyne, G. and C. Newman, "Date and Time on the Internet: Timestamps", RFC 3339, July 2002.
- [8] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, January 2004.
10.2. Informative References
- [9] Harrenstien, K., Stahl, M., and E. Feinler, "NICNAME/WHOIS", RFC 954, October 1985.
- [10] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, November 2003.
- [11] Hoffman, P. and F. Yergeau, "UTF-16, an encoding of ISO 10646", RFC 2781, February 2000.
Author's Address π
Scott Hollenbeck
VeriSign, Inc.
21345 Ridgetop Circle
Dulles, VA 20166-6503
US
EMail: shollenbeck@verisign.com
Full Copyright Statement Β©οΈ
Copyright (C) The Internet Society (2004).
This document is subject to the rights, licenses and restrictions contained in BCP 78. Except as set forth there, the authors keep all their rights.
This document and the information in it are provided on an "AS IS" basis, and THE CONTRIBUTOR, THE ORGANIZATION HE/S HE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property π§Ύ
The IETF takes no position on the validity or scope of any Intellectual Property Rights or other rights that might be claimed to apply to the implementation or use of the technology in this document, or on whether any license under those rights might or might not be available. It also doesn't claim to have made any independent effort to identify such rights. You can find the IETF's procedures for rights in IETF Documents in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, and the results of any attempt to obtain a general license or permission for implementers or users to use these proprietary rights can be found in the IETF on-line IPR repository at http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any copyrights, patents, patent applications, or other proprietary rights that may cover technology needed to implement this standard. Please send that information to the IETF at ietf-ipr@ietf.org π
Acknowledgement π·
Funding for the RFC Editor function is currently provided by the Internet Society π
π¦ where this page comes from
- ietf: rfc3915 2004-10
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms