Om gebruik te maken van onze API heeft u een client-id en client-secret nodig, deze kunt u middels een ticket bij ons aanvragen. Hieronder een uitleg omtrent het gebruik van de API en enkele praktijkvoorbeelden. De API-documentatie kunt u opvragen door een e-mail te sturen naar support@true.nl.

Bij het aanvragen van de API-client, geeft het development-team hiervoor de bijpassende ‘roles’ mee aan de client. Wilt u later de client gebruiken voor andere doeleinden, vraag dan via een nieuwe ticket bijpassende ‘roles’ aan voor uw client.

Aanvragen client access token

Alle API calls vereisen een Authorization header met access token, deze is op de volgende wijze te verkrijgen. (vervang <client-id> en <client-secret> met de aan u verstrekte gegevens)

curl https://accounts.true.nl/api/oauth/access-token -H 'Accept: application/json' -d 'client_id=<client-id>' -d 'client_secret=<client-secret>' -d 'grant_type=client_credentials' -d 'scope=dns'

Bij het aanvragen van tokens worden ook een of meerdere scopes aangevraagd, zorg dat de juiste scope(s) worden aangevraagd, afhankelijk van welke API(‘s) u wilt aanroepen.

API gebruik

Alle API calls vereisen de volgende headers (vervang <access-token> en <customer-id> met de juiste gegevens)

Accept: application/json
Authorization: Bearer <access-token>
X-True-Customer-Id: <customer-id>

Content-Type: application/json (bij POST calls)

Onze frontend gebruikt ook de API, dus daar kan je natuurlijk sterk van afkijken. Onderstaand enkele voorbeelden:

DNS

Alle DNS-zones ophalen

curl https://dns.true.nl/api/zones -H 'Accept: application/json' -H 'Authorization: Bearer <access-token>' -H 'X-True-Customer-Id: <customer-id>'

Opvragen van een zone

GET /api/zones/<zone-id>/records HTTP/1.1
Host: dns.true.nl
Accept: application/json
Authorization: Bearer <access-token>
X-True-Customer-Id: <customer-id>

Aanmaken van een record onder een bestaande zone

POST /api/zones/<zone-id>/records HTTP/1.1
Host: dns.true.nl
Accept: application/json
Authorization: Bearer <access-token>
X-True-Customer-Id: <customer-id>
Content-Type: application/json

{
  "name": "test.true-test-zone.com",
  "type": "A",
  "priority": "",
  "content": "8.8.8.8",
  "ttl": 86400
}

Updaten van een record

POST /api/zones/<zone-id>/records/<record-id> HTTP/1.1
Host: dns.true.nl
Accept: application/json
Authorization: Bearer <access-token>
X-True-Customer-Id: <customer-id>
Content-Type: application/json

{
  "name": "test.true-test-zone.com",
  "type": "A",
  "priority": "",
  "content": "8.8.8.8",
  "ttl": 86400
}

Aanmaken van een zone op basis van een bestaande zone

POST /api/zones/clone HTTP/1.1
Host: dns.true.nl
Accept: application/json
Authorization: Bearer <access-token>
X-True-Customer-Id: <customer-id>
Content-Type: application/json

{
  "name": "true-cloned-zone.com",
  "from_zone": "<zone-id>"
}

Aanmaken van een SLAVE zone

POST /api/zones HTTP/1.1
Host: dns.true.nl
Accept: application/json
Authorization: Bearer <access-token>
X-True-Customer-Id: <customer-id>
Content-Type: application/json

{
  "name": "true-slave-zone.com",
  "type": "SLAVE",
  "masters": [
    "192.168.1.100"
  ]
}

Domains

Aanvragen domeinnaam

POST /api/domains HTTP/1.1
Host: domains.true.nl
Accept: application/json
Authorization: Bearer <access-token>
X-True-Customer-Id: <customer-id>
Content-Type: application/json

{
  "domain": "iwantthis.nl",
  "registrant_id": "uuid-here",
  "administrative_contact_id": "uuid-here",
  "technical_contact_id": "uuid-here",
  "nameserver_group_id": "uuid-here",
  "auth_code": "authcodehere",
  "billing_contact_id": "optionial-uuid-here"
}

SSL

Aanvragen Let’s Encrypt

POST /api/certificates/letsencrypt HTTP/1.1
Host: ssl.true.nl
Accept: application/json
Authorization: Bearer <access-token>
X-True-Customer-Id: <customer-id>
Content-Type: application/json

{
  "common_name": "iwantthis.nl",
  "product_id": "8150653d-6bae-45fc-97b9-1173f81a0e9b",
  "validation_method": "dns",
  "hostnames": [
      "iwantthis.nl".
      "*.iwantthis.nl"
  ]
}