├── test-xsds
├── fee.xsd
├── epp.xsd
├── eppcom-1.0.xsd
├── host-1.0.xsd
├── epp-1.0.xsd
└── domain-1.0.xsd
├── examples
├── .gitignore
├── update-response.xml
├── delete-response.xml
├── renew-command.xml
├── update-command.xml
├── transfer-command.xml
├── renew-response.xml
├── create-response.xml
├── check-command.xml
├── create-command.xml
├── transfer-response.xml
├── transfer-query-response.xml
└── check-response.xml
├── transform-response-elements.xml
├── README.md
├── Makefile
├── fee.xsd
├── draft-ietf-regext-epp-fees.xml.in
└── draft-ietf-regext-epp-fees.xml
/test-xsds/fee.xsd:
--------------------------------------------------------------------------------
1 | ../fee.xsd
--------------------------------------------------------------------------------
/examples/.gitignore:
--------------------------------------------------------------------------------
1 | *.txt
2 |
--------------------------------------------------------------------------------
/transform-response-elements.xml:
--------------------------------------------------------------------------------
1 |
2 | A <fee:currency> element;
3 |
4 | Zero or more <fee:fee> elements;
5 |
6 | Zero or more <fee:credit> elements;
7 |
8 | An OPTIONAL <fee:balance> element;
9 |
10 | An OPTIONAL <fee:creditLimit> element.
11 |
12 |
--------------------------------------------------------------------------------
/test-xsds/epp.xsd:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/examples/update-response.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Command completed successfully
6 |
7 |
8 |
9 | USD
10 | 5.00
11 |
12 |
13 |
14 | ABC-12345
15 | 54321-XYZ
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/examples/delete-response.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Command completed successfully
6 |
7 |
8 |
10 | USD
11 | -5.00
12 | 1005.00
13 |
14 |
15 |
16 | ABC-12345
17 | 54321-XYZ
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/examples/renew-command.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 | example.com
8 | 2000-04-03
9 | 5
10 |
11 |
12 |
13 |
14 | USD
15 | 5.00
16 |
17 |
18 | ABC-12345
19 |
20 |
21 |
--------------------------------------------------------------------------------
/examples/update-command.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 | example.com
8 |
9 | sh8013
10 |
11 |
12 |
13 |
14 |
15 | USD
16 | 5.00
17 |
18 |
19 | ABC-12345
20 |
21 |
22 |
--------------------------------------------------------------------------------
/examples/transfer-command.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 | example.com
8 | 1
9 |
10 | 2fooBAR
11 |
12 |
13 |
14 |
15 |
16 | USD
17 | 5.00
18 |
19 |
20 | ABC-12345
21 |
22 |
23 |
--------------------------------------------------------------------------------
/examples/renew-response.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Command completed successfully
6 |
7 |
8 |
10 | example.com
11 | 2005-04-03T22:00:00.0Z
12 |
13 |
14 |
15 |
16 | USD
17 | 5.00
18 | 1000.00
19 |
20 |
21 |
22 | ABC-12345
23 | 54322-XYZ
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Registry Fee Extension for the Extensible Provisioning Protocol (EPP)
2 |
3 | This repository contains the source documents used to assemble the specification
4 | for the Registry Fee Extension for EPP. This extension is in use at a number of
5 | registries including CentralNic.
6 |
7 | ## Important Note
8 |
9 | Developers **should not** base their client and server implementations on the
10 | documents that appear in this repository: these are "living" documents and will
11 | change rapidly and radically. If you want to develop an implementation, then
12 | use the most recent version published on the IETF website at:
13 |
14 | * http://tools.ietf.org/html/draft-ietf-regext-epp-fees
15 |
16 | ## Copyright and Patent Statement
17 |
18 | This Internet-Draft is submitted in full conformance with the provisions of BCP
19 | 78 and BCP 79.
20 |
21 | Copyright (c) 2016 IETF Trust and the persons identified as the document
22 | authors. All rights reserved.
23 |
--------------------------------------------------------------------------------
/examples/create-response.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Command completed successfully
6 |
7 |
8 |
10 | example.com
11 | 1999-04-03T22:00:00.0Z
12 | 2001-04-03T22:00:00.0Z
13 |
14 |
15 |
16 |
17 | USD
18 | 5.00
19 | -5.00
20 | 1000.00
21 |
22 |
23 |
24 | ABC-12345
25 | 54321-XYZ
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/examples/check-command.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 | example.com
8 | example.net
9 | example.xyz
10 |
11 |
12 |
13 |
14 | USD
15 |
16 |
17 | 2017-05-17T13:22:21.0Z
18 |
19 |
20 | 2
21 |
22 |
23 | standard
24 |
25 |
26 |
27 | ABC-12345
28 |
29 |
30 |
--------------------------------------------------------------------------------
/examples/create-command.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 | example.com
8 | 2
9 |
10 | ns1.example.net
11 | ns2.example.net
12 |
13 | jd1234
14 | sh8013
15 | sh8013
16 |
17 | 2fooBAR
18 |
19 |
20 |
21 |
22 |
23 | USD
24 | 5.00
25 |
26 |
27 | ABC-12345
28 |
29 |
30 |
--------------------------------------------------------------------------------
/examples/transfer-response.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Command completed successfully; action pending
6 |
7 |
8 |
10 | example.com
11 | pending
12 | ClientX
13 | 2000-06-08T22:00:00.0Z
14 | ClientY
15 | 2000-06-13T22:00:00.0Z
16 | 2002-09-08T22:00:00.0Z
17 |
18 |
19 |
20 |
21 | USD
22 | 5.00
23 |
24 |
25 |
26 | ABC-12345
27 | 54322-XYZ
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/examples/transfer-query-response.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Command completed successfully; action pending
6 |
7 |
8 |
10 | example.com
11 | pending
12 | ClientX
13 | 2000-06-08T22:00:00.0Z
14 | ClientY
15 | 2000-06-13T22:00:00.0Z
16 | 2002-09-08T22:00:00.0Z
17 |
18 |
19 |
20 |
21 | USD
22 | 1
23 | 5.00
24 |
25 |
26 |
27 | ABC-12345
28 | 54322-XYZ
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | all:
2 | make tests
3 | make build
4 | make clean
5 |
6 | tests:
7 | xmllint --noout --schema test-xsds/epp.xsd examples/check-command.xml
8 | xmllint --noout --schema test-xsds/epp.xsd examples/check-response.xml
9 | xmllint --noout --schema test-xsds/epp.xsd examples/transfer-query-response.xml
10 | xmllint --noout --schema test-xsds/epp.xsd examples/create-command.xml
11 | xmllint --noout --schema test-xsds/epp.xsd examples/create-response.xml
12 | xmllint --noout --schema test-xsds/epp.xsd examples/renew-command.xml
13 | xmllint --noout --schema test-xsds/epp.xsd examples/renew-response.xml
14 | xmllint --noout --schema test-xsds/epp.xsd examples/transfer-command.xml
15 | xmllint --noout --schema test-xsds/epp.xsd examples/transfer-response.xml
16 | xmllint --noout --schema test-xsds/epp.xsd examples/update-command.xml
17 | xmllint --noout --schema test-xsds/epp.xsd examples/update-response.xml
18 | xmllint --noout --schema test-xsds/epp.xsd examples/delete-response.xml
19 |
20 | build:
21 | perl -pi -e 's/^(.)/C: \1/' < examples/check-command.xml > examples/check-command.txt
22 | perl -pi -e 's/^(.)/S: \1/' < examples/check-response.xml > examples/check-response.txt
23 | perl -pi -e 's/^(.)/S: \1/' < examples/transfer-query-response.xml > examples/transfer-query-response.txt
24 | perl -pi -e 's/^(.)/C: \1/' < examples/create-command.xml > examples/create-command.txt
25 | perl -pi -e 's/^(.)/S: \1/' < examples/create-response.xml > examples/create-response.txt
26 | perl -pi -e 's/^(.)/C: \1/' < examples/renew-command.xml > examples/renew-command.txt
27 | perl -pi -e 's/^(.)/S: \1/' < examples/renew-response.xml > examples/renew-response.txt
28 | perl -pi -e 's/^(.)/C: \1/' < examples/transfer-command.xml > examples/transfer-command.txt
29 | perl -pi -e 's/^(.)/S: \1/' < examples/transfer-response.xml > examples/transfer-response.txt
30 | perl -pi -e 's/^(.)/C: \1/' < examples/update-command.xml > examples/update-command.txt
31 | perl -pi -e 's/^(.)/S: \1/' < examples/update-response.xml > examples/update-response.txt
32 | perl -pi -e 's/^(.)/S: \1/' < examples/delete-response.xml > examples/delete-response.txt
33 |
34 | xmllint --xinclude draft-ietf-regext-epp-fees.xml.in > draft-ietf-regext-epp-fees.xml
35 |
36 | xml2rfc draft-ietf-regext-epp-fees.xml draft-ietf-regext-epp-fees.txt
37 | xml2rfc draft-ietf-regext-epp-fees.xml draft-ietf-regext-epp-fees.html
38 |
39 | clean:
40 | rm -vf examples/*txt
41 |
--------------------------------------------------------------------------------
/test-xsds/eppcom-1.0.xsd:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | Extensible Provisioning Protocol v1.0 shared structures
7 | schema.
8 |
9 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
61 |
62 |
63 |
64 |
65 |
66 |
69 |
70 |
71 |
72 |
73 |
74 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/examples/check-response.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Command completed successfully
6 |
7 |
8 |
10 |
11 | example.com
12 |
13 |
14 | example.net
15 |
16 |
17 | example.xyz
18 |
19 |
20 |
21 |
22 |
25 | USD
26 |
27 |
28 | example.com
29 |
30 |
31 | 1
32 | 10.00
36 |
37 |
38 | 1
39 | 10.00
43 |
45 | 50.00
46 | 2017-05-17T13:22:21.0Z
47 |
48 |
49 | 2
50 | maximum validity period is
51 | 1 year
52 |
53 |
54 | 1
55 | 10.00
59 | standard
60 |
61 |
62 |
63 |
64 | example.net
65 |
66 |
67 | 1
68 | 5.00
72 |
73 |
76 | 1
77 | sunrise not
78 | available
79 | 2017-05-17T13:22:21.0Z
80 |
81 |
82 | 2
83 | 10.00
87 |
88 |
89 | 1
90 | 10.00
94 | standard
95 |
96 |
97 |
98 |
99 | example.xyz
100 |
101 |
102 | 1
103 | 5.00
107 |
108 |
111 | 1
112 | sunrise not
113 | available
114 | 2017-05-17T13:22:21.0Z
115 |
116 |
117 | 2
118 | 10.00
122 |
123 |
124 | 1
125 | 10.00
129 | standard
130 |
131 |
132 |
133 |
134 |
135 | ABC-12345
136 | 54322-XYZ
137 |
138 |
139 |
140 |
--------------------------------------------------------------------------------
/test-xsds/host-1.0.xsd:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
11 |
12 |
13 | Extensible Provisioning Protocol v1.0 host provisioning
14 | schema.
15 |
16 |
19 |
20 |
21 |
22 |
23 |
24 |
27 |
28 |
29 |
30 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
56 |
57 |
58 |
59 |
60 |
61 |
64 |
65 |
66 |
67 |
68 |
69 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
83 |
84 |
85 |
87 |
89 |
90 |
91 |
94 |
95 |
96 |
97 |
98 |
99 |
102 |
103 |
104 |
105 |
106 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
139 |
140 |
141 |
142 |
143 |
144 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
200 |
201 |
202 |
--------------------------------------------------------------------------------
/fee.xsd:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
12 |
13 | Extensible Provisioning Protocol
14 | v1.0 extension schema for fee
15 | information.
16 |
17 |
18 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
36 |
37 |
38 |
41 |
44 |
45 |
46 |
47 |
48 |
49 |
52 |
55 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
67 |
68 |
69 |
70 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
87 |
88 |
89 |
90 |
91 |
92 |
95 |
98 |
101 |
104 |
107 |
110 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
123 |
124 |
125 |
127 |
129 |
131 |
132 |
133 |
134 |
137 |
138 |
139 |
140 |
142 |
144 |
146 |
148 |
149 |
150 |
151 |
154 |
155 |
156 |
157 |
158 |
159 |
161 |
162 |
164 |
166 |
167 |
169 |
171 |
172 |
173 |
174 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
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 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
--------------------------------------------------------------------------------
/test-xsds/epp-1.0.xsd:
--------------------------------------------------------------------------------
1 |
2 |
6 |
9 |
10 |
11 | Extensible Provisioning Protocol v1.0
12 | schema.
13 |
14 |
17 |
18 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
66 |
67 |
68 |
69 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
364 |
365 |
366 |
--------------------------------------------------------------------------------
/test-xsds/domain-1.0.xsd:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
12 |
13 |
14 |
15 | Extensible Provisioning Protocol v1.0 domain provisioning
16 | schema.
17 |
18 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
66 |
67 |
68 |
71 |
72 |
73 |
74 |
76 |
77 |
78 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
105 |
106 |
107 |
108 |
109 |
110 |
113 |
114 |
115 |
116 |
117 |
118 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
176 |
177 |
178 |
179 |
181 |
183 |
184 |
185 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
258 |
259 |
260 |
261 |
262 |
264 |
265 |
267 |
268 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
357 |
358 |
359 |
--------------------------------------------------------------------------------
/draft-ietf-regext-epp-fees.xml.in:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
12 |
13 |
15 |
16 |
18 |
19 |
21 |
22 |
24 |
25 |
27 |
28 |
30 |
31 |
33 |
34 | ]>
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 | Registry Fee Extension for
52 | the Extensible Provisioning Protocol (EPP)
53 |
54 |
55 | CentralNic Group plc
56 |
57 |
58 | 35-39 Moorgate
59 | London
60 | England
61 | EC2R 6AR
62 | GB
63 |
64 | +44 20 33 88 0600
65 | gavin.brown@centralnic.com
66 | https://www.centralnic.com
67 |
68 |
69 |
70 |
71 |
72 | jothan@jothan.com
73 | http://jothan.com
74 |
75 |
76 |
77 |
78 |
79 | Applications
80 | Internet Engineering Task Force
81 | EPP, XML
82 |
83 | This document describes an Extensible Provisioning Protocol
84 | (EPP) extension mapping for registry fees.
85 |
86 |
87 |
88 |
89 |
90 | Historically, domain name registries have applied a simple fee
91 | structure for billable transactions, namely a basic unit price applied to
92 | domain <create>, <renew>, <transfer> and RGP restore commands. Given the relatively small
94 | number of EPP servers to which EPP clients have been required to connect,
95 | it has generally been the case that client operators have been able to
96 | obtain details of these fees out-of-band by contacting the server
97 | operators.
98 |
99 | Given the recent expansion of the DNS namespace, and the proliferation
100 | of novel business models, it is now desirable to provide a method for EPP
101 | clients to query EPP servers for the fees and credits associated with
102 | certain commands and specific objects.
103 |
104 | This document describes an extension mapping for version 1.0 of the
105 | Extensible Provisioning Protocol (EPP). This
106 | EPP mapping provides a mechanism by which EPP clients may query the fees
107 | and credits associated with various billable transactions, and also
108 | obtain their current account balance.
109 |
110 |
111 |
112 | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
113 | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
114 | document are to be interpreted as described in
115 | RFC 2119.
116 |
117 | XML is case sensitive. Unless stated otherwise, XML specifications
118 | and examples provided in this document MUST be interpreted in the
119 | character case presented in order to develop a conforming
120 | implementation.
121 |
122 | "fee" is used as an abbreviation for
123 | "urn:ietf:params:xml:ns:fee-&VERSION;". The XML namespace prefix "fee"
124 | is used, but implementations MUST NOT depend on it and instead employ a
125 | proper namespace-aware XML parser and serializer to interpret and output
126 | the XML documents.
127 |
128 | (Note to RFC Editor: remove the following paragraph before publication
129 | as an RFC.)
130 |
131 | The XML namespace prefix above contains a version number,
132 | specifically "&VERSION;". This version number will increment with
133 | successive versions of this document, and will reach 1.0 if and when
134 | this document is published as an RFC. This permits clients to
135 | distinguish which version of the extension a server has implemented.
136 |
137 |
138 |
139 |
140 |
141 | (Note to RFC Editor: remove this section before publication as an
142 | RFC.)
143 | Servers which implement this extension SHOULD provide a
144 | way for clients to progressively update their implementations
145 | when a new version of the extension is deployed.
146 | Servers SHOULD (for a temporary migration period) provide support for
147 | older versions of the extension in parallel to the newest version, and
148 | allow clients to select their preferred version via the
149 | <svcExtension> element of the <login> command.
150 | If a client requests multiple versions of the extension at login, then,
151 | when preparing responses to commands which do not include extension elements,
152 | the server SHOULD only include extension elements in the namespace of the newest
153 | version of the extension requested by the client.
154 | When preparing responses to commands which do include extension elements, the
155 | server SHOULD only include extension elements for the extension versions present
156 | in the command.
157 |
158 |
159 |
160 |
161 |
162 | The <fee:command> element is used in the EPP <check> command to
163 | determine the fee which is applicable to the given command.
164 |
165 | The element values permitted by the server is a matter of repository
166 | policy, but MUST include as a minimum the following values:
167 |
168 |
169 | "create" indicating a <create> command;
170 | "renew" indicating a <renew> command;
171 | "transfer" indicating a <transfer> command;
172 |
173 |
174 | If the server supports the Registry Grace Period
175 | Mapping, then the server MUST also support the "restore" value.
176 |
177 | The <fee:command> element MAY have an OPTIONAL "phase" attribute
178 | specifying a launch phase as described in
179 | . It may also contain an
180 | OPTIONAL "subphase" attribute identifying the custom or sub-phase as
181 | described in .
182 |
183 |
184 |
185 | The <fee:currency> element is used to indicate which currency
186 | fees are charged in. This value of this element MUST be a three-character
187 | currency code from .
188 |
189 | Note that ISO 4217 provides the special "XXX" code, which MAY be used
190 | if the server uses a non-currency based system for assessing fees, such as
191 | a system of credits.
192 |
193 | The use of <fee:currency> elements in commands is OPTIONAL:
194 | if a <fee:currency> element is not present in a command, the
195 | server MUST determine the currency based on the client's account settings
196 | which MUST be agreed by the client and server via an out-of-band
197 | channel. However, the <fee:currency> element MUST be present in
198 | responses.
199 |
200 | Servers SHOULD NOT perform a currency conversion if a client uses an
201 | incorrect currency code. Servers SHOULD return a 2004 error instead.
202 |
203 |
204 |
205 | When querying for fee information using the <check> command,
206 | the <fee:period> element is used to indicate the units to be added
207 | to the registration period of objects by the <create>,
208 | <renew> and <transfer> commands. This element is derived
209 | from the <domain:period> element described in .
211 |
212 | The <fee:period> element is OPTIONAL in <check> commands:
213 | if omitted, the server MUST determine the fee(s) using a validity period
214 | of 1 year. The <fee:period> element MUST be present in <check>
215 | responses.
216 |
217 |
218 |
219 |
220 | Servers which implement this extension will include elements in
221 | responses which provide information about the fees and/or credits
222 | associated with a given billable transaction.
223 |
224 | The <fee:fee> and <fee:credit> elements are used to provide
225 | this information. The presence of a <fee:fee> element in a response
226 | indicates a debit against the client's account balance; a
227 | <fee:credit> element indicates a credit. A <fee:fee> element
228 | MUST have a non-negative value. A <fee:credit> element MUST have a
229 | negative value.
230 |
231 | A server MAY respond with multiple <fee:fee> and
232 | <fee:credit> elements in the same response. In such cases, the net
233 | fee or credit applicable to the transaction is the arithmetic sum of the
234 | values of each of the <fee:fee> and/or <fee:credit> elements.
235 | This amount applies to the total additional validity period applied to the
236 | object (where applicable) rather than to any incremental unit.
237 |
238 | The following attributes are defined for the <fee:fee> element.
239 | These are described in detail below:
240 |
241 |
242 | an OPTIONAL attribute which provides a
243 | human-readable description of the fee. Servers should provide
244 | documentation on the possible values of this attribute, and their
245 | meanings.
246 |
247 | an OPTIONAL boolean attribute indicating
248 | whether the fee is refundable if the object is deleted.
249 |
250 | an OPTIONAL attribute which provides the
251 | time period during which the fee is refundable.
252 |
253 | an OPTIONAL attribute indicating when the
254 | fee will be deducted from the client's account.
255 |
256 |
257 | The <fee:credit> element can take a "description" attribute
258 | as described above. No other attributes are defined for this
259 | element.
260 |
261 |
262 | <fee:fee> elements MAY have an OPTIONAL "refundable" attribute
263 | which takes a boolean value. Fees may be refunded under certain
264 | circumstances, such as when a domain application is rejected (as
265 | described in ) or when
266 | an object is deleted during the relevant Grace Period (see below).
267 |
268 | If the "refundable" attribute is omitted, then clients SHOULD NOT make
269 | any assumption about the refundability of the fee.
270 |
271 |
272 |
273 | describes a system of "grace periods",
274 | which are time periods following a billable transaction during which,
275 | if an object is deleted, the client receives a refund.
276 |
277 | The "grace-period" attribute MAY be used to indicate the relevant
278 | grace period for a fee. If a server implements the Registry Grace
279 | Period extension, it MUST specify the grace period for all relevant
280 | transactions.
281 |
282 | If the "grace-period" attribute is omitted, then clients
283 | SHOULD NOT make any assumption about the grace period of the fee.
284 |
285 |
286 |
287 | If a <fee:fee> element has a "grace-period" attribute then
288 | it MUST also be refundable. If the "refundable" attribute of a
289 | <fee:fee> element is false then it MUST NOT have a
290 | "grace-period" attribute.
291 |
292 |
293 |
294 | Fees may be applied immediately upon receipt of a command from a
295 | client, or may only be applied once an out-of-band process (such as
296 | the processing of applications at the end of a launch phase) has
297 | taken place.
298 |
299 | The "applied" attribute of the <fee:fee> element allows
300 | servers to indicate whether a fee will be applied immediately, or
301 | whether it will be applied at some point in the future. This
302 | attribute takes two possible values: "immediate" (which is the
303 | default) or "delayed".
304 |
305 |
306 |
307 |
308 | The <fee:balance> element is an OPTIONAL element which MAY
309 | be included in server responses to transform commands. If present,
310 | it can be used by the client to determine the remaining credit at
311 | the server.
312 |
313 | Whether or not the <fee:balance> is included in responses is a
314 | matter of server policy. However, if a server chooses
315 | to offer support for this element, it MUST be included in responses
316 | to all "transform" commands (ie <create>, <renew>,
317 | <update>, <delete>, <transfer op="request">).
318 |
319 | The value of the <fee:balance> MAY be negative. A negative
320 | balance indicates that the server has extended a line of credit to the
321 | client (see below).
322 |
323 | If a server includes a <fee:balance> element in response to
324 | transform commands, the value of the element MUST reflect the client's
325 | account balance after any fees or credits associated with that command
326 | have been applied.
327 |
328 |
329 |
330 | As described above, if a server returns a response containing a
331 | <fee:balance> with a negative value, then the server has extended a
332 | line of credit to the client. A server MAY also include a
333 | <fee:creditLimit> element in responses which indicates the maximum
334 | credit available to a client. A server MAY reject certain transactions if
335 | the absolute value of the <fee:balance> is equal to or exceeds the
336 | value of the <fee:creditLimit> element.
337 |
338 | Whether or not the <fee:creditLimit> is included in responses
339 | is a matter of server policy. However, if a server chooses
340 | to offer support for this element, it MUST be included in responses
341 | to all "transform" commands (ie <create>, <renew>,
342 | <update>, <delete>, <transfer op="request">).
343 |
344 |
345 |
346 | Objects may be assigned to a particular class, category, or tier,
347 | each of which has a particular fee or set of fees associated with it. The
348 | <fee:class> element which appears in <check> responses is
349 | used to indicate the classification of an object.
350 |
351 | If a server makes use of this element, it should provide clients with a
352 | list of all the values that the element may take via an out-of-band
353 | channel. Servers MUST NOT use values which do not appear on this list.
354 |
355 | Servers which make use of this element MUST use a <fee:class>
356 | element with the value "standard" for all objects that are subject to the
357 | standard or default fee.
358 |
359 |
360 |
361 |
362 |
363 | Depending on server policy, a client MAY be required to include the
364 | extension elements described in this document for certain transform
365 | commands. Servers must provide clear documentation to clients about the
366 | circumstances in which this extension must be used.
367 |
368 | If a server receives a command from a client which does not include
369 | the extension elements required by the server for that command, then
370 | it MUST respond with a 2003 "Required parameter missing" error.
371 |
372 | If the currency or total fee provided by the client do not agree
373 | with the server's own calculation of the fee for that command, then the
374 | server MUST reject the command with a 2004 "Parameter value range"
375 | error.
376 |
377 |
378 |
379 |
380 | Sometimes, the time interval between when a client queries the
381 | fee for a command, and when that command takes place, is long enough that
382 | there is a non-negligible probability that the fee might change in
383 | the intervening time.
384 |
385 | To ensure that clients can obtain the most accurate fee information
386 | in such circumstances, clients can include a <fee:cmdDate> element
387 | in fee <check> commands, to indicate the anticipated date and time
388 | of a billable transaction.
389 |
390 | If a server receives a command containing a <fee:cmdDate> element,
391 | and the server is unable to provide accurate fee information for the given
392 | date and time, then it MUST respond with a 2306 "Parameter value policy
393 | error" error. Otherwise, the server MUST return fee information that will
394 | prevail at the date and time provided.
395 |
396 | This extension provides no mechanism to enforce the application of these
397 | fees when the command is subsequently submitted; servers MUST reject commands
398 | which include incorrect fee information, as described above.
399 |
400 | If a server knows that the fee information it is returning to a client
401 | is going to change in the future, it MAY include <fee:notAfter>
402 | elements in <check> responses. This element contains a date and time
403 | after which the provided fee information will no longer apply. Clients which
404 | receive a response from a server which contain <fee:notAfter> elements
405 | may then re-query for the fee information (using the <fee:cmdDate>
406 | element) described above if the value of the <fee:notAfter> element
407 | is before the anticipated time when the command will be submitted.
408 |
409 |
410 |
411 |
412 | A detailed description of the EPP syntax and semantics can be found in
413 | .
414 |
415 |
416 | This extension does not add any elements to the EPP <poll> or
417 | <info> commands or responses.
418 |
419 |
420 | This extension defines additional elements for the EPP
421 | <check> command.
422 |
423 | The command MAY contain an <extension> element which
424 | MAY contain a <fee:check> element. The <fee:check> element
425 | contains the following child elements:
426 |
427 |
428 | A <fee:command> element;
429 |
430 | An OPTIONAL <fee:currency> element;
431 |
432 | An OPTIONAL <fee:period> element.
433 |
434 | An OPTIONAL <fee:class> element.
435 |
436 | An OPTIONAL <fee:cmdDate> element.
437 |
438 |
439 | Example <check> command:
440 |
441 |
442 |
444 |
445 | When the server receives a <check> command that includes the
446 | extension elements described above, its response MUST (subject to the
447 | exception described below) contain an <extension> element,
448 | which MUST contain a child <fee:chkData> element. The
449 | <fee:chkData> element MUST contain a <fee:cd> element for
450 | each object referenced in the <check> element in the command.
451 |
452 | The <fee:cd> element has an OPTIONAL "avail" attribute which
453 | is a boolean. If the value of this attribute evaluates to false, this
454 | indicates that the server cannot calculate the relevant fees, because
455 | the object, command, currency, period or class is invalid according to
456 | server policy.
457 |
458 | The <fee:cd> contains the following child elements:
459 |
460 |
461 | A <fee:object> element, which contains a copy of the child
462 | element of the <check> element of the command, to which the fee
463 | information relates.
464 |
465 | A <fee:command> element, which contains the same command
466 | that appeared in the corresponding <fee:command> element in the
467 | command. This element MAY have the OPTIONAL "phase" and "subphase" elements,
468 | which MUST match the same attributes in the corresponding
469 | <fee:command> element in the command.
470 |
471 | A <fee:currency> element, which contains the same currency code
472 | that appeared in the <fee:currency> element of the command.
473 | If no <fee:currency> element appeared in the command, then
474 | the client's default billing currency should be used.
475 |
476 | An OPTIONAL <fee:period> element, which contains the same unit
477 | that appeared in the <fee:currency> element of the command. If
478 | the value of the preceding <fee:command> element is "restore",
479 | this element MUST NOT be included. Otherwise it MUST be included. If
480 | no <fee:period> appeared in command (and the command is not
481 | "restore") then this element MUST have a value of 1 year.
482 |
483 | Zero or more <fee:fee> elements.
484 |
485 | Zero or more <fee:credit> elements.
486 |
487 | An OPTIONAL <fee:class> element.
488 |
489 | An OPTIONAL <fee:reason> element.
490 |
491 | An OPTIONAL <fee:cmdDate> element, which contains the same
492 | date and time that appeared in the <fee:check> element of
493 | the command.
494 |
495 |
496 | If no <fee:fee> elements are present in a <fee:cd>
497 | element, this indicates that no fee will be assessed by the
498 | server for this command.
499 |
500 | If the "avail" attribute of the <fee:cd> element is false, then
501 | the <fee:cd> element MUST NOT contain any <fee:fee> or
502 | <fee:credit> child elements. If the "avail" attribute is true,
503 | then the <fee:cd> element MUST NOT contain a <fee:reason>
504 | element.
505 |
506 | Example <check> response:
507 |
508 |
509 |
511 |
512 |
513 | When a server supports classes as described in Section 3.7,
514 | and the <fee:class> element is present in the command, the server MUST
515 | validate the value of this element, and return an error for unknown values.
516 | If the given value is incorrect for the specified object, the
517 | "avail" attribute of the corresponding <fee:cd> element MUST be
518 | false.
519 |
520 | The <fee:cd> section MUST contain the appropriate
521 | <fee:class> element when the servers support classes, as described
522 | in Section 3.7, and the "avail"
523 | attribute of the <fee:cd> element is true.
524 |
525 |
526 |
527 |
528 | This extension does not add any elements to the EPP
529 | <transfer> query command, but does include elements in the
530 | response, when the extension has been selected during a <login>
531 | command.
532 |
533 | When the <transfer> query command has been processed
534 | successfully, the client selected the extension when it logged in, and
535 | the client is authorised by the server to view information about the
536 | transfer, the server MAY include in the <extension> section of
537 | the EPP response a <fee:trnData> element, which contains the
538 | following child elements:
539 |
540 |
541 | A <fee:currency> element.
542 |
543 | A <fee:period> element.
544 |
545 | Zero or more <fee:fee> elements containing the fees
546 | that will be charged to the gaining client.
547 |
548 | Zero or more <fee:credit> elements containing the credits
549 | that will be refunded to the losing client.
550 |
551 |
552 | Servers SHOULD omit <fee:credit> when returning a response
553 | to the gaining client, and omit <fee:fee> elements
554 | when returning a response to the losing client.
555 |
556 | If no <fee:trnData> element is included in the
557 | response, then no fee will be assessed by the server for the
558 | transfer.
559 |
560 | Example <transfer> query response:
561 |
562 |
563 |
565 |
566 |
567 |
568 |
569 |
570 |
571 |
572 |
573 | This extension adds elements to both the EPP <create> command
574 | and response, when the extension has been selected during a
575 | <login> command.
576 |
577 | When submitting a <create> command to the server, the client
578 | MAY include in the <extension> element a <fee:create>
579 | element which includes the following child elements:
580 |
581 |
582 | An OPTIONAL <fee:currency> element;
583 |
584 | One or more <fee:fee> elements.
585 |
586 |
587 | When the <create> command has been processed successfully,
588 | and the client selected the extension when it logged in, and a fee was
589 | assessed by the server for the transaction, the server MUST include in
590 | the <extension> section of the EPP response a
591 | <fee:creData> element, which contains the following child
592 | elements:
593 |
594 |
596 |
597 | If no fee or credit has been assessed by the server for this transaction,
598 | a <fee:creData> element MUST NOT be included in the response.
599 |
600 | Example <create> command:
601 |
602 |
603 |
605 |
606 | Example <create> response:
607 |
608 |
609 |
611 |
612 |
613 |
614 |
615 | This extension does not add any elements to the EPP <delete>
616 | command, but does include elements in the response, when the extension
617 | has been selected during the <login> command.
618 |
619 | When the <delete> command has been processed successfully,
620 | and the client selected the extension when it logged in, the server
621 | MAY include in the <extension> section of the EPP response a
622 | <fee:delData> element, which contains the following child
623 | elements:
624 |
625 |
627 |
628 | If no credit has been assessed by the server for this transaction,
629 | a <fee:delData> element MUST NOT be included in the response.
630 |
631 | Example <delete> response:
632 |
633 |
634 |
636 |
637 |
638 |
639 | This extension adds elements to both the EPP <renew> command
640 | and response, when the extension has been selected during a
641 | <login> command.
642 |
643 | When submitting a <renew> command to the server, the client
644 | MAY include in the <extension> element a <fee:renew>
645 | element which includes the following child elements:
646 |
647 |
648 | An OPTIONAL <fee:currency> element;
649 |
650 | One or more <fee:fee> elements.
651 |
652 |
653 | When the <renew> command has been processed successfully,
654 | and the client selected the extension when it logged in, the server
655 | MAY include in the <extension> section of the EPP response a
656 | <fee:renData> element, which contains the following child
657 | elements:
658 |
659 |
661 |
662 | If no fee or credit has been assessed by the server for this transaction,
663 | a <fee:renData> element MUST NOT be included in the response.
664 |
665 | Example <renew> command:
666 |
667 |
668 |
670 |
671 | Example <renew> response:
672 |
673 |
674 |
676 |
677 |
678 |
679 |
680 | This extension adds elements to both the EPP <transfer>
681 | command and response, when the value of the "op" attribute of the
682 | <transfer> command element is "request", and the extension has
683 | been selected during the <login> command.
684 |
685 | When submitting a <transfer> command to the server, the client
686 | MAY include in the <extension> element a <fee:transfer>
687 | element which includes the following child elements:
688 |
689 |
690 | An OPTIONAL <fee:currency> element;
691 |
692 | One or more <fee:fee> elements.
693 |
694 |
695 | When the <transfer> command has been processed successfully,
696 | and the client selected the extension when it logged in, the server
697 | MAY include in the <extension> section of the EPP response a
698 | <fee:trnData> element, which contains the following child
699 | elements:
700 |
701 |
703 |
704 | If no fee or credit has been assessed by the server for this transaction,
705 | a <fee:trnData> element MUST NOT be included in the response.
706 |
707 | Example <transfer> command:
708 |
709 |
710 |
712 |
713 | Example <transfer> response:
714 |
715 |
716 |
718 |
719 |
720 |
721 |
722 | This extension adds elements to both the EPP <update> command
723 | and response, when the extension has been selected during a
724 | <login> has been selected during the <login> command.
725 |
726 | When submitting a <update> command to the server, the client
727 | MAY include in the <extension> element a <fee:update>
728 | element which includes the following child elements:
729 |
730 |
731 | An OPTIONAL <fee:currency> element;
732 |
733 | One or more <fee:fee> elements.
734 |
735 |
736 | When the <update> command has been processed successfully,
737 | and the client selected the extension when it logged in, the server
738 | MAY include in the <extension> section of the EPP response a
739 | <fee:upData> element, which contains the following child
740 | elements:
741 |
742 |
744 |
745 | If no fee or credit has been assessed by the server for this transaction,
746 | a <fee:upData> element MUST NOT be included in the response.
747 |
748 | Example <update> command:
749 |
750 |
751 |
753 |
754 | Example <update> response:
755 |
756 |
757 |
759 |
760 |
761 |
762 |
763 |
764 |
765 | An EPP object mapping is specified in XML Schema notation. The formal
766 | syntax presented here is a complete schema representation of the object
767 | mapping suitable for automated validation of EPP XML instances.
768 |
769 | Copyright (c) 2014 IETF Trust and the persons identified as authors
770 | of the code. All rights reserved.
771 |
772 | Redistribution and use in source and binary forms, with or without
773 | modification, are permitted provided that the following conditions are
774 | met:
775 |
776 |
777 | Redistributions of source code must retain the above copyright
778 | notice, this list of conditions and the following disclaimer.
779 |
780 | Redistributions in binary form must reproduce the above copyright
781 | notice, this list of conditions and the following disclaimer in the
782 | documentation and/or other materials provided with the
783 | distribution.
784 |
785 | Neither the name of Internet Society, IETF or IETF Trust, nor the
786 | names of specific contributors, may be used to endorse or promote
787 | products derived from this software without specific prior written
788 | permission.
789 |
790 |
791 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
792 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
793 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
794 | PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
795 | OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
796 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
797 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
798 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
799 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
800 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
801 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
802 |
803 |
804 | BEGIN
805 |
807 | END
808 |
809 |
810 |
811 |
812 |
813 |
814 | The mapping extensions described in this document do not provide any
815 | security services beyond those described by EPP,
816 | the EPP domain name mapping, and protocol
817 | layers used by EPP. The security considerations described in these other
818 | specifications apply to this specification as well.
819 |
820 |
821 |
822 | This document uses URNs to describe XML namespaces and XML schemas
823 | conforming to a registry mechanism described in .
824 | The following URI assignment is requested of IANA:
825 | URI: urn:ietf:params:xml:ns:fee-&VERSION;
826 | Registrant Contact: See the "Author's Address" section of this
827 | document.
828 | XML: See the "Formal Syntax" section of this document.
829 |
830 |
831 | The EPP extension described in this document should be registered
832 | by the IANA in the EPP Extension Registry described in . The details of the registration are as follows:
834 | Name of Extension: EPP Fee Extension
835 | Document status: Standards Track
836 | Reference: (insert reference to RFC version of this document)
837 | Registrant Name and Email Address: See the "Author's Address" section
838 | of this document.
839 | TLDs: any
840 | IPR Disclosure: none
841 | Status: active
842 | Notes: none
843 |
844 |
845 |
846 |
847 | Note to RFC Editor: Please remove this section and the reference to
848 | before publication.
849 |
850 | This section records the status of known implementations of the
851 | protocol defined by this specification at the time of posting of this
852 | Internet-Draft, and is based on a proposal described in .
853 | The description of implementations in this section is
854 | intended to assist the IETF in its decision processes in progressing
855 | drafts to RFCs. Please note that the listing of any individual
856 | implementation here does not imply endorsement by the IETF.
857 | Furthermore, no effort has been spent to verify the information
858 | presented here that was supplied by IETF contributors. This is not
859 | intended as, and must not be construed to be, a catalog of available
860 | implementations or their features. Readers are advised to note that
861 | other implementations may exist.
862 |
863 | According to , "this will allow reviewers and
864 | working groups to assign due consideration to documents that have the
865 | benefit of running code, which may serve as evidence of valuable
866 | experimentation and feedback that have made the implemented protocols
867 | more mature. It is up to the individual working groups to use this
868 | information as they see fit".
869 |
870 |
871 | Organization: CentralNic
872 | Name: RegistryEngine EPP Service
873 | Description: Generic high-volume EPP service for gTLDs, ccTLDs and SLDs
874 | Level of maturity: Deployed in CentralNic's production environment as well
875 | as two other gTLD registry systems, and two ccTLD registry systems.
876 | Coverage: All aspects of the protocol are implemented.
877 | Licensing: Proprietary In-House software
878 | Contact: epp@centralnic.com
879 | URL: https://www.centralnic.com
880 |
881 |
882 |
883 |
884 | The authors wish to thank the following persons for their feedback and
885 | suggestions:
886 |
887 | James Gould and Scott Hollenbeck of Verisign
888 | Luis Muñoz of Uniregistry
889 | Michael Young of Architelos
890 | Ben Levac and Jeff Eckhaus of Demand Media
891 | Seth Goldman and Brian Mountford of Google
892 | Klaus Malorny and Michael Bauland of Knipp
893 | Jody Kolker and Roger Carney of Go Daddy
894 | Michael Holloway of Com Laude
895 | Santosh Kalsangrah of Impetus Infotech
896 | Alex Mayrhofer of Nic.at
897 | Pat Moroney of Name.com
898 | Bernhard Reutner-Fischer
899 |
900 |
901 |
902 |
903 |
904 |
905 | Restore the <check> command extension; either <check>
906 | or <info> can be used.
907 | added extension elements for <create>, <renew>,
908 | <transfer> and <update> so that the server can reject the
909 | command if the fee is incorrect.
910 |
911 |
912 |
913 |
914 | Use Internet-Draft version number rather than XML namespace version
915 | number in this section.
916 | Support for multiple <fee:fee> and <fee:credit>
917 | elements.
918 | Added the "description" attribute to <fee:fee> and
919 | <fee:credit> elements.
920 | Added the <fee:balance> element.
921 | Added the <fee:creditLimit> element.
922 | Updated reference to
923 | .
924 | Use <fee:command> instead of <fee:action>.
925 | Use a single child element of <fee:chkData> instead of multiple
926 | elements for each domain. This also requires using a different name
927 | (<fee:name>) for the domain name.
928 | Added the "refundable" attribute to <fee:fee> elements.
929 | Added the "grace-period" attribute to <fee:fee> elements.
930 |
931 |
932 |
933 |
934 | Added the "applied" attribute to to <fee:fee> elements.
935 | Simplified the wording in relation to when a server can return an
936 | error for extended <info> commands.
937 | Added the <fee:period> element to transfer query responses.
938 | Removed wording about how servers behave when receiving incorrect
939 | fee information from transform commands, and put it into a single
940 | section at the top of the document.
941 | Allow servers to omit <fee:fee> elements from <fee:cd>
942 | elements if the command specified by the client is forbidden.
943 |
944 |
945 |
946 |
947 | Changed Intended Status to Standards Track.
948 | As per suggestion from Michael Bauland, the <fee:period>
949 | element is no longer included in <check> and <info>
950 | responses for "restore" commands. It's still mandatory for all other
951 | commands.
952 | Added summary of the attributes for the <fee:fee> element.
953 | Clarified that the "refundable" and "grace-period" attributes of
954 | the <fee:fee> elements are dependant on each other and cannot
955 | appear on their own.
956 | Removed the option of returning a 1001 response when the fee is
957 | incorrect.
958 | Forbidden the inclusion of extension elements in transform responses
959 | if no fee/credit has been assessed.
960 | Made the <fee:currency> element optional in transform
961 | commands.
962 | Amended XML Namespace section of IANA Considerations, added
963 | EPP Extension Registry section.
964 |
965 |
966 |
967 |
968 | Removed the extended <info> command. The <check> command
969 | is the only command that can be used now.
970 | Introduced a mandatory-to-implement "standard" class for non-premium
971 | domains.
972 | The decision was made to keep availability info in <check> responses
973 | as registrars have indicated that it is very useful as it avoids unnecessary
974 | round trips to the server.
975 | Allow <fee:credit> elements to be present in <check>
976 | responses.
977 | Allow the number of <fee:fee> which can appear in transform responses
978 | to be zero.
979 | Removed the <fee:balance> and <fee:creditLimit> elements from
980 | transfer query responses. The reason is that these elements are defined
981 | as containing the values after the transform command has taken place - which
982 | means that it is not appropriate to include them in a query response.
983 | Added Implementation Status section.
984 |
985 |
986 |
987 |
988 | The specification is now object-agnostic, but works with
989 | RFC5731 domains by default.
990 | Renamed the <fee:domain> element to <fee:object>. Added the
991 | "objURI" attribute.
992 | Removed the default value for the "refundable" attribute of <fee:fee>
993 | elements, and added text about how clients should handle such cases. Added similar
994 | text to the documentation of the "grace-period" attribute.
995 | Removed references to the defunct <info> command syntax.
996 | "MUST" requirements regarding documentation have been changed to "must".
997 | Created separate "Correlation between Refundability and Grace Periods" section
998 | describing how the "refundable" and "grace-period" attributes work together.
999 |
1000 |
1001 |
1002 |
1003 | Changed the syntax of the <check> form to be simpler: a single set of
1004 | <fee:command>, <fee:currency> etc elements is applied to the objects
1005 | specified in the main body of the <check> command.
1006 | Simplified the object-agnosticism to simply copy the element from the
1007 | <check> command into the <fee:cd> element.
1008 | Added the "avail" attribute to the <fee:cd> element and added commentary
1009 | about its semantics.
1010 | Added the <fee:reason> element to the <check> response so
1011 | servers can indicate why fee information is not available.
1012 |
1013 |
1014 |
1015 |
1016 | Minor typographic corrections.
1017 | The schema was updated to allow <balance> and <creditLimit> elements
1018 | in <transfer> responses, as the text stated.
1019 | Allow <fee:fee> elements in <delete> responses (suggested by
1020 | Luis Muñoz)
1021 | Added <fee:cmdDate> element in fee <check> commands.
1022 | Added <fee:notAfter> element in fee <check> responses.
1023 |
1024 |
1025 |
1026 |
1027 |
1028 |
1029 |
1030 |
1031 | &RFC2119;
1032 | &RFC3688;
1033 | &RFC3915;
1034 | &RFC5730;
1035 | &RFC5731;
1036 | &RFC6982;
1037 | &RFC7451;
1038 |
1039 |
1040 |
1041 | ISO 4217:2008, Codes for the representation of currencies
1042 | and funds
1043 |
1044 | International Organization for
1045 | Standardization
1046 |
1047 |
1048 |
1049 |
1051 |
1053 |
1054 |
1055 |
1056 |
1057 | Launch Phase Mapping for the Extensible Provisioning
1058 | Protocol (EPP)
1059 |
1060 |
1061 |
1062 |
1063 |
1064 |
1066 |
1067 |
1068 |
1069 |
--------------------------------------------------------------------------------
/draft-ietf-regext-epp-fees.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | ]>
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | Registry Fee Extension for
28 | the Extensible Provisioning Protocol (EPP)
29 |
30 |
31 | CentralNic Group plc
32 |
33 |
34 | 35-39 Moorgate
35 | London
36 | England
37 | EC2R 6AR
38 | GB
39 |
40 | +44 20 33 88 0600
41 | gavin.brown@centralnic.com
42 | https://www.centralnic.com
43 |
44 |
45 |
46 |
47 |
48 | jothan@jothan.com
49 | http://jothan.com
50 |
51 |
52 |
53 |
54 |
55 | Applications
56 | Internet Engineering Task Force
57 | EPP, XML
58 |
59 | This document describes an Extensible Provisioning Protocol
60 | (EPP) extension mapping for registry fees.
61 |
62 |
63 |
64 |
65 |
66 | Historically, domain name registries have applied a simple fee
67 | structure for billable transactions, namely a basic unit price applied to
68 | domain <create>, <renew>, <transfer> and RGP restore commands. Given the relatively small
69 | number of EPP servers to which EPP clients have been required to connect,
70 | it has generally been the case that client operators have been able to
71 | obtain details of these fees out-of-band by contacting the server
72 | operators.
73 |
74 | Given the recent expansion of the DNS namespace, and the proliferation
75 | of novel business models, it is now desirable to provide a method for EPP
76 | clients to query EPP servers for the fees and credits associated with
77 | certain commands and specific objects.
78 |
79 | This document describes an extension mapping for version 1.0 of the
80 | Extensible Provisioning Protocol (EPP). This
81 | EPP mapping provides a mechanism by which EPP clients may query the fees
82 | and credits associated with various billable transactions, and also
83 | obtain their current account balance.
84 |
85 |
86 |
87 | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
88 | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
89 | document are to be interpreted as described in
90 | RFC 2119.
91 |
92 | XML is case sensitive. Unless stated otherwise, XML specifications
93 | and examples provided in this document MUST be interpreted in the
94 | character case presented in order to develop a conforming
95 | implementation.
96 |
97 | "fee" is used as an abbreviation for
98 | "urn:ietf:params:xml:ns:fee-&VERSION;". The XML namespace prefix "fee"
99 | is used, but implementations MUST NOT depend on it and instead employ a
100 | proper namespace-aware XML parser and serializer to interpret and output
101 | the XML documents.
102 |
103 | (Note to RFC Editor: remove the following paragraph before publication
104 | as an RFC.)
105 |
106 | The XML namespace prefix above contains a version number,
107 | specifically "&VERSION;". This version number will increment with
108 | successive versions of this document, and will reach 1.0 if and when
109 | this document is published as an RFC. This permits clients to
110 | distinguish which version of the extension a server has implemented.
111 |
112 |
113 |
114 |
115 |
116 | (Note to RFC Editor: remove this section before publication as an
117 | RFC.)
118 | Servers which implement this extension SHOULD provide a
119 | way for clients to progressively update their implementations
120 | when a new version of the extension is deployed.
121 | Servers SHOULD (for a temporary migration period) provide support for
122 | older versions of the extension in parallel to the newest version, and
123 | allow clients to select their preferred version via the
124 | <svcExtension> element of the <login> command.
125 | If a client requests multiple versions of the extension at login, then,
126 | when preparing responses to commands which do not include extension elements,
127 | the server SHOULD only include extension elements in the namespace of the newest
128 | version of the extension requested by the client.
129 | When preparing responses to commands which do include extension elements, the
130 | server SHOULD only include extension elements for the extension versions present
131 | in the command.
132 |
133 |
134 |
135 |
136 |
137 | The <fee:command> element is used in the EPP <check> command to
138 | determine the fee which is applicable to the given command.
139 |
140 | The element values permitted by the server is a matter of repository
141 | policy, but MUST include as a minimum the following values:
142 |
143 |
144 | "create" indicating a <create> command;
145 | "renew" indicating a <renew> command;
146 | "transfer" indicating a <transfer> command;
147 |
148 |
149 | If the server supports the Registry Grace Period
150 | Mapping, then the server MUST also support the "restore" value.
151 |
152 | The <fee:command> element MAY have an OPTIONAL "phase" attribute
153 | specifying a launch phase as described in
154 | . It may also contain an
155 | OPTIONAL "subphase" attribute identifying the custom or sub-phase as
156 | described in .
157 |
158 |
159 |
160 | The <fee:currency> element is used to indicate which currency
161 | fees are charged in. This value of this element MUST be a three-character
162 | currency code from .
163 |
164 | Note that ISO 4217 provides the special "XXX" code, which MAY be used
165 | if the server uses a non-currency based system for assessing fees, such as
166 | a system of credits.
167 |
168 | The use of <fee:currency> elements in commands is OPTIONAL:
169 | if a <fee:currency> element is not present in a command, the
170 | server MUST determine the currency based on the client's account settings
171 | which MUST be agreed by the client and server via an out-of-band
172 | channel. However, the <fee:currency> element MUST be present in
173 | responses.
174 |
175 | Servers SHOULD NOT perform a currency conversion if a client uses an
176 | incorrect currency code. Servers SHOULD return a 2004 error instead.
177 |
178 |
179 |
180 | When querying for fee information using the <check> command,
181 | the <fee:period> element is used to indicate the units to be added
182 | to the registration period of objects by the <create>,
183 | <renew> and <transfer> commands. This element is derived
184 | from the <domain:period> element described in .
185 |
186 | The <fee:period> element is OPTIONAL in <check> commands:
187 | if omitted, the server MUST determine the fee(s) using a validity period
188 | of 1 year. The <fee:period> element MUST be present in <check>
189 | responses.
190 |
191 |
192 |
193 |
194 | Servers which implement this extension will include elements in
195 | responses which provide information about the fees and/or credits
196 | associated with a given billable transaction.
197 |
198 | The <fee:fee> and <fee:credit> elements are used to provide
199 | this information. The presence of a <fee:fee> element in a response
200 | indicates a debit against the client's account balance; a
201 | <fee:credit> element indicates a credit. A <fee:fee> element
202 | MUST have a non-negative value. A <fee:credit> element MUST have a
203 | negative value.
204 |
205 | A server MAY respond with multiple <fee:fee> and
206 | <fee:credit> elements in the same response. In such cases, the net
207 | fee or credit applicable to the transaction is the arithmetic sum of the
208 | values of each of the <fee:fee> and/or <fee:credit> elements.
209 | This amount applies to the total additional validity period applied to the
210 | object (where applicable) rather than to any incremental unit.
211 |
212 | The following attributes are defined for the <fee:fee> element.
213 | These are described in detail below:
214 |
215 |
216 | an OPTIONAL attribute which provides a
217 | human-readable description of the fee. Servers should provide
218 | documentation on the possible values of this attribute, and their
219 | meanings.
220 |
221 | an OPTIONAL boolean attribute indicating
222 | whether the fee is refundable if the object is deleted.
223 |
224 | an OPTIONAL attribute which provides the
225 | time period during which the fee is refundable.
226 |
227 | an OPTIONAL attribute indicating when the
228 | fee will be deducted from the client's account.
229 |
230 |
231 | The <fee:credit> element can take a "description" attribute
232 | as described above. No other attributes are defined for this
233 | element.
234 |
235 |
236 | <fee:fee> elements MAY have an OPTIONAL "refundable" attribute
237 | which takes a boolean value. Fees may be refunded under certain
238 | circumstances, such as when a domain application is rejected (as
239 | described in ) or when
240 | an object is deleted during the relevant Grace Period (see below).
241 |
242 | If the "refundable" attribute is omitted, then clients SHOULD NOT make
243 | any assumption about the refundability of the fee.
244 |
245 |
246 |
247 | describes a system of "grace periods",
248 | which are time periods following a billable transaction during which,
249 | if an object is deleted, the client receives a refund.
250 |
251 | The "grace-period" attribute MAY be used to indicate the relevant
252 | grace period for a fee. If a server implements the Registry Grace
253 | Period extension, it MUST specify the grace period for all relevant
254 | transactions.
255 |
256 | If the "grace-period" attribute is omitted, then clients
257 | SHOULD NOT make any assumption about the grace period of the fee.
258 |
259 |
260 |
261 | If a <fee:fee> element has a "grace-period" attribute then
262 | it MUST also be refundable. If the "refundable" attribute of a
263 | <fee:fee> element is false then it MUST NOT have a
264 | "grace-period" attribute.
265 |
266 |
267 |
268 | Fees may be applied immediately upon receipt of a command from a
269 | client, or may only be applied once an out-of-band process (such as
270 | the processing of applications at the end of a launch phase) has
271 | taken place.
272 |
273 | The "applied" attribute of the <fee:fee> element allows
274 | servers to indicate whether a fee will be applied immediately, or
275 | whether it will be applied at some point in the future. This
276 | attribute takes two possible values: "immediate" (which is the
277 | default) or "delayed".
278 |
279 |
280 |
281 |
282 | The <fee:balance> element is an OPTIONAL element which MAY
283 | be included in server responses to transform commands. If present,
284 | it can be used by the client to determine the remaining credit at
285 | the server.
286 |
287 | Whether or not the <fee:balance> is included in responses is a
288 | matter of server policy. However, if a server chooses
289 | to offer support for this element, it MUST be included in responses
290 | to all "transform" commands (ie <create>, <renew>,
291 | <update>, <delete>, <transfer op="request">).
292 |
293 | The value of the <fee:balance> MAY be negative. A negative
294 | balance indicates that the server has extended a line of credit to the
295 | client (see below).
296 |
297 | If a server includes a <fee:balance> element in response to
298 | transform commands, the value of the element MUST reflect the client's
299 | account balance after any fees or credits associated with that command
300 | have been applied.
301 |
302 |
303 |
304 | As described above, if a server returns a response containing a
305 | <fee:balance> with a negative value, then the server has extended a
306 | line of credit to the client. A server MAY also include a
307 | <fee:creditLimit> element in responses which indicates the maximum
308 | credit available to a client. A server MAY reject certain transactions if
309 | the absolute value of the <fee:balance> is equal to or exceeds the
310 | value of the <fee:creditLimit> element.
311 |
312 | Whether or not the <fee:creditLimit> is included in responses
313 | is a matter of server policy. However, if a server chooses
314 | to offer support for this element, it MUST be included in responses
315 | to all "transform" commands (ie <create>, <renew>,
316 | <update>, <delete>, <transfer op="request">).
317 |
318 |
319 |
320 | Objects may be assigned to a particular class, category, or tier,
321 | each of which has a particular fee or set of fees associated with it. The
322 | <fee:class> element which appears in <check> responses is
323 | used to indicate the classification of an object.
324 |
325 | If a server makes use of this element, it should provide clients with a
326 | list of all the values that the element may take via an out-of-band
327 | channel. Servers MUST NOT use values which do not appear on this list.
328 |
329 | Servers which make use of this element MUST use a <fee:class>
330 | element with the value "standard" for all objects that are subject to the
331 | standard or default fee.
332 |
333 |
334 |
335 |
336 |
337 | Depending on server policy, a client MAY be required to include the
338 | extension elements described in this document for certain transform
339 | commands. Servers must provide clear documentation to clients about the
340 | circumstances in which this extension must be used.
341 |
342 | If a server receives a command from a client which does not include
343 | the extension elements required by the server for that command, then
344 | it MUST respond with a 2003 "Required parameter missing" error.
345 |
346 | If the currency or total fee provided by the client do not agree
347 | with the server's own calculation of the fee for that command, then the
348 | server MUST reject the command with a 2004 "Parameter value range"
349 | error.
350 |
351 |
352 |
353 |
354 | Sometimes, the time interval between when a client queries the
355 | fee for a command, and when that command takes place, is long enough that
356 | there is a non-negligible probability that the fee might change in
357 | the intervening time.
358 |
359 | To ensure that clients can obtain the most accurate fee information
360 | in such circumstances, clients can include a <fee:cmdDate> element
361 | in fee <check> commands, to indicate the anticipated date and time
362 | of a billable transaction.
363 |
364 | If a server receives a command containing a <fee:cmdDate> element,
365 | and the server is unable to provide accurate fee information for the given
366 | date and time, then it MUST respond with a 2306 "Parameter value policy
367 | error" error. Otherwise, the server MUST return fee information that will
368 | prevail at the date and time provided.
369 |
370 | This extension provides no mechanism to enforce the application of these
371 | fees when the command is subsequently submitted; servers MUST reject commands
372 | which include incorrect fee information, as described above.
373 |
374 | If a server knows that the fee information it is returning to a client
375 | is going to change in the future, it MAY include <fee:notAfter>
376 | elements in <check> responses. This element contains a date and time
377 | after which the provided fee information will no longer apply. Clients which
378 | receive a response from a server which contain <fee:notAfter> elements
379 | may then re-query for the fee information (using the <fee:cmdDate>
380 | element) described above if the value of the <fee:notAfter> element
381 | is before the anticipated time when the command will be submitted.
382 |
383 |
384 |
385 |
386 | A detailed description of the EPP syntax and semantics can be found in
387 | .
388 |
389 |
390 | This extension does not add any elements to the EPP <poll> or
391 | <info> commands or responses.
392 |
393 |
394 | This extension defines additional elements for the EPP
395 | <check> command.
396 |
397 | The command MAY contain an <extension> element which
398 | MAY contain a <fee:check> element. The <fee:check> element
399 | contains the following child elements:
400 |
401 |
402 | A <fee:command> element;
403 |
404 | An OPTIONAL <fee:currency> element;
405 |
406 | An OPTIONAL <fee:period> element.
407 |
408 | An OPTIONAL <fee:class> element.
409 |
410 | An OPTIONAL <fee:cmdDate> element.
411 |
412 |
413 | Example <check> command:
414 |
415 |
416 | C: <?xml version="1.0" encoding="utf-8" standalone="no"?>
417 | C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
418 | C: <command>
419 | C: <check>
420 | C: <domain:check
421 | C: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
422 | C: <domain:name>example.com</domain:name>
423 | C: <domain:name>example.net</domain:name>
424 | C: <domain:name>example.xyz</domain:name>
425 | C: </domain:check>
426 | C: </check>
427 | C: <extension>
428 | C: <fee:check xmlns:fee="urn:ietf:params:xml:ns:fee-0.12">
429 | C: <fee:command>create</fee:command>
430 | C: <fee:currency>USD</fee:currency>
431 | C: <fee:cmdDate
432 | C: >2016-05-17T13:22:21.0Z</fee:cmdDate>
433 | C: </fee:check>
434 | C: </extension>
435 | C: <clTRID>ABC-12345</clTRID>
436 | C: </command>
437 | C: </epp>
438 |
439 |
440 | When the server receives a <check> command that includes the
441 | extension elements described above, its response MUST (subject to the
442 | exception described below) contain an <extension> element,
443 | which MUST contain a child <fee:chkData> element. The
444 | <fee:chkData> element MUST contain a <fee:cd> element for
445 | each object referenced in the <check> element in the command.
446 |
447 | The <fee:cd> element has an OPTIONAL "avail" attribute which
448 | is a boolean. If the value of this attribute evaluates to false, this
449 | indicates that the server cannot calculate the relevant fees, because
450 | the object, command, currency, period or class is invalid according to
451 | server policy.
452 |
453 | The <fee:cd> contains the following child elements:
454 |
455 |
456 | A <fee:object> element, which contains a copy of the child
457 | element of the <check> element of the command, to which the fee
458 | information relates.
459 |
460 | A <fee:command> element, which contains the same command
461 | that appeared in the corresponding <fee:command> element in the
462 | command. This element MAY have the OPTIONAL "phase" and "subphase" elements,
463 | which MUST match the same attributes in the corresponding
464 | <fee:command> element in the command.
465 |
466 | A <fee:currency> element, which contains the same currency code
467 | that appeared in the <fee:currency> element of the command.
468 | If no <fee:currency> element appeared in the command, then
469 | the client's default billing currency should be used.
470 |
471 | An OPTIONAL <fee:period> element, which contains the same unit
472 | that appeared in the <fee:currency> element of the command. If
473 | the value of the preceding <fee:command> element is "restore",
474 | this element MUST NOT be included. Otherwise it MUST be included. If
475 | no <fee:period> appeared in command (and the command is not
476 | "restore") then this element MUST have a value of 1 year.
477 |
478 | Zero or more <fee:fee> elements.
479 |
480 | Zero or more <fee:credit> elements.
481 |
482 | An OPTIONAL <fee:class> element.
483 |
484 | An OPTIONAL <fee:reason> element.
485 |
486 | An OPTIONAL <fee:cmdDate> element, which contains the same
487 | date and time that appeared in the <fee:check> element of
488 | the command.
489 |
490 |
491 | If no <fee:fee> elements are present in a <fee:cd>
492 | element, this indicates that no fee will be assessed by the
493 | server for this command.
494 |
495 | If the "avail" attribute of the <fee:cd> element is false, then
496 | the <fee:cd> element MUST NOT contain any <fee:fee> or
497 | <fee:credit> child elements. If the "avail" attribute is true,
498 | then the <fee:cd> element MUST NOT contain a <fee:reason>
499 | element.
500 |
501 | Example <check> response:
502 |
503 |
504 | S: <?xml version="1.0" encoding="utf-8" standalone="no"?>
505 | S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
506 | S: <response>
507 | S: <result code="1000">
508 | S: <msg>Command completed successfully</msg>
509 | S: </result>
510 | S: <resData>
511 | S: <domain:chkData
512 | S: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
513 | S: <domain:cd>
514 | S: <domain:name avail="1">example.com</domain:name>
515 | S: </domain:cd>
516 | S: <domain:cd>
517 | S: <domain:name avail="1">example.net</domain:name>
518 | S: </domain:cd>
519 | S: <domain:cd>
520 | S: <domain:name avail="1">example.xyz</domain:name>
521 | S: </domain:cd>
522 | S: </domain:chkData>
523 | S: </resData>
524 | S: <extension>
525 | S: <fee:chkData
526 | S: xmlns:fee="urn:ietf:params:xml:ns:fee-0.12"
527 | S: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
528 | S: <fee:cd avail="1">
529 | S: <fee:object>
530 | S: <domain:name>example.com</domain:name>
531 | S: </fee:object>
532 | S: <fee:command>create</fee:command>
533 | S: <fee:currency>USD</fee:currency>
534 | S: <fee:period unit="y">1</fee:period>
535 | S: <fee:fee
536 | S: description="Registration Fee"
537 | S: refundable="1"
538 | S: grace-period="P5D">5.00</fee:fee>
539 | S: <fee:cmdDate
540 | S: >2016-05-17T13:22:21.0Z</fee:cmdDate>
541 | S: </fee:cd>
542 | S: <fee:cd avail="1">
543 | S: <fee:object>
544 | S: <domain:name>example.net</domain:name>
545 | S: </fee:object>
546 | S: <fee:command>create</fee:command>
547 | S: <fee:currency>USD</fee:currency>
548 | S: <fee:period unit="y">1</fee:period>
549 | S: <fee:fee
550 | S: description="Registration Fee"
551 | S: refundable="1"
552 | S: grace-period="P5D">5.00</fee:fee>
553 | S: <fee:cmdDate
554 | S: >2016-05-17T13:22:21.0Z</fee:cmdDate>
555 | S: </fee:cd>
556 | S: <fee:cd avail="0">
557 | S: <fee:object>
558 | S: <domain:name>example.xyz</domain:name>
559 | S: </fee:object>
560 | S: <fee:command>create</fee:command>
561 | S: <fee:currency>USD</fee:currency>
562 | S: <fee:period unit="y">1</fee:period>
563 | S: <fee:reason>
564 | S: minimum period is 2 years.
565 | S: </fee:reason>
566 | S: <fee:cmdDate
567 | S: >2016-05-17T13:22:21.0Z</fee:cmdDate>
568 | S: </fee:cd>
569 | S: </fee:chkData>
570 | S: </extension>
571 | S: <trID>
572 | S: <clTRID>ABC-12345</clTRID>
573 | S: <svTRID>54322-XYZ</svTRID>
574 | S: </trID>
575 | S: </response>
576 | S: </epp>
577 |
578 |
579 |
580 | When a server supports classes as described in Section 3.7,
581 | and the <fee:class> element is present in the command, the server MUST
582 | validate the value of this element, and return an error for unknown values.
583 | If the given value is incorrect for the specified object, the
584 | "avail" attribute of the corresponding <fee:cd> element MUST be
585 | false.
586 |
587 | The <fee:cd> section MUST contain the appropriate
588 | <fee:class> element when the servers support classes, as described
589 | in Section 3.7, and the "avail"
590 | attribute of the <fee:cd> element is true.
591 |
592 |
593 |
594 |
595 | This extension does not add any elements to the EPP
596 | <transfer> query command, but does include elements in the
597 | response, when the extension has been selected during a <login>
598 | command.
599 |
600 | When the <transfer> query command has been processed
601 | successfully, the client selected the extension when it logged in, and
602 | the client is authorised by the server to view information about the
603 | transfer, the server MAY include in the <extension> section of
604 | the EPP response a <fee:trnData> element, which contains the
605 | following child elements:
606 |
607 |
608 | A <fee:currency> element.
609 |
610 | A <fee:period> element.
611 |
612 | Zero or more <fee:fee> elements containing the fees
613 | that will be charged to the gaining client.
614 |
615 | Zero or more <fee:credit> elements containing the credits
616 | that will be refunded to the losing client.
617 |
618 |
619 | Servers SHOULD omit <fee:credit> when returning a response
620 | to the gaining client, and omit <fee:fee> elements
621 | when returning a response to the losing client.
622 |
623 | If no <fee:trnData> element is included in the
624 | response, then no fee will be assessed by the server for the
625 | transfer.
626 |
627 | Example <transfer> query response:
628 |
629 |
630 | S: <?xml version="1.0" encoding="utf-8" standalone="no"?>
631 | S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
632 | S: <response>
633 | S: <result code="1001">
634 | S: <msg>Command completed successfully; action pending</msg>
635 | S: </result>
636 | S: <resData>
637 | S: <domain:trnData
638 | S: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
639 | S: <domain:name>example.com</domain:name>
640 | S: <domain:trStatus>pending</domain:trStatus>
641 | S: <domain:reID>ClientX</domain:reID>
642 | S: <domain:reDate>2000-06-08T22:00:00.0Z</domain:reDate>
643 | S: <domain:acID>ClientY</domain:acID>
644 | S: <domain:acDate>2000-06-13T22:00:00.0Z</domain:acDate>
645 | S: <domain:exDate>2002-09-08T22:00:00.0Z</domain:exDate>
646 | S: </domain:trnData>
647 | S: </resData>
648 | S: <extension>
649 | S: <fee:trnData xmlns:fee="urn:ietf:params:xml:ns:fee-0.12">
650 | S: <fee:currency>USD</fee:currency>
651 | S: <fee:period unit="y">1</fee:period>
652 | S: <fee:fee>5.00</fee:fee>
653 | S: </fee:trnData>
654 | S: </extension>
655 | S: <trID>
656 | S: <clTRID>ABC-12345</clTRID>
657 | S: <svTRID>54322-XYZ</svTRID>
658 | S: </trID>
659 | S: </response>
660 | S: </epp>
661 |
662 |
663 |
664 |
665 |
666 |
667 |
668 |
669 |
670 | This extension adds elements to both the EPP <create> command
671 | and response, when the extension has been selected during a
672 | <login> command.
673 |
674 | When submitting a <create> command to the server, the client
675 | MAY include in the <extension> element a <fee:create>
676 | element which includes the following child elements:
677 |
678 |
679 | An OPTIONAL <fee:currency> element;
680 |
681 | One or more <fee:fee> elements.
682 |
683 |
684 | When the <create> command has been processed successfully,
685 | and the client selected the extension when it logged in, and a fee was
686 | assessed by the server for the transaction, the server MUST include in
687 | the <extension> section of the EPP response a
688 | <fee:creData> element, which contains the following child
689 | elements:
690 |
691 |
692 | A <fee:currency> element;
693 |
694 | Zero or more <fee:fee> elements;
695 |
696 | Zero or more <fee:credit> elements;
697 |
698 | An OPTIONAL <fee:balance> element;
699 |
700 | An OPTIONAL <fee:creditLimit> element.
701 |
702 |
703 | If no fee or credit has been assessed by the server for this transaction,
704 | a <fee:creData> element MUST NOT be included in the response.
705 |
706 | Example <create> command:
707 |
708 |
709 | C: <?xml version="1.0" encoding="utf-8" standalone="no"?>
710 | C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
711 | C: <command>
712 | C: <create>
713 | C: <domain:create
714 | C: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
715 | C: <domain:name>example.com</domain:name>
716 | C: <domain:period unit="y">2</domain:period>
717 | C: <domain:ns>
718 | C: <domain:hostObj>ns1.example.net</domain:hostObj>
719 | C: <domain:hostObj>ns2.example.net</domain:hostObj>
720 | C: </domain:ns>
721 | C: <domain:registrant>jd1234</domain:registrant>
722 | C: <domain:contact type="admin">sh8013</domain:contact>
723 | C: <domain:contact type="tech">sh8013</domain:contact>
724 | C: <domain:authInfo>
725 | C: <domain:pw>2fooBAR</domain:pw>
726 | C: </domain:authInfo>
727 | C: </domain:create>
728 | C: </create>
729 | C: <extension>
730 | C: <fee:create xmlns:fee="urn:ietf:params:xml:ns:fee-0.12">
731 | C: <fee:currency>USD</fee:currency>
732 | C: <fee:fee>5.00</fee:fee>
733 | C: </fee:create>
734 | C: </extension>
735 | C: <clTRID>ABC-12345</clTRID>
736 | C: </command>
737 | C: </epp>
738 |
739 |
740 | Example <create> response:
741 |
742 |
743 | S: <?xml version="1.0" encoding="utf-8" standalone="no"?>
744 | S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
745 | S: <response>
746 | S: <result code="1000">
747 | S: <msg>Command completed successfully</msg>
748 | S: </result>
749 | S: <resData>
750 | S: <domain:creData
751 | S: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
752 | S: <domain:name>example.com</domain:name>
753 | S: <domain:crDate>1999-04-03T22:00:00.0Z</domain:crDate>
754 | S: <domain:exDate>2001-04-03T22:00:00.0Z</domain:exDate>
755 | S: </domain:creData>
756 | S: </resData>
757 | S: <extension>
758 | S: <fee:creData xmlns:fee="urn:ietf:params:xml:ns:fee-0.12">
759 | S: <fee:currency>USD</fee:currency>
760 | S: <fee:fee grace-period="P5D">5.00</fee:fee>
761 | S: <fee:balance>-5.00</fee:balance>
762 | S: <fee:creditLimit>1000.00</fee:creditLimit>
763 | S: </fee:creData>
764 | S: </extension>
765 | S: <trID>
766 | S: <clTRID>ABC-12345</clTRID>
767 | S: <svTRID>54321-XYZ</svTRID>
768 | S: </trID>
769 | S: </response>
770 | S: </epp>
771 |
772 |
773 |
774 |
775 |
776 | This extension does not add any elements to the EPP <delete>
777 | command, but does include elements in the response, when the extension
778 | has been selected during the <login> command.
779 |
780 | When the <delete> command has been processed successfully,
781 | and the client selected the extension when it logged in, the server
782 | MAY include in the <extension> section of the EPP response a
783 | <fee:delData> element, which contains the following child
784 | elements:
785 |
786 |
787 | A <fee:currency> element;
788 |
789 | Zero or more <fee:fee> elements;
790 |
791 | Zero or more <fee:credit> elements;
792 |
793 | An OPTIONAL <fee:balance> element;
794 |
795 | An OPTIONAL <fee:creditLimit> element.
796 |
797 |
798 | If no credit has been assessed by the server for this transaction,
799 | a <fee:delData> element MUST NOT be included in the response.
800 |
801 | Example <delete> response:
802 |
803 |
804 | S: <?xml version="1.0" encoding="utf-8" standalone="no"?>
805 | S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
806 | S: <response>
807 | S: <result code="1000">
808 | S: <msg>Command completed successfully</msg>
809 | S: </result>
810 | S: <extension>
811 | S: <fee:delData
812 | S: xmlns:fee="urn:ietf:params:xml:ns:fee-0.12">
813 | S: <fee:currency>USD</fee:currency>
814 | S: <fee:credit description="AGP Credit">-5.00</fee:credit>
815 | S: <fee:balance>1005.00</fee:balance>
816 | S: </fee:delData>
817 | S: </extension>
818 | S: <trID>
819 | S: <clTRID>ABC-12345</clTRID>
820 | S: <svTRID>54321-XYZ</svTRID>
821 | S: </trID>
822 | S: </response>
823 | S: </epp>
824 |
825 |
826 |
827 |
828 | This extension adds elements to both the EPP <renew> command
829 | and response, when the extension has been selected during a
830 | <login> command.
831 |
832 | When submitting a <renew> command to the server, the client
833 | MAY include in the <extension> element a <fee:renew>
834 | element which includes the following child elements:
835 |
836 |
837 | An OPTIONAL <fee:currency> element;
838 |
839 | One or more <fee:fee> elements.
840 |
841 |
842 | When the <renew> command has been processed successfully,
843 | and the client selected the extension when it logged in, the server
844 | MAY include in the <extension> section of the EPP response a
845 | <fee:renData> element, which contains the following child
846 | elements:
847 |
848 |
849 | A <fee:currency> element;
850 |
851 | Zero or more <fee:fee> elements;
852 |
853 | Zero or more <fee:credit> elements;
854 |
855 | An OPTIONAL <fee:balance> element;
856 |
857 | An OPTIONAL <fee:creditLimit> element.
858 |
859 |
860 | If no fee or credit has been assessed by the server for this transaction,
861 | a <fee:renData> element MUST NOT be included in the response.
862 |
863 | Example <renew> command:
864 |
865 |
866 | C: <?xml version="1.0" encoding="utf-8" standalone="no"?>
867 | C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
868 | C: <command>
869 | C: <renew>
870 | C: <domain:renew
871 | C: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
872 | C: <domain:name>example.com</domain:name>
873 | C: <domain:curExpDate>2000-04-03</domain:curExpDate>
874 | C: <domain:period unit="y">5</domain:period>
875 | C: </domain:renew>
876 | C: </renew>
877 | C: <extension>
878 | C: <fee:renew xmlns:fee="urn:ietf:params:xml:ns:fee-0.12">
879 | C: <fee:currency>USD</fee:currency>
880 | C: <fee:fee>5.00</fee:fee>
881 | C: </fee:renew>
882 | C: </extension>
883 | C: <clTRID>ABC-12345</clTRID>
884 | C: </command>
885 | C: </epp>
886 |
887 |
888 | Example <renew> response:
889 |
890 |
891 | S: <?xml version="1.0" encoding="utf-8" standalone="no"?>
892 | S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
893 | S: <response>
894 | S: <result code="1000">
895 | S: <msg>Command completed successfully</msg>
896 | S: </result>
897 | S: <resData>
898 | S: <domain:renData
899 | S: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
900 | S: <domain:name>example.com</domain:name>
901 | S: <domain:exDate>2005-04-03T22:00:00.0Z</domain:exDate>
902 | S: </domain:renData>
903 | S: </resData>
904 | S: <extension>
905 | S: <fee:renData xmlns:fee="urn:ietf:params:xml:ns:fee-0.12">
906 | S: <fee:currency>USD</fee:currency>
907 | S: <fee:fee grace-period="P5D">5.00</fee:fee>
908 | S: <fee:balance>1000.00</fee:balance>
909 | S: </fee:renData>
910 | S: </extension>
911 | S: <trID>
912 | S: <clTRID>ABC-12345</clTRID>
913 | S: <svTRID>54322-XYZ</svTRID>
914 | S: </trID>
915 | S: </response>
916 | S: </epp>
917 |
918 |
919 |
920 |
921 |
922 | This extension adds elements to both the EPP <transfer>
923 | command and response, when the value of the "op" attribute of the
924 | <transfer> command element is "request", and the extension has
925 | been selected during the <login> command.
926 |
927 | When submitting a <transfer> command to the server, the client
928 | MAY include in the <extension> element a <fee:transfer>
929 | element which includes the following child elements:
930 |
931 |
932 | An OPTIONAL <fee:currency> element;
933 |
934 | One or more <fee:fee> elements.
935 |
936 |
937 | When the <transfer> command has been processed successfully,
938 | and the client selected the extension when it logged in, the server
939 | MAY include in the <extension> section of the EPP response a
940 | <fee:trnData> element, which contains the following child
941 | elements:
942 |
943 |
944 | A <fee:currency> element;
945 |
946 | Zero or more <fee:fee> elements;
947 |
948 | Zero or more <fee:credit> elements;
949 |
950 | An OPTIONAL <fee:balance> element;
951 |
952 | An OPTIONAL <fee:creditLimit> element.
953 |
954 |
955 | If no fee or credit has been assessed by the server for this transaction,
956 | a <fee:trnData> element MUST NOT be included in the response.
957 |
958 | Example <transfer> command:
959 |
960 |
961 | C: <?xml version="1.0" encoding="utf-8" standalone="no"?>
962 | C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
963 | C: <command>
964 | C: <transfer op="request">
965 | C: <domain:transfer
966 | C: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
967 | C: <domain:name>example.com</domain:name>
968 | C: <domain:period unit="y">1</domain:period>
969 | C: <domain:authInfo>
970 | C: <domain:pw roid="JD1234-REP">2fooBAR</domain:pw>
971 | C: </domain:authInfo>
972 | C: </domain:transfer>
973 | C: </transfer>
974 | C: <extension>
975 | C: <fee:transfer xmlns:fee="urn:ietf:params:xml:ns:fee-0.12">
976 | C: <fee:currency>USD</fee:currency>
977 | C: <fee:fee>5.00</fee:fee>
978 | C: </fee:transfer>
979 | C: </extension>
980 | C: <clTRID>ABC-12345</clTRID>
981 | C: </command>
982 | C: </epp>
983 |
984 |
985 | Example <transfer> response:
986 |
987 |
988 | S: <?xml version="1.0" encoding="utf-8" standalone="no"?>
989 | S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
990 | S: <response>
991 | S: <result code="1001">
992 | S: <msg>Command completed successfully; action pending</msg>
993 | S: </result>
994 | S: <resData>
995 | S: <domain:trnData
996 | S: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
997 | S: <domain:name>example.com</domain:name>
998 | S: <domain:trStatus>pending</domain:trStatus>
999 | S: <domain:reID>ClientX</domain:reID>
1000 | S: <domain:reDate>2000-06-08T22:00:00.0Z</domain:reDate>
1001 | S: <domain:acID>ClientY</domain:acID>
1002 | S: <domain:acDate>2000-06-13T22:00:00.0Z</domain:acDate>
1003 | S: <domain:exDate>2002-09-08T22:00:00.0Z</domain:exDate>
1004 | S: </domain:trnData>
1005 | S: </resData>
1006 | S: <extension>
1007 | S: <fee:trnData xmlns:fee="urn:ietf:params:xml:ns:fee-0.12">
1008 | S: <fee:currency>USD</fee:currency>
1009 | S: <fee:fee grace-period="P5D">5.00</fee:fee>
1010 | S: </fee:trnData>
1011 | S: </extension>
1012 | S: <trID>
1013 | S: <clTRID>ABC-12345</clTRID>
1014 | S: <svTRID>54322-XYZ</svTRID>
1015 | S: </trID>
1016 | S: </response>
1017 | S: </epp>
1018 |
1019 |
1020 |
1021 |
1022 |
1023 | This extension adds elements to both the EPP <update> command
1024 | and response, when the extension has been selected during a
1025 | <login> has been selected during the <login> command.
1026 |
1027 | When submitting a <update> command to the server, the client
1028 | MAY include in the <extension> element a <fee:update>
1029 | element which includes the following child elements:
1030 |
1031 |
1032 | An OPTIONAL <fee:currency> element;
1033 |
1034 | One or more <fee:fee> elements.
1035 |
1036 |
1037 | When the <update> command has been processed successfully,
1038 | and the client selected the extension when it logged in, the server
1039 | MAY include in the <extension> section of the EPP response a
1040 | <fee:upData> element, which contains the following child
1041 | elements:
1042 |
1043 |
1044 | A <fee:currency> element;
1045 |
1046 | Zero or more <fee:fee> elements;
1047 |
1048 | Zero or more <fee:credit> elements;
1049 |
1050 | An OPTIONAL <fee:balance> element;
1051 |
1052 | An OPTIONAL <fee:creditLimit> element.
1053 |
1054 |
1055 | If no fee or credit has been assessed by the server for this transaction,
1056 | a <fee:upData> element MUST NOT be included in the response.
1057 |
1058 | Example <update> command:
1059 |
1060 |
1061 | C: <?xml version="1.0" encoding="utf-8" standalone="no"?>
1062 | C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
1063 | C: <command>
1064 | C: <update>
1065 | C: <domain:update
1066 | C: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
1067 | C: <domain:name>example.com</domain:name>
1068 | C: <domain:chg>
1069 | C: <domain:registrant>sh8013</domain:registrant>
1070 | C: </domain:chg>
1071 | C: </domain:update>
1072 | C: </update>
1073 | C: <extension>
1074 | C: <fee:update xmlns:fee="urn:ietf:params:xml:ns:fee-0.12">
1075 | C: <fee:currency>USD</fee:currency>
1076 | C: <fee:fee>5.00</fee:fee>
1077 | C: </fee:update>
1078 | C: </extension>
1079 | C: <clTRID>ABC-12345</clTRID>
1080 | C: </command>
1081 | C: </epp>
1082 |
1083 |
1084 | Example <update> response:
1085 |
1086 |
1087 | S: <?xml version="1.0" encoding="utf-8" standalone="no"?>
1088 | S: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
1089 | S: <response>
1090 | S: <result code="1000">
1091 | S: <msg>Command completed successfully</msg>
1092 | S: </result>
1093 | S: <extension>
1094 | S: <fee:updData xmlns:fee="urn:ietf:params:xml:ns:fee-0.12">
1095 | S: <fee:currency>USD</fee:currency>
1096 | S: <fee:fee>5.00</fee:fee>
1097 | S: </fee:updData>
1098 | S: </extension>
1099 | S: <trID>
1100 | S: <clTRID>ABC-12345</clTRID>
1101 | S: <svTRID>54321-XYZ</svTRID>
1102 | S: </trID>
1103 | S: </response>
1104 | S: </epp>
1105 |
1106 |
1107 |
1108 |
1109 |
1110 |
1111 |
1112 | An EPP object mapping is specified in XML Schema notation. The formal
1113 | syntax presented here is a complete schema representation of the object
1114 | mapping suitable for automated validation of EPP XML instances.
1115 |
1116 | Copyright (c) 2014 IETF Trust and the persons identified as authors
1117 | of the code. All rights reserved.
1118 |
1119 | Redistribution and use in source and binary forms, with or without
1120 | modification, are permitted provided that the following conditions are
1121 | met:
1122 |
1123 |
1124 | Redistributions of source code must retain the above copyright
1125 | notice, this list of conditions and the following disclaimer.
1126 |
1127 | Redistributions in binary form must reproduce the above copyright
1128 | notice, this list of conditions and the following disclaimer in the
1129 | documentation and/or other materials provided with the
1130 | distribution.
1131 |
1132 | Neither the name of Internet Society, IETF or IETF Trust, nor the
1133 | names of specific contributors, may be used to endorse or promote
1134 | products derived from this software without specific prior written
1135 | permission.
1136 |
1137 |
1138 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1139 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1140 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
1141 | PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
1142 | OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
1143 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
1144 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
1145 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
1146 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
1147 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
1148 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1149 |
1150 |
1151 | BEGIN
1152 | <?xml version="1.0" encoding="utf-8"?>
1153 | <schema xmlns="http://www.w3.org/2001/XMLSchema"
1154 | xmlns:fee="urn:ietf:params:xml:ns:fee-0.12"
1155 | xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
1156 | xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
1157 | targetNamespace="urn:ietf:params:xml:ns:fee-0.12"
1158 | elementFormDefault="qualified">
1159 |
1160 | <import namespace="urn:ietf:params:xml:ns:eppcom-1.0" />
1161 | <import namespace="urn:ietf:params:xml:ns:domain-1.0" />
1162 |
1163 | <annotation>
1164 | <documentation>Extensible Provisioning Protocol
1165 | v1.0 extension schema for fee
1166 | information.</documentation>
1167 | </annotation>
1168 |
1169 | <!--
1170 | Child elements found in EPP commands and responses
1171 | -->
1172 | <element name="check" type="fee:checkType" />
1173 | <element name="chkData" type="fee:chkDataType" />
1174 | <element name="create" type="fee:transformCommandType" />
1175 | <element name="creData" type="fee:transformResultType" />
1176 | <element name="renew" type="fee:transformCommandType" />
1177 | <element name="renData" type="fee:transformResultType" />
1178 | <element name="transfer" type="fee:transformCommandType" />
1179 | <element name="trnData" type="fee:transferResultType" />
1180 | <element name="update" type="fee:transformCommandType" />
1181 | <element name="updData" type="fee:transformResultType" />
1182 | <element name="delData" type="fee:transformResultType" />
1183 |
1184 | <!--
1185 | client <check> command
1186 | -->
1187 | <complexType name="checkType">
1188 | <sequence>
1189 | <element name="command" type="fee:commandType" />
1190 | <element name="currency" type="fee:currencyType"
1191 | minOccurs="0" />
1192 | <element name="period" type="domain:periodType"
1193 | minOccurs="0" />
1194 | <element name="class" type="token"
1195 | minOccurs="0" />
1196 | <element name="cmdDate" type="dateTime"
1197 | minOccurs="0" />
1198 | </sequence>
1199 | </complexType>
1200 |
1201 | <!--
1202 | server <check> result
1203 | -->
1204 | <complexType name="chkDataType">
1205 | <sequence>
1206 | <element name="cd" type="fee:objectCDType"
1207 | maxOccurs="unbounded" />
1208 | </sequence>
1209 | </complexType>
1210 |
1211 | <complexType name="objectCDType">
1212 | <sequence>
1213 | <element name="object">
1214 | <complexType>
1215 | <sequence>
1216 | <any namespace="##other" processContents="lax"/>
1217 | </sequence>
1218 | </complexType>
1219 | </element>
1220 | <element name="command" type="fee:commandType" />
1221 | <element name="currency" type="fee:currencyType" />
1222 | <element name="period" type="domain:periodType"
1223 | minOccurs="0" maxOccurs="1" />
1224 | <element name="fee" type="fee:feeType"
1225 | minOccurs="0" maxOccurs="unbounded" />
1226 | <element name="credit" type="fee:creditType"
1227 | minOccurs="0" maxOccurs="unbounded" />
1228 | <element name="class" type="token" minOccurs="0" />
1229 | <element name="reason" type="token" minOccurs="0" />
1230 | <element name="cmdDate" type="dateTime"
1231 | minOccurs="0" />
1232 | <element name="notAfter" type="dateTime"
1233 | minOccurs="0" />
1234 | </sequence>
1235 | <attribute name="avail" type="boolean" default="1" />
1236 | </complexType>
1237 |
1238 | <!--
1239 | general transform (create, renew, update, transfer) command
1240 | -->
1241 | <complexType name="transformCommandType">
1242 | <sequence>
1243 | <element name="currency" type="fee:currencyType"
1244 | minOccurs="0" />
1245 | <element name="fee" type="fee:feeType"
1246 | maxOccurs="unbounded" />
1247 | <element name="credit" type="fee:creditType"
1248 | minOccurs="0" maxOccurs="unbounded" />
1249 | </sequence>
1250 | </complexType>
1251 |
1252 | <!--
1253 | general transform (create, renew, update, delete) result
1254 | -->
1255 | <complexType name="transformResultType">
1256 | <sequence>
1257 | <element name="currency" type="fee:currencyType" />
1258 | <element name="fee" type="fee:feeType"
1259 | minOccurs="0" maxOccurs="unbounded" />
1260 | <element name="credit" type="fee:creditType"
1261 | minOccurs="0" maxOccurs="unbounded" />
1262 | <element name="balance" type="fee:balanceType"
1263 | minOccurs="0" />
1264 | <element name="creditLimit" type="fee:creditLimitType"
1265 | minOccurs="0" />
1266 | </sequence>
1267 | </complexType>
1268 |
1269 | <!--
1270 | transfer result
1271 | -->
1272 | <complexType name="transferResultType">
1273 | <sequence>
1274 | <element name="currency" type="fee:currencyType" />
1275 |
1276 | <!-- only used op="query" responses -->
1277 | <element name="period" type="domain:periodType"
1278 | minOccurs="0" />
1279 |
1280 | <element name="fee" type="fee:feeType"
1281 | maxOccurs="unbounded" />
1282 | <element name="credit" type="fee:creditType"
1283 | minOccurs="0" maxOccurs="unbounded" />
1284 |
1285 | <element name="balance" type="fee:balanceType"
1286 | minOccurs="0" />
1287 | <element name="creditLimit" type="fee:creditLimitType"
1288 | minOccurs="0" />
1289 | </sequence>
1290 | </complexType>
1291 |
1292 | <!--
1293 | common types
1294 | -->
1295 | <simpleType name="currencyType">
1296 | <restriction base="string">
1297 | <pattern value="[A-Z]{3}" />
1298 | </restriction>
1299 | </simpleType>
1300 |
1301 | <complexType name="commandType">
1302 | <simpleContent>
1303 | <extension base="fee:commandTypeValue">
1304 | <attribute name="phase" type="token" />
1305 | <attribute name="subphase" type="token" />
1306 | </extension>
1307 | </simpleContent>
1308 | </complexType>
1309 |
1310 | <simpleType name="commandTypeValue">
1311 | <restriction base="token">
1312 | <minLength value="3"/>
1313 | <maxLength value="16"/>
1314 | </restriction>
1315 | </simpleType>
1316 |
1317 | <simpleType name="nonNegativeDecimal">
1318 | <restriction base="decimal">
1319 | <minInclusive value="0" />
1320 | </restriction>
1321 | </simpleType>
1322 |
1323 | <simpleType name="negativeDecimal">
1324 | <restriction base="decimal">
1325 | <maxInclusive value="0" />
1326 | </restriction>
1327 | </simpleType>
1328 |
1329 | <complexType name="feeType">
1330 | <simpleContent>
1331 | <extension base="fee:nonNegativeDecimal">
1332 | <attribute name="description"/>
1333 | <attribute name="refundable" type="boolean" />
1334 | <attribute name="grace-period" type="duration" />
1335 | <attribute name="applied" default="immediate">
1336 | <simpleType>
1337 | <restriction base="token">
1338 | <enumeration value="immediate" />
1339 | <enumeration value="delayed" />
1340 | </restriction>
1341 | </simpleType>
1342 | </attribute>
1343 | </extension>
1344 | </simpleContent>
1345 | </complexType>
1346 |
1347 | <complexType name="creditType">
1348 | <simpleContent>
1349 | <extension base="fee:negativeDecimal">
1350 | <attribute name="description"/>
1351 | </extension>
1352 | </simpleContent>
1353 | </complexType>
1354 |
1355 | <simpleType name="balanceType">
1356 | <restriction base="decimal" />
1357 | </simpleType>
1358 |
1359 | <simpleType name="creditLimitType">
1360 | <restriction base="decimal" />
1361 | </simpleType>
1362 |
1363 | </schema>
1364 |
1365 | END
1366 |
1367 |
1368 |
1369 |
1370 |
1371 |
1372 | The mapping extensions described in this document do not provide any
1373 | security services beyond those described by EPP,
1374 | the EPP domain name mapping, and protocol
1375 | layers used by EPP. The security considerations described in these other
1376 | specifications apply to this specification as well.
1377 |
1378 |
1379 |
1380 | This document uses URNs to describe XML namespaces and XML schemas
1381 | conforming to a registry mechanism described in .
1382 | The following URI assignment is requested of IANA:
1383 | URI: urn:ietf:params:xml:ns:fee-&VERSION;
1384 | Registrant Contact: See the "Author's Address" section of this
1385 | document.
1386 | XML: See the "Formal Syntax" section of this document.
1387 |
1388 |
1389 | The EPP extension described in this document should be registered
1390 | by the IANA in the EPP Extension Registry described in . The details of the registration are as follows:
1391 | Name of Extension: EPP Fee Extension
1392 | Document status: Standards Track
1393 | Reference: (insert reference to RFC version of this document)
1394 | Registrant Name and Email Address: See the "Author's Address" section
1395 | of this document.
1396 | TLDs: any
1397 | IPR Disclosure: none
1398 | Status: active
1399 | Notes: none
1400 |
1401 |
1402 |
1403 |
1404 | Note to RFC Editor: Please remove this section and the reference to
1405 | before publication.
1406 |
1407 | This section records the status of known implementations of the
1408 | protocol defined by this specification at the time of posting of this
1409 | Internet-Draft, and is based on a proposal described in .
1410 | The description of implementations in this section is
1411 | intended to assist the IETF in its decision processes in progressing
1412 | drafts to RFCs. Please note that the listing of any individual
1413 | implementation here does not imply endorsement by the IETF.
1414 | Furthermore, no effort has been spent to verify the information
1415 | presented here that was supplied by IETF contributors. This is not
1416 | intended as, and must not be construed to be, a catalog of available
1417 | implementations or their features. Readers are advised to note that
1418 | other implementations may exist.
1419 |
1420 | According to , "this will allow reviewers and
1421 | working groups to assign due consideration to documents that have the
1422 | benefit of running code, which may serve as evidence of valuable
1423 | experimentation and feedback that have made the implemented protocols
1424 | more mature. It is up to the individual working groups to use this
1425 | information as they see fit".
1426 |
1427 |
1428 | Organization: CentralNic
1429 | Name: RegistryEngine EPP Service
1430 | Description: Generic high-volume EPP service for gTLDs, ccTLDs and SLDs
1431 | Level of maturity: Deployed in CentralNic's production environment as well
1432 | as two other gTLD registry systems, and two ccTLD registry systems.
1433 | Coverage: All aspects of the protocol are implemented.
1434 | Licensing: Proprietary In-House software
1435 | Contact: epp@centralnic.com
1436 | URL: https://www.centralnic.com
1437 |
1438 |
1439 |
1440 |
1441 | The authors wish to thank the following persons for their feedback and
1442 | suggestions:
1443 |
1444 | James Gould and Scott Hollenbeck of Verisign
1445 | Luis Muñoz of Uniregistry
1446 | Michael Young of Architelos
1447 | Ben Levac and Jeff Eckhaus of Demand Media
1448 | Seth Goldman and Brian Mountford of Google
1449 | Klaus Malorny and Michael Bauland of Knipp
1450 | Jody Kolker and Roger Carney of Go Daddy
1451 | Michael Holloway of Com Laude
1452 | Santosh Kalsangrah of Impetus Infotech
1453 | Alex Mayrhofer of Nic.at
1454 | Pat Moroney of Name.com
1455 | Bernhard Reutner-Fischer
1456 |
1457 |
1458 |
1459 |
1460 |
1461 |
1462 | Restore the <check> command extension; either <check>
1463 | or <info> can be used.
1464 | added extension elements for <create>, <renew>,
1465 | <transfer> and <update> so that the server can reject the
1466 | command if the fee is incorrect.
1467 |
1468 |
1469 |
1470 |
1471 | Use Internet-Draft version number rather than XML namespace version
1472 | number in this section.
1473 | Support for multiple <fee:fee> and <fee:credit>
1474 | elements.
1475 | Added the "description" attribute to <fee:fee> and
1476 | <fee:credit> elements.
1477 | Added the <fee:balance> element.
1478 | Added the <fee:creditLimit> element.
1479 | Updated reference to
1480 | .
1481 | Use <fee:command> instead of <fee:action>.
1482 | Use a single child element of <fee:chkData> instead of multiple
1483 | elements for each domain. This also requires using a different name
1484 | (<fee:name>) for the domain name.
1485 | Added the "refundable" attribute to <fee:fee> elements.
1486 | Added the "grace-period" attribute to <fee:fee> elements.
1487 |
1488 |
1489 |
1490 |
1491 | Added the "applied" attribute to to <fee:fee> elements.
1492 | Simplified the wording in relation to when a server can return an
1493 | error for extended <info> commands.
1494 | Added the <fee:period> element to transfer query responses.
1495 | Removed wording about how servers behave when receiving incorrect
1496 | fee information from transform commands, and put it into a single
1497 | section at the top of the document.
1498 | Allow servers to omit <fee:fee> elements from <fee:cd>
1499 | elements if the command specified by the client is forbidden.
1500 |
1501 |
1502 |
1503 |
1504 | Changed Intended Status to Standards Track.
1505 | As per suggestion from Michael Bauland, the <fee:period>
1506 | element is no longer included in <check> and <info>
1507 | responses for "restore" commands. It's still mandatory for all other
1508 | commands.
1509 | Added summary of the attributes for the <fee:fee> element.
1510 | Clarified that the "refundable" and "grace-period" attributes of
1511 | the <fee:fee> elements are dependant on each other and cannot
1512 | appear on their own.
1513 | Removed the option of returning a 1001 response when the fee is
1514 | incorrect.
1515 | Forbidden the inclusion of extension elements in transform responses
1516 | if no fee/credit has been assessed.
1517 | Made the <fee:currency> element optional in transform
1518 | commands.
1519 | Amended XML Namespace section of IANA Considerations, added
1520 | EPP Extension Registry section.
1521 |
1522 |
1523 |
1524 |
1525 | Removed the extended <info> command. The <check> command
1526 | is the only command that can be used now.
1527 | Introduced a mandatory-to-implement "standard" class for non-premium
1528 | domains.
1529 | The decision was made to keep availability info in <check> responses
1530 | as registrars have indicated that it is very useful as it avoids unnecessary
1531 | round trips to the server.
1532 | Allow <fee:credit> elements to be present in <check>
1533 | responses.
1534 | Allow the number of <fee:fee> which can appear in transform responses
1535 | to be zero.
1536 | Removed the <fee:balance> and <fee:creditLimit> elements from
1537 | transfer query responses. The reason is that these elements are defined
1538 | as containing the values after the transform command has taken place - which
1539 | means that it is not appropriate to include them in a query response.
1540 | Added Implementation Status section.
1541 |
1542 |
1543 |
1544 |
1545 | The specification is now object-agnostic, but works with
1546 | RFC5731 domains by default.
1547 | Renamed the <fee:domain> element to <fee:object>. Added the
1548 | "objURI" attribute.
1549 | Removed the default value for the "refundable" attribute of <fee:fee>
1550 | elements, and added text about how clients should handle such cases. Added similar
1551 | text to the documentation of the "grace-period" attribute.
1552 | Removed references to the defunct <info> command syntax.
1553 | "MUST" requirements regarding documentation have been changed to "must".
1554 | Created separate "Correlation between Refundability and Grace Periods" section
1555 | describing how the "refundable" and "grace-period" attributes work together.
1556 |
1557 |
1558 |
1559 |
1560 | Changed the syntax of the <check> form to be simpler: a single set of
1561 | <fee:command>, <fee:currency> etc elements is applied to the objects
1562 | specified in the main body of the <check> command.
1563 | Simplified the object-agnosticism to simply copy the element from the
1564 | <check> command into the <fee:cd> element.
1565 | Added the "avail" attribute to the <fee:cd> element and added commentary
1566 | about its semantics.
1567 | Added the <fee:reason> element to the <check> response so
1568 | servers can indicate why fee information is not available.
1569 |
1570 |
1571 |
1572 |
1573 | Minor typographic corrections.
1574 | The schema was updated to allow <balance> and <creditLimit> elements
1575 | in <transfer> responses, as the text stated.
1576 | Allow <fee:fee> elements in <delete> responses (suggested by
1577 | Luis Muñoz)
1578 | Added <fee:cmdDate> element in fee <check> commands.
1579 | Added <fee:notAfter> element in fee <check> responses.
1580 |
1581 |
1582 |
1583 |
1584 |
1585 |
1586 |
1587 |
1588 | &RFC2119;
1589 | &RFC3688;
1590 | &RFC3915;
1591 | &RFC5730;
1592 | &RFC5731;
1593 | &RFC6982;
1594 | &RFC7451;
1595 |
1596 |
1597 |
1598 | ISO 4217:2008, Codes for the representation of currencies
1599 | and funds
1600 |
1601 | International Organization for
1602 | Standardization
1603 |
1604 |
1605 |
1606 |
1607 |
1608 |
1609 |
1610 |
1611 |
1612 | Launch Phase Mapping for the Extensible Provisioning
1613 | Protocol (EPP)
1614 |
1615 |
1616 |
1617 |
1618 |
1619 |
1620 |
1621 |
1622 |
1623 |
1624 |
--------------------------------------------------------------------------------