]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Sort endpoints by name. NFCI
authorMiod Vallat <miod.vallat@powerdns.com>
Fri, 12 Jun 2026 13:14:22 +0000 (15:14 +0200)
committerMiod Vallat <miod.vallat@powerdns.com>
Fri, 12 Jun 2026 13:14:22 +0000 (15:14 +0200)
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
docs/http-api/openapi/authoritative-api-openapi.yaml

index da27b40966aec3f141c8e2fa4c21ca836a526423..a1e8ff4df6ea2253a69b80a208fd51270721f454 100644 (file)
@@ -60,251 +60,90 @@ paths:
         default:
           $ref: "#/components/responses/Error"
 
-  "/servers/{server_id}/cache/flush":
-    parameters:
-      - $ref: "#/components/parameters/server_id"
-    put:
-      summary: Flush a cache-entry by name
-      operationId: cacheFlushByName
-      tags:
-        - servers
-      parameters:
-        - name: domain
-          in: query
-          required: true
-          description: The domain name to flush from the cache
-          schema:
-            type: string
-      responses:
-        "200":
-          description: Flush successful
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/CacheFlushResult"
-        default:
-          $ref: "#/components/responses/Error"
-
-  "/servers/{server_id}/zones":
+  "/servers/{server_id}/autoprimaries":
     parameters:
       - $ref: "#/components/parameters/server_id"
     get:
-      summary: List all Zones in a server
-      operationId: listZones
+      summary: "Get a list of autoprimaries"
+      operationId: getAutoprimaries
       tags:
-        - zones
-      parameters:
-        - name: zone
-          in: query
-          required: false
-          schema:
-            type: string
-          description: |
-            When set to the name of a zone, only this zone is returned.
-            If no zone with that name exists, the response is an empty array.
-            This can e.g. be used to check if a zone exists in the database without having to guess/encode the zone's id or to check if a zone exists.
-        - name: dnssec
-          in: query
-          required: false
-          schema:
-            type: boolean
-            default: true
-          description: "“true” (default) or “false”, whether to include the “dnssec” and “edited_serial” fields in the Zone objects. Setting this to ”false” will make the query a lot faster."
+        - autoprimary
       responses:
         "200":
-          description: An array of Zones
+          description: OK.
           content:
             application/json:
               schema:
-                type: array
-                items:
-                  $ref: "#/components/schemas/Zone"
+                $ref: "#/components/schemas/Autoprimary"
         default:
           $ref: "#/components/responses/Error"
     post:
-      summary: Creates a new domain, returns the Zone on creation.
-      operationId: createZone
+      summary: "Add an autoprimary"
+      description: "This methods add a new autoprimary server."
+      operationId: createAutoprimary
       tags:
-        - zones
-      parameters:
-        - name: rrsets
-          in: query
-          description: "“true” (default) or “false”, whether to include the “rrsets” in the response Zone object."
-          schema:
-            type: boolean
-            default: true
+        - autoprimary
       requestBody:
         required: true
-        description: The zone struct to patch with
+        description: autoprimary entry to add
         content:
           application/json:
             schema:
-              $ref: "#/components/schemas/Zone"
+              $ref: "#/components/schemas/Autoprimary"
       responses:
         "201":
-          description: A zone
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Zone"
+          description: Created
         default:
           $ref: "#/components/responses/Error"
 
-  "/servers/{server_id}/zones/{zone_id}":
+  "/servers/{server_id}/autoprimaries/{ip}/{nameserver}":
     parameters:
       - $ref: "#/components/parameters/server_id"
-      - $ref: "#/components/parameters/zone_id"
-    get:
-      summary: zone managed by a server
-      operationId: listZone
-      tags:
-        - zones
-      parameters:
-        - name: rrsets
-          in: query
-          description: "“true” (default) or “false”, whether to include the “rrsets” in the response Zone object."
-          schema:
-            type: boolean
-            default: true
-        - name: rrset_name
-          in: query
-          description: Limit output to RRsets for this name.
-          schema:
-            type: string
-        - name: rrset_type
-          in: query
-          description: Limit output to the RRset of this type. Can only be used together with rrset_name.
-          schema:
-            type: string
-        - name: include_disabled
-          in: query
-          description: "“true” (default) or “false”, whether to include disabled RRsets in the response."
-          schema:
-            type: boolean
-      responses:
-        "200":
-          description: A Zone
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Zone"
-        default:
-          $ref: "#/components/responses/Error"
-    delete:
-      summary: Deletes this zone, all attached metadata and rrsets.
-      operationId: deleteZone
-      tags:
-        - zones
-      responses:
-        "204":
-          description: "Returns 204 No Content on success."
-        default:
-          $ref: "#/components/responses/Error"
-    patch:
-      summary: "Creates/modifies/deletes RRsets present in the payload and their comments. Returns 204 No Content on success."
-      operationId: patchZone
-      tags:
-        - zones
-      requestBody:
+      - name: ip
+        in: path
         required: true
