<?php


/**
 * Example client to access the domain reselling API. 
 * Please note: We cannot guarantee the function of this client.  
 * @service DomainWebserviceSoapClient
 */
class DomainWebserviceSoapClient{


	/**
	 * The WSDL URI
	 *
	 * @var string
	 */
	public static $_WsdlUri='https://ccp.netcup.net/run/webservice/servers/endpoint.php?WSDL';
	/**
	 * The PHP SoapClient object
	 *
	 * @var object
	 */
	public static $_Server=NULL;

	/**
	 * Send a SOAP request to the server
	 *
	 * @param string $method The method name
	 * @param array $param The parameters
	 * @return mixed The server response
	 */
	public static function _Call($method,$param) {
		try {
			if (is_NULL(self::$_Server)) {
				self::$_Server = new SoapClient(self::$_WsdlUri);
			}
			return self::$_Server->__soapCall($method,$param);
		} catch (Exception $exception) {
			throw new SoapFault($exception->faultstring, $exception->faultcode, $exception);
		}
	}

	/**
	 * Create a new domain for a fee.
	 *
	 * @param domainname $domainname Name of the domain including top-level domain.
	 * @param positiveInteger $customernumber customer number of reseller at netcup.
	 * @param arrayOfContactentries $contacts Ids of the contact handles registered previously.
	 * @param Nameserverentries $nameservers list of nameservers. Please define as array in format for example: array(array("hostname" => "ns1.domain.tld","ipv4" => "1.2.4.4","ipv6" => "7654:3210:1:2345::6"),array("hostname" => "ns2.domain.tld","ipv4" => "4.3.2.1","ipv6" => "123:0000:4:5600::7"));
	 * @param string $apikey Unique API key generated in customer control panel.
	 * @param string $apisessionid Unique API session id created by login command.
	 * @param clientrequestid $clientrequestid Id from client side. Can contain letters and numbers. Field is optional.
	 * @return Responsemessage $responsemessage with information about result of the action like short and long resultmessages, message status, etc.
	 */
	public function createDomain($domainname,$customernumber,$contacts,$nameservers,$apikey,$apisessionid,$clientrequestid){
		return self::_Call('createDomain', func_get_args());
	}

	/**
	 * Update a domain contacts and nameserver settings.
	 * For updateing owner handle use changeOwnerDomain.
	 *
	 * @param domainname $domainname Name of the domain including top-level domain.
	 * @param positiveInteger $customernumber customer number of reseller at netcup.
	 * @param Contactentries $contacts Ids of the contact handles registered previously.
	 * @param Nameserverentries $nameservers list of nameservers. Please define as array in format for example: array(array("hostname" => "ns1.domain.tld","ipv4" => "1.2.4.4","ipv6" => "7654:3210:1:2345::6"),array("hostname" => "ns2.domain.tld","ipv4" => "4.3.2.1","ipv6" => "123:0000:4:5600::7"));
	 * @param string $apikey Unique API key generated in customer control panel.
	 * @param string $apisessionid Unique API session id created by login command.
	 * @param clientrequestid $clientrequestid Id from client side. Can contain letters and numbers. Field is optional.
	 * @return Responsemessage $responsemessage with information about result of the action like short and long resultmessages, message status, etc.
	 */
	public function updateDomain($domainname,$customernumber,$contacts,$nameservers,$apikey,$apisessionid,$clientrequestid){
		return self::_Call('updateDomain', func_get_args());
	}

	/**
	 * Incomming transfer a new domain for a fee.
	 *
	 * @param domainname $domainname Name of the domain including top-level domain.
	 * @param positiveInteger $customernumber customer number of reseller at netcup.
	 * @param arrayOfContactentries $contacts Ids of the contact handles registered previously.
	 * @param Nameserverentries $nameservers list of nameservers. Please define as array in format for example: array(array("hostname" => "ns1.domain.tld","ipv4" => "1.2.4.4","ipv6" => "7654:3210:1:2345::6"),array("hostname" => "ns2.domain.tld","ipv4" => "4.3.2.1","ipv6" => "123:0000:4:5600::7"));
	 * @param string $apikey Unique API key generated in customer control panel.
	 * @param string $apisessionid Unique API session id created by login command.
	 * @param string $authcode AuthInfo code for this domain.
	 * @param clientrequestid $clientrequestid Id from client side. Can contain letters and numbers. Field is optional.
	 * @return Responsemessage $responsemessage with information about result of the action like short and long resultmessages, message status, etc.
	 */
	public function transferDomain($domainname,$customernumber,$contacts,$nameservers,$apikey,$apisessionid,$authcode,$clientrequestid){
		return self::_Call('transferDomain', func_get_args());
	}

