Create contact[Link]

Purpose

To create a contact (types: billing, tech, licensee or onsite contact).

All EPP contact objects are identified by a server unique identifier. The EPP contact create command allows the client to send a requested ID for the new contact, but this field is ignored (as allowed by EPP) by the server and a newly-created ID is returned instead in the server response.

Every contact has associated postal address information. DNS Belgium stores postal information in a less restrictive way, to accommodate for the many different formats in the world. The set of characters allowed for contact data are iso-8859-1 and iso-8859-15, excluding ‘' and ‘@’.. It is the responsibility of the registrar to provide an address in a readable format.

Standard EPP does not enforce a specific role for each contact. It acquires its type from its usage. The same contact object can be used in different roles. DNS Belgium requires that you define a role for a contact upon its creation. A contact can only be used in the role it was created for: each link between a domain and a contact should follow that role. For example, you cannot link a contact of type ‘tech’ to a domain as a ‘billing’, you MUST use it as a ‘tech’. If you want to use the same person for different roles, you will need to create a new contact for each of them. The roles that exist are described below.

The create contact command is composed according to the standard EPP syntax. Some components are changed by DNS Belgium and need further explanation:

  • <contact:id> Mandatory according to the EPP standard, this field contains the (proposed) ID for the contact. It is ignored by DNS Belgium.

  • <contact:postalInfo> this contains the address information of this contact ; the schema allows it to occur twice (e.g. with a local address or an international address) ; DNS Belgium only accepts type ‘loc’ with UTF-8 character set (containing non-ascii characters), the set of characters allowed are the characters from iso-8859-1 and iso-8859-15; if ‘int’ is specified as a type, this will be rejected as a policy error. Only 1 postalInfo block is accepted.

  • <contact:name> is required. Contains the complete name of the contact to create. As the EPP standard has one field, you can put both the first and the last name in that field. It is good practice to decide on starting with the last name or the first name for every contact, as it can be confusing if firstname and lastname are switched. It should contain at least one non-whitespace character. If more than 50 characters are used in the lastname field, this will be rejected as a policy error.

  • <contact:org> Contains the company name of the contact, if the <dnsbe:type> is ‘licensee’ or ‘onsite’, no <contact:org> is required. However if the <dnsbe:type> is ‘tech’ or ‘billing’ a <contact:org> is mandatory. If the field is longer than 100 characters, an error is returned.

  • <contact:street> is required once. You can provide up to 3 instances of this element. It contains the postal street information of the contact. It should contain information in such a way that it looks like a correct address when printed on a letter as:

    COMPANY NAME
    (CONTACT) NAME
    STREET(1)
    STREET(2)
    STREET(3)
    PC CITY, SP
  • <contact:city> is required. Contains the city of the contact.

  • <contact:sp> is optional. Contains the state or province of the contact.

  • <contact:pc> is required by DNS Belgium. Contains the postal code of the contact. This field can be up to 16 characters.

  • <contact:cc> is required. Contains the two-letters country code (in uppercase) of the contact to create, as defined in [ISO3166]. The list that we support can be viewed on our registrar website under the topic ‘Services’.

  • <contact:voice> Is required by DNS Belgium. Contains the telephone number of the contact that is being created. A phone number is a string that must begin with a plus sign (‘+’), followed by a country code, followed by a dot (‘.’), followed by a sequence of digits representing the telephone number. An optional ‘x’ attribute is provided to note telephone extension (but this attribute is ignored by DNS Belgium).

  • <contact:fax> is optional. Contains the facsimile number of the contact. The syntax is the same as for telephone but without the extension attribute. DNS Belgium doesn’t use fax numbers any more. This value will be ignored.

  • <contact:email> is required. Email address syntax is defined in [RFC2822]. DNS Belgium policy requires at least a second level domain name after the ‘@’.

  • <contact:authInfo> is required, but ignored by DNS Belgium.

  • <contact:pw> Is not used by DNS Belgium. As it is a required element in the schema, it must be provided; however, you do not have to specify a value between the tags.

  • <contact:disclose> is an additional (optional) element in the schema that contains postal information that can be disclosed. This is not used by DNS Belgium.

DNS Belgium EXTENSIONS:

  • <dnsbe:type> Contains the type of contact to create. Can be one of: ‘billing’, ‘licensee’, ‘onsite’, ‘tech’. As the type is required, the <extension> element must always be present. Read more about contact types. Note that type ‘licensee’ should be used for the registrant contact and is subjected to strict validation to impose our Terms and conditions.

  • <dnsbe:vat> Contains the VAT of the contact. This tag is optional.

  • <dnsbe:lang> Contains the preferred language of the contact (only supported values are: en, fr, nl). Although optional in the schema the back-end will return an error if this element is omitted.

Please refer to the examples to see a complete request.

Examples[Link]

Creating a new contact:

<epp xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd urn:ietf:params:xml:ns:contact-1.0 contact-1.0.xsd http://www.dns.be/xml/epp/dnsbe-1.0 dnsbe-1.0.xsd" xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xmlns:dnsbe="http://www.dns.be/xml/epp/dnsbe-1.0">
  <command>
    <create>
      <contact:create>
        <contact:id>you_choose_it</contact:id>
        <contact:postalInfo type="loc">
          <contact:name>Jonathan Smith</contact:name>
          <contact:org>Great Company Inc.</contact:org>
          <contact:addr>
            <contact:street>Greenstreet 23</contact:street>
            <contact:city>Brussels</contact:city>
            <contact:sp/>
            <contact:pc>1000</contact:pc>
            <contact:cc>BE</contact:cc>
          </contact:addr>
        </contact:postalInfo>
        <contact:voice>+32.16284970</contact:voice>
        <contact:email>j.smith@greatcompanyinc.cctld</contact:email>
        <contact:authInfo>
          <contact:pw>Polar Ice</contact:pw>
        </contact:authInfo>
      </contact:create>
    </create>
    <extension>
      <dnsbe:ext>
        <dnsbe:create>
          <dnsbe:contact>
            <dnsbe:type>licensee</dnsbe:type>
            <dnsbe:vat>BE 0123 476 645</dnsbe:vat>
            <dnsbe:lang>nl</dnsbe:lang>
          </dnsbe:contact>
        </dnsbe:create>
      </dnsbe:ext>
    </extension>
    <clTRID>clientref-00002</clTRID>
  </command>
</epp>

In case of a successful object creation the EPP server responds with a message containing the newly created ID and the creation date in UTC time:

<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData>
      <contact:creData>
        <contact:id>c16</contact:id>
        <contact:crDate>2006-10-06T12:25:38.280Z</contact:crDate>
      </contact:creData>
    </resData>
    <trID>
      <clTRID>clientref-00002</clTRID>
      <svTRID>dnsbe-23</svTRID>
    </trID>
  </response>
</epp>

The following information can be seen in the reply:

  • <contact:id> Is the newly created ID assigned to this contact.

  • <contact:crDate> Is the creation date in UTC format.

  • <clTRID> This element copies the transaction ID that was specified by the registrar in the command. This way, it is possible to automatically interpret the answer and link it to the command that was sent.