-        description: The zone struct to patch with
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/Zone"
-      responses:
-        "204":
-          description: "Returns 204 No Content on success."
-        default:
-          $ref: "#/components/responses/Error"
-
-    put:
-      summary: Modifies basic zone data.
-      description: "The only fields in the zone structure which can be modified are: kind, masters, catalog, account, soa_edit, soa_edit_api, api_rectify, dnssec, and nsec3param. All other fields are ignored."
-      operationId: putZone
-      tags:
-        - zones
-      requestBody:
+        description: "IP address of autoprimary"
+        schema:
+          type: string
+      - name: nameserver
+        in: path
         required: true
-        description: The zone struct to patch with
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/Zone"
-      responses:
-        "204":
-          description: "Returns 204 No Content on success."
-        default:
-          $ref: "#/components/responses/Error"
-
-  "/servers/{server_id}/zones/{zone_id}/notify":
-    parameters:
-      - $ref: "#/components/parameters/server_id"
-      - $ref: "#/components/parameters/zone_id"
-    put:
-      summary: Send a DNS NOTIFY to all slaves.
-      description: "Fails when zone kind is not Master or Slave, or master and slave are disabled in the configuration. Only works for Slave if renotify is on. Clients MUST NOT send a body."
-      operationId: notifyZone
-      tags:
-        - zones
-      responses:
-        "200":
-          description: OK
-        default:
-          $ref: "#/components/responses/Error"
-
-  "/servers/{server_id}/zones/{zone_id}/axfr-retrieve":
-    parameters:
-      - $ref: "#/components/parameters/server_id"
-      - $ref: "#/components/parameters/zone_id"
-    put:
-      summary: Retrieve slave zone from its master.
-      description: "Fails when zone kind is not Slave, or slave is disabled in the configuration. Clients MUST NOT send a body."
-      operationId: axfrRetrieveZone
-      tags:
-        - zones
-      responses:
-        "200":
-          description: OK
-        default:
-          $ref: "#/components/responses/Error"
-
-  "/servers/{server_id}/zones/{zone_id}/export":
-    parameters:
-      - $ref: "#/components/parameters/server_id"
-      - $ref: "#/components/parameters/zone_id"
-    get:
-      summary: "Returns the zone in AXFR format."
-      operationId: axfrExportZone
+        description: "DNS name of the autoprimary"
+        schema:
+          type: string
+    delete:
+      summary: "Delete the autoprimary entry"
+      operationId: deleteAutoprimary
       tags:
-        - zones
+        - autoprimary
       responses:
-        "200":
-          description: OK
-          content:
-            application/json:
-              schema:
-                type: string
+        "204":
+          description: "OK, key was deleted"
         default:
           $ref: "#/components/responses/Error"
 
-  "/servers/{server_id}/zones/{zone_id}/rectify":
+  "/servers/{server_id}/cache/flush":
     parameters:
       - $ref: "#/components/parameters/server_id"
-      - $ref: "#/components/parameters/zone_id"
     put:
-      summary: "Rectify the zone data."
-      description: "This does not take into account the API-RECTIFY metadata. Fails on slave zones and zones that do not have DNSSEC."
-      operationId: rectifyZone
+      summary: Flush a cache-entry by name
+      operationId: cacheFlushByName
       tags:
-        - zones
+        - servers
+      parameters:
+        - name: domain
+          in: query
+          required: true
+          description: The domain name to flush from the cache
+          schema:
+            type: string
       responses:
         "200":
-          description: OK
+          description: Flush successful
           content:
             application/json:
               schema:
-                type: string
+                $ref: "#/components/schemas/CacheFlushResult"
         default:
           $ref: "#/components/responses/Error"
 
@@ -353,52 +192,74 @@ paths:
         default:
           $ref: "#/components/responses/Error"
 
