doc/DMAPI-ext.txt
changeset 13 4e431e2de91a
parent 12 584ceb504d29
equal deleted inserted replaced
12:584ceb504d29 13:4e431e2de91a
     1 This is description of DMAPI, oriented mostly to experienced users.
       
     2 	
       
     3 The description reflects interface version 1.2.*
       
     4 
       
     5 Basics:
       
     6 =======
       
     7 
       
     8 	Requests to the DMAPI (Domain Management API) are simply HTTP POST (or GET)
       
     9 	requests.
       
    10 	
       
    11 	NOTE: Only TLS is supported!
       
    12 
       
    13 	The request parameters are passed as standard www-form variables, URL
       
    14 	encoded, i.e. example for login request:
       
    15 
       
    16 		https://dmapi.joker.com/request/login?username=user@joker.com&password=pass
       
    17 	
       
    18 	Server responses are plain-text messages, with headers (MIME-like), followed
       
    19 	by LF, followed by reply body, like this (response to login request):
       
    20 
       
    21 ---reply---
       
    22 Auth-SID: <session-id>
       
    23 
       
    24 com
       
    25 net
       
    26 org
       
    27 ---reply---
       
    28 
       
    29 	This way, even web-browsers might be used to send requests and to
       
    30 	read replies (may be useful for testing).
       
    31 
       
    32 	Most common headers fields, returned by most requests:
       
    33 
       
    34 Tracking-Id:	Unique server-assigned tracking id, assigned to almost all
       
    35 		requests. Please include this Id (if present) in case if
       
    36 		you are reporting problem related to failed request.
       
    37 Status-Code:	Not 0 if error occurred
       
    38 Status-Text:	Human-friendly error description
       
    39 Result:		ACK or NACK
       
    40 Proc-ID:	Joker.com processing ID, usually generated for all requests that
       
    41 		modify or create objects (domains/contacts/nameservers).
       
    42 Account-Balance:
       
    43 		Current reseller's account balance. Please note, that
       
    44 		this value may be slightly outdated, and should be used
       
    45 		only as a reference.
       
    46 
       
    47 Error:		May be returned if (and only if) the request was rejected,
       
    48 		in this case reason(s) will be provided. Presence of this
       
    49 		line in headers is indicative that processing didn't take
       
    50 		place.
       
    51 Warning:	Indicative of non-fatal processing or validation problems.
       
    52 
       
    53 Columns:	List of columns names, separated by comma (for list queries)
       
    54 		If not present, see request description.
       
    55 Separator:	List column separator (TAB is "\t", SPACE is " ")
       
    56 		If not present, defaults to SPACE (or as specified in request)
       
    57 
       
    58 	HTTP error codes: 200 if everything is OK (request was accepted and
       
    59 	processed or queued for processing), otherwise the reason will be
       
    60 	provided in Error header lines (or, if this is absent, HTTP error
       
    61 	code should be used).
       
    62 
       
    63 	NOTE: Regardless of HTTP error code, please examine response body,
       
    64 	it may contain useful tips (in Error or Warning headers) why request
       
    65 	failed.
       
    66 
       
    67 	IMPORTANT: Every request (except login) *requires* presence of
       
    68 	"auth-sid" parameter, which is returned by the "login" request. Active
       
    69 	session will expire after some inactivity period (default 1 hour).
       
    70 
       
    71 	Example:
       
    72 
       
    73 		https://dmapi.joker.com/request/query-domain-list?auth-sid=20ddb8c3b2ea758dcf9fa4c7f46c0784
       
    74 		
       
    75 	In case if you use a browser to access this interface, then session id
       
    76 	will be send as a cookie, hence need not to be specified as Auth-Sid
       
    77 	(unless cookies are not supported or turned off). In any case,
       
    78 	"auth-sid" has precedence, if provided.
       
    79 	
       
    80 	NOTE: Session may become invalid due to various reasons, so please
       
    81 	don't expect it to be valid forever. Instead, design your application
       
    82 	in a way, that, if your request is rejected because of authorization
       
    83 	failure, send "login" request again, and only if it fails, stop processing.
       
    84 	
       
    85 	In request descriptions below, "Requires" section defines variables
       
    86 	(sometimes referred as fields) that MUST be present, "Accepts"
       
    87 	section defines variables that MAY be present (but not required),
       
    88 	and "Returns" section describes request output - header fields and
       
    89 	extra data (if any). If "Returns" is omitted, then standard reply
       
    90 	should be expected (Status-Code, Status-Text, Proc-ID etc.).
       
    91 
       
    92 	All variable and request names are case-insensitive.
       
    93 
       
    94 Differences to existing email-gateway
       
    95 =====================================
       
    96 
       
    97 	DMAPI only accepts pre-registered contact and name-server handles.
       
    98 	It means that before you can register (or modify) domain, you MUST
       
    99 	register all necessary contacts and name-servers.
       
   100 
       
   101 	Unlike email interface, there is no differentiation in requests for
       
   102 	different domain/contact types.
       
   103 	
       
   104 	Some requests are asynchronous, and acceptance of request by the
       
   105 	DMAPI is not necessarily means that it is processed (or will be
       
   106 	processed at all). The real reply (acknowledgement or refusal) will
       
   107 	be stored on the server and can be retrieved later. To list
       
   108 	available replies you should use requests "result-list",
       
   109 	"result-retrieve" and "result-delete" periodically.
       
   110 	
       
   111 	NOTE: Not retrieved replies will be kept on the server for period of
       
   112 	90 days, then only status of specific request will be available
       
   113 	(success or failure).
       
   114 	
       
   115 	IMPORTANT: Please also note that registration/renewal period is in
       
   116 	MONTHS, NOT YEARS! This is to allow future micro-registrations.
       
   117 	
       
   118 DISCLAIMER
       
   119 ==========
       
   120 
       
   121 	Please be aware, that, in some circumstances, your request might be
       
   122 	refused, not processed or processed incorrectly (unlikely, but still
       
   123 	possible).
       
   124 	
       
   125 	However, the DMAPI is supported feature, so your feedback is greatly
       
   126 	appreciated.
       
   127 	
       
   128 	By using DMAPI, you agree to General Terms & Conditions of Joker.com:
       
   129 	https://joker.com/index.joker?mode=page&page=agreement
       
   130 	
       
   131 Requests, their parameters and return values
       
   132 ============================================
       
   133 
       
   134 login
       
   135 =====
       
   136 	Requires:
       
   137 		username		Joker.com username
       
   138 		password		Joker.com password
       
   139 		
       
   140 	Returns:
       
   141 		Auth-SID		Authenticated Session ID, must be provided with any other request
       
   142 		UID			Joker user-id
       
   143 
       
   144 		List of supported TLDs which reseller may register.
       
   145 		
       
   146 	Authenticates user to the system.
       
   147 		
       
   148 	To be able to use entire API, you must have reseller account in
       
   149 	joker.com (and use this account to log in).
       
   150 	
       
   151 logout
       
   152 ======
       
   153 
       
   154 	Returns: nothing
       
   155 	
       
   156 	Used to forcibly close (terminate) a session. The session identified by
       
   157 	Auth-SID may not be used anymore to send requests. Normally not required
       
   158 	as session will timeout eventually (default after 1 hour).
       
   159 	
       
   160 result-list
       
   161 ===========
       
   162 
       
   163 	Accepts:
       
   164 		pending			Shows results without reply (in progress)
       
   165 		showall			Shows results deleted using result-delete
       
   166 		period			Shows results for specified period of days (default 90)
       
   167 		date			Shows results received on (or before) specified date.
       
   168 					When date is specified, parameter "period" will be
       
   169 					applied to this date (instead of today) and defaults
       
   170 					to 1.
       
   171 		offset			Start displaying results from specified position
       
   172 		limit			Sets limit for number of rows displayed
       
   173 
       
   174 		status			Shows results having specified status (ack/nack/?)
       
   175 		count-only		When set to 1, only count number of records and return
       
   176 					single line in format "Records: N".
       
   177 
       
   178 		All following filters may use patterns ("*" and "?")
       
   179 
       
   180 		rtype			Shows results for requests of specified type
       
   181 					(domain-register/etc)
       
   182 		objid			Shows results for specified object ids (domain names
       
   183 					and so on)
       
   184 		procid			Shows results for specified proc-id
       
   185 		svtrid			Shows results for specified SvTrId
       
   186 		cltrid			Shows results for specified ClTrId
       
   187 
       
   188 	Returns:
       
   189 		List of answers from joker.com (one per line):
       
   190 
       
   191 			TimeStamp SvTrId Proc-ID request-type status ClTrId
       
   192 			
       
   193 		Where:
       
   194 		
       
   195 			TimeStamp:	The time when request was made, YYYYMMDDHHMMSS
       
   196 			SvTrID:		Tracking-Id associated with this request.
       
   197 			Proc-ID:	Proc-Id associated with this request.
       
   198 			request-type:	The type of the request.
       
   199 			request-object:	The object name (host, domain or contact handle)
       
   200 			status:		ack, nack or ?, where ack means that request was
       
   201 					completed successfully.
       
   202 			ClTrId:		User specified transaction ID, or "-" if nothing
       
   203 					was provided by the user.
       
   204 
       
   205 
       
   206 result-retrieve
       
   207 ===============
       
   208 
       
   209 	Accepts:
       
   210 
       
   211 		Proc-ID			One of this must be specified. If both are specified,
       
   212 		SvTrID			SvTrId has precedence.
       
   213 
       
   214 	Returns:
       
   215 
       
   216 		Answer (processing result) associated with specified Tracking/Processing ID.
       
   217 		
       
   218 		If detailed information (content) is not available, only status will be returned.
       
   219 		
       
   220 	Please note: since there is no requirement of uniqueness for user-specified transaction
       
   221 	ids, it is not possible to use them to retrieve specific results.
       
   222 	
       
   223 result-delete
       
   224 =============
       
   225 
       
   226 	Accepts:
       
   227 	
       
   228 		Proc-ID
       
   229 		SvTrId
       
   230 		
       
   231 	Returns:
       
   232 	
       
   233 		A descriptive message (confirmation) in case of success.
       
   234 		
       
   235 	This request will delete the content (not the status) of reply to asynchronous
       
   236 	request. Deleted results will not be listed any more when using result-list.
       
   237 	Semantics of parameters is like in result-retrieve.
       
   238 
       
   239 query-domain-list
       
   240 =================
       
   241 
       
   242 	Accepts:
       
   243 		pattern			Pattern to match (glob-like)
       
   244 		from			Start from this item in list
       
   245 		to			End by this
       
   246 		showstatus		Add additional column, showing domain status,
       
   247 					may be 0 or 1.
       
   248 		showgrants		Add additional column, showing domain grants,
       
   249 					may be 0 or 1.
       
   250 
       
   251 	Returns:
       
   252 	
       
   253 		List of registered domains and their expiration dates (one
       
   254 		per line, separated by white-space). If "showstatus" is present,
       
   255 		the the list will be with three columns, the last one showing
       
   256 		domain status (like "lock,autorenew" etc - comma separated).
       
   257 		
       
   258 query-contact-list
       
   259 ==================
       
   260 
       
   261 	Accepts:
       
   262 		pattern			Pattern to match (against handle)
       
   263 		from			Start from this item in list
       
   264 		to			End by this
       
   265 		tld			Limits output to contact handles which
       
   266 					may be used with specified TLDs.
       
   267 		extended-format		Provides additional information for every contact listed:
       
   268 					name & organization. May be "1" or "0", defaults to "0".
       
   269 		
       
   270 	Returns:
       
   271 	
       
   272 		List of registered contact handles, one per line. 
       
   273 		
       
   274 		NOTE: Unless explicitly requested ("from" and/or "to" parameters), the number
       
   275 		      of entries returned is limited to 10000!
       
   276 		
       
   277 		When "extended-format" is requested, output columns are separated by tabs ("\t"),
       
   278 		and "Columns" header provides column names.
       
   279 
       
   280 query-ns-list, query-host-list
       
   281 ==============================
       
   282 
       
   283 	Accepts:
       
   284 		pattern			Pattern to match (against host name)
       
   285 		full			Include IPs if non-zero
       
   286 
       
   287 	Returns:
       
   288 		List of registered name servers, one per line
       
   289 		If "full" is non-zero, then the list will include IP addresses,
       
   290 		IPv4 (2nd column) and IPv6 (3rd column), columns will be separated
       
   291 		by tab ("\t") character. If specific IP is not present (say, there
       
   292 		is only IPv4 or IPv6), it will be listed as "-".
       
   293 
       
   294 		Example of list with IPs:
       
   295 		
       
   296 		ns.example.com	1.2.3.4	-
       
   297 		ns6.example.com	-	FE80:0000:0000:0000:0202:B3FF:FE1E:8329
       
   298 		
       
   299 query-object (deprecated; please use query-whois)
       
   300 =================================================
       
   301 
       
   302 	Accepts:
       
   303 		domain			Domain name
       
   304 		contact			Contact handle
       
   305 		host			Host name
       
   306 		
       
   307 			Exactly one of those must be specified. Only object registered
       
   308 			with Joker.Com may be queried.
       
   309 			
       
   310 	Returns:
       
   311 	
       
   312 		Information about specified object (similar to whois), in format "key: value".
       
   313 		
       
   314 query-whois
       
   315 ===========
       
   316 		
       
   317 	Accepts:
       
   318 		domain			Domain name
       
   319 		contact			Contact handle
       
   320 		host			Host name
       
   321 		
       
   322 			Exactly one of those must be specified. Only object registered
       
   323 			with Joker.Com may be queried.
       
   324 			
       
   325 	Returns:
       
   326 	
       
   327 		Information about specified object (similar to whois), in format "key: value".
       
   328 		The difference to query-object request is that this request reflects actual
       
   329 		(live) data in Joker.com database, while query-object may show a data which
       
   330 		is a bit outdated.
       
   331 		
       
   332 	NOTE: this request will eventually replace query-object, or, to be precise, query-object
       
   333 	      will be replaced with this one. Some output fields are changed, some are removed
       
   334 	      completely, but it should be compatible to query-object. Please, make a transition
       
   335 	      to this request.
       
   336 		
       
   337 query-profile
       
   338 =============
       
   339 
       
   340 	Returns reseller profile data in format "key: value". May be used to
       
   341 	query account balance.
       
   342 		
       
   343 		
       
   344 contact-create
       
   345 ==============
       
   346 
       
   347 	Parameters:
       
   348 		tld			Target TLD, where this contact is intended to be used.
       
   349 		name			Full name (if empty, fname + lname will be used)
       
   350 		fname			First name
       
   351 		lname			Last name
       
   352 		title			(opt)
       
   353 		individual		(opt) Y, Yes, N, No
       
   354 		organization		(opt if individual)
       
   355 		email
       
   356 		address-1
       
   357 		address-2		(opt)
       
   358 		city
       
   359 		state			(opt)
       
   360 		postal-code
       
   361 		country			ISO country code (2 letters)
       
   362 		phone			Phone number
       
   363 		fax			Fax number (opt)
       
   364 		lang			(only meaningful for .EU contacts)
       
   365 		app-purpose		(required for .US contacts)
       
   366 		nexus-category		(required for .US contacts)
       
   367 		nexus-category-country	(required for .US contacts)
       
   368 		account-type		(required for .UK contacts, if used as owner contact)
       
   369 		company-number		(Required for .UK contacts with specific account types)
       
   370 		
       
   371 	"name" or "lname" and "fname" must be provided. Fields marked (opt) are
       
   372 	optional, all other fields are required (and must not be empty).
       
   373 	
       
   374 	As of version 1.1, "lname" and "fname", if provided, will be converted
       
   375 	to "name" (simple concatenation of "fname" and "lname"), because
       
   376 	registries support only "name" format. In general, use of "fname" and
       
   377 	"lname" is deprecated, and support for these fields will be removed
       
   378 	in version 1.2.
       
   379 	
       
   380 	Please note, fields listed here (except "tld") may be used (or required)
       
   381 	in other requests, this is indicated by referring to "Contact fields".
       
   382 	
       
   383 	"lang" must contain two-letter ISO country (language) code, and is only
       
   384 	required when creating .EU contacts. The purpose is to specify language
       
   385 	to be used in notifications emails, sent from EURid. Please note - this
       
   386 	field cannot be modified later, and the default is 'EN' (English)!
       
   387 	
       
   388 	"app-purpose", "nexus-category" and "nexus-category-country" are
       
   389 	required only when creating .US contacts, and cannot be modified
       
   390 	later.
       
   391 	
       
   392 	"account-type" is a required for all .UK contacts which will be used as
       
   393 	domain owner contacts. Possible values are:
       
   394 	
       
   395 		Value		Meaning
       
   396 		==========	===========================================
       
   397 		LTD		UK Limited Company
       
   398 		PLC		UK Public Limited Company
       
   399 		PTNR		UK Partnership
       
   400 		STRA		UK Sole Trader
       
   401 		LLP		UK Limited Liability Partnership
       
   402 		IP		UK Industrial/Provident Registered Company
       
   403 		IND		UK Individual (representing self)
       
   404 		SCH		UK School
       
   405 		RCHAR		UK Registered Charity
       
   406 		GOV		UK Government Body
       
   407 		CRC		UK Corporation by Royal Charter
       
   408 		STAT		UK Statutory Body
       
   409 		OTHER		UK Entity that does not fit into any of the above
       
   410 				(e.g. clubs, associations, many universities)
       
   411 		FIND		Non-UK Individual (representing self)
       
   412 		FCORP		Non-UK Corporation
       
   413 		FOTHER		Non-UK Entity
       
   414 		
       
   415 	By default, if "account-type" is not provided, value "FIND" or "IND" will be used
       
   416 	(dependent "country" value - for GB and UK it will be "IND", for everything else "FIND").
       
   417 	
       
   418 	"company-number" is required when "account-type" is one of: SCH, RCHAR, LTD, PLC, LLP, IP
       
   419 
       
   420 contact-modify
       
   421 ==============
       
   422 
       
   423 	Requires:
       
   424 		handle			Contact handle to modify.
       
   425 
       
   426 	Accepts (at least one of those must be provided):
       
   427 		name			Full name (if empty, fname + lname will be used)
       
   428 		fname			First name
       
   429 		lname			Last name
       
   430 		title
       
   431 		individual		Y, Yes, N, No
       
   432 		organization		(must be provided if individual=N)
       
   433 		email
       
   434 		address-1
       
   435 		address-2
       
   436 		city
       
   437 		state
       
   438 		postal-code
       
   439 		country			ISO country code (2 letters)
       
   440 		phone
       
   441 		fax
       
   442 		lang			(only meaningful for .EU contacts)
       
   443 		app-purpose		(.US contacts)
       
   444 		nexus-category		(.US contacts)
       
   445 		nexus-category-country	(.US contacts)
       
   446 		account-type		(.UK contacts, if used as owner contact)
       
   447 		company-number		(.UK contacts with specific account types)
       
   448 
       
   449 
       
   450 	If you	specify a field, it will be used as a new value, if you omit
       
   451 	(don not specify) it, the old value will not be modified.
       
   452 	
       
   453 	See also "contact-create" request for additional information.
       
   454 				
       
   455 contact-delete
       
   456 ==============
       
   457 
       
   458 	Requires:
       
   459 		handle			Contact handle to delete
       
   460 		
       
   461 	Using this request you can delete previously registered contact.
       
   462 		
       
   463 ns-create, host-create
       
   464 ======================
       
   465 
       
   466 	Requires:
       
   467 		host			FQDN host name
       
   468 		ip			IPv4 address (must not be from IANA's reserved range)
       
   469 		ipv6			IPv6 address
       
   470 		
       
   471 	Using this request you can register a nameserver. If ipv6 is provided, ip (IPv4) must
       
   472 	be provided as well.
       
   473 		
       
   474 ns-modify, host-modify
       
   475 ======================
       
   476 
       
   477 	Requires:
       
   478 		host			FQDN host name
       
   479 		ip			IPv4 address (must not be from IANA's reserved range)
       
   480 		ipv6			IPv6 address
       
   481 		
       
   482 	Using this request you can modify the IP address of a registered
       
   483 	nameserver.
       
   484 	
       
   485 	"-" may be used to specify empty value for "ip" or "ipv6", but at least one
       
   486 	of IP addressses must be set to valid address, or the request will fail.
       
   487 	
       
   488 	
       
   489 ns-delete, host-delete
       
   490 ======================
       
   491 
       
   492 	Requires:
       
   493 		host			FQDN host name
       
   494 		
       
   495 	Using this request you can delete a registered nameserver.
       
   496 		
       
   497 domain-register
       
   498 ===============
       
   499 
       
   500 	Requires:
       
   501 		domain			Domain name to register
       
   502 		period			Registration period in MONTHS (not in years!)
       
   503 		status			Domain status (only "production" is accepted so far)
       
   504 		owner-c			Owner contact handle
       
   505 		billing-c		Billing contact handle
       
   506 		admin-c			Administrative contact handle
       
   507 		tech-c			Technical contact handle
       
   508 		ns-list			List of name servers, delimited by colon
       
   509 		
       
   510 	Accepts:
       
   511 		autorenew		If set to "1", domain will be autorenewed upon
       
   512 					expiration.
       
   513 		language		3 letter language code for IDN domains
       
   514 		registrar-tag		Registrar tag, also known as "Membership token",
       
   515 					only meaningful for .XXX domains
       
   516 	
       
   517 		
       
   518 	Using this request you can register the domain.
       
   519 	
       
   520 	NOTE: You *must* have registered contacts to be able to register a domain!
       
   521 		
       
   522 	IMPORTANT: Please note that registration period is in MONTHS, NOT YEARS! This
       
   523 	is to allow future micro-registrations (in development).
       
   524 	
       
   525 domain-renew
       
   526 ============
       
   527 
       
   528 	Requires:
       
   529 		domain			Domain name to renew
       
   530 		period			Renewal period in months (not in years!)
       
   531 		expyear			Wanted expiration year
       
   532 
       
   533 	Using this request you can renew the domain. Please be aware that all
       
   534 	renewals are not refundable.
       
   535 		
       
   536 	IMPORTANT: Please note that registration period is in MONTHS, NOT YEARS!
       
   537 	
       
   538 	"expyear" is a safe option which can be used instead of "period" to
       
   539 	renew domain till specified year (not longer). If you use "period",
       
   540 	and by mistake send the request more than once, domain will be renewed
       
   541 	again, while with "expyear", it will not be renewed if it's expiration
       
   542 	year is greater or equals to specified.
       
   543 	
       
   544 	Only one of "period" or "expyear" may be used, but not both.
       
   545 		
       
   546 domain-transfer-in-reseller
       
   547 ===========================
       
   548 
       
   549 	Requires:
       
   550 		domain			Domain name to transfer
       
   551 		transfer-auth-id	Transfer Auth Id
       
   552 		billing-c		New billing contact handle
       
   553 		admin-c			New admin contact handle
       
   554 		tech-c			New tech contact handle
       
   555 
       
   556 	Accepts:
       
   557 		status			New domain status
       
   558 		owner-c			New owner contact handle
       
   559 		autorenew		Autorenew flag for the domain (0 or 1).
       
   560 					If not set explicitly, defaults to 1.
       
   561 		ns-list			List of colon-separated name-servers.
       
   562 		owner-email		New owner email
       
   563 	
       
   564 	Using this request you can initiate a transfer of the domain from
       
   565 	another registrar to Joker.com (gaining or incoming transfer).
       
   566 
       
   567 	"transfer-auth-id" is required for all domains excluding "uk" and "at".
       
   568 
       
   569 	Please note that "owner-c" parameter will become mandatory one day, please
       
   570 	use it whenever possible.
       
   571 
       
   572 domain-transfer-get-auth-id
       
   573 ===========================
       
   574 
       
   575 	Requires:
       
   576 		domain			Domain name to get auth id for
       
   577 		
       
   578 	Retrieves domain Auth-ID, which is required when transferring domains
       
   579 	to another registrar.
       
   580 	
       
   581 	This request is not real-time, i.e. you have to check detailed reply
       
   582 	(use "result-retrieve")	to get Auth-ID.
       
   583 	
       
   584 	Please note - *every* request will generate new Auth-ID, thus
       
   585 	rendering any previously requested Auth-ID invalid.
       
   586 		
       
   587 domain-modify
       
   588 =============
       
   589 
       
   590 	Requires:
       
   591 		domain			Domain name to modify
       
   592 		
       
   593 	Accepts:
       
   594 		billing-c		New billing contact handle
       
   595 		admin-c			New administrative contact handle
       
   596 		tech-c			New technical contact handle
       
   597 		ns-list			List of new name-servers (it will _replace_
       
   598 					existing name-servers!)
       
   599 		registrar-tag		Registrar tag, also known as "Membership token",
       
   600 					which can be set/changed on .XXX domains
       
   601 
       
   602 		dnssec			If specified, allows setting or removal of DNSSEC
       
   603 					keys for domain. If not specified, DNSSEC records
       
   604 					will not be changed.
       
   605 					Value of "0" will remove DNSSEC, value of "1" will
       
   606 					add DNSSEC (and ds-N parameters must be provided)
       
   607 
       
   608 		ds-1			List of DNSSEC parameters for DNSSEC enabled domains
       
   609 		ds-2			For com/net/org/tv/cc each entry has format:
       
   610 		ds-3				tag:alg:digest-type:digest
       
   611 		ds-4			For de:
       
   612 		ds-5				protocol:alg:flags:pubkey-base64
       
   613 		ds-6
       
   614 		
       
   615 	Using this request you can modify contact handles for the domain,
       
   616 	list of name-servers or DNSSEC parameters (for DNSSEC enabled domains).
       
   617 	
       
   618 	If specific value is not present, it will not be touched. Modification
       
   619 	of name-servers or DNSSEC parameters will replace currently defined set
       
   620 	of DNSSEC keys or name-servers.
       
   621 	
       
   622 	NOTE: DNSSEC parameters (ds-N) must be specified in order (ds-1, ds-2 etc),
       
   623 	and due to technical limitations this is impossible to modify only specific
       
   624 	key - they must be set all at once. This means that any request to modify DNSSEC
       
   625 	records will *replace* existing keys with only those which are provided!
       
   626 	
       
   627 	Example for adding one key (and enabling DNSSEC):
       
   628 	
       
   629 	http://dmapi.joker.com/request/domain-modify?domain=example.com&dnssec=1&ds-1=9934:8:1:C4BF75B16AF82888B61E28951BEF27804B60D968
       
   630 	
       
   631 	Example for removing DNSSEC information:
       
   632 	
       
   633 	http://dmapi.joker.com/request/domain-modify?domain=example.com&dnssec=0
       
   634 	
       
   635 	NOTE: You have to have your own name-service somewhere else to support DNSSEC,
       
   636 	if you use Joker.com name-service, DNSSEC will not be provided!
       
   637 
       
   638 domain-delete
       
   639 =============
       
   640 
       
   641 	Requires:
       
   642 		domain			Domain name to delete
       
   643 		
       
   644 	Accepts:
       
   645 		force			If present and contains 1, Y or Yes,
       
   646 					domain will be deleted even if older
       
   647 					that 3 days.
       
   648 		type			type of delete request, one of:
       
   649 					endoflife, immediate, transit
       
   650 					
       
   651 	Using this request you can delete already registered domain.
       
   652 	
       
   653 	If you delete a domain within the first 3 days after the registration,
       
   654 	the registration fee may be refunded to your account.
       
   655 	
       
   656 	To delete domain which is registered longer than 3 days, you must
       
   657 	specify "force=1", otherwise request will be rejected.
       
   658 
       
   659 	IMPORTANT: Please note that this feature must not be used for "domain tasting"
       
   660 	or "front running", and if you delete more than 1 domain per 12 registered
       
   661 	per month, you will not be refunded!
       
   662 
       
   663 	Deletion of domains in zones .eu, .nl, .me, .at, .de will not be refunded
       
   664 	regardless of when it was deleted!
       
   665 	
       
   666 domain-owner-change
       
   667 ===================
       
   668 
       
   669 	Requires:
       
   670 	
       
   671 	domain			Domain name to change owner
       
   672 		*			Contact fields (see contact-create)
       
   673 		
       
   674 	Using this request you can change (visible) owner of the domain.
       
   675 	Please use same fields as in contact-create request to describe
       
   676 	new owner.
       
   677 		
       
   678 domain-lock
       
   679 ===========
       
   680 
       
   681 	Requires:
       
   682 		domain			Domain name to lock
       
   683 		
       
   684 	Using this request you can lock a domain for preventing fraudulent
       
   685 	transfer attempts. If a domain is locked, each transfer-request from
       
   686 	a foreign registrar will be declined.
       
   687 
       
   688 domain-unlock
       
   689 =============
       
   690 
       
   691 	Requires:
       
   692 		domain			Domain name to unlock
       
   693 		
       
   694 
       
   695 	Using this request you can unlock a domain. If you want to transfer a
       
   696 	domain to a foreign registrar, the domain has to be unlocked.
       
   697 
       
   698 domain-set-property
       
   699 ===================
       
   700 
       
   701 	Requires:
       
   702 		domain			Domain name or pattern
       
   703 		pname			Property name
       
   704 		pvalue			Property value (may be empty)
       
   705 		
       
   706 
       
   707 	Using this request you can set a property (flag) for a domain or
       
   708 	a set of domains, selected by wildcard pattern.
       
   709 	
       
   710 	List of available properties and their effects:
       
   711 	
       
   712 	Property name		Value/Effect
       
   713 	=============		=============================================
       
   714 	autorenew		0 or 1
       
   715 				If set to 1, the domain will be autorenewed
       
   716 				on expiration (if you have non-zero balance).
       
   717 
       
   718 	whois-opt-out		0 or 1
       
   719 				Only meaningful for .tel domains currently.
       
   720 				If set to 1, owner information will not be
       
   721 				shown in whois.
       
   722 				
       
   723 	If value provided is empty, then the property will be cleared, i.e.
       
   724 	the default will be used.
       
   725 	
       
   726 domain-get-property
       
   727 ===================
       
   728 
       
   729 	Requires:
       
   730 		domain			Domain name
       
   731 		pname			Property name (same as in
       
   732 					domain-set-property)
       
   733 					
       
   734 	Using this request you can query value of specific property set for
       
   735 	domain. It returns single line, which looks like:
       
   736 	
       
   737 	autorenew: 0
       
   738 	
       
   739 grants-list
       
   740 ===========
       
   741 
       
   742 	Requires:
       
   743 		domain			Domain name
       
   744 		
       
   745 	Accepts:
       
   746 		showkey			Show invitation access key
       
   747 
       
   748 	Get a list of active and pending grants.
       
   749 	
       
   750 	Returns lines in the following format (space-separated):
       
   751 
       
   752 	invitation <nr> <scope> <key> domain <domain-name> <role> - - - <invitee-email> <nick-name>
       
   753 	grant <nr> <scope> <key> domain <domain-name> <role> <inviter-username> <invitee-username> <invitee-userid> <invitee-email> <nick-name>
       
   754 	
       
   755 	Where:
       
   756 	<nr>			Record number
       
   757 	<scope>			Grant/Invite id (used to uniquely identify records for revocation)
       
   758 	<key>			Invitation access key, present *only* when "showkey" is non-zero
       
   759 				It has meaning only for pending invitations only, and always is "-"
       
   760 				for grants.
       
   761 	<domain-name>		Domain name (identical to requested)
       
   762 	<role>			One of @admin/@billing/@tech/@creator
       
   763 	<inviter-username>	Self-explaining
       
   764 	<invitee-username>	Self-explaining
       
   765 	<invitee-userid>	-
       
   766 	<nick-name>		Self-Explaining
       
   767 	
       
   768 grants-invite
       
   769 =============
       
   770 
       
   771 	Requires:
       
   772 		domain			Domain name
       
   773 		email			Email of invitee
       
   774 		client-uid		Joker client-id of invitee - if provided, this will perform "silent"
       
   775 					assignment: invitee doesn't need to "accept" invitation, but will
       
   776 					be notified in any case.
       
   777 		role			Proposed role (@admin/@billing/@tech/@creator)
       
   778 		nickname		Invitee's nickname. If omitted, email will be used as default nickname.
       
   779 		
       
   780 	Returns status only (ok or not). Email is sent if request was succesfull.
       
   781 	
       
   782 	To internally transfer domain to another user (account) within Joker.com, please use the following
       
   783 	request:
       
   784 	
       
   785 	https://dmapi.joker.com/request/grants-invite?domain=example.com&email=dst-user-email@joker.com&role=@creator&client-uid=<dst-uid>
       
   786 	
       
   787 	Obviously, you will need to know user ID of the user, who will receive the domain - simply providing email address
       
   788 	is not sufficient.
       
   789 
       
   790 grants-revoke
       
   791 =============
       
   792 
       
   793 	Requires:
       
   794 		domain			Domain name
       
   795 		role			Role to revoke
       
   796 		scope			Scope (from grants-list request)			
       
   797 		type			Type of the record to revoke - "grant" or "invitation"
       
   798 		
       
   799 	Returns status only (ok or not). Email is sent if request was successful. 
       
   800 
       
   801 dns-zone-list
       
   802 =============
       
   803 
       
   804 	Accepts:
       
   805 		pattern			Pattern to match (glob-like)
       
   806 
       
   807 	List zones (domains) which are managed and served by Joker.com name
       
   808 	servers. Zones are listed one per line.
       
   809 
       
   810 dns-zone-get
       
   811 ============
       
   812 
       
   813 	Requires:
       
   814 		domain			Zone (domain) name to fetch data
       
   815 					from.
       
   816 
       
   817 	Returns list of zone records in the format, described in dns-zone-put request.
       
   818 
       
   819 
       
   820 dns-zone-put
       
   821 ============
       
   822 
       
   823 	Requires:
       
   824 		domain			Zone (domain) name to store data to.
       
   825 		zone			URL encoded zone data
       
   826 
       
   827 	Replace current zone for provided domain with specified value.
       
   828 
       
   829 	Field "zone" will be parsed as multi-line text (so usual line
       
   830 	terminators are expected).
       
   831 	
       
   832 	WARNING: this request will OVERWRITE current zone, i.e. all current
       
   833 	records will be replaced by new records.
       
   834 	
       
   835 	The format of a zone definition is as follows (one record per line):
       
   836 	
       
   837 	<label> <type> <pri> <target> <ttl> <valid-from> <valid-to> <parameters(s)>
       
   838 
       
   839 	Where:
       
   840 
       
   841 		label		subdomain/redirection label, relative to
       
   842 				current zone, or @ (which means	current
       
   843 				zone name).
       
   844 		type		record type (A, AAAA, MX, CNAME, URL,
       
   845 				MAILFW, TXT, NAPTR, DYNA, DYNAAAA, SRV)
       
   846 		pri		numeric value, meaningful only for types
       
   847 				MX, NAPTR and SRV, must be 0 for all other
       
   848 				types
       
   849 		target		record target/value. Must be quoted if
       
   850 				contains spaces.
       
   851 		ttl		record TTL in seconds
       
   852 		valid-from	record is not valid before this time (UNIX
       
   853 				timestamp) or 0
       
   854 		valid-to	record is not valid after this time (UNIX
       
   855 				timestamp) or 0
       
   856 		parameters	record-specific parameter(s)
       
   857 
       
   858 	All values from "name" to "ttl" are mandatory for every record.
       
   859 		
       
   860 	<valid-to> and <valid-from> are not implemented yet, so usually are 0,
       
   861 	and may be omitted if there are no other parameters required.
       
   862 
       
   863 	<parameters(s)> are record dependent, used in NAPTR, MAILFW, FRAME and URL
       
   864 	records.
       
   865 	
       
   866 	<ttl> must be at least 60 for all records except NAPTR and SVC, where
       
   867 	it can be 0 (meaning: no caching). For MAILFW/URL/FRAME <ttl> is
       
   868 	irrelevant and assumed to be 60 seconds (i.e., any change will be
       
   869 	in effect within 60 seconds from zone change).
       
   870 	
       
   871 	<pri> preference value for MX records, priority/weight for SRV records
       
   872 	and order/preference for NAPTR records. For any other record, the value
       
   873 	must be 0.
       
   874 	
       
   875 	Examples of zone records:
       
   876 	
       
   877 	www		A	0	127.0.0.1		86400
       
   878 	www		AAAA	0	fec0::17		86400
       
   879 	
       
   880 	@		MX	10	mail.example.com.	86400
       
   881 
       
   882 	redirect	URL	0	http://joker.com		86400
       
   883 	
       
   884 	Sets redirection from redirect.joker.com to http://joker.com (assuming that
       
   885 	current zone is "joker.com").
       
   886 
       
   887 	frame		FRAME	0	http://joker.com		86400	0 0 "Header: Frame-Forward" "head" "title" "body"
       
   888 	
       
   889 	Sets frame-based redirection similar to URL redirection.
       
   890 	
       
   891 	For FRAME record, extra parameters are as follows:
       
   892 	
       
   893 		Extra HTTP headers. (newlines may be escaped as \n)
       
   894 		Extra text placed in <head></head> section of generated HTML.
       
   895 		Title text (<title></title>) of generated HTML.
       
   896 		Body text (used for <noframes> section)
       
   897 		
       
   898 	username	MAILFW	0	redirected@example.com	86400	0 0 1
       
   899 	
       
   900 	This MAILFW records makes redirection of mail sent to username@joker.com (assuming
       
   901 	that current zone name is "joker.com") to redirected@example.com, extra parameter ("1")
       
   902 	specifies that spam-filtering should be used.
       
   903 		
       
   904 	naptr		NAPTR	10/100	replacement		86400	0 0 "flags" "service" "regex"
       
   905 	
       
   906 	This NAPTR record has order 10 and preference 100. Only one of "replacement" or "regex" may be
       
   907 	specified, if "regex" is specified, "replacement" must be "." (without quotes), if "replacement"
       
   908 	is specified, "regex" must be empty string. Quotes are mandatory for all extra parameters.
       
   909 	For details please consult RFC 2915, or look here: http://de.wikipedia.org/wiki/NAPTR
       
   910 	
       
   911 	_ldap._tcp	SRV	10/100	ldap.example.com:389	60
       
   912 	
       
   913 	This SRV records has priority 10, weight 100, target "ldap.example.com" and port "389"
       
   914 	with TTL 60 seconds. Please consult RFC 2782 for details.
       
   915 	
       
   916 	txt		TXT	0	"key=value"		86400
       
   917 	
       
   918 	Quoting of values for TXT records is mandatory.
       
   919 
       
   920 	www		CNAME	0	example.com.		86400
       
   921 	
       
   922 	Two special record types, DYNA and DYNAAAA, are used in case if DynDNS is active.
       
   923 	They have same meaning as corresponding "A" and "AAAA" records, except that
       
   924 	their targets may be updated using Joker DynDNS service.
       
   925 	
       
   926 	To enable/disable DynDNS service, and to defined username/password used to access
       
   927 	it, the record format is as follows:
       
   928 	
       
   929 	$dyndns=yes:username:password
       
   930 	
       
   931 	username/password may not contain spaces or colon (":") characters. If "no" is
       
   932 	specified instead of "yes", DynDNS will be turned off (i.e. DYN* entries will
       
   933 	have no effect).
       
   934 	
       
   935 	All empty lines, or lines starting with "#" character are ignored.
       
   936 	
       
   937 	In case if there any errors, zone modification will not be accepted. All errors
       
   938 	will be reported for every erroneous line, so if there are more than one,
       
   939 	you will be able to see all detectable errors.
       
   940 
       
   941 wa-email-list
       
   942 =============
       
   943 
       
   944 	Lists all domain owner emails which are pending verification. Default output is
       
   945 	as follows:
       
   946 	
       
   947 	email-address<TAB>domain-name<TAB>verification-expiration-date
       
   948 	
       
   949 	Where:
       
   950 	
       
   951 		email-address	email address of the domain owner which is pending verification
       
   952 		domain-name	domain name where email is the owner
       
   953 		verification-expiration-date	verification deadline, i.e. if by this date and time
       
   954 			(specified in standard ISO format) email is not positively verified, the domain
       
   955 			name listed may be put on hold.
       
   956 
       
   957 wa-email-details
       
   958 ================
       
   959 
       
   960 	Requires:
       
   961 	
       
   962 		key	Verification key
       
   963 	
       
   964 	List verification status for provided verification key. Entries are listed as follows:
       
   965 	
       
   966 	status<TAB>email<TAB>domain
       
   967 	
       
   968 	"status" is "verification", email is the domain owner's email.
       
   969 
       
   970 wa-email-validate
       
   971 =================
       
   972 
       
   973 	Requires:
       
   974 	
       
   975 		email	Email address to send validation request to.
       
   976 			It must be domain owner's email address.
       
   977 		
       
   978 	Returns special response header "Result", which will contain "ACK" if the validation request
       
   979 	has been sent or "NACK" otherwise.
       
   980 
       
   981 wa-email-verify
       
   982 ===============
       
   983 
       
   984 	Requires:
       
   985 	
       
   986 		key	Verification key (provided in meail verification request)
       
   987 		answer	Answer to verification request - "yes" or "no".
       
   988 		
       
   989 	If the answer is "yes", the verification status is set to "verified" and email is confirmed as valid,
       
   990 	if the answer is "no", then verification status is set to "invalid". If there is no answer before
       
   991 	verification deadline (normally 15 days), the status is also set to "invalid".
       
   992 
       
   993 	Returns special response header "Result", which will contain "ACK" if the verification has been
       
   994 	accepted or "NACK" otherwise.
       
   995 	
       
   996 wa-email-query-status
       
   997 =====================
       
   998 
       
   999 	Requires:
       
  1000 	
       
  1001 		email	Email address to query status of
       
  1002 		
       
  1003 	Returns single line with email status. Possible statuses:
       
  1004 	
       
  1005 	verified	email address is known and successfully verified (valid)
       
  1006 	unverified	email address is either not (yet) verified or is not known.
       
  1007 	pending		verification email has been sent but no response received yet
       
  1008 	invalid		email address is known to be invalid (bounced or no response)
       
  1009 
       
  1010 	Statuses "pending" and "invalid" are informational and are not guaranteed,
       
  1011 	i.e. it could happen that "unverified" is returned instead.
       
  1012 
       
  1013 -----