epp-client-base 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +5 -0
- data/Gemfile +6 -0
- data/MIT-LICENSE +19 -0
- data/README +5 -0
- data/Rakefile +37 -0
- data/epp-client-base.gemspec +54 -0
- data/lib/epp-client/base.rb +113 -0
- data/lib/epp-client/connection.rb +78 -0
- data/lib/epp-client/contact.rb +398 -0
- data/lib/epp-client/domain.rb +394 -0
- data/lib/epp-client/exceptions.rb +21 -0
- data/lib/epp-client/poll.rb +69 -0
- data/lib/epp-client/session.rb +56 -0
- data/lib/epp-client/ssl.rb +46 -0
- data/lib/epp-client/version.rb +3 -0
- data/lib/epp-client/xml.rb +150 -0
- data/vendor/ietf/contact-1.0.xsd +388 -0
- data/vendor/ietf/domain-1.0.xsd +430 -0
- data/vendor/ietf/epp-1.0.xsd +444 -0
- data/vendor/ietf/eppcom-1.0.xsd +105 -0
- data/vendor/ietf/host-1.0.xsd +240 -0
- data/vendor/ietf/rfc4310.txt +1235 -0
- data/vendor/ietf/rfc5730.txt +3755 -0
- data/vendor/ietf/rfc5731.txt +2467 -0
- data/vendor/ietf/rfc5732.txt +1627 -0
- data/vendor/ietf/rfc5733.txt +2299 -0
- data/vendor/ietf/rfc5734.txt +731 -0
- data/vendor/ietf/rfc5910.txt +2019 -0
- metadata +143 -0
@@ -0,0 +1,3755 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
Network Working Group S. Hollenbeck
|
8
|
+
Request for Comments: 5730 VeriSign, Inc.
|
9
|
+
STD: 69 August 2009
|
10
|
+
Obsoletes: 4930
|
11
|
+
Category: Standards Track
|
12
|
+
|
13
|
+
|
14
|
+
Extensible Provisioning Protocol (EPP)
|
15
|
+
|
16
|
+
Abstract
|
17
|
+
|
18
|
+
This document describes an application-layer client-server protocol
|
19
|
+
for the provisioning and management of objects stored in a shared
|
20
|
+
central repository. Specified in XML, the protocol defines generic
|
21
|
+
object management operations and an extensible framework that maps
|
22
|
+
protocol operations to objects. This document includes a protocol
|
23
|
+
specification, an object mapping template, and an XML media type
|
24
|
+
registration. This document obsoletes RFC 4930.
|
25
|
+
|
26
|
+
Status of This Memo
|
27
|
+
|
28
|
+
This document specifies an Internet standards track protocol for the
|
29
|
+
Internet community, and requests discussion and suggestions for
|
30
|
+
improvements. Please refer to the current edition of the "Internet
|
31
|
+
Official Protocol Standards" (STD 1) for the standardization state
|
32
|
+
and status of this protocol. Distribution of this memo is unlimited.
|
33
|
+
|
34
|
+
Copyright Notice
|
35
|
+
|
36
|
+
Copyright (c) 2009 IETF Trust and the persons identified as the
|
37
|
+
document authors. All rights reserved.
|
38
|
+
|
39
|
+
This document is subject to BCP 78 and the IETF Trust's Legal
|
40
|
+
Provisions Relating to IETF Documents in effect on the date of
|
41
|
+
publication of this document (http://trustee.ietf.org/license-info).
|
42
|
+
Please review these documents carefully, as they describe your rights
|
43
|
+
and restrictions with respect to this document.
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
Hollenbeck Standards Track [Page 1]
|
59
|
+
|
60
|
+
RFC 5730 EPP August 2009
|
61
|
+
|
62
|
+
|
63
|
+
Table of Contents
|
64
|
+
|
65
|
+
1. Introduction ....................................................3
|
66
|
+
1.1. Conventions Used in This Document ..........................3
|
67
|
+
2. Protocol Description ............................................4
|
68
|
+
2.1. Transport Mapping Considerations ...........................7
|
69
|
+
2.2. Protocol Identification ....................................8
|
70
|
+
2.3. Hello Format ...............................................8
|
71
|
+
2.4. Greeting Format ............................................8
|
72
|
+
2.5. Command Format ............................................12
|
73
|
+
2.6. Response Format ...........................................13
|
74
|
+
2.7. Protocol Extension Framework ..............................16
|
75
|
+
2.7.1. Protocol Extension .................................16
|
76
|
+
2.7.2. Object Extension ...................................17
|
77
|
+
2.7.3. Command-Response Extension .........................18
|
78
|
+
2.8. Object Identification .....................................18
|
79
|
+
2.9. Protocol Commands .........................................19
|
80
|
+
2.9.1. Session Management Commands ........................19
|
81
|
+
2.9.1.1. EPP <login> Command .......................20
|
82
|
+
2.9.1.2. EPP <logout> Command ......................22
|
83
|
+
2.9.2. Query Commands .....................................23
|
84
|
+
2.9.2.1. EPP <check> Command .......................23
|
85
|
+
2.9.2.2. EPP <info> Command ........................25
|
86
|
+
2.9.2.3. EPP <poll> Command ........................26
|
87
|
+
2.9.2.4. EPP <transfer> Query Command ..............30
|
88
|
+
2.9.3. Object Transform Commands ..........................31
|
89
|
+
2.9.3.1. EPP <create> Command ......................32
|
90
|
+
2.9.3.2. EPP <delete> Command ......................33
|
91
|
+
2.9.3.3. EPP <renew> Command .......................34
|
92
|
+
2.9.3.4. EPP <transfer> Command ....................35
|
93
|
+
2.9.3.5. EPP <update> Command ......................38
|
94
|
+
3. Result Codes ...................................................39
|
95
|
+
4. Formal Syntax ..................................................45
|
96
|
+
4.1. Base Schema ...............................................45
|
97
|
+
4.2. Shared Structure Schema ...................................56
|
98
|
+
5. Internationalization Considerations ............................59
|
99
|
+
6. IANA Considerations ............................................59
|
100
|
+
7. Security Considerations ........................................60
|
101
|
+
8. Acknowledgements ...............................................61
|
102
|
+
9. References .....................................................62
|
103
|
+
9.1. Normative References ......................................62
|
104
|
+
9.2. Informative References ....................................62
|
105
|
+
Appendix A. Object Mapping Template ..............................64
|
106
|
+
Appendix B. Media Type Registration: application/epp+xml .........66
|
107
|
+
Appendix C. Changes from RFC 4930 ................................67
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
|
114
|
+
Hollenbeck Standards Track [Page 2]
|
115
|
+
|
116
|
+
RFC 5730 EPP August 2009
|
117
|
+
|
118
|
+
|
119
|
+
1. Introduction
|
120
|
+
|
121
|
+
This document describes specifications for the Extensible
|
122
|
+
Provisioning Protocol (EPP) version 1.0, an XML text protocol that
|
123
|
+
permits multiple service providers to perform object-provisioning
|
124
|
+
operations using a shared central object repository. EPP is
|
125
|
+
specified using the Extensible Markup Language (XML) 1.0 as described
|
126
|
+
in [W3C.REC-xml-20040204] and XML Schema notation as described in
|
127
|
+
[W3C.REC-xmlschema-1-20041028] and [W3C.REC-xmlschema-2-20041028].
|
128
|
+
EPP meets and exceeds the requirements for a generic registry
|
129
|
+
registrar protocol as described in [RFC3375]. This document
|
130
|
+
obsoletes RFC 4930 [RFC4930].
|
131
|
+
|
132
|
+
EPP content is identified by MIME media type application/epp+xml.
|
133
|
+
Registration information for this media type is included in an
|
134
|
+
appendix to this document.
|
135
|
+
|
136
|
+
EPP is intended for use in diverse operating environments where
|
137
|
+
transport and security requirements vary greatly. It is unlikely
|
138
|
+
that a single transport or security specification will meet the needs
|
139
|
+
of all anticipated operators, so EPP was designed for use in a
|
140
|
+
layered protocol environment. Bindings to specific transport and
|
141
|
+
security protocols are outside the scope of this specification.
|
142
|
+
|
143
|
+
The original motivation for this protocol was to provide a standard
|
144
|
+
Internet domain name registration protocol for use between domain
|
145
|
+
name registrars and domain name registries. This protocol provides a
|
146
|
+
means of interaction between a registrar's applications and registry
|
147
|
+
applications. It is expected that this protocol will have additional
|
148
|
+
uses beyond domain name registration.
|
149
|
+
|
150
|
+
XML is case sensitive. Unless stated otherwise, XML specifications
|
151
|
+
and examples provided in this document MUST be interpreted in the
|
152
|
+
character case presented to develop a conforming implementation.
|
153
|
+
|
154
|
+
1.1. Conventions Used in This Document
|
155
|
+
|
156
|
+
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
157
|
+
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
158
|
+
document are to be interpreted as described in [RFC2119].
|
159
|
+
|
160
|
+
In examples, "C:" represents lines sent by a protocol client and "S:"
|
161
|
+
represents lines returned by a protocol server. Indentation and
|
162
|
+
white space in examples are provided only to illustrate element
|
163
|
+
relationships and are not REQUIRED features of this protocol. A
|
164
|
+
protocol client that is authorized to manage an existing object is
|
165
|
+
described as a "sponsoring" client throughout this document.
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
|
170
|
+
Hollenbeck Standards Track [Page 3]
|
171
|
+
|
172
|
+
RFC 5730 EPP August 2009
|
173
|
+
|
174
|
+
|
175
|
+
2. Protocol Description
|
176
|
+
|
177
|
+
EPP is a stateful XML protocol that can be layered over multiple
|
178
|
+
transport protocols. Protected using lower-layer security protocols,
|
179
|
+
clients exchange identification, authentication, and option
|
180
|
+
information, and then engage in a series of client-initiated command-
|
181
|
+
response exchanges. All EPP commands are atomic (there is no partial
|
182
|
+
success or partial failure) and designed so that they can be made
|
183
|
+
idempotent (executing a command more than once has the same net
|
184
|
+
effect on system state as successfully executing the command once).
|
185
|
+
|
186
|
+
EPP provides four basic service elements: service discovery,
|
187
|
+
commands, responses, and an extension framework that supports
|
188
|
+
definition of managed objects and the relationship of protocol
|
189
|
+
requests and responses to those objects.
|
190
|
+
|
191
|
+
An EPP server MUST respond to client-initiated communication (which
|
192
|
+
can be either a lower-layer connection request or an EPP service
|
193
|
+
discovery message) by returning a greeting to a client. A server
|
194
|
+
MUST promptly respond to each EPP command with a coordinated response
|
195
|
+
that describes the results of processing the command. The following
|
196
|
+
server state machine diagram illustrates the message exchange process
|
197
|
+
in detail:
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
|
224
|
+
|
225
|
+
|
226
|
+
Hollenbeck Standards Track [Page 4]
|
227
|
+
|
228
|
+
RFC 5730 EPP August 2009
|
229
|
+
|
230
|
+
|
231
|
+
|
|
232
|
+
V
|
233
|
+
+-----------------+ +-----------------+
|
234
|
+
| Waiting for | Connected | Prepare |
|
235
|
+
| Client |----------------->| Greeting |
|
236
|
+
+-----------------+ or <hello> +-----------------+
|
237
|
+
^ |
|
238
|
+
| Close Connection Send |
|
239
|
+
| or Idle Greeting |
|
240
|
+
+-----------------+ V
|
241
|
+
| End | Timeout +-----------------+
|
242
|
+
| Session |<-----------------| Waiting for |
|
243
|
+
+-----------------+ | Client |
|
244
|
+
^ ^ ^ Send +-------->| Authentication |
|
245
|
+
| | | Response | +-----------------+
|
246
|
+
| | | +--------------+ |
|
247
|
+
| | | | Prepare Fail | | <login>
|
248
|
+
| | +-----| Response | | Received
|
249
|
+
| | Send +--------------+ V
|
250
|
+
| | 2501 ^ +-----------------+
|
251
|
+
| | Response | | Processing |
|
252
|
+
| | +---------| <login> |
|
253
|
+
| | Auth Fail +-----------------+
|
254
|
+
| | Timeout |
|
255
|
+
| +-------------------------------+ | Auth OK
|
256
|
+
| | V
|
257
|
+
| +-----------------+ <hello> +-----------------+
|
258
|
+
| | Prepare |<----------| Waiting for |
|
259
|
+
| | Greeting |---------->| Command or |
|
260
|
+
| +-----------------+ Send | <hello> |
|
261
|
+
| Send x5xx Greeting +-----------------+
|
262
|
+
| Response +-----------------+ Send ^ |
|
263
|
+
+-----------| Prepare | Response | | Command
|
264
|
+
| Response |----------+ | Received
|
265
|
+
+-----------------+ V
|
266
|
+
^ +-----------------+
|
267
|
+
Command | | Processing |
|
268
|
+
Processed +----------| Command |
|
269
|
+
+-----------------+
|
270
|
+
|
271
|
+
Figure 1: EPP Server State Machine
|
272
|
+
|
273
|
+
EPP commands fall into three categories: session management commands,
|
274
|
+
query commands, and object transform commands. Session management
|
275
|
+
commands are used to establish and end persistent sessions with an
|
276
|
+
EPP server. Query commands are used to perform read-only object
|
277
|
+
information retrieval operations. Transform commands are used to
|
278
|
+
perform read-write object management operations.
|
279
|
+
|
280
|
+
|
281
|
+
|
282
|
+
Hollenbeck Standards Track [Page 5]
|
283
|
+
|
284
|
+
RFC 5730 EPP August 2009
|
285
|
+
|
286
|
+
|
287
|
+
Commands are processed by a server in the order they are received
|
288
|
+
from a client. Though an immediate response confirming receipt and
|
289
|
+
processing of the command is produced by the server, the protocol
|
290
|
+
includes features that allow for offline review of transform commands
|
291
|
+
before the requested action is actually completed. In such
|
292
|
+
situations, the response from the server MUST clearly note that the
|
293
|
+
command has been received and processed but that the requested action
|
294
|
+
is pending. The state of the corresponding object MUST clearly
|
295
|
+
reflect processing of the pending action. The server MUST also
|
296
|
+
notify the client when offline processing of the action has been
|
297
|
+
completed. Object mappings SHOULD describe standard formats for
|
298
|
+
notices that describe completion of offline processing.
|
299
|
+
|
300
|
+
EPP uses XML namespaces to provide an extensible object management
|
301
|
+
framework and to identify schemas required for XML instance parsing
|
302
|
+
and validation. These namespaces and schema definitions are used to
|
303
|
+
identify both the base protocol schema and the schemas for managed
|
304
|
+
objects. The XML namespace prefixes used in examples (such as the
|
305
|
+
string "foo" in "xmlns:foo") are solely for illustrative purposes. A
|
306
|
+
conforming implementation MUST NOT require the use of these or any
|
307
|
+
other specific namespace prefixes.
|
308
|
+
|
309
|
+
All XML instances SHOULD begin with an <?xml?> declaration to
|
310
|
+
identify the version of XML that is being used, optionally identify
|
311
|
+
use of the character encoding used, and optionally provide a hint to
|
312
|
+
an XML parser that an external schema file is needed to validate the
|
313
|
+
XML instance. Conformant XML parsers recognize both UTF-8 (defined
|
314
|
+
in RFC 3629 [RFC3629]) and UTF-16 (defined in RFC 2781 [RFC2781]);
|
315
|
+
per RFC 2277 [RFC2277], UTF-8 is the RECOMMENDED character encoding
|
316
|
+
for use with EPP.
|
317
|
+
|
318
|
+
Character encodings other than UTF-8 and UTF-16 are allowed by XML.
|
319
|
+
UTF-8 is the default encoding assumed by XML in the absence of an
|
320
|
+
"encoding" attribute or a byte order mark (BOM); thus, the "encoding"
|
321
|
+
attribute in the XML declaration is OPTIONAL if UTF-8 encoding is
|
322
|
+
used. EPP clients and servers MUST accept a UTF-8 BOM if present,
|
323
|
+
though emitting a UTF-8 BOM is NOT RECOMMENDED.
|
324
|
+
|
325
|
+
Example XML declarations:
|
326
|
+
|
327
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
328
|
+
|
329
|
+
<?xml version="1.0" standalone="no"?>
|
330
|
+
|
331
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
332
|
+
|
333
|
+
<?xml version="1.0"?>
|
334
|
+
|
335
|
+
|
336
|
+
|
337
|
+
|
338
|
+
Hollenbeck Standards Track [Page 6]
|
339
|
+
|
340
|
+
RFC 5730 EPP August 2009
|
341
|
+
|
342
|
+
|
343
|
+
2.1. Transport Mapping Considerations
|
344
|
+
|
345
|
+
As described previously, EPP can be layered over multiple transport
|
346
|
+
protocols. There are, however, a common set of considerations that
|
347
|
+
MUST be addressed by any transport mapping defined for EPP. These
|
348
|
+
include:
|
349
|
+
|
350
|
+
- The transport mapping MUST preserve command order.
|
351
|
+
|
352
|
+
- The transport mapping MUST address the relationship between
|
353
|
+
sessions and the client-server connection concept.
|
354
|
+
|
355
|
+
- The transport mapping MUST preserve the stateful nature of the
|
356
|
+
protocol.
|
357
|
+
|
358
|
+
- The transport mapping MUST frame data units.
|
359
|
+
|
360
|
+
- The transport mapping MUST be onto a transport, such as TCP
|
361
|
+
[RFC0793] or Stream Control Transmission Protocol (SCTP)
|
362
|
+
[RFC4960], that provides congestion avoidance that follows RFC
|
363
|
+
2914 [RFC2914]; or, if it maps onto a protocol such as SMTP
|
364
|
+
[RFC5321] or Blocks Extensible Exchange Protocol (BEEP) [RFC3080],
|
365
|
+
then the performance issues need to take into account issues of
|
366
|
+
overload, server availability, and so forth.
|
367
|
+
|
368
|
+
- The transport mapping MUST ensure reliability.
|
369
|
+
|
370
|
+
- The transport mapping MUST explicitly allow or prohibit
|
371
|
+
pipelining.
|
372
|
+
|
373
|
+
Pipelining, also known as command streaming, is when a client sends
|
374
|
+
multiple commands to a server without waiting for each corresponding
|
375
|
+
response. After sending the commands, the client waits for the
|
376
|
+
responses to arrive in the order corresponding to the completed
|
377
|
+
commands. Performance gains can sometimes be realized with
|
378
|
+
pipelining, especially with high-latency transports, but there are
|
379
|
+
additional considerations associated with defining a transport
|
380
|
+
mapping that supports pipelining:
|
381
|
+
|
382
|
+
- Commands MUST be processed independent of each other.
|
383
|
+
|
384
|
+
- Depending on the transport, pipelining MAY be possible in the form
|
385
|
+
of sending a complete session in a well-defined "batch".
|
386
|
+
|
387
|
+
- The transport mapping MUST describe how an error in processing a
|
388
|
+
command affects continued operation of the session.
|
389
|
+
|
390
|
+
|
391
|
+
|
392
|
+
|
393
|
+
|
394
|
+
Hollenbeck Standards Track [Page 7]
|
395
|
+
|
396
|
+
RFC 5730 EPP August 2009
|
397
|
+
|
398
|
+
|
399
|
+
A transport mapping MUST explain how all of these requirements are
|
400
|
+
met, given the transport protocol being used to exchange data.
|
401
|
+
|
402
|
+
2.2. Protocol Identification
|
403
|
+
|
404
|
+
All EPP XML instances MUST begin with an <epp> element. This element
|
405
|
+
identifies the start of an EPP protocol element and the namespace
|
406
|
+
used within the protocol. The <epp> start element and the associated
|
407
|
+
</epp> ending element MUST be applied to all structures sent by both
|
408
|
+
clients and servers.
|
409
|
+
|
410
|
+
Example "start" and "end" EPP elements:
|
411
|
+
|
412
|
+
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
413
|
+
</epp>
|
414
|
+
|
415
|
+
2.3. Hello Format
|
416
|
+
|
417
|
+
EPP MAY be carried over both connection-oriented and connection-less
|
418
|
+
transport protocols. An EPP client MAY request a <greeting> from an
|
419
|
+
EPP server at any time between a successful <login> command and a
|
420
|
+
<logout> command by sending a <hello> to a server. Use of this
|
421
|
+
element is essential in a connection-less environment where a server
|
422
|
+
cannot return a <greeting> in response to a client-initiated
|
423
|
+
connection. An EPP <hello> MUST be an empty element with no child
|
424
|
+
elements.
|
425
|
+
|
426
|
+
Example <hello>:
|
427
|
+
|
428
|
+
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
429
|
+
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
430
|
+
C: <hello/>
|
431
|
+
C:</epp>
|
432
|
+
|
433
|
+
2.4. Greeting Format
|
434
|
+
|
435
|
+
An EPP server responds to a successful connection and <hello> element
|
436
|
+
by returning a <greeting> element to the client. An EPP greeting
|
437
|
+
contains the following elements:
|
438
|
+
|
439
|
+
- An <svID> element that contains the name of the server.
|
440
|
+
|
441
|
+
- An <svDate> element that contains the server's current date and
|
442
|
+
time in Universal Coordinated Time (UTC).
|
443
|
+
|
444
|
+
- An <svcMenu> element that identifies the services supported by the
|
445
|
+
server, including:
|
446
|
+
|
447
|
+
|
448
|
+
|
449
|
+
|
450
|
+
Hollenbeck Standards Track [Page 8]
|
451
|
+
|
452
|
+
RFC 5730 EPP August 2009
|
453
|
+
|
454
|
+
|
455
|
+
o One or more <version> elements that identify the protocol
|
456
|
+
versions supported by the server.
|
457
|
+
|
458
|
+
o One or more <lang> elements that contain the identifiers of the
|
459
|
+
text response languages known by the server. Language
|
460
|
+
identifiers MUST be structured as documented in [RFC4646].
|
461
|
+
|
462
|
+
o One or more <objURI> elements that contain namespace URIs
|
463
|
+
representing the objects that the server is capable of
|
464
|
+
managing. A server MAY limit object management privileges on a
|
465
|
+
per-client basis.
|
466
|
+
|
467
|
+
o An OPTIONAL <svcExtension> element that contains one or more
|
468
|
+
<extURI> elements that contain namespace URIs representing
|
469
|
+
object extensions supported by the server.
|
470
|
+
|
471
|
+
o A <dcp> (data collection policy) element that contains child
|
472
|
+
elements used to describe the server's privacy policy for data
|
473
|
+
collection and management. Policy implications usually extend
|
474
|
+
beyond the client-server relationship. Both clients and
|
475
|
+
servers can have relationships with other entities that need to
|
476
|
+
know the server operator's data collection policy to make
|
477
|
+
informed provisioning decisions. Policy information MUST be
|
478
|
+
disclosed to provisioning entities, though the method of
|
479
|
+
disclosing policy data outside of direct protocol interaction
|
480
|
+
is beyond the scope of this specification. Child elements
|
481
|
+
include the following:
|
482
|
+
|
483
|
+
* An <access> element that describes the access provided by
|
484
|
+
the server to the client on behalf of the originating data
|
485
|
+
source. The <access> element MUST contain one of the
|
486
|
+
following child elements:
|
487
|
+
|
488
|
+
+ <all/>: Access is given to all identified data.
|
489
|
+
|
490
|
+
+ <none/>: No access is provided to identified data.
|
491
|
+
|
492
|
+
+ <null/>: Data is not persistent, so no access is
|
493
|
+
possible.
|
494
|
+
|
495
|
+
+ <personal/>: Access is given to identified data relating
|
496
|
+
to individuals and organizational entities.
|
497
|
+
|
498
|
+
+ <personalAndOther/>: Access is given to identified data
|
499
|
+
relating to individuals, organizational entities, and
|
500
|
+
other data of a non-personal nature.
|
501
|
+
|
502
|
+
|
503
|
+
|
504
|
+
|
505
|
+
|
506
|
+
Hollenbeck Standards Track [Page 9]
|
507
|
+
|
508
|
+
RFC 5730 EPP August 2009
|
509
|
+
|
510
|
+
|
511
|
+
+ <other/>: Access is given to other identified data of a
|
512
|
+
non-personal nature.
|
513
|
+
|
514
|
+
* One or more <statement> elements that describe data
|
515
|
+
collection purposes, data recipients, and data retention.
|
516
|
+
Each <statement> element MUST contain a <purpose> element, a
|
517
|
+
<recipient> element, and a <retention> element. The
|
518
|
+
<purpose> element MUST contain one or more of the following
|
519
|
+
child elements that describe the purposes for which data is
|
520
|
+
collected:
|
521
|
+
|
522
|
+
+ <admin/>: Administrative purposes. Information can be
|
523
|
+
used for administrative and technical support of the
|
524
|
+
provisioning system.
|
525
|
+
|
526
|
+
+ <contact/>: Contact for marketing purposes. Information
|
527
|
+
can be used to contact individuals, through a
|
528
|
+
communications channel other than the protocol, for the
|
529
|
+
promotion of a product or service.
|
530
|
+
|
531
|
+
+ <prov/>: Object-provisioning purposes. Information can
|
532
|
+
be used to identify objects and inter-object
|
533
|
+
relationships.
|
534
|
+
|
535
|
+
+ <other/>: Other purposes. Information may be used in
|
536
|
+
other ways not captured by the above definitions.
|
537
|
+
|
538
|
+
* The <recipient> element MUST contain one or more of the
|
539
|
+
following child elements that describes the recipients of
|
540
|
+
collected data:
|
541
|
+
|
542
|
+
+ <other/>: Other entities following unknown practices.
|
543
|
+
|
544
|
+
+ <ours>: Server operator and/or entities acting as agents
|
545
|
+
or entities for whom the server operator is acting as an
|
546
|
+
agent. An agent in this instance is defined as a third
|
547
|
+
party that processes data only on behalf of the service
|
548
|
+
provider for the completion of the stated purposes. The
|
549
|
+
<ours> element contains an OPTIONAL <recDesc> element
|
550
|
+
that can be used to describe the recipient.
|
551
|
+
|
552
|
+
+ <public/>: Public forums.
|
553
|
+
|
554
|
+
+ <same/>: Other entities following server practices.
|
555
|
+
|
556
|
+
+ <unrelated/>: Unrelated third parties.
|
557
|
+
|
558
|
+
|
559
|
+
|
560
|
+
|
561
|
+
|
562
|
+
Hollenbeck Standards Track [Page 10]
|
563
|
+
|
564
|
+
RFC 5730 EPP August 2009
|
565
|
+
|
566
|
+
|
567
|
+
* The <retention> element MUST contain one of the following
|
568
|
+
child elements that describes data retention practices:
|
569
|
+
|
570
|
+
+ <business/>: Data persists per business practices.
|
571
|
+
|
572
|
+
+ <indefinite/>: Data persists indefinitely.
|
573
|
+
|
574
|
+
+ <legal/>: Data persists per legal requirements.
|
575
|
+
|
576
|
+
+ <none/>: Data is not persistent and is not retained for
|
577
|
+
more than a brief period of time necessary to make use of
|
578
|
+
it during the course of a single online interaction.
|
579
|
+
|
580
|
+
+ <stated/>: Data persists to meet the stated purpose.
|
581
|
+
|
582
|
+
* An OPTIONAL <expiry> element that describes the lifetime of
|
583
|
+
the policy. The <expiry> element MUST contain one of the
|
584
|
+
following child elements:
|
585
|
+
|
586
|
+
+ <absolute/>: The policy is valid from the current date
|
587
|
+
and time until it expires on the specified date and time.
|
588
|
+
|
589
|
+
+ <relative/>: The policy is valid from the current date
|
590
|
+
and time until the end of the specified duration.
|
591
|
+
|
592
|
+
Data collection policy elements are based on work described in the
|
593
|
+
World Wide Web Consortium's Platform for Privacy Preferences
|
594
|
+
[W3C.REC-P3P-20020416] specification.
|
595
|
+
|
596
|
+
Example greeting:
|
597
|
+
|
598
|
+
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
599
|
+
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
600
|
+
S: <greeting>
|
601
|
+
S: <svID>Example EPP server epp.example.com</svID>
|
602
|
+
S: <svDate>2000-06-08T22:00:00.0Z</svDate>
|
603
|
+
S: <svcMenu>
|
604
|
+
S: <version>1.0</version>
|
605
|
+
S: <lang>en</lang>
|
606
|
+
S: <lang>fr</lang>
|
607
|
+
S: <objURI>urn:ietf:params:xml:ns:obj1</objURI>
|
608
|
+
S: <objURI>urn:ietf:params:xml:ns:obj2</objURI>
|
609
|
+
S: <objURI>urn:ietf:params:xml:ns:obj3</objURI>
|
610
|
+
S: <svcExtension>
|
611
|
+
S: <extURI>http://custom/obj1ext-1.0</extURI>
|
612
|
+
S: </svcExtension>
|
613
|
+
S: </svcMenu>
|
614
|
+
S: <dcp>
|
615
|
+
|
616
|
+
|
617
|
+
|
618
|
+
Hollenbeck Standards Track [Page 11]
|
619
|
+
|
620
|
+
RFC 5730 EPP August 2009
|
621
|
+
|
622
|
+
|
623
|
+
S: <access><all/></access>
|
624
|
+
S: <statement>
|
625
|
+
S: <purpose><admin/><prov/></purpose>
|
626
|
+
S: <recipient><ours/><public/></recipient>
|
627
|
+
S: <retention><stated/></retention>
|
628
|
+
S: </statement>
|
629
|
+
S: </dcp>
|
630
|
+
S: </greeting>
|
631
|
+
S:</epp>
|
632
|
+
|
633
|
+
2.5. Command Format
|
634
|
+
|
635
|
+
An EPP client interacts with an EPP server by sending a command to
|
636
|
+
the server and receiving a response from the server. In addition to
|
637
|
+
the standard EPP elements, an EPP command contains the following
|
638
|
+
elements:
|
639
|
+
|
640
|
+
- A command element whose tag corresponds to one of the valid EPP
|
641
|
+
commands described in this document. The command element MAY
|
642
|
+
contain either protocol-specified or object-specified child
|
643
|
+
elements.
|
644
|
+
|
645
|
+
- An OPTIONAL <extension> element that MAY be used for server-
|
646
|
+
defined command extensions.
|
647
|
+
|
648
|
+
- An OPTIONAL <clTRID> (client transaction identifier) element that
|
649
|
+
MAY be used to uniquely identify the command to the client.
|
650
|
+
Clients are responsible for maintaining their own transaction
|
651
|
+
identifier space to ensure uniqueness.
|
652
|
+
|
653
|
+
Example command with object-specified child elements:
|
654
|
+
|
655
|
+
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
656
|
+
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
657
|
+
C: <command>
|
658
|
+
C: <info>
|
659
|
+
C: <obj:info xmlns:obj="urn:ietf:params:xml:ns:obj">
|
660
|
+
C: <obj:name>example</obj:name>
|
661
|
+
C: </obj:info>
|
662
|
+
C: </info>
|
663
|
+
C: <clTRID>ABC-12345</clTRID>
|
664
|
+
C: </command>
|
665
|
+
C:</epp>
|
666
|
+
|
667
|
+
|
668
|
+
|
669
|
+
|
670
|
+
|
671
|
+
|
672
|
+
|
673
|
+
|
674
|
+
Hollenbeck Standards Track [Page 12]
|
675
|
+
|
676
|
+
RFC 5730 EPP August 2009
|
677
|
+
|
678
|
+
|
679
|
+
2.6. Response Format
|
680
|
+
|
681
|
+
An EPP server responds to a client command by returning a response to
|
682
|
+
the client. EPP commands are atomic, so a command will either
|
683
|
+
succeed completely or fail completely. Success and failure results
|
684
|
+
MUST NOT be mixed. In addition to the standard EPP elements, an EPP
|
685
|
+
response contains the following elements:
|
686
|
+
|
687
|
+
- One or more <result> elements that document the success or failure
|
688
|
+
of command execution. If the command was processed successfully,
|
689
|
+
only one <result> element MUST be returned. If the command was
|
690
|
+
not processed successfully, multiple <result> elements MAY be
|
691
|
+
returned to document failure conditions. Each <result> element
|
692
|
+
contains the following attribute and child elements:
|
693
|
+
|
694
|
+
o A "code" attribute whose value is a four-digit, decimal number
|
695
|
+
that describes the success or failure of the command.
|
696
|
+
|
697
|
+
o A <msg> element containing a human-readable description of the
|
698
|
+
response code. The language of the response is identified via
|
699
|
+
an OPTIONAL "lang" attribute. If not specified, the default
|
700
|
+
attribute value MUST be "en" (English).
|
701
|
+
|
702
|
+
o Zero or more OPTIONAL <value> elements that identify a client-
|
703
|
+
provided element (including XML tag and value) or other
|
704
|
+
information that caused a server error condition.
|
705
|
+
|
706
|
+
o Zero or more OPTIONAL <extValue> elements that can be used to
|
707
|
+
provide additional error diagnostic information, including:
|
708
|
+
|
709
|
+
* A <value> element that identifies a client-provided element
|
710
|
+
(including XML tag and value) that caused a server error
|
711
|
+
condition.
|
712
|
+
|
713
|
+
* A <reason> element containing a human-readable message that
|
714
|
+
describes the reason for the error. The language of the
|
715
|
+
response is identified via an OPTIONAL "lang" attribute. If
|
716
|
+
not specified, the default attribute value MUST be "en"
|
717
|
+
(English).
|
718
|
+
|
719
|
+
- An OPTIONAL <msgQ> element that describes messages queued for
|
720
|
+
client retrieval. A <msgQ> element MUST NOT be present if there
|
721
|
+
are no messages queued for client retrieval. A <msgQ> element MAY
|
722
|
+
be present in responses to EPP commands other than the <poll>
|
723
|
+
command if messages are queued for retrieval. A <msgQ> element
|
724
|
+
MUST be present in responses to the EPP <poll> command if messages
|
725
|
+
are queued for retrieval. The <msgQ> element contains the
|
726
|
+
following attributes:
|
727
|
+
|
728
|
+
|
729
|
+
|
730
|
+
Hollenbeck Standards Track [Page 13]
|
731
|
+
|
732
|
+
RFC 5730 EPP August 2009
|
733
|
+
|
734
|
+
|
735
|
+
o A "count" attribute that describes the number of messages that
|
736
|
+
exist in the queue.
|
737
|
+
|
738
|
+
o An "id" attribute used to uniquely identify the message at the
|
739
|
+
head of the queue.
|
740
|
+
|
741
|
+
The <msgQ> element contains the following OPTIONAL child elements
|
742
|
+
that MUST be returned in response to a <poll> request command and
|
743
|
+
MUST NOT be returned in response to any other command, including a
|
744
|
+
<poll> acknowledgement:
|
745
|
+
|
746
|
+
o A <qDate> element that contains the date and time that the
|
747
|
+
message was enqueued.
|
748
|
+
|
749
|
+
o A <msg> element containing a human-readable message. The
|
750
|
+
language of the response is identified via an OPTIONAL "lang"
|
751
|
+
attribute. If not specified, the default attribute value MUST
|
752
|
+
be "en" (English). This element MAY contain XML content for
|
753
|
+
formatting purposes, but the XML content is not specified by
|
754
|
+
the protocol and will thus not be processed for validity.
|
755
|
+
|
756
|
+
- An OPTIONAL <resData> (response data) element that contains child
|
757
|
+
elements specific to the command and associated object.
|
758
|
+
|
759
|
+
- An OPTIONAL <extension> element that MAY be used for server-
|
760
|
+
defined response extensions.
|
761
|
+
|
762
|
+
- A <trID> (transaction identifier) element containing the
|
763
|
+
transaction identifier assigned by the server to the command for
|
764
|
+
which the response is being returned. The transaction identifier
|
765
|
+
is formed using the <clTRID> associated with the command if
|
766
|
+
supplied by the client and a <svTRID> (server transaction
|
767
|
+
identifier) that is assigned by and unique to the server.
|
768
|
+
|
769
|
+
Transaction identifiers provide command-response synchronization
|
770
|
+
integrity. They SHOULD be logged, retained, and protected to ensure
|
771
|
+
that both the client and the server have consistent temporal and
|
772
|
+
state-management records.
|
773
|
+
|
774
|
+
Example response without <value> or <resData>:
|
775
|
+
|
776
|
+
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
777
|
+
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
778
|
+
S: <response>
|
779
|
+
S: <result code="1000">
|
780
|
+
S: <msg lang="en">Command completed successfully</msg>
|
781
|
+
S: </result>
|
782
|
+
S: <trID>
|
783
|
+
|
784
|
+
|
785
|
+
|
786
|
+
Hollenbeck Standards Track [Page 14]
|
787
|
+
|
788
|
+
RFC 5730 EPP August 2009
|
789
|
+
|
790
|
+
|
791
|
+
S: <clTRID>ABC-12345</clTRID>
|
792
|
+
S: <svTRID>54321-XYZ</svTRID>
|
793
|
+
S: </trID>
|
794
|
+
S: </response>
|
795
|
+
S:</epp>
|
796
|
+
|
797
|
+
Example response with <resData>:
|
798
|
+
|
799
|
+
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
800
|
+
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
801
|
+
S: <response>
|
802
|
+
S: <result code="1000">
|
803
|
+
S: <msg>Command completed successfully</msg>
|
804
|
+
S: </result>
|
805
|
+
S: <resData>
|
806
|
+
S: <obj:creData xmlns:obj="urn:ietf:params:xml:ns:obj">
|
807
|
+
S: <obj:name>example</obj:name>
|
808
|
+
S: </obj:creData>
|
809
|
+
S: </resData>
|
810
|
+
S: <trID>
|
811
|
+
S: <clTRID>ABC-12345</clTRID>
|
812
|
+
S: <svTRID>54321-XYZ</svTRID>
|
813
|
+
S: </trID>
|
814
|
+
S: </response>
|
815
|
+
S:</epp>
|
816
|
+
|
817
|
+
Example response with error value elements:
|
818
|
+
|
819
|
+
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
820
|
+
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
821
|
+
S: <response>
|
822
|
+
S: <result code="2004">
|
823
|
+
S: <msg>Parameter value range error</msg>
|
824
|
+
S: <value xmlns:obj="urn:ietf:params:xml:ns:obj">
|
825
|
+
S: <obj:elem1>2525</obj:elem1>
|
826
|
+
S: </value>
|
827
|
+
S: </result>
|
828
|
+
S: <result code="2005">
|
829
|
+
S: <msg>Parameter value syntax error</msg>
|
830
|
+
S: <value xmlns:obj="urn:ietf:params:xml:ns:obj">
|
831
|
+
S: <obj:elem2>ex(ample</obj:elem2>
|
832
|
+
S: </value>
|
833
|
+
S: <extValue>
|
834
|
+
S: <value xmlns:obj="urn:ietf:params:xml:ns:obj">
|
835
|
+
S: <obj:elem3>abc.ex(ample</obj:elem3>
|
836
|
+
S: </value>
|
837
|
+
S: <reason>Invalid character found.</reason>
|
838
|
+
S: </extValue>
|
839
|
+
|
840
|
+
|
841
|
+
|
842
|
+
Hollenbeck Standards Track [Page 15]
|
843
|
+
|
844
|
+
RFC 5730 EPP August 2009
|
845
|
+
|
846
|
+
|
847
|
+
S: </result>
|
848
|
+
S: <trID>
|
849
|
+
S: <clTRID>ABC-12345</clTRID>
|
850
|
+
S: <svTRID>54321-XYZ</svTRID>
|
851
|
+
S: </trID>
|
852
|
+
S: </response>
|
853
|
+
S:</epp>
|
854
|
+
|
855
|
+
Example response with notice of waiting server messages:
|
856
|
+
|
857
|
+
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
858
|
+
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
859
|
+
S: <response>
|
860
|
+
S: <result code="1000">
|
861
|
+
S: <msg>Command completed successfully</msg>
|
862
|
+
S: </result>
|
863
|
+
S: <msgQ count="5" id="12345"/>
|
864
|
+
S: <trID>
|
865
|
+
S: <clTRID>ABC-12345</clTRID>
|
866
|
+
S: <svTRID>54321-XYZ</svTRID>
|
867
|
+
S: </trID>
|
868
|
+
S: </response>
|
869
|
+
S:</epp>
|
870
|
+
|
871
|
+
Command success or failure MUST NOT be assumed if no response is
|
872
|
+
returned or if a returned response is malformed. Protocol
|
873
|
+
idempotency ensures the safety of retrying a command in cases of
|
874
|
+
response-delivery failure.
|
875
|
+
|
876
|
+
2.7. Protocol Extension Framework
|
877
|
+
|
878
|
+
EPP provides an extension framework that allows features to be added
|
879
|
+
at the protocol, object, and command-response levels.
|
880
|
+
|
881
|
+
2.7.1. Protocol Extension
|
882
|
+
|
883
|
+
The EPP extension framework allows for definition of new protocol
|
884
|
+
elements identified using XML namespace notation with a reference to
|
885
|
+
an XML schema that defines the namespace. The <epp> element that
|
886
|
+
identifies the beginning of a protocol instance includes multiple
|
887
|
+
child element choices, one of which is an <extension> element whose
|
888
|
+
children define the extension. For example, a protocol extension
|
889
|
+
element would be described in generic terms as follows:
|
890
|
+
|
891
|
+
C:<epp>
|
892
|
+
C: <extension>
|
893
|
+
C: <!-- One or more extension elements. -->
|
894
|
+
C: <ext:foo xmlns:ext="urn:ietf:params:xml:ns:ext">
|
895
|
+
|
896
|
+
|
897
|
+
|
898
|
+
Hollenbeck Standards Track [Page 16]
|
899
|
+
|
900
|
+
RFC 5730 EPP August 2009
|
901
|
+
|
902
|
+
|
903
|
+
C: <!-- One or more extension child elements. -->
|
904
|
+
C: </ext:foo>
|
905
|
+
C: </extension>
|
906
|
+
C:</epp>
|
907
|
+
|
908
|
+
This document does not define mappings for specific extensions.
|
909
|
+
Extension specifications MUST be described in separate documents that
|
910
|
+
define the objects and operations subject to the extension.
|
911
|
+
|
912
|
+
2.7.2. Object Extension
|
913
|
+
|
914
|
+
EPP provides an extensible object management framework that defines
|
915
|
+
the syntax and semantics of protocol operations applied to a managed
|
916
|
+
object. This framework pushes the definition of each protocol
|
917
|
+
operation into the context of a specific object, providing the
|
918
|
+
ability to add mappings for new objects without having to modify the
|
919
|
+
base protocol.
|
920
|
+
|
921
|
+
Protocol elements that contain data specific to objects are
|
922
|
+
identified using XML namespace notation with a reference to an XML
|
923
|
+
schema that defines the namespace. The schema for EPP supports use
|
924
|
+
of dynamic object schemas on a per-command and per-response basis.
|
925
|
+
For example, the start of an object-specific command element would be
|
926
|
+
described in generic terms as follows:
|
927
|
+
|
928
|
+
C:<EPPCommandName>
|
929
|
+
C: <object:command xmlns:object="urn:ietf:params:xml:ns:object">
|
930
|
+
C: <!-- One or more object-specific command elements. -->
|
931
|
+
C: </object:command>
|
932
|
+
C:</EPPCommandName>
|
933
|
+
|
934
|
+
An object-specific response element would be described similarly:
|
935
|
+
|
936
|
+
S:<resData>
|
937
|
+
S: <object:resData xmlns:object="urn:ietf:params:xml:ns:object">
|
938
|
+
S: <!-- One or more object-specific response elements. -->
|
939
|
+
S: </object:resData>
|
940
|
+
S:</resData>
|
941
|
+
|
942
|
+
This document does not define mappings for specific objects. The
|
943
|
+
mapping of EPP to an object MUST be described in separate documents
|
944
|
+
that specifically address each command and response in the context of
|
945
|
+
the object. A suggested object mapping outline is included as an
|
946
|
+
appendix to this document.
|
947
|
+
|
948
|
+
|
949
|
+
|
950
|
+
|
951
|
+
|
952
|
+
|
953
|
+
|
954
|
+
Hollenbeck Standards Track [Page 17]
|
955
|
+
|
956
|
+
RFC 5730 EPP August 2009
|
957
|
+
|
958
|
+
|
959
|
+
2.7.3. Command-Response Extension
|
960
|
+
|
961
|
+
EPP provides a facility for protocol command and response extensions.
|
962
|
+
Protocol commands and responses MAY be extended by an <extension>
|
963
|
+
element that contains additional elements whose syntax and semantics
|
964
|
+
are not explicitly defined by EPP or an EPP object mapping. This
|
965
|
+
element is OPTIONAL. Extensions are typically defined by agreement
|
966
|
+
between client and server and MAY be used to extend EPP for unique
|
967
|
+
operational needs. A server-extended command element would be
|
968
|
+
described in generic terms as follows:
|
969
|
+
|
970
|
+
C:<command>
|
971
|
+
C: <!-- EPPCommandName can be "create", "update", etc. -->
|
972
|
+
C: <EPPCommandName>
|
973
|
+
C: <object:command xmlns:object="urn:ietf:params:xml:ns:object">
|
974
|
+
C: <!-- One or more object-specific command elements. -->
|
975
|
+
C: </object:command>
|
976
|
+
C: </EPPCommandName>
|
977
|
+
C: <extension>
|
978
|
+
C: <!-- One or more server-defined elements. -->
|
979
|
+
C: </extension>
|
980
|
+
C:</command>
|
981
|
+
|
982
|
+
A server-extended response element would be described similarly:
|
983
|
+
|
984
|
+
S:<response>
|
985
|
+
S: <result code="1000">
|
986
|
+
S: <msg lang="en">Command completed successfully</msg>
|
987
|
+
S: </result>
|
988
|
+
S: <extension>
|
989
|
+
S: <!-- One or more server-defined elements. -->
|
990
|
+
S: </extension>
|
991
|
+
S: <trID>
|
992
|
+
S: <clTRID>ABC-12345</clTRID>
|
993
|
+
S: <svTRID>54321-XYZ</svTRID>
|
994
|
+
S: </trID>
|
995
|
+
S:</response>
|
996
|
+
|
997
|
+
This document does not define any specific server extensions. The
|
998
|
+
mapping of server extensions to EPP MUST be described in separate
|
999
|
+
documents that specifically address extended commands and responses
|
1000
|
+
in the server's operational context.
|
1001
|
+
|
1002
|
+
2.8. Object Identification
|
1003
|
+
|
1004
|
+
Some objects, such as name servers and contacts, can have utility in
|
1005
|
+
multiple repositories. However, maintaining disjoint copies of
|
1006
|
+
object information in multiple repositories can lead to
|
1007
|
+
|
1008
|
+
|
1009
|
+
|
1010
|
+
Hollenbeck Standards Track [Page 18]
|
1011
|
+
|
1012
|
+
RFC 5730 EPP August 2009
|
1013
|
+
|
1014
|
+
|
1015
|
+
inconsistencies that have adverse consequences for the Internet. For
|
1016
|
+
example, changing the name of a name server in one repository but not
|
1017
|
+
in a second repository that refers to the server for domain name
|
1018
|
+
delegation can produce unexpected DNS query results.
|
1019
|
+
|
1020
|
+
Globally unique identifiers can help facilitate object-information
|
1021
|
+
sharing between repositories. A globally unique identifier MUST be
|
1022
|
+
assigned to every object when the object is created; the identifier
|
1023
|
+
MUST be returned to the client as part of any request to retrieve the
|
1024
|
+
detailed attributes of an object. Specific identifier values are a
|
1025
|
+
matter of repository policy, but they SHOULD be constructed according
|
1026
|
+
to the following algorithm:
|
1027
|
+
|
1028
|
+
a. Divide the provisioning repository world into a number of object
|
1029
|
+
repository classes.
|
1030
|
+
|
1031
|
+
b. Each repository within a class is assigned an identifier that is
|
1032
|
+
maintained by IANA.
|
1033
|
+
|
1034
|
+
c. Each repository is responsible for assigning a unique local
|
1035
|
+
identifier for each object within the repository.
|
1036
|
+
|
1037
|
+
d. The globally unique identifier is a concatenation of the local
|
1038
|
+
identifier, followed by a hyphen ("-", ASCII value 0x002D),
|
1039
|
+
followed by the repository identifier.
|
1040
|
+
|
1041
|
+
2.9. Protocol Commands
|
1042
|
+
|
1043
|
+
EPP provides commands to manage sessions, retrieve object
|
1044
|
+
information, and perform transformation operations on objects. All
|
1045
|
+
EPP commands are atomic and designed so that they can be made
|
1046
|
+
idempotent, either succeeding completely or failing completely and
|
1047
|
+
producing predictable results in case of repeated executions. This
|
1048
|
+
section describes each EPP command, including examples with
|
1049
|
+
representative server responses.
|
1050
|
+
|
1051
|
+
2.9.1. Session Management Commands
|
1052
|
+
|
1053
|
+
EPP provides two commands for session management: <login> to
|
1054
|
+
establish a session with a server and <logout> to end a session with
|
1055
|
+
a server. The <login> command establishes an ongoing server session
|
1056
|
+
that preserves client identity and authorization information during
|
1057
|
+
the duration of the session.
|
1058
|
+
|
1059
|
+
|
1060
|
+
|
1061
|
+
|
1062
|
+
|
1063
|
+
|
1064
|
+
|
1065
|
+
|
1066
|
+
Hollenbeck Standards Track [Page 19]
|
1067
|
+
|
1068
|
+
RFC 5730 EPP August 2009
|
1069
|
+
|
1070
|
+
|
1071
|
+
2.9.1.1. EPP <login> Command
|
1072
|
+
|
1073
|
+
The EPP <login> command is used to establish a session with an EPP
|
1074
|
+
server in response to a greeting issued by the server. A <login>
|
1075
|
+
command MUST be sent to a server before any other EPP command to
|
1076
|
+
establish an ongoing session. A server operator MAY limit the number
|
1077
|
+
of failed login attempts N, 1 <= N <= infinity, after which a login
|
1078
|
+
failure results in the connection to the server (if a connection
|
1079
|
+
exists) being closed.
|
1080
|
+
|
1081
|
+
A client identifier and initial password MUST be created on the
|
1082
|
+
server before a client can successfully complete a <login> command.
|
1083
|
+
The client identifier and initial password MUST be delivered to the
|
1084
|
+
client using an out-of-band method that protects the identifier and
|
1085
|
+
password from inadvertent disclosure.
|
1086
|
+
|
1087
|
+
In addition to the standard EPP command elements, the <login> command
|
1088
|
+
contains the following child elements:
|
1089
|
+
|
1090
|
+
- A <clID> element that contains the client identifier assigned to
|
1091
|
+
the client by the server.
|
1092
|
+
|
1093
|
+
- A <pw> element that contains the client's plain text password.
|
1094
|
+
The value of this element is case sensitive.
|
1095
|
+
|
1096
|
+
- An OPTIONAL <newPW> element that contains a new plain text
|
1097
|
+
password to be assigned to the client for use with subsequent
|
1098
|
+
<login> commands. The value of this element is case sensitive.
|
1099
|
+
|
1100
|
+
- An <options> element that contains the following child elements:
|
1101
|
+
|
1102
|
+
- A <version> element that contains the protocol version to be
|
1103
|
+
used for the command or ongoing server session.
|
1104
|
+
|
1105
|
+
- A <lang> element that contains the text response language to be
|
1106
|
+
used for the command or ongoing server session commands.
|
1107
|
+
|
1108
|
+
The values of the <version> and <lang> elements MUST exactly match
|
1109
|
+
one of the values presented in the EPP greeting.
|
1110
|
+
|
1111
|
+
- A <svcs> element that contains one or more <objURI> elements that
|
1112
|
+
contain namespace URIs representing the objects to be managed
|
1113
|
+
during the session. The <svcs> element MAY contain an OPTIONAL
|
1114
|
+
<svcExtension> element that contains one or more <extURI> elements
|
1115
|
+
that identify object extensions to be used during the session.
|
1116
|
+
|
1117
|
+
|
1118
|
+
|
1119
|
+
|
1120
|
+
|
1121
|
+
|
1122
|
+
Hollenbeck Standards Track [Page 20]
|
1123
|
+
|
1124
|
+
RFC 5730 EPP August 2009
|
1125
|
+
|
1126
|
+
|
1127
|
+
The PLAIN Simple Authentication and Security Layer (SASL) mechanism
|
1128
|
+
presented in [RFC4616] describes a format for providing a user
|
1129
|
+
identifier, an authorization identifier, and a password as part of a
|
1130
|
+
single plain-text string. The EPP authentication mechanism is
|
1131
|
+
similar, though EPP does not require a session-level authorization
|
1132
|
+
identifier and the user identifier and password are separated into
|
1133
|
+
distinct XML elements. Additional identification and authorization
|
1134
|
+
schemes MUST be provided at other protocol layers to provide more
|
1135
|
+
robust security services.
|
1136
|
+
|
1137
|
+
Example <login> command:
|
1138
|
+
|
1139
|
+
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1140
|
+
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1141
|
+
C: <command>
|
1142
|
+
C: <login>
|
1143
|
+
C: <clID>ClientX</clID>
|
1144
|
+
C: <pw>foo-BAR2</pw>
|
1145
|
+
C: <newPW>bar-FOO2</newPW>
|
1146
|
+
C: <options>
|
1147
|
+
C: <version>1.0</version>
|
1148
|
+
C: <lang>en</lang>
|
1149
|
+
C: </options>
|
1150
|
+
C: <svcs>
|
1151
|
+
C: <objURI>urn:ietf:params:xml:ns:obj1</objURI>
|
1152
|
+
C: <objURI>urn:ietf:params:xml:ns:obj2</objURI>
|
1153
|
+
C: <objURI>urn:ietf:params:xml:ns:obj3</objURI>
|
1154
|
+
C: <svcExtension>
|
1155
|
+
C: <extURI>http://custom/obj1ext-1.0</extURI>
|
1156
|
+
C: </svcExtension>
|
1157
|
+
C: </svcs>
|
1158
|
+
C: </login>
|
1159
|
+
C: <clTRID>ABC-12345</clTRID>
|
1160
|
+
C: </command>
|
1161
|
+
C:</epp>
|
1162
|
+
|
1163
|
+
When a <login> command has been processed successfully, a server MUST
|
1164
|
+
respond with an EPP response with no <resData> element. If
|
1165
|
+
successful, the server will respond by creating and maintaining a new
|
1166
|
+
session that SHOULD be terminated by a future <logout> command.
|
1167
|
+
|
1168
|
+
Example <login> response:
|
1169
|
+
|
1170
|
+
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1171
|
+
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1172
|
+
S: <response>
|
1173
|
+
S: <result code="1000">
|
1174
|
+
S: <msg>Command completed successfully</msg>
|
1175
|
+
|
1176
|
+
|
1177
|
+
|
1178
|
+
Hollenbeck Standards Track [Page 21]
|
1179
|
+
|
1180
|
+
RFC 5730 EPP August 2009
|
1181
|
+
|
1182
|
+
|
1183
|
+
S: </result>
|
1184
|
+
S: <trID>
|
1185
|
+
S: <clTRID>ABC-12345</clTRID>
|
1186
|
+
S: <svTRID>54321-XYZ</svTRID>
|
1187
|
+
S: </trID>
|
1188
|
+
S: </response>
|
1189
|
+
S:</epp>
|
1190
|
+
|
1191
|
+
The EPP <login> command is used to establish a session with an EPP
|
1192
|
+
server. A <login> command MUST be rejected if received within the
|
1193
|
+
bounds of an existing session. This command MUST be available to all
|
1194
|
+
clients.
|
1195
|
+
|
1196
|
+
2.9.1.2. EPP <logout> Command
|
1197
|
+
|
1198
|
+
The EPP <logout> command is used to end a session with an EPP server.
|
1199
|
+
The <logout> command MUST be represented as an empty element with no
|
1200
|
+
child elements.
|
1201
|
+
|
1202
|
+
A server MAY end a session due to client inactivity or excessive
|
1203
|
+
client-session longevity. The parameters for determining excessive
|
1204
|
+
client inactivity or session longevity are a matter of server policy
|
1205
|
+
and are not specified by this protocol.
|
1206
|
+
|
1207
|
+
Transport mappings MUST explicitly describe any connection-oriented
|
1208
|
+
processing that takes place after processing a <logout> command and
|
1209
|
+
ending a session.
|
1210
|
+
|
1211
|
+
Example <logout> command:
|
1212
|
+
|
1213
|
+
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1214
|
+
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1215
|
+
C: <command>
|
1216
|
+
C: <logout/>
|
1217
|
+
C: <clTRID>ABC-12345</clTRID>
|
1218
|
+
C: </command>
|
1219
|
+
C:</epp>
|
1220
|
+
|
1221
|
+
When a <logout> command has been processed successfully, a server
|
1222
|
+
MUST respond with an EPP response with no <resData> element. If
|
1223
|
+
successful, the server MUST also end the current session.
|
1224
|
+
|
1225
|
+
Example <logout> response:
|
1226
|
+
|
1227
|
+
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1228
|
+
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1229
|
+
S: <response>
|
1230
|
+
S: <result code="1500">
|
1231
|
+
|
1232
|
+
|
1233
|
+
|
1234
|
+
Hollenbeck Standards Track [Page 22]
|
1235
|
+
|
1236
|
+
RFC 5730 EPP August 2009
|
1237
|
+
|
1238
|
+
|
1239
|
+
S: <msg>Command completed successfully; ending session</msg>
|
1240
|
+
S: </result>
|
1241
|
+
S: <trID>
|
1242
|
+
S: <clTRID>ABC-12345</clTRID>
|
1243
|
+
S: <svTRID>54321-XYZ</svTRID>
|
1244
|
+
S: </trID>
|
1245
|
+
S: </response>
|
1246
|
+
S:</epp>
|
1247
|
+
|
1248
|
+
The EPP <logout> command is used to end a session with an EPP server.
|
1249
|
+
A <logout> command MUST be rejected if the command has not been
|
1250
|
+
preceded by a successful <login> command. This command MUST be
|
1251
|
+
available to all clients.
|
1252
|
+
|
1253
|
+
2.9.2. Query Commands
|
1254
|
+
|
1255
|
+
2.9.2.1. EPP <check> Command
|
1256
|
+
|
1257
|
+
The EPP <check> command is used to determine if an object can be
|
1258
|
+
provisioned within a repository. It provides a hint that allows a
|
1259
|
+
client to anticipate the success or failure of provisioning an object
|
1260
|
+
using the <create> command as object-provisioning requirements are
|
1261
|
+
ultimately a matter of server policy.
|
1262
|
+
|
1263
|
+
The elements needed to identify an object are object-specific, so the
|
1264
|
+
child elements of the <check> command are specified using the EPP
|
1265
|
+
extension framework. In addition to the standard EPP command
|
1266
|
+
elements, the <check> command contains the following child elements:
|
1267
|
+
|
1268
|
+
- An object-specific <obj:check> element that identifies the objects
|
1269
|
+
to be queried. Multiple objects of the same type MAY be queried
|
1270
|
+
within a single <check> command.
|
1271
|
+
|
1272
|
+
Example <check> command:
|
1273
|
+
|
1274
|
+
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1275
|
+
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1276
|
+
C: <command>
|
1277
|
+
C: <check>
|
1278
|
+
C: <obj:check xmlns:obj="urn:ietf:params:xml:ns:obj">
|
1279
|
+
C: <obj:name>example1</obj:name>
|
1280
|
+
C: <obj:name>example2</obj:name>
|
1281
|
+
C: <obj:name>example3</obj:name>
|
1282
|
+
C: </obj:check>
|
1283
|
+
C: </check>
|
1284
|
+
C: <clTRID>ABC-12346</clTRID>
|
1285
|
+
C: </command>
|
1286
|
+
C:</epp>
|
1287
|
+
|
1288
|
+
|
1289
|
+
|
1290
|
+
Hollenbeck Standards Track [Page 23]
|
1291
|
+
|
1292
|
+
RFC 5730 EPP August 2009
|
1293
|
+
|
1294
|
+
|
1295
|
+
When a <check> command has been processed successfully, a server MUST
|
1296
|
+
respond with an EPP <resData> element that MUST contain a child
|
1297
|
+
element that identifies the object namespace. The child elements of
|
1298
|
+
the <resData> element are object-specific, though the EPP <resData>
|
1299
|
+
element MUST contain a child <obj:chkData> element that contains one
|
1300
|
+
or more <obj:cd> (check data) elements. Each <obj:cd> element
|
1301
|
+
contains the following child elements:
|
1302
|
+
|
1303
|
+
- An object-specific element that identifies the queried object.
|
1304
|
+
This element MUST contain an "avail" attribute whose value
|
1305
|
+
indicates object availability (can it be provisioned or not) at
|
1306
|
+
the moment the <check> command was completed. A value of "1" or
|
1307
|
+
"true" means that the object can be provisioned. A value of "0"
|
1308
|
+
or "false" means that the object cannot be provisioned.
|
1309
|
+
|
1310
|
+
- An OPTIONAL <obj:reason> element that MAY be provided when an
|
1311
|
+
object cannot be provisioned. If present, this element contains
|
1312
|
+
server-specific text to help explain why the object cannot be
|
1313
|
+
provisioned. This text MUST be represented in the response
|
1314
|
+
language previously negotiated with the client; an OPTIONAL "lang"
|
1315
|
+
attribute MAY be present to identify the language if the
|
1316
|
+
negotiated value is something other than the default value of "en"
|
1317
|
+
(English).
|
1318
|
+
|
1319
|
+
Example <check> response:
|
1320
|
+
|
1321
|
+
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1322
|
+
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1323
|
+
S: <response>
|
1324
|
+
S: <result code="1000">
|
1325
|
+
S: <msg>Command completed successfully</msg>
|
1326
|
+
S: </result>
|
1327
|
+
S: <resData>
|
1328
|
+
S: <obj:chkData xmlns:obj="urn:ietf:params:xml:ns:obj">
|
1329
|
+
S: <obj:cd>
|
1330
|
+
S: <obj:name avail="1">example1</obj:name>
|
1331
|
+
S: </obj:cd>
|
1332
|
+
S: <obj:cd>
|
1333
|
+
S: <obj:name avail="0">example2</obj:name>
|
1334
|
+
S: <obj:reason>In use</obj:reason>
|
1335
|
+
S: </obj:cd>
|
1336
|
+
S: <obj:cd>
|
1337
|
+
S: <obj:name avail="1">example3</obj:name>
|
1338
|
+
S: </obj:cd>
|
1339
|
+
S: </obj:chkData>
|
1340
|
+
S: </resData>
|
1341
|
+
S: <trID>
|
1342
|
+
S: <clTRID>ABC-12346</clTRID>
|
1343
|
+
|
1344
|
+
|
1345
|
+
|
1346
|
+
Hollenbeck Standards Track [Page 24]
|
1347
|
+
|
1348
|
+
RFC 5730 EPP August 2009
|
1349
|
+
|
1350
|
+
|
1351
|
+
S: <svTRID>54322-XYZ</svTRID>
|
1352
|
+
S: </trID>
|
1353
|
+
S: </response>
|
1354
|
+
S:</epp>
|
1355
|
+
|
1356
|
+
The EPP <check> command is used to determine if an object can be
|
1357
|
+
provisioned within a repository. This action MUST be open to all
|
1358
|
+
authorized clients.
|
1359
|
+
|
1360
|
+
2.9.2.2. EPP <info> Command
|
1361
|
+
|
1362
|
+
The EPP <info> command is used to retrieve information associated
|
1363
|
+
with an existing object. The elements needed to identify an object
|
1364
|
+
and the type of information associated with an object are both
|
1365
|
+
object-specific, so the child elements of the <info> command are
|
1366
|
+
specified using the EPP extension framework. In addition to the
|
1367
|
+
standard EPP command elements, the <info> command contains the
|
1368
|
+
following child elements:
|
1369
|
+
|
1370
|
+
- An object-specific <obj:info> element that identifies the object
|
1371
|
+
to be queried.
|
1372
|
+
|
1373
|
+
Example <info> command:
|
1374
|
+
|
1375
|
+
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1376
|
+
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1377
|
+
C: <command>
|
1378
|
+
C: <info>
|
1379
|
+
C: <obj:info xmlns:obj="urn:ietf:params:xml:ns:obj">
|
1380
|
+
C: <!-- Object-specific elements. -->
|
1381
|
+
C: </obj:info>
|
1382
|
+
C: </info>
|
1383
|
+
C: <clTRID>ABC-12346</clTRID>
|
1384
|
+
C: </command>
|
1385
|
+
C:</epp>
|
1386
|
+
|
1387
|
+
When an <info> command has been processed successfully, a server MUST
|
1388
|
+
respond with an EPP <resData> element that MUST contain a child
|
1389
|
+
element that identifies the object namespace and the Repository
|
1390
|
+
Object IDentifier (ROID) that was assigned to the object when the
|
1391
|
+
object was created. Other child elements of the <resData> element
|
1392
|
+
are object-specific.
|
1393
|
+
|
1394
|
+
Example <info> response:
|
1395
|
+
|
1396
|
+
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1397
|
+
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1398
|
+
S: <response>
|
1399
|
+
|
1400
|
+
|
1401
|
+
|
1402
|
+
Hollenbeck Standards Track [Page 25]
|
1403
|
+
|
1404
|
+
RFC 5730 EPP August 2009
|
1405
|
+
|
1406
|
+
|
1407
|
+
S: <result code="1000">
|
1408
|
+
S: <msg>Command completed successfully</msg>
|
1409
|
+
S: </result>
|
1410
|
+
S: <resData>
|
1411
|
+
S: <obj:infData xmlns:obj="urn:ietf:params:xml:ns:obj">
|
1412
|
+
S: <obj:roid>EXAMPLE1-REP</obj:roid>
|
1413
|
+
S: <!-- Object-specific elements. -->
|
1414
|
+
S: </obj:infData>
|
1415
|
+
S: </resData>
|
1416
|
+
S: <trID>
|
1417
|
+
S: <clTRID>ABC-12346</clTRID>
|
1418
|
+
S: <svTRID>54322-XYZ</svTRID>
|
1419
|
+
S: </trID>
|
1420
|
+
S: </response>
|
1421
|
+
S:</epp>
|
1422
|
+
|
1423
|
+
The EPP <info> command is used to retrieve information associated
|
1424
|
+
with an existing object. This action SHOULD be limited to authorized
|
1425
|
+
clients; restricting this action to the sponsoring client is
|
1426
|
+
RECOMMENDED.
|
1427
|
+
|
1428
|
+
2.9.2.3. EPP <poll> Command
|
1429
|
+
|
1430
|
+
The EPP <poll> command is used to discover and retrieve service
|
1431
|
+
messages queued by a server for individual clients. If the message
|
1432
|
+
queue is not empty, a successful response to a <poll> command MUST
|
1433
|
+
return the first message from the message queue. Each response
|
1434
|
+
returned from the server includes a server-unique message identifier
|
1435
|
+
that MUST be provided to acknowledge receipt of the message, and a
|
1436
|
+
counter that indicates the number of messages in the queue. After a
|
1437
|
+
message has been received by the client, the client MUST respond to
|
1438
|
+
the message with an explicit acknowledgement to confirm that the
|
1439
|
+
message has been received. A server MUST dequeue the message and
|
1440
|
+
decrement the queue counter after receiving acknowledgement from the
|
1441
|
+
client, making the next message in the queue (if any) available for
|
1442
|
+
retrieval.
|
1443
|
+
|
1444
|
+
Servers can occasionally perform actions on objects that are not in
|
1445
|
+
direct response to a client request, or an action taken by one client
|
1446
|
+
can indirectly involve a second client. Examples of such actions
|
1447
|
+
include deletion upon expiration, automatic renewal upon expiration,
|
1448
|
+
and transfer coordination; other types of service information MAY be
|
1449
|
+
defined as a matter of server policy. Service messages SHOULD be
|
1450
|
+
created for passive clients affected by an action on an object.
|
1451
|
+
Service messages MAY also be created for active clients that request
|
1452
|
+
an action on an object, though such messages MUST NOT replace the
|
1453
|
+
normal protocol response to the request. For example, <transfer>
|
1454
|
+
actions SHOULD be reported to the client that has the authority to
|
1455
|
+
|
1456
|
+
|
1457
|
+
|
1458
|
+
Hollenbeck Standards Track [Page 26]
|
1459
|
+
|
1460
|
+
RFC 5730 EPP August 2009
|
1461
|
+
|
1462
|
+
|
1463
|
+
approve or reject a transfer request. Other methods of server-client
|
1464
|
+
action notification, such as offline reporting, are also possible and
|
1465
|
+
are beyond the scope of this specification.
|
1466
|
+
|
1467
|
+
Message queues can consume server resources if clients do not
|
1468
|
+
retrieve and acknowledge messages on a regular basis. Servers MAY
|
1469
|
+
implement other mechanisms to dequeue and deliver messages if queue
|
1470
|
+
maintenance needs exceed server resource consumption limits. Server
|
1471
|
+
operators SHOULD consider time-sensitivity and resource management
|
1472
|
+
factors when selecting a delivery method for service information
|
1473
|
+
because some message types can be reasonably delivered using non-
|
1474
|
+
protocol methods that require fewer server resources.
|
1475
|
+
|
1476
|
+
Some of the information returned in response to a <poll> command can
|
1477
|
+
be object-specific, so some child elements of the <poll> response MAY
|
1478
|
+
be specified using the EPP extension framework. The <poll> command
|
1479
|
+
MUST be represented as an empty element with no child elements. An
|
1480
|
+
"op" attribute with value "req" is REQUIRED to retrieve the first
|
1481
|
+
message from the server message queue. An "op" attribute (with value
|
1482
|
+
"ack") and a "msgID" attribute (whose value corresponds to the value
|
1483
|
+
of the "id" attribute copied from the <msg> element in the message
|
1484
|
+
being acknowledged) are REQUIRED to acknowledge receipt of a message.
|
1485
|
+
|
1486
|
+
Example <poll> command:
|
1487
|
+
|
1488
|
+
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1489
|
+
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1490
|
+
C: <command>
|
1491
|
+
C: <poll op="req"/>
|
1492
|
+
C: <clTRID>ABC-12345</clTRID>
|
1493
|
+
C: </command>
|
1494
|
+
C:</epp>
|
1495
|
+
|
1496
|
+
The returned result code notes that a message has been dequeued and
|
1497
|
+
returned in response to a <poll> command.
|
1498
|
+
|
1499
|
+
Example <poll> response with object-specific information:
|
1500
|
+
|
1501
|
+
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1502
|
+
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1503
|
+
S: <response>
|
1504
|
+
S: <result code="1301">
|
1505
|
+
S: <msg>Command completed successfully; ack to dequeue</msg>
|
1506
|
+
S: </result>
|
1507
|
+
S: <msgQ count="5" id="12345">
|
1508
|
+
S: <qDate>2000-06-08T22:00:00.0Z</qDate>
|
1509
|
+
S: <msg>Transfer requested.</msg>
|
1510
|
+
S: </msgQ>
|
1511
|
+
|
1512
|
+
|
1513
|
+
|
1514
|
+
Hollenbeck Standards Track [Page 27]
|
1515
|
+
|
1516
|
+
RFC 5730 EPP August 2009
|
1517
|
+
|
1518
|
+
|
1519
|
+
S: <resData>
|
1520
|
+
S: <obj:trnData
|
1521
|
+
S: xmlns:obj="urn:ietf:params:xml:ns:obj-1.0">
|
1522
|
+
S: <obj:name>example.com</obj:name>
|
1523
|
+
S: <obj:trStatus>pending</obj:trStatus>
|
1524
|
+
S: <obj:reID>ClientX</obj:reID>
|
1525
|
+
S: <obj:reDate>2000-06-08T22:00:00.0Z</obj:reDate>
|
1526
|
+
S: <obj:acID>ClientY</obj:acID>
|
1527
|
+
S: <obj:acDate>2000-06-13T22:00:00.0Z</obj:acDate>
|
1528
|
+
S: <obj:exDate>2002-09-08T22:00:00.0Z</obj:exDate>
|
1529
|
+
S: </obj:trnData>
|
1530
|
+
S: </resData>
|
1531
|
+
S: <trID>
|
1532
|
+
S: <clTRID>ABC-12345</clTRID>
|
1533
|
+
S: <svTRID>54321-XYZ</svTRID>
|
1534
|
+
S: </trID>
|
1535
|
+
S: </response>
|
1536
|
+
S:</epp>
|
1537
|
+
|
1538
|
+
A client MUST acknowledge each response to dequeue the message and
|
1539
|
+
make subsequent messages available for retrieval.
|
1540
|
+
|
1541
|
+
Example <poll> acknowledgement command:
|
1542
|
+
|
1543
|
+
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1544
|
+
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1545
|
+
C: <command>
|
1546
|
+
C: <poll op="ack" msgID="12345"/>
|
1547
|
+
C: <clTRID>ABC-12346</clTRID>
|
1548
|
+
C: </command>
|
1549
|
+
C:</epp>
|
1550
|
+
|
1551
|
+
A <poll> acknowledgement response notes the ID of the message that
|
1552
|
+
has been acknowledged and the number of messages remaining in the
|
1553
|
+
queue.
|
1554
|
+
|
1555
|
+
Example <poll> acknowledgement response:
|
1556
|
+
|
1557
|
+
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1558
|
+
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1559
|
+
S: <response>
|
1560
|
+
S: <result code="1000">
|
1561
|
+
S: <msg>Command completed successfully</msg>
|
1562
|
+
S: </result>
|
1563
|
+
S: <msgQ count="4" id="12345"/>
|
1564
|
+
S: <trID>
|
1565
|
+
S: <clTRID>ABC-12346</clTRID>
|
1566
|
+
S: <svTRID>54322-XYZ</svTRID>
|
1567
|
+
|
1568
|
+
|
1569
|
+
|
1570
|
+
Hollenbeck Standards Track [Page 28]
|
1571
|
+
|
1572
|
+
RFC 5730 EPP August 2009
|
1573
|
+
|
1574
|
+
|
1575
|
+
S: </trID>
|
1576
|
+
S: </response>
|
1577
|
+
S:</epp>
|
1578
|
+
|
1579
|
+
Service messages can also be returned without object information.
|
1580
|
+
|
1581
|
+
Example <poll> response with mixed message content and without
|
1582
|
+
object-specific information:
|
1583
|
+
|
1584
|
+
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1585
|
+
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1586
|
+
S: <response>
|
1587
|
+
S: <result code="1301">
|
1588
|
+
S: <msg>Command completed successfully; ack to dequeue</msg>
|
1589
|
+
S: </result>
|
1590
|
+
S: <msgQ count="4" id="12346">
|
1591
|
+
S: <qDate>2000-06-08T22:10:00.0Z</qDate>
|
1592
|
+
S: <msg lang="en">Credit balance low.
|
1593
|
+
S: <limit>100</limit><bal>5</bal>
|
1594
|
+
S: </msg>
|
1595
|
+
S: </msgQ>
|
1596
|
+
S: <trID>
|
1597
|
+
S: <clTRID>ABC-12346</clTRID>
|
1598
|
+
S: <svTRID>54321-XYZ</svTRID>
|
1599
|
+
S: </trID>
|
1600
|
+
S: </response>
|
1601
|
+
S:</epp>
|
1602
|
+
|
1603
|
+
The returned result code and message is used to note an empty server
|
1604
|
+
message queue.
|
1605
|
+
|
1606
|
+
Example <poll> response to note an empty message queue:
|
1607
|
+
|
1608
|
+
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1609
|
+
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1610
|
+
S: <response>
|
1611
|
+
S: <result code="1300">
|
1612
|
+
S: <msg>Command completed successfully; no messages</msg>
|
1613
|
+
S: </result>
|
1614
|
+
S: <trID>
|
1615
|
+
S: <clTRID>ABC-12346</clTRID>
|
1616
|
+
S: <svTRID>54321-XYZ</svTRID>
|
1617
|
+
S: </trID>
|
1618
|
+
S: </response>
|
1619
|
+
S:</epp>
|
1620
|
+
|
1621
|
+
|
1622
|
+
|
1623
|
+
|
1624
|
+
|
1625
|
+
|
1626
|
+
Hollenbeck Standards Track [Page 29]
|
1627
|
+
|
1628
|
+
RFC 5730 EPP August 2009
|
1629
|
+
|
1630
|
+
|
1631
|
+
The EPP <poll> command is used to discover and retrieve client
|
1632
|
+
service messages from a server. This action SHOULD be limited to
|
1633
|
+
authorized clients; queuing service messages and limiting queue
|
1634
|
+
access on a per-client basis is RECOMMENDED.
|
1635
|
+
|
1636
|
+
2.9.2.4. EPP <transfer> Query Command
|
1637
|
+
|
1638
|
+
The EPP <transfer> command provides a query operation that allows a
|
1639
|
+
client to determine real-time status of pending and completed
|
1640
|
+
transfer requests. The elements needed to identify an object that is
|
1641
|
+
the subject of a transfer request are object-specific, so the child
|
1642
|
+
elements of the <transfer> query command are specified using the EPP
|
1643
|
+
extension framework. In addition to the standard EPP command
|
1644
|
+
elements, the <transfer> command contains an "op" attribute with
|
1645
|
+
value "query" and the following child elements:
|
1646
|
+
|
1647
|
+
- An object-specific <obj:transfer> element that identifies the
|
1648
|
+
object whose transfer status is requested.
|
1649
|
+
|
1650
|
+
Transfer status is typically considered sensitive information by the
|
1651
|
+
clients involved in the operation. Object mappings MUST provide
|
1652
|
+
features to restrict transfer queries to authorized clients, such as
|
1653
|
+
by requiring authorization information as part of the request.
|
1654
|
+
|
1655
|
+
Example <transfer> query command:
|
1656
|
+
|
1657
|
+
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1658
|
+
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1659
|
+
C: <command>
|
1660
|
+
C: <transfer op="query">
|
1661
|
+
C: <obj:transfer xmlns:obj="urn:ietf:params:xml:ns:obj">
|
1662
|
+
C: <!-- Object-specific elements. -->
|
1663
|
+
C: </obj:transfer>
|
1664
|
+
C: </transfer>
|
1665
|
+
C: <clTRID>ABC-12346</clTRID>
|
1666
|
+
C: </command>
|
1667
|
+
C:</epp>
|
1668
|
+
|
1669
|
+
When a <transfer> query command has been processed successfully, a
|
1670
|
+
server MUST respond with an EPP <resData> element that MUST contain a
|
1671
|
+
child element that identifies the object namespace. The child
|
1672
|
+
elements of the <resData> element are object-specific, but they MUST
|
1673
|
+
include elements that identify the object, the status of the
|
1674
|
+
transfer, the identifier of the client that requested the transfer,
|
1675
|
+
the date and time that the request was made, the identifier of the
|
1676
|
+
client that is authorized to act on the request, the date and time by
|
1677
|
+
|
1678
|
+
|
1679
|
+
|
1680
|
+
|
1681
|
+
|
1682
|
+
Hollenbeck Standards Track [Page 30]
|
1683
|
+
|
1684
|
+
RFC 5730 EPP August 2009
|
1685
|
+
|
1686
|
+
|
1687
|
+
which an action is expected, and an OPTIONAL date and time noting
|
1688
|
+
changes in the object's validity period (if applicable) that occur as
|
1689
|
+
a result of the transfer.
|
1690
|
+
|
1691
|
+
Example <transfer> query response:
|
1692
|
+
|
1693
|
+
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1694
|
+
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1695
|
+
S: <response>
|
1696
|
+
S: <result code="1000">
|
1697
|
+
S: <msg>Command completed successfully</msg>
|
1698
|
+
S: </result>
|
1699
|
+
S: <resData>
|
1700
|
+
S: <obj:trnData xmlns:obj="urn:ietf:params:xml:ns:obj">
|
1701
|
+
S: <obj:name>example</obj:name>
|
1702
|
+
S: <obj:trStatus>pending</obj:trStatus>
|
1703
|
+
S: <obj:reID>ClientX</obj:reID>
|
1704
|
+
S: <obj:reDate>2000-06-08T22:00:00.0Z</obj:reDate>
|
1705
|
+
S: <obj:acID>ClientY</obj:acID>
|
1706
|
+
S: <obj:acDate>2000-06-13T22:00:00.0Z</obj:acDate>
|
1707
|
+
S: <obj:exDate>2002-09-08T22:00:00.0Z</obj:exDate>
|
1708
|
+
S: </obj:trnData>
|
1709
|
+
S: </resData>
|
1710
|
+
S: <trID>
|
1711
|
+
S: <clTRID>ABC-12346</clTRID>
|
1712
|
+
S: <svTRID>54322-XYZ</svTRID>
|
1713
|
+
S: </trID>
|
1714
|
+
S: </response>
|
1715
|
+
S:</epp>
|
1716
|
+
|
1717
|
+
The EPP <transfer> command provides a query operation that allows a
|
1718
|
+
client to determine real-time status of pending and completed
|
1719
|
+
transfer requests. This action SHOULD be limited to authorized
|
1720
|
+
clients; restricting queries to the requesting and responding clients
|
1721
|
+
is RECOMMENDED. Object transfer MAY be unavailable or limited by
|
1722
|
+
object-specific policies.
|
1723
|
+
|
1724
|
+
2.9.3. Object Transform Commands
|
1725
|
+
|
1726
|
+
EPP provides five commands to transform objects: <create> to create
|
1727
|
+
an instance of an object with a server, <delete> to remove an
|
1728
|
+
instance of an object from a server, <renew> to extend the validity
|
1729
|
+
period of an object, <transfer> to manage changes in client
|
1730
|
+
sponsorship of an object, and <update> to change information
|
1731
|
+
associated with an object.
|
1732
|
+
|
1733
|
+
|
1734
|
+
|
1735
|
+
|
1736
|
+
|
1737
|
+
|
1738
|
+
Hollenbeck Standards Track [Page 31]
|
1739
|
+
|
1740
|
+
RFC 5730 EPP August 2009
|
1741
|
+
|
1742
|
+
|
1743
|
+
2.9.3.1. EPP <create> Command
|
1744
|
+
|
1745
|
+
The EPP <create> command is used to create an instance of an object.
|
1746
|
+
An object can be created for an indefinite period of time, or an
|
1747
|
+
object can be created for a specific validity period. The EPP
|
1748
|
+
mapping for an object MUST describe the status of an object with
|
1749
|
+
respect to time in order to include expected client and server
|
1750
|
+
behavior if a validity period is used.
|
1751
|
+
|
1752
|
+
The elements needed to identify an object and associated attributes
|
1753
|
+
are object-specific, so the child elements of the <create> command
|
1754
|
+
are specified using the EPP extension framework. In addition to the
|
1755
|
+
standard EPP command elements, the <create> command contains the
|
1756
|
+
following child elements:
|
1757
|
+
|
1758
|
+
- An object-specific <obj:create> element that identifies the object
|
1759
|
+
to be created and the elements that are required to create the
|
1760
|
+
object.
|
1761
|
+
|
1762
|
+
Example <create> command:
|
1763
|
+
|
1764
|
+
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1765
|
+
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1766
|
+
C: <command>
|
1767
|
+
C: <create>
|
1768
|
+
C: <obj:create xmlns:obj="urn:ietf:params:xml:ns:obj">
|
1769
|
+
C: <!-- Object-specific elements. -->
|
1770
|
+
C: </obj:create>
|
1771
|
+
C: </create>
|
1772
|
+
C: <clTRID>ABC-12345</clTRID>
|
1773
|
+
C: </command>
|
1774
|
+
C:</epp>
|
1775
|
+
|
1776
|
+
When a <create> command has been processed successfully, a server MAY
|
1777
|
+
respond with an EPP <resData> element that MUST contain a child
|
1778
|
+
element that identifies the object namespace. The child elements of
|
1779
|
+
the <resData> element are object-specific.
|
1780
|
+
|
1781
|
+
Example <create> response with <resData>:
|
1782
|
+
|
1783
|
+
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1784
|
+
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1785
|
+
S: <response>
|
1786
|
+
S: <result code="1000">
|
1787
|
+
S: <msg>Command completed successfully</msg>
|
1788
|
+
S: </result>
|
1789
|
+
S: <resData>
|
1790
|
+
S: <obj:creData xmlns:obj="urn:ietf:params:xml:ns:obj">
|
1791
|
+
|
1792
|
+
|
1793
|
+
|
1794
|
+
Hollenbeck Standards Track [Page 32]
|
1795
|
+
|
1796
|
+
RFC 5730 EPP August 2009
|
1797
|
+
|
1798
|
+
|
1799
|
+
S: <!-- Object-specific elements. -->
|
1800
|
+
S: </obj:creData>
|
1801
|
+
S: </resData>
|
1802
|
+
S: <trID>
|
1803
|
+
S: <clTRID>ABC-12345</clTRID>
|
1804
|
+
S: <svTRID>54321-XYZ</svTRID>
|
1805
|
+
S: </trID>
|
1806
|
+
S: </response>
|
1807
|
+
S:</epp>
|
1808
|
+
|
1809
|
+
The EPP <create> command is used to create an instance of an object.
|
1810
|
+
This action SHOULD be limited to authorized clients and MAY be
|
1811
|
+
restricted on a per-client basis.
|
1812
|
+
|
1813
|
+
2.9.3.2. EPP <delete> Command
|
1814
|
+
|
1815
|
+
The EPP <delete> command is used to remove an instance of an existing
|
1816
|
+
object. The elements needed to identify an object are object-
|
1817
|
+
specific, so the child elements of the <delete> command are specified
|
1818
|
+
using the EPP extension framework. In addition to the standard EPP
|
1819
|
+
command elements, the <delete> command contains the following child
|
1820
|
+
elements:
|
1821
|
+
|
1822
|
+
- An object-specific <obj:delete> element that identifies the object
|
1823
|
+
to be deleted.
|
1824
|
+
|
1825
|
+
Example <delete> command:
|
1826
|
+
|
1827
|
+
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1828
|
+
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1829
|
+
C: <command>
|
1830
|
+
C: <delete>
|
1831
|
+
C: <obj:delete xmlns:obj="urn:ietf:params:xml:ns:obj">
|
1832
|
+
C: <!-- Object-specific elements. -->
|
1833
|
+
C: </obj:delete>
|
1834
|
+
C: </delete>
|
1835
|
+
C: <clTRID>ABC-12346</clTRID>
|
1836
|
+
C: </command>
|
1837
|
+
C:</epp>
|
1838
|
+
|
1839
|
+
When a <delete> command has been processed successfully, a server MAY
|
1840
|
+
respond with an EPP <resData> element that MUST contain a child
|
1841
|
+
element that identifies the object namespace. The child elements of
|
1842
|
+
the <resData> element are object-specific.
|
1843
|
+
|
1844
|
+
|
1845
|
+
|
1846
|
+
|
1847
|
+
|
1848
|
+
|
1849
|
+
|
1850
|
+
Hollenbeck Standards Track [Page 33]
|
1851
|
+
|
1852
|
+
RFC 5730 EPP August 2009
|
1853
|
+
|
1854
|
+
|
1855
|
+
Example <delete> response without <resData>:
|
1856
|
+
|
1857
|
+
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1858
|
+
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1859
|
+
S: <response>
|
1860
|
+
S: <result code="1000">
|
1861
|
+
S: <msg>Command completed successfully</msg>
|
1862
|
+
S: </result>
|
1863
|
+
S: <trID>
|
1864
|
+
S: <clTRID>ABC-12346</clTRID>
|
1865
|
+
S: <svTRID>54322-XYZ</svTRID>
|
1866
|
+
S: </trID>
|
1867
|
+
S: </response>
|
1868
|
+
S:</epp>
|
1869
|
+
|
1870
|
+
The EPP <delete> command is used to remove an instance of an existing
|
1871
|
+
object. This action SHOULD be limited to authorized clients;
|
1872
|
+
restricting this action to the sponsoring client is RECOMMENDED.
|
1873
|
+
|
1874
|
+
2.9.3.3. EPP <renew> Command
|
1875
|
+
|
1876
|
+
The EPP <renew> command is used to extend the validity period of an
|
1877
|
+
existing object. The elements needed to identify and extend the
|
1878
|
+
validity period of an object are object-specific, so the child
|
1879
|
+
elements of the <renew> command are specified using the EPP extension
|
1880
|
+
framework. In addition to the standard EPP command elements, the
|
1881
|
+
<renew> command contains the following child elements:
|
1882
|
+
|
1883
|
+
- An object-specific <obj:renew> element that identifies the object
|
1884
|
+
to be renewed and the elements that are required to extend the
|
1885
|
+
validity period of the object.
|
1886
|
+
|
1887
|
+
Example <renew> command:
|
1888
|
+
|
1889
|
+
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1890
|
+
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1891
|
+
C: <command>
|
1892
|
+
C: <renew>
|
1893
|
+
C: <obj:renew xmlns:obj="urn:ietf:params:xml:ns:obj">
|
1894
|
+
C: <!-- Object-specific elements. -->
|
1895
|
+
C: </obj:renew>
|
1896
|
+
C: </renew>
|
1897
|
+
C: <clTRID>ABC-12346</clTRID>
|
1898
|
+
C: </command>
|
1899
|
+
C:</epp>
|
1900
|
+
|
1901
|
+
|
1902
|
+
|
1903
|
+
|
1904
|
+
|
1905
|
+
|
1906
|
+
Hollenbeck Standards Track [Page 34]
|
1907
|
+
|
1908
|
+
RFC 5730 EPP August 2009
|
1909
|
+
|
1910
|
+
|
1911
|
+
When a <renew> command has been processed successfully, a server MAY
|
1912
|
+
respond with an EPP <resData> element that MUST contain a child
|
1913
|
+
element that identifies the object namespace. The child elements of
|
1914
|
+
the <resData> element are object-specific.
|
1915
|
+
|
1916
|
+
Example <renew> response with <resData>:
|
1917
|
+
|
1918
|
+
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
1919
|
+
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
1920
|
+
S: <response>
|
1921
|
+
S: <result code="1000">
|
1922
|
+
S: <msg>Command completed successfully</msg>
|
1923
|
+
S: </result>
|
1924
|
+
S: <resData>
|
1925
|
+
S: <obj:renData xmlns:obj="urn:ietf:params:xml:ns:obj">
|
1926
|
+
S: <!-- Object-specific elements. -->
|
1927
|
+
S: </obj:renData>
|
1928
|
+
S: </resData>
|
1929
|
+
S: <trID>
|
1930
|
+
S: <clTRID>ABC-12346</clTRID>
|
1931
|
+
S: <svTRID>54322-XYZ</svTRID>
|
1932
|
+
S: </trID>
|
1933
|
+
S: </response>
|
1934
|
+
S:</epp>
|
1935
|
+
|
1936
|
+
The EPP <renew> command is used to extend the validity period of an
|
1937
|
+
existing object. This action SHOULD be limited to authorized
|
1938
|
+
clients; restricting this action to the sponsoring client is
|
1939
|
+
RECOMMENDED. Object renewal MAY be unavailable or limited by object-
|
1940
|
+
specific policies.
|
1941
|
+
|
1942
|
+
2.9.3.4. EPP <transfer> Command
|
1943
|
+
|
1944
|
+
The EPP <transfer> command is used to manage changes in client
|
1945
|
+
sponsorship of an existing object. Clients can initiate a transfer
|
1946
|
+
request, cancel a transfer request, approve a transfer request, and
|
1947
|
+
reject a transfer request using the "op" command attribute.
|
1948
|
+
|
1949
|
+
A client who wishes to assume sponsorship of a known object from
|
1950
|
+
another client uses the <transfer> command with the value of the "op"
|
1951
|
+
attribute set to "request". Once a transfer has been requested, the
|
1952
|
+
same client can cancel the request using a <transfer> command with
|
1953
|
+
the value of the "op" attribute set to "cancel". A request to cancel
|
1954
|
+
the transfer MUST be sent to the server before the current sponsoring
|
1955
|
+
client either approves or rejects the transfer request and before the
|
1956
|
+
server automatically processes the request due to responding client
|
1957
|
+
inactivity.
|
1958
|
+
|
1959
|
+
|
1960
|
+
|
1961
|
+
|
1962
|
+
Hollenbeck Standards Track [Page 35]
|
1963
|
+
|
1964
|
+
RFC 5730 EPP August 2009
|
1965
|
+
|
1966
|
+
|
1967
|
+
Once a transfer request has been received by the server, the server
|
1968
|
+
MUST notify the current sponsoring client of the requested transfer
|
1969
|
+
either by queuing a service message for retrieval via the <poll>
|
1970
|
+
command or by using an out-of-band mechanism to inform the client of
|
1971
|
+
the request. The current status of a pending <transfer> command for
|
1972
|
+
any object can be found using the <transfer> query command. Transfer
|
1973
|
+
service messages MUST include the object-specific elements specified
|
1974
|
+
for <transfer> command responses.
|
1975
|
+
|
1976
|
+
The current sponsoring client MAY explicitly approve or reject the
|
1977
|
+
transfer request. The client can approve the request using a
|
1978
|
+
<transfer> command with the value of the "op" attribute set to
|
1979
|
+
"approve". The client can reject the request using a <transfer>
|
1980
|
+
command with the value of the "op" attribute set to "reject".
|
1981
|
+
|
1982
|
+
A server MAY automatically approve or reject all transfer requests
|
1983
|
+
that are not explicitly approved or rejected by the current
|
1984
|
+
sponsoring client within a fixed amount of time. The amount of time
|
1985
|
+
to wait for explicit action and the default server behavior are local
|
1986
|
+
matters not specified by EPP, but they SHOULD be documented in a
|
1987
|
+
server-specific profile document that describes default server
|
1988
|
+
behavior for client information.
|
1989
|
+
|
1990
|
+
Objects eligible for transfer MUST have associated authorization
|
1991
|
+
information that MUST be provided to complete a <transfer> command.
|
1992
|
+
The type of authorization information required is object-specific;
|
1993
|
+
passwords or more complex mechanisms based on public key cryptography
|
1994
|
+
are typical.
|
1995
|
+
|
1996
|
+
The elements needed to identify and complete the transfer of an
|
1997
|
+
object are object-specific, so the child elements of the <transfer>
|
1998
|
+
command are specified using the EPP extension framework. In addition
|
1999
|
+
to the standard EPP command elements, the <transfer> command contains
|
2000
|
+
the following child elements:
|
2001
|
+
|
2002
|
+
- An object-specific <obj:transfer> element that identifies the
|
2003
|
+
object to be transferred and the elements that are required to
|
2004
|
+
process the transfer command.
|
2005
|
+
|
2006
|
+
Example <transfer> command:
|
2007
|
+
|
2008
|
+
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2009
|
+
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
2010
|
+
C: <command>
|
2011
|
+
C: <transfer op="request">
|
2012
|
+
C: <obj:transfer xmlns:obj="urn:ietf:params:xml:ns:obj">
|
2013
|
+
C: <!-- Object-specific elements. -->
|
2014
|
+
C: </obj:transfer>
|
2015
|
+
|
2016
|
+
|
2017
|
+
|
2018
|
+
Hollenbeck Standards Track [Page 36]
|
2019
|
+
|
2020
|
+
RFC 5730 EPP August 2009
|
2021
|
+
|
2022
|
+
|
2023
|
+
C: </transfer>
|
2024
|
+
C: <clTRID>ABC-12346</clTRID>
|
2025
|
+
C: </command>
|
2026
|
+
C:</epp>
|
2027
|
+
|
2028
|
+
When a <transfer> command has been processed successfully, a server
|
2029
|
+
MUST respond with an EPP <resData> element that MUST contain a child
|
2030
|
+
element that identifies the object namespace. The child elements of
|
2031
|
+
the <resData> element are object-specific, but they MUST include
|
2032
|
+
elements that identify the object, the status of the transfer, the
|
2033
|
+
identifier of the client that requested the transfer, the date and
|
2034
|
+
time that the request was made, the identifier of the client that is
|
2035
|
+
authorized to act on the request, the date and time by which an
|
2036
|
+
action is expected, and an OPTIONAL date and time noting changes in
|
2037
|
+
the object's validity period (if applicable) that occur as a result
|
2038
|
+
of the transfer.
|
2039
|
+
|
2040
|
+
Example <transfer> response with <resData>:
|
2041
|
+
|
2042
|
+
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2043
|
+
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
2044
|
+
S: <response>
|
2045
|
+
S: <result code="1001">
|
2046
|
+
S: <msg>Command completed successfully; action pending</msg>
|
2047
|
+
S: </result>
|
2048
|
+
S: <resData>
|
2049
|
+
S: <obj:trnData xmlns:obj="urn:ietf:params:xml:ns:obj">
|
2050
|
+
S: <obj:name>example</obj:name>
|
2051
|
+
S: <obj:trStatus>pending</obj:trStatus>
|
2052
|
+
S: <obj:reID>ClientX</obj:reID>
|
2053
|
+
S: <obj:reDate>2000-06-08T22:00:00.0Z</obj:reDate>
|
2054
|
+
S: <obj:acID>ClientY</obj:acID>
|
2055
|
+
S: <obj:acDate>2000-06-13T22:00:00.0Z</obj:acDate>
|
2056
|
+
S: <obj:exDate>2002-09-08T22:00:00.0Z</obj:exDate>
|
2057
|
+
S: </obj:trnData>
|
2058
|
+
S: </resData>
|
2059
|
+
S: <trID>
|
2060
|
+
S: <clTRID>ABC-12346</clTRID>
|
2061
|
+
S: <svTRID>54322-XYZ</svTRID>
|
2062
|
+
S: </trID>
|
2063
|
+
S: </response>
|
2064
|
+
S:</epp>
|
2065
|
+
|
2066
|
+
The EPP <transfer> command is used to manage changes in client
|
2067
|
+
sponsorship of an existing object. This action SHOULD be limited to
|
2068
|
+
authorized clients; restricting <transfer> requests to a client other
|
2069
|
+
than the current sponsoring client, <transfer> approval requests to
|
2070
|
+
|
2071
|
+
|
2072
|
+
|
2073
|
+
|
2074
|
+
Hollenbeck Standards Track [Page 37]
|
2075
|
+
|
2076
|
+
RFC 5730 EPP August 2009
|
2077
|
+
|
2078
|
+
|
2079
|
+
the current sponsoring client, and <transfer> cancellation requests
|
2080
|
+
to the original requesting client is RECOMMENDED. Object transfer
|
2081
|
+
MAY be unavailable or limited by object-specific policies.
|
2082
|
+
|
2083
|
+
2.9.3.5. EPP <update> Command
|
2084
|
+
|
2085
|
+
The EPP <update> command is used to change information associated
|
2086
|
+
with an existing object. The elements needed to identify and modify
|
2087
|
+
an object are object-specific, so the child elements of the <update>
|
2088
|
+
command are specified using the EPP extension framework. In addition
|
2089
|
+
to the standard EPP command elements, the <update> command contains
|
2090
|
+
the following child elements:
|
2091
|
+
|
2092
|
+
- An object-specific <obj:update> element that identifies the object
|
2093
|
+
to be updated and the elements that are required to modify the
|
2094
|
+
object. Object-specific elements MUST identify values to be
|
2095
|
+
added, values to be removed, or values to be changed.
|
2096
|
+
|
2097
|
+
Example <update> command:
|
2098
|
+
|
2099
|
+
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2100
|
+
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
2101
|
+
C: <command>
|
2102
|
+
C: <update>
|
2103
|
+
C: <obj:update xmlns:obj="urn:ietf:params:xml:ns:obj">
|
2104
|
+
C: <!-- Object-specific elements. -->
|
2105
|
+
C: </obj:update>
|
2106
|
+
C: </update>
|
2107
|
+
C: <clTRID>ABC-12346</clTRID>
|
2108
|
+
C: </command>
|
2109
|
+
C:</epp>
|
2110
|
+
|
2111
|
+
When an <update> command has been processed successfully, a server
|
2112
|
+
MAY respond with an EPP <resData> element that MUST contain a child
|
2113
|
+
element that identifies the object namespace. The child elements of
|
2114
|
+
the <resData> element are object-specific.
|
2115
|
+
|
2116
|
+
Example <update> response without <resData>:
|
2117
|
+
|
2118
|
+
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2119
|
+
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
2120
|
+
S: <response>
|
2121
|
+
S: <result code="1000">
|
2122
|
+
S: <msg>Command completed successfully</msg>
|
2123
|
+
S: </result>
|
2124
|
+
S: <trID>
|
2125
|
+
S: <clTRID>ABC-12346</clTRID>
|
2126
|
+
S: <svTRID>54322-XYZ</svTRID>
|
2127
|
+
|
2128
|
+
|
2129
|
+
|
2130
|
+
Hollenbeck Standards Track [Page 38]
|
2131
|
+
|
2132
|
+
RFC 5730 EPP August 2009
|
2133
|
+
|
2134
|
+
|
2135
|
+
S: </trID>
|
2136
|
+
S: </response>
|
2137
|
+
S:</epp>
|
2138
|
+
|
2139
|
+
The EPP <update> command is used to change information associated
|
2140
|
+
with an existing object. This action SHOULD be limited to authorized
|
2141
|
+
clients; restricting this action to the sponsoring client is
|
2142
|
+
RECOMMENDED.
|
2143
|
+
|
2144
|
+
3. Result Codes
|
2145
|
+
|
2146
|
+
EPP result codes are based on the theory of reply codes described in
|
2147
|
+
section 4.2.1 of [RFC5321]. EPP uses four decimal digits to describe
|
2148
|
+
the success or failure of each EPP command. Each of the digits of
|
2149
|
+
the reply have special significance.
|
2150
|
+
|
2151
|
+
The first digit denotes command success or failure. The second digit
|
2152
|
+
denotes the response category, such as command syntax or security.
|
2153
|
+
The third and fourth digits provide explicit response detail within
|
2154
|
+
each response category.
|
2155
|
+
|
2156
|
+
There are two values for the first digit of the reply code:
|
2157
|
+
|
2158
|
+
1yzz Positive completion reply. The command was accepted and
|
2159
|
+
processed by the system without error.
|
2160
|
+
|
2161
|
+
2yzz Negative completion reply. The command was not accepted, and
|
2162
|
+
the requested action did not occur.
|
2163
|
+
|
2164
|
+
The second digit groups responses into one of six specific
|
2165
|
+
categories:
|
2166
|
+
|
2167
|
+
x0zz Protocol Syntax
|
2168
|
+
|
2169
|
+
x1zz Implementation-specific Rules
|
2170
|
+
|
2171
|
+
x2zz Security
|
2172
|
+
|
2173
|
+
x3zz Data Management
|
2174
|
+
|
2175
|
+
x4zz Server System
|
2176
|
+
|
2177
|
+
x5zz Connection Management
|
2178
|
+
|
2179
|
+
The third and fourth digits provide response detail within the
|
2180
|
+
categories defined by the first and second digits. The complete list
|
2181
|
+
of valid result codes is enumerated below and in the normative
|
2182
|
+
schema.
|
2183
|
+
|
2184
|
+
|
2185
|
+
|
2186
|
+
Hollenbeck Standards Track [Page 39]
|
2187
|
+
|
2188
|
+
RFC 5730 EPP August 2009
|
2189
|
+
|
2190
|
+
|
2191
|
+
Every EPP response MUST include a result code and a human-readable
|
2192
|
+
description of the result code. The language used to represent the
|
2193
|
+
description MAY be identified using an instance of the "lang"
|
2194
|
+
attribute within the <msg> element. If not specified, the default
|
2195
|
+
language is English, identified as "en". A description of the
|
2196
|
+
structure of valid values for the "lang" attribute is described in
|
2197
|
+
[RFC4646].
|
2198
|
+
|
2199
|
+
Response text MAY be translated into other languages, though the
|
2200
|
+
translation MUST preserve the meaning of the code as described here.
|
2201
|
+
Response code values MUST NOT be changed when translating text.
|
2202
|
+
|
2203
|
+
Response text in the table below is enclosed in quotes to clearly
|
2204
|
+
mark the beginning and ending of each response string. Quotes MUST
|
2205
|
+
NOT be used to delimit these strings when returning response text via
|
2206
|
+
the protocol.
|
2207
|
+
|
2208
|
+
Successful command completion responses:
|
2209
|
+
|
2210
|
+
Code Response text in English
|
2211
|
+
|
2212
|
+
____ ________________________
|
2213
|
+
|
2214
|
+
1000 "Command completed successfully"
|
2215
|
+
|
2216
|
+
This is the usual response code for a successfully
|
2217
|
+
completed command that is not addressed by any other
|
2218
|
+
1xxx-series response code.
|
2219
|
+
|
2220
|
+
1001 "Command completed successfully; action pending"
|
2221
|
+
|
2222
|
+
This response code MUST be returned when responding to a
|
2223
|
+
command that requires offline activity before the
|
2224
|
+
requested action can be completed. See Section 2 for a
|
2225
|
+
description of other processing requirements.
|
2226
|
+
|
2227
|
+
1300 "Command completed successfully; no messages"
|
2228
|
+
|
2229
|
+
This response code MUST be returned when responding to a
|
2230
|
+
<poll> request command and the server message queue is
|
2231
|
+
empty.
|
2232
|
+
|
2233
|
+
1301 "Command completed successfully; ack to dequeue"
|
2234
|
+
|
2235
|
+
This response code MUST be returned when responding to a
|
2236
|
+
<poll> request command and a message has been retrieved
|
2237
|
+
from the server message queue.
|
2238
|
+
|
2239
|
+
|
2240
|
+
|
2241
|
+
|
2242
|
+
Hollenbeck Standards Track [Page 40]
|
2243
|
+
|
2244
|
+
RFC 5730 EPP August 2009
|
2245
|
+
|
2246
|
+
|
2247
|
+
1500 "Command completed successfully; ending session"
|
2248
|
+
|
2249
|
+
This response code MUST be returned when responding to a
|
2250
|
+
successful <logout> command.
|
2251
|
+
|
2252
|
+
Command error responses:
|
2253
|
+
|
2254
|
+
Code Response text in English
|
2255
|
+
|
2256
|
+
____ ________________________
|
2257
|
+
|
2258
|
+
2000 "Unknown command"
|
2259
|
+
|
2260
|
+
This response code MUST be returned when a server receives
|
2261
|
+
a command element that is not defined by EPP.
|
2262
|
+
|
2263
|
+
2001 "Command syntax error"
|
2264
|
+
|
2265
|
+
This response code MUST be returned when a server receives
|
2266
|
+
an improperly formed command element.
|
2267
|
+
|
2268
|
+
2002 "Command use error"
|
2269
|
+
|
2270
|
+
This response code MUST be returned when a server receives
|
2271
|
+
a properly formed command element but the command cannot
|
2272
|
+
be executed due to a sequencing or context error. For
|
2273
|
+
example, a <logout> command cannot be executed without
|
2274
|
+
having first completed a <login> command.
|
2275
|
+
|
2276
|
+
2003 "Required parameter missing"
|
2277
|
+
|
2278
|
+
This response code MUST be returned when a server receives
|
2279
|
+
a command for which a required parameter value has not
|
2280
|
+
been provided.
|
2281
|
+
|
2282
|
+
2004 "Parameter value range error"
|
2283
|
+
|
2284
|
+
This response code MUST be returned when a server receives
|
2285
|
+
a command parameter whose value is outside the range of
|
2286
|
+
values specified by the protocol. The error value SHOULD
|
2287
|
+
be returned via a <value> element in the EPP response.
|
2288
|
+
|
2289
|
+
2005 "Parameter value syntax error"
|
2290
|
+
|
2291
|
+
This response code MUST be returned when a server receives
|
2292
|
+
a command containing a parameter whose value is improperly
|
2293
|
+
formed. The error value SHOULD be returned via a <value>
|
2294
|
+
element in the EPP response.
|
2295
|
+
|
2296
|
+
|
2297
|
+
|
2298
|
+
Hollenbeck Standards Track [Page 41]
|
2299
|
+
|
2300
|
+
RFC 5730 EPP August 2009
|
2301
|
+
|
2302
|
+
|
2303
|
+
2100 "Unimplemented protocol version"
|
2304
|
+
|
2305
|
+
This response code MUST be returned when a server receives
|
2306
|
+
a command element specifying a protocol version that is
|
2307
|
+
not implemented by the server.
|
2308
|
+
|
2309
|
+
2101 "Unimplemented command"
|
2310
|
+
|
2311
|
+
This response code MUST be returned when a server receives
|
2312
|
+
a valid EPP command element that is not implemented by the
|
2313
|
+
server. For example, a <transfer> command can be
|
2314
|
+
unimplemented for certain object types.
|
2315
|
+
|
2316
|
+
2102 "Unimplemented option"
|
2317
|
+
|
2318
|
+
This response code MUST be returned when a server receives
|
2319
|
+
a valid EPP command element that contains a protocol
|
2320
|
+
option that is not implemented by the server.
|
2321
|
+
|
2322
|
+
2103 "Unimplemented extension"
|
2323
|
+
|
2324
|
+
This response code MUST be returned when a server receives
|
2325
|
+
a valid EPP command element that contains a protocol
|
2326
|
+
command extension that is not implemented by the server.
|
2327
|
+
|
2328
|
+
2104 "Billing failure"
|
2329
|
+
|
2330
|
+
This response code MUST be returned when a server attempts
|
2331
|
+
to execute a billable operation and the command cannot be
|
2332
|
+
completed due to a client-billing failure.
|
2333
|
+
|
2334
|
+
2105 "Object is not eligible for renewal"
|
2335
|
+
|
2336
|
+
This response code MUST be returned when a client attempts
|
2337
|
+
to <renew> an object that is not eligible for renewal in
|
2338
|
+
accordance with server policy.
|
2339
|
+
|
2340
|
+
2106 "Object is not eligible for transfer"
|
2341
|
+
|
2342
|
+
This response code MUST be returned when a client attempts
|
2343
|
+
to <transfer> an object that is not eligible for transfer
|
2344
|
+
in accordance with server policy.
|
2345
|
+
|
2346
|
+
2200 "Authentication error"
|
2347
|
+
|
2348
|
+
This response code MUST be returned when a server notes an
|
2349
|
+
error when validating client credentials.
|
2350
|
+
|
2351
|
+
|
2352
|
+
|
2353
|
+
|
2354
|
+
Hollenbeck Standards Track [Page 42]
|
2355
|
+
|
2356
|
+
RFC 5730 EPP August 2009
|
2357
|
+
|
2358
|
+
|
2359
|
+
2201 "Authorization error"
|
2360
|
+
|
2361
|
+
This response code MUST be returned when a server notes a
|
2362
|
+
client-authorization error when executing a command. This
|
2363
|
+
error is used to note that a client lacks privileges to
|
2364
|
+
execute the requested command.
|
2365
|
+
|
2366
|
+
2202 "Invalid authorization information"
|
2367
|
+
|
2368
|
+
This response code MUST be returned when a server receives
|
2369
|
+
invalid command authorization information when attempting
|
2370
|
+
to confirm authorization to execute a command. This error
|
2371
|
+
is used to note that a client has the privileges required
|
2372
|
+
to execute the requested command, but the authorization
|
2373
|
+
information provided by the client does not match the
|
2374
|
+
authorization information archived by the server.
|
2375
|
+
|
2376
|
+
2300 "Object pending transfer"
|
2377
|
+
|
2378
|
+
This response code MUST be returned when a server receives
|
2379
|
+
a command to transfer of an object that is pending
|
2380
|
+
transfer due to an earlier transfer request.
|
2381
|
+
|
2382
|
+
2301 "Object not pending transfer"
|
2383
|
+
|
2384
|
+
This response code MUST be returned when a server receives
|
2385
|
+
a command to confirm, reject, or cancel the transfer of an
|
2386
|
+
object when no command has been made to transfer the
|
2387
|
+
object.
|
2388
|
+
|
2389
|
+
2302 "Object exists"
|
2390
|
+
|
2391
|
+
This response code MUST be returned when a server receives
|
2392
|
+
a command to create an object that already exists in the
|
2393
|
+
repository.
|
2394
|
+
|
2395
|
+
2303 "Object does not exist"
|
2396
|
+
|
2397
|
+
This response code MUST be returned when a server receives
|
2398
|
+
a command to query or transform an object that does not
|
2399
|
+
exist in the repository.
|
2400
|
+
|
2401
|
+
2304 "Object status prohibits operation"
|
2402
|
+
|
2403
|
+
This response code MUST be returned when a server receives
|
2404
|
+
a command to transform an object that cannot be completed
|
2405
|
+
due to server policy or business practices. For example,
|
2406
|
+
a server can disallow <transfer> commands under terms and
|
2407
|
+
|
2408
|
+
|
2409
|
+
|
2410
|
+
Hollenbeck Standards Track [Page 43]
|
2411
|
+
|
2412
|
+
RFC 5730 EPP August 2009
|
2413
|
+
|
2414
|
+
|
2415
|
+
conditions that are matters of local policy, or the server
|
2416
|
+
might have received a <delete> command for an object whose
|
2417
|
+
status prohibits deletion.
|
2418
|
+
|
2419
|
+
2305 "Object association prohibits operation"
|
2420
|
+
|
2421
|
+
This response code MUST be returned when a server receives
|
2422
|
+
a command to transform an object that cannot be completed
|
2423
|
+
due to dependencies on other objects that are associated
|
2424
|
+
with the target object. For example, a server can
|
2425
|
+
disallow <delete> commands while an object has active
|
2426
|
+
associations with other objects.
|
2427
|
+
|
2428
|
+
2306 "Parameter value policy error"
|
2429
|
+
|
2430
|
+
This response code MUST be returned when a server receives
|
2431
|
+
a command containing a parameter value that is
|
2432
|
+
syntactically valid but semantically invalid due to local
|
2433
|
+
policy. For example, the server can support a subset of a
|
2434
|
+
range of valid protocol parameter values. The error value
|
2435
|
+
SHOULD be returned via a <value> element in the EPP
|
2436
|
+
response.
|
2437
|
+
|
2438
|
+
2307 "Unimplemented object service"
|
2439
|
+
|
2440
|
+
This response code MUST be returned when a server receives
|
2441
|
+
a command to operate on an object service that is not
|
2442
|
+
supported by the server.
|
2443
|
+
|
2444
|
+
2308 "Data management policy violation"
|
2445
|
+
|
2446
|
+
This response code MUST be returned when a server receives
|
2447
|
+
a command whose execution results in a violation of server
|
2448
|
+
data management policies. For example, removing all
|
2449
|
+
attribute values or object associations from an object
|
2450
|
+
might be a violation of a server's data management
|
2451
|
+
policies.
|
2452
|
+
|
2453
|
+
2400 "Command failed"
|
2454
|
+
|
2455
|
+
This response code MUST be returned when a server is
|
2456
|
+
unable to execute a command due to an internal server
|
2457
|
+
error that is not related to the protocol. The failure
|
2458
|
+
can be transient. The server MUST keep any ongoing
|
2459
|
+
session active.
|
2460
|
+
|
2461
|
+
|
2462
|
+
|
2463
|
+
|
2464
|
+
|
2465
|
+
|
2466
|
+
Hollenbeck Standards Track [Page 44]
|
2467
|
+
|
2468
|
+
RFC 5730 EPP August 2009
|
2469
|
+
|
2470
|
+
|
2471
|
+
2500 "Command failed; server closing connection"
|
2472
|
+
|
2473
|
+
This response code MUST be returned when a server receives
|
2474
|
+
a command that cannot be completed due to an internal
|
2475
|
+
server error that is not related to the protocol. The
|
2476
|
+
failure is not transient and will cause other commands to
|
2477
|
+
fail as well. The server MUST end the active session and
|
2478
|
+
close the existing connection.
|
2479
|
+
|
2480
|
+
2501 "Authentication error; server closing connection"
|
2481
|
+
|
2482
|
+
This response code MUST be returned when a server notes an
|
2483
|
+
error when validating client credentials and a
|
2484
|
+
server-defined limit on the number of allowable failures
|
2485
|
+
has been exceeded. The server MUST close the existing
|
2486
|
+
connection.
|
2487
|
+
|
2488
|
+
2502 "Session limit exceeded; server closing connection"
|
2489
|
+
|
2490
|
+
This response code MUST be returned when a server receives
|
2491
|
+
a <login> command and the command cannot be completed
|
2492
|
+
because the client has exceeded a system-defined limit on
|
2493
|
+
the number of sessions that the client can establish. It
|
2494
|
+
might be possible to establish a session by ending
|
2495
|
+
existing unused sessions and closing inactive connections.
|
2496
|
+
|
2497
|
+
4. Formal Syntax
|
2498
|
+
|
2499
|
+
EPP is specified in XML Schema notation. The formal syntax presented
|
2500
|
+
here is a complete schema representation of EPP suitable for
|
2501
|
+
automated validation of EPP XML instances.
|
2502
|
+
|
2503
|
+
Two schemas are presented here. The first schema is the base EPP
|
2504
|
+
schema. The second schema defines elements and structures that can
|
2505
|
+
be used by both the base EPP schema and object mapping schema. The
|
2506
|
+
BEGIN and END tags are not part of the schema; they are used to note
|
2507
|
+
the beginning and ending of the schema for URI registration purposes.
|
2508
|
+
|
2509
|
+
4.1. Base Schema
|
2510
|
+
|
2511
|
+
Copyright (c) 2009 IETF Trust and the persons identified as authors
|
2512
|
+
of the code. All rights reserved.
|
2513
|
+
|
2514
|
+
Redistribution and use in source and binary forms, with or without
|
2515
|
+
modification, are permitted provided that the following conditions
|
2516
|
+
are met:
|
2517
|
+
|
2518
|
+
|
2519
|
+
|
2520
|
+
|
2521
|
+
|
2522
|
+
Hollenbeck Standards Track [Page 45]
|
2523
|
+
|
2524
|
+
RFC 5730 EPP August 2009
|
2525
|
+
|
2526
|
+
|
2527
|
+
o Redistributions of source code must retain the above copyright
|
2528
|
+
notice, this list of conditions and the following disclaimer.
|
2529
|
+
|
2530
|
+
o Redistributions in binary form must reproduce the above copyright
|
2531
|
+
notice, this list of conditions and the following disclaimer in
|
2532
|
+
the documentation and/or other materials provided with the
|
2533
|
+
distribution.
|
2534
|
+
|
2535
|
+
o Neither the name of Internet Society, IETF or IETF Trust, nor the
|
2536
|
+
names of specific contributors, may be used to endorse or promote
|
2537
|
+
products derived from this software without specific prior written
|
2538
|
+
permission.
|
2539
|
+
|
2540
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
2541
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
2542
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
2543
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
2544
|
+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
2545
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
2546
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
2547
|
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
2548
|
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
2549
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
2550
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
2551
|
+
|
2552
|
+
BEGIN
|
2553
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2554
|
+
|
2555
|
+
<schema targetNamespace="urn:ietf:params:xml:ns:epp-1.0"
|
2556
|
+
xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
|
2557
|
+
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
|
2558
|
+
xmlns="http://www.w3.org/2001/XMLSchema"
|
2559
|
+
elementFormDefault="qualified">
|
2560
|
+
|
2561
|
+
<!--
|
2562
|
+
Import common element types.
|
2563
|
+
-->
|
2564
|
+
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"/>
|
2565
|
+
|
2566
|
+
<annotation>
|
2567
|
+
<documentation>
|
2568
|
+
Extensible Provisioning Protocol v1.0 schema.
|
2569
|
+
</documentation>
|
2570
|
+
</annotation>
|
2571
|
+
|
2572
|
+
<!--
|
2573
|
+
Every EPP XML instance must begin with this element.
|
2574
|
+
-->
|
2575
|
+
|
2576
|
+
|
2577
|
+
|
2578
|
+
Hollenbeck Standards Track [Page 46]
|
2579
|
+
|
2580
|
+
RFC 5730 EPP August 2009
|
2581
|
+
|
2582
|
+
|
2583
|
+
<element name="epp" type="epp:eppType"/>
|
2584
|
+
|
2585
|
+
<!--
|
2586
|
+
An EPP XML instance must contain a greeting, hello, command,
|
2587
|
+
response, or extension.
|
2588
|
+
-->
|
2589
|
+
<complexType name="eppType">
|
2590
|
+
<choice>
|
2591
|
+
<element name="greeting" type="epp:greetingType"/>
|
2592
|
+
<element name="hello"/>
|
2593
|
+
<element name="command" type="epp:commandType"/>
|
2594
|
+
<element name="response" type="epp:responseType"/>
|
2595
|
+
<element name="extension" type="epp:extAnyType"/>
|
2596
|
+
</choice>
|
2597
|
+
</complexType>
|
2598
|
+
|
2599
|
+
<!--
|
2600
|
+
A greeting is sent by a server in response to a client connection
|
2601
|
+
or <hello>.
|
2602
|
+
-->
|
2603
|
+
<complexType name="greetingType">
|
2604
|
+
<sequence>
|
2605
|
+
<element name="svID" type="epp:sIDType"/>
|
2606
|
+
<element name="svDate" type="dateTime"/>
|
2607
|
+
<element name="svcMenu" type="epp:svcMenuType"/>
|
2608
|
+
<element name="dcp" type="epp:dcpType"/>
|
2609
|
+
</sequence>
|
2610
|
+
</complexType>
|
2611
|
+
|
2612
|
+
<!--
|
2613
|
+
Server IDs are strings with minimum and maximum length restrictions.
|
2614
|
+
-->
|
2615
|
+
<simpleType name="sIDType">
|
2616
|
+
<restriction base="normalizedString">
|
2617
|
+
<minLength value="3"/>
|
2618
|
+
<maxLength value="64"/>
|
2619
|
+
</restriction>
|
2620
|
+
</simpleType>
|
2621
|
+
|
2622
|
+
<!--
|
2623
|
+
A server greeting identifies available object services.
|
2624
|
+
-->
|
2625
|
+
<complexType name="svcMenuType">
|
2626
|
+
<sequence>
|
2627
|
+
<element name="version" type="epp:versionType"
|
2628
|
+
maxOccurs="unbounded"/>
|
2629
|
+
<element name="lang" type="language"
|
2630
|
+
maxOccurs="unbounded"/>
|
2631
|
+
|
2632
|
+
|
2633
|
+
|
2634
|
+
Hollenbeck Standards Track [Page 47]
|
2635
|
+
|
2636
|
+
RFC 5730 EPP August 2009
|
2637
|
+
|
2638
|
+
|
2639
|
+
<element name="objURI" type="anyURI"
|
2640
|
+
maxOccurs="unbounded"/>
|
2641
|
+
<element name="svcExtension" type="epp:extURIType"
|
2642
|
+
minOccurs="0"/>
|
2643
|
+
</sequence>
|
2644
|
+
</complexType>
|
2645
|
+
|
2646
|
+
<!--
|
2647
|
+
Data Collection Policy types.
|
2648
|
+
-->
|
2649
|
+
<complexType name="dcpType">
|
2650
|
+
<sequence>
|
2651
|
+
<element name="access" type="epp:dcpAccessType"/>
|
2652
|
+
<element name="statement" type="epp:dcpStatementType"
|
2653
|
+
maxOccurs="unbounded"/>
|
2654
|
+
<element name="expiry" type="epp:dcpExpiryType"
|
2655
|
+
minOccurs="0"/>
|
2656
|
+
</sequence>
|
2657
|
+
</complexType>
|
2658
|
+
|
2659
|
+
<complexType name="dcpAccessType">
|
2660
|
+
<choice>
|
2661
|
+
<element name="all"/>
|
2662
|
+
<element name="none"/>
|
2663
|
+
<element name="null"/>
|
2664
|
+
<element name="other"/>
|
2665
|
+
<element name="personal"/>
|
2666
|
+
<element name="personalAndOther"/>
|
2667
|
+
</choice>
|
2668
|
+
</complexType>
|
2669
|
+
|
2670
|
+
<complexType name="dcpStatementType">
|
2671
|
+
<sequence>
|
2672
|
+
<element name="purpose" type="epp:dcpPurposeType"/>
|
2673
|
+
<element name="recipient" type="epp:dcpRecipientType"/>
|
2674
|
+
<element name="retention" type="epp:dcpRetentionType"/>
|
2675
|
+
</sequence>
|
2676
|
+
</complexType>
|
2677
|
+
|
2678
|
+
<complexType name="dcpPurposeType">
|
2679
|
+
<sequence>
|
2680
|
+
<element name="admin"
|
2681
|
+
minOccurs="0"/>
|
2682
|
+
<element name="contact"
|
2683
|
+
minOccurs="0"/>
|
2684
|
+
<element name="other"
|
2685
|
+
minOccurs="0"/>
|
2686
|
+
<element name="prov"
|
2687
|
+
|
2688
|
+
|
2689
|
+
|
2690
|
+
Hollenbeck Standards Track [Page 48]
|
2691
|
+
|
2692
|
+
RFC 5730 EPP August 2009
|
2693
|
+
|
2694
|
+
|
2695
|
+
minOccurs="0"/>
|
2696
|
+
</sequence>
|
2697
|
+
</complexType>
|
2698
|
+
|
2699
|
+
<complexType name="dcpRecipientType">
|
2700
|
+
<sequence>
|
2701
|
+
<element name="other"
|
2702
|
+
minOccurs="0"/>
|
2703
|
+
<element name="ours" type="epp:dcpOursType"
|
2704
|
+
minOccurs="0" maxOccurs="unbounded"/>
|
2705
|
+
<element name="public"
|
2706
|
+
minOccurs="0"/>
|
2707
|
+
<element name="same"
|
2708
|
+
minOccurs="0"/>
|
2709
|
+
<element name="unrelated"
|
2710
|
+
minOccurs="0"/>
|
2711
|
+
</sequence>
|
2712
|
+
</complexType>
|
2713
|
+
|
2714
|
+
<complexType name="dcpOursType">
|
2715
|
+
<sequence>
|
2716
|
+
<element name="recDesc" type="epp:dcpRecDescType"
|
2717
|
+
minOccurs="0"/>
|
2718
|
+
</sequence>
|
2719
|
+
</complexType>
|
2720
|
+
|
2721
|
+
<simpleType name="dcpRecDescType">
|
2722
|
+
<restriction base="token">
|
2723
|
+
<minLength value="1"/>
|
2724
|
+
<maxLength value="255"/>
|
2725
|
+
</restriction>
|
2726
|
+
</simpleType>
|
2727
|
+
|
2728
|
+
<complexType name="dcpRetentionType">
|
2729
|
+
<choice>
|
2730
|
+
<element name="business"/>
|
2731
|
+
<element name="indefinite"/>
|
2732
|
+
<element name="legal"/>
|
2733
|
+
<element name="none"/>
|
2734
|
+
<element name="stated"/>
|
2735
|
+
</choice>
|
2736
|
+
</complexType>
|
2737
|
+
|
2738
|
+
<complexType name="dcpExpiryType">
|
2739
|
+
<choice>
|
2740
|
+
<element name="absolute" type="dateTime"/>
|
2741
|
+
<element name="relative" type="duration"/>
|
2742
|
+
</choice>
|
2743
|
+
|
2744
|
+
|
2745
|
+
|
2746
|
+
Hollenbeck Standards Track [Page 49]
|
2747
|
+
|
2748
|
+
RFC 5730 EPP August 2009
|
2749
|
+
|
2750
|
+
|
2751
|
+
</complexType>
|
2752
|
+
|
2753
|
+
<!--
|
2754
|
+
Extension framework types.
|
2755
|
+
-->
|
2756
|
+
<complexType name="extAnyType">
|
2757
|
+
<sequence>
|
2758
|
+
<any namespace="##other"
|
2759
|
+
maxOccurs="unbounded"/>
|
2760
|
+
</sequence>
|
2761
|
+
</complexType>
|
2762
|
+
|
2763
|
+
<complexType name="extURIType">
|
2764
|
+
<sequence>
|
2765
|
+
<element name="extURI" type="anyURI"
|
2766
|
+
maxOccurs="unbounded"/>
|
2767
|
+
</sequence>
|
2768
|
+
</complexType>
|
2769
|
+
|
2770
|
+
<!--
|
2771
|
+
An EPP version number is a dotted pair of decimal numbers.
|
2772
|
+
-->
|
2773
|
+
<simpleType name="versionType">
|
2774
|
+
<restriction base="token">
|
2775
|
+
<pattern value="[1-9]+\.[0-9]+"/>
|
2776
|
+
<enumeration value="1.0"/>
|
2777
|
+
</restriction>
|
2778
|
+
</simpleType>
|
2779
|
+
|
2780
|
+
<!--
|
2781
|
+
Command types.
|
2782
|
+
-->
|
2783
|
+
<complexType name="commandType">
|
2784
|
+
<sequence>
|
2785
|
+
<choice>
|
2786
|
+
<element name="check" type="epp:readWriteType"/>
|
2787
|
+
<element name="create" type="epp:readWriteType"/>
|
2788
|
+
<element name="delete" type="epp:readWriteType"/>
|
2789
|
+
<element name="info" type="epp:readWriteType"/>
|
2790
|
+
<element name="login" type="epp:loginType"/>
|
2791
|
+
<element name="logout"/>
|
2792
|
+
<element name="poll" type="epp:pollType"/>
|
2793
|
+
<element name="renew" type="epp:readWriteType"/>
|
2794
|
+
<element name="transfer" type="epp:transferType"/>
|
2795
|
+
<element name="update" type="epp:readWriteType"/>
|
2796
|
+
</choice>
|
2797
|
+
<element name="extension" type="epp:extAnyType"
|
2798
|
+
minOccurs="0"/>
|
2799
|
+
|
2800
|
+
|
2801
|
+
|
2802
|
+
Hollenbeck Standards Track [Page 50]
|
2803
|
+
|
2804
|
+
RFC 5730 EPP August 2009
|
2805
|
+
|
2806
|
+
|
2807
|
+
<element name="clTRID" type="epp:trIDStringType"
|
2808
|
+
minOccurs="0"/>
|
2809
|
+
</sequence>
|
2810
|
+
</complexType>
|
2811
|
+
|
2812
|
+
<!--
|
2813
|
+
The <login> command.
|
2814
|
+
-->
|
2815
|
+
<complexType name="loginType">
|
2816
|
+
<sequence>
|
2817
|
+
<element name="clID" type="eppcom:clIDType"/>
|
2818
|
+
<element name="pw" type="epp:pwType"/>
|
2819
|
+
<element name="newPW" type="epp:pwType"
|
2820
|
+
minOccurs="0"/>
|
2821
|
+
<element name="options" type="epp:credsOptionsType"/>
|
2822
|
+
<element name="svcs" type="epp:loginSvcType"/>
|
2823
|
+
</sequence>
|
2824
|
+
</complexType>
|
2825
|
+
|
2826
|
+
<complexType name="credsOptionsType">
|
2827
|
+
<sequence>
|
2828
|
+
<element name="version" type="epp:versionType"/>
|
2829
|
+
<element name="lang" type="language"/>
|
2830
|
+
</sequence>
|
2831
|
+
</complexType>
|
2832
|
+
|
2833
|
+
<simpleType name="pwType">
|
2834
|
+
<restriction base="token">
|
2835
|
+
<minLength value="6"/>
|
2836
|
+
<maxLength value="16"/>
|
2837
|
+
</restriction>
|
2838
|
+
</simpleType>
|
2839
|
+
|
2840
|
+
<complexType name="loginSvcType">
|
2841
|
+
<sequence>
|
2842
|
+
<element name="objURI" type="anyURI"
|
2843
|
+
maxOccurs="unbounded"/>
|
2844
|
+
<element name="svcExtension" type="epp:extURIType"
|
2845
|
+
minOccurs="0"/>
|
2846
|
+
</sequence>
|
2847
|
+
</complexType>
|
2848
|
+
|
2849
|
+
<!--
|
2850
|
+
The <poll> command.
|
2851
|
+
-->
|
2852
|
+
<complexType name="pollType">
|
2853
|
+
<attribute name="op" type="epp:pollOpType"
|
2854
|
+
use="required"/>
|
2855
|
+
|
2856
|
+
|
2857
|
+
|
2858
|
+
Hollenbeck Standards Track [Page 51]
|
2859
|
+
|
2860
|
+
RFC 5730 EPP August 2009
|
2861
|
+
|
2862
|
+
|
2863
|
+
<attribute name="msgID" type="token"/>
|
2864
|
+
</complexType>
|
2865
|
+
|
2866
|
+
<simpleType name="pollOpType">
|
2867
|
+
<restriction base="token">
|
2868
|
+
<enumeration value="ack"/>
|
2869
|
+
<enumeration value="req"/>
|
2870
|
+
</restriction>
|
2871
|
+
</simpleType>
|
2872
|
+
|
2873
|
+
<!--
|
2874
|
+
The <transfer> command. This is object-specific, and uses attributes
|
2875
|
+
to identify the requested operation.
|
2876
|
+
-->
|
2877
|
+
<complexType name="transferType">
|
2878
|
+
<sequence>
|
2879
|
+
<any namespace="##other"/>
|
2880
|
+
</sequence>
|
2881
|
+
<attribute name="op" type="epp:transferOpType"
|
2882
|
+
use="required"/>
|
2883
|
+
</complexType>
|
2884
|
+
|
2885
|
+
<simpleType name="transferOpType">
|
2886
|
+
<restriction base="token">
|
2887
|
+
<enumeration value="approve"/>
|
2888
|
+
<enumeration value="cancel"/>
|
2889
|
+
<enumeration value="query"/>
|
2890
|
+
<enumeration value="reject"/>
|
2891
|
+
<enumeration value="request"/>
|
2892
|
+
</restriction>
|
2893
|
+
</simpleType>
|
2894
|
+
|
2895
|
+
<!--
|
2896
|
+
All other object-centric commands. EPP doesn't specify the syntax or
|
2897
|
+
semantics of object-centric command elements. The elements MUST be
|
2898
|
+
described in detail in another schema specific to the object.
|
2899
|
+
-->
|
2900
|
+
<complexType name="readWriteType">
|
2901
|
+
<sequence>
|
2902
|
+
<any namespace="##other"/>
|
2903
|
+
</sequence>
|
2904
|
+
</complexType>
|
2905
|
+
|
2906
|
+
<complexType name="trIDType">
|
2907
|
+
<sequence>
|
2908
|
+
<element name="clTRID" type="epp:trIDStringType"
|
2909
|
+
minOccurs="0"/>
|
2910
|
+
<element name="svTRID" type="epp:trIDStringType"/>
|
2911
|
+
|
2912
|
+
|
2913
|
+
|
2914
|
+
Hollenbeck Standards Track [Page 52]
|
2915
|
+
|
2916
|
+
RFC 5730 EPP August 2009
|
2917
|
+
|
2918
|
+
|
2919
|
+
</sequence>
|
2920
|
+
</complexType>
|
2921
|
+
|
2922
|
+
<simpleType name="trIDStringType">
|
2923
|
+
<restriction base="token">
|
2924
|
+
<minLength value="3"/>
|
2925
|
+
<maxLength value="64"/>
|
2926
|
+
</restriction>
|
2927
|
+
</simpleType>
|
2928
|
+
|
2929
|
+
<!--
|
2930
|
+
Response types.
|
2931
|
+
-->
|
2932
|
+
<complexType name="responseType">
|
2933
|
+
<sequence>
|
2934
|
+
<element name="result" type="epp:resultType"
|
2935
|
+
maxOccurs="unbounded"/>
|
2936
|
+
<element name="msgQ" type="epp:msgQType"
|
2937
|
+
minOccurs="0"/>
|
2938
|
+
|
2939
|
+
<element name="resData" type="epp:extAnyType"
|
2940
|
+
minOccurs="0"/>
|
2941
|
+
<element name="extension" type="epp:extAnyType"
|
2942
|
+
minOccurs="0"/>
|
2943
|
+
<element name="trID" type="epp:trIDType"/>
|
2944
|
+
</sequence>
|
2945
|
+
</complexType>
|
2946
|
+
|
2947
|
+
<complexType name="resultType">
|
2948
|
+
<sequence>
|
2949
|
+
<element name="msg" type="epp:msgType"/>
|
2950
|
+
<choice minOccurs="0" maxOccurs="unbounded">
|
2951
|
+
<element name="value" type="epp:errValueType"/>
|
2952
|
+
<element name="extValue" type="epp:extErrValueType"/>
|
2953
|
+
</choice>
|
2954
|
+
</sequence>
|
2955
|
+
<attribute name="code" type="epp:resultCodeType"
|
2956
|
+
use="required"/>
|
2957
|
+
</complexType>
|
2958
|
+
|
2959
|
+
<complexType name="errValueType" mixed="true">
|
2960
|
+
<sequence>
|
2961
|
+
<any namespace="##any" processContents="skip"/>
|
2962
|
+
</sequence>
|
2963
|
+
<anyAttribute namespace="##any" processContents="skip"/>
|
2964
|
+
</complexType>
|
2965
|
+
|
2966
|
+
|
2967
|
+
|
2968
|
+
|
2969
|
+
|
2970
|
+
Hollenbeck Standards Track [Page 53]
|
2971
|
+
|
2972
|
+
RFC 5730 EPP August 2009
|
2973
|
+
|
2974
|
+
|
2975
|
+
<complexType name="extErrValueType">
|
2976
|
+
<sequence>
|
2977
|
+
<element name="value" type="epp:errValueType"/>
|
2978
|
+
<element name="reason" type="epp:msgType"/>
|
2979
|
+
</sequence>
|
2980
|
+
</complexType>
|
2981
|
+
|
2982
|
+
<complexType name="msgQType">
|
2983
|
+
<sequence>
|
2984
|
+
<element name="qDate" type="dateTime"
|
2985
|
+
minOccurs="0"/>
|
2986
|
+
<element name="msg" type="epp:mixedMsgType"
|
2987
|
+
minOccurs="0"/>
|
2988
|
+
</sequence>
|
2989
|
+
<attribute name="count" type="unsignedLong"
|
2990
|
+
use="required"/>
|
2991
|
+
<attribute name="id" type="eppcom:minTokenType"
|
2992
|
+
use="required"/>
|
2993
|
+
</complexType>
|
2994
|
+
|
2995
|
+
<complexType name="mixedMsgType" mixed="true">
|
2996
|
+
<sequence>
|
2997
|
+
<any processContents="skip"
|
2998
|
+
minOccurs="0" maxOccurs="unbounded"/>
|
2999
|
+
</sequence>
|
3000
|
+
<attribute name="lang" type="language"
|
3001
|
+
default="en"/>
|
3002
|
+
</complexType>
|
3003
|
+
|
3004
|
+
<!--
|
3005
|
+
Human-readable text may be expressed in languages other than English.
|
3006
|
+
-->
|
3007
|
+
<complexType name="msgType">
|
3008
|
+
<simpleContent>
|
3009
|
+
<extension base="normalizedString">
|
3010
|
+
<attribute name="lang" type="language"
|
3011
|
+
default="en"/>
|
3012
|
+
</extension>
|
3013
|
+
</simpleContent>
|
3014
|
+
</complexType>
|
3015
|
+
|
3016
|
+
<!--
|
3017
|
+
EPP result codes.
|
3018
|
+
-->
|
3019
|
+
<simpleType name="resultCodeType">
|
3020
|
+
<restriction base="unsignedShort">
|
3021
|
+
<enumeration value="1000"/>
|
3022
|
+
<enumeration value="1001"/>
|
3023
|
+
|
3024
|
+
|
3025
|
+
|
3026
|
+
Hollenbeck Standards Track [Page 54]
|
3027
|
+
|
3028
|
+
RFC 5730 EPP August 2009
|
3029
|
+
|
3030
|
+
|
3031
|
+
<enumeration value="1300"/>
|
3032
|
+
<enumeration value="1301"/>
|
3033
|
+
<enumeration value="1500"/>
|
3034
|
+
<enumeration value="2000"/>
|
3035
|
+
<enumeration value="2001"/>
|
3036
|
+
<enumeration value="2002"/>
|
3037
|
+
<enumeration value="2003"/>
|
3038
|
+
<enumeration value="2004"/>
|
3039
|
+
<enumeration value="2005"/>
|
3040
|
+
<enumeration value="2100"/>
|
3041
|
+
<enumeration value="2101"/>
|
3042
|
+
<enumeration value="2102"/>
|
3043
|
+
<enumeration value="2103"/>
|
3044
|
+
<enumeration value="2104"/>
|
3045
|
+
<enumeration value="2105"/>
|
3046
|
+
<enumeration value="2106"/>
|
3047
|
+
<enumeration value="2200"/>
|
3048
|
+
<enumeration value="2201"/>
|
3049
|
+
<enumeration value="2202"/>
|
3050
|
+
<enumeration value="2300"/>
|
3051
|
+
<enumeration value="2301"/>
|
3052
|
+
<enumeration value="2302"/>
|
3053
|
+
<enumeration value="2303"/>
|
3054
|
+
<enumeration value="2304"/>
|
3055
|
+
<enumeration value="2305"/>
|
3056
|
+
<enumeration value="2306"/>
|
3057
|
+
<enumeration value="2307"/>
|
3058
|
+
<enumeration value="2308"/>
|
3059
|
+
<enumeration value="2400"/>
|
3060
|
+
<enumeration value="2500"/>
|
3061
|
+
<enumeration value="2501"/>
|
3062
|
+
<enumeration value="2502"/>
|
3063
|
+
</restriction>
|
3064
|
+
</simpleType>
|
3065
|
+
|
3066
|
+
<!--
|
3067
|
+
End of schema.
|
3068
|
+
-->
|
3069
|
+
</schema>
|
3070
|
+
END
|
3071
|
+
|
3072
|
+
|
3073
|
+
|
3074
|
+
|
3075
|
+
|
3076
|
+
|
3077
|
+
|
3078
|
+
|
3079
|
+
|
3080
|
+
|
3081
|
+
|
3082
|
+
Hollenbeck Standards Track [Page 55]
|
3083
|
+
|
3084
|
+
RFC 5730 EPP August 2009
|
3085
|
+
|
3086
|
+
|
3087
|
+
4.2. Shared Structure Schema
|
3088
|
+
|
3089
|
+
Copyright (c) 2009 IETF Trust and the persons identified as authors
|
3090
|
+
of the code. All rights reserved.
|
3091
|
+
|
3092
|
+
Redistribution and use in source and binary forms, with or without
|
3093
|
+
modification, are permitted provided that the following conditions
|
3094
|
+
are met:
|
3095
|
+
|
3096
|
+
o Redistributions of source code must retain the above copyright
|
3097
|
+
notice, this list of conditions and the following disclaimer.
|
3098
|
+
|
3099
|
+
o Redistributions in binary form must reproduce the above copyright
|
3100
|
+
notice, this list of conditions and the following disclaimer in
|
3101
|
+
the documentation and/or other materials provided with the
|
3102
|
+
distribution.
|
3103
|
+
|
3104
|
+
o Neither the name of Internet Society, IETF or IETF Trust, nor the
|
3105
|
+
names of specific contributors, may be used to endorse or promote
|
3106
|
+
products derived from this software without specific prior written
|
3107
|
+
permission.
|
3108
|
+
|
3109
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
3110
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
3111
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
3112
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
3113
|
+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
3114
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
3115
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
3116
|
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
3117
|
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
3118
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
3119
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
3120
|
+
|
3121
|
+
BEGIN
|
3122
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
3123
|
+
|
3124
|
+
<schema targetNamespace="urn:ietf:params:xml:ns:eppcom-1.0"
|
3125
|
+
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
|
3126
|
+
xmlns="http://www.w3.org/2001/XMLSchema"
|
3127
|
+
elementFormDefault="qualified">
|
3128
|
+
|
3129
|
+
<annotation>
|
3130
|
+
<documentation>
|
3131
|
+
Extensible Provisioning Protocol v1.0
|
3132
|
+
shared structures schema.
|
3133
|
+
</documentation>
|
3134
|
+
</annotation>
|
3135
|
+
|
3136
|
+
|
3137
|
+
|
3138
|
+
Hollenbeck Standards Track [Page 56]
|
3139
|
+
|
3140
|
+
RFC 5730 EPP August 2009
|
3141
|
+
|
3142
|
+
|
3143
|
+
<!--
|
3144
|
+
Object authorization information types.
|
3145
|
+
-->
|
3146
|
+
<complexType name="pwAuthInfoType">
|
3147
|
+
<simpleContent>
|
3148
|
+
<extension base="normalizedString">
|
3149
|
+
<attribute name="roid" type="eppcom:roidType"/>
|
3150
|
+
</extension>
|
3151
|
+
</simpleContent>
|
3152
|
+
</complexType>
|
3153
|
+
|
3154
|
+
<complexType name="extAuthInfoType">
|
3155
|
+
<sequence>
|
3156
|
+
<any namespace="##other"/>
|
3157
|
+
</sequence>
|
3158
|
+
</complexType>
|
3159
|
+
|
3160
|
+
<!--
|
3161
|
+
<check> response types.
|
3162
|
+
-->
|
3163
|
+
<complexType name="reasonType">
|
3164
|
+
<simpleContent>
|
3165
|
+
<extension base="eppcom:reasonBaseType">
|
3166
|
+
<attribute name="lang" type="language"/>
|
3167
|
+
</extension>
|
3168
|
+
</simpleContent>
|
3169
|
+
</complexType>
|
3170
|
+
|
3171
|
+
<simpleType name="reasonBaseType">
|
3172
|
+
<restriction base="token">
|
3173
|
+
<minLength value="1"/>
|
3174
|
+
<maxLength value="32"/>
|
3175
|
+
</restriction>
|
3176
|
+
</simpleType>
|
3177
|
+
|
3178
|
+
<!--
|
3179
|
+
Abstract client and object identifier type.
|
3180
|
+
-->
|
3181
|
+
<simpleType name="clIDType">
|
3182
|
+
<restriction base="token">
|
3183
|
+
<minLength value="3"/>
|
3184
|
+
<maxLength value="16"/>
|
3185
|
+
</restriction>
|
3186
|
+
</simpleType>
|
3187
|
+
|
3188
|
+
<!--
|
3189
|
+
DNS label type.
|
3190
|
+
-->
|
3191
|
+
|
3192
|
+
|
3193
|
+
|
3194
|
+
Hollenbeck Standards Track [Page 57]
|
3195
|
+
|
3196
|
+
RFC 5730 EPP August 2009
|
3197
|
+
|
3198
|
+
|
3199
|
+
<simpleType name="labelType">
|
3200
|
+
<restriction base="token">
|
3201
|
+
<minLength value="1"/>
|
3202
|
+
<maxLength value="255"/>
|
3203
|
+
</restriction>
|
3204
|
+
</simpleType>
|
3205
|
+
|
3206
|
+
<!--
|
3207
|
+
Non-empty token type.
|
3208
|
+
-->
|
3209
|
+
<simpleType name="minTokenType">
|
3210
|
+
<restriction base="token">
|
3211
|
+
<minLength value="1"/>
|
3212
|
+
</restriction>
|
3213
|
+
</simpleType>
|
3214
|
+
|
3215
|
+
<!--
|
3216
|
+
Repository Object IDentifier type.
|
3217
|
+
-->
|
3218
|
+
<simpleType name="roidType">
|
3219
|
+
<restriction base="token">
|
3220
|
+
<pattern value="(\w|_){1,80}-\w{1,8}"/>
|
3221
|
+
</restriction>
|
3222
|
+
</simpleType>
|
3223
|
+
|
3224
|
+
<!--
|
3225
|
+
Transfer status identifiers.
|
3226
|
+
-->
|
3227
|
+
|
3228
|
+
<simpleType name="trStatusType">
|
3229
|
+
<restriction base="token">
|
3230
|
+
<enumeration value="clientApproved"/>
|
3231
|
+
<enumeration value="clientCancelled"/>
|
3232
|
+
<enumeration value="clientRejected"/>
|
3233
|
+
<enumeration value="pending"/>
|
3234
|
+
<enumeration value="serverApproved"/>
|
3235
|
+
<enumeration value="serverCancelled"/>
|
3236
|
+
</restriction>
|
3237
|
+
</simpleType>
|
3238
|
+
|
3239
|
+
<!--
|
3240
|
+
End of schema.
|
3241
|
+
-->
|
3242
|
+
</schema>
|
3243
|
+
END
|
3244
|
+
|
3245
|
+
|
3246
|
+
|
3247
|
+
|
3248
|
+
|
3249
|
+
|
3250
|
+
Hollenbeck Standards Track [Page 58]
|
3251
|
+
|
3252
|
+
RFC 5730 EPP August 2009
|
3253
|
+
|
3254
|
+
|
3255
|
+
5. Internationalization Considerations
|
3256
|
+
|
3257
|
+
EPP is represented in XML, which provides native support for encoding
|
3258
|
+
information using the Unicode character set and its more compact
|
3259
|
+
representations including UTF-8. Conformant XML processors recognize
|
3260
|
+
both UTF-8 and UTF-16. Though XML includes provisions to identify
|
3261
|
+
and use other character encodings through use of an "encoding"
|
3262
|
+
attribute in an <?xml?> declaration, use of UTF-8 is RECOMMENDED in
|
3263
|
+
environments where parser-encoding-support incompatibility exists.
|
3264
|
+
|
3265
|
+
EPP includes a provision for returning a human-readable message with
|
3266
|
+
every result code. This document describes result codes in English,
|
3267
|
+
but the actual text returned with a result MAY be provided in a
|
3268
|
+
language negotiated when a session is established. Languages other
|
3269
|
+
than English MUST be noted through specification of a "lang"
|
3270
|
+
attribute for each message. Valid values for the "lang" attribute
|
3271
|
+
and "lang" negotiation elements are described in [RFC4646].
|
3272
|
+
|
3273
|
+
All date-time values presented via EPP MUST be expressed in Universal
|
3274
|
+
Coordinated Time using the Gregorian calendar. XML Schema allows use
|
3275
|
+
of time zone identifiers to indicate offsets from the zero meridian,
|
3276
|
+
but this option MUST NOT be used with EPP. The extended date-time
|
3277
|
+
form using upper case "T" and "Z" characters defined in
|
3278
|
+
[W3C.REC-xmlschema-2-20041028] MUST be used to represent date-time
|
3279
|
+
values, as XML Schema does not support truncated date-time forms or
|
3280
|
+
lower case "T" and "Z" characters.
|
3281
|
+
|
3282
|
+
6. IANA Considerations
|
3283
|
+
|
3284
|
+
This document uses URNs to describe XML namespaces and XML schemas
|
3285
|
+
conforming to a registry mechanism described in [RFC3688]. Four URI
|
3286
|
+
assignments have been registered by the IANA.
|
3287
|
+
|
3288
|
+
Registration request for the EPP namespace:
|
3289
|
+
|
3290
|
+
URI: urn:ietf:params:xml:ns:epp-1.0
|
3291
|
+
|
3292
|
+
Registrant Contact: See the "Author's Address" section of this
|
3293
|
+
document.
|
3294
|
+
|
3295
|
+
XML: None. Namespace URIs do not represent an XML specification.
|
3296
|
+
|
3297
|
+
Registration request for the EPP XML schema:
|
3298
|
+
|
3299
|
+
URI: urn:ietf:params:xml:schema:epp-1.0
|
3300
|
+
|
3301
|
+
Registrant Contact: See the "Author's Address" section of this
|
3302
|
+
document.
|
3303
|
+
|
3304
|
+
|
3305
|
+
|
3306
|
+
Hollenbeck Standards Track [Page 59]
|
3307
|
+
|
3308
|
+
RFC 5730 EPP August 2009
|
3309
|
+
|
3310
|
+
|
3311
|
+
XML: See the "Base Schema" section of this document.
|
3312
|
+
|
3313
|
+
Registration request for the EPP shared structure namespace:
|
3314
|
+
|
3315
|
+
URI: urn:ietf:params:xml:ns:eppcom-1.0
|
3316
|
+
|
3317
|
+
Registrant Contact: See the "Author's Address" section of this
|
3318
|
+
document.
|
3319
|
+
|
3320
|
+
XML: None. Namespace URIs do not represent an XML specification.
|
3321
|
+
|
3322
|
+
Registration request for the EPP shared structure XML schema:
|
3323
|
+
|
3324
|
+
URI: urn:ietf:params:xml:schema:eppcom-1.0
|
3325
|
+
|
3326
|
+
Registrant Contact: See the "Author's Address" section of this
|
3327
|
+
document.
|
3328
|
+
|
3329
|
+
XML: See the "Shared Structure Schema" section of this document.
|
3330
|
+
|
3331
|
+
A MIME media type registration template is included in Appendix B.
|
3332
|
+
|
3333
|
+
7. Security Considerations
|
3334
|
+
|
3335
|
+
EPP provides only simple client-authentication services. A passive
|
3336
|
+
attack is sufficient to recover client identifiers and passwords,
|
3337
|
+
allowing trivial command forgery. Protection against most common
|
3338
|
+
attacks and more robust security services MUST be provided by other
|
3339
|
+
protocol layers. Specifically, EPP instances MUST be protected using
|
3340
|
+
a transport mechanism or application protocol that provides
|
3341
|
+
integrity, confidentiality, and mutual, strong client-server
|
3342
|
+
authentication.
|
3343
|
+
|
3344
|
+
EPP uses a variant of the PLAIN SASL mechanism described in [RFC4616]
|
3345
|
+
to provide a simple application-layer authentication service that
|
3346
|
+
augments or supplements authentication and identification services
|
3347
|
+
that might be available at other protocol layers. Where the PLAIN
|
3348
|
+
SASL mechanism specifies provision of an authorization identifier,
|
3349
|
+
authentication identifier, and password as a single string separated
|
3350
|
+
by ASCII NUL characters, EPP specifies use of a combined
|
3351
|
+
authorization and authentication identifier and a password provided
|
3352
|
+
as distinct XML elements.
|
3353
|
+
|
3354
|
+
Repeated password guessing attempts can be discouraged by limiting
|
3355
|
+
the number of <login> attempts that can be attempted on an open
|
3356
|
+
connection. A server MAY close an open connection if multiple
|
3357
|
+
<login> attempts are made with either an invalid client identifier,
|
3358
|
+
|
3359
|
+
|
3360
|
+
|
3361
|
+
|
3362
|
+
Hollenbeck Standards Track [Page 60]
|
3363
|
+
|
3364
|
+
RFC 5730 EPP August 2009
|
3365
|
+
|
3366
|
+
|
3367
|
+
an invalid password, or both an invalid client identifier and an
|
3368
|
+
invalid password.
|
3369
|
+
|
3370
|
+
EPP uses authentication information associated with objects to
|
3371
|
+
confirm object-transfer authority. Authentication information
|
3372
|
+
exchanged between EPP clients and third-party entities MUST be
|
3373
|
+
exchanged using a facility that provides privacy and integrity
|
3374
|
+
services to protect against unintended disclosure and modification
|
3375
|
+
while in transit.
|
3376
|
+
|
3377
|
+
EPP instances SHOULD be protected using a transport mechanism or
|
3378
|
+
application protocol that provides anti-replay protection. EPP
|
3379
|
+
provides some protection against replay attacks through command
|
3380
|
+
idempotency and client-initiated transaction identification.
|
3381
|
+
Consecutive command replays will not change the state of an object in
|
3382
|
+
any way. There is, however, a chance of unintended or malicious
|
3383
|
+
consequence if a command is replayed after intervening commands have
|
3384
|
+
changed the object state and client identifiers are not used to
|
3385
|
+
detect replays. For example, a replayed <create> command that
|
3386
|
+
follows a <delete> command might succeed without additional
|
3387
|
+
facilities to prevent or detect the replay.
|
3388
|
+
|
3389
|
+
As described in Section 2, EPP includes features that allow for
|
3390
|
+
offline review of transform commands before the requested action is
|
3391
|
+
actually completed. The server is required to notify the client when
|
3392
|
+
offline processing of the action has been completed. Notifications
|
3393
|
+
can be sent using an out-of-band mechanism that is not protected by
|
3394
|
+
the mechanism used to provide EPP transport security. Notifications
|
3395
|
+
sent without EPP's transport-security services should be protected
|
3396
|
+
using another mechanism that provides an appropriate level of
|
3397
|
+
protection for the notification.
|
3398
|
+
|
3399
|
+
8. Acknowledgements
|
3400
|
+
|
3401
|
+
RFC 3730 is a product of the PROVREG working group, which suggested
|
3402
|
+
improvements and provided many invaluable comments. The author
|
3403
|
+
wishes to acknowledge the efforts of WG chairs Edward Lewis and Jaap
|
3404
|
+
Akkerhuis for their process and editorial contributions. RFC 4930
|
3405
|
+
and this document are individual submissions, based on the work done
|
3406
|
+
in RFC 3730.
|
3407
|
+
|
3408
|
+
Specific suggestions that have been incorporated into this document
|
3409
|
+
were provided by Chris Bason, Eric Brunner-Williams, Jordyn Buchanan,
|
3410
|
+
Roger Castillo Cortazar, Dave Crocker, Ayesha Damaraju, Sheer
|
3411
|
+
El-Showk, Patrik Faltstrom, James Gould, John Immordino, Dan Kohn,
|
3412
|
+
Hong Liu, Klaus Malorny, Dan Manley, Michael Mealling, Patrick
|
3413
|
+
Mevzek, Andrew Newton, Budi Rahardjo, Asbjorn Steira, Rick Wesson,
|
3414
|
+
and Jay Westerdal.
|
3415
|
+
|
3416
|
+
|
3417
|
+
|
3418
|
+
Hollenbeck Standards Track [Page 61]
|
3419
|
+
|
3420
|
+
RFC 5730 EPP August 2009
|
3421
|
+
|
3422
|
+
|
3423
|
+
9. References
|
3424
|
+
|
3425
|
+
9.1. Normative References
|
3426
|
+
|
3427
|
+
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
3428
|
+
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
3429
|
+
|
3430
|
+
[RFC2277] Alvestrand, H., "IETF Policy on Character Sets and
|
3431
|
+
Languages", BCP 18, RFC 2277, January 1998.
|
3432
|
+
|
3433
|
+
[RFC2914] Floyd, S., "Congestion Control Principles", BCP 41,
|
3434
|
+
RFC 2914, September 2000.
|
3435
|
+
|
3436
|
+
[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
|
3437
|
+
10646", STD 63, RFC 3629, November 2003.
|
3438
|
+
|
3439
|
+
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
|
3440
|
+
January 2004.
|
3441
|
+
|
3442
|
+
[RFC4646] Phillips, A. and M. Davis, "Tags for Identifying
|
3443
|
+
Languages", BCP 47, RFC 4646, September 2006.
|
3444
|
+
|
3445
|
+
[W3C.REC-xml-20040204]
|
3446
|
+
Sperberg-McQueen, C., Maler, E., Yergeau, F., Paoli, J.,
|
3447
|
+
and T. Bray, "Extensible Markup Language (XML) 1.0 (Third
|
3448
|
+
Edition)", World Wide Web Consortium FirstEdition REC-xml-
|
3449
|
+
20040204, February 2004,
|
3450
|
+
<http://www.w3.org/TR/2004/REC-xml-20040204>.
|
3451
|
+
|
3452
|
+
[W3C.REC-xmlschema-1-20041028]
|
3453
|
+
Maloney, M., Thompson, H., Mendelsohn, N., and D. Beech,
|
3454
|
+
"XML Schema Part 1: Structures Second Edition", World Wide
|
3455
|
+
Web Consortium Recommendation REC-xmlschema-1-20041028,
|
3456
|
+
October 2004,
|
3457
|
+
<http://www.w3.org/TR/2004/REC-xmlschema-1-20041028>.
|
3458
|
+
|
3459
|
+
[W3C.REC-xmlschema-2-20041028]
|
3460
|
+
Malhotra, A. and P. Biron, "XML Schema Part 2: Datatypes
|
3461
|
+
Second Edition", World Wide Web Consortium
|
3462
|
+
Recommendation REC-xmlschema-2-20041028, October 2004,
|
3463
|
+
<http://www.w3.org/TR/2004/REC-xmlschema-2-20041028>.
|
3464
|
+
|
3465
|
+
9.2. Informative References
|
3466
|
+
|
3467
|
+
[RFC0793] Postel, J., "Transmission Control Protocol", STD 7,
|
3468
|
+
RFC 793, September 1981.
|
3469
|
+
|
3470
|
+
|
3471
|
+
|
3472
|
+
|
3473
|
+
|
3474
|
+
Hollenbeck Standards Track [Page 62]
|
3475
|
+
|
3476
|
+
RFC 5730 EPP August 2009
|
3477
|
+
|
3478
|
+
|
3479
|
+
[RFC2781] Hoffman, P. and F. Yergeau, "UTF-16, an encoding of ISO
|
3480
|
+
10646", RFC 2781, February 2000.
|
3481
|
+
|
3482
|
+
[RFC3023] Murata, M., St. Laurent, S., and D. Kohn, "XML Media
|
3483
|
+
Types", RFC 3023, January 2001.
|
3484
|
+
|
3485
|
+
[RFC3080] Rose, M., "The Blocks Extensible Exchange Protocol Core",
|
3486
|
+
RFC 3080, March 2001.
|
3487
|
+
|
3488
|
+
[RFC3375] Hollenbeck, S., "Generic Registry-Registrar Protocol
|
3489
|
+
Requirements", RFC 3375, September 2002.
|
3490
|
+
|
3491
|
+
[RFC4616] Zeilenga, K., "The PLAIN Simple Authentication and
|
3492
|
+
Security Layer (SASL) Mechanism", RFC 4616, August 2006.
|
3493
|
+
|
3494
|
+
[RFC4930] Hollenbeck, S., "Extensible Provisioning Protocol (EPP)",
|
3495
|
+
RFC 4930, May 2007.
|
3496
|
+
|
3497
|
+
[RFC4960] Stewart, R., "Stream Control Transmission Protocol",
|
3498
|
+
RFC 4960, September 2007.
|
3499
|
+
|
3500
|
+
[RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321,
|
3501
|
+
October 2008.
|
3502
|
+
|
3503
|
+
[W3C.REC-P3P-20020416]
|
3504
|
+
Marchiori, M., "The Platform for Privacy Preferences 1.0
|
3505
|
+
(P3P1.0) Specification", World Wide Web Consortium
|
3506
|
+
Recommendation REC-P3P-20020416, April 2002,
|
3507
|
+
<http://www.w3.org/TR/2002/REC-P3P-20020416>.
|
3508
|
+
|
3509
|
+
|
3510
|
+
|
3511
|
+
|
3512
|
+
|
3513
|
+
|
3514
|
+
|
3515
|
+
|
3516
|
+
|
3517
|
+
|
3518
|
+
|
3519
|
+
|
3520
|
+
|
3521
|
+
|
3522
|
+
|
3523
|
+
|
3524
|
+
|
3525
|
+
|
3526
|
+
|
3527
|
+
|
3528
|
+
|
3529
|
+
|
3530
|
+
Hollenbeck Standards Track [Page 63]
|
3531
|
+
|
3532
|
+
RFC 5730 EPP August 2009
|
3533
|
+
|
3534
|
+
|
3535
|
+
Appendix A. Object Mapping Template
|
3536
|
+
|
3537
|
+
This appendix describes a recommended outline for documenting the EPP
|
3538
|
+
mapping of an object. Documents that describe EPP object mappings
|
3539
|
+
SHOULD describe the mapping in a format similar to the one used here.
|
3540
|
+
Additional sections are required if the object mapping is written in
|
3541
|
+
Internet-Draft or RFC format.
|
3542
|
+
|
3543
|
+
1. Introduction
|
3544
|
+
|
3545
|
+
Provide an introduction that describes the object and gives an
|
3546
|
+
overview of the mapping to EPP.
|
3547
|
+
|
3548
|
+
2. Object Attributes
|
3549
|
+
|
3550
|
+
Describe the attributes associated with the object, including
|
3551
|
+
references to syntax specifications as appropriate. Examples of
|
3552
|
+
object attributes include a name or identifier and dates
|
3553
|
+
associated with modification events.
|
3554
|
+
|
3555
|
+
3. EPP Command Mapping
|
3556
|
+
|
3557
|
+
3.1. EPP Query Commands
|
3558
|
+
|
3559
|
+
3.1.1. EPP <check> Command
|
3560
|
+
|
3561
|
+
Describe the object-specific mappings required to implement the
|
3562
|
+
EPP <check> command. Include both sample commands and sample
|
3563
|
+
responses.
|
3564
|
+
|
3565
|
+
3.1.2. EPP <info> Command
|
3566
|
+
|
3567
|
+
Describe the object-specific mappings required to implement the
|
3568
|
+
EPP <info> command. Include both sample commands and sample
|
3569
|
+
responses.
|
3570
|
+
|
3571
|
+
3.1.3. EPP <poll> Command
|
3572
|
+
|
3573
|
+
Describe the object-specific mappings required to implement the
|
3574
|
+
EPP <poll> command. Include both sample commands and sample
|
3575
|
+
responses.
|
3576
|
+
|
3577
|
+
3.1.4. EPP <transfer> Command
|
3578
|
+
|
3579
|
+
Describe the object-specific mappings required to implement the
|
3580
|
+
EPP <transfer> query command. Include both sample commands and
|
3581
|
+
sample responses.
|
3582
|
+
|
3583
|
+
|
3584
|
+
|
3585
|
+
|
3586
|
+
Hollenbeck Standards Track [Page 64]
|
3587
|
+
|
3588
|
+
RFC 5730 EPP August 2009
|
3589
|
+
|
3590
|
+
|
3591
|
+
3.2. EPP Transform Commands
|
3592
|
+
|
3593
|
+
3.2.1. EPP <create> Command
|
3594
|
+
|
3595
|
+
Describe the object-specific mappings required to implement the
|
3596
|
+
EPP <create> command. Include both sample commands and sample
|
3597
|
+
responses. Describe the status of the object with respect to
|
3598
|
+
time, including expected client and server behavior if a validity
|
3599
|
+
period is used.
|
3600
|
+
|
3601
|
+
3.2.2. EPP <delete> Command
|
3602
|
+
|
3603
|
+
Describe the object-specific mappings required to implement the
|
3604
|
+
EPP <delete> command. Include both sample commands and sample
|
3605
|
+
responses.
|
3606
|
+
|
3607
|
+
3.2.3. EPP <renew> Command
|
3608
|
+
|
3609
|
+
Describe the object-specific mappings required to implement the
|
3610
|
+
EPP <renew> command. Include both sample commands and sample
|
3611
|
+
responses.
|
3612
|
+
|
3613
|
+
3.2.4. EPP <transfer> Command
|
3614
|
+
|
3615
|
+
Describe the object-specific mappings required to implement the
|
3616
|
+
EPP <transfer> command. Include both sample commands and sample
|
3617
|
+
responses.
|
3618
|
+
|
3619
|
+
3.2.4. EPP <update> Command
|
3620
|
+
|
3621
|
+
Describe the object-specific mappings required to implement the
|
3622
|
+
EPP <update> command. Include both sample commands and sample
|
3623
|
+
responses.
|
3624
|
+
|
3625
|
+
4. Formal Syntax
|
3626
|
+
|
3627
|
+
Provide the XML schema for the object mapping. An XML DTD MUST
|
3628
|
+
NOT be used, as DTDs do not provide sufficient support for XML
|
3629
|
+
namespaces and strong data typing.
|
3630
|
+
|
3631
|
+
|
3632
|
+
|
3633
|
+
|
3634
|
+
|
3635
|
+
|
3636
|
+
|
3637
|
+
|
3638
|
+
|
3639
|
+
|
3640
|
+
|
3641
|
+
|
3642
|
+
Hollenbeck Standards Track [Page 65]
|
3643
|
+
|
3644
|
+
RFC 5730 EPP August 2009
|
3645
|
+
|
3646
|
+
|
3647
|
+
Appendix B. Media Type Registration: application/epp+xml
|
3648
|
+
|
3649
|
+
MIME media type name: application
|
3650
|
+
|
3651
|
+
MIME subtype name: epp+xml
|
3652
|
+
|
3653
|
+
Required parameters: none
|
3654
|
+
|
3655
|
+
Optional parameters: Same as the charset parameter of application/xml
|
3656
|
+
as specified in [RFC3023].
|
3657
|
+
|
3658
|
+
Encoding considerations: Same as the encoding considerations of
|
3659
|
+
application/xml as specified in [RFC3023].
|
3660
|
+
|
3661
|
+
Security considerations: This type has all of the security
|
3662
|
+
considerations described in [RFC3023] plus the considerations
|
3663
|
+
specified in the Security Considerations section of this document.
|
3664
|
+
|
3665
|
+
Interoperability considerations: XML has proven to be interoperable
|
3666
|
+
across WWW Distributed Authoring and Versioning (WebDAV) clients and
|
3667
|
+
servers, and for import and export from multiple XML authoring tools.
|
3668
|
+
For maximum interoperability, validating processors are recommended.
|
3669
|
+
Although non-validating processors can be more efficient, they are
|
3670
|
+
not required to handle all features of XML. For further information,
|
3671
|
+
see Section 2.9, "Standalone Document Declaration", and Section 5,
|
3672
|
+
"Conformance", of [W3C.REC-xml-20040204].
|
3673
|
+
|
3674
|
+
Published specification: This document.
|
3675
|
+
|
3676
|
+
Applications that use this media type: EPP is device-, platform-, and
|
3677
|
+
vendor-neutral and is supported by multiple service providers.
|
3678
|
+
|
3679
|
+
Additional information: If used, magic numbers, fragment identifiers,
|
3680
|
+
base URIs, and use of the BOM should be as specified in [RFC3023].
|
3681
|
+
|
3682
|
+
Magic number(s): None.
|
3683
|
+
|
3684
|
+
File extension(s): .xml
|
3685
|
+
|
3686
|
+
Macintosh file type code(s): "TEXT"
|
3687
|
+
|
3688
|
+
Person & email address for further information: See the "Author's
|
3689
|
+
Address" section of this document.
|
3690
|
+
|
3691
|
+
Intended usage: COMMON
|
3692
|
+
|
3693
|
+
Author/Change controller: IETF
|
3694
|
+
|
3695
|
+
|
3696
|
+
|
3697
|
+
|
3698
|
+
Hollenbeck Standards Track [Page 66]
|
3699
|
+
|
3700
|
+
RFC 5730 EPP August 2009
|
3701
|
+
|
3702
|
+
|
3703
|
+
Appendix C. Changes from RFC 4930
|
3704
|
+
|
3705
|
+
1. Changed "This document obsoletes RFC 3730" to "This document
|
3706
|
+
obsoletes RFC 4930".
|
3707
|
+
|
3708
|
+
2. Replaced references to RFC 2595 with references to RFC 4616.
|
3709
|
+
|
3710
|
+
3. Replaced references to RFC 2821 with references to RFC 5321.
|
3711
|
+
|
3712
|
+
4. Replaced references to RFC 2960 with references to RFC 4960.
|
3713
|
+
|
3714
|
+
5. Replaced references to RFC 3066 with references to RFC 4646.
|
3715
|
+
|
3716
|
+
6. Replaced references to RFC 3730 with references to RFC 4930.
|
3717
|
+
|
3718
|
+
7. Added "A protocol client that is authorized to manage an
|
3719
|
+
existing object is described as a "sponsoring" client throughout
|
3720
|
+
this document" in Section 1.1.
|
3721
|
+
|
3722
|
+
8. Changed "This action MUST be open to all authorized clients" to
|
3723
|
+
"This command MUST be available to all clients" in the
|
3724
|
+
descriptions of the <login> and <logout> commands.
|
3725
|
+
|
3726
|
+
9. Changed "Specific result codes are listed in the table below" to
|
3727
|
+
"The complete list of valid result codes is enumerated below and
|
3728
|
+
in the normative schema" in Section 3.
|
3729
|
+
|
3730
|
+
10. Added new paragraph to Section 7 to give guidance on the need to
|
3731
|
+
protect offline transaction notices.
|
3732
|
+
|
3733
|
+
11. Added reference to Appendix B in the IANA Considerations
|
3734
|
+
section.
|
3735
|
+
|
3736
|
+
12. Added BSD license text to XML schema section.
|
3737
|
+
|
3738
|
+
Author's Address
|
3739
|
+
|
3740
|
+
Scott Hollenbeck
|
3741
|
+
VeriSign, Inc.
|
3742
|
+
21345 Ridgetop Circle
|
3743
|
+
Dulles, VA 20166-6503
|
3744
|
+
US
|
3745
|
+
|
3746
|
+
EMail: shollenbeck@verisign.com
|
3747
|
+
|
3748
|
+
|
3749
|
+
|
3750
|
+
|
3751
|
+
|
3752
|
+
|
3753
|
+
|
3754
|
+
Hollenbeck Standards Track [Page 67]
|
3755
|
+
|