	/**
	 * End session for API user.
	 * A login has to be send before each request.
	 *
	 * @param positiveInteger $customernumber customer number of reseller at netcup.
	 * @param string $apikey Unique API key generated in customer control panel.
	 * @param string $apisessionid Unique API session id created by login command.
	 * @param clientrequestid $clientrequestid Id from client side. Can contain letters and numbers. Field is optional.
	 * @return Responsemessage $responsemessage with information about result of the action like short and long resultmessages, message status, etc.
	 */
	public function logout($customernumber,$apikey,$apisessionid,$clientrequestid){
		return self::_Call('logout', func_get_args());
	}

	/**
	 * Create a login session for API users.
	 * A login has to be send before each request.
	 *
	 * @param positiveInteger $customernumber customer number of reseller at netcup.
	 * @param string $apikey Unique API key generated in customer control panel.
	 * @param string $apipassword API password set in customer control panel.
	 * @param clientrequestid $clientrequestid Id from client side. Can contain letters and numbers. Field is optional.
	 * @return Responsemessage $responsemessage with information about result of the action like short and long resultmessages, message status, etc. In responsedata field: string $apisessionid Server generated ID to be used with further requests when login was successful.
	 */
	public function login($customernumber,$apikey,$apipassword,$clientrequestid){
		return self::_Call('login', func_get_args());
	}

	/**
	 * Get all messages that are not read.
	 *
	 * @param positiveInteger $messagecount maximum number of unread messages to receive.
	 * @param positiveInteger $customernumber customer number of reseller at netcup.
	 * @param string $apikey Unique API key generated in customer control panel.
	 * @param string $apisessionid Unique API session id created by login command.
	 * @param clientrequestid $clientrequestid Id from client side. Can contain letters and numbers. Field is optional.
	 * @return Responsemessage $responsemessage with information about result of the action like short and long resultmessages, message status, etc. In responsedata field: ArrayOPollObject Unread Messages for this customer.
	 */
	public function poll($messagecount,$customernumber,$apikey,$apisessionid,$clientrequestid){
		return self::_Call('poll', func_get_args());
	}

	/**
	 * Acknowledge log message from call made via API.
	 *
	 * @param positiveInteger $apilogid ID of message to mark as read.
	 * @param positiveInteger $customernumber customer number of reseller at netcup.
	 * @param string $apikey Unique API key generated in customer control panel.
	 * @param string $apisessionid Unique API session id created by login command.
	 * @param clientrequestid $clientrequestid Id from client side. Can contain letters and numbers. Field is optional.
	 * @return Responsemessage $responsemessage with information about result of the action like short and long resultmessages, message status, etc.
	 */
	public function ackpoll($apilogid,$customernumber,$apikey,$apisessionid,$clientrequestid){
		return self::_Call('ackpoll', func_get_args());
	}

	/**
	 * Change Ownerhandle. Current Owner has to allow or deny the ownerchange by clicking a link that is sent to him via e-mail.
	 * Process ends after 5 days if not answered.
	 *
	 * @param integer $new_handle_id Handle ID of the contact that should be the new owner.
	 * @param domainname $domainname Name of the domain including top-level domain.
	 * @param positiveInteger $customernumber customer number of reseller at netcup.
	 * @param string $apikey Unique API key generated in customer control panel.
	 * @param string $apisessionid Unique API session id created by login command.
	 * @param clientrequestid $clientrequestid Id from client side. Can contain letters and numbers. Field is optional.
	 * @return Responsemessage $responsemessage with information about result of the action like short and long resultmessages, message status, etc.
	 */
	public function changeOwnerDomain($new_handle_id,$domainname,$customernumber,$apikey,$apisessionid,$clientrequestid){
		return self::_Call('changeOwnerDomain', func_get_args());
	}

