Designate/Blueprints/Recordset Record API Redesign
Contents
1 Overview
Contents
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" } }
}