DNS API

From CMU ITSC Network
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Authentication

Authenticate with CMU OAuth to get access token then use as "bearer token" in "Authorization" Header on every request.

REST API

https://dns-api.cmu.ac.th

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."
}