	/**
	 * Cancel Domain. Current Owner has to allow or deny the termination by clicking a link that is sent to him via e-mail.
	 * Process ends after 5 days if not answered.
	 * Inclusive domains that were ordered with a hosting product have to be canceled with this product.
	 *
	 * @param domainname $domainname Name of the domain including top-level domain.
	 * @param positiveInteger $customernumber customer number of reseller at netcup.
	 * @param string $apikey Unique API key generated in customer control panel.
	 * @param string $apisessionid Unique API session id created by login command.
	 * @param clientrequestid $clientrequestid Id from client side. Can contain letters and numbers. Field is optional.
	 * @return Responsemessage $responsemessage with information about result of the action like short and long resultmessages, message status, etc.
	 */
	public function cancelDomain($domainname,$customernumber,$apikey,$apisessionid,$clientrequestid){
		return self::_Call('cancelDomain', func_get_args());
	}

	/**
	 * Info Domain. Get Information about domain. All avaliable information for own domains. Status for other domains.
	 *
	 * @param domainname $domainname Name of the domain including top-level domain.
	 * @param positiveInteger $customernumber customer number of reseller at netcup.
	 * @param string $apikey Unique API key generated in customer control panel.
	 * @param string $apisessionid Unique API session id created by login command.
	 * @param clientrequestid $clientrequestid Id from client side. Can contain letters and numbers. Field is optional.
	 * @param registryinformationflag $registryinformationflag TRUE getinformation from registry (may be limited)|boolean FALSE get information from netcup data base only.  Field is optional. Default FALSE.
	 * @return Responsemessage $responsemessage Responsemessage with information about result of the action like short and long resultmessages, message status, etc.
	 */
	public function infoDomain($domainname,$customernumber,$apikey,$apisessionid,$clientrequestid,$registryinformationflag){
		return self::_Call('infoDomain', func_get_args());
	}

	/**
	 * Get auth info for domain.
	 *
	 * @param domainname $domainname Name of the domain including top-level domain.
	 * @param positiveInteger $customernumber customer number of reseller at netcup.
	 * @param string $apikey Unique API key generated in customer control panel.
	 * @param string $apisessionid Unique API session id created by login command.
	 * @param clientrequestid $clientrequestid Id from client side. Can contain letters and numbers. Field is optional.
	 * @return Responsemessage $responsemessage with information about result of the action like short and long resultmessages, message status, etc.
	 */
	public function getAuthcodeDomain($domainname,$customernumber,$apikey,$apisessionid,$clientrequestid){
		return self::_Call('getAuthcodeDomain', func_get_args());
	}

	/**
	 * Get Information about a handle.
	 *
	 * @param positiveInteger $handle_id Id of the contact
	 * @param positiveInteger $customernumber customer number of reseller at netcup.
	 * @param string $apikey Unique API key generated in customer control panel.
	 * @param string $apisessionid Unique API session id created by login command.
	 * @param clientrequestid $clientrequestid Id from client side. Can contain letters and numbers. Field is optional.
	 * @return Responsemessage $responsemessage with information about result of the action like short and long resultmessages, message status, etc.
	 */
	public function infoHandle($handle_id,$customernumber,$apikey,$apisessionid,$clientrequestid){
		return self::_Call('infoHandle', func_get_args());
	}

	/**
	 * Get ids and name of all handles of a user. If Organisation is set, also value of organisation field.
	 *
	 * @param positiveInteger $customernumber customer number of reseller at netcup.
	 * @param string $apikey Unique API key generated in customer control panel.
	 * @param string $apisessionid Unique API session id created by login command.
	 * @param clientrequestid $clientrequestid Id from client side. Can contain letters and numbers. Field is optional.
	 * @return Responsemessage $responsemessage with information about result of the action like short and long resultmessages, message status, etc.
	 */
	public function listallHandle($customernumber,$apikey,$apisessionid,$clientrequestid){
		return self::_Call('listallHandle', func_get_args());
	}

	/**
	 * Delete a contact handle in data base.
	 * You can only delete a handle in the netcup database, if it is not used with a domain.
	 *
	 * @param positiveInteger $handle_id Id of the contact.
	 * @param positiveInteger $customernumber customer number of reseller at netcup.
	 * @param string $apikey Unique API key generated in customer control panel.
	 * @param string $apisessionid Unique API session id created by login command.
	 * @param clientrequestid $clientrequestid Id from client side. Can contain letters and numbers. Field is optional.
	 * @return Responsemessage $responsemessage with information about result of the action like short and long resultmessages, message status, etc.
	 */
	public function deleteHandle($handle_id,$customernumber,$apikey,$apisessionid,$clientrequestid){
		return self::_Call('deleteHandle', func_get_args());
	}

