DNS API
From CMU ITSC Network
Authentication
Authenticate with CMU OAuth to get access token then use as "bearer token" in "Authorization" Header on every request.
REST API
Method
List domain
Request
GET /domains HTTP/1.1
Host: dns-api.cmu.ac.th
Authorization: Bearer hKm1BTuXj4U7rGChx1eWKSb8bc6Wx1uz
Response
[
{
"domain": "cnoc.cmu.ac.th"
},
{
"domain": "eng.cmu.ac.th"
},
{
"domain": "reg.cmu.ac.th"
}
]
List records in domain
Request
GET /domains/:domain HTTP/1.1
Host: dns-api.cmu.ac.th
Authorization: Bearer hKm1BTuXj4U7rGChx1eWKSb8bc6Wx1uz
Parameter
:domain = domain name e.g. cnoc.cmu.ac.th
Response
[
{
"id": 110,
"domain_id": 1,
"name": "cnoc.cmu.ac.th",
"type": "A",
"content": "202.28.249.45",
"ttl": 3600,
"prio": 0,
"change_date": null,
"disabled": 0,
"ordername": null,
"auth": 1
},
{
"id": 1707,
"domain_id": 1,
"name": "xxx.cnoc.cmu.ac.th",
"type": "A",
"content": "5.6.7.8",
"ttl": 3600,
"prio": 0,
"change_date": null,
"disabled": 0,
"ordername": null,
"auth": 1
},
{
"id": 1708,
"domain_id": 1,
"name": "xxx1.cnoc.cmu.ac.th",
"type": "A",
"content": "9.0.43.2",
"ttl": 3600,
"prio": 0,
"change_date": null,
"disabled": 0,
"ordername": null,
"auth": 1
},
{
"id": 1709,
"domain_id": 1,
"name": "yyy.cnoc.cmu.ac.th",
"type": "A",
"content": "2.8.6.3",
"ttl": 3600,
"prio": 0,
"change_date": null,
"disabled": 0,
"ordername": null,
"auth": 1
}
]
Add record
Request
POST /domains/:domain HTTP/1.1
Host: dns-api.cmu.ac.th
Content-Type: application/json
Authorization: Bearer hKm1BTuXj4U7rGChx1eWKSb8bc6Wx1uz
Parameter
:domain = domain name e.g. cnoc.cmu.ac.th
Body Schema
{
"title" : "dns record",
"description" : "properties required to creat a dns record",
"type" : "object",
"properties" : {
"name" : {
"type" : "string",
"description" : "domain name record",
"minLength" : 1,
"pattern" : "cmu.ac.th$"
},
"type" : {
"type" : "string",
"description" : "domain name record type",
"enum" : ["A","AAAA","MX","CNAME","TXT"]
},
"content" : {
"type" : "string",
"description" : "domain name record content",
"minLength" : 1
},
"ttl" : {
"type" : "integer",
"description" : "domain name record time to live",
"minimum" : 3600
},
"prio" : {
"type" : "integer",
"description" : "domain name record piority",
"minimum" : 0
},
"autoPTR" : {
"type" : "boolean",
"description" : "auto create reverse lookup record for A record within CMU ip subnet"
}
},
"additionalProperties": false,
"required": ["name", "type", "content", "ttl", "prio"]
}
Body Example
{
"name" : "www1.cnoc.cmu.ac.th",
"type" : "A",
"content" : "1.11.111.1",
"ttl" : 3600,
"prio" : 0
}
Response
{
"msg": "record added",
"status": "OK",
"record": {
"name": "www1.cnoc.cmu.ac.th",
"type": "A",
"content": "1.11.111.1",
"ttl": 3600,
"prio": 0,
"domain_id": 1
}
}
Delete record
Request
DELETE /domains/cnoc.cmu.ac.th/:id HTTP/1.1
Host: dns-api.cmu.ac.th
Authorization: Bearer 39JxUzTv9EUMBpnsCcdBQmeNzhQK1SY9
Parameter
:id = record id
Response
{
"msg": "delete 1 record with PTR."
}