loading

Fast DNS Zone Management API v2

Manage FastDNS zones and DNS records.

Learn more:


Overview

Welcome to Akamai’s Fast DNS service. Fast DNS integrates easily with your existing DNS infrastructure to provide a secure, high performance, highly available and scalable solution for DNS hosting. As part of this service, Akamai runs name servers in multiple networks and in many geographic locations that are capable of resolving queries for your zones. Akamai’s IP Anycast technology is also capable of providing an unprecedented level of reliability and performance for name resolution.

The Fast DNS service supports three types of Zones:

  • Primary: Akamai serves the DNS records of your zones without the need for master DNS servers maintained by you.

  • Secondary: Akamai serves the DNS records of your zones obtained by performing secured zone transfers from your master name server.

  • Alias: Akamai automatically mirrors the configuration of another Fast DNS zone, serving the same DNS records on both the alias zone and the target zone. For example, if you have registered a misspelled domain such as exmaple.com and you want it to have the same DNS records as example.com.

Unlike the v1 API, this API allows you to manage the configuration of all of your Fast DNS zones as well as the record sets of your Primary zones.

Getting started

To configure this API for the first time:

  • Review Get Started with APIs for details on how to set up client tokens to access any Akamai API. These tokens appear as custom hostnames that look like this: https://akzz-XXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXX.luna.akamaiapis.net.

  • To enable this API, choose the API service named Fast DNS, and set the access level to READ-WRITE.

Using Change Lists

When using this API to manage a zone, each change (either a record set or a zone setting) is submitted to the network immediately once the API call is complete. If you want to group a series of changes together into a single unit, you can instead use the “change list” service. These functions allow you to create and manage collections of changes to a zone. Once you assemble a change list, you can submit it to the network as a single unit.

When you create a new change list, it is attached to the currently active version of the zone. If a new version of the zone is activated (for instance, because another user made an immediate change), any change lists attached to previous versions become “stale” and may not be edited or submitted. Change list operations return 409 CONFLICT if you attempt to modify a stale change list.

Note that users can only manage their own change lists. Change lists can not be shared with, edited by, or submitted by other users.

Using Pagination

Certain operations in this API are “paginated”, meaning that any single API call may not return all of the available data. These operations all share a consistent interface. You may use the following query parameters to control the amount of data in the response:

Parameter Function
page The page number to return; the first page is page 1.
pageSize The number of elements to return per page. Defaults to 25.
showAll Use with caution. When true, paging is disabled and the operation returns the entire data set. This may result in slower response times than usual.

Resources

API summary

Download the RAML descriptors for this API.

Operation Method Endpoint
Zones  
List zones GET /config-dns/v2/zones{?contractIds,search,sortBy,types,page,pageSize,showAll}
Create a zone POST /config-dns/v2/zones{?contractId,gid}
Get zones’ DNSSEC status POST /config-dns/v2/zones/dns-sec-status
Get secondary zones’ transfer status POST /config-dns/v2/zones/zone-transfer-status
Get zone’s settings GET /config-dns/v2/zones/{zone}
Update zone’s settings PUT /config-dns/v2/zones/{zone}
Get zone’s aliases GET /config-dns/v2/zones/{zone}/aliases
Get zone’s contract GET /config-dns/v2/zones/{zone}/contract{?gid}
Record Sets  
Get zone’s record sets GET /config-dns/v2/zones/{zone}/recordsets{?sortBy,types,search,page,pageSize,showAll}
Create multiple record sets POST /config-dns/v2/zones/{zone}/recordsets
Replace record sets PUT /config-dns/v2/zones/{zone}/recordsets
Get record set names for zone GET /config-dns/v2/zones/{zone}/names
Get record set types for name and zone GET /config-dns/v2/zones/{zone}/names/{name}/types
Get a record set GET /config-dns/v2/zones/{zone}/names/{name}/types/{type}
Create a record set POST /config-dns/v2/zones/{zone}/names/{name}/types/{type}
Replace a record set PUT /config-dns/v2/zones/{zone}/names/{name}/types/{type}
Delete a record set DELETE /config-dns/v2/zones/{zone}/names/{name}/types/{type}
Get Master Zone File GET /config-dns/v2/zones/{zone}/zone-file
Post Master Zone File POST /config-dns/v2/zones/{zone}/zone-file
TSIG Keys  
List TSIG keys GET /config-dns/v2/keys{?contractIds,search,sortBy,gid}
List zones using TSIG key POST /config-dns/v2/keys/used-by
Update TSIG key for multiple zones POST /config-dns/v2/keys/bulk-update
Get zone’s TSIG key GET /config-dns/v2/zones/{zone}/key
Update zone’s TSIG key PUT /config-dns/v2/zones/{zone}/key
Delete zone’s TSIG key DELETE /config-dns/v2/zones/{zone}/key
List users of zone’s TSIG key GET /config-dns/v2/zones/{zone}/key/used-by
Bulk Zone Operations  
Submit bulk-create request POST /config-dns/v2/zones/create-requests{?contractId,gid}
Check bulk-create status GET /config-dns/v2/zones/create-requests/{requestId}
Get bulk-create result GET /config-dns/v2/zones/create-requests/{requestId}/result
Submit bulk-delete request POST /config-dns/v2/zones/delete-requests{?force}
Check bulk-delete status GET /config-dns/v2/zones/delete-requests/{requestId}
Get bulk-delete result GET /config-dns/v2/zones/delete-requests/{requestId}/result
Change Lists  
List user’s change lists GET /config-dns/v2/changelists
Create a change list POST /config-dns/v2/changelists{?zone,overwrite}
Search for change lists POST /config-dns/v2/changelists/search
Get change list GET /config-dns/v2/changelists/{zone}
Delete change list DELETE /config-dns/v2/changelists/{zone}
Get change list settings GET /config-dns/v2/changelists/{zone}/settings
Update change list settings PUT /config-dns/v2/changelists/{zone}/settings
Get record sets for change list GET /config-dns/v2/changelists/{zone}/recordsets{?sortBy,types,search,page,pageSize,showAll}
Upload Master Zone File to change list POST /config-dns/v2/changelists/{zone}/recordsets
Modify record set for change list PATCH /config-dns/v2/changelists/{zone}/recordsets
Get record set names for change list GET /config-dns/v2/changelists/{zone}/names
Get record set types for name and change list GET /config-dns/v2/changelists/{zone}/names/{name}/types
Get a record set for change list GET /config-dns/v2/changelists/{zone}/names/{name}/types/{type}
Show changes GET /config-dns/v2/changelists/{zone}/diff
Submit change list POST /config-dns/v2/changelists/{zone}/submit
Zone Versions  
List zone’s versions GET /config-dns/v2/zones/{zone}/versions{?page,pageSize,showAll}
Get zone version GET /config-dns/v2/zones/{zone}/versions/{uuid}
Get version’s record sets GET /config-dns/v2/zones/{zone}/versions/{uuid}/recordsets{?sortBy,types,search,page,pageSize,showAll}
Reactivate version POST /config-dns/v2/zones/{zone}/versions/{uuid}/recordsets/activate{?comment}
Get version’s Master Zone File GET /config-dns/v2/zones/{zone}/versions/{uuid}/zone-file
Show differences GET /config-dns/v2/zones/{zone}/versions/diff{?from,to}
Data Services  
List contracts GET /config-dns/v2/data/contracts{?gid}
List groups GET /config-dns/v2/data/groups{?gid}
List edge hostnames GET /config-dns/v2/data/edgehostnames
List authoritative nameservers GET /config-dns/v2/data/authorities{?contractIds}
List record types GET /config-dns/v2/data/recordset-types{?zone}
List DNSSEC algorithms GET /config-dns/v2/data/dns-sec-algorithms
List TSIG key algorithms GET /config-dns/v2/data/tsig-algorithms

List zones

Get a list of all Zones that the current user has access to manage. Includes the version identifier, propagation status, and SOA serial number for the most recently activated version. This operation is paginated.

GET /config-dns/v2/zones{?contractIds,search,sortBy,types,page,pageSize,showAll}

Sample: /config-dns/v2/zones?contractIds=1-1ACYUM&search=org&sortBy=-contractId%2Czone&types=primary%2Calias&page=1&pageSize=25&showAll=false

Parameter Type Sample Description
Optional query parameters
contractIds String 1-1ACYUM Limits the list to those zones belonging to the specified contracts.
page Integer 1 Which page of results to return. The first page is page 1.
pageSize Integer 25 The number of results per page to return.
search String org Limits the list to those zones whose name matches the specified search string.
showAll Boolean false Disables paging and shows the entire list all at once. Using this parameter may significantly increase the time required to respond to the request.
sortBy String -contractId,zone Sorts the list on the specified fields. You can specify multiple fields as a comma-separated list. If a field name is preceded by a dash (-), the sorting order for that field is reversed (descending). Valid sort keys include zone, contractId, comment, endCustomerId, lastModifiedDate, and lastActivatedDate.
types String primary,alias If included, limits the list to one or more FastDNS zone types (PRIMARY, SECONDARY, or ALIAS). Multiple types may be specified as a comma-separated list.

Status 200 application/json

Download schema: zone-report.json

Response Body:

{
    "metadata": {
        "page": 1,
        "pageSize": 3,
        "showAll": false,
        "totalElements": 17,
        "contractIds": [
            "1-2ABCDE"
        ]
    },
    "zones": [
        {
            "contractId": "1-2ABCDE",
            "zone": "example.com",
            "type": "primary",
            "aliasCount": 1,
            "signAndServe": false,
            "versionId": "ae02357c-693d-4ac4-b33d-8352d9b7c786",
            "lastModifiedDate": "2017-01-03T12:00:00Z",
            "lastModifiedBy": "user28",
            "lastActivationDate": "2017-01-03T12:00:00Z",
            "activationState": "PENDING"
        },
        {
            "contractId": "1-2ABCDE",
            "zone": "exmaple.com",
            "type": "alias",
            "target": "example.com",
            "lastModifiedDate": "2017-05-21T19:45:00Z",
            "lastModifiedBy": "user31",
            "activationState": "ACTIVE"
        },
        {
            "contractId": "1-2ABCDE",
            "zone": "other.com",
            "type": "secondary",
            "aliasCount": 1,
            "signAndServe": false,
            "comment": "Initial add",
            "versionId": "7949b2db-ac43-4773-a3ec-dc93202142fd",
            "lastModifiedDate": "2016-12-11T03:21:00Z",
            "lastModifiedBy": "user31",
            "lastActivationDate": "2017-01-03T12:00:00Z",
            "activationState": "ERROR",
            "masters": [
                "1.2.3.4",
                "1.2.3.5"
            ],
            "tsigKey": {
                "name": "other.com.akamai.com.",
                "algorithm": "hmac-sha512",
                "secret": "Ok1qR5IW1ajVka5cHPEJQIXfLyx5V3PSkFBROAzOn21JumDq6nIpoj6H8rfj5Uo+Ok55ZWQ0Wgrf302fDscHLw=="
            }
        }
    ]
}

Create a zone

Creates a new Zone. Carefully review the documentation for which fields are relevant to the type of zone you are creating.

POST /config-dns/v2/zones{?contractId,gid}

Sample: /config-dns/v2/zones?contractId=1-2ABCDE&gid=100

Content-Type: application/json

Request Body:

{
    "zone": "river.com",
    "type": "secondary",
    "comment": "Adding bodies of water",
    "masters": [
        "1.2.3.4",
        "1.2.3.5"
    ]
}
Parameter Type Sample Description
Required query parameters
contractId String 1-2ABCDE The contract to which the new zone should be tied.
Optional query parameters
gid Integer 100 The currently selected group ID. This is a feature in the Pulsar UI where a user is able to specify a particular group to manage.

Status 201 application/json

Response Body:

{
    "contractId": "1-2ABCDE",
    "zone": "other.com",
    "type": "secondary",
    "aliasCount": 1,
    "signAndServe": false,
    "comment": "Initial add",
    "versionId": "7949b2db-ac43-4773-a3ec-dc93202142fd",
    "lastModifiedDate": "2016-12-11T03:21:00Z",
    "lastModifiedBy": "user31",
    "lastActivationDate": "2017-01-03T12:00:00Z",
    "activationState": "ERROR",
    "masters": [
        "1.2.3.4",
        "1.2.3.5"
    ],
    "tsigKey": {
        "name": "other.com.akamai.com.",
        "algorithm": "hmac-sha512",
        "secret": "Ok1qR5IW1ajVka5cHPEJQIXfLyx5V3PSkFBROAzOn21JumDq6nIpoj6H8rfj5Uo+Ok55ZWQ0Wgrf302fDscHLw=="
    }
}

Get zones’ DNSSEC status

Returns the current DNSSEC status for one or more Zones.

POST /config-dns/v2/zones/dns-sec-status

Content-Type: application/json

Object type: ZoneDeleteRequest

Download schema: zone-name-list.json

Request Body:

{
    "zones": [
        "river.com",
        "stream.com"
    ]
}

Status 200 application/json

Object type: DnsSecStatus

Download schema: dns-sec-status.json

Response Body:

