├── 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 | --------------------------------------------------------------------------------