	/**
	 * Update a existing contact handle in data base and at registries where it is used.
	 * Handle is created at a registry as soon as it is used.
	 *
	 * @param positiveInteger $customernumber customer number of reseller at netcup.
	 * @param string $apikey Unique API key generated in customer control panel.
	 * @param string $apisessionid Unique API session id created by login command.
	 * @param positiveInteger $handle_id Id of the contact that will be updated.
	 * @param handletyp $type type of the handle like organisation or person
	 * @param max80chars $name full name of the contact.
	 * @param organisation $organisation organisation like company name.
	 * @param max63chars $street street
	 * @param max12chars $postalcode postcode
	 * @param max63chars $city city
	 * @param countrycode2char $countrycode countrycode in ISO 3166 ALPHA-2 format. 2 char codes like CH for Switzerland.
	 * @param telephone $telephone telephone number
	 * @param email $email email address
	 * @param clientrequestid $clientrequestid Id from client side. Can contain letters and numbers. Field is optional.
	 * @param ArrayOfOptionalhandleattributes $optionalhandleattributes Optional handle attributes as key value array. Please define as array in format for example: array( array("item" => "state","value" => utf8_encode("Rheinland-Pfalz")), array("item" => "handlecomment","value" => utf8_encode("A comment."))); Possible values are: ['fax'] fax fax number in format +49.12345678, ['state']  max40chars state for example Sachsen, ['handlecomment']  max80chars comment for the handle. Value will not be transfered to any registry., ['birthdate'] dateformatyyyymmdd date of birth in format YYYY-MM-DD, ['birthplace']  max70chars place of birth, ['birthcountrycountrycode'] countrycode2char country of birth, ['birthstate']  max63chars state of birth, ['birthplacepostalcode']  max12chars place of the postcode, ['registrationnumber']  max70chars registernumber, ['idcardnumber']  max70chars passportnumber, ['idcardissuedate'] dateformatyyyymmdd passport date of issue in format YYYY-MM-DD, ['idcardissueauthority']  max70chars passport issuing authority, ['taxnumber']  max70chars tax number, ['vatnumber']  max70chars sales tax number, ['aeroensid']  max70chars aeroensid mandatory for .aero domains, ['aeroenspassword']  max70chars aeroenspassword mandatory for .aero domains, ['xxxmemberid']  max20chars xxxmemberid mandatory for .xxx domains, ['xxxmemberpasswort']  max20chars xxxmemberpasswort mandatory for .xxx domains, ['proprofession']  max70chars profession mandatory for .pro domains, ['traveluin']  max20chars traveluin mandatory for .travel domains, ['trademarknumber']  max80chars brandnumber, ['trademarkcountrycode'] countrycode2char registry place of the brand, ['coopverificationcode']  max20chars coopverificationcode, ['asiatypeofentity'] asiatypeofentity type of legal peronality mandatory for .asia domains. Allowed values are: naturalPerson, corporation, cooperative, partnership, government, politicalParty, society, institution, ['asiaformofidentity'] asiaformofidentity form of identity mandatory for .asia domains Allowed values are: certificate, legislation, passport, politicalPartyRegistry, societyRegistry, ['asiaidentnumber']  max255chars identificationnumber mandatory for .asia domains, ['jobstitelposition']  max70chars title or position mandatory for .jobs domains, ['jobswebsite'] url URL of website mandatory for .jobs domains, ['jobsindustrytype']  max128chars type of company mandatory for .jobs domains, ['jobscontactisadmin'] yesno Yes or No mandatory for .jobs domains, ['jobsassociationmember'] yesno Yes or No mandatory for .jobs domains, ['esnumbertype'] esnumbertype NIF/NIE/DNI-number type mandatory for .es domains, ['esnifnienumber']  max70chars NIF/NIE/DNI-number mandatory for .es domains
	 * @return Responsemessage $responsemessage with information about result of the action like short and long resultmessages, message status, etc.
	 */
	public function updateHandle($customernumber,$apikey,$apisessionid,$handle_id,$type,$name,$organisation,$street,$postalcode,$city,$countrycode,$telephone,$email,$clientrequestid,$optionalhandleattributes){
		return self::_Call('updateHandle', func_get_args());
	}

