This work is licensed under a Creative Commons Attribution 3.0 Unported License.

Zone and Record TotalCount

Problem description

When a user makes a request for a list of zones or records, provide the total count of zones or records that match the given query. The count will ideally be provided when a user makes a request for something like /zones or /records (to limit the need to make multiple queries).

Proposed change

API Changes

This change would not add any new endpoints, but it would modify the data presented by some existing endpoints.

The following examples demonstrate the total_entries value for a generic collection of “resources”. After implementation, this feature will be supported by collections of zones and recordsets.

GET /v2/resources

Example Request:

GET /v2/resources HTTP/1.1
Accept: application/json
Content-Type: application/json

Example Response:

HTTP/1.1 200 OK
Content-Type: application/json

  "resources": [{
    "id": "fdd7b0dc-52a3-491e-829f-41d18e1d3ada",
    "created_at": "2014-06-23T18:39:32.000000",
    "....": "...."
  }, {
    "id": "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3",
    "created_at": "2014-07-08T20:28:19.000000",
    "....": "...."
  }, {
    "id": "460f7531-e381-4773-aff3-06a12fad096d",
    "created_at": "2014-06-04t19:09:17.000000",
    "....": "...."
  }, {
    "id": "40ced622-fc70-498d-9f28-3d3021b19685",
    "created_at": "2014-07-08T16:47:32.000000",
    "....": "...."
  "links": {
    "self": ""
  "meta": {
    "total_entries": 4

Central Changes

A PagedListObjectMixin class will be added that will support the metadata associated with list pagination. This class will be added as a superclass of the ZonesList and RecordsList classes.

Storage Changes

Any calls to find_domains will also internally call count_domains and add this count to the DomainsList object that is returned.

Any calls to find_records will also internally call count_records and add this count to the RecordsList object that is returned.

Other Changes






Primary assignee: jordan-cazamias


Target Milestone for completion:

Work Items

  • Agree on spec for API formatting
  • Implement changes