-  "/servers/{server_id}/statistics":
+  "/servers/{server_id}/networks":
     parameters:
       - $ref: "#/components/parameters/server_id"
     get:
-      summary: "Query statistics."
-      description: "Query PowerDNS internal statistics."
-      operationId: getStats
+      summary: List all registered networks and views in a server
+      operationId: listNetworks
       tags:
-        - stats
-      parameters:
-        - name: statistic
-          in: query
-          required: false
-          schema:
-            type: string
-          description: |
-            When set to the name of a specific statistic, only this value is returned.
-            If no statistic with that name exists, the response has a 422 status and an error message.
-        - name: includerings
-          in: query
-          required: false
-          schema:
-            type: boolean
-            default: true
-          description: "“true” (default) or “false”, whether to include the Ring items, which can contain thousands of log messages or queried domains. Setting this to ”false” may make the response a lot smaller."
+        - networks
       responses:
         "200":
-          description: List of Statistic Items
+          description: An array of networks
           content:
             application/json:
               schema:
-                type: array
-                items:
-                  type: object
-                  discriminator:
-                    propertyName: object_type
-                    mapping:
-                      StatisticItem: "#/components/schemas/StatisticItem"
-                      MapStatisticItem: "#/components/schemas/MapStatisticItem"
-                      RingStatisticItem: "#/components/schemas/RingStatisticItem"
-                  oneOf:
-                    - $ref: "#/components/schemas/StatisticItem"
-                    - $ref: "#/components/schemas/MapStatisticItem"
-                    - $ref: "#/components/schemas/RingStatisticItem"
-        "422":
-          description: "Returned when a non-existing statistic name has been requested. Contains an error message"
+                $ref: "#/components/schemas/Networks"
+        default:
+          $ref: "#/components/responses/Error"
+
+  "/servers/{server_id}/networks/{ip}/{prefixlen}":
+    parameters:
+      - $ref: "#/components/parameters/server_id"
+      - name: ip
+        schema:
+          type: string
+        in: path
+        required: true
+        description: The base address of the network
+      - name: prefixlen
+        schema:
+          type: string
+        in: path
+        required: true
+        description: The length of the network prefix
+    get:
+      summary: Return the view associated to the given network
+      operationId: getNetwork
+      tags:
+        - networks
+      responses:
+        "200":
+          description: A network
+          content:
+            application/json:
+              schema:
+                $ref: "#/components/schemas/Network"
+        default:
+          $ref: "#/components/responses/Error"
+
+    put:
+      summary: Sets the view associated to the given network
+      operationId: setNetwork
+      tags:
+        - networks
+      requestBody:
+        required: true
+        content:
+          application/json:
+            schema:
+              type: object
+              additionalProperties: false
+              properties:
+                view:
+                  type: string
+                  description: The name of the view to use for this network
+
+      responses:
+        "204":
+          description: "Returns 204 No Content on success."
         default:
           $ref: "#/components/responses/Error"
 
@@ -440,182 +301,52 @@ paths:
         default:
           $ref: "#/components/responses/Error"
 