	/**
	 * Create a contact handle in data base. Contact handles are mandatory for ordering domains.
	 * Fields type, name and organisation can not be changed by an update.
	 * Field email can not be changed if domain is used at a global top-level domain.
	 *
	 * @param positiveInteger $customernumber customer number of reseller at netcup.
	 * @param string $apikey Unique API key generated in customer control panel.
	 * @param string $apisessionid Unique API session id created by login command.
	 * @param handletyp $type type of the handle like organisation or person
	 * @param max80chars $name full name of the contact.
	 * @param organisation $organisation organisation like company name.
	 * @param max63chars $street street
	 * @param max12chars $postalcode postal code
	 * @param max63chars $city city
	 * @param countrycode2char $countrycode countrycode in ISO 3166 ALPHA-2 format. 2 char codes like CH for Switzerland.
	 * @param telephone $telephone telephone number
	 * @param email $email email address
	 * @param clientrequestid $clientrequestid Id from client side. Can contain letters and numbers. Field is optional.
	 * @param ArrayOfOptionalhandleattributes $optionalhandleattributes Optional handle attributes as key value array. Please define as array in format for example: array( array("item" => "state","value" => utf8_encode("Rheinland-Pfalz")), array("item" => "handlecomment","value" => utf8_encode("A comment."))); Possible values are: ['fax'] fax fax number in format +49.12345678, ['state']  max40chars state for example Sachsen, ['handlecomment']  max80chars comment for the handle. Value will not be transfered to any registry., ['birthdate'] dateformatyyyymmdd date of birth in format YYYY-MM-DD, ['birthplace']  max70chars place of birth, ['birthcountrycountrycode'] countrycode2char country of birth, ['birthstate']  max63chars state of birth, ['birthplacepostalcode']  max12chars place of the postcode, ['registrationnumber']  max70chars registernumber, ['idcardnumber']  max70chars passportnumber, ['idcardissuedate'] dateformatyyyymmdd passport date of issue in format YYYY-MM-DD, ['idcardissueauthority']  max70chars passport issuing authority, ['taxnumber']  max70chars tax number, ['vatnumber']  max70chars sales tax number, ['aeroensid']  max70chars aeroensid mandatory for .aero domains, ['aeroenspassword']  max70chars aeroenspassword mandatory for .aero domains, ['xxxmemberid']  max20chars xxxmemberid mandatory for .xxx domains, ['xxxmemberpasswort']  max20chars xxxmemberpasswort mandatory for .xxx domains, ['proprofession']  max70chars profession mandatory for .pro domains, ['traveluin']  max20chars traveluin mandatory for .travel domains, ['trademarknumber']  max80chars brandnumber, ['trademarkcountrycode'] countrycode2char registry place of the brand, ['coopverificationcode']  max20chars coopverificationcode, ['asiatypeofentity'] asiatypeofentity type of legal peronality mandatory for .asia domains. Allowed values are: naturalPerson, corporation, cooperative, partnership, government, politicalParty, society, institution, ['asiaformofidentity'] asiaformofidentity form of identity mandatory for .asia domains Allowed values are: certificate, legislation, passport, politicalPartyRegistry, societyRegistry, ['asiaidentnumber']  max255chars identificationnumber mandatory for .asia domains, ['jobstitelposition']  max70chars title or position mandatory for .jobs domains, ['jobswebsite'] url URL of website mandatory for .jobs domains, ['jobsindustrytype']  max128chars type of company mandatory for .jobs domains, ['jobscontactisadmin'] yesno Yes or No mandatory for .jobs domains, ['jobsassociationmember'] yesno Yes or No mandatory for .jobs domains, ['esnumbertype'] esnumbertype NIF/NIE/DNI-number type mandatory for .es domains, ['esnifnienumber']  max70chars NIF/NIE/DNI-number mandatory for .es domains
	 * @return Responsemessage $responsemessage with information about result of the action like short and long resultmessages, message status, etc.
	 */
	public function createHandle($customernumber,$apikey,$apisessionid,$type,$name,$organisation,$street,$postalcode,$city,$countrycode,$telephone,$email,$clientrequestid,$optionalhandleattributes){
		return self::_Call('createHandle', func_get_args());
	}