{
    "dnsSecStatuses": [
        {
            "zone": "river.com",
            "alerts": [],
            "currentRecords": {
                "dnsKeyRecord": "river.com. 7200 IN DNSKEY 257 3 8 (xxxxxxxxxxxxxxxxxxxxxxxx)",
                "dsRecord": "river.com. 86400 IN DS 47539 8 2 (xxxxxxxxxxx)",
                "expectedTtl": 3600,
                "lastModifiedDate": "2018-06-02T17:42:35.456"
            }
        },
        {
            "zone": "stream.com",
            "alerts": [
                "OLD_DNSKEY"
            ],
            "currentRecords": {
                "dnsKeyRecord": "stream.com. 7200 IN DNSKEY 257 3 8 (xxxxxxxxxxxxxxxxxxxxxxxx)",
                "dsRecord": "stream.com. 86400 IN DS 47539 8 2 (xxxxxxxxxxx)",
                "expectedTtl": 3600,
                "lastModifiedDate": "2018-01-15T09:31:36.195"
            },
            "newRecords": {
                "dnsKeyRecord": "stream.com. 7200 IN DNSKEY 257 3 8 (xxxxxxxxxxxxxxxxxxxxxxxx)",
                "dsRecord": "stream.com. 86400 IN DS 47539 8 2 (xxxxxxxxxxx)",
                "expectedTtl": 3600,
                "lastModifiedDate": "2018-04-15T08:00:00.418"
            }
        }
    ]
}

Get secondary zones’ transfer status

Returns the results of the most recent zone transfer attempts for one or more Zones.

When you configure a SECONDARY zone, several Akamai nameservers (known as Zone Transfer Agents) perform zone transfer requests to fetch the record data from the zone’s configured master nameservers. The data returned by this operation describes the results of those zone transfers.

POST /config-dns/v2/zones/zone-transfer-status

Content-Type: application/json

Object type: ZoneDeleteRequest

Download schema: zone-name-list.json

Request Body:

{
    "zones": [
        "river.com",
        "stream.com"
    ]
}

Status 200 application/json

Response Body:

