epp-client-base 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
+