GET | /api/divisions/{id}/dhcp-servers | zones.read | DHCP servers, with their leases by state, records, subnets and last sync |
POST | /api/divisions/{id}/dhcp-servers | integrations.manage | Add one; Kea (or one with a URL) is read at once |
GET | /api/dhcp-servers/{id} | zones.read | One server |
PATCH | /api/dhcp-servers/{id} | integrations.manage | Change its settings; "enabled": false pauses it |
DELETE | /api/dhcp-servers/{id}?keep_records=false | integrations.manage | Remove it, and its records unless keep_records=true |
POST | /api/dhcp-servers/{id}/sync | records.write | Read it now and sync its records |
POST | /api/dhcp-servers/{id}/import?format=auto | records.write | A lease file (dhcpd.leases, CSV) as the body, or {"content": "…", "format": "auto"}; up to 64 MB |
GET | /api/dhcp-servers/{id}/leases?q=&live=true | zones.read | Its leases, with the records DHCP keeps for each |
GET | /api/divisions/{id}/dhcp-leases?q=&live=true | zones.read | Every server’s leases |
GET | /api/zones/{id}/dhcp-records | zones.read | The zone’s DHCP-managed records, by record id |
GET | /api/divisions/{id}/ipam | zones.read | Subnets with their use and conflicts, and the counts |
GET | /api/divisions/{id}/ipam/subnet?cidr=10.0.0.0/24 | zones.read | A network’s addresses, free ranges and conflicts |
GET | /api/divisions/{id}/ipam/conflicts | zones.read | Every conflict |
GET | /api/divisions/{id}/ipam/outside | zones.read | Addresses in no known subnet |
POST | /api/divisions/{id}/ipam/subnets | zones.write | Add a subnet: {"cidr": "10.0.9.0/24", "name": "Servers", "comment": ""} |
PATCH / DELETE | /api/ipam-subnets/{id} | zones.write | Rename or remove one added by hand |