	/**
	 * Get information about all domains that a customer owns. For detailed information please use infoDomain
	 *
	 * @param positiveInteger $customernumber customer number of reseller at netcup.
	 * @param string $apikey Unique API key generated in customer control panel.
	 * @param string $apisessionid Unique API session id created by login command.
	 * @param clientrequestid $clientrequestid Id from client side. Can contain letters and numbers. Field is optional.
	 * @return Responsemessage $responsemessage with information about result of the action like short and long resultmessages, message status, etc. Contains DomainObject Objekts in Responsedata field.
	 */
	public function listallDomains($customernumber,$apikey,$apisessionid,$clientrequestid){
		return self::_Call('listallDomains', func_get_args());
	}
}

/**
 * Nameserver entry.
 * Hostname is mandatory.
 *
 * @pw_element string $hostname Hostname of the nameserver
 * @pw_element string $ipv4 IPv4 address
 * @pw_element string $ipv6 IPv6 address
 * @pw_complex Nameserverentry
 */
class Nameserverentry{
	/**
	 * Hostname of the nameserver
	 *
	 * @var string
	 */
	public $hostname;
	/**
	 * IPv4 address
	 *
	 * @var string
	 */
	public $ipv4;
	/**
	 * IPv6 address
	 *
	 * @var string
	 */
	public $ipv6;
}

/**
 * Contains Nameserverentry objects.
 * At least two different nameserver needed.
 *
 * @pw_element Nameserverentry $nameserver1 Object with information about nameserver.
 * @pw_element Nameserverentry $nameserver2 Object with information about nameserver.
 * @pw_element Nameserverentry $nameserver3 Object with information about nameserver.
 * @pw_element Nameserverentry $nameserver4 Object with information about nameserver.
 * @pw_element Nameserverentry $nameserver5 Object with information about nameserver.
 * @pw_element Nameserverentry $nameserver6 Object with information about nameserver.
 * @pw_element Nameserverentry $nameserver7 Object with information about nameserver.
 * @pw_element Nameserverentry $nameserver8 Object with information about nameserver.
 * @pw_complex Nameserverentries
 */
class Nameserverentries{
	/**
	 * Object with information about nameserver.
	 *
	 * @var Nameserverentry
	 */
	public $nameserver1;
	/**
	 * Object with information about nameserver.
	 *
	 * @var Nameserverentry
	 */
	public $nameserver2;
	/**
	 * Object with information about nameserver.
	 *
	 * @var Nameserverentry
	 */
	public $nameserver3;
	/**
	 * Object with information about nameserver.
	 *
	 * @var Nameserverentry
	 */
	public $nameserver4;
	/**
	 * Object with information about nameserver.
	 *
	 * @var Nameserverentry
	 */
	public $nameserver5;
	/**
	 * Object with information about nameserver.
	 *
	 * @var Nameserverentry
	 */
	public $nameserver6;
	/**
	 * Object with information about nameserver.
	 *
	 * @var Nameserverentry
	 */
	public $nameserver7;
	/**
	 * Object with information about nameserver.
	 *
	 * @var Nameserverentry
	 */
	public $nameserver8;
}

/**
 * Response message of a request send to the api.
 *
 * @pw_element string $serverrequestid Unique ID for the request, created by the server
 * @pw_element string $clientrequestid Unique ID for the request, created by the client
 * @pw_element string $action Name of the function that was called.
 * @pw_element string $status Staus of the Message like "error".
 * @pw_element positiveInteger $statuscode Staus code of the Message like 2011.
 * @pw_element string $shortmessage Short message with information about the processing of the messsage.
 * @pw_element string $longmessage Long message with information about the processing of the messsage.
 * @pw_element mixed $responsedata Data from the response like domain object.
 * @pw_complex Responsemessage
 */
class Responsemessage{
	/**
	 * Unique ID for the request, created by the server
	 *
	 * @var string
	 */
	public $serverrequestid;
	/**
	 * Unique ID for the request, created by the client
	 *
	 * @var string
	 */
	public $clientrequestid;
	/**
	 * Name of the function that was called.
	 *
	 * @var string
	 */
	public $action;
	/**
	 * Staus of the Message like "error".
	 *
	 * @var string
	 */
	public $status;
	/**
	 * Staus code of the Message like 2011.
	 *
	 * @var positiveInteger
	 */
	public $statuscode;
	/**
	 * Short message with information about the processing of the messsage.
	 *
	 * @var string
	 */
	public $shortmessage;
	/**
	 * Long message with information about the processing of the messsage.
	 *
	 * @var string
	 */
	public $longmessage;
	/**
	 * Data from the response like domain object.
	 *
	 * @var mixed
	 */
	public $responsedata;
}