-  "/servers/{server_id}/zones/{zone_id}/metadata":
-    parameters:
-      - $ref: "#/components/parameters/server_id"
-      - $ref: "#/components/parameters/zone_id"
-    get:
-      summary: "Get all the Metadata associated with the zone."
-      operationId: listMetadata
-      tags:
-        - zonemetadata
-      responses:
-        "200":
-          description: List of Metadata objects
-          content:
-            application/json:
-              schema:
-                type: array
-                items:
-                  $ref: "#/components/schemas/Metadata"
-        default:
-          $ref: "#/components/responses/Error"
-    post:
-      summary: "Creates a set of metadata entries"
-      description: "Creates a set of metadata entries of given kind for the zone. Existing metadata entries for the zone with the same kind are not overwritten."
-      operationId: createMetadata
-      tags:
-        - zonemetadata
-
-      requestBody:
-        required: true
-        description: Metadata object with list of values to create
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/Metadata"
-      responses:
-        "204":
-          description: OK
-        default:
-          $ref: "#/components/responses/Error"
-
-  "/servers/{server_id}/zones/{zone_id}/metadata/{metadata_kind}":
-    parameters:
-      - $ref: "#/components/parameters/server_id"
-      - $ref: "#/components/parameters/zone_id"
-      - name: metadata_kind
-        schema:
-          type: string
-        in: path
-        required: true
-        description: The kind of metadata
-    get:
-      summary: "Get the content of a single kind of domain metadata as a Metadata object."
-      operationId: getMetadata
-      tags:
-        - zonemetadata
-      responses:
-        "200":
-          description: Metadata object with list of values
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Metadata"
-        default:
-          $ref: "#/components/responses/Error"
-    put:
-      summary: "Replace the content of a single kind of domain metadata."
-      description: "Creates a set of metadata entries of given kind for the zone. Existing metadata entries for the zone with the same kind are removed."
-      operationId: modifyMetadata
-      tags:
-        - zonemetadata
-      responses:
-        "200":
-          description: Metadata object with list of values
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Metadata"
-        default:
-          $ref: "#/components/responses/Error"
-    delete:
-      summary: "Delete all items of a single kind of domain metadata."
-      operationId: deleteMetadata
-      tags:
-        - zonemetadata
-      responses:
-        "204":
-          description: OK
-        default:
-          $ref: "#/components/responses/Error"
-
-  "/servers/{server_id}/zones/{zone_id}/cryptokeys":
+  "/servers/{server_id}/statistics":
     parameters:
       - $ref: "#/components/parameters/server_id"
-      - $ref: "#/components/parameters/zone_id"
     get:
-      summary: "Get all CryptoKeys for a zone, except the privatekey"
-      operationId: listCryptokeys
+      summary: "Query statistics."
+      description: "Query PowerDNS internal statistics."
+      operationId: getStats
       tags:
-        - zonecryptokey
+        - stats
+      parameters:
+        - name: statistic
+          in: query
+          required: false
+          schema:
+            type: string
+          description: |
+            When set to the name of a specific statistic, only this value is returned.
+            If no statistic with that name exists, the response has a 422 status and an error message.
+        - name: includerings
+          in: query
+          required: false
+          schema:
+            type: boolean
+            default: true
+          description: "“true” (default) or “false”, whether to include the Ring items, which can contain thousands of log messages or queried domains. Setting this to ”false” may make the response a lot smaller."
       responses:
         "200":
-          description: List of Cryptokey objects
+          description: List of Statistic Items
           content:
             application/json:
               schema:
                 type: array
                 items:
-                  $ref: "#/components/schemas/Cryptokey"
-        default:
-          $ref: "#/components/responses/Error"
-    post:
-      summary: "Creates a Cryptokey"
-      description: "This method adds a new key to a zone. The key can either be generated or imported by supplying the content parameter. if content, bits and algo are null, a key will be generated based on the default-ksk-algorithm and default-ksk-size settings for a KSK and the default-zsk-algorithm and default-zsk-size options for a ZSK."
-      operationId: createCryptokey
-      tags:
-        - zonecryptokey
-
-      requestBody:
-        required: true
-        description: Add a Cryptokey
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/Cryptokey"
-      responses:
-        "201":
-          description: Created
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Cryptokey"
-        default:
-          $ref: "#/components/responses/Error"
-
-  "/servers/{server_id}/zones/{zone_id}/cryptokeys/{cryptokey_id}":
-    parameters:
-      - $ref: "#/components/parameters/server_id"
-      - $ref: "#/components/parameters/zone_id"
-      - name: cryptokey_id
-        schema:
-          type: string
-        in: path
-        required: true
-        description: "The id value of the CryptoKey"
-    get:
-      summary: "Returns all data about the CryptoKey, including the privatekey."
-      operationId: getCryptokey
-      tags:
-        - zonecryptokey
-      responses:
-        "200":
-          description: Cryptokey
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Cryptokey"
-        default:
-          $ref: "#/components/responses/Error"
-    put:
-      summary: "This method (de)activates a key from zone_name specified by cryptokey_id"
-      operationId: modifyCryptokey
-      tags:
-        - zonecryptokey
-      responses:
-        "204":
-          description: OK
-        default:
-          $ref: "#/components/responses/Error"
-    delete:
-      summary: "This method deletes a key specified by cryptokey_id."
-      operationId: deleteCryptokey
-      tags:
-        - zonecryptokey
-      responses:
-        "204":
-          description: OK
+                  type: object
+                  discriminator:
+                    propertyName: object_type
+                    mapping:
+                      StatisticItem: "#/components/schemas/StatisticItem"
+                      MapStatisticItem: "#/components/schemas/MapStatisticItem"
+                      RingStatisticItem: "#/components/schemas/RingStatisticItem"
+                  oneOf:
+                    - $ref: "#/components/schemas/StatisticItem"
+                    - $ref: "#/components/schemas/MapStatisticItem"
+                    - $ref: "#/components/schemas/RingStatisticItem"
+        "422":
+          description: "Returned when a non-existing statistic name has been requested. Contains an error message"
         default:
           $ref: "#/components/responses/Error"
 
