Copyright (C) 2002  Internet Software Consortium.

Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

$Id: epp-writer.txt,v 1.4 2002/12/24 22:07:58 lidl Exp $

$resp->{command}

  one of:
  "hello", "login", "logout",

  "contact_check", "contact_info", "contact_transfer", "contact_add"
  "contact_mod"

  "domain_check", "domain_add", "domain_del", "domain_info",
  "domain_renew", "domain_transfer, "domain_mod",

  "ns_check", "ns_add", "ns_del", "ns_info", "ns_mod".

  Always present.

$resp->{clTRID}         client transaction id
$resp->{svTRID}         server transaction id

$resp->{lang}           if present, the language in which error messages
                        should be returned

$resp->{resultCode}     a result code

What follows are additional (key => value) pairs from the response
hash reference for a successful command execution. If {resultCode}
indicates some kind of failure, not all of the following may be
present.

hello

  The response to a hello request is a greeting response.

login

  None.

logout

  None.

contact_check

  @{$resp->{ids}}     an arrayref containing arrayrefs:

  ids => [ [ fqdn, yesno, message ], ... ];

  fqdn is the name requested for checking.  The order is exactly as
  presented in the original request.  yesno is 1 if the domain can be
  registered, and 0 if not.  message is either a scalar explaining why
  the fqdn is invalid, or undef.

contact_info

  $resp->{id}           server-unique identifier of the contact object
  $resp->{roid}         the repository object identifier abortion nightmare
  @{$resp->{status}}    array of status array(s) [ status, lang, msg ]
  $resp->{postal} = { "type" => { "name" => "name of person",
                                 "org" => "organisation name",
                                 "street" => [ "street1", "street2", ... ],
                                 "city" => "name of city",
                                 "sp" => "state/province",
                                 "pc" => "postal code",
                                 "cc" => "iso-3166 country code" } };

  where "type" can be "loc" or "int" for localised and international
  addresses, respectively.

  $resp->{voice}        voice telephone number
  $resp->{voice_ext}    voice telephone number extension
  $resp->{fax}          fax telephone number
  $resp->{email}        e-mail address

  $resp->{crID}         identifier of the client that created this object
  $resp->{crDate}       date and time of object creation, RFC3339 format, UTC

  $resp->{upID}         identifier of the client that last updated this
                        object
  $resp->{upDate}       date and time of last update

  $resp->{trDate}       date and time of last successful transfer

  $resp->{authInfo}     an authInfo structure

contact_transfer

  $resp->{transfer_op}  value of the "op" attribute
  $resp->{id}           contact id.
  $resp->{trStatus}     state of the most recent transfer request
  $resp->{reID}         identifier of the client that request the transfer
  $resp->{reDate}       time and date of tx request, RFC3339, UTC
  $resp->{acID}         identifier of the client that should ACT UPON
                        the tx request
  $resp->{acDate}       deadline for the client that should act to act
                        before the server takes liberties, or (for a
                        completed transfer) the time the request was
                        completed, RFC3339, UTC

contact_add

  $resp->{id}           requested contact id
  $resp->{crDate}       date and time of contact object creation, RFC3339, UTC

contact_del

  None

contact_mod

  None

domain_check

  $resp->{names}

  "names" contains an arrayref containing arrayrefs:

  names => [ [ fqdn, yesno, message ], ... ];

  fqdn is the name requested for checking.  The order is exactly as
  presented in the original request.  yesno is 1 if the domain can be
  registered, and 0 if not.  message is either a scalar explaining why
  the fqdn is invalid, or undef.

domain_add

  $resp->{name}         domain name
  $resp->{crDate}       time and date of object creation
  $resp->{exDate}       expiry time and date of object

domain_del

  None

domain_info

  $resp->{name}         name of domain
  $resp->{roid}         everybody's favourite Repository Object Identifier
  @{$resp->{status}}    array of status array(s) [ status, lang, msg ]
  $resp->{registrant}   contact id of registrant
  @{$resp->{contact}}   array of [ [ type, contact-id], ...] where type
                        is "tech" or "admin"
  @{$resp->{ns}}        array of nameservers' fqdns
  @{$resp->{host}}      array of subordinate host objects' fqdns (hosts
                        named under this domain)
  $resp->{clID}         id of sponsoring client
  $resp->{crDate}       time and date of domain creation, RFC3339, UTC
  $resp->{exDate}       time and date identifying the end of the domain
                        object's registration period
  $resp->{upID}         id of client that did the last update on this domain
  $resp->{upDate}       time and date of last update, RFC3339, UTC
  $resp->{trDate}       time and date of last transfer, RFC3339, UTC
  $resp->{authInfo}     authinfo structure

domain_renew

  $resp->{name}         domain name
  $req->{exDate}        time and date for expiry of domain, RFC3339, UTC

domain_transfer

  $resp->{transfer_op}
  $resp->{name}         domain name
  $resp->{trStatus}     state of most recent transfer request
  $resp->{reID}         identifier of requesting client
  $resp->{reDate}       time and date of transfer request, RFC3339, UTC
  $resp->{acID}         identifier of losing client
  $resp->{acDate}       time and date of action required by losing client,
                        or time at which transfer was completed, RFC3339, UTC
  $resp->{expDate}      new expiry time and date, if the transfer caused
                        the expiry time and date to change, RFC3339, UTC


domain_mod

  None

host_check

  $resp->{names}

  "names" contains an arrayref containing arrayrefs:

  names => [ [ fqdn, yesno, message ], ... ];

  fqdn is the name requested for checking.  The order is exactly as
  presented in the original request.  yesno is 1 if the domain can be
  registered, and 0 if not.  message is either a scalar explaining why
  the fqdn is invalid, or undef.

host_add

  $resp->{name}         name of nameserver
  $resp->{crDate}       time and date of object creation, RFC3339, UTC

host_del

  None

host_info

  $resp->{name}         name of nameserver
  $resp->{roid}         The Ammbassador of Soul, Repository Object Identifier
  @{$resp->{status}}    array of status array(s) [ status, lang, msg ]
  @{$resp->{addr}}      list of [proto, addr], where proto == 4 or 6
  $resp->{clID}         id of sponsoring client
  $resp->{crID}         id of creating client
  $resp->{crDate}       creation dateTime, RFC3339, UTC
  $resp->{upID}         id of client which made last successful update
  $resp->{upDate}       update dateTime, RFC3339, UTC
  $resp->{trDate}       last transfer dateTime, RFC3339, UTC

host_mod

  None

