3 Zones API: How to modify a zone

This is a series of articles dedicated to demonstrating how to get acquainted with Openprovider DNS Zones API methods. If you want to go the beginning of this guide, please navigate to the article "Zones API: How to create a zone".

To get more information about our API in general, please use our documentation portal as your reference.

This is a third article that is going to help better understand the logic behind DNS zone modification.

There are two possible scenarios to consider when modifying a DNS zone:

  1. rewrite the whole object with new data
  2. add/delete or modify a select record

While both approaches do the job, the first one suits better for "smaller" zones while the second one is more appropriate for large zone files that can be a hassle to manage in a text editor.

Entering Geo Fence iconUse endpoint path below. Base URL is determined by both the target environment and API version.
PUT {base_url}/dns/zones/{name}

REQUEST VALUES

Name Type Description
domain array Required. Extension and name
master_ip varchar Only required for slave zones
records array of objects RequiredArray of objects
is_spamexperts_enabled boolean Required for master zones

 

REQUEST EXAMPLE

curl -X PUT \
https://api.openprovider.eu/v1beta/dns/zones/domain.com \
-H 'Authorization: Bearer 2831a37fb8*******90b5aac822' \
-H 'Content-Type: application/json' \
-d '{

"domain": [
{
"extension": "com",
"name": "domain"
}
],
"id": 6574389,
"is_spamexperts_enabled": true,
"master_ip": "127.0.0.1",
"name": "domain.com"
}'

 

RESPONSE EXAMPLE

{
"code": 0,
"data": {
"success": true
},
"desc": ""
}

REQUEST VALUES

Filed Type Records
type string A, AAAA, CNAME, MX, SPF, SRV, TXT, NS, TLSA, SSHFP, CAA
name string The part of the hostname before the domain name; for example www or ftp
value varchar The value of the record; depending on the type, certain restrictions apply; see the FAQ for these restrictions
priority timestamp The priority of the record; required for MX records; ignored for all other record types
TTL timestamp Time To Live of the record; this is a value in seconds
Accepted values: 900, 3600, 10800, 21600, 43200, 86400. Inserting other values will result in 86400 being saved.

Adding a single record (A)

In order to add or update a single record it is necessary to utilize a corresponding modifier.
For instance:

REQUEST EXAMPLE

curl -X PUT \
https://api.openprovider.eu/v1beta/dns/zones/domain.com \
-H 'Authorization: Bearer 2831a37fb8*******90b5aac822' \
-H 'Content-Type: application/json' \
-d '{
"id": 6574389,
"name": "domain.com",
"records": {
"add": [
{
"ttl": 900,
"type": "A",
"value": "5.255.94.114"
}
]
}
}'

Adding a single record (TXT)

REQUEST EXAMPLE

curl -X PUT https://api.openprovider.eu/v1beta/dns/zones/domain.com \
-H 'Authorization: Bearer 2831a37fb8*******90b5aac822' \
-H 'Content-Type: application/json' \
-d '{
"id": "6574389",
"name": "domain.com
",
"records": {
"add": [
{
"ttl": 900,
"type": "TXT",
"value":"\"testOP\""\
}
]
}
}'

* The backslashes (\) only need to be added as the escape character in case you need to wrap your TXT record in double quotes. Otherwise, you can simply use "value":"testOP".

Updating a single record

REQUEST EXAMPLE

curl -X PUT \
https://api.openprovider.eu/v1beta/dns/zones/domain.com \
-H 'Authorization: Bearer 2831a37fb8*******90b5aac822' \
-H 'Content-Type: application/json' \
-d '{
"id": 6574389,
"name": "domain.com",
"records": {
"update":
[
{
"original_record": {
"prio": 10,
"ttl": 3600,
"type": "MX",
"value": "test-mail.domain.com",
},
"record": {
"prio": 10,
"ttl": 3600,
"type": "MX",
"value": "mail.domain.com",
}
}
]
}
}'

Removing a single record (A)

REQUEST EXAMPLE

curl -X PUT https://api.openprovider.eu/v1beta/dns/zones/domain.com \
-H 'Authorization: Bearer 2831a37fb8*******90b5aac822' \
-H 'Content-Type: application/json' \
-d '{
"id": "6574389",
"name": "domain.com
",
"records": {
"remove": [
{
"ttl": 900,
"type": "A",
"value":"5.255.94.114"
}
]
}
}'

RESPONSE EXAMPLE

{
"code": 0,
"desc": "",
"data": {
"success": true
}
}

Removing a single record (TXT)

REQUEST EXAMPLE

curl -X PUT https://api.openprovider.eu/v1beta/dns/zones/domain.com \
-H 'Authorization: Bearer 2831a37fb8*******90b5aac822' \
-H 'Content-Type: application/json' \
-d '{
"id": "6574389",
"name": "domain.com
",
"records": {
"remove": [
{
"ttl": 900,
"type": "TXT",
"value":"\"testOP\""\
}
]
}
}'

* Note:  When there are double quotes in a TXT record, please use backslashes (\) as the escape character.

Adding a single sub-domain record (A)

REQUEST EXAMPLE

curl -X PUT \
https://api.openprovider.eu/v1beta/dns/zones/domain.com \
-H 'Authorization: Bearer 2831a37fb8*******90b5aac822' \
-H 'Content-Type: application/json' \
-d '{
"id": 6574389,
"name": "domain.com",
"records": {
"add": [
{
"name": "test"
"ttl": 900,
"type": "A",
"value": "5.255.94.114"
}
]
}
}'

RESPONSE EXAMPLE

{
"code": 0,
"desc": "",
"data": {
"success": true
}
}

Removing a single sub-domain record (A)

REQUEST EXAMPLE

curl -X PUT https://api.openprovider.eu/v1beta/dns/zones/domain.com \
-H 'Authorization: Bearer 2831a37fb8*******90b5aac822' \
-H 'Content-Type: application/json' \
-d '{
"id": "6574389",
"name": "domain.com
",
"records": {
"remove": [
{
"name": "test"
"ttl": 900,
"type": "A",
"value":"5.255.94.114"
}
]
}
}'

RESPONSE EXAMPLE

{
"code": 0,
"desc": "",
"data": {
"success": true
}
}


In the following article, we are going to end the lifecycle of the DNS zone object by deleting it.

Was this article helpful?
Additional questions? Submit a request