@@ -727,224 +458,493 @@ paths:
       summary: "Delete the TSIGKey with tsigkey_id"
       operationId: deleteTSIGKey
       tags:
-        - tsigkey
+        - tsigkey
+      responses:
+        "204":
+          description: "OK, key was deleted"
+        default:
+          $ref: "#/components/responses/Error"
+
+  "/servers/{server_id}/views":
+    get:
+      summary: List all views in a server
+      operationId: listViews
+      tags:
+        - views
+      parameters:
+        - $ref: "#/components/parameters/server_id"
+      responses:
+        "200":
+          description: An array of view names
+          content:
+            application/json:
+              schema:
+                $ref: "#/components/schemas/Views"
+        default:
+          $ref: "#/components/responses/Error"
+
+  "/servers/{server_id}/views/{view}":
+    parameters:
+      - $ref: "#/components/parameters/server_id"
+      - $ref: "#/components/parameters/view"
+
+    get:
+      summary: List the contents of a given view
+      operationId: listView
+      tags:
+        - views
+      responses:
+        "200":
+          description: An array of zone names
+          content:
+            application/json:
+              schema:
+                $ref: "#/components/schemas/View"
+        default:
+          $ref: "#/components/responses/Error"
+
+    post:
+      summary: Adds a zone to a given view, creating it if needed
+      operationId: addToView
+      tags:
+        - views
+      requestBody:
+        required: true
+        content:
+          application/json:
+            schema:
+              type: object
+              additionalProperties: false
+              properties:
+                name:
+                  type: string
+                  description: The zone to add to the view
+      responses:
+        "204":
+          description: "Returns 204 No Content on success."
+        default:
+          $ref: "#/components/responses/Error"
+
+  "/servers/{server_id}/views/{view}/{id}":
+    parameters:
+      - $ref: "#/components/parameters/server_id"
+      - $ref: "#/components/parameters/view"
+      - name: id
+        description: The zone to remove from the view
+        required: true
+        in: path
+        schema:
+          type: string
+    delete:
+      summary: Removes the given zone from the given view
+      operationId: deleteFromView
+      tags:
+        - views
+      responses:
+        "204":
+          description: "Returns 204 No Content on success."
+        default:
+          $ref: "#/components/responses/Error"
+
+  "/servers/{server_id}/zones":
+    parameters:
+      - $ref: "#/components/parameters/server_id"
+    get:
+      summary: List all Zones in a server
+      operationId: listZones
+      tags:
+        - zones
+      parameters:
+        - name: zone
+          in: query
+          required: false
+          schema:
+            type: string
+          description: |
+            When set to the name of a zone, only this zone is returned.
+            If no zone with that name exists, the response is an empty array.
+            This can e.g. be used to check if a zone exists in the database without having to guess/encode the zone's id or to check if a zone exists.
+        - name: dnssec
+          in: query
+          required: false
+          schema:
+            type: boolean
+            default: true
+          description: "“true” (default) or “false”, whether to include the “dnssec” and “edited_serial” fields in the Zone objects. Setting this to ”false” will make the query a lot faster."
+      responses:
+        "200":
+          description: An array of Zones
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: "#/components/schemas/Zone"
+        default:
+          $ref: "#/components/responses/Error"
+    post:
+      summary: Creates a new domain, returns the Zone on creation.
+      operationId: createZone
+      tags:
+        - zones
+      parameters:
+        - name: rrsets
+          in: query
+          description: "“true” (default) or “false”, whether to include the “rrsets” in the response Zone object."
+          schema:
+            type: boolean
+            default: true
+      requestBody:
+        required: true
+        description: The zone struct to patch with
+        content:
+          application/json:
+            schema:
+              $ref: "#/components/schemas/Zone"
+      responses:
+        "201":
+          description: A zone
+          content:
+            application/json:
+              schema:
+                $ref: "#/components/schemas/Zone"
+        default:
+          $ref: "#/components/responses/Error"
+
+  "/servers/{server_id}/zones/{zone_id}":
+    parameters:
+      - $ref: "#/components/parameters/server_id"
+      - $ref: "#/components/parameters/zone_id"
+    get:
+      summary: zone managed by a server
+      operationId: listZone
+      tags:
+        - zones
+      parameters:
+        - name: rrsets
+          in: query
+          description: "“true” (default) or “false”, whether to include the “rrsets” in the response Zone object."
+          schema:
+            type: boolean
+            default: true
+        - name: rrset_name
+          in: query
+          description: Limit output to RRsets for this name.
+          schema:
+            type: string
+        - name: rrset_type
+          in: query
+          description: Limit output to the RRset of this type. Can only be used together with rrset_name.
+          schema:
+            type: string
+        - name: include_disabled
+          in: query
+          description: "“true” (default) or “false”, whether to include disabled RRsets in the response."
+          schema:
+            type: boolean
+      responses:
+        "200":
+          description: A Zone
+          content:
+            application/json:
+              schema:
+                $ref: "#/components/schemas/Zone"
+        default:
+          $ref: "#/components/responses/Error"
+    delete:
+      summary: Deletes this zone, all attached metadata and rrsets.
+      operationId: deleteZone
+      tags:
+        - zones
+      responses:
+        "204":
+          description: "Returns 204 No Content on success."
+        default:
+          $ref: "#/components/responses/Error"
+    patch:
+      summary: "Creates/modifies/deletes RRsets present in the payload and their comments. Returns 204 No Content on success."
+      operationId: patchZone
+      tags:
+        - zones
+      requestBody:
+        required: true
+        description: The zone struct to patch with
+        content:
+          application/json:
+            schema:
+              $ref: "#/components/schemas/Zone"
+      responses:
+        "204":
+          description: "Returns 204 No Content on success."
+        default:
+          $ref: "#/components/responses/Error"
+
+    put:
+      summary: Modifies basic zone data.
+      description: "The only fields in the zone structure which can be modified are: kind, masters, catalog, account, soa_edit, soa_edit_api, api_rectify, dnssec, and nsec3param. All other fields are ignored."
+      operationId: putZone
+      tags:
+        - zones
+      requestBody:
+        required: true
+        description: The zone struct to patch with
+        content:
+          application/json:
+            schema:
+              $ref: "#/components/schemas/Zone"
+      responses:
+        "204":
+          description: "Returns 204 No Content on success."
+        default:
+          $ref: "#/components/responses/Error"
+
+  "/servers/{server_id}/zones/{zone_id}/axfr-retrieve":
+    parameters:
+      - $ref: "#/components/parameters/server_id"
+      - $ref: "#/components/parameters/zone_id"
+    put:
+      summary: Retrieve slave zone from its master.
+      description: "Fails when zone kind is not Slave, or slave is disabled in the configuration. Clients MUST NOT send a body."
+      operationId: axfrRetrieveZone
+      tags:
+        - zones
       responses:
-        "204":
-          description: "OK, key was deleted"
+        "200":
+          description: OK
         default:
           $ref: "#/components/responses/Error"
 
-  "/servers/{server_id}/autoprimaries":
+  "/servers/{server_id}/zones/{zone_id}/cryptokeys":
     parameters:
       - $ref: "#/components/parameters/server_id"
+      - $ref: "#/components/parameters/zone_id"
     get:
-      summary: "Get a list of autoprimaries"
-      operationId: getAutoprimaries
+      summary: "Get all CryptoKeys for a zone, except the privatekey"
+      operationId: listCryptokeys
       tags:
-        - autoprimary
+        - zonecryptokey
       responses:
         "200":
-          description: OK.
+          description: List of Cryptokey objects
           content:
             application/json:
               schema:
-                $ref: "#/components/schemas/Autoprimary"
+                type: array
+                items:
+                  $ref: "#/components/schemas/Cryptokey"
         default:
           $ref: "#/components/responses/Error"
     post:
-      summary: "Add an autoprimary"
-      description: "This methods add a new autoprimary server."
-      operationId: createAutoprimary
+      summary: "Creates a Cryptokey"
+      description: "This method adds a new key to a zone. The key can either be generated or imported by supplying the content parameter. if content, bits and algo are null, a key will be generated based on the default-ksk-algorithm and default-ksk-size settings for a KSK and the default-zsk-algorithm and default-zsk-size options for a ZSK."
+      operationId: createCryptokey
       tags:
