# Account and Handling ## login ### Login with Username & Password **Requires (mandatory):**
*username* Joker.com username (email address)
*password*Joker.com password
**Returns:**
*Auth-SID*Authenticated Session ID, must be provided with any other request (parameter *auth-sid*)
*List of TLDs*List of domain TLDs which are available to the reseller.
To be able to use the entire API, you must have a reseller account with Joker.com (and use this account to log in). **Example:** `  https://dmapi.joker.com/request/login?username=johndoe&password=mypass` ### Login with API Keys Instead of using your user- and password credentials, you may also use so called '**API keys**' for login. This way, you can create several DMAPI access facilities, which has several advantages: - you do not need to expose username and password in your scripts - API keys **can be restricted** to be "read only" (no modifications possible), or to allow 'modifications only' (can not produce costs) - you may hand API keys to your staff to enable them to do specific things with Joker.com Create your API keys in '[**My Profile**](https://joker.com/goto/myjoker)' in section '**Manage Joker.com API access keys**' Example usage: ``` https://dmapi.joker.com/request/login?api-key=Key_created_in_your_Profile_at_Joker.com ``` The result is the same as for "login"-request, you have to use the provided auth-sid for the subsequent actions. ## logout **Returns: Nothing** Used to forcibly close (terminate) a session. The session identified by Auth-SID may not be used anymore to send requests. Normally not required as session will timeout anyway (default: 1 hour). ## result-list **Accepts:**
*pending* get results of requests still in progress
*showall*get all results incl. deletes using result-delete
*period*get results for specifed period of days (default: 90)
*date*get results received on (or before) specified date. When date is specified, parameter "period" will be applied to this date (instead of today) and defaults to 1
*offset*start dispalying results from specified position
*limit*only get number of results specified by limit
*status*get results having specified status (ack/nack/?)
*count-only* when set to 1, only count number of records and return single line in format "Records: N"
All following filters may use patterns ("\*" and "?")
*rtype* get results for requests of specified type (domain-register/etc)
*objid*get results for specified object ids (domain names, contacts, hosts)
*procid*get results for specified proc-id
*svtrid*get results for specifued SvTrId
*cltrid*get results for specified ClTrId
**Returns:** List of answers from joker.com (one per line): ``` TimeStamp SvTrId Proc-ID request-type status ClTrId ``` **Where:** ``` TimeStamp: The time when request was made, YYYYMMDDHHMMSS SvTrID: Tracking-Id associated with this request. Proc-ID: Proc-Id associated with this request. request-type: The type of the request. request-object: The object name (host, domain or contact handle) status: ack, nack or ?, where ack means that request was completed successfully. ClTrId: User specified transaction ID, or "-" if nothing was provided by the user ``` **Example:** ``` https://dmapi.joker.com/request/result-list ``` ## result-retrieve **Accepts:**
*Proc-ID*One of these must be specified. If both are specified, SvTrId has precedence.
*SvTrID*
**Returns:**
Answer (processing result) associated with specified Tracking/Processing ID. If detailed information (content) is not available, only status will be returned
**Please note:** Since there is no requirement of uniqueness for user-specified transaction ids, it is not possible to use them to retrieve specific results. **Example:** `  https://dmapi.joker.com/request/result-retrieve?proc-id=8181810&auth-sid=` ## result-delete **Accepts:**
*Proc-ID* One of these must be specified. If both are specified, SvTrId has precedence
*SvTrID*
**Returns:** A descriptive message (confirmation) in case of success. This request will delete the content (not the status) of a reply to an asynchronous request. Deleted results will not be listed anymore when using *result-list*. ## query-profile **Returns:** Returns reseller profile data in format "key: value". May be used to query account balance Example: ``` https://dmapi.joker.com/request/query-profile ``` ## query-account-balance **Returns:** Returns actual account balance - available, pending and total. Example: ``` https://dmapi.joker.com/request/query-account-balance ``` You will get a response like this: ``` Status-Code: 1000 Status-Text: OK Columns: available,pending,total,currency Separator: TAB 975.00 25.00 1000.00 USD ``` The columns are:
available amount available for orders
pending amount reserved for pending operations (renewals, transfers etc)
total the sum of available and pending, i.e. the effective balance
currency currency of your account
## query-order-list ##### Parameters
show-allShow all orders including those which did not incur any charges.
afterShow only orders after specified date (inclusive). Date must be in ISO format: YYYY-MM-DD
beforeShow only orders before specified data (inclusive).

If neither "after" or "before" is specified, the default is a list of orders within last 30 days.

