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