-        - autoprimary
+        - zonecryptokey
+
       requestBody:
         required: true
-        description: autoprimary entry to add
+        description: Add a Cryptokey
         content:
           application/json:
             schema:
-              $ref: "#/components/schemas/Autoprimary"
+              $ref: "#/components/schemas/Cryptokey"
       responses:
         "201":
           description: Created
+          content:
+            application/json:
+              schema:
+                $ref: "#/components/schemas/Cryptokey"
         default:
           $ref: "#/components/responses/Error"
 
-  "/servers/{server_id}/autoprimaries/{ip}/{nameserver}":
+  "/servers/{server_id}/zones/{zone_id}/cryptokeys/{cryptokey_id}":
     parameters:
       - $ref: "#/components/parameters/server_id"
-      - name: ip
-        in: path
-        required: true
-        description: "IP address of autoprimary"
+      - $ref: "#/components/parameters/zone_id"
+      - name: cryptokey_id
         schema:
           type: string
-      - name: nameserver
         in: path
         required: true
-        description: "DNS name of the autoprimary"
-        schema:
-          type: string
+        description: "The id value of the CryptoKey"
+    get:
+      summary: "Returns all data about the CryptoKey, including the privatekey."
+      operationId: getCryptokey
+      tags:
+        - zonecryptokey
+      responses:
+        "200":
+          description: Cryptokey
+          content:
+            application/json:
+              schema:
+                $ref: "#/components/schemas/Cryptokey"
+        default:
+          $ref: "#/components/responses/Error"
+    put:
+      summary: "This method (de)activates a key from zone_name specified by cryptokey_id"
+      operationId: modifyCryptokey
+      tags:
+        - zonecryptokey
+      responses:
+        "204":
+          description: OK
+        default:
+          $ref: "#/components/responses/Error"
     delete:
-      summary: "Delete the autoprimary entry"
-      operationId: deleteAutoprimary
+      summary: "This method deletes a key specified by cryptokey_id."
+      operationId: deleteCryptokey
       tags:
-        - autoprimary
+        - zonecryptokey
       responses:
         "204":
-          description: "OK, key was deleted"
+          description: OK
         default:
           $ref: "#/components/responses/Error"
 
-  "/servers/{server_id}/views":
+  "/servers/{server_id}/zones/{zone_id}/export":
+    parameters:
+      - $ref: "#/components/parameters/server_id"
+      - $ref: "#/components/parameters/zone_id"
     get:
-      summary: List all views in a server
-      operationId: listViews
+      summary: "Returns the zone in AXFR format."
+      operationId: axfrExportZone
       tags:
-        - views
-      parameters:
-        - $ref: "#/components/parameters/server_id"
+        - zones
       responses:
         "200":
-          description: An array of view names
+          description: OK
           content:
             application/json:
               schema:
-                $ref: "#/components/schemas/Views"
+                type: string
         default:
           $ref: "#/components/responses/Error"
 
-  "/servers/{server_id}/views/{view}":
+  "/servers/{server_id}/zones/{zone_id}/metadata":
     parameters:
       - $ref: "#/components/parameters/server_id"
-      - $ref: "#/components/parameters/view"
-
+      - $ref: "#/components/parameters/zone_id"
     get:
-      summary: List the contents of a given view
-      operationId: listView
+      summary: "Get all the Metadata associated with the zone."
+      operationId: listMetadata
       tags:
-        - views
+        - zonemetadata
       responses:
         "200":
-          description: An array of zone names
+          description: List of Metadata objects
           content:
             application/json:
               schema:
-                $ref: "#/components/schemas/View"
+                type: array
+                items:
+                  $ref: "#/components/schemas/Metadata"
         default:
           $ref: "#/components/responses/Error"
-
     post:
-      summary: Adds a zone to a given view, creating it if needed
-      operationId: addToView
+      summary: "Creates a set of metadata entries"
+      description: "Creates a set of metadata entries of given kind for the zone. Existing metadata entries for the zone with the same kind are not overwritten."
+      operationId: createMetadata
       tags:
-        - views
+        - zonemetadata
+
       requestBody:
         required: true
