文章目录
1. 引言
本文档描述了可扩展配置协议(EPP) 1.0版本的个人和组织标识符映射。这种映射是使用[W3C中描述的可扩展标记语言(XML) 1.0来指定的。和在[W3C]中描述的XML模式符号。rec - xmlschema 1 - 20041028]和[w3c.rec - xmlschema - 2 - 20041028]。本文件废止RFC4933 [RFC4933]。
[RFC5730]提供了EPP命令和响应结构的完整描述。全面了解基本协议规范对于理解本文档中描述的映射是必要的。
XML是区分大小写的。除非另有说明,本文档中提供的XML规范和示例必须用字符来解释,以开发符合规范的实现。
1.1 本文档中的约定
在示例中,“C:”表示协议客户端发送的行,“S:”表示协议服务器返回的行。示例中的缩进和空白仅用于说明元素关系,并不是此协议的必需特性。
2. 对象属性
EPP联系人对象具有可以由发起客户端或服务器查看和修改的属性和关联值。本节详细描述每种属性类型。这里描述的属性值的正式语法可以在本文档的“正式语法”部分和适当的规范参考中找到。
2.1 联系人和客户端标示符
所有EPP联系人都由服务器唯一标识符标识。联系人标识符是具有指定最小长度、指定最大长度和指定格式的字符串。联系人标识符使用[RFC5730]中描述的“clIDType”客户端标识符语法。
2.2 状态值
contact对象必须始终具有至少一个关联的状态值。状态值只能由发起联系人对象的客户机和对象所在的服务器设置。客户端可以使用EPP <update>命令更改联系人对象的状态。每个状态值可能都伴随着一个人类可读的文本字符串,该字符串描述了应用于对象的状态的基本原理。
客户端不能改变服务器设置的状态值。根据本地服务器策略,服务器可以更改或覆盖客户端设置的状态值。对象的状态可能由于客户端发起的转换命令或服务器操作符执行的操作而更改。
可以由客户端添加或删除的状态值以“客户端”为前缀。可以由服务器添加或删除的相应状态值的前缀为“server”。不以“客户端”或“服务器”开头的状态值是服务器管理的。
状态值描述:
-
clientDeleteProhibited, serverDeleteProhibited
必须拒绝删除对象的请求。
-
clientTransferProhibited, serverTransferProhibited
必须拒绝转换对象的请求。
-
clientUpdateProhibited, serverUpdateProhibited
必须拒绝更新对象(删除此状态除外)的请求。
-
linked
contact对象至少与另一个对象(例如域对象)有一个活动关联。服务器应该提供服务来确定现有的对象关联。
-
ok
这是没有挂起操作或禁止的对象的正常状态值。此值由服务器在添加或删除其他状态值时设置和删除。
-
pendingCreate, pendingDelete, pendingTransfer, pendingUpdate
已经为对象处理了转换命令,但是服务器还没有完成操作。服务器操作员可以出于各种原因延迟操作完成,比如允许人工检查或第三方操作。使用响应代码1001记录正在处理的转换命令,但其请求的操作处于挂起状态。
当请求的操作完成时,必须删除pendingCreate、pendingDelete、pendingTransfer或pendingUpdate状态值。必须使用服务消息通知所有涉及到事务的客户端操作已经完成,并且对象的状态已经更改。
"ok"状态只能与"linked"状态合并。
“linked”状态可以与任何状态相结合。
“pendingDelete”状态不能与“clientdelete”或“serverdelete”状态相结合。
“pendingTransfer”状态不能与“clienttransferforbidden”或“servertransferforbidden”状态相结合。“pendingUpdate”状态不能与“clientupdate”或“serverupdate”状态相结合。
pendingCreate、pendingDelete、pendingTransfer和pendingUpdate状态值不能相互组合。
可以使用其他未明确禁止的状态组合。
2.3 个人和机构名称
与联系人关联的个人和组织名称使用字符串表示。这些字符串有指定的最小长度和指定的最大长度。根据本地需要,可以使用UTF-8 [RFC3629]或UTF-8的子集(可以用7位ASCII表示)来提供个人和组织名称。
2.4 地址
每个联系人都有相关的邮政地址信息。邮政地址包含可选的街道信息、城市信息、可选的州/省信息、可选的邮政编码和国家标识符。地址信息可以用UTF-8提供,也可以用7位ASCII表示的UTF-8子集提供,这取决于本地需要。
2.4.1 街道、城市、州或省
联系人街道、城市和州或省信息使用字符串表示。这些字符串有指定的最小长度和指定的最大长度。
2.4.2 邮政编码
联系人邮政编码使用字符串表示。这些字符串有指定的最小长度和指定的最大长度。
2.4.3 国家
联系人国家标识符使用[ISO3166-1]中指定的双字符标识符表示。
2.5 电话号码
联系电话号码结构源自[ITU.E164.2005]中定义的结构。此映射中描述的电话号码是字符串,必须以加号(“+”,ASCII值0x002B)开头,后跟[ITU.E164.2005]中定义的国家代码,后跟一个点(")。, ASCII值0x002E),后跟表示电话号码的数字序列。提供了一个可选的“x”属性来记录电话分机信息。
2.6 邮件地址
电子邮件地址语法定义在[RFC5322]。此映射没有规定用于表示电子邮件地址的字符串的最小或最大长度。
2.7 日期和时间
日期和时间属性值必须使用公历以通用协调时间(UTC)表示。使用[W3C中定义的大写“T”和“Z”字符的扩展日期-时间表单。必须使用REC-xmlschema-2-20041028]来表示日期-时间值,因为XML模式不支持截断的日期-时间表单或小写的“T”和“Z”字符。
2.8 授权信息
授权信息与联系人对象相关联,以方便传输操作。在创建联系人对象时分配授权信息,并且将来可能会对其进行更新。此规范描述了基于密码的授权信息,但也可以使用其他机制。
2.9 数据元素和属性的公开
EPP核心协议要求服务器操作员向客户端公布数据收集策略;见[RFC5730]第2.4节。与此公开要求相结合,此映射包括允许客户端标识需要特殊服务器操作符处理以允许或限制向第三方公开的元素的数据元素。
服务器操作员在与客户端建立会话时,将公布默认的公开策略。创建或更新对象时,客户端可以使用可选的<contact:disclosure>元素指定需要异常公开处理的联系人属性。设置好后,可以使用联系人信息查询来查看公开首选项。服务器操作员必须使用2308错误响应代码拒绝请求不符合公布的数据收集策略的公开实践的任何事务。
如果存在,<contact:disclosure>元素必须包含一个“flag”属性。“flag”属性包含一个XML模式布尔值。值为“true”或“1”(1)表示客户端允许公开指定元素作为声明的数据收集策略的例外。如果值为“false”或“0”(zero),则表示客户端不允许将指定的元素作为声明的数据收集策略的例外。
<contact: disclosure>元素必须包含至少一个子元素:
<contact:name type="int"/>
<contact:name type="loc"/>
<contact:org type="int"/>
<contact:org type="loc"/>
<contact:addr type="int"/>
<contact:addr type="loc"/>
<contact:voice/>
<contact:fax/>
<contact:email/>
例如<contact: reveal>元素, flag="0 ":
<contact:disclose flag="0">
<contact:email/>
<contact:voice/>
</contact:disclose>
在本例中,无法公开联系电子邮件地址和语音电话号码。所有其他元素都要根据服务器的数据收集策略进行公开。
例如<contact: reveal> 元素, flag="1 ":
<contact:disclose flag="1">
<contact:name type="int"/>
<contact:org type="int"/>
<contact:addr type="int"/>
</contact:disclose>
在本例中,可以公开国际化的联系人姓名、组织和地址信息。所有其他元素都要根据服务器的数据收集策略进行公开。
EPP <login>命令提供的客户端标识功能和联系人授权信息用于确定客户端是否被授权执行联系人信息查询命令。这些特性还决定客户端是否被授权接收在查询响应中标记为不公开的数据。
3. EPP命令映射
EPP语法和语义的详细描述可以在[RFC5730]中找到。这里描述的命令映射专门用于通过EPP提供和管理联系人对象。
3.1 EPP查询(Query)命令
EPP提供了三个检索联系人信息的命令:<check>以确定是否可以在存储库中提供联系人对象;<info>以检索与联系人对象关联的详细信息;<transfer>以检索关于联系人对象的传输状态的信息。
3.1.1 < check >
EPP <check>命令用于确定是否可以在存储库中供应对象。它提供了一个提示,允许客户端使用<create>命令来预测配置对象的成功或失败,因为对象配置需求最终取决于服务器策略。
除了标准的EPP命令元素之外,<check>命令必须包含一个<contact:check>元素,该元素标识contact名称空间。<contact:check>元素包含以下子元素:
- 一个或多个<contact:id>元素,其中包含要查询的contact对象的服务器唯一标识符。
<check>命令的示例:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
C: <command>
C: <check>
C: <contact:check
C: xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
C: <contact:id>sh8013</contact:id>
C: <contact:id>sah8013</contact:id>
C: <contact:id>8013sah</contact:id>
C: </contact:check>
C: </check>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
当<check>命令被成功处理时,EPP <resData>元素必须包含一个子<contact:chkData>元素,该元素标识联系人名称空间。<contact:chkData>元素包含一个或多个<contact:cd>元素,这些元素包含以下子元素:
- 标识查询对象的<contact:id>元素。此元素必须包含一个“avail”属性,其值指示在<check>命令完成时对象的可用性(是否可以提供它)。值“1”或“true”表示可以供应对象。值“0”或“false”表示不能供应对象。
- 一个可选的<contact:reason>元素,它可能在无法供应对象时提供。如果存在,则此元素包含特定于服务器的文本,以帮助解释为什么不能供应对象。此文本必须用之前与客户协商的响应语言表示;如果协商的值不是默认值“en”(英语),那么可以使用一个可选的“lang”属性来标识语言。
<check>响应的示例:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
S: <response>
S: <result code="1000">
S: <msg>Command completed successfully</msg>
S: </result>
S: <resData>
S: <contact:chkData
S: xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
S: <contact:cd>
S: <contact:id avail="1">sh8013</contact:id>
S: </contact:cd>
S: <contact:cd>
S: <contact:id avail="0">sah8013</contact:id>
S: <contact:reason>In use</contact:reason>
S: </contact:cd>
S: <contact:cd>
S: <contact:id avail="1">8013sah</contact:id>
S: </contact:cd>
S: </contact:chkData>
S: </resData>
S: <trID>
S: <clTRID>ABC-12345</clTRID>
S: <svTRID>54322-XYZ</svTRID>
S: </trID>
S: </response>
S:</epp>
如果由于任何原因无法处理<check>命令,则必须返回EPP错误响应。
3.1.2 < info >
EPP <info>命令用于检索与contact对象关联的信息。除了标准的EPP命令元素之外,<info>命令必须包含标识联系人名称空间的<contact:info>元素。<contact:info>元素包含以下子元素:
- 一个<contact:id>元素,它包含要查询的contact对象的服务器唯一标识符。
- 一个可选的<contact:authInfo>元素,其中包含与contact对象关联的授权信息。如果没有提供此元素,或者授权信息无效,服务器策略将确定该命令是否被拒绝,或者是否将响应信息返回给客户机。
<info>命令的示例:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
C: <command>
C: <info>
C: <contact:info
C: xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
C: <contact:id>sh8013</contact:id>
C: <contact:authInfo>
C: <contact:pw>2fooBAR</contact:pw>
C: </contact:authInfo>
C: </contact:info>
C: </info>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
成功处理了<info>命令后,EPP <resData>元素必须包含一个子元素<contact:infData>元素,该元素标识联系人名称空间。元素<contact:infData>包含以下子元素:
- 一个<contact:id>元素,它包含contact对象的服务器唯一标识符。
- 一个<contact:roid>元素,该元素包含在创建contact对象时分配给该对象的存储库对象标识符。
- 一个或多个<contact:status>元素,用于描述contact对象的状态。
- 一个或两个包含邮政地址信息的<contact:postalInfo>元素。提供了两个元素,以便以国际化和本地化的形式提供地址信息;“type”属性用于标识这两个表单。如果提供了国际化的表单(type=“int”),则元素内容必须用UTF-8的一个子集表示,该子集可以用7位US-ASCII字符集表示。如果提供了本地化的表单(type=“loc”),则元素内容可以用不受限制的UTF-8表示。<contact:postalInfo>元素包含以下子元素:
- 一个<contact:name>元素,其中包含联系人表示的个人或角色的名称。
- 一个可选的<contact:org>元素,其中包含联系人所属组织的名称。
- 一个<contact:addr>元素,它包含与联系人关联的地址信息。一个<contact:addr>元素包含以下子元素:
- 一个、两个或三个可选的<contact:street>元素,其中包含联系人的街道地址。
- 包含联系人所在城市的<contact:city>元素。
- 一个可选的<contact:sp>元素,其中包含联系人的状态或省份。
- 一个可选的<contact:pc>元素,它包含联系人的邮政编码。
- 一个<contact:cc>元素,其中包含联系人的国家代码。
- 一个可选的<contact:voice>元素,其中包含联系人的语音电话号码。
- 一个可选的<contact:fax>元素,其中包含联系人的传真电话号码。
- 一个<contact:email>元素,它包含联系人的电子邮件地址。
- 一个<contact:clID>元素,它包含发起客户端的标识符。
- 一个<contact:crID>元素,它包含创建contact对象的客户端的标识符。
- 一个<contact:crDate>元素,其中包含创建联系人对象的日期和时间。
- 一个<contact:upID>元素,它包含最后一次更新contact对象的客户端的标识符。如果从未修改过联系人,则此元素不能出现。
- 一个<contact:upDate>元素,该元素包含最近的接触对象修改的日期和时间。如果从未修改过contact对象,则此元素不能出现。
- 一个<contact:trDate>元素,包含最近一次成功的接触对象传输的日期和时间。如果从未传输过contact对象,则不能提供此元素。
- 一个<contact:authInfo>元素,它包含与contact对象相关联的授权信息。如果查询客户端不是当前发起客户端,则不能提供此元素。
- 一个可选的<contact:disclosure>元素,它标识需要特殊的服务器操作符处理来允许或限制向第三方公开的元素。有关<contact: reveal>元素中包含的子元素的描述,请参见第2.9节。
授权客户端<info>响应的示例:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
S: <response>
S: <result code="1000">
S: <msg>Command completed successfully</msg>
S: </result>
S: <resData>
S: <contact:infData
S: xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
S: <contact:id>sh8013</contact:id>
S: <contact:roid>SH8013-REP</contact:roid>
S: <contact:status s="linked"/>
S: <contact:status s="clientDeleteProhibited"/>
S: <contact:postalInfo type="int">
S: <contact:name>John Doe</contact:name>
S: <contact:org>Example Inc.</contact:org>
S: <contact:addr>
S: <contact:street>123 Example Dr.</contact:street>
S: <contact:street>Suite 100</contact:street>
S: <contact:city>Dulles</contact:city>
S: <contact:sp>VA</contact:sp>
S: <contact:pc>20166-6503</contact:pc>
S: <contact:cc>US</contact:cc>
S: </contact:addr>
S: </contact:postalInfo>
S: <contact:voice x="1234">+1.7035555555</contact:voice>
S: <contact:fax>+1.7035555556</contact:fax>
S: <contact:email>jdoe@example.com</contact:email>
S: <contact:clID>ClientY</contact:clID>
S: <contact:crID>ClientX</contact:crID>
S: <contact:crDate>1999-04-03T22:00:00.0Z</contact:crDate>
S: <contact:upID>ClientX</contact:upID>
S: <contact:upDate>1999-12-03T09:00:00.0Z</contact:upDate>
S: <contact:trDate>2000-04-08T09:00:00.0Z</contact:trDate>
S: <contact:authInfo>
S: <contact:pw>2fooBAR</contact:pw>
S: </contact:authInfo>
S: <contact:disclose flag="0">
S: <contact:voice/>
S: <contact:email/>
S: </contact:disclose>
S: </contact:infData>
S: </resData>
S: <trID>
S: <clTRID>ABC-12345</clTRID>
S: <svTRID>54322-XYZ</svTRID>
S: </trID>
S: </response>
S:</epp>
如果由于任何原因无法处理<info>命令,则必须返回一个EPP错误响应。
3.1.3 < transfer >
EPP <transfer>命令提供了一个查询操作,允许客户端确定挂起和完成的转移请求的实时状态。除了标准的EPP命令元素之外,<transfer>命令必须包含一个“op”属性和一个值“query”,以及一个标识联系人名称空间的<contact:transfer>元素。<contact:transfer>元素必须包含以下子元素:
- 一个<contact:id>元素,它包含要查询的contact对象的服务器唯一标识符。
- 一个可选的<contact:authInfo>元素,其中包含与contact对象关联的授权信息。如果没有提供此元素,或者授权信息无效,服务器策略将确定该命令是否被拒绝,或者是否将响应信息返回给客户机。
<transfer>查询命令的示例:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
C: <command>
C: <transfer op="query">
C: <contact:transfer
C: xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
C: <contact:id>sh8013</contact:id>
C: <contact:authInfo>
C: <contact:pw>2fooBAR</contact:pw>
C: </contact:authInfo>
C: </contact:transfer>
C: </transfer>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
成功处理<transfer>查询命令后,EPP <resData>元素必须包含一个子元素<contact:trnData>元素,该元素标识联系人名称空间。<contact:trnData>元素包含以下子元素:
- 一个<contact:id>元素,它包含查询的联系人的服务器唯一标识符。
- 一个<contact:trStatus>元素,包含最近的传输请求的状态。
- 一个<contact:reID>元素,它包含请求对象转移的的客户端的标识符。
- 一个<contact:reDate>元素,其中包含请求传输的日期和时间。
- 一个<contact:acID>元素,它包含一个对待处理请求进行处理的客户端的标识符。对于所有其他状态类型,该值标识采取指定操作的客户端。
- 一个<contact:acDate>元素,该元素包含所需的或完成的响应的日期和时间。对于挂起的请求,该值标识服务器应执行自动响应操作之前需要响应的日期和时间。对于所有其他状态类型,该值标识请求完成的日期和时间。
<transfer>查询响应的示例:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
S: <response>
S: <result code="1000">
S: <msg>Command completed successfully</msg>
S: </result>
S: <resData>
S: <contact:trnData
S: xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
S: <contact:id>sh8013</contact:id>
S: <contact:trStatus>pending</contact:trStatus>
S: <contact:reID>ClientX</contact:reID>
S: <contact:reDate>2000-06-06T22:00:00.0Z</contact:reDate>
S: <contact:acID>ClientY</contact:acID>
S: <contact:acDate>2000-06-11T22:00:00.0Z</contact:acDate>
S: </contact:trnData>
S: </resData>
S: <trID>
S: <clTRID>ABC-12345</clTRID>
S: <svTRID>54322-XYZ</svTRID>
S: </trID>
S: </response>
S:</epp>
如果由于任何原因无法处理<transfer>查询命令,则必须返回一个EPP错误响应。
3.2 EPP转换(Transform)命令
转换命令通常是实时处理和完成的。服务器操作员可以接收和处理转换命令,但如果在完成请求的操作之前需要人工或第三方审查,则可以推迟完成请求的操作。在这种情况下,服务器必须向客户端返回1001响应代码,以说明已经接收和处理了命令,但是请求的操作正在等待处理。服务器还必须管理作为命令主体的对象的状态,以反映请求的操作的启动和完成。一旦操作完成,必须使用服务消息通知事务中涉及的所有客户端操作已经完成,并且对象的状态已经更改。除了所需的服务消息外,还可以使用其他通知方法。
服务器操作员应该确认客户端被授权对给定对象执行转换命令。未经授权的客户机必须拒绝任何转换对象的尝试,服务器必须向客户机返回2201响应代码,以注意客户机缺少执行请求的命令的权限。
3.2.1 < create >
EPP <create>命令提供了一个转换操作,允许客户端创建一个contact对象。除了标准的EPP命令元素之外,<create>命令必须包含一个<contact: create>元素,该元素标识联系人名称空间。<contact: create>元素包含以下子元素:
- 一个<contact:id>元素,它包含要创建的联系人所需的服务器唯一标识符。
- 一个或两个<contact:postalInfo>元素,包含邮政地址信息。提供了两个元素,以便以国际化和本地化的形式提供地址信息;“type”属性用于标识这两个表单。如果提供了国际化的表单(type=“int”),则元素内容必须用UTF-8的一个子集表示,该子集可以用7位US-ASCII字符集表示。如果提供了本地化的表单(type=“loc”),则元素内容可以用不受限制的UTF-8表示。<contact:postalInfo>元素包含以下子元素:
- 一个 <contact:name>元素,该元素包含联系人表示的个人或角色的名称。
- 一个可选的<contact:org>元素,其中包含联系人所属组织的名称。
- 一个<contact:addr>元素,该元素包含与联系人关联的地址信息。一个<contact:addr>元素包含以下子元素:
- 一个、两个或三个可选的<contact:street>元素,其中包含联系人的街道地址。
- 一个<contact:city>元素,其中包含联系人所在的城市。
- 一个可选的<contact:sp>元素,其中包含联系人的状态或省份。
- 一个可选的<contact:pc>元素,其中包含联系人的邮政编码。
- 一个<contact:cc>元素,其中包含联系人的国家代码。
- 一个可选的<contact:voice>元素,其中包含联系人的语音电话号码。
- 一个可选的<contact:fax>元素,其中包含联系人的传真电话号码。
- 一个<contact:email>元素,包含联系人的电子邮件地址。
- 一个<contact:authInfo>元素,其中包含要与contact对象关联的授权信息。这个映射包括一个基于密码的身份验证机制,但是模式允许在新的模式中定义新的机制。
- 一个可选的<contact:disclosure>元素,允许客户端识别需要特殊的服务器操作符处理的元素,以允许或限制向第三方公开。有关<contact:disclosure>元素中包含的子元素的描述,请参见第2.9节。
<create>命令的示例:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
C: <command>
C: <create>
C: <contact:create
C: xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
C: <contact:id>sh8013</contact:id>
C: <contact:postalInfo type="int">
C: <contact:name>John Doe</contact:name>
C: <contact:org>Example Inc.</contact:org>
C: <contact:addr>
C: <contact:street>123 Example Dr.</contact:street>
C: <contact:street>Suite 100</contact:street>
C: <contact:city>Dulles</contact:city>
C: <contact:sp>VA</contact:sp>
C: <contact:pc>20166-6503</contact:pc>
C: <contact:cc>US</contact:cc>
C: </contact:addr>
C: </contact:postalInfo>
C: <contact:voice x="1234">+1.7035555555</contact:voice>
C: <contact:fax>+1.7035555556</contact:fax>
C: <contact:email>jdoe@example.com</contact:email>
C: <contact:authInfo>
C: <contact:pw>2fooBAR</contact:pw>
C: </contact:authInfo>
C: <contact:disclose flag="0">
C: <contact:voice/>
C: <contact:email/>
C: </contact:disclose>
C: </contact:create>
C: </create>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
当<create>命令被成功处理时,EPP <resData>元素必须包含一个子<contact:creData>元素,该元素标识联系人名称空间。<contact:creData>元素包含以下子元素:
- 一个<contact:id>元素,它包含创建联系人的服务器唯一标识符。
- 一个<contact:crDate>元素,其中包含创建联系人对象的日期和时间。
3.2.2 < delete >
EPP <delete>命令提供了一个转换操作,允许客户端删除联系人对象。除了标准的EPP命令元素之外,<delete>命令必须包含标识联系人名称空间的<contact:delete>元素。<contact:delete>元素必须包含以下子元素:
- 一个<contact:id>元素,它包含要删除的contact对象的服务器唯一标识符。
如果contact对象与其他已知对象相关联,则不应删除该对象。在与其他已知对象的关联被打破之前,不应该删除关联的联系人。当试图执行<delete>命令并由于存在对象关系而失败时,服务器应该通过发送2305错误响应代码来通知客户端存在对象关系。
<delete>命令的示例:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
C: <command>
C: <delete>
C: <contact:delete
C: xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
C: <contact:id>sh8013</contact:id>
C: </contact:delete>
C: </delete>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
当<delete>命令被成功处理时,服务器必须使用没有<resData>元素的EPP响应进行响应。
<delete>响应的示例:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
S: <response>
S: <result code="1000">
S: <msg>Command completed successfully</msg>
S: </result>
S: <trID>
S: <clTRID>ABC-12345</clTRID>
S: <svTRID>54321-XYZ</svTRID>
S: </trID>
S: </response>
S:</epp>
如果由于任何原因无法处理<delete>命令,则必须返回一个EPP错误响应。
3.2.3 < renew >
更新语义不适用于contact对象,因此没有为EPP <renew>命令定义映射。
3.2.4 < transfer >
EPP <transfer>命令提供了一个转换操作,该操作允许客户端管理请求,以转移联系人对象的发起客户端。除了标准的EPP命令元素之外,<transfer>命令必须包含一个<contact:transfer>元素,该元素标识联系人名称空间。<contact:transfer>元素包含以下子元素:
- 一个<contact:id>元素,它包含联系人对象的服务器唯一标识符,将为该对象创建、批准、拒绝或取消一个传输请求。
- 一个<contact:authInfo>元素,它包含与contact对象关联的授权信息。
每个EPP <transfer>命令必须包含一个“op”属性,该属性标识要执行的传输操作,如[RFC5730]中定义的那样。
<transfer>请求的示例:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
C: <command>
C: <transfer op="request">
C: <contact:transfer
C: xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
C: <contact:id>sh8013</contact:id>
C: <contact:authInfo>
C: <contact:pw>2fooBAR</contact:pw>
C: </contact:authInfo>
C: </contact:transfer>
C: </transfer>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
当<transfer>命令成功处理后,EPP <resData>元素必须包含一个子元素<contact:trnData>元素,该元素标识联系人名称空间。<contact:trnData>元素包含为<transfer>查询响应定义的相同子元素。
<transfer>响应的示例:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
S: <response>
S: <result code="1001">
S: <msg>Command completed successfully; action pending</msg>
S: </result>
S: <resData>
S: <contact:trnData
S: xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
S: <contact:id>sh8013</contact:id>
S: <contact:trStatus>pending</contact:trStatus>
S: <contact:reID>ClientX</contact:reID>
S: <contact:reDate>2000-06-08T22:00:00.0Z</contact:reDate>
S: <contact:acID>ClientY</contact:acID>
S: <contact:acDate>2000-06-13T22:00:00.0Z</contact:acDate>
S: </contact:trnData>
S: </resData>
S: <trID>
S: <clTRID>ABC-12345</clTRID>
S: <svTRID>54322-XYZ</svTRID>
S: </trID>
S: </response>
S:</epp>
如果由于任何原因无法处理<transfer>命令,则必须返回EPP错误响应。
3.2.5 < update >
EPP<update>命令提供了一个转换操作,允许客户端修改contact对象的属性。除了标准的EPP命令元素之外,<update>命令必须包含标识联系人名称空间的<contact:update>元素。元素<contact:update>包含以下子元素:
- 一个<contact:id>元素,它包含要更新的contact对象的服务器唯一标识符。
- 一个可选的<contact:add>element,其中包含要添加到对象的属性值。
- 一个可选的<contact:rem>元素,它包含要从对象中删除的属性值。
- 一个可选的<contact:chg>元素,它包含要更改的对象属性值。
- 如果不扩展命令,则必须提供至少一个<contact:add>, <contact:rem>,或<contact:chg>元素。如果存在<update>扩展,则可以省略所有这些元素。<contact:add>and <contact:rem>元素包含以下子元素
- 一个或多个<contact:status>元素,其中包含与对象关联或从对象中删除的状态值。在指定要删除的值时,只有属性值是重要的;元素文本不需要匹配要删除的值。
- 一个 <contact:chg>元素包含以下可选的子元素。至少要有一个子元素:
- 一个或两个包含邮政地址信息的 <contact:postalInfo>元素。提供了两个元素,以便以国际化和本地化的形式提供地址信息;“type”属性用于标识这两个表单。如果提供了国际化形式(type=“int”),则元素内容必须用UTF-8的子集表示,该子集可以用7位US-ASCII字符集表示。如果提供了本地化的表单(type=“loc”),则元素内容可以用不受限制的UTF-8表示。元素包含以下可选的子元素:
- 一个<contact:name>元素,其中包含联系人表示的个人或角色的名称。
- 一个<contact:org>元素,其中包含联系人所属组织的名称。
- 一个<contact:addr>元素,它包含与联系人关联的地址信息。一个<contact:addr>元素包含以下子元素:
- 一个、两个或三个可选的<contact:street>元素,其中包含联系人的街道地址。
- 包含联系人所在城市的<contact:city>元素。
- 一个可选的<contact:sp>元素,其中包含联系人的状态或省份。
- 一个可选的<contact:pc>元素,它包含联系人的邮政编码。
- 一个<contact:cc>元素,其中包含联系人的国家代码。
- 一个<contact:voice>元素,其中包含联系人的语音电话号码。
- 一个<contact:fax>元素,包含联系人的传真电话号码。
- 一个<contact:email>元素,它包含联系人的电子邮件地址。
- 一个<contact:authInfo>元素,它包含与contact对象关联的授权信息。这个映射包括一个基于密码的身份验证机制,但是模式允许在新的模式中定义新的机制。
- <contact: disclosure>元素,该元素允许客户端识别需要特殊服务器操作符处理的元素,以允许或限制向第三方公开。有关<contact: reveal>元素中包含的子元素的描述,请参见第2.9节。
<update>命令示例:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
C: <command>
C: <update>
C: <contact:update
C: xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
C: <contact:id>sh8013</contact:id>
C: <contact:add>
C: <contact:status s="clientDeleteProhibited"/>
C: </contact:add>
C: <contact:chg>
C: <contact:postalInfo type="int">
C: <contact:org/>
C: <contact:addr>
C: <contact:street>124 Example Dr.</contact:street>
C: <contact:street>Suite 200</contact:street>
C: <contact:city>Dulles</contact:city>
C: <contact:sp>VA</contact:sp>
C: <contact:pc>20166-6503</contact:pc>
C: <contact:cc>US</contact:cc>
C: </contact:addr>
C: </contact:postalInfo>
C: <contact:voice>+1.7034444444</contact:voice>
C: <contact:fax/>
C: <contact:authInfo>
C: <contact:pw>2fooBAR</contact:pw>
C: </contact:authInfo>
C: <contact:disclose flag="1">
C: <contact:voice/>
C: <contact:email/>
C: </contact:disclose>
C: </contact:chg>
C: </contact:update>
C: </update>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
当成功处理了<update>命令时,服务器必须使用没有<resData>元素的EPP响应进行响应。
<update>响应示例:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
S: <response>
S: <result code="1000">
S: <msg>Command completed successfully</msg>
S: </result>
S: <trID>
S: <clTRID>ABC-12345</clTRID>
S: <svTRID>54321-XYZ</svTRID>
S: </trID>
S: </response>
S:</epp>
如果由于任何原因无法处理<update>命令,则必须返回一个EPP错误响应。
3.3 离线审查请求行动
命令由服务器按照从客户机接收命令的顺序进行处理。虽然服务器生成确认接收和处理命令的即时响应,但是服务器操作员可以在完成请求的操作之前对请求的转换命令进行离线检查。在这种情况下,来自服务器的响应必须清楚地注意到transform命令已经被接收和处理,但是请求的操作正在等待。相应对象的状态必须清楚地反映未决动作的处理。当离线处理完成时,服务器必须通知客户机。
这里包含了描述需要离线检查的<create>命令的示例。注意响应<create>命令返回的结果代码和消息。
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
S: <response>
S: <result code="1001">
S: <msg>Command completed successfully; action pending</msg>
S: </result>
S: <resData>
S: <contact:creData
S: xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
S: <contact:id>sh8013</contact:id>
S: <contact:crDate>1999-04-03T22:00:00.0Z</contact:crDate>
S: </contact:creData>
S: </resData>
S: <trID>
S: <clTRID>ABC-12345</clTRID>
S: <svTRID>54321-XYZ</svTRID>
S: </trID>
S: </response>
S:</epp>
返回此响应后contact对象的状态必须包括“pendingCreate”。服务器操作员离线检查请求并将检查结果通知客户端,方法是通过<poll>命令对服务消息进行排队检索,或者使用带外机制将请求通知客户端。
服务消息必须包含描述响应<msgQ>元素的子<msg>元素中的通知的文本。此外,EPP <resData>元素必须包含一个子元素<contact: panData>元素,该元素标识联系人名称空间。元素<contact:panData>包含以下子元素:
-
一个<contact:id>元素,它包含contact对象的服务器唯一标识符。<contact:id>元素包含一个必需的“paResult”属性。一个正的布尔值表示请求已被批准并完成。一个负的布尔值表示请求被拒绝,并且请求的操作没有被执行。
-
一个<contact:paTRID>元素,它包含客户端事务标识符和服务器事务标识符,并返回原始响应来处理命令。客户端事务标识符是可选的,只有在客户端使用原始的<create>命令提供标识符时才会返回。
-
一个<contact:paDate>元素,它包含对所请求的操作的审查何时完成的日期和时间描述。
“review completed” 服务消息的示例:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
S: <response>
S: <result code="1301">
S: <msg>Command completed successfully; ack to dequeue</msg>
S: </result>
S: <msgQ count="5" id="12345">
S: <qDate>1999-04-04T22:01:00.0Z</qDate>
S: <msg>Pending action completed successfully.</msg>
S: </msgQ>
S: <resData>
S: <contact:panData
S: xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
S: <contact:id paResult="1">sh8013</contact:id>
S: <contact:paTRID>
S: <clTRID>ABC-12345</clTRID>
S: <svTRID>54321-XYZ</svTRID>
S: </contact:paTRID>
S: <contact:paDate>1999-04-04T22:00:00.0Z</contact:paDate>
S: </contact:panData>
S: </resData>
S: <trID>
S: <clTRID>BCD-23456</clTRID>
S: <svTRID>65432-WXY</svTRID>
S: </trID>
S: </response>
S:</epp>