Table Of Contents

DNS Record

Interface of DNSRecord Type

The “DNSRecord” type represents the interface for a resource record (RR) of a domain name as defined in http://tools.ietf.org/html/rfc1035, but without destination (RDATA) and type (TYPE). A DNS record requires a DNS zone (Hosted Domain) and must have a source and TTL. It must be possible to activate/deactivate an existing DNS record by defining the “RRState” property. The RR must be added to/removed from the hosted domain during this operation.

DNSRecord type schema: download

   {
      "apsVersion": "2.0",

      "name": "DNSRecord",

      "id": "http://aps-standard.org/types/dns/record/1.0",

      "properties": {
         "source":  { "type": "string"  },        
         "TTL":     { "type": "integer" },
         "RRState": { "type": "string", "required": true }
      },
      
      "relations": {
         "zone": {
            "type": "http://aps-standard.org/types/dns/zone/1.0",
            "required": true
         },
         "replaces": {
            "type": "http://aps-standard.org/types/dns/record/1.0",
            "collection": true
         },
         "replacedBy": {
            "type": "http://aps-standard.org/types/dns/record/1.0",
            "collection": true
         }
      }
   }

The properties have to be filled with the following data:

Property

Description

RRState

State of a RR.

  • active: the RR exists in the DNS zone

  • inactive: the RR does not exist in the DNS zone

  • any other state

RRs in active and inactive states must be displayed to the user.

source

Name of the record. It must be compliant with NAME from http://tools.ietf.org/html/rfc1035.

Record Replacement

During provisioning, a resource may replace existing RR(s) if it specifies link(s) to existing RR(s) in a “replaces” relation. In this case, creation of the resource must switch the linked RR(s) to a “RRstate” different from “active”, a back link for the replaced RR(s) must be specified in a “replacedBy” relation. One RR may be linked to another RR using a “replaces” relation after provisioning. In this case, creation of the link must switch the linked RR to a “RRstate” different from “active” similarly to the provisioning case. One RR could be replaced by several RRs. When the replaced RR is unlinked from the last RR replacing it, the replaced RR must be switched back to “RRstate” = “active”.

Several types of RRs are defined below.

A Record

A resource of the “DNSRecordA” type represents the “A” type of RR.

To prevent conflicts of DNS records, existence of multiple resources of the “DNSRecordA” type with the same “source” property and “RRstate” = “active” is prohibited, unless they are all required by a single resource.

DNSRecordA type schema: download

    {
      "apsVersion": "2.0",

      "name": "DNSRecordA",

      "id": "http://aps-standard.org/types/dns/record/a/1.0",
      "implements": [ "http://aps-standard.org/types/dns/record/1.0" ],
      
      "properties": {
         "address": {
            "type": "string",
            "format": "ipv4",
            "required": true
         }
      }
   }

The “address” property must be compliant with http://tools.ietf.org/html/rfc1035 for the RR type.

AAAA Record

A resource of the “DNSRecordAAAA” type represents the “AAAA” type of RR.

To prevent conflicts of DNS records, existence of multiple resources of the “DNSRecordAAAA” type with the same “source” property and “RRstate” = “active” is prohibited, unless they are all required by a single resource.

DNSRecordAAAA type schema: download

    {
      "apsVersion": "2.0",

      "name": "DNSRecordAAAA",

      "id": "http://aps-standard.org/types/dns/record/aaaa/1.0",
      "implements": [ "http://aps-standard.org/types/dns/record/1.0" ],
      
      "properties": {
         "address": {
            "type": "string",
            "format": "ipv6",
            "required": true
         }
      }
   }

The “address” property must be compliant with http://tools.ietf.org/html/rfc3596 for the RR type.

MX Record

A resource of the “DNSRecordMX” type represents the “MX” type of RR and contains its priority.

To prevent conflicts of DNS records, existence of multiple resources of the “DNSRecordMX” type with the same “source” property and “RRstate” = “active” is prohibited, unless they are all required by a single resource.

DNSRecordMX type schema: download

   {
      "apsVersion": "2.0",

      "name": "DNSRecordMX",

      "id": "http://aps-standard.org/types/dns/record/mx/1.0",
      "implements": [ "http://aps-standard.org/types/dns/record/1.0" ],

      "properties": {
         "priority": {
            "type": "integer",
            "required": true
         },
         "exchange": {
            "type": "string",
            "format": "host-name",
            "required": true
         }
      }
   }

The properties have to be filled with the following data:

Property

Description

exchange

Host of the mail exchange according to http://tools.ietf.org/html/rfc1035 for MX RR type.

CNAME Record

A resource of the “DNSRecordCNAME” type represents the “CNAME” type of RR.

DNSRecordCNAME type schema: download

   {
      "apsVersion": "2.0",

      "name": "DNSRecordCNAME",

      "id": "http://aps-standard.org/types/dns/record/cname/1.1",
      "implements": [ "http://aps-standard.org/types/dns/record/1.0" ],
      
      "properties": {
         "cname": {
            "type": "string",
            "format": "domain-name",
            "required": true
         }
      }
   }

The “cname” property must be compliant with http://tools.ietf.org/html/rfc1035 for the RR type.

NS Record

A resource of the “DNSRecordNS” type represents the “NS” type of RR.

DNSRecordNS type schema: download

   {
      "apsVersion": "2.0",

      "name": "DNSRecordNS",

      "id": "http://aps-standard.org/types/dns/record/ns/1.0",
      "implements": [ "http://aps-standard.org/types/dns/record/1.0" ],
      
      "properties": {
         "nsdname": {
            "type": "string",
            "format": "host-name",
            "required": true
         }
      }
   }

The “nsdname” property must be compliant with http://tools.ietf.org/html/rfc1035 for the RR type.

TXT Record

A resource of the “DNSRecordTXT” type represents the “TXT” type of RR.

DNSRecordTXT type schema: download

   {
      "apsVersion": "2.0",

      "name": "DNSRecordTXT",

      "id": "http://aps-standard.org/types/dns/record/txt/1.0",
      "implements": [ "http://aps-standard.org/types/dns/record/1.0" ],
      
      "properties": {
         "txt_data": {
            "type": "string",
            "required": true
         }
      }
   }

SRV Record

A resource of the “DNSRecordSRV” type represents the “SRV” type of RR. Its “RR type” property must be “SRV”. The “source” property must contain a service and protocol according to http://tools.ietf.org/html/rfc2782.

It must be allowed to create a resource which decidedly means absence of a service (according to http://tools.ietf.org/html/rfc2782). In this case the “priority”, “port”, “weight” properties must contain zero and the “target” property must contain “.”.

To prevent conflicts of DNS records, existence of multiple resources of the “DNSRecordSRV” type with the same “source” property and “RRstate” = “active” is prohibited, unless they are all required by a single resource.

DNSRecordSRV type schema: download

   {
      "apsVersion": "2.0",

      "name": "DNSRecordSRV",

      "id": "http://aps-standard.org/types/dns/record/srv/1.0",
      "implements": [ "http://aps-standard.org/types/dns/record/1.0" ],
       
      "properties": {
         "priority": {
            "type": "integer",
            "required": true
         },
         
         "weight": {
            "type": "integer",
            "required": true
         },
         "port": {
            "type": "integer",
            "required": true
         },
         "target": {
            "type": "string",
            "required": true
         }
      }
   }