+        description: Metadata object with list of values to create
         content:
           application/json:
             schema:
-              type: object
-              additionalProperties: false
-              properties:
-                name:
-                  type: string
-                  description: The zone to add to the view
+              $ref: "#/components/schemas/Metadata"
       responses:
         "204":
-          description: "Returns 204 No Content on success."
+          description: OK
         default:
           $ref: "#/components/responses/Error"
 
-  "/servers/{server_id}/views/{view}/{id}":
+  "/servers/{server_id}/zones/{zone_id}/metadata/{metadata_kind}":
     parameters:
       - $ref: "#/components/parameters/server_id"
-      - $ref: "#/components/parameters/view"
-      - name: id
-        description: The zone to remove from the view
-        required: true
-        in: path
+      - $ref: "#/components/parameters/zone_id"
+      - name: metadata_kind
         schema:
           type: string
-    delete:
-      summary: Removes the given zone from the given view
-      operationId: deleteFromView
+        in: path
+        required: true
+        description: The kind of metadata
+    get:
+      summary: "Get the content of a single kind of domain metadata as a Metadata object."
+      operationId: getMetadata
       tags:
-        - views
+        - zonemetadata
       responses:
-        "204":
-          description: "Returns 204 No Content on success."
+        "200":
+          description: Metadata object with list of values
+          content:
+            application/json:
+              schema:
+                $ref: "#/components/schemas/Metadata"
         default:
           $ref: "#/components/responses/Error"
-
-  "/servers/{server_id}/networks":
-    parameters:
-      - $ref: "#/components/parameters/server_id"
-    get:
-      summary: List all registered networks and views in a server
-      operationId: listNetworks
+    put:
+      summary: "Replace the content of a single kind of domain metadata."
+      description: "Creates a set of metadata entries of given kind for the zone. Existing metadata entries for the zone with the same kind are removed."
+      operationId: modifyMetadata
       tags:
-        - networks
+        - zonemetadata
       responses:
         "200":
-          description: An array of networks
+          description: Metadata object with list of values
           content:
             application/json:
               schema:
-                $ref: "#/components/schemas/Networks"
+                $ref: "#/components/schemas/Metadata"
+        default:
+          $ref: "#/components/responses/Error"
+    delete:
+      summary: "Delete all items of a single kind of domain metadata."
+      operationId: deleteMetadata
+      tags:
+        - zonemetadata
+      responses:
+        "204":
+          description: OK
         default:
           $ref: "#/components/responses/Error"
 
-  "/servers/{server_id}/networks/{ip}/{prefixlen}":
+  "/servers/{server_id}/zones/{zone_id}/notify":
     parameters:
       - $ref: "#/components/parameters/server_id"
-      - name: ip
-        schema:
-          type: string
-        in: path
-        required: true
-        description: The base address of the network
-      - name: prefixlen
-        schema:
-          type: string
-        in: path
-        required: true
-        description: The length of the network prefix
-    get:
-      summary: Return the view associated to the given network
-      operationId: getNetwork
+      - $ref: "#/components/parameters/zone_id"
+    put:
+      summary: Send a DNS NOTIFY to all slaves.
+      description: "Fails when zone kind is not Master or Slave, or master and slave are disabled in the configuration. Only works for Slave if renotify is on. Clients MUST NOT send a body."
+      operationId: notifyZone
       tags:
-        - networks
+        - zones
       responses:
         "200":
-          description: A network
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Network"
+          description: OK
         default:
           $ref: "#/components/responses/Error"
 
+  "/servers/{server_id}/zones/{zone_id}/rectify":
+    parameters:
+      - $ref: "#/components/parameters/server_id"
+      - $ref: "#/components/parameters/zone_id"
     put:
-      summary: Sets the view associated to the given network
-      operationId: setNetwork
+      summary: "Rectify the zone data."
+      description: "This does not take into account the API-RECTIFY metadata. Fails on slave zones and zones that do not have DNSSEC."
+      operationId: rectifyZone
       tags:
-        - networks
-      requestBody:
-        required: true
-        content:
-          application/json:
-            schema:
-              type: object
-              additionalProperties: false
-              properties:
-                view:
-                  type: string
-                  description: The name of the view to use for this network
-
+        - zones
       responses:
-        "204":
-          description: "Returns 204 No Content on success."
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                type: string
         default:
           $ref: "#/components/responses/Error"