{"mock":"https://private-anon-2ae3e48e83-creeperhost.apiary-mock.com/","production":"https://api.creeper.host/","proxy":"https://private-anon-2ae3e48e83-creeperhost.apiary-proxy.com/"}
FORMAT: 1A
HOST: https://api.creeper.host/
# CreeperHost API
An API granting you access to the CreeperHost Panel information.
# MineTogether [/minetogether]
## Get Servers [PUT/minetogether/list]
+ Request
+ Headers
Content-Type: application/json
+ Body
{
"projectid": curseforge-project-id,
"hash": "unique-client-hash" //Optional, if supplied only shows servers this hash has active server-side invite (/invite command from mod)
}
+ Response 200 (application/json)
[{
"id": 1,
"name": "Server name",
"invite": false,
"project": 0,
"ip": "127.0.0.1",
"api_version": 2,
"expected_players": 0,
"location": {
"country": "United States",
"country_code": "US",
"city": "Buffalo",
"continent": "North America",
"subdivision": "New York"
},
"uptime": 120398,
"port": 25565
},{
"id": 2,
"name": "Another server",
"invite": false,
"project": 283861,
"ip": "play.aserverdomain.com",
"api_version": 1,
"expected_players": 52,
"location": {
"country": "Canada",
"country_code": "CA",
"city": "Montreal",
"continent": "North America",
"subdivision": "Quebec"
},
"uptime": 120348,
"port": 25565
}]
## Update Server [PUT/minetogether/update]
+ Request
+ Headers
Content-Type: application/json
+ Body
{
"name": "Server Name",
"port": 25565,
"ip": "ip or hostname to connect, will be validated.",
"projectid": curseforge-project-id
}
+ Response 200 (application/json)
{
"status": "success",
"message": "Server information updated",
"id": "1",
"endPoint": "grantham-api"
}
## Invite to Server [PUT/minetogether/invite]
+ Request
+ Headers
Content-Type: application/json
+ Body
{
"id": 1,
"hash": "unique-client-hash"
}
+ Response 200 (application/json)
{
"status": "success",
"message": "Server information updated",
"id": "1",
"endPoint": "grantham-api"
}
## Revoke Invite [PUT/minetogether/revokeinvite]
+ Request
+ Headers
Content-Type: application/json
+ Body
{
"id": 1,
"hash": "unique-client-hash"
}
+ Response 200 (application/json)
{
"status": "success",
"message": "Server information updated",
"id": "1",
"endPoint": "grantham-api"
}
# Server [/os]
## Get server RAM details [GET/os/getram]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status": "success",
"free": 8319,
"used": 69,
"endPoint": "grantham-api"
}
## Get server HDD details [GET/os/gethdd]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"free":47443608,
"used":4027364,
"endPoint":"grantham-api"
}
## Get server CPU details [GET/os/getcpu]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"free":99.8,
"used":0.2,
"cron":1,
"endPoint":"grantham-api"
}
## Get server SSD details [GET/os/getssd]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"free":47249692,
"used":4221280,
"endPoint":"grantham-api"
}
## Get server network details [GET/os/getnet]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"rx":1920,
"tx":91360,
"endPoint":"maidenhead-api"
}
## Get server processes [GET/os/getprocesses]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"processes":[
{
"user":"root",
"pid":"1",
"cpu":"0.1",
"ram":"0.0",
"cmd":"init -z "
},
...
],
"endPoint":"maidenhead-api"
}
## Check for server updates [GET/os/systemupdate]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"message":"Your operating system is currently running the latest supported software.",
"updates":null,
"endPoint":"grantham-api"
}
## Restart server [POST/os/restart]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"message":"Your server has been restarted."
"endPoint":"grantham-api"
}
## Create SSH key [POST/os/generatekeys]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"key":"RSA style key file",
"public":null,
"expires":1493388746,
"endPoint":"maidenhead-api"
}
## Invalidate SSH key [DELETE/os/invalidatekeys]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"message":"Your previous SSH key has been invalidated.",
"endPoint":"grantham-api"
}
# Services [/os/method]
Game server management.
## List available services [GET/os/availableservices]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"services":
{
"7dtd":
{
"id":"7dtd",
"displayName":"7 Days to Die",
"Icon":"https:\/\/cdn.creeper.host\/shared\/gameIcons\/7dtd.png",
"displayVersion":"Beta",
"displayDescription":"7 Days to Die is an open world, voxel-based sandbox game created by The Fun Pimps. It is a mash up of first-person shooter, survival horror, and role-playing games combining combat, crafting, looting, mining, exploration, and character growth.",
"category":"Games",
"purchaseUrl":null,
"requireWipe":true,
"requiresPackage":
{
"id":17,
"ram":2048,
"swid":7966
},
"installCount":"1586",
"updateTime":"2016-11-05 02:13:39"
},
...
},
"endPoint":"grantham-api"
}
+ Response 200 (application/json)
## List installed services [GET/os/listservices]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"services":{
"unturned":{
"id":"unturned",
"displayName":"Unturned",
"Icon":"https:\/\/cdn.creeper.host\/shared\/gameIcons\/unturned.jpg",
"displayVersion":"Alpha",
"displayDescription":"You become a survivor in the zombie infested ruins of society, and team up with your friends to remain among the living.",
"category":"Games",
"purchaseUrl":null,
"requireWipe":false,
"installCount":"2421",
"updateTime":"2017-02-01 18:20:33"
},
"mc":{
"id":"mc",
"displayName":"Minecraft",
"Icon":"https:\/\/cdn.creeper.host\/shared\/gameIcons\/minecraft.png",
"displayVersion":"Release",
"displayDescription":"Minecraft's activities in the game include exploration, gathering resources, crafting, and combat.",
"category":"Games",
"purchaseUrl":null,
"requireWipe":true,
"installCount":"10046",
"updateTime":"2016-10-03 13:22:24"}
},
"endPoint":"maidenhead-api"
}
## Install new service [POST/os/installservice]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"id": ""
}
+ Response 200 (application/json)
## Remove service [DELETE/{service}/uninstall]
+ Parameters
+ service: `unturned` (string) - The name of the type of service.
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"message":"This service has been removed.",
"endPoint":"grantham-api"
}
## Check service install status [GET/{service}/installing]
+ Parameters
+ service: `unturned` (string) - The name of the type of service.
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"installing":true,
"debug":"2\n",
"search":"tf2",
"endPoint":"maidenhead-api"
}
## Check service install progress [GET/{service}/progress]
+ Parameters
+ service: `unturned` (string) - The name of the type of service.
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"message":"Loading installation scripts...",
"progress":"0%",
"log":"latest",
"endPoint":"maidenhead-api"
}
## Get service versions [GET/{service}/versions]
+ Parameters
+ service: `unturned` (string) - The name of the type of service.
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"versions":
{
"7385":
{
"id":7385,
"displayName":"RocketMod",
"Icon":"https:\/\/panel.creeper.host\/versionIcon.php?id=7385",
"requiredPackage":17,
"displayVersion":"Latest",
"requireWipe":false,
"installCount":"3630",
"updateTime":"2017-04-24 08:43:22"
}
},
"total":1,
"endPoint":"grantham-api"
}
## Install service versions [POST/{service}/install]
+ Parameters
+ service: `unturned` (string) - The name of the type of service.
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"id": "versionID",
"instance": "mc-59026a225dc14" //Only if Minecraft or Unturned
}
+ Response 200 (application/json)
{
"status":"success",
"message":"Your requested software is currently installing...",
"result":"",
"id":"mc-59026a225dc14-590345e9d52f5",
"endPoint":"maidenhead-api"
}
## Start game service [POST/{service}/startserver]
+ Parameters
+ service: `unturned` (string) - The name of the type of service.
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"instance":"ut-5902260d6b88e" //Only if Minecraft/Unturned
}
+ Response 200 (application/json)
{
"status":"success",
"pid":0,
"message":"Server has been started.",
"code":1,"endPoint":"maidenhead-api"
}
## Stop game service [POST/{service}/stopserver]
+ Parameters
+ service: `unturned` (string) - The name of the type of service.
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"instance":"ut-5902260d6b88e" //Only if Minecraft/Unturned
}
+ Response 200 (application/json)
{
"status":"success",
"keptlogs":false,
"message":"Server has been stopped.",
"code":4,
"endPoint":"maidenhead-api"
}
## Restart game service [POST/{service}/restartserver]
+ Parameters
+ service: `unturned` (string) - The name of the type of service.
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"instance":"ut-5902260d6b88e" //Only if Minecraft/Unturned
}
+ Response 200 (application/json)
{
"status":"success",
"message":"This service has been started.",
"stop":
{
"status":"success",
"message":"This service has been stopped."
},
"endPoint":"maidenhead-api"
}
## Get server console [GET/{service}/readconsole]
+ Parameters
+ service: `unturned` (string) - The name of the type of service.
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"lines":50,
"format":true,
"debug":0,
"type":"normal",
"instance":"ut-5902260d6b88e" //Only if Minecraft/Unturned
}
+ Response 200 (application/json)
{
"status": "success",
"log": "<font color=\"white\"><span style=\"display: inline-block; width: 48px; color: gray;\">00:03:00<\/span> [<font color=\"white\">Info<\/font>] Loading level: 100%<\/span><\/font><br \/>\n",
"count": 50,
"raw":
[
[
"Apr 28 00:03:00 Loading level: 100%\r"
],
[
"00:03:00"
],
[
"Loading level: 100%\r"
]
],
"endPoint": "maidenhead-api"
}
## Send command to console [POST/{service}/writeconsole]
+ Parameters
+ service: `unturned` (string) - The name of the type of service.
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"command":"Comand to send",
"instance":"ut-5902260d6b88e" //Only if Minecraft/Unturned
}
+ Response 200 (application/json)
{
"status":"success",
"command":"Comand to send",
"message":null,
"endPoint":"maidenhead-api"
}
## Get player list [GET/{service}/players]
+ Parameters
+ service: `unturned` (string) - The name of the type of service.
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"instance":"mc-59026a225dc14" //Minecraft and Unturned only
}
+ Response 200 (application/json)
{
"status":"success",
"method":"logScrape",
"players":[],
"endPoint":"maidenhead-api"
}
# Instances [/service]
Actions that can be used with service instances. Instances are currently limited to Minecraft and Unturned.
## Create a new instance [POST/{service}/createinstance]
+ Parameters
+ service: `unturned` (string) - The name of the type of service.
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"nickname": "Instance name"
}
+ Response 200 (application/json)
{
"status": "success",
"instance": {
"id": "ut-59022ccd106fc",
"displayName": "Instance name",
"daemon": "RocketLauncher.exe",
"path": "/home/minecraft/unturned/ut-instances/ut-59022ccd106fc/",
"port": 27015,
"memory": "adaptive",
"argType": "memory",
},
"endPoint": "maidenhead-api"
}
## Destroy an instance [DELETE/{service}/destroyinstance]
+ Parameters
+ service: `unturned` (string) - The name of the type of service.
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"id": "ut-59022ccd106fc"
}
+ Response 200 (application/json)
{
"status": "success",
"message": "The instance has been destroyed.",
"debug": true,
"endPoint": "maidenhead-api"
}
## Get instance data [GET/{service}/datainstance]
+ Parameters
+ service: `unturned` (string) - The name of the type of service.
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"id": "ut-59022ccd106fc"
"instance": "ut-59022ccd106fc"
}
+ Response 200 (application/json)
{
"status":"success",
"instance":{
"id":"ut-5902260d6b88e",
"displayName":"Test",
"daemon":"RocketLauncher.exe",
"path":"\/home\/minecraft\/unturned\/ut-instances\/ut-5902260d6b88e\/",
"port":27015,
"memory":"adaptive",
"argType":"memory"
},
"match":"ut-5902260d6b88e",
"endPoint":"grantham-api"
}
## Export instance [POST/{service}/exportinstance]
+ Parameters
+ service: `mc` (string) - Request only support Minecraft
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"id": "ut-59022ccd106fc"
"instance": "ut-59022ccd106fc"
}
+ Response 200 (application/json)
{
"status":"success",
"message":"The instance named 'testinstance' has been exported.",
"url":"http:\/\/fdn.redstone.tech\/instances\/server.mc-59026a225dc14.1493490791.instance",
"endPoint":"maidenhead-api"
}
## Import instance [POST/{service}/importinstance]
+ Parameters
+ service: `mc` (string) - Request only support Minecraft
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"url": "http:\/\/fdn.redstone.tech\/instances\/server.mc-59026a225dc14.1493490791.instance"
"instance": "ut-5902260d6b88e"
}
+ Response 200 (application/json)
{
"status":"success",
"message":"The instance 'mc-5904dd8d16011' has been imported",
"instance":{
"id":"mc-5904dd8d16011",
"displayName":"mc-5904dd8d16011",
"jar":"Auto-Detect",
"path":"\/home\/minecraft\/mc-instances\/mc-5904dd8d16011\/",
"infoPort":25566,
"port":25565,
"memory":"adaptive",
"argType":"memory",
"lastUpdated":1493491085
},
"log":"Start\n\n\n\n\nArchive: import.instance\n\n\n\n\n",
"endPoint":"maidenhead-api"
}
# Tickets [/support]
Actions that can be taken with support tickets.
## List all tickets [GET/support/fetchtickets]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"limit": 15
}
+ Response 200 (application/json)
{
"status": "success",
"tickets": null,
"endPoint": "grantham-api"
}
## Create new ticket [POST/support/openticket]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"subject":"Ticket subject",
"content":"Ticket content",
"dept":"technicalsupport"
}
+ Response 200 (application/json)
{
"status":"success",
"includedLogs":false,
"ticketID":210244,
"otherID":414921,
"endPoint":"maidenhead-api"
}
## View ticket [GET/support/viewticket]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"id":"210244"
}
+ Response 200 (application/json)
{
"ticketid":"210244",
"tid":"414921",
"c":"qqBt2U1P",
"deptid":"2",
"deptname":"Technical Support",
"userid":"98757",
"contactid":"0",
"name":"First Last",
"email":"email@domain.tld",
"cc":"",
"date":"2017-04-27 20:32:15",
"subject":"Ticket subject",
"status":"success",
"priority":"Low",
"admin":"",
"lastreply":"2017-04-27 20:32:15",
"flag":"0",
"service":"S125568",
"replies":{
"reply":[
{
"userid":"98757",
"contactid":"0",
"name":"First Last",
"email":"email@domain.tld",
"date":"2017-04-27 20:32:15",
"message":"<p>Ticket message<\/p>",
"attachment":"",
"admin":"",
"plain":"Ticket message"
}
]
},
"ticketStatus":"Open",
"endPoint":"maidenhead-api"
}
## Reply to ticket [POST/support/replyticket]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"id":"210244",
"content": "Ticket reply content"
}
+ Response 200 (application/json)
{
"status":"success",
"endPoint":"maidenhead-api"
}
#Domains [/domains]
Domain management access.
## List domains [GET/billing/domainlist]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status": "success",
"message": "Domain zones listed",
"zones": [
{
"id": 180,
"records": 3,
"name": "domain.tld"
},
{
"id": 281,
"records": 3,
"name": "otherdomain.tld"
}
],
"endPoint": "maidenhead-api"
}
## List available TLDs [GET/billing/availabletld]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"message":"Available TLD's attached.",
"TLDs":{
"com":{"year":9.99},
"net":{"year":9.99},
"org":{"year":9.99},
"eu":{"year":9.99},
"co.uk":{"year":9.99}
},
"currency":{
"exchange_rate":"1.00000",
"prefix":"\u00a3",
"suffix":null,
"code":"GBP"
},
"endPoint":"grantham-api"
}
## Check domain availability [GET/billing/domainlookup]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"name": "test.com"
}
+ Response 200 (application/json)
{
"status":"success",
"whois":" ---<br \/>\nWhois Server Version 2.0<br \/>\n<br \/>\nDomain names in the .com and .net domains can now be registered<br \/>\nwith many different competing registrars. Go to http:\/\/www.internic.net<br \/>\nfor detailed information.<br \/>\n<br \/>\nTEST.COM<br \/>\nTEST.COM.AU<br \/>\nTEST.COM.CN<br \/>\nTEST.COM.CO<br \/>\nTEST.COM.MY<br \/>\nTEST.COM21.COM<br \/>\nTEST.COMESHOPGO.COM<br \/>\nTEST.COMMERZE.NET<br \/>\nTEST.COMMUNITYBOTS.COM<br \/>\nTEST.COMMVAULT-VIETNAM.COM<br \/>\nTEST.COMPACTCOMPRESSION.COM<br \/>\nTEST.COMPLYRN.COM<br \/>\nTEST.COMPUTERSCOOP.COM<br \/>\nTEST.COMPUTESRV.COM<br \/>\nTEST.COM<br \/>\n<br \/>\nTo single out one record, look it up with \"xxx\", where xxx is one of the<br \/>\nrecords displayed above. If the records are the same, look them up<br \/>\nwith \"=xxx\" to receive a full display for each record.<br \/>\n<br \/>\n>>> Last update of whois database: Thu, 27 Apr 2017 19:55:12 GMT <<<<br \/>\n<br \/>\nFor more information on Whois status codes, please visit https:\/\/icann.org\/epp<br \/>\n<br \/>\nNOTICE: The expiration date displayed in this record is the date the<br \/>\nregistrar's sponsorship of the domain name registration in the registry is<br \/>\ncurrently set to expire. This date does not necessarily reflect the expiration<br \/>\ndate of the domain name registrant's agreement with the sponsoring<br \/>\nregistrar. Users may consult the sponsoring registrar's Whois database to<br \/>\nview the registrar's reported date of expiration for this registration.<br \/>\n<br \/>\nTERMS OF USE: You are not authorized to access or query our Whois<br \/>\ndatabase through the use of electronic processes that are high-volume and<br \/>\nautomated except as reasonably necessary to register domain names or<br \/>\nmodify existing registrations; the Data in VeriSign Global Registry<br \/>\nServices' (\"VeriSign\") Whois database is provided by VeriSign for<br \/>\ninformation purposes only, and to assist persons in obtaining information<br \/>\nabout or related to a domain name registration record. VeriSign does not<br \/>\nguarantee its accuracy. By submitting a Whois query, you agree to abide<br \/>\nby the following terms of use: You agree that you may use this Data only<br \/>\nfor lawful purposes and that under no circumstances will you use this Data<br \/>\nto: (1) allow, enable, or otherwise support the transmission of mass<br \/>\nunsolicited, commercial advertising or solicitations via e-mail, telephone,<br \/>\nor facsimile; or (2) enable high volume, automated, electronic processes<br \/>\nthat apply to VeriSign (or its computer systems). The compilation,<br \/>\nrepackaging, dissemination or other use of this Data is expressly<br \/>\nprohibited without the prior written consent of VeriSign. You agree not to<br \/>\nuse electronic processes that are automated and high-volume to access or<br \/>\nquery the Whois database except as reasonably necessary to register<br \/>\ndomain names or modify existing registrations. VeriSign reserves the right<br \/>\nto restrict your access to the Whois database in its sole discretion to ensure<br \/>\noperational stability. VeriSign may restrict or terminate your access to the<br \/>\nWhois database for failure to abide by these terms of use. VeriSign<br \/>\nreserves the right to modify these terms at any time.<br \/>\n<br \/>\nThe Registry database contains ONLY .COM, .NET, .EDU domains and<br \/>\nRegistrars.<br \/>\n",
"available":false,
"endPoint":"grantham-api"
}
## Request domain records [GET/domain/view]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
+ Response 200 (application/json)
{
"status":"success",
"message": "Records contained within zone for 'domain.tld'.",
"zone": "domain.tld",
"records": [
{
"id": 1409,
"name": "domain.tld",
"type": "SOA",
"content": "cns1.creeper.host customerservices@creeper.host 1",
"ttl": 86400
},
...
],
"endPoint": "maidenhead-api"
}
## Add domain record [POST/domain/add]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"domain": "NotApplicable",
"id": "191",
"record": {
"name": "test",
"type": "A",
"content": "127.0.0.1",
"ttl": "3600"
}
}
+ Response 200 (application/json)
{
"status":"success",
"message": "The record 'test' for zone 'domain.tld' has been updated.",
"endPoint": "maidenhead-api"
}
## Edit domain record [PUT/domain/edit]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"domain": "NotApplicable",
"id": "190",
"record": {
"id": "1412",
"name": "www.domain.tld",
"type": "CNAME",
"content": "other.record",
"ttl": "120"
}
}
+ Response 200 (application/json)
{
"status":"success",
"message": "The record 'www.domain.tld' for zone 'domain.tld' has been updated.",
"endPoint": "maidenhead-api"
}
## Remove domain record [DELETE/domain/delete]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"domain": "NotApplicable",
"id": "191",
"record": {
"id": "1412"
}
}
+ Response 200 (application/json)
{
"status":"success",
"message": "Succesfully removed this record from the zone.",
"endPoint": "maidenhead-api"
}
## Purchase domain [POST/billing/domainorder]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"name": "domain.tld"
}
+ Response 200 (application/json)
{
"orderid":155076,
"productids":"",
"addonids":"",
"domainids":"1005",
"invoiceid":298762,
"status":"success",
"endPoint":"grantham-api"
}
## Create domain zone [POST/domain/create]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"domain": "domain.tld"
}
+ Response 200 (application/json)
{
"status":"success",
"message":"Zone created 'domain.tld'.",
"endPoint":"maidenhead-api"
}
# Billing [/billing]
Access to billing management.
## Get invoice list [GET/billing/fetchinvoices]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"status": "Paid/Unpaid",
"count": 3
}
+ Response 200 (application/json)
{
"totalresults":"1",
"startnumber":0,
"numreturned":1,
"invoices":{
"invoice":[
{
"id":"298762",
"userid":"98757",
"firstname":"First",
"lastname":"Last",
"companyname":"",
"invoicenum":"",
"date":"2017-04-27",
"duedate":"2017-05-02",
"datepaid":"0000-00-00 00:00:00",
"subtotal":"9.99",
"credit":"0.00",
"tax":"2.00",
"tax2":"0.00",
"total":"11.99",
"taxrate":"20.00",
"taxrate2":"0.00",
"status":"Unpaid",
"paymentmethod":"wpo",
"notes":"",
"currencycode":"GBP",
"currencyprefix":"\u00a3",
"currencysuffix":"GBP"
},
]
},
"status":"success",
"endPoint":"maidenhead-api"
}
## Get billing details [GET/billing/details]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"uuid":"d7aed30d-e1e1-4680-80d3-c505cbd1a222",
"firstname":"First",
"lastname":"Last",
"fullname":"First Last",
"companyname":"",
"email":"email@domain.tld",
"address1":"1 Street Name",
"address2":"",
"city":"City",
"fullstate":"Town",
"state":"County/State",
"postcode":"Postcode",
"country":"GB",
"phonenumber":"07777777777",
"statecode":"County/State",
"countryname":"United Kingdom",
"phonecc":44,
"phonenumberformatted":"+44.7777777777",
"currency":
{
"exchange_rate":"1.00000",
"prefix":"\u00a3",
"suffix":null,
"code":"GBP"
},
"cclastfour":"",
"credit":"0.00",
"disableautocc":false,
"allowSingleSignOn":1,
"customfields1":"",
"customfields2":"",
"customfields3":"",
"customfields4":"",
"customfields5":"",
"endPoint":"grantham-api"
}
## Update billing details [POST/billing/updatedetails]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"companyname":"",
"address1":"1 Street Name",
"address2":"",
"city":"City",
"fullstate":"Town",
"state":"County/State",
"postcode":"Postcode",
"country":"GB",
"phonenumber":"07777777777"
}
+ Response 200 (application/json)
{
"status":"success",
"endPoint":"grantham-api"
}
## Update password [PUT/domain/create]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"password": "password"
}
+ Response 200 (application/json)
{
"clientid":"98757",
"status":"success",
"message":"Your password has been successfully updated.",
"endPoint":"grantham-api"
}
## Update payment information [PUT/billing/updatecc]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"cardnum": "1111222233334444",
"cardfirst": "First",
"cardlast": "Last",
"cardexp":"0120",
"cvv":"123"
}
+ Response 200 (application/json)
{
"status":"success",
"message":"Your card details have been updated.",
"endPoint":"maidenhead-api"
}
## Get available server upgrades [GET/billing/availableupgrades]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"products":{
"32":
{
"id":"32",
"name":"Magma Cube",
"description":"<br \/>\r\n Access to 2 processor cores<br \/>\r\n 768MB of dedicated RAM<br \/>\r\n 8GB of RAID 10 SSD-only storage<br \/>\r\n cloud virtual dedicated server<br \/>\r\n data redundancy via RAID<br \/>\r\n DDoS Protection<br \/>\r\n ",
"Monthly":6.99,
"proRata":0,
"Current":false,
"Currency":
{
"exchange_rate":"1.00000",
"prefix":"\u00a3",
"suffix":null,
"code":"GBP"
}
},
...
},
"endPoint":"maidenhead-api"
}
## Upgrade/Downgrade server [POST/billing/upgrade]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"pacakge": "49",
"promocode": ""
}
+ Response 200 (application/json)
{
"status":"success",
"endPoint":"grantham-api"
}
## Get cancelled status [GET/billing/iscanceled]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"message":"No cancellation request has been received.",
"cancelled":false,
"endPoint":"grantham-api"
}
## Cancel server [POST/billing/cancel]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"reason": "Bye bye server",
"contact": "true" //null if you don't wish to be contacted
}
+ Response 200 (application/json)
{
"serviceid":"125568",
"userid":"98757",
"status":"success",
"contactResult":[],
"endPoint":"maidenhead-api"
}
## Get playments list [GET/billing/playmentslist]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"count": 100
}
+ Response 200 (application/json)
{
"status":"success",
"message":"A list of received playments is included.",
"payments":[],
"endPoint":"maidenhead-api"
}
## Get current credit [GET/billing/credit]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"count": 100
}
+ Response 200 (application/json)
{
"status":"success",
"credit":0,
"message":"You have 0 available credit on your account.",
"endPoint":"maidenhead-api"
}
## Spinup minigame server [POST/billing/spinupminigame]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"ram":1,
"game":"custom",
"time":"1",
"custom":"http://www.creeperrepo.net/mg-templates/paintball18.zip"
}
+ Response 200 (application/json)
{
"status":"success",
"debug":"0.00",
"ip":"123.123.123.5",
"port":1234,
"rootpass":"password",
"readytime":42.235509872437,
"profiling":{
"Provision":27.414258956909,
"SSH":2.0059740543365,
"wGet":3.7758769989014,
"Start":7.0390920639038
},
"node":"mdn172",
"cost":0,
"uuid":"5903950ae9287",
"endPoint":"grantham-api"
}
## Extend minigame server [POST/billing/extendminigame]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"uuid":"5903950ae9287"
}
+ Response 200 (application/json)
{
"status":"success",
"cost":0,
"endtime":1493414229,
"uuid":"5903950ae9287",
"endPoint":"grantham-api"
}
## Spindown minigame server [POST/billing/spindownminigame]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"uuid":"5903950ae9287"
}
+ Response 200 (application/json)
{
"status":"success",
"message":"Credit has been applied to your account.",
"amount":0,
"endPoint":"maidenhead-api"
}
## Get minigame time remaining [GET/billing/timerMinigame]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"uuid":"597ba4d453112"
}
+ Response 200 (application/json)
{
"status":"success",
"uuid":"597ba4d453112",
"remaining":3512,
"endPoint":"grantham-api"
}
# File manager [/filemanager]
Access to manage server files.
## List directory [GET/filemanager/listdirectory]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"path": "//unturned/ut-instances/ut-5902260d6b88e//BattlEye",
}
+ Response 200 (application/json)
{
"status":"success",
"tree":
[
{
"file":true,
"name":"BEClient.so",
"path":"\/unturned\/ut-instances\/ut-5902260d6b88e\/BattlEye",
"mime":"application\/octet-stream"
},
{
"file":true,
"name":"BEServer.so",
"path":"\/unturned\/ut-instances\/ut-5902260d6b88e\/BattlEye",
"mime":"application\/octet-stream"
},
{
"file":true,
"name":"EULA.txt",
"path":"\/unturned\/ut-instances\/ut-5902260d6b88e\/BattlEye",
"mime":"text\/plain"
}
],
"endPoint":"maidenhead-api"
}
## Read file [GET/filemanager/readfile]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"filename": "/unturned/ut-instances/ut-5902260d6b88e/BattlEye/EULA.txt",
}
+ Response 200 (application/json)
{
"status":"success",
"bytesRead":2758,
"data":"****** End-User License Agreement ******\r\n\r\n\r\nThis License Agreement (\"Agreement\") is made between you (the \"Licensee\") and BattlEye Innovations e.K. (the \"Licensor\"). The terms of this Agreement apply to all current and future versions and updates of BattlEye anti-cheat software (\"BattlEye\").\r\n\r\n\r\nBy installing, enabling or using BattlEye, Licensee agrees with all the terms of this Agreement. Licensor reserves all rights not specifically granted and transferred to Licensee.\r\n\r\n\r\nLicensee understands, acknowledges and agrees with the following:\r\n\r\n- Licensor grants Licensee a non-exclusive and non-transferable license to use BattlEye for non-commercial purposes only. Licensee therefore does not own BattlEye, Licensor remains the owner of BattlEye.\r\n\r\n- Licensor provides BattlEye on an \"as is\" basis without warranty of any kind. Licensor neither guarantees the correct, error-free functioning of BattlEye nor is Licensor responsible for any damage caused by the use of BattlEye.\r\n\r\n- Licensee may not decompile, disassemble, reverse-engineer, modify or redistribute BattlEye in any way.\r\n\r\n- BattlEye will automatically, without notice to Licensee, download and install updates from time to time.\r\n\r\n- BattlEye may scan Licensee's entire random access memory (RAM), and any game-related and system-related files and folders on Licensee's system using cheat-program-identifying algorithms, report results of such algorithms to other connected computers and\/or to Licensor and store such information for the sole purpose of preventing and detecting the use of cheat programs. BattlEye only scans and\/or reports data which absolutely needs to be scanned and\/or reported to meet this purpose.\r\n\r\n- BattlEye may further report and store Licensee's Internet Protocol address, game account name and identifier, in-game nickname, and system-related and hardware-related information including, but not limited to, device identifiers and hardware serial numbers.\r\n\r\n- Licensor values Licensee's privacy and does its utmost to protect it at all times. BattlEye does not report any personally identifiable information or personal data except for any information\/data specifically mentioned herein.\r\n\r\n- Licensor stores all information collected by BattlEye on servers located in Europe and\/or the US. Licensor may share the information with its partners and\/or affiliates.\r\n\r\n- Licensee acknowledges that the invasive nature of BattlEye is necessary to meet its purpose and goal of preventing and detecting cheat programs.\r\n\r\n- Licensor is allowed to terminate the license at any time for any reason and without notice to Licensee.\r\n\r\n\r\nThis License Agreement constitutes the entire agreement between Licensor and Licensee and supersedes any prior statements.",
"endPoint":"maidenhead-api"
}
## Write file [PUT/filemanager/writefile]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"filename": "/unturned/ut-instances/ut-5902260d6b88e/BattlEye/EULA.txt",
"contents": "New file contents"
}
+ Response 200 (application/json)
{
"status":"success",
"bytesWritten":17,
"file":"\/home\/minecraft\/\/unturned\/ut-instances\/ut-5902260d6b88e\/BattlEye\/EULA.txt",
"endPoint":"maidenhead-api"
}
## Delete file [DELETE/filemanager/destroy]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"path": "/unturned/ut-instances/ut-5902260d6b88e/BattlEye/EULA.txt"
}
+ Response 200 (application/json)
{
"status":"success",
"message":"File or Directory has been marked for deletion",
"debug":"",
"endPoint":"grantham-api"
}
## Rename/Move file [PUT/filemanager/renamefile]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"filename": "/unturned/ut-instances/ut-5902260d6b88e/BattlEye/EULA.txt"
"newname": "/unturned/ut-instances/ut-5902260d6b88e/BattlEye/EULA2.txt"
}
+ Response 200 (application/json)
{
"status":"success",
"output":"",
"endPoint":"maidenhead-api"
}
## Extract zip file [POST/filemanager/unzipfile]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"path": "//"
"filename": "my.zip"
}
+ Response 200 (application/json)
{
"status":"success",
"flatten":false,
"time":null,
"cmd":"\/home\/minecraft\nArchive: \/home\/minecraft\/\/\/\/my.zip\n inflating: my.log \n",
"endPoint":"grantham-api"
}
## Extract gz file [POST/filemanager/untarballfile]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"path": "//"
"filename": "my.gz"
}
+ Response 200 (application/json)
{
"status":"success",
"time":null,
"endPoint":"grantham-api"
}
## Download file [GET/filemanager/proxyfile]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"filename": "//myfile.zip"
}
+ Response 200 (application/zip)
# Access control [/accesscontrol]
## Get list of keys [GET/accesscontrol/list]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"keys":[
{
"key":"s590335d9e2762@server.playat.ch",
"secret":"e926f117e88a6db15e08c89250f5d217bb215f07b1c0829cf9dec3see1a981ff4ed87bddde101f8a19f82269893091369262f1710e85fb7d465b84254c3f3ecb",
"permissions":[]
},
{
"key":"s590335e72d655@server.playat.ch",
"secret":"2df119928668de02144346de1406e58b45b7b91fd8e9479b5d5c47cd2c864907e383b79a26f0bc008f755829f8eb11af59addff4b8b404e73488008ee2033567",
"permissions":[]
}
],
"endPoint":"grantham-api"
}
## Create new API key [POST/accesscontrol/createcredentials]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"message":"Successfully created new API credentials.",
"key":"s590335e72d655@server.playat.ch",
"secret":"2df119928668de02144346de1406e58b45b7b91fd8e9479b5d5ce7cd2c864907e383b79a26f0bc008f755829f8eb11af59addff4b8b404e73488008ee2033547",
"endPoint":"grantham-api"
}
## Add permission [POST/accesscontrol/grantpermission]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
"data":
{
"daemon":"os", //Available for each endpoint
"key":"s590335d9e2762@server.playat.ch",
"command":
[
"commandToGrant"
]
}
+ Response 200 (application/json)
{
"status":"success",
"message":"Access control has been updated.",
"endPoint":"grantham-api"
}
## Revoke permission [POST/accesscontrol/revokepermission]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
"data":
{
"daemon":"os", //Available for each endpoint
"key":"s590335d9e2762@server.playat.ch",
"command":
[
"commandToRevoke"
]
}
+ Response 200 (application/json)
{
"status":"success",
"0":"message",
"1":"Access control has been updated.",
"endPoint":"maidenhead-api"
}
# Backups [/backup]
## Get backup list [GET/backup/list]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"all":[
{
"type":"Local",
"date":1493384082
}
],
"local":[
{
"type":"Local",
"date":1493384082
}
],
"remote":[],
"endPoint":"maidenhead-api"
}
## Create backup [POST/backup/create]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"0":"message",
"1":"Access control has been updated.",
"endPoint":"maidenhead-api"
}
## View backup [GET/backupexplorer/view]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"backup": 1493384082,
"path":"///"
}
+ Response 200 (application/json)
{
"status":"success",
"tree":[
{
"file":false,
"name":"mc-instances",
"path":"\/",
"mime":"Application\/Directory"
},
{
"file":false,
"name":"Server_9b3e05d3e14fc13a1dbe7e51cc6df0fb",
"path":"\/",
"mime":"Application\/Directory"
},
...
],
"endPoint":"maidenhead-api"
}
## Delete backup [DELETE/backup/destroy]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"backup": 1493384082
}
+ Response 200 (application/json)
{
"status":"success",
"message":"The requested backup has been removed",
"endPoint":"maidenhead-api"
}
## Restore from backup [POST/backupexplorer/restore]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"backup": 1493384082,
"filePath":"///fileToRestore.ext" //Don't include to restore full backup
}
+ Response 200 (application/json)
{
"status":"success",
"message":"Restored '\/\/fileToRestore.ext'.",
"endPoint":"maidenhead-api"
}
# Scheduler [/scheduler]
## List scheduled tasks [GET/scheduler/list]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"schedule":[],
"endPoint":"maidenhead-api"
}
## Add/Edit scheduled task [PUT/scheduler/edit]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"game":"mc",
"command":"restart",
"when":"0 */3 * * *",
"data":{
"instance":"mc-59026a225dc14" // Minecraft or Unturned only
},
"id":"task-5903405e4a86b" // Only if editing
}
+ Response 200 (application/json)
{
"status":"status",
"message":"Task has been scheduled",
"id":"task-590340ba4d18c",
"endPoint":"grantham-api"
}
## Delete scheduled task [DELETE/scheduler/remove]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{
"id":"task-5903405e4a86b"
}
+ Response 200 (application/json)
{
"status":"success",
"message":"Task has been removed",
"endPoint":"maidenhead-api"
}
# API [/api]
## List notification targets [GET/api/listnotitargets]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"targets":[
{
"id":1,
"target":"slackwebhookurl",
"type":"slack"
},
{
"id":2,
"target":"mattermostwebhookurl",
"type":"mattermost"
},
{
"id":3,
"target":"discordwebhookurl",
"type":"discord"
},
{
"id":4,
"target":"+448000119885",
"type":"sms"
},
...
],
"endPoint":"staging-api"
}
## Add notification target [PUT/api/addnotitarget]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{"type":"slack","target":"webhookurl"}
+ Response 200 (application/json)
{
"status":"success",
"message":"Added notification target."
}
## Remove notification target [DELETE/api/removenotitarget]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Body
{"id":1}
+ Response 200 (application/json)
{
"status":"success",
"message":"Removed notification target."
}
## Get API logs [GET/api/logging]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"lines":[
{
"timestamp":"1493385214",
"service":"backup",
"command":"create",
"internalId":null,
"status":"Success",
"ip":"127.0.0.1",
"key":"u59021a9b10d26@aries.creeperhost.net",
"notes":"Your backup has been completed."
},
...
],
"endPoint":"grantham-api"
}
## Get alerts [GET/api/alerts]
+ Request
+ Headers
Content-Type: application/json
key: apikey
secret: apisecret
+ Response 200 (application/json)
{
"status":"success",
"alerts":[],
"endPoint":"grantham-api"
}
## Check API health [GET/api/health]
+ Request
+ Headers
Content-Type: application/json
+ Response 200 (application/json)
{
"status": "success",
"message": "API end point is currently healthy.",
"endPoint": "maidenhead-api"
}
## Get API endpoints [GET/api/endpoints]
+ Request
+ Headers
Content-Type: application/json
+ Response 200 (application/json)
{
"Grantham": "185.57.191.130",
"Maidenhead": "78.129.201.23",
"Seattle": "198.23.149.146",
"Buffalo": "198.23.140.130",
"Atlanta": "69.31.134.154",
"Staging": "87.117.245.3",
"San Jose": "8.17.252.26",
"Sydney": "43.245.167.43",
"endPoint": "maidenhead-api"
}