Jump to: navigation, search

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

(List Recordsets (GET))
(List Recordsets (GET))
Line 47: Line 47:
 
When no id is specified all recordsets for the specified zone are returned.  
 
When no id is specified all recordsets for the specified zone are returned.  
  
"Response"
+
'''Response'''
 
   {
 
   {
 
     "recordset" : [
 
     "recordset" : [

Revision as of 19:54, 29 April 2014

Contents

   1 Overview



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.

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"
         }
       ],
       "links" : {
           "self" : "http://192.168.33.8:9001/v2/zones/766d7605-4c48-41fa-a9de-76692ed8051c/recordsets/"
       }
 }