/**
 * Domain Object
 *
 * @pw_element string $domainname Name of the domain.
 * @pw_element Nameserverentries $nameserverentry nameserserver1 to nameserver8 with Nameserverentry objects.
 * @pw_element positiveInteger $customernumber customer number of reseller at netcup.
 * @pw_element Contactentries $assignedcontacts Ids of the contact handles for each contact type.
 * @pw_element boolean $ownerchangerunning TRUE when ownerchange has to be confirmed|boolean FALSE no ownerchange is running.
 * @pw_element boolean $cancellationrunning TRUE when cancellation has to be confirmed|boolean FALSE no cancellation is running
 * @pw_element string $nextbilling Date when domain is billed the next time in format YYYY-MM-DD
 * @pw_element positiveInteger $runtimemonths Runtime in months for this domain.
 * @pw_element string $lastupdate Information when the domain was updated last time at the registry. Not avaliable for all registries.
 * @pw_element string $domaincreated Information when the domain was created at the registry. Not avaliable for all registries.
 * @pw_element string $deletiondate Information when the domain is going to be deleted at the registry. Not avaliable for all registries.
 * @pw_element string $authcode AuthInfo code for this domain.
 * @pw_element string $state Domain can be inclusive or additional
 * @pw_element Registrycontacts $registrycontacts Handle Names like ABC12365445 or DENIC-415-R-1351 for each contact type.
 * @pw_complex DomainObject
 */
class DomainObject{
	/**
	 * Name of the domain.
	 *
	 * @var string
	 */
	public $domainname;
	/**
	 * nameserserver1 to nameserver8 with Nameserverentry objects.
	 *
	 * @var Nameserverentries
	 */
	public $nameserverentry;
	/**
	 * customer number of reseller at netcup.
	 *
	 * @var positiveInteger
	 */
	public $customernumber;
	/**
	 * Ids of the contact handles for each contact type.
	 *
	 * @var Contactentries
	 */
	public $assignedcontacts;
	/**
	 * TRUE when ownerchange has to be confirmed|boolean FALSE no ownerchange is running.
	 *
	 * @var boolean
	 */
	public $ownerchangerunning;
	/**
	 * TRUE when cancellation has to be confirmed|boolean FALSE no cancellation is running
	 *
	 * @var boolean
	 */
	public $cancellationrunning;
	/**
	 * Date when domain is billed the next time in format YYYY-MM-DD
	 *
	 * @var string
	 */
	public $nextbilling;
	/**
	 * Runtime in months for this domain.
	 *
	 * @var positiveInteger
	 */
	public $runtimemonths;
	/**
	 * Information when the domain was updated last time at the registry. Not avaliable for all registries.
	 *
	 * @var string
	 */
	public $lastupdate;
	/**
	 * Information when the domain was created at the registry. Not avaliable for all registries.
	 *
	 * @var string
	 */
	public $domaincreated;
	/**
	 * Information when the domain is going to be deleted at the registry. Not avaliable for all registries.
	 *
	 * @var string
	 */
	public $deletiondate;
	/**
	 * AuthInfo code for this domain.
	 *
	 * @var string
	 */
	public $authcode;
	/**
	 * Domain can be inclusive or additional
	 *
	 * @var string
	 */
	public $state;
	/**
	 * Handle Names like ABC12365445 or DENIC-415-R-1351 for each contact type.
	 *
	 * @var Registrycontacts
	 */
	public $registrycontacts;
}

/**
 * Handle Names like ABC12365445 or DENIC-415-R-1351
 *
 * @pw_element string $ownerc name Name of handle at registry.
 * @pw_element string $adminc name Name of handle at registry.
 * @pw_element string $techc name Name of handle at registry.
 * @pw_element string $zonec name Name of handle at registry.
 * @pw_element string $billingc name Name of handle at registry.
 * @pw_element string $onsitec name Name of handle at registry.
 * @pw_complex Registrycontacts
 */
