@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api PowerDNS Authoritative HTTP API
@base /api/v1
@version 0.0.18
@auth ApiKey X-API-Key in header
@endpoints 43
@hint download_for_search
@toc error(1), servers(42)

@group error
@endpoint GET /error

@endgroup

@group servers
@endpoint GET /servers
@returns(200)

@endpoint GET /servers/{server_id}
@returns(200) {type: str, id: str, daemon_type: str, version: str, url: str, config_url: str, zones_url: str}

@endpoint PUT /servers/{server_id}/cache/flush
@required {domain: str}
@returns(200) {count: num, result: str}

@endpoint GET /servers/{server_id}/zones
@optional {zone: str, dnssec: bool=true}
@returns(200)

@endpoint POST /servers/{server_id}/zones
@optional {rrsets: bool=true, id: str, name: str, type: str, url: str, kind: str(Native/Master/Slave/Producer/Consumer), rrsets: [map{name!: str, type!: str, ttl!: int, changetype: str, records!: [map], comments: [map]}], serial: int, notified_serial: int, edited_serial: int, masters: [str], dnssec: bool, nsec3param: str, nsec3narrow: bool, presigned: bool, soa_edit: str, soa_edit_api: str, api_rectify: bool, zone: str, catalog: str, account: str, nameservers: [str], master_tsig_key_ids: [str], slave_tsig_key_ids: [str], last_check: int}
@returns(201) {id: str, name: str, type: str, url: str, kind: str, rrsets: [map], serial: int, notified_serial: int, edited_serial: int, masters: [str], dnssec: bool, nsec3param: str, nsec3narrow: bool, presigned: bool, soa_edit: str, soa_edit_api: str, api_rectify: bool, zone: str, catalog: str, account: str, nameservers: [str], master_tsig_key_ids: [str], slave_tsig_key_ids: [str], last_check: int}

@endpoint GET /servers/{server_id}/zones/{zone_id}
@optional {rrsets: bool=true, rrset_name: str, rrset_type: str, include_disabled: bool}
@returns(200) {id: str, name: str, type: str, url: str, kind: str, rrsets: [map], serial: int, notified_serial: int, edited_serial: int, masters: [str], dnssec: bool, nsec3param: str, nsec3narrow: bool, presigned: bool, soa_edit: str, soa_edit_api: str, api_rectify: bool, zone: str, catalog: str, account: str, nameservers: [str], master_tsig_key_ids: [str], slave_tsig_key_ids: [str], last_check: int}

@endpoint DELETE /servers/{server_id}/zones/{zone_id}
@returns(204)

@endpoint PATCH /servers/{server_id}/zones/{zone_id}
@optional {id: str, name: str, type: str, url: str, kind: str(Native/Master/Slave/Producer/Consumer), rrsets: [map{name!: str, type!: str, ttl!: int, changetype: str, records!: [map], comments: [map]}], serial: int, notified_serial: int, edited_serial: int, masters: [str], dnssec: bool, nsec3param: str, nsec3narrow: bool, presigned: bool, soa_edit: str, soa_edit_api: str, api_rectify: bool, zone: str, catalog: str, account: str, nameservers: [str], master_tsig_key_ids: [str], slave_tsig_key_ids: [str], last_check: int}
@returns(204)

@endpoint PUT /servers/{server_id}/zones/{zone_id}
@optional {id: str, name: str, type: str, url: str, kind: str(Native/Master/Slave/Producer/Consumer), rrsets: [map{name!: str, type!: str, ttl!: int, changetype: str, records!: [map], comments: [map]}], serial: int, notified_serial: int, edited_serial: int, masters: [str], dnssec: bool, nsec3param: str, nsec3narrow: bool, presigned: bool, soa_edit: str, soa_edit_api: str, api_rectify: bool, zone: str, catalog: str, account: str, nameservers: [str], master_tsig_key_ids: [str], slave_tsig_key_ids: [str], last_check: int}
@returns(204)

@endpoint PUT /servers/{server_id}/zones/{zone_id}/notify
@returns(200)

@endpoint PUT /servers/{server_id}/zones/{zone_id}/axfr-retrieve
@returns(200)

@endpoint GET /servers/{server_id}/zones/{zone_id}/export
@returns(200)

