Jump to: navigation, search

Difference between revisions of "Designate/Blueprints/Recordset Record API Redesign"

(List Recordsets (GET))
(List Recordsets (GET))
Line 64: Line 64:
 
             "192.0.1.2",
 
             "192.0.1.2",
 
             "192.0.1.3"
 
             "192.0.1.3"
           }
+
           },
 +
        {
 +
          "created_at" : "2014-04-29T22:04:41.000000",
 +
          "version" : 1,
 +
          "zone_id":"766d7605-4c48-41fa-a9de-76692ed8051c",
 +
          "links":{
 +
            "self":"http://192.168.33.8:9001/v2/zones/766d7605-4c48-41fa-a9de-76692ed8051c/recordsets/e862ddb2-58ee-431a-a3b5-6881a5e26465"
 +
          },
 +
            "ttl":null,
 +
            "updated_at":null,
 +
            "description":null,
 +
            "type":"CNAME",
 +
            "id":"e862ddb2-58ee-431a-a3b5-6881a5e26465",
 +
            "name":"www.gingerbread.com.",
 +
            "data":"gingerbread.com."
 +
            }
 
         ],
 
         ],
 
         "links" : {
 
         "links" : {

Revision as of 22:11, 29 April 2014

WIP

Overview

Gerrit Patch []
Launchpad Blueprint [1]

This blueprint proposes to eliminate the Records resource and on keep the RecordSets resource.

The API for recordsets and records is too complicated. Currently, a user is forced to create a recordset before creating a record. This leads to a confusing user experience.Users will create, update and delete recordsets. When the user creates a recordset the code will determine if it should be a new recordset or a record under an existing recordset. However, the record will no longer be accessible as a separate resource; only as part of the recordset.

API Resource

Current API

/zones/zone{id}/recordsets/recordset{id}/records/record{id}

New API

/zones/zone{id}/recordsets/recordset{id}

API Details: Create / List / Patch / Put / Delete Recordset

Verb Resource Description
GET /zones/zone{id}/recordsets Returns all recordsets for a zone
GET /zones/zone{id}/recordsets/recordset{id} Returns a specific recordset for a zone
POST /zones/zone{id}/recordsets Creates a new recordset or adds a new record to an existing recordset
PUT /zones/zone{id}/recordsets/recordset{id} Replaces all records in a recordset with the records specified in the message body
PATCH /zones/zone{id}/recordsets/recordset{id} Adds the records specified in the message body to a recordset
DELETE /zones/zone{id}/recordsets/recordset{id} Delete the recordset and all records associated with it.

List Recordsets (GET)

When no id is specified all recordsets for the specified zone are returned. No body is provided in the request.

Response

 {
   "recordset" : [
     {
       "created_at" : "2014-04-29T19:34:21.819615",
       "version" : 1,
       "zone_id" : "766d7605-4c48-41fa-a9de-76692ed8051c",
       "links" : {
           "self" : "http://192.168.33.8:9001/v2/zones/766d7605-4c48-41fa-a9de-76692ed8051c/recordsets/06c3a2de-4e23-4143-98ab-6bf6d41ded26"
       },
       "ttl" : 3600,
       "updated_at" : null,
       "description" : null,
       "type" : "A",
       "id" : "06c3a2de-4e23-4143-98ab-6bf6d41ded26",
       "name" : "gingerbread.com.",
       "data" : {
           "192.0.1.2",
           "192.0.1.3"
         },
       {
         "created_at" : "2014-04-29T22:04:41.000000",
         "version" : 1,
         "zone_id":"766d7605-4c48-41fa-a9de-76692ed8051c",
         "links":{
           "self":"http://192.168.33.8:9001/v2/zones/766d7605-4c48-41fa-a9de-76692ed8051c/recordsets/e862ddb2-58ee-431a-a3b5-6881a5e26465"
          },
           "ttl":null,
           "updated_at":null,
           "description":null,
           "type":"CNAME",
           "id":"e862ddb2-58ee-431a-a3b5-6881a5e26465",
           "name":"www.gingerbread.com.",
           "data":"gingerbread.com."
           }
       ],
       "links" : {
           "self" : "http://192.168.33.8:9001/v2/zones/766d7605-4c48-41fa-a9de-76692ed8051c/recordsets/"
       }
 }