typeShow only orders of specified type. Types are:
createcreate domain
renewrenew domain
transfertransfer domain
restorerestore domain from RGP
delete\_domaindelete domain
corCOR (Change Of Registrant aka Domain Owner Change)
create-contactcreate contact
autonsmodify DNS zone
locklock domain
unlockunlock domain
privacy\_pp1Privacy Basic
privacy\_pp2Privacy Pro
credit-increaseaccount top-up
payment\_feepayment fee, amount deducted from account top-up
statusShow only orders with specified completion status. Possible values are: ok, error, pending
tldFilter by TLD. By default all TLDs are included.
fqdnFilter by FQDN (domain name). By default all domains (and other objects) are included.
fqdn-like Filter by FQDN with wilcards. Wildcards are "\*" (any number of any characters) and "?" (exactly one any character). *Example*: "\*.com" will list orders involving any .com domains.
order-id Only show order with specified id.
order-id-after Show orders with ids greater or equal than specified.
order-id-before Show orders with ids less or equal than than specified.
proc-idOnly show order with specified processing id.
proc-id-after Show orders with processing ids greater or equal than specified.
proc-id-before Show orders with processing ids less or equal than than specified.
limit Limit the number of returned rows. Used only when above described id ranges are specified. Ignored when parameters `after` or `before` are used. The default (and the maximum) is 1000.
ascIf true, sort ascending - recent orders come last. The default is false - recent orders come first.
separatorUse specified separator in table output. Default is "tab". Possible values:
tab\\t
comma,
semicolon;
pipe|
num-commaIf true, use comma (",") as decimal separator in numbers. Default is false, i.e. use dot (".")

Please note that "comma" separator cannot be used when "num-comma" is set to "true".

csvIf true, return result as a downloadable CSV file, without DMAPI headers.
per-pageNumber of rows returned per single request when using paging. Must be at least 10.
pagePage number when `per_page` is set. Pages are numbered starting with 1.
count-onlyOnly count number of rows that would be returned given specified parameters.
##### Returns A CSV-like list following the usual DMAPI header: ``` Status-Code: 1000 Status-Text: OK Row-Count: 6 Columns: order_id,proc_id,created_at,status,type,amount_brutto,amount_netto,currency,identifier 85671266 917263183 2024-03-17T07:58:14Z ok renew 10.19 10.19 USD example.org 85671265 917263182 2024-03-17T07:58:12Z ok renew 10.19 10.19 USD example.com 85671256 917263173 2024-03-17T07:57:06Z ok renew 29.40 29.40 USD example.net 85671255 917263172 2024-03-17T07:57:05Z ok create 2.00 2.00 USD example.zone 85671227 917263144 2024-03-17T07:54:07Z ok service_request 0 0 example.com 85671226 917263143 2024-03-17T07:54:07Z ok create-contact 0 0 CCOM-91167381 ``` ##### Output columns description
order\_idOrder ID
proc\_idProcessing ID
created\_atOrder creation time (UTC)
statusOrder status: ok, error, pending
typeOrder type
amount\_bruttoAmount charged including VAT. If VAT is not deducted then it has same value as amount\_netto.
amount\_nettoAmount charged excluding VAT.
currencyCurrency if amount is non-zero; empty if amount is zero.
identifierDomain or other object name that is affected by the order

Positive amounts are amounts ***paid***, i.e. ***deducted*** from your balance. Negative amounts are amounts ***received***, i.e. ***added*** to your balance. This usually happens if you get a refund. If `status` is not `ok`, then the amount is neither added or deducted - it is just a reference to the cost of the order.

If `show-all=false` (the default) then only orders processed within last 3 years are visible. If `show-all=true` then only orders from last 90 days are visible. Period covered by `after`/`before` parameters may not be longer than 90 days. The period is enforced *silently*, you will get no warning - just orders within 90 days, so if there are none you will see empty response. Empty (no rows) output means that there are no orders matching specified parameters are visible.

If you use ranged search by `order-id` or `proc-id` and do not limit search period using `after` and/or `before`, the maximum number of rows returned is 1000 (and is the default). It could be lowered by using `limit` parameter, but 1000 is the maximum anyway. However, if you do use `after` and/or `before` parameters, they will be applied `independently` - this means that if specified id range does not fit into specified time range, you will get no results.

Parameters `fqdn` and `fqdn-like` actually could be used not only for domain names but for other object identifies, like contact handles - it depends on operation.

**Please note that all returned data, including amounts charged, is for informational purposes only!** The sum of amounts may not exactly match the issued invoices due to possible adjustments related to discounts, manual processing, and other corrections that cannot be properly reflected in this list.