{
    "zones": [
        {
            "zone": "example.com",
            "metadata": {
                "lastSuccessSerial": 2017042400,
                "lastSuccessTimestamp": "2019-01-30T22:14:34Z",
                "lastFailureTimestamp": "2019-01-14T16:27:02Z"
            },
            "masters": [
                {
                    "masterIP": "184.168.128.1",
                    "zoneTransferAgents": [
                        {
                            "agentIP": "23.73.133.141",
                            "lastFailureTimestamp": "2018-01-23T20:47:55Z",
                            "actions": [
                                {
                                    "actionType": "SOA",
                                    "lastSuccessTimestamp": "2019-01-23T20:47:55Z",
                                    "lastSuccessSerial": 2019017037
                                },
                                {
                                    "actionType": "XFR",
                                    "lastFailureTimestamp": "2019-01-23T20:47:55Z",
                                    "messages": [
                                        {
                                            "problemId": "TIMED_OUT",
                                            "timestamp": "2018-11-23T20:47:55Z",
                                            "tokens": []
                                        },
                                        {
                                            "problemId": "TOO_MANY_RECORDS",
                                            "timestamp": "2019-01-23T20:47:55Z",
                                            "tokens": [
                                                "2019017001 108163 100000"
                                            ]
                                        }
                                    ]
                                }
                            ]
                        },
                        {
                            "agentIP": "23.73.133.237",
                            "lastFailureTimestamp": "2019-01-17T20:47:55Z",
                            "actions": [
                                {
                                    "actionType": "SOA",
                                    "lastSuccessTimestamp": "2019-01-23T20:47:55Z",
                                    "lastSuccessSerial": 2019017044
                                },
                                {
                                    "actionType": "XFR",
                                    "lastFailureTimestamp": "2019-01-17T20:47:55Z",
                                    "messages": [
                                        {
                                            "problemId": "TOO_MANY_RECORDS",
                                            "timestamp": "2019-01-17T20:47:55Z",
                                            "tokens": [
                                                "2019015704 107931 100000"
                                            ]
                                        },
                                        {
                                            "problemId": "TIMED_OUT",
                                            "timestamp": "2018-12-25T20:47:55Z",
                                            "tokens": []
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                },
                {
                    "masterIP": "184.168.128.32",
                    "zoneTransferAgents": [
                        {
                            "agentIP": "23.73.133.141",
                            "lastFailureTimestamp": "2019-01-23T20:47:55Z",
                            "actions": [
                                {
                                    "actionType": "SOA",
                                    "lastSuccessTimestamp": "2019-01-21T20:47:55Z",
                                    "lastSuccessSerial": 2019017044
                                },
                                {
                                    "actionType": "XFR",
                                    "lastFailureTimestamp": "2019-01-23T20:47:55Z",
                                    "messages": [
                                        {
                                            "problemId": "TOO_MANY_RECORDS",
                                            "timestamp": "2019-01-23T20:47:55Z",
                                            "tokens": [
                                                "2019017044 108173 100000"
                                            ]
                                        },
                                        {
                                            "problemId": "TIMED_OUT",
                                            "timestamp": "2019-01-21T20:47:55Z",
                                            "tokens": []
                                        },
                                        {
                                            "problemId": "EOF",
                                            "timestamp": "2019-01-17T20:47:55Z",
                                            "tokens": []
                                        }
                                    ]
                                }
                            ]
                        },
                        {
                            "agentIP": "23.73.133.237",
                            "lastFailureTimestamp": "2019-01-17T20:47:55Z",
                            "actions": [
                                {
                                    "actionType": "SOA",
                                    "lastSuccessTimestamp": "2019-01-23T20:47:55Z",
                                    "lastSuccessSerial": 2019017044
                                },
                                {
                                    "actionType": "XFR",
                                    "lastFailureTimestamp": "2019-01-17T20:47:55Z",
                                    "messages": [
                                        {
                                            "problemId": "TOO_MANY_RECORDS",
                                            "timestamp": "2019-01-17T20:47:55Z",
                                            "tokens": [
                                                "2019015768 107946 100000"
                                            ]
                                        },
                                        {
                                            "problemId": "TIMED_OUT",
                                            "timestamp": "2019-01-15T20:47:55Z",
                                            "tokens": []
                                        },
                                        {
                                            "problemId": "EOF",
                                            "timestamp": "2018-12-10T20:47:55Z",
                                            "tokens": []
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

Get zone’s settings

Retrieves the metadata for this Zone. Does not include record sets.

GET /config-dns/v2/zones/{zone}

Sample: /config-dns/v2/zones/example.com

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 200 application/json

Response Body:

{
    "contractId": "1-2ABCDE",
    "zone": "example.com",
    "type": "primary",
    "aliasCount": 1,
    "signAndServe": true,
    "signAndServeAlgorithm": "RSA_SHA256",
    "versionId": "ae02357c-693d-4ac4-b33d-8352d9b7c786",
    "lastModifiedDate": "2017-01-03T12:00:00Z",
    "lastModifiedBy": "user28",
    "lastActivationDate": "2017-01-03T12:00:00Z",
    "activationState": "PENDING"
}

Update zone’s settings

Modifies a Zone. The “type” of a zone may not be changed with this operation.

PUT /config-dns/v2/zones/{zone}

Sample: /config-dns/v2/zones/example.com

Content-Type: application/json

Request Body:

{
    "zone": "river.com",
    "type": "secondary",
    "comment": "Adding bodies of water",
    "masters": [
        "1.2.3.4",
        "1.2.3.5"
    ]
}
Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 200 application/json

Response Body:

{
    "zone": "river.com",
    "type": "secondary",
    "comment": "Adding bodies of water",
    "masters": [
        "1.2.3.4",
        "1.2.3.5"
    ]
}

Get zone’s aliases

Show all zones that alias to this zone.

GET /config-dns/v2/zones/{zone}/aliases

Sample: /config-dns/v2/zones/example.com/aliases

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 200 application/json

Response Body:

{
    "aliases": [
        "exmaple.com",
        "river.com",
        "brook.com",
        "ocean.com"
    ]
}

Get zone’s contract

Show data about the Contract to which this Zone belongs.

GET /config-dns/v2/zones/{zone}/contract{?gid}

Sample: /config-dns/v2/zones/example.com/contract?gid=100

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.
Optional query parameters
gid Integer 100 The currently selected group ID. This is a feature in the Pulsar UI where a user is able to specify a particular group to manage.

Status 200 application/json

Object type: Contract

Download schema: contract-get.json

Response Body:

{
    "contractId": "1-1ABCDE",
    "contractName": "Acme Inc",
    "contractTypeName": "DIRECT_CUSTOMER",
    "zoneCount": 92,
    "maximumZones": 5000,
    "features": [
        "PRIMARY_ZONES",
        "ALIAS_ZONES",
        "ZONE_APEX_MAPPING",
        "FORCE_DELETE"
    ],
    "permissions": [
        "READ",
        "WRITE",
        "ADD",
        "DELETE"
    ]
}

Get zone’s record sets

Lists all Record Sets for this Zone. Can only be used on PRIMARY and SECONDARY zones. This operation is paginated.

GET /config-dns/v2/zones/{zone}/recordsets{?sortBy,types,search,page,pageSize,showAll}

Sample: /config-dns/v2/zones/example.com/recordsets?sortBy=name%2Ctype&types=A%2CAAAA&search=xamp&page=1&pageSize=25&showAll=false

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.
Optional query parameters
page Integer 1 Which page of results to return. The first page is page 1.
pageSize Integer 25 The number of results per page to return.
search String xamp Displays only record sets whose NAME or RDATA field matches this value. The entire record set (i.e. all records with the same name and type) is shown if any record in the set has a NAME or RDATA that contains a case-insensitive match for the supplied value.
showAll Boolean false Disables paging and shows the entire list all at once. Using this parameter may significantly increase the time required to respond to the request.
sortBy String name,type Sorts the list on the specified fields. You can specify multiple fields as a comma-separated list. If a field name is preceded by a dash (-), the sorting order for that field is reversed (descending). Allowed fields include name and type.
types String A,AAAA Only display record sets that match one of the provided types. Illegal or disallowed record types are silently ignored.

Status 200 application/json

Response Body:

{
    "metadata": {
        "zone": "example.com",
        "page": 1,
        "pageSize": 25,
        "totalElements": 2,
        "types": [
            "A"
        ]
    },
    "recordsets": [
        {
            "name": "www.example.com",
            "type": "A",
            "ttl": 300,
            "rdata": [
                "10.0.0.2",
                "10.0.0.3"
            ]
        },
        {
            "name": "mail.example.com",
            "type": "A",
            "ttl": 300,
            "rdata": [
                "192.168.0.1",
                "192.168.0.2"
            ]
        }
    ]
}

Create multiple record sets

Creates multiple new Record Sets on this Zone. If any record set fails to create (for example, because a record set with that name and type already exists), the entire operation fails.

POST /config-dns/v2/zones/{zone}/recordsets

Sample: /config-dns/v2/zones/example.com/recordsets

Content-Type: application/json

Request Body:

{
    "recordsets": [
        {
            "name": "new.example.com",
            "type": "CNAME",
            "ttl": 300,
            "rdata": [
                "www.example.com"
            ]
        }
    ]
}
Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 204

Replace record sets

Replaces the entire list of Record Sets that currently exists with the list provided.

PUT /config-dns/v2/zones/{zone}/recordsets

Sample: /config-dns/v2/zones/example.com/recordsets

Content-Type: application/json

Request Body:

{
    "recordsets": [
        {
            "name": "new.example.com",
            "type": "CNAME",
            "ttl": 300,
            "rdata": [
                "www.example.com"
            ]
        }
    ]
}
Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 204

Get record set names for zone

Retrieves a list of Record Set names for a zone.

GET /config-dns/v2/zones/{zone}/names

Sample: /config-dns/v2/zones/example.com/names

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 200 application/json

Response Body:

{
    "names": [
        "example.com",
        "www.example.com",
        "ftp.example.com",
        "foo.example.com",
        "bar.example.com"
    ]
}

Get record set types for name and zone

Lists all existing Record Set types for this name. (The list of allowed types can be discovered here.) If the name does not exist within the zone, an empty list is returned.

GET /config-dns/v2/zones/{zone}/names/{name}/types

Sample: /config-dns/v2/zones/example.com/names/www.example.com/types

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.
name String www.example.com A domain name, including the parent zone.

Status 200 application/json

Response Body:

{
    "types": [
        "A",
        "AAAA",
        "MX"
    ]
}

Get a record set

Retrieves a single record set for the zone, record name, and record type specified in the URL.

GET /config-dns/v2/zones/{zone}/names/{name}/types/{type}

Sample: /config-dns/v2/zones/example.com/names/www.example.com/types/A

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.
name String www.example.com A domain name, including the parent zone.
type String A The record set type.

Status 200 application/json

Response Body:

{
    "name": "www.example.com",
    "type": "A",
    "ttl": 300,
    "rdata": [
        "10.0.0.2",
        "10.0.0.3"
    ]
}

Create a record set

Creates a new Record Set with the specified name and type.

POST /config-dns/v2/zones/{zone}/names/{name}/types/{type}

Sample: /config-dns/v2/zones/example.com/names/www.example.com/types/A

Content-Type: application/json

Object type: RecordSet

Download schema: recordset.json

Request Body:

{
    "name": "www.example.com",
    "type": "A",
    "ttl": 300,
    "rdata": [
        "10.0.0.2",
        "10.0.0.3"
    ]
}
Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.
name String www.example.com A domain name, including the parent zone.
type String A The record set type.

Status 201 application/json

Object type: RecordSet

Download schema: recordset.json

Response Body:

{
    "name": "www.example.com",
    "type": "A",
    "ttl": 300,
    "rdata": [
        "10.0.0.2",
        "10.0.0.3"
    ]
}

Replace a record set

Replaces an existing Record Set with the request body. The name and type must match the existing record.

PUT /config-dns/v2/zones/{zone}/names/{name}/types/{type}

Sample: /config-dns/v2/zones/example.com/names/www.example.com/types/A

Content-Type: application/json

Object type: RecordSet

Download schema: recordset.json

Request Body:

{
    "name": "www.example.com",
    "type": "A",
    "ttl": 300,
    "rdata": [
        "10.0.0.2",
        "10.0.0.3"
    ]
}
Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.
name String www.example.com A domain name, including the parent zone.
type String A The record set type.

Status 200 application/json

Object type: RecordSet

Download schema: recordset.json

Response Body:

{
    "name": "www.example.com",
    "type": "A",
    "ttl": 300,
    "rdata": [
        "10.0.0.2",
        "10.0.0.3"
    ]
}

Delete a record set

Removes an existing record set.

DELETE /config-dns/v2/zones/{zone}/names/{name}/types/{type}

Sample: /config-dns/v2/zones/example.com/names/www.example.com/types/A

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.
name String www.example.com A domain name, including the parent zone.
type String A The record set type.

Status 204

Get Master Zone File

Download this zone’s record set data in Master Zone File format; see RFC 1035 (section 5) and RFC 1034 (section 3.6.1).

AKAMAICDN and AKAMAITLC records can not be represented in this format, so they are displayed as comment lines.

GET /config-dns/v2/zones/{zone}/zone-file

Sample: /config-dns/v2/zones/example.com/zone-file

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 200 text/dns

Response Body:

example.com.        10000    IN SOA ns1.akamaidns.com. webmaster.example.com. 1 28800 14400 2419200 86400
example.com.        10000    IN NS  ns1.akamaidns.com.
example.com.        10000    IN NS  ns2.akamaidns.com.
example.com.            300 IN  A   10.0.0.1
example.com.            300 IN  A   10.0.0.2
www.example.com.        300 IN  A   10.0.0.1
www.example.com.        300 IN  A   10.0.0.2

Post Master Zone File

Upload new record set data for this zone in Master Zone File format; see RFC 1035 (section 5) and RFC 1034 (section 3.6.1). Any existing record sets are replaced.

Note: zone files may only contain US-ASCII characters (0–127). Where allowed, high-order ASCII characters (128+) can generally be encoded with a backslash plus a three-digit decimal number representing the byte value (i.e. “\233” instead of “é”).

AKAMAICDN and AKAMAITLC records can not be represented in this format. Uploading a zone file does not affect these records.

POST /config-dns/v2/zones/{zone}/zone-file

Sample: /config-dns/v2/zones/example.com/zone-file

Content-Type: text/dns

Request Body:

example.com.        10000    IN SOA ns1.akamaidns.com. webmaster.example.com. 1 28800 14400 2419200 86400
example.com.        10000    IN NS  ns1.akamaidns.com.
example.com.        10000    IN NS  ns2.akamaidns.com.
example.com.            300 IN  A   10.0.0.1
example.com.            300 IN  A   10.0.0.2
www.example.com.        300 IN  A   10.0.0.1
www.example.com.        300 IN  A   10.0.0.2
Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 204

List TSIG keys

Get a list of TSIG keys used by zones that this user is allowed to manage.

GET /config-dns/v2/keys{?contractIds,search,sortBy,gid}

Sample: /config-dns/v2/keys?contractIds=1-1ABCD%2C5-2EFGH&search=md5&sortBy=name%2C-algorithm&gid=100

Parameter Type Sample Description
Optional query parameters
contractIds String 1-1ABCD,5-2EFGH Limits the list to those keys belonging to the specified contracts. A comma-separated list of multiple contract IDs may be specified.
gid Integer 100 The currently selected group ID. This is a feature in the Pulsar UI where a user is able to specify a particular group to manage.
search String md5 Limits the list to those keys whose key name or algorithm name contains the specified string.
sortBy String name,-algorithm Sorts the list on the specified fields. You can specify multiple fields as a comma-separated list. If a field name is preceded by a dash (-), the sorting order for that field is reversed (descending).

Status 200 application/json

Download schema: tsigkey-report.json

Response Body:

{
    "metadata": {
        "totalElements": 2
    },
    "keys": [
        {
            "name": "a.test.key.",
            "algorithm": "hmac-sha256",
            "secret": "DjY16JfIi3JnSDosQWE7Xkx60MbCLo1K7hUCqng8ccg=",
            "zonesCount": 3
        },
        {
            "name": "another.test.key.",
            "algorithm": "hmac-sha512",
            "secret": "Ok1qR5IW1ajVka5cHPEJQIXfLyx5V3PSkFBROAzOn21JumDq6nIpoj6H8rfj5Uo+Ok55ZWQ0Wgrf302fDscHLw==",
            "zonesCount": 7
        }
    ]
}

List zones using TSIG key

Returns a list of zone names that use the given TSIG key and for which the current user has READ access. If the list of zones returned is empty, it is possible that the given key is in use by other zones but the current user does not have permission to view those zones.

POST /config-dns/v2/keys/used-by

Content-Type: application/json

Object type: TsigKey

Download schema: tsigkey-post.json

Request Body:

{
    "name": "example.com.akamai.com.",
    "algorithm": "hmac-sha512",
    "secret": "Ok1qR5IW1ajVka5cHPEJQIXfLyx5V3PSkFBROAzOn21JumDq6nIpoj6H8rfj5Uo+Ok55ZWQ0Wgrf302fDscHLw=="
}

Status 200 application/json

Object type: ZoneDeleteRequest

Download schema: zone-name-list.json

Response Body:

{
    "zones": [
        "river.com",
        "stream.com"
    ]
}

Update TSIG key for multiple zones

Updates the key data for multiple zones at once. Uses the TsigKeyBulkUpdate DTO.

POST /config-dns/v2/keys/bulk-update

Content-Type: application/json

Object type: TsigKeyBulkUpdate

Download schema: tsigkey-bulk-post.json

Request Body:

{
    "zones": [
        "brook.com",
        "river.com"
    ],
    "key": {
        "name": "brook.com.akamai.com.",
        "algorithm": "hmac-sha512",
        "secret": "Ok1qR5IW1ajVka5cHPEJQIXfLyx5V3PSkFBROAzOn21JumDq6nIpoj6H8rfj5Uo+Ok55ZWQ0Wgrf302fDscHLw=="
    }
}

Status 204

Get zone’s TSIG key

Retrieves the TSIG Key data for this zone. Includes a count of zones that use this key. Returns 404 NOT FOUND if the zone does not have a TSIG key.

GET /config-dns/v2/zones/{zone}/key

Sample: /config-dns/v2/zones/example.com/key

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 200 application/json

Object type: TsigKey

Download schema: tsigkey-get.json

Response Body:

{
    "name": "example.com.akamai.com.",
    "algorithm": "hmac-sha512",
    "secret": "Ok1qR5IW1ajVka5cHPEJQIXfLyx5V3PSkFBROAzOn21JumDq6nIpoj6H8rfj5Uo+Ok55ZWQ0Wgrf302fDscHLw==",
    "zonesCount": 7
}

Update zone’s TSIG key

Creates or replaces the current TSIG Key for this zone. If other zones use the same key, those zones are not modified.

PUT /config-dns/v2/zones/{zone}/key

Sample: /config-dns/v2/zones/example.com/key

Content-Type: application/json

Object type: TsigKey

Download schema: tsigkey-post.json

Request Body:

{
    "name": "example.com.akamai.com.",
    "algorithm": "hmac-sha512",
    "secret": "Ok1qR5IW1ajVka5cHPEJQIXfLyx5V3PSkFBROAzOn21JumDq6nIpoj6H8rfj5Uo+Ok55ZWQ0Wgrf302fDscHLw=="
}
Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 204

Delete zone’s TSIG key

Removes the TSIG Key for this zone. This action does not affect any other zone, even if they share the same TSIG key as this zone. If the zone does not currently have a key, no actions are taken and no error is thrown.

DELETE /config-dns/v2/zones/{zone}/key

Sample: /config-dns/v2/zones/example.com/key

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 204

List users of zone’s TSIG key

Lists the Zones that use the same TSIG key as this zone.

GET /config-dns/v2/zones/{zone}/key/used-by

Sample: /config-dns/v2/zones/example.com/key/used-by

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 200 application/json

Response Body:

{
    "aliases": [
        "exmaple.com",
        "river.com",
        "brook.com",
        "ocean.com"
    ]
}

Submit bulk-create request

Submits a request to create one or more new Zones asynchronously. The request body contains a JSON array. Each object in the array contains the data necessary to create a zone. All zones are created on the same contract and group.

The new zones are created by an offline task. The result of this operation is a request ID, which can be used to check on the status of that task and view its results once it completes.

POST /config-dns/v2/zones/create-requests{?contractId,gid}

Sample: /config-dns/v2/zones/create-requests?contractId=1-2ABCDE&gid=100

Content-Type: application/json

Object type: ZoneCreateRequest

Download schema: create-request-post.json

Request Body:

{
    "zones": [
        {
            "zone": "river.com",
            "type": "secondary",
            "comment": "Adding bodies of water",
            "masters": [
                "1.2.3.4",
                "1.2.3.5"
            ]
        },
        {
            "zone": "lake.com",
            "type": "secondary",
            "comment": "Adding bodies of water",
            "masters": [
                "1.2.3.4",
                "1.2.3.5"
            ]
        },
        {
            "zone": "ocean.com",
            "type": "secondary",
            "comment": "Adding bodies of water",
            "masters": [
                "1.2.3.4",
                "1.2.3.5"
            ]
        }
    ]
}
Parameter Type Sample Description
Required query parameters
contractId String 1-2ABCDE The contract to which the new zones should be tied.
Optional query parameters
gid Integer 100 The currently selected group ID. This is a feature in the Pulsar UI where a user is able to specify a particular group to manage.

Status 201 application/json

Object type: ZoneCreateRequestId

Download schema: async-request-id.json

Response Body:

{
    "requestId": "e585a640-0849-4b87-8dd9-91afdaf8851c",
    "expirationDate": "2017-01-03T12:00:00Z"
}
  1. Submit a request to create multiple zones. Put the zone objects inside the request DTO. Capture the requestId of the response body.

  2. Use the requestId to poll the status of the asynchronous create request. This process may take several minutes, and individual zones may succeed or fail independently of the others.

  3. When the request status isComplete flag is set to true, fetch the request result to see which zones were created, which zones failed to be created, and why.

Check bulk-create status

Retrieves the current status of a running (or completed) request. The request ID was returned when the create request was initiated.

GET /config-dns/v2/zones/create-requests/{requestId}

Sample: /config-dns/v2/zones/create-requests/3219d903-fc95-4a3e–8baf–8a3c621087a9

Parameter Type Sample Description
URL parameters
requestId String 3219d903-fc95-4a3e-8baf-8a3c621087a9 The ID of the create request.

Status 200 application/json

Response Body:

{
    "requestId": "e585a640-0849-4b87-8dd9-91afdaf8851c",
    "zonesSubmitted": 3,
    "successCount": 2,
    "failureCount": 1,
    "isComplete": true,
    "expirationDate": "2017-01-03T12:00:00Z"
}

Get bulk-create result

Retrieves the results from a completed request.

GET /config-dns/v2/zones/create-requests/{requestId}/result

Sample: /config-dns/v2/zones/create-requests/3219d903-fc95-4a3e–8baf–8a3c621087a9/result

Parameter Type Sample Description
URL parameters
requestId String 3219d903-fc95-4a3e-8baf-8a3c621087a9 The ID of the create request.

Status 200 application/json

Object type: ZoneCreateResult

Download schema: create-request-result.json

Response Body:

{
    "requestId": "e585a640-0849-4b87-8dd9-91afdaf8851c",
    "successfullyCreatedZones": [
        "river.com",
        "lake.com"
    ],
    "failedZones": [
        {
            "zone": "ocean.com",
            "failureReason": "ZONE_ALREADY_EXISTS"
        }
    ]
}

Submit bulk-delete request

Submits a request to delete one or more new Zones asynchronously. The request body contains a JSON array. Each element in the array is the name of a zone to be deleted.

Before a zone can be deleted from the Fast DNS system, the API checks to see that Akamai servers are not receiving any DNS requests for that zone. It also checks to make sure that the zone is not currently delegated to Akamai’s nameservers.

The new zones are deleted by an offline task. The result of this operation is a request ID, which can be used to check on the status of that task and view its results once it completes.

POST /config-dns/v2/zones/delete-requests{?force}

Sample: /config-dns/v2/zones/delete-requests?force=false

Content-Type: application/json

Object type: ZoneDeleteRequest

Download schema: zone-name-list.json

Request Body:

{
    "zones": [
        "river.com",
        "stream.com"
    ]
}
Parameter Type Sample Description
Optional query parameters
force Boolean false If “true”, disables the delegation checks and deletes the zones as soon as possible. This feature is not available to every customer; contact Professional Services if you wish to enable it for your account.

Status 201 application/json

Object type: ZoneCreateRequestId

Download schema: async-request-id.json

Response Body:

{
    "requestId": "e585a640-0849-4b87-8dd9-91afdaf8851c",
    "expirationDate": "2017-01-03T12:00:00Z"
}
  1. Submit a request to delete multiple zones. Put the zone names inside the request DTO. Capture the requestId of the response body.

  2. Use the requestId to poll the status of the asynchronous delete request. This process may take several minutes, and individual zones may succeed or fail independently of the others.

  3. When the request status isComplete flag is set to true, fetch the request result to see which zones were deleted, which zones failed to be deleted, and why.

Check bulk-delete status

Retrieves the current status of a running (or completed) request. The request ID was returned when the delete request was initiated.

GET /config-dns/v2/zones/delete-requests/{requestId}

Sample: /config-dns/v2/zones/delete-requests/3219d903-fc95-4a3e–8baf–8a3c621087a9

Parameter Type Sample Description
URL parameters
requestId String 3219d903-fc95-4a3e-8baf-8a3c621087a9 The ID of the delete request.

Status 200 application/json

Object type: ZoneCreateStatus

Download schema: async-request-status.json

Response Body:

{
    "requestId": "e585a640-0849-4b87-8dd9-91afdaf8851c",
    "zonesSubmitted": 3,
    "successCount": 2,
    "failureCount": 1,
    "isComplete": true,
    "expirationDate": "2017-01-03T12:00:00Z"
}

Get bulk-delete result

Retrieves the results from a completed request.

GET /config-dns/v2/zones/delete-requests/{requestId}/result

Sample: /config-dns/v2/zones/delete-requests/3219d903-fc95-4a3e–8baf–8a3c621087a9/result

Parameter Type Sample Description
URL parameters
requestId String 3219d903-fc95-4a3e-8baf-8a3c621087a9 The ID of the delete request.

Status 200 application/json

Object type: ZoneDeleteResult

Download schema: delete-request-result.json

Response Body:

{
    "requestId": "e585a640-0849-4b87-8dd9-91afdaf8851c",
    "successfullyDeletedZones": [
        "river.com",
        "lake.com"
    ],
    "failedZones": [
        {
            "zone": "ocean.com",
            "failureReason": "ZONE_DELEGATION_ERROR"
        }
    ]
}

List user’s change lists

Retrieves the Change Lists that this user has created. If the user has no change lists, the list is empty. Otherwise, change lists are displayed even if they are stale, and regardless of whether the current user still has permissions to access the related zone.

GET /config-dns/v2/changelists

Status 200 application/json

Response Body:

{
    "changeLists": [
        {
            "zone": "example.com",
            "changeTag": "476754f4-d605-479f-853b-db854d7254fa",
            "zoneVersionId": "1d9c887c-49bb-4382-87a6-d1bf690aa58f",
            "lastModifiedDate": "2017-02-01T12:00:12.524Z",
            "stale": false
        },
        {
            "zone": "river.com",
            "changeTag": "17bfec8f-2b95-4aec-9959-518998b8b3c6",
            "zoneVersionId": "82ffbdd6-d328-4b8a-aa7c-bc9319c51bf3",
            "lastModifiedDate": "2017-04-21T19:04:00Z",
            "stale": true
        }
    ]
}

Create a change list

Creates a new Change List based on the most recent version of a zone. No POST body is required, since the object is read-only.

POST /config-dns/v2/changelists{?zone,overwrite}

Sample: /config-dns/v2/changelists?zone=example.com&overwrite=stale

Parameter Type Sample Description
Required query parameters
zone String example.com The name of the zone.
Optional query parameters
overwrite Enumeration stale If a change list already exists for this user and zone, a new change list may not be created. The default behavior (equivalent to setting this parameter to none) is to raise an error if a change list exists. If this parameter is set to stale, then any stale change lists are automatically deleted before the create operation is performed, but a change list attached to the current version will cause an error to be raised. If this parameter is set to any, then any existing change list are deleted before the create operation.

Status 201 application/json

Object type: ChangeList

Download schema: changelist.json

Response Body:

{
    "zone": "example.com",
    "changeTag": "476754f4-d605-479f-853b-db854d7254fa",
    "zoneVersionId": "1d9c887c-49bb-4382-87a6-d1bf690aa58f",
    "lastModifiedDate": "2017-02-01T12:00:12.524Z",
    "stale": false
}

Search for change lists

Given a list of zone names, this operation lists the Change Lists that the user has created on those zones. If the input list is empty, the response does not return any change lists. Note that it is possible to own a change list on a zone that you are no longer allowed to access.

POST /config-dns/v2/changelists/search

Content-Type: application/json

Request Body:

{
    "zones": [
        "river.com",
        "brook.com"
    ]
}

Status 200 application/json

Object type: ChangeList

Download schema: changelist.json

Response Body:

{
    "changeLists": [
        {
            "zone": "example.com",
            "changeTag": "476754f4-d605-479f-853b-db854d7254fa",
            "zoneVersionId": "1d9c887c-49bb-4382-87a6-d1bf690aa58f",
            "lastModifiedDate": "2017-02-01T12:00:12.524Z",
            "stale": false
        },
        {
            "zone": "river.com",
            "changeTag": "17bfec8f-2b95-4aec-9959-518998b8b3c6",
            "zoneVersionId": "82ffbdd6-d328-4b8a-aa7c-bc9319c51bf3",
            "lastModifiedDate": "2017-04-21T19:04:00Z",
            "stale": true
        }
    ]
}

Get change list

Describes a Change List, showing its base zone version, last modified time, and current change tag.

GET /config-dns/v2/changelists/{zone}

Sample: /config-dns/v2/changelists/example.com

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 200 application/json

Object type: ChangeList

Download schema: changelist.json

Response Body:

{
    "zone": "example.com",
    "changeTag": "476754f4-d605-479f-853b-db854d7254fa",
    "zoneVersionId": "1d9c887c-49bb-4382-87a6-d1bf690aa58f",
    "lastModifiedDate": "2017-02-01T12:00:12.524Z",
    "stale": false
}

Status 304

Delete change list

Removes an unneeded Change List.

DELETE /config-dns/v2/changelists/{zone}

Sample: /config-dns/v2/changelists/example.com

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 204

Get change list settings

Retrieves the zone’s settings from the perspective of this change list. Zone settings include metadata about the zone, but not the record sets. Any edits that have been made to the zone settings through this change list are reflected in the returned data. This call works even if the change list has become stale.

GET /config-dns/v2/changelists/{zone}/settings

Sample: /config-dns/v2/changelists/example.com/settings

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 200 application/json

Response Body:

{
    "contractId": "1-2ABCDE",
    "zone": "example.com",
    "type": "primary",
    "aliasCount": 1,
    "signAndServe": true,
    "signAndServeAlgorithm": "RSA_SHA256",
    "versionId": "ae02357c-693d-4ac4-b33d-8352d9b7c786",
    "lastModifiedDate": "2017-01-03T12:00:00Z",
    "lastModifiedBy": "user28",
    "lastActivationDate": "2017-01-03T12:00:00Z",
    "activationState": "PENDING"
}

Update change list settings

Updates the change list with new Zone settings. The entire Zone object is required no matter how many fields are being updated.

PUT /config-dns/v2/changelists/{zone}/settings

Sample: /config-dns/v2/changelists/example.com/settings

Content-Type: application/json

Request Body:

{
    "zone": "river.com",
    "type": "secondary",
    "comment": "Adding bodies of water",
    "masters": [
        "1.2.3.4",
        "1.2.3.5"
    ]
}
Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 204

Get record sets for change list

Retrieves the current list of record sets from the perspective of this change list. Any Changes that have been added to this change list are reflected in the list of record sets returned. This call works even if the change list has become stale. This operation is (paginated](#pagination).

GET /config-dns/v2/changelists/{zone}/recordsets{?sortBy,types,search,page,pageSize,showAll}

Sample: /config-dns/v2/changelists/example.com/recordsets?sortBy=name%2C-type&types=A%2CAAAA&search=ampl&page=1&pageSize=25&showAll=false

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.
Optional query parameters
page Integer 1 Which page of results to return. The first page is page 1.
pageSize Integer 25 The number of results per page to return.
search String ampl Displays only record sets whose NAME or RDATA field matches this value. The entire record set (i.e. all records with the same name and type) is shown if any record in the set has a NAME or RDATA that contains a case-insensitive match for the supplied value.
showAll Boolean false Disables paging and shows the entire list all at once. Using this parameter may significantly increase the time required to respond to the request.
sortBy String name,-type Sorts the list on the specified fields. You can specify multiple fields as a comma-separated list. If a field name is preceded by a dash (-), the sorting order for that field is reversed (descending). Allowed fields include name and type.
types String A,AAAA Only display record sets that match one of the provided types. Illegal or disallowed record types are silently ignored.

Status 200 application/json

Response Body:

{
    "metadata": {
        "zone": "example.com",
        "page": 1,
        "pageSize": 25,
        "totalElements": 2,
        "types": [
            "A"
        ]
    },
    "recordsets": [
        {
            "name": "www.example.com",
            "type": "A",
            "ttl": 300,
            "state": "PRISTINE",
            "rdata": [
                "10.0.0.2",
                "10.0.0.3"
            ]
        },
        {
            "name": "mail.example.com",
            "type": "A",
            "ttl": 300,
            "state": "DELETED",
            "rdata": [
                "192.168.0.1",
                "192.168.0.2"
            ]
        }
    ]
}

Upload Master Zone File to change list

Replaces your Change List’s record sets with the contents of a Master Zone File.

POST /config-dns/v2/changelists/{zone}/recordsets

Sample: /config-dns/v2/changelists/example.com/recordsets

Content-Type: text/dns

Request Body:

example.com.        10000    IN SOA ns1.akamaidns.com. webmaster.example.com. 1 28800 14400 2419200 86400
example.com.        10000    IN NS  ns1.akamaidns.com.
example.com.        10000    IN NS  ns2.akamaidns.com.
example.com.            300 IN  A   10.0.0.1
example.com.            300 IN  A   10.0.0.2
www.example.com.        300 IN  A   10.0.0.1
www.example.com.        300 IN  A   10.0.0.2
Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 204

Modify record set for change list

Adds a collection of Record Set Changes to this change list. Each change is an operation (ADD, EDIT, DELETE) that affects a single record set.

PATCH /config-dns/v2/changelists/{zone}/recordsets

Sample: /config-dns/v2/changelists/example.com/recordsets

Content-Type: application/json

Object type: RecordChange

Download schema: changelist-recordset-patch.json

Request Body:

{
    "op": "ADD",
    "name": "ftp.example.com",
    "type": "A",
    "ttl": 100,
    "rdata": [
        "10.0.0.1"
    ]
}
Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 204

Get record set names for change list

Retrieves a list of record names that exist on this zone, from the perspective of the change list. Any changes that have been added to the change list are reflected in the list of record sets returned. Records that have been deleted as part of this change list will not appear in this list. If no record sets exist within the change list, an empty list is returned.

GET /config-dns/v2/changelists/{zone}/names

Sample: /config-dns/v2/changelists/example.com/names

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 200 application/json

Response Body:

{
    "names": [
        "example.com",
        "www.example.com",
        "ftp.example.com",
        "foo.example.com",
        "bar.example.com"
    ]
}

Get record set types for name and change list

Retrieves a list of record set types that exist at a given name from the perspective of the change list. Any changes that have been added to the change list are reflected in the list of record sets returned. Records that have been deleted as part of this change list will not appear in this list. If the name does not exist within the change list, an empty list is returned.

GET /config-dns/v2/changelists/{zone}/names/{name}/types

Sample: /config-dns/v2/changelists/example.com/names/www.example.com/types

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.
name String www.example.com A domain name, including the parent zone.

Status 200 application/json

Response Body:

{
    "types": [
        "A",
        "AAAA",
        "MX"
    ]
}

Get a record set for change list

Retrieves an individual record set from the perspective of this change list. Any changes that have been added to this change list are reflected in the list of record sets returned. Record sets are annotated with the related change (clean, modified, new, deleted). This call works even if the change list has become stale.

GET /config-dns/v2/changelists/{zone}/names/{name}/types/{type}

Sample: /config-dns/v2/changelists/example.com/names/www.example.com/types/A

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.
name String www.example.com A domain name, including the parent zone.
type String A Record set type.

Status 200 application/json

Object type: RecordSet

Download schema: recordset.json

Response Body:

{
    "name": "www.example.com",
    "type": "A",
    "ttl": 300,
    "state": "PRISTINE",
    "rdata": [
        "10.0.0.2",
        "10.0.0.3"
    ]
}

Show changes

Show differences between this change list and its base version.

GET /config-dns/v2/changelists/{zone}/diff

Sample: /config-dns/v2/changelists/example.com/diff

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 200 application/json

Object type: DiffReport

Download schema: diff-report.json

Response Body:

{
    "metadata": {
        "fromVersionId": "9a274847-11b6-4589-b445-33c2de5b1747",
        "toVersionId": "a41df66e-fd52-4da6-b963-c92d3f7db4d3",
        "fromVersionLastModifiedDate": "2016-12-25T00:00:00Z",
        "toVersionLastModifiedDate": "2016-12-25T00:00:00Z"
    },
    "diffs": {
        "settingsDiffs": [
            {
                "fieldName": "comment",
                "operation": "EDIT",
                "fromValue": "old comment",
                "toValue": "new comment"
            }
        ],
        "recordSetDiffs": [
            {
                "name": "www.example.com",
                "type": "A",
                "operation": "DELETE",
                "fromValue": {
                    "ttl": 100,
                    "rdata": [
                        "10.0.0.1"
                    ]
                }
            }
        ]
    }
}

Submit change list

Applies all of the changes in this change list to the current zone. This operation fails if the change list has become stale.

POST /config-dns/v2/changelists/{zone}/submit

Sample: /config-dns/v2/changelists/example.com/submit

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.

Status 204

List zone’s versions

Shows the settings for current and prior versions of this Zone, in reverse chronological order of modification. A new version is created every time the zone’s settings or record sets are changed, so many versions in this list may look very similar. This operation is paginated.

GET /config-dns/v2/zones/{zone}/versions{?page,pageSize,showAll}

Sample: /config-dns/v2/zones/example.com/versions?page=1&pageSize=25&showAll=false

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.
Optional query parameters
page Integer 1 Which page of results to return. The first page is page 1.
pageSize Integer 25 The number of results per page to return.
showAll Boolean false Disables paging and shows the entire list all at once. Using this parameter may significantly increase the time required to respond to the request.

Status 200 application/json

Response Body:

{
    "metadata": {
        "page": 1,
        "pageSize": 3,
        "showAll": false,
        "totalElements": 17,
        "contractIds": [
            "1-2ABCDE"
        ]
    },
    "versions": [
        {
            "contractId": "1-2ABCDE",
            "zone": "example.com",
            "type": "primary",
            "aliasCount": 1,
            "signAndServe": true,
            "signAndServeAlgorithm": "RSA_SHA512",
            "versionId": "b55d3882-444a-4c19-8d9c-eb232867c1ed",
            "lastModifiedDate": "2017-02-02T12:00:00Z",
            "lastModifiedBy": "user28",
            "lastActivationDate": "2017-02-02T12:00:00Z",
            "activationState": "PENDING"
        },
        {
            "contractId": "1-2ABCDE",
            "zone": "example.com",
            "type": "primary",
            "aliasCount": 1,
            "signAndServe": false,
            "versionId": "ae02357c-693d-4ac4-b33d-8352d9b7c786",
            "lastModifiedDate": "2017-01-03T12:00:00Z",
            "lastModifiedBy": "user28",
            "lastActivationDate": "2017-01-03T12:00:00Z",
            "activationState": "ACTIVE"
        },
        {
            "contractId": "1-2ABCDE",
            "zone": "example.com",
            "type": "primary",
            "aliasCount": 1,
            "signAndServe": false,
            "versionId": "7949b2db-ac43-4773-a3ec-dc93202142fd",
            "lastModifiedDate": "2016-12-19T08:15:42Z",
            "lastModifiedBy": "user28",
            "lastActivationDate": "2016-12-19T08:15:42Z",
            "activationState": "OBSOLETE"
        }
    ]
}

Get zone version

Returns an image of the Zone from a previous version. Shows only zone settings, not record sets.

GET /config-dns/v2/zones/{zone}/versions/{uuid}

Sample: /config-dns/v2/zones/example.com/versions/%22e23a84c5-9ab7-49fb–83ff-b82b8a078f95%22

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.
uuid String "e23a84c5-9ab7-49fb-83ff-b82b8a078f95" A UUID indicating a zone version tag.

Status 200 application/json

Response Body:

{
    "contractId": "1-2ABCDE",
    "zone": "example.com",
    "type": "primary",
    "aliasCount": 1,
    "signAndServe": true,
    "signAndServeAlgorithm": "RSA_SHA256",
    "versionId": "ae02357c-693d-4ac4-b33d-8352d9b7c786",
    "lastModifiedDate": "2017-01-03T12:00:00Z",
    "lastModifiedBy": "user28",
    "lastActivationDate": "2017-01-03T12:00:00Z",
    "activationState": "PENDING"
}

Get version’s record sets

Lists all record sets for this version of this zone. This operation is paginated.

GET /config-dns/v2/zones/{zone}/versions/{uuid}/recordsets{?sortBy,types,search,page,pageSize,showAll}

Sample: /config-dns/v2/zones/example.com/versions/%22e23a84c5-9ab7-49fb–83ff-b82b8a078f95%22/recordsets?sortBy=name%2Ctype&types=A%2CAAAA&search=www&page=1&pageSize=25&showAll=false

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.
uuid String "e23a84c5-9ab7-49fb-83ff-b82b8a078f95" A UUID indicating a zone version tag.
Optional query parameters
page Integer 1 Which page of results to return. The first page is page 1.
pageSize Integer 25 The number of results per page to return.
search String www Display only record sets whose RDATA field matches this value. The entire record set (i.e. all records with the same name and type) is shown if any record in the set has RDATA that matches the supplied value.
showAll Boolean false Disables paging and shows the entire list all at once. Using this parameter may significantly increase the time required to respond to the request.
sortBy String name,type Sorts the list on the specified fields. You can specify multiple fields as a comma-separated list. If a field name is preceded by a dash (-), the sorting order for that field is reversed (descending). Allowed fields include name and type.
types String A,AAAA Only display record sets that match one of the provided types. Illegal or disallowed record types are silently ignored.

Status 200 application/json

Response Body:

{
    "metadata": {
        "zone": "example.com",
        "page": 1,
        "pageSize": 25,
        "totalElements": 2,
        "types": [
            "A"
        ]
    },
    "recordsets": [
        {
            "name": "www.example.com",
            "type": "A",
            "ttl": 300,
            "rdata": [
                "10.0.0.2",
                "10.0.0.3"
            ]
        },
        {
            "name": "mail.example.com",
            "type": "A",
            "ttl": 300,
            "rdata": [
                "192.168.0.1",
                "192.168.0.2"
            ]
        }
    ]
}

Reactivate version

Copy the record sets from a prior version of this zone and re-apply them to the current version, creating a new version of the zone that will be sent out to the network. The new version will have a new, auto-incremented SOA serial number, and the zone’s modification data will be set to the current time and user. All other zone settings remain the same as the current version.

POST /config-dns/v2/zones/{zone}/versions/{uuid}/recordsets/activate{?comment}

Sample: /config-dns/v2/zones/example.com/versions/%22e23a84c5-9ab7-49fb–83ff-b82b8a078f95%22/recordsets/activate?comment=reactivated%20old%20version

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.
uuid String "e23a84c5-9ab7-49fb-83ff-b82b8a078f95" A UUID indicating a zone version tag.
Optional query parameters
comment String reactivated old version A new comment string; may be blank. If not included, the old comment is copied.

Status 204

Get version’s Master Zone File

Downloads the record sets from a prior zone version in Master Zone File format.

GET /config-dns/v2/zones/{zone}/versions/{uuid}/zone-file

Sample: /config-dns/v2/zones/example.com/versions/%22e23a84c5-9ab7-49fb–83ff-b82b8a078f95%22/zone-file

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.
uuid String "e23a84c5-9ab7-49fb-83ff-b82b8a078f95" A UUID indicating a zone version tag.

Status 200 text/dns

Response Body:

example.com.        10000    IN SOA ns1.akamaidns.com. webmaster.example.com. 1 28800 14400 2419200 86400
example.com.        10000    IN NS  ns1.akamaidns.com.
example.com.        10000    IN NS  ns2.akamaidns.com.
example.com.            300 IN  A   10.0.0.1
example.com.            300 IN  A   10.0.0.2
www.example.com.        300 IN  A   10.0.0.1
www.example.com.        300 IN  A   10.0.0.2

Show differences

Displays the difference between any two versions of a zone, as specified in the query parameters.

GET /config-dns/v2/zones/{zone}/versions/diff{?from,to}

Sample: /config-dns/v2/zones/example.com/versions/diff?from=ac7e47ef-c71e–49cd-a71b-b39fc4d841ac&to=e1100926-9b76-42cb–868a-b8260fdc6cd0

Parameter Type Sample Description
URL parameters
zone String example.com The name of the zone.
Required query parameters
from String ac7e47ef-c71e-49cd-a71b-b39fc4d841ac UUID for “base” version.
to String e1100926-9b76-42cb-868a-b8260fdc6cd0 UUID of version to diff against base version.

Status 200 application/json

Object type: DiffReport

Download schema: diff-report.json

Response Body:

{
    "metadata": {
        "fromVersionId": "9a274847-11b6-4589-b445-33c2de5b1747",
        "toVersionId": "a41df66e-fd52-4da6-b963-c92d3f7db4d3",
        "fromVersionLastModifiedDate": "2016-12-25T00:00:00Z",
        "toVersionLastModifiedDate": "2016-12-25T00:00:00Z"
    },
    "diffs": {
        "settingsDiffs": [
            {
                "fieldName": "comment",
                "operation": "EDIT",
                "fromValue": "old comment",
                "toValue": "new comment"
            }
        ],
        "recordSetDiffs": [
            {
                "name": "www.example.com",
                "type": "A",
                "operation": "DELETE",
                "fromValue": {
                    "ttl": 100,
                    "rdata": [
                        "10.0.0.1"
                    ]
                }
            }
        ]
    }
}

List contracts

Lists the contracts accessible to the current user. Each Contract object includes the list of features and permissions that are available to the user on that contract.

GET /config-dns/v2/data/contracts{?gid}

Sample: /config-dns/v2/data/contracts?gid=100

Parameter Type Sample Description
Optional query parameters
gid Integer 100 The currently selected group ID. This is a feature in the Pulsar UI where a user is able to specify a particular group to manage.

Status 200 application/json

Download schema: contract-list.json

Response Body:

{
    "contracts": [
        {
            "contractId": "1-1ABCDE",
            "contractName": "Acme Inc",
            "contractTypeName": "DIRECT_CUSTOMER",
            "zoneCount": 92,
            "maximumZones": 5000,
            "features": [
                "PRIMARY_ZONES",
                "ALIAS_ZONES",
                "SECONDARY_ZONES",
                "ZONE_APEX_MAPPING",
                "FORCE_DELETE"
            ],
            "permissions": [
                "READ",
                "WRITE",
                "ADD"
            ]
        },
        {
            "contractId": "1-9WXYZ",
            "contractName": "Acme Europe Ltd",
            "contractTypeName": "DIRECT_CUSTOMER",
            "zoneCount": 1023,
            "maximumZones": 2000,
            "features": [
                "PRIMARY_ZONES",
                "SECONDARY_ZONES",
                "ZONE_APEX_MAPPING"
            ],
            "permissions": [
                "READ"
            ]
        }
    ]
}

List groups

Lists the groups accessible to the current user. Each Group object includes the list of contracts related to that group, as well as the user’s permissions (READ, WRITE, ADD, or DELETE zone) on that group.

GET /config-dns/v2/data/groups{?gid}

Sample: /config-dns/v2/data/groups?gid=100

Parameter Type Sample Description
Optional query parameters
gid Integer 100 The currently selected group ID. This is a feature in the Pulsar UI where a user is able to specify a particular group to manage.

Status 200 application/json

Download schema: group-list.json

Response Body:

{
    "groups": [
        {
            "groupId": 9012,
            "groupName": "test",
            "contractIds": [
                "1-2ABCDE"
            ],
            "permissions": [
                "READ",
                "WRITE",
                "ADD",
                "DELETE"
            ]
        }
    ]
}

List edge hostnames

Displays a list of Edge Hostnames that have been configured for the current customer.

GET /config-dns/v2/data/edgehostnames

Status 200 application/json

Object type: EdgeHostname

Download schema: edge-hostname-list.json

Response Body:

{
    "edgeHostnames": [
        {
            "edgeHostname": "example1.com.edgesuite.net",
            "supportsZoneApexMapping": false
        },
        {
            "edgeHostname": "example2.com.edgesuite.net",
            "supportsZoneApexMapping": true
        }
    ]
}

List authoritative nameservers

Retrieves the currently assigned Akamai authoritative nameservers for one or more contracts.

GET /config-dns/v2/data/authorities{?contractIds}

Sample: /config-dns/v2/data/authorities?contractIds=9-9XXXXX%2C7-8YYYYY

Parameter Type Sample Description
Optional query parameters
contractIds String 9-9XXXXX,7-8YYYYY Show the authoritative nameservers for the specified contracts. If not present, defaults to all contracts that the user can access.

Status 200 application/json

Download schema: authorities-list.json

Response Body:

{
    "contracts": [
        {
            "contractId": "9-9XXXXX",
            "authorities": [
                "a1-118.akam.net.",
                "a2-64.akam.net.",
                "a6-66.akam.net.",
                "a18-67.akam.net.",
                "a7-64.akam.net.",
                "a11-64.akam.net."
            ]
        },
        {
            "contractId": "7-8YYYYY",
            "authorities": [
                "a1-112.akam.net.",
                "a4-67.akam.net.",
                "a14-66.akam.net.",
                "a16-65.akam.net.",
                "a9-66.akam.net.",
                "a7-67.akam.net."
            ]
        }
    ]
}

List record types

Retrieves a list of record types that can be added to the requested zone. Record types are dependent on both the type of zone and the available contract features.

GET /config-dns/v2/data/recordset-types{?zone}

Sample: /config-dns/v2/data/recordset-types?zone=example.com

Parameter Type Sample Description
Required query parameters
zone String example.com The name of a FastDns zone.

Status 200 application/json

Download schema: recordtype-list.json

Response Body:

{
    "types": [
        "A",
        "AAAA",
        "MX"
    ]
}

List DNSSEC algorithms

Retrieves a list of DNSSEC algorithm names.

GET /config-dns/v2/data/dns-sec-algorithms

Status 200 application/json

Download schema: algorithm-list.json

Response Body:

{
    "algorithms": [
        "RSA_SHA1",
        "RSA_SHA256",
        "RSA_SHA512",
        "ECDSA_P256_SHA256",
        "ECDSA_P384_SHA384"
    ]
}

List TSIG key algorithms

Retrieves a list of TSIG algorithm names.

GET /config-dns/v2/data/tsig-algorithms

Status 200 application/json

Download schema: algorithm-list.json

Response Body:

{
    "algorithms": [
        "hmac-md5",
        "hmac-sha1",
        "hmac-sha224",
        "hmac-sha256",
        "hmac-sha384",
        "hmac-sha512",
        "HMAC-MD5.SIG-ALG.REG.INT"
    ]
}

Data

Download the JSON schemas for this API.

The data schema tables below list membership requirements as follows:

Member is required in requests, or always present in responses, even if its value is empty or null.
Member is optional, and may be omitted in some cases.
Member is out of scope, and irrelevant to the specified interaction context. If you include the member in that context, it either triggers an error, or is ignored.

Zone

A Fast DNS zone. This object contains zone settings, but not record sets.

Download schema: zone-get.json, zone-post.json

Sample PRIMARY Zone:

{
    "contractId": "1-2ABCDE",
    "zone": "example.com",
    "type": "primary",
    "aliasCount": 1,
    "signAndServe": true,
    "signAndServeAlgorithm": "RSA_SHA256",
    "versionId": "ae02357c-693d-4ac4-b33d-8352d9b7c786",
    "lastModifiedDate": "2017-01-03T12:00:00Z",
    "lastModifiedBy": "user28",
    "lastActivationDate": "2017-01-03T12:00:00Z",
    "activationState": "PENDING"
}

Sample SECONDARY Zone:

{
    "contractId": "1-2ABCDE",
    "zone": "other.com",
    "type": "secondary",
    "aliasCount": 1,
    "signAndServe": false,
    "comment": "Initial add",
    "versionId": "7949b2db-ac43-4773-a3ec-dc93202142fd",
    "lastModifiedDate": "2016-12-11T03:21:00Z",
    "lastModifiedBy": "user31",
    "lastActivationDate": "2017-01-03T12:00:00Z",
    "activationState": "ERROR",
    "masters": [
        "1.2.3.4",
        "1.2.3.5"
    ],
    "tsigKey": {
        "name": "other.com.akamai.com.",
        "algorithm": "hmac-sha512",
        "secret": "Ok1qR5IW1ajVka5cHPEJQIXfLyx5V3PSkFBROAzOn21JumDq6nIpoj6H8rfj5Uo+Ok55ZWQ0Wgrf302fDscHLw=="
    }
}

Sample ALIAS Zone:

{
    "contractId": "1-2ABCDE",
    "zone": "exmaple.com",
    "type": "alias",
    "target": "example.com",
    "lastModifiedDate": "2017-05-21T19:45:00Z",
    "lastModifiedBy": "user31",
    "activationState": "ACTIVE"
}

Zone members

Member Type GET POST Description
Zone: A Fast DNS zone. This object contains zone settings, but not record sets.
activationState Enumeration Read-only. The current status of zone activation. NEW zones are not ready to activate because they are missing some data. PENDING zones have been sent to the network but are not yet ACTIVE. An OBSOLETE zone version has been superseded by a later version. If the zone could not be activated is it marked ERROR. DELETED zones are marked for deletion and will be cleaned up by the server at a later date.
aliasCount Integer Read-only. (PRIMARY and SECONDARY zones only.) The number of zones of type ALIAS that point to this zone.
comment String Freeform user comments.
contractId String The contract to which this zone is attached.
endCustomerId String Freeform user identifier for this zone, often used by resellers.
lastActivationDate String Read-only. (PRIMARY and SECONDARY zones only.) An ISO–8601 timestamp showing when the latest version was activated.
lastModifiedBy String Read-only. The name of the user that last edited this zone.
lastModifiedDate String Read-only. An ISO–8601 timestamp showing when the zone was last modified.
masters Array (SECONDARY zones only.) The names or addresses of the customer’s nameservers from which the zone data should be retrieved.
signAndServe Boolean Whether DNSSEC Sign&Serve is enabled. Applies to PRIMARY and SECONDARY zones only.
signAndServeAlgorithm Enumeration The algorithm currently or last used for DNSSEC Sign&Serve. Absent if no algorithm has ever been assigned to this zone. The list of supported values can be retrieved here.
target String (ALIAS zones only.) The name of the zone whose configuration this zone will copy.
tsigKey TsigKey (SECONDARY zones only.) The TSIG key used for zone transfers.
type Enumeration The zone type. A PRIMARY zone’s records are stored in the Akamai Portal. A SECONDARY zone’s records are stored on the customer’s nameservers. ALIAS zones allow users to duplicate the configuration of an existing zone.
versionId String Read-only. The UUID of the most-recently activated version. This value may be used as an ETAG when performing operations that affect zones.
zone String The name of the zone.

ZoneCreateRequest

A request to create multiple zones at once.

Download schema: create-request-post.json

Sample POST request:

{
    "zones": [
        {
            "zone": "river.com",
            "type": "secondary",
            "comment": "Adding bodies of water",
            "masters": [
                "1.2.3.4",
                "1.2.3.5"
            ]
        },
        {
            "zone": "lake.com",
            "type": "secondary",
            "comment": "Adding bodies of water",
            "masters": [
                "1.2.3.4",
                "1.2.3.5"
            ]
        },
        {
            "zone": "ocean.com",
            "type": "secondary",
            "comment": "Adding bodies of water",
            "masters": [
                "1.2.3.4",
                "1.2.3.5"
            ]
        }
    ]
}

ZoneCreateRequest members

Member Type Required Description
ZoneCreateRequest: A request to create multiple zones at once.
zones Zone[] A Fast DNS zone. This object contains zone settings, but not record sets.

ZoneCreateRequestId

An identifier for a newly created bulk zone operation request.

Download schema: async-request-id.json

Sample POST response:

{
    "requestId": "e585a640-0849-4b87-8dd9-91afdaf8851c",
    "expirationDate": "2017-01-03T12:00:00Z"
}

ZoneCreateRequestId members

Member Type Required Description
ZoneCreateRequestId: An identifier for a newly created bulk zone operation request.
expirationDate String Information about this request can be queried up to the expiration date. After that point, information may be purged and no longer available.
requestId String The ID of the request.

ZoneCreateStatus

Status information about a bulk zone operation request.

Download schema: async-request-status.json

Sample GET response:

{
    "requestId": "e585a640-0849-4b87-8dd9-91afdaf8851c",
    "zonesSubmitted": 3,
    "successCount": 2,
    "failureCount": 1,
    "isComplete": true,
    "expirationDate": "2017-01-03T12:00:00Z"
}

ZoneCreateStatus members

Member Type Required Description
ZoneCreateStatus: Status information about a bulk zone operation request.
expirationDate String Information about this request can be queried up to the expiration date. After that point, information may be purged and no longer available.
failureCount Integer The number of zones that could not be processed.
isComplete Boolean If true, the offline task has finished processing and the result object can be retrieved.
requestId String The ID of the request.
successCount Integer The number of zones that were successfully processed.
zonesSubmitted Integer The number of zones that were included in the request.

ZoneCreateResult

Result of a bulk zone create operation. This object is only available after offline processing has completed.

Download schema: create-request-result.json

Sample Create response:

{
    "requestId": "e585a640-0849-4b87-8dd9-91afdaf8851c",
    "successfullyCreatedZones": [
        "river.com",
        "lake.com"
    ],
    "failedZones": [
        {
            "zone": "ocean.com",
            "failureReason": "ZONE_ALREADY_EXISTS"
        }
    ]
}

ZoneCreateResult members

Member Type Required Description
ZoneCreateResult: Result of a bulk zone create operation. This object is only available after offline processing has completed.
failedZones ZoneCreateResult.failedZones[] A list of zones that failed to be created.
requestId String The ID of the request.
successfullyCreatedZones Array The names of all zones that were successfully created.
ZoneCreateResult.failedZones[]: A list of zones that failed to be created.
failureReason Enumeration A value describing why zone creation failed. See the table below for values.
zone String The name of a zone that failed to be created.

FailureReason values

Value Description
ZONE_ALREADY_EXISTS A zone with the same name already exists within Fast DNS.
ZONE_TYPE_NOT_ALLOWED The requested zone is of a type that the user is not allowed to create on this contract. Data Services can be used to discover which types are allowed.
ZONE_LIMIT_EXCEEDED The user has reached the limit on the number of zones that can be created on this contract. Contact Professional Services to have your zone limit increased.
MALFORMED_ZONE The JSON describing the zone object that was passed in as part of the request was malformed and could not be read.
ALIAS_TARGET_NOT_PROPAGATED The requested zone is of type ALIAS, but the zone that it points to has not yet propagated to Akamai’s nameservers. Check the status of that zone and wait for it to propagate, then resume the request.
SUBZONE_CHECK_FAILED The requested zone is a subzone of another Fast DNS zone, but this user does not have write permission on that zone. Either the parent zone belongs to another customer, or the user does not have sufficient privileges.
GTM_CONFLICT A zone with the same name exists in the Global Traffic Management product, and can not be duplicated in Fast DNS.
INTERNAL_ERROR Zone creation failed for an unexpected reason.

ZoneDeleteRequest

A list of zone names.

Download schema: zone-name-list.json

Sample POST request:

{
    "zones": [
        "river.com",
        "stream.com"
    ]
}

ZoneDeleteRequest members

Member Type Required Description
ZoneDeleteRequest: A list of zone names.
zones String[] A list of zone names.

ZoneDeleteRequestId

An identifier for a newly created bulk zone operation request.

Download schema: async-request-id.json

Sample POST response:

{
    "requestId": "e585a640-0849-4b87-8dd9-91afdaf8851c",
    "expirationDate": "2017-01-03T12:00:00Z"
}

ZoneDeleteRequestId members

Member Type Required Description
ZoneDeleteRequestId: An identifier for a newly created bulk zone operation request.
expirationDate String Information about this request can be queried up to the expiration date. After that point, information may be purged and no longer available.
requestId String The ID of the request.

ZoneDeleteStatus

Status information about a bulk zone operation request.

Download schema: async-request-status.json

Sample GET response:

{
    "requestId": "e585a640-0849-4b87-8dd9-91afdaf8851c",
    "zonesSubmitted": 3,
    "successCount": 2,
    "failureCount": 1,
    "isComplete": true,
    "expirationDate": "2017-01-03T12:00:00Z"
}

ZoneDeleteStatus members

Member Type Required Description
ZoneDeleteStatus: Status information about a bulk zone operation request.
expirationDate String Information about this request can be queried up to the expiration date. After that point, information may be purged and no longer available.
failureCount Integer The number of zones that could not be processed.
isComplete Boolean If true, the offline task has finished processing and the result object can be retrieved.
requestId String The ID of the request.
successCount Integer The number of zones that were successfully processed.
zonesSubmitted Integer The number of zones that were included in the request.

ZoneDeleteResult

Result of a bulk zone delete operation. This object is only available after offline processing has completed.

Download schema: delete-request-result.json

Sample GET response:

{
    "requestId": "e585a640-0849-4b87-8dd9-91afdaf8851c",
    "successfullyDeletedZones": [
        "river.com",
        "lake.com"
    ],
    "failedZones": [
        {
            "zone": "ocean.com",
            "failureReason": "ZONE_DELEGATION_ERROR"
        }
    ]
}

ZoneDeleteResult members

Member Type Required Description
ZoneDeleteResult: Result of a bulk zone delete operation. This object is only available after offline processing has completed.
failedZones ZoneDeleteResult.failedZones[] A list of zones that failed to be deleted.
requestId String The ID of the request.
successfullyDeletedZones Array The names of all zones that were successfully deleted.
ZoneDeleteResult.failedZones[]: A list of zones that failed to be deleted.
failureReason String A value describing why zone creation failed. See the table below for values.
zone String The name of a zone that failed to be deleted.

FailureReason values

Value Description
AUTHORIZATION_ERROR Either you don’t have permission to delete zones on that contract, or you requested the “force delete” function but you don’t have permission to use it.
ZONE_DELEGATION_ERROR Akamai’s nameservers are listed as authoritative for this zone. Contact your domain registrar to remove the delegation or assign the zone to another provider.
ZONE_DOES_NOT_EXIST The zone can’t be deleted because it doesn’t exist.
ZONE_HAS_ALIAS The zone can’t be deleted because there are other zones of type ALIAS that point to this zone. Delete those ALIAS zones first, then retry.
ZONE_HAS_TRAFFIC Traffic reports indicate that Akamai’s nameservers are receiving requests for this zone.
INTERNAL_ERROR Zone deletion failed for an unexpected reason.

DnsSecStatus

The status of the DNSSEC configuration for a Fast DNS zone.

Download schema: dns-sec-status.json

Sample array element:

{
    "zone": "stream.com",
    "alerts": [
        "OLD_DNSKEY"
    ],
    "currentRecords": {
        "dnsKeyRecord": "stream.com. 7200 IN DNSKEY 257 3 8 (xxxxxxxxxxxxxxxxxxxxxxxx)",
        "dsRecord": "stream.com. 86400 IN DS 47539 8 2 (xxxxxxxxxxx)",
        "expectedTtl": 3600,
        "lastModifiedDate": "2018-01-15T09:31:36.195"
    },
    "newRecords": {
        "dnsKeyRecord": "stream.com. 7200 IN DNSKEY 257 3 8 (xxxxxxxxxxxxxxxxxxxxxxxx)",
        "dsRecord": "stream.com. 86400 IN DS 47539 8 2 (xxxxxxxxxxx)",
        "expectedTtl": 3600,
        "lastModifiedDate": "2018-04-15T08:00:00.418"
    }
}

DnsSecStatus members

Member Type Required Description
DnsSecStatus: The status of the DNSSEC configuration for a Fast DNS zone.
alerts Array Read-only. A list of zero or more existing problems with the current DNSSEC configuration. See the table below for possible values.
currentRecords DnsSecRecords Read-only. The currently active set of generated DNSSEC records.
newRecords DnsSecRecords Read-only. The newly generated set of DNSSEC records, if one exists.
zone String Read-only. The name of the zone.

DnsSecStatus.alerts values

Value Description
INCOMPATIBLE_AUTHORITIES The authorities for this zone are incompatible with DNSSEC Sign&Serve.
NON_AKAMAI_AUTHORITIES The authorities for this zone do not point to Akamai.
PARENT_DS_MISSING There is no DS record in the parent zone.
OLD_DNSKEY The DS record for this zone points to an old DNSKEY.
WRONG_DNSKEY The DS record for this zone points to the wrong DNSKEY.

DnsSecRecords

Information about DNSSEC records auto-generated for a Fast DNS zone with Sign&Serve.

Download schema: dns-sec-records.json

DnsSecRecords members

Member Type Required Description
DnsSecRecords: Information about DNSSEC records auto-generated for a Fast DNS zone with Sign&Serve.
dnskeyRecord String The generated DNSKEY record for this zone.
dsRecord String The generated DS record for this zone.
expectedTtl Integer The TTL on the NS record for this zone. This should match the TTL on the DS or DNSKEY record.
lastModifiedDate String The date at which these records were generated.

ZoneTransferStatus

The status of any recent zone transfer attempts for a Fast DNS secondary zone.

Download schema: zone-transfer-status.json

Sample array element:

{
    "zone": "example.com",
    "metadata": {
        "lastSuccessSerial": 2017042400,
        "lastSuccessTimestamp": "2019-01-30T22:14:34Z",
        "lastFailureTimestamp": "2019-01-14T16:27:02Z"
    },
    "masters": [
        {
            "masterIP": "184.168.128.1",
            "zoneTransferAgents": [
                {
                    "agentIP": "23.73.133.141",
                    "lastFailureTimestamp": "2018-01-23T20:47:55Z",
                    "actions": [
                        {
                            "actionType": "SOA",
                            "lastSuccessTimestamp": "2019-01-23T20:47:55Z",
                            "lastSuccessSerial": 2019017037
                        },
                        {
                            "actionType": "XFR",
                            "lastFailureTimestamp": "2019-01-23T20:47:55Z",
                            "messages": [
                                {
                                    "problemId": "TIMED_OUT",
                                    "timestamp": "2018-11-23T20:47:55Z",
                                    "tokens": []
                                },
                                {
                                    "problemId": "TOO_MANY_RECORDS",
                                    "timestamp": "2019-01-23T20:47:55Z",
                                    "tokens": [
                                        "2019017001 108163 100000"
                                    ]
                                }
                            ]
                        }
                    ]
                },
                {
                    "agentIP": "23.73.133.237",
                    "lastFailureTimestamp": "2019-01-17T20:47:55Z",
                    "actions": [
                        {
                            "actionType": "SOA",
                            "lastSuccessTimestamp": "2019-01-23T20:47:55Z",
                            "lastSuccessSerial": 2019017044
                        },
                        {
                            "actionType": "XFR",
                            "lastFailureTimestamp": "2019-01-17T20:47:55Z",
                            "messages": [
                                {
                                    "problemId": "TOO_MANY_RECORDS",
                                    "timestamp": "2019-01-17T20:47:55Z",
                                    "tokens": [
                                        "2019015704 107931 100000"
                                    ]
                                },
                                {
                                    "problemId": "TIMED_OUT",
                                    "timestamp": "2018-12-25T20:47:55Z",
                                    "tokens": []
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "masterIP": "184.168.128.32",
            "zoneTransferAgents": [
                {
                    "agentIP": "23.73.133.141",
                    "lastFailureTimestamp": "2019-01-23T20:47:55Z",
                    "actions": [
                        {
                            "actionType": "SOA",
                            "lastSuccessTimestamp": "2019-01-21T20:47:55Z",
                            "lastSuccessSerial": 2019017044
                        },
                        {
                            "actionType": "XFR",
                            "lastFailureTimestamp": "2019-01-23T20:47:55Z",
                            "messages": [
                                {
                                    "problemId": "TOO_MANY_RECORDS",
                                    "timestamp": "2019-01-23T20:47:55Z",
                                    "tokens": [
                                        "2019017044 108173 100000"
                                    ]
                                },
                                {
                                    "problemId": "TIMED_OUT",
                                    "timestamp": "2019-01-21T20:47:55Z",
                                    "tokens": []
                                },
                                {
                                    "problemId": "EOF",
                                    "timestamp": "2019-01-17T20:47:55Z",
                                    "tokens": []
                                }
                            ]
                        }
                    ]
                },
                {
                    "agentIP": "23.73.133.237",
                    "lastFailureTimestamp": "2019-01-17T20:47:55Z",
                    "actions": [
                        {
                            "actionType": "SOA",
                            "lastSuccessTimestamp": "2019-01-23T20:47:55Z",
                            "lastSuccessSerial": 2019017044
                        },
                        {
                            "actionType": "XFR",
                            "lastFailureTimestamp": "2019-01-17T20:47:55Z",
                            "messages": [
                                {
                                    "problemId": "TOO_MANY_RECORDS",
                                    "timestamp": "2019-01-17T20:47:55Z",
                                    "tokens": [
                                        "2019015768 107946 100000"
                                    ]
                                },
                                {
                                    "problemId": "TIMED_OUT",
                                    "timestamp": "2019-01-15T20:47:55Z",
                                    "tokens": []
                                },
                                {
                                    "problemId": "EOF",
                                    "timestamp": "2018-12-10T20:47:55Z",
                                    "tokens": []
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

ZoneTransferStatus members

Member Type Required Description
ZoneTransferStatus: The status of any recent zone transfer attempts for a Fast DNS secondary zone.
masters ZoneTransferMaster[] Read-only. A list of customer nameservers that were contacted.
metadata ZoneTransferStatus.metadata Read-only. Information about the most recent successful and failed zone transfer attempt.
zone String Read-only. The name of the zone.
ZoneTransferStatus.metadata: Information about the most recent successful and failed zone transfer attempt.
lastFailureTimestamp String Read-only. The time at which the most recent failed zone transfer occurred.
lastSuccessSerial Integer Read-only. The SOA serial number that was read during the most recent successful zone transfer.
lastSuccessTimestamp String Read-only. The time at which the most recent successful zone transfer occurred.

ZoneTransferMaster

A list of customer nameservers that were contacted.

Download schema: zone-transfer-master.json

ZoneTransferMaster members

Member Type Required Description
ZoneTransferMaster: A list of customer nameservers that were contacted.
masterIP String Read-only. The IP address of the customer nameserver.
zoneTransferAgents ZoneTransferAgent[] Read-only. A list of Akamai zone transfer agents that performed zone transfers.

ZoneTransferAgent

A list of Akamai zone transfer agents that performed zone transfers.

Download schema: zone-transfer-agent.json

ZoneTransferAgent members

Member Type Required Description
ZoneTransferAgent: A list of Akamai zone transfer agents that performed zone transfers.
actions ZoneTransferAction[] Read-only. The zone transfer requests performed by the agent.
agentIP String Read-only. The IP address of the Akamai zone transfer agent.
lastFailureTimestamp String Read-only. The time at which this agent’s most recent failed zone transfer occurred.

ZoneTransferAction

A list of actions performed by Akamai zone transfer agents.

Download schema: zone-transfer-action.json

ZoneTransferAction members

Member Type Required Description
ZoneTransferAction: A list of actions performed by Akamai zone transfer agents.
actionType String Read-only. The type of action that was performed. SOA indicates that the agent tried to fetch the SOA record for this zone. XFR indicates that the agent attempted to perform a full zone transfer.
lastFailureTimestamp String Read-only. If present, the time at which the most recent failed action was taken.
lastSuccessSerial String Read-only. If present, the SOA serial of the zone file at the time of the most recent successful retrieval.
lastSuccessTimestamp String Read-only. If present, the time at which the most recent successful action was taken.
messages ZoneTransferAction.messages[] Read-only. A list of error messages logged by the zone transfer agents. May contain messages from previous, that is not the most recent, actions.
ZoneTransferAction.messages[]: A list of error messages logged by the zone transfer agents. May contain messages from previous, that is not the most recent, actions.
errorCode String Read-only. A short identifier for the problem. See the table below for values.
timestamp String Read-only. The time at which the error occurred.
tokens Array Read-only. Additional information about the problem. If you need to decipher this data, see the table below.

Action Message ErrorCode values

The errorCode field may contain a number of different values, depending on the action type and the error that occurred.

Any uppercase error codes indicate a protocol error during the conversation between Akamai’s zone transfer agent and your master nameserver. You may need to fix the configuration of your nameserver, or there may be another problem. Contact Akamai Support for help identifying the issue.

Examples:

AXFR_FAILED, AXFR_NO_SOA, BADIP, BADDOMAIN, BAD_MASTER_IP, BADRCODE, BADVERS, FORMERR, NXDOMAIN, NODATA, NOTAUTH, NOTIMP, NOTZONE, REFUSED, QUERYFAILED, QUERYNOSOA, SERVFAIL, YXDOMAIN, YXRRSET

Other error codes include:

Value Description
apex_ds The zone file contained a DS record at the apex, which is not allowed.
apex_ns_missing The zone file did not contain an NS record at the apex, which is required.
cname_and_other_data The zone file contained both a CNAME and another record for the same label. A label with a CNAME record can not have any other records.
connection_refused The connection to the master nameserver was refused.
connection_reset The connection to the master nameserver was reset.
eof An unexpected end-of-file indication was received from the master nameserver.
internal_error An unspecified error occurred.
no_ns_records See apex_ns_missing
non_authoritative The master nameserver responded with a non-authoritative response. Masters must be authoritative or the nameserver can not transfer zones from them.
nsec3iterations Too many NSEC3 iterations were used.
nsec3required The zone file contained records that have been presigned with DNSSEC, but no NSEC3 records were found.
old_serial The SOA serial number retrieved from the master nameserver is older than the version on record.
soa_query_failed The SOA query failed for an unspecified reason.
presigned_dnssec_not_allowed The zone file contained records that have been presigned with DNSSEC, but you are not currently allowed to sign your own records. The tokens field will contain one or more of the following values indicating the missing permissions: not_allowed_by_contract if your contract does not have the DNSSEC feature, need_tsig if you have not configured a TSIG key to secure your zone transfers, or tlredir_configured if your zone contains a Top-Level Redirect record.
time_skew The zone transfer could not be secured with a TSIG key because of time skew between our agent and the master nameserver.
timed_out The connection to the master nameserver timed out before it could complete.
too_many_records The zone file fetched from the master nameserver contained too many records. The tokens array will contain three values: a SOA serial, the number of records, and the maximum allowed number of records.
transfer_failed The zone file transfer (AXFR) failed to complete for an unspecified reason.
tsig_error The TSIG key used to secure the zone transfer did not match the key presented by the master nameserver, or otherwise could not be verified.
unreachable The master nameserver could not be reached from our agent.
unsupported_type The zone file contained a record type that Akamai does not support. The tokens array will contain two values: a SOA serial number, and the offending record type.

The first value of the tokens array, if it is present, is the SOA serial of the zone file that was fetched from the master nameserver. If no SOA serial is available, this value may appear as -1.

RecordSet

A set of DNS records belonging to a particular DNS name.

Download schema: recordset.json

Sample Record Set:

{
    "name": "www.example.com",
    "type": "A",
    "ttl": 300,
    "rdata": [
        "10.0.0.2",
        "10.0.0.3"
    ]
}

RecordSet members

Member Type Required Description
RecordSet: A set of DNS records belonging to a particular DNS name.
name String The DNS name of this record.
rdata Array An array of data strings, representing multiple records within a set. The format of the rdata strings are dependent on the type of this record.
ttl Integer The number of seconds that this record should live in a resolver’s cache before being refetched.
type String The record type.

Encoding Special Characters in RDATA

When passing record set data into the API via a JSON blob, remember to escape quotes and backslashes if you want them to be taken literally.

As an example, TXT records use an encoding scheme for characters outside the printable US-ASCII range (32–126). If you wish to encode “é” in a TXT record, you represent it as a quoted string containing an escaped decimal: “\233”. However, in order to pass that value in via JSON, you must escape the quotes and the backslash, like so:

{
 “name”: “example.com”,
 “type”: “TXT”,
 “ttl”: 1600,
 “rdata”: [ “\”\\233\"" ]
}

RecordChange

A modification of a record set inside a change list.

Download schema: changelist-recordset-get.json, changelist-recordset-patch.json

Sample PATCH body:

{
    "op": "ADD",
    "name": "ftp.example.com",
    "type": "A",
    "ttl": 100,
    "rdata": [
        "10.0.0.1"
    ]
}

Sample GET response:

{
    "name": "www.example.com",
    "type": "A",
    "ttl": 300,
    "state": "PRISTINE",
    "rdata": [
        "10.0.0.2",
        "10.0.0.3"
    ]
}

RecordChange members

Member Type GET PATCH Description
RecordChange: A modification of a record set inside a change list.
name String The DNS name of this record.
rdata Array An array of data strings, representing multiple records within a set. The format of the rdata strings are dependent on the type of this record. Not used when PATCHing a DELETE operation.
recordChanges RecordChange.recordChanges[] A modification of a record set inside a change list.
state Enumeration Read-only. The state of this record in the change list. A PRISTINE record has not been changed; otherwise, it has been ADDED, EDITED, or DELETED.
ttl Integer The number of seconds that this record should live in a resolver’s cache before being refetched. Not used when PATCHing a DELETE operation.
type String The record type.
RecordChange.recordChanges[]: A modification of a record set inside a change list.
name String The DNS name of this record.
op Enumeration The requested operation. You can ADD, DELETE, or EDIT a record set.
rdata Array An array of data strings, representing multiple records within a set. The format of the rdata strings are dependent on the type of this record. Not used when PATCHing a DELETE operation.
ttl Integer The number of seconds that this record should live in a resolver’s cache before being refetched. Not used when PATCHing a DELETE operation.
type String The record type.

TsigKey

A TSIG key.

Download schema: tsigkey-get.json, tsigkey-post.json

Sample GET response:

{
    "name": "example.com.akamai.com.",
    "algorithm": "hmac-sha512",
    "secret": "Ok1qR5IW1ajVka5cHPEJQIXfLyx5V3PSkFBROAzOn21JumDq6nIpoj6H8rfj5Uo+Ok55ZWQ0Wgrf302fDscHLw==",
    "zonesCount": 7
}

Sample POST body:

{
    "name": "example.com.akamai.com.",
    "algorithm": "hmac-sha512",
    "secret": "Ok1qR5IW1ajVka5cHPEJQIXfLyx5V3PSkFBROAzOn21JumDq6nIpoj6H8rfj5Uo+Ok55ZWQ0Wgrf302fDscHLw=="
}

TsigKey members

Member Type GET POST Description
TsigKey: A TSIG key.
algorithm Enumeration The algorithm used to encode the TSIG key’s secret data. The list of supported values can be retrieved here.
name String The name of the TSIG key. This name must be unique across all of Akamai’s customers. Since the key name is treated like a DNS name, the value will be lower-cased and any trailing dot will be removed by the server.
secret String A Base64-encoded string of data. When decoded, it must contain the correct number of bits for the chosen algorithm. If the input is not correctly padded, padding will be applied by the server.
zonesCount Integer Read-only. The number of zones that reference this key.

TsigKeyBulkUpdate

A TSIG key, and a list of zones.

Download schema: tsigkey-bulk-post.json

Sample POST body:

{
    "zones": [
        "brook.com",
        "river.com"
    ],
    "key": {
        "name": "brook.com.akamai.com.",
        "algorithm": "hmac-sha512",
        "secret": "Ok1qR5IW1ajVka5cHPEJQIXfLyx5V3PSkFBROAzOn21JumDq6nIpoj6H8rfj5Uo+Ok55ZWQ0Wgrf302fDscHLw=="
    }
}

TsigKeyBulkUpdate members

Member Type Required Description
TsigKeyBulkUpdate: A TSIG key, and a list of zones.
key TsigKey The TSIG key.
zones Array A list of names of zones that should use the key.

ChangeList

Metadata about a change list, including the particular version of a zone that the change list was based off when it was created.

Download schema: changelist.json

Sample GET response:

{
    "zone": "example.com",
    "changeTag": "476754f4-d605-479f-853b-db854d7254fa",
    "zoneVersionId": "1d9c887c-49bb-4382-87a6-d1bf690aa58f",
    "lastModifiedDate": "2017-02-01T12:00:12.524Z",
    "stale": false
}

ChangeList members

Member Type Required Description
ChangeList: Metadata about a change list, including the particular version of a zone that the change list was based off when it was created.
changeTag String Read-only. An ETag for this change list.
lastModifiedDate String Read-only. An ISO–8601 date indicating when the change list was last modified.
stale Boolean Read-only. If the parent version is not current, this change list is stale.
zone String Read-only. The name of the zone.
zoneVersionId String Read-only. The zone version identifier for the parent version of this change list.

DiffReport

A report on the difference between two zone versions or a version and a change list.

Download schema: diff-report.json

Sample GET response:

{
    "metadata": {
        "fromVersionId": "9a274847-11b6-4589-b445-33c2de5b1747",
        "toVersionId": "a41df66e-fd52-4da6-b963-c92d3f7db4d3",
        "fromVersionLastModifiedDate": "2016-12-25T00:00:00Z",
        "toVersionLastModifiedDate": "2016-12-25T00:00:00Z"
    },
    "diffs": {
        "settingsDiffs": [
            {
                "fieldName": "comment",
                "operation": "EDIT",
                "fromValue": "old comment",
                "toValue": "new comment"
            }
        ],
        "recordSetDiffs": [
            {
                "name": "www.example.com",
                "type": "A",
                "operation": "DELETE",
                "fromValue": {
                    "ttl": 100,
                    "rdata": [
                        "10.0.0.1"
                    ]
                }
            }
        ]
    }
}

DiffReport members

Member Type Required Description
DiffReport: A report on the difference between two zone versions or a version and a change list.
diffs DiffReport.diffs Collections of differences between the two versions.
metadata DiffReport.metadata Metadata about this diff report, describing the versions being diffed.
DiffReport.diffs: Collections of differences between the two versions.
recordSetDiffs DiffItem[] A collection of record sets that have changed between two versions.
settingsDiffs DiffItem[] A collection of settings fields that have changed between two versions.
DiffReport.metadata: Metadata about this diff report, describing the versions being diffed.
fromVersionId String The version ID of the base version.
fromVersionLastModifiedDate String The date that the base version was last modified.
toVersionId String The version ID of the new version or change list.
toVersionLastModifiedDate String The date that the new version of change list was last modified.

DiffItem

The difference in a settings value between two versions.

Download schema: diff-setting.json, diff-recordset.json

Sample Settings diff:

{
    "fieldName": "comment",
    "operation": "EDIT",
    "fromValue": "old comment",
    "toValue": "new comment"
}

Sample Record Set diff:

{
    "name": "www.example.com",
    "type": "A",
    "operation": "DELETE",
    "fromValue": {
        "ttl": 100,
        "rdata": [
            "10.0.0.1"
        ]
    }
}

DiffItem members

Member Type Settings Record Set Description
DiffItem: The difference in a settings value between two versions.
fieldName String The name of the settings value that changed.
fromValue Object, Boolean, Integer, Null, String The prior value of the settings field or record set. This may be any type of data, depending on the field that changed. The value is not present for an ADD difference.
name String The name of the record set that changed.
operation Enumeration The type of difference. An ADD difference contains the toValue and a DELETE difference contains a fromValue. An EDIT difference contains both fields.
toValue Object, Boolean, Integer, Null, String The new value of the settings field or record set. This may be any type of data, depending on the field that changed. The value is not present for a DELETE difference.
type String The type of the record set that changed.

Authorities

Akamai assigns a unique set of authoritative nameservers for each contract. These authorities should be used as the NS (nameserver) records on all zones belonging to this contract.

Download schema: authorities-get.json

Sample array element:

{
    "contractId": "7-8YYYYY",
    "authorities": [
        "a1-112.akam.net.",
        "a4-67.akam.net.",
        "a14-66.akam.net.",
        "a16-65.akam.net.",
        "a9-66.akam.net.",
        "a7-67.akam.net."
    ]
}

Authorities members

Member Type Required Description
Authorities: Akamai assigns a unique set of authoritative nameservers for each contract. These authorities should be used as the NS (nameserver) records on all zones belonging to this contract.
authorities Array A list of Akamai authoritative nameservers for this contract.
contractId String The contract ID.

Contract

Information about a customer contract and associated permissions.

Download schema: contract-get.json

Sample array element:

{
    "contractId": "1-1ABCDE",
    "contractName": "Acme Inc",
    "contractTypeName": "DIRECT_CUSTOMER",
    "zoneCount": 92,
    "maximumZones": 5000,
    "features": [
        "PRIMARY_ZONES",
        "ALIAS_ZONES",
        "ZONE_APEX_MAPPING",
        "FORCE_DELETE"
    ],
    "permissions": [
        "READ",
        "WRITE",
        "ADD",
        "DELETE"
    ]
}

Contract members

Member Type Required Description
Contract: Information about a customer contract and associated permissions.
contractId String The ID of the contract.
contractName String The name of the customer associated with this contract.
contractTypeName String An internal description of the contract type.
features Array FastDNS features that the user is allowed to use. See the table below.
maximumZones Integer The maximum number of zones the user is able to create on this contract.
permissions Array FastDNS permissions that the user has on this contract. See the table below for values.
zoneCount Integer The number of zones that currently exist on this contract.

Contract.features values

Value Description
ALIAS_ZONES The user may create ALIAS zones on this contract.
DNSSEC_SELF_SIGN The user may add their own DNSSEC records to zones on this contract.
DNSSEC_SIGN_AND_SERVE The user may enable Sign&Serve (automatic DNSSEC) for zones on this contract.
FORCE_DELETE The user may use the “Force delete” function.
PRIMARY_ZONES The user may create PRIMARY zones on this contract.
SECONDARY_ZONES The user may create SECONDARY zones on this contract.
ZONE_APEX_MAPPING The user may enable the Zone Apex Mapping feature on zones on this contract.

Contract.permissions values

Value Description
READ The user is allowed to view zones on this contract.
WRITE The user is allowed to edit zones on this contract.
ADD The user is allowed to create zones on this contract.
DELETE The user is allowed to delete zones on this contract.

EdgeHostname

For purposes of the Fast DNS API, edge hosts are used as the target of a Zone Apex Mapping or Top-Level Redirect record. Only hosts where supportsZoneApexMapping is true should be used for this purpose.

Download schema: edge-hostname-get.json

Sample array element:

{
    "edgeHostname": "example1.com.edgesuite.net",
    "supportsZoneApexMapping": false
}

EdgeHostname members

Member Type Required Description
EdgeHostname: For purposes of the Fast DNS API, edge hosts are used as the target of a Zone Apex Mapping or Top-Level Redirect record. Only hosts where supportsZoneApexMapping is true should be used for this purpose.
edgeHostname String The DNS name of this edge host.
supportsZoneApexMapping Boolean If true, this edge host may be used as the target of a Zone Apex Mapping record.

Group

Information about a customer group and associated permissions.

Download schema: group-get.json

Group members

Member Type Required Description
Group: Information about a customer group and associated permissions.
contractIds Array The list of contract IDs that this group contains.
groupId Integer The group ID.
groupName String The name of this group.
permissions Array Permissions that the current user has on this group. Includes ADD (the ability to add ), DELETE, READ, and WRITE.

Errors

This section provides details on the data object that reflects the API’s common response to error cases, and lists the API’s range of response status codes for both error and success cases.

Error responses

When the API encounters a problem, it responds with an object that adheres to the HTTP Problem Details standard.

{
    "detail": "You don't have permission to access that resource.",
    "instance": "89a96aa3-55ea-4a2b-94cc-d405b59d11e8",
    "status": 403,
    "title": "Access denied",
    "type": "https://problems.luna.akamaiapis.net/config-dns/forbidden"
}

HTTP status codes

This section lists the full range of response codes the API may generate.

Code Description
200 The operation was successful.
201 Resource successfully created.
204 The operation was successful, but no data has been returned.
400 Bad Request.
403 Access is forbidden.
404 Resource not found.
405 Method not supported.
406 Not Acceptable.
409 The request is not allowed because of a conflict with the current state of the resource.
415 Unsupported media type.
422 The request body contains an error that prevented processing.
500 Internal server error.

Last modified: 5/9/2019