@endpoint PUT /servers/{server_id}/zones/{zone_id}/rectify
@returns(200)

@endpoint GET /servers/{server_id}/config
@returns(200)

@endpoint GET /servers/{server_id}/config/{config_setting_name}
@returns(200) {name: str, type: str, value: str}

@endpoint GET /servers/{server_id}/statistics
@optional {statistic: str, includerings: bool=true}
@returns(200)
@errors {422}

@endpoint GET /servers/{server_id}/search-data
@required {q: str, max: int}
@optional {object_type: str}
@returns(200)

@endpoint GET /servers/{server_id}/zones/{zone_id}/metadata
@returns(200)

@endpoint POST /servers/{server_id}/zones/{zone_id}/metadata
@optional {kind: str, metadata: [str]}
@returns(204)

@endpoint GET /servers/{server_id}/zones/{zone_id}/metadata/{metadata_kind}
@returns(200) {kind: str, metadata: [str]}

@endpoint PUT /servers/{server_id}/zones/{zone_id}/metadata/{metadata_kind}
@returns(200) {kind: str, metadata: [str]}

@endpoint DELETE /servers/{server_id}/zones/{zone_id}/metadata/{metadata_kind}
@returns(204)

@endpoint GET /servers/{server_id}/zones/{zone_id}/cryptokeys
@returns(200)

@endpoint POST /servers/{server_id}/zones/{zone_id}/cryptokeys
@optional {type: str, id: int, keytype: str(ksk/zsk/csk), active: bool, published: bool, dnskey: str, ds: [str], cds: [str], privatekey: str, algorithm: str, bits: int}
@returns(201) {type: str, id: int, keytype: str, active: bool, published: bool, dnskey: str, ds: [str], cds: [str], privatekey: str, algorithm: str, bits: int}

@endpoint GET /servers/{server_id}/zones/{zone_id}/cryptokeys/{cryptokey_id}
@returns(200) {type: str, id: int, keytype: str, active: bool, published: bool, dnskey: str, ds: [str], cds: [str], privatekey: str, algorithm: str, bits: int}

@endpoint PUT /servers/{server_id}/zones/{zone_id}/cryptokeys/{cryptokey_id}
@returns(204)

@endpoint DELETE /servers/{server_id}/zones/{zone_id}/cryptokeys/{cryptokey_id}
@returns(204)

@endpoint GET /servers/{server_id}/tsigkeys
@returns(200)

@endpoint POST /servers/{server_id}/tsigkeys
@optional {name: str, id: str, algorithm: str, key: str, type: str}
@returns(201) {name: str, id: str, algorithm: str, key: str, type: str}
@errors {409}

@endpoint GET /servers/{server_id}/tsigkeys/{tsigkey_id}
@returns(200) {name: str, id: str, algorithm: str, key: str, type: str}

@endpoint PUT /servers/{server_id}/tsigkeys/{tsigkey_id}
@optional {name: str, id: str, algorithm: str, key: str, type: str}
@returns(200) {name: str, id: str, algorithm: str, key: str, type: str}
@errors {409}

@endpoint DELETE /servers/{server_id}/tsigkeys/{tsigkey_id}
@returns(204)

@endpoint GET /servers/{server_id}/autoprimaries
@returns(200) {ip: str, nameserver: str, account: str}

@endpoint POST /servers/{server_id}/autoprimaries
@optional {ip: str, nameserver: str, account: str}
@returns(201)

@endpoint DELETE /servers/{server_id}/autoprimaries/{ip}/{nameserver}
@returns(204)

@endpoint GET /servers/{server_id}/views
@required {server_id: str}
@returns(200) {views: [str]}

@endpoint GET /servers/{server_id}/views/{view}
@returns(200) {zones: [str]}

@endpoint POST /servers/{server_id}/views/{view}
@optional {name: str}
@returns(204)

@endpoint DELETE /servers/{server_id}/views/{view}/{id}
@returns(204)

@endpoint GET /servers/{server_id}/networks
@returns(200) {networks: [map]}

@endpoint GET /servers/{server_id}/networks/{ip}/{prefixlen}
@returns(200) {network: str, view: str}

@endpoint PUT /servers/{server_id}/networks/{ip}/{prefixlen}
@optional {view: str}
@returns(204)

@endgroup

@end