class Registrycontacts{
	/**
	 * name Name of handle at registry.
	 *
	 * @var string
	 */
	public $ownerc;
	/**
	 * name Name of handle at registry.
	 *
	 * @var string
	 */
	public $adminc;
	/**
	 * name Name of handle at registry.
	 *
	 * @var string
	 */
	public $techc;
	/**
	 * name Name of handle at registry.
	 *
	 * @var string
	 */
	public $zonec;
	/**
	 * name Name of handle at registry.
	 *
	 * @var string
	 */
	public $billingc;
	/**
	 * name Name of handle at registry.
	 *
	 * @var string
	 */
	public $onsitec;
}



/**
 * An optional handle attribute.
 *
 * @pw_element string $item name of the optional attribute
 * @pw_element string $value Value of optional attribute
 * @pw_complex Optionalhandleattribute
 */
class Optionalhandleattribute{
	/**
	 * name of the optional attribute
	 *
	 * @var string
	 */
	public $item;
	/**
	 * Value of optional attribute
	 *
	 * @var string
	 */
	public $value;
}

/**
 * Contact handle
 *
 * @pw_element positiveInteger $id
 * @pw_element string $type type of the handle like organisation or person
 * @pw_element string $name name of the contact.
 * @pw_element string $organisation organisation like company name.
 * @pw_element string $street street
 * @pw_element string $postalcode postal code
 * @pw_element string $city city
 * @pw_element string $countrycode countrycode in ISO 3166 ALPHA-2 format. 2 char codes like CH for Switzerland.
 * @pw_element string $telephone telephone number
 * @pw_element string $email email address
 * @pw_element ArrayOfOptionalhandleattributes $optionalhandleattributes Optional handle attributes in a array of type Optionalhandleattribute
 * @pw_element boolean $assignedtodomain is handle in use.
 * @pw_complex HandleObject
 */
class HandleObject{
	/**
	 * @var positiveInteger
	 */
	public $id;
	/**
	 * type of the handle like organisation or person
	 *
	 * @var string
	 */
	public $type;
	/**
	 * name of the contact.
	 *
	 * @var string
	 */
	public $name;
	/**
	 * organisation like company name.
	 *
	 * @var string
	 */
	public $organisation;
	/**
	 * street
	 *
	 * @var string
	 */
	public $street;
	/**
	 * postal code
	 *
	 * @var string
	 */
	public $postalcode;
	/**
	 * city
	 *
	 * @var string
	 */
	public $city;
	/**
	 * countrycode in ISO 3166 ALPHA-2 format. 2 char codes like CH for Switzerland.
	 *
	 * @var string
	 */
	public $countrycode;
	/**
	 * telephone number
	 *
	 * @var string
	 */
	public $telephone;
	/**
	 * email address
	 *
	 * @var string
	 */
	public $email;
	/**
	 * Optional handle attributes in a array of type Optionalhandleattribute
	 *
	 * @var ArrayOfOptionalhandleattributes
	 */
	public $optionalhandleattributes;
	/**
	 * is handle in use.
	 *
	 * @var boolean
	 */
	public $assignedtodomain;
}




/**
 * Handle Ids of contacts.
 *
 * @pw_element string $ownerc Id of contact handle.
 * @pw_element string $adminc Id of contact handle.
 * @pw_element string $techc Id of contact handle.
 * @pw_element string $zonec Id of contact handle.
 * @pw_element string $billingc Id of contact handle.
 * @pw_element string $onsitec Id of contact handle.
 * @pw_complex Contactentries
 */
class Contactentries{
	/**
	 * Id of contact handle.
	 *
	 * @var string
	 */
	public $ownerc;
	/**
	 * Id of contact handle.
	 *
	 * @var string
	 */
	public $adminc;
	/**
	 * Id of contact handle.
	 *
	 * @var string
	 */
	public $techc;
	/**
	 * Id of contact handle.
	 *
	 * @var string
	 */
	public $zonec;
	/**
	 * Id of contact handle.
	 *
	 * @var string
	 */
	public $billingc;
	/**
	 * Id of contact handle.
	 *
	 * @var string
	 */
	public $onsitec;
}

/**
 * Object that is returned after successful login.
 *
 * @pw_element string $apisessionid Unique API session id created by login command.
 * @pw_complex SessionObject
 */
class SessionObject{
	/**
	 * Unique API session id created by login command.
	 *
	 * @var string
	 */
	public $apisessionid;
}
