Endpoint index

Every route of the REST API with the permission it checks.

Every operation of kudurru API v1, generated from api/openapi.json. Paths include the base path /api/v1. The permission is the RBAC check of the route (resource.verb and the scope it is evaluated in), authenticated (any signed-in caller) or public (no credentials). The API explorer shows the request and response schemas.

audit

MethodPathSummaryPermission
GET/api/v1/auditAudit events of this node (oldest first; order=desc for newest first)audit.read (cluster)
GET/api/v1/audit/exportAudit events as JSON linesaudit.export (cluster)

auth

MethodPathSummaryPermission
POST/api/v1/auth/loginLocal login (sets the session cookie)public
POST/api/v1/auth/logoutClear the session cookieauthenticated
GET/api/v1/auth/meThe authenticated principal, roles, permissions and CSRF tokenauthenticated
GET/api/v1/auth/oidc/{idp}/callbackOIDC redirect target (302 to the app)public
GET/api/v1/auth/oidc/{idp}/startStart an OIDC login (302 to the IdP)public
POST/api/v1/auth/passwordChange the local user's own password (a cookie session gets a new cookie)authenticated
GET/api/v1/auth/statusLogin optionspublic
GET/api/v1/auth/tokensList own API tokensauthenticated
POST/api/v1/auth/tokensCreate a personal API token (the secret is returned once)authenticated
GET/api/v1/auth/tokens/{id}Get one API token (someone else's needs tokens.read)authenticated
DELETE/api/v1/auth/tokens/{id}Revoke one API token (someone else's needs tokens.delete)authenticated

blocklists

MethodPathSummaryPermission
GET/api/v1/blocklistsList blocklistsblocklists.read (cluster)
POST/api/v1/blocklistsCreate a BlockListblocklists.write (cluster)
GET/api/v1/blocklists/_searchWhich lists contain a domainblocklists.read (cluster)
GET/api/v1/blocklists/{namespace}/{name}Get a BlockListblocklists.read (cluster)
PUT/api/v1/blocklists/{namespace}/{name}Create or replace a BlockListblocklists.write (cluster)
DELETE/api/v1/blocklists/{namespace}/{name}Delete a BlockListblocklists.delete (cluster)
POST/api/v1/blocklists/{namespace}/{name}/refreshFetch a BlockList's sources nowblocklists.refresh (cluster)
GET/api/v1/blocklists/{namespace}/{name}/sources/{source}/entriesPage through the entries of a BlockList sourceblocklists.read (cluster)
PATCH/api/v1/blocklists/{namespace}/{name}/sources/{source}/entriesSwitch entries of a BlockList source off and on, add and remove inline entriesblocklists.write (cluster)
POST/api/v1/blocklists:batchDeleteDelete several blocklistsblocklists.delete (cluster)
POST/api/v1/domains/{action}/{kind}Allow or deny domains through the UI listsblocklists.write (cluster)

catalogue

MethodPathSummaryPermission
GET/api/v1/catalogueThe blocked-services and safe-search catalogue in servicepolicies.read (cluster)
GET/api/v1/catalogue/categoriesCategories Policy.spec.blockedCategories can blockpolicies.read (cluster)
GET/api/v1/catalogue/iconsLogos embedded in this buildpublic
GET/api/v1/catalogue/icons/{file}One embedded logo (image/svg+xml)public
GET/api/v1/catalogue/safesearchSearch engines Policy.spec.safeSearch rewritespolicies.read (cluster)
GET/api/v1/catalogue/servicesServices Policy.spec.blockedServices can blockpolicies.read (cluster)

clientgroups

MethodPathSummaryPermission
GET/api/v1/clientgroupsList clientgroupsclientgroups.read (cluster)
POST/api/v1/clientgroupsCreate a ClientGroupclientgroups.write (cluster)
GET/api/v1/clientgroups/{namespace}/{name}Get a ClientGroupclientgroups.read (cluster)
PUT/api/v1/clientgroups/{namespace}/{name}Create or replace a ClientGroupclientgroups.write (cluster)
DELETE/api/v1/clientgroups/{namespace}/{name}Delete a ClientGroupclientgroups.delete (cluster)
POST/api/v1/clientgroups:batchDeleteDelete several clientgroupsclientgroups.delete (cluster)

cluster

MethodPathSummaryPermission
GET/api/v1/clusterStore, leader and shapecluster.read (cluster)
GET/api/v1/doctorThe checks of kudurru doctor as this node sees themsettings.read (cluster)
GET/api/v1/edgednsdist backends and VIP ownersedge.read (cluster)
GET/api/v1/info/messagesDiagnosis messages (objects, policies, lists, readiness)settings.read (cluster)
GET/api/v1/nodesNodes of the clustercluster.read (cluster)
GET/api/v1/nodes/{name}/healthReadiness detail of one nodecluster.read (cluster)

dnsrecordsets

MethodPathSummaryPermission
POST/api/v1/dnsrecordsets:batchDeleteDelete several dnsrecordsetsrecords.delete (cluster or per object)

dnszones

MethodPathSummaryPermission
POST/api/v1/dnszones:batchDeleteDelete several dnszoneszones.delete (cluster or per object)

domains

MethodPathSummaryPermission
GET/api/v1/allowlistList Allowlist entriesblocklists.read (cluster)
POST/api/v1/allowlistAdd Allowlist entriesblocklists.write (cluster)
GET/api/v1/allowlist/{id}Get a Allowlist entryblocklists.read (cluster)
PATCH/api/v1/allowlist/{id}Change a Allowlist entryblocklists.write (cluster)
DELETE/api/v1/allowlist/{id}Delete a Allowlist entryblocklists.write (cluster)
POST/api/v1/allowlist:batchSwitch on, off or delete several Allowlist entriesblocklists.write (cluster)
GET/api/v1/denylistList Denylist entriesblocklists.read (cluster)
POST/api/v1/denylistAdd Denylist entriesblocklists.write (cluster)
GET/api/v1/denylist/{id}Get a Denylist entryblocklists.read (cluster)
PATCH/api/v1/denylist/{id}Change a Denylist entryblocklists.write (cluster)
DELETE/api/v1/denylist/{id}Delete a Denylist entryblocklists.write (cluster)
POST/api/v1/denylist:batchSwitch on, off or delete several Denylist entriesblocklists.write (cluster)
GET/api/v1/domainsList Allowlist and Denylist entries togetherblocklists.read (cluster)

iam

MethodPathSummaryPermission
GET/api/v1/iam/identityprovidersList identityproviders (read-only; the write API is v0.2)identityproviders.read (cluster)
GET/api/v1/iam/rolebindingsList rolebindings (read-only; the write API is v0.2)rolebindings.read (cluster)
GET/api/v1/iam/serviceaccountsList serviceaccounts (read-only; the write API is v0.2)serviceaccounts.read (cluster)
GET/api/v1/iam/usersList users (read-only; the write API is v0.2)users.read (cluster)

meta

MethodPathSummaryPermission
GET/api/v1/versionBuild information of this nodepublic

objects

MethodPathSummaryPermission
POST/api/v1/applyApply objects (multi-document YAML or a JSON array)
GET/api/v1/objects/{kind}List objects of a kind
POST/api/v1/objects/{kind}Create an object (409 when it exists)
GET/api/v1/objects/{kind}/{namespace}/{name}Get a namespaced object
PUT/api/v1/objects/{kind}/{namespace}/{name}Create or replace a namespaced object
DELETE/api/v1/objects/{kind}/{namespace}/{name}Delete a namespaced object
GET/api/v1/objects/{kind}/{name}Get a cluster-scoped object (dnszones)
PUT/api/v1/objects/{kind}/{name}Create or replace a cluster-scoped object
DELETE/api/v1/objects/{kind}/{name}Delete a cluster-scoped object

policies

MethodPathSummaryPermission
GET/api/v1/policiesList policiespolicies.read (cluster)
POST/api/v1/policiesCreate a Policypolicies.write (cluster)
GET/api/v1/policies/{namespace}/{name}Get a Policypolicies.read (cluster)
PUT/api/v1/policies/{namespace}/{name}Create or replace a Policypolicies.write (cluster)
DELETE/api/v1/policies/{namespace}/{name}Delete a Policypolicies.delete (cluster)
GET/api/v1/policies/{namespace}/{name}/stateA policy's current statepolicies.read (cluster)
POST/api/v1/policies:batchDeleteDelete several policiespolicies.delete (cluster)

querylog

MethodPathSummaryPermission
GET/api/v1/queriesQuery log page (keyset cursor, newest first)querylog.read (cluster)
GET/api/v1/queries/streamLive query tail (Server-Sent Events)querylog.read (cluster)
GET/api/v1/queries/suggestionsFilter value suggestionsquerylog.read (cluster)
POST/api/v1/queries/{id}/actionsAllow or deny the domain of a logged queryblocklists.write (cluster)
DELETE/api/v1/querylogDelete query-log rowsquerylog.purge (cluster)
GET/api/v1/querylog/statusQuery-log size, retention and writer statequerylog.read (cluster)

runtime

MethodPathSummaryPermission
POST/api/v1/cache/flushFlush the response cache (or one name)cache.flush (cluster)
GET/api/v1/dns/blockingBlocking state of this nodeblocking.read (cluster)
POST/api/v1/dns/blockingEnable blocking, or disable it for a whileblocking.toggle (cluster)
POST/api/v1/dns/queryRun one query through the pipeline in-process (built-in dig)stats.read (cluster)

settings

MethodPathSummaryPermission
GET/api/v1/blockpage/previewRender the block page (text/html) with the current blockPage settingssettings.read (cluster)
GET/api/v1/node/configThis node's host-local settings (redacted)settings.read (cluster)
PATCH/api/v1/node/configChange this node's settings (hostOnly keys refused)node.config (cluster)
GET/api/v1/settingsCluster-scope settings (redacted)settings.read (cluster)
PATCH/api/v1/settingsChange cluster-scope settings (JSON merge patch)settings.write (cluster)
GET/api/v1/settings/_schemaThe settings metadata tablesettings.read (cluster)

stats

MethodPathSummaryPermission
GET/api/v1/clientsClient inventory from the query logclients.read (cluster)
GET/api/v1/stats/clients/timeseriesPer-client query volume over timestats.read (cluster)
GET/api/v1/stats/recent_blockedMost recently blocked queriesquerylog.read (cluster)
GET/api/v1/stats/summaryStat tiles and sidebar countersstats.read (cluster)
GET/api/v1/stats/timeseriesQuery volume by status class over timestats.read (cluster)
GET/api/v1/stats/topTop domains, clients, upstreams, lists or zonesstats.read (cluster)
GET/api/v1/stats/upstreamsTraffic and health per upstreamstats.read (cluster)

unblockrequests

MethodPathSummaryPermission
GET/api/v1/unblockrequestsList the unblock requests users made on the block page, newest firstunblockrequests.read (cluster)
GET/api/v1/unblockrequests/{namespace}/{name}Get an unblock requestunblockrequests.read (cluster)
DELETE/api/v1/unblockrequests/{namespace}/{name}Delete an unblock requestunblockrequests.delete (cluster)
POST/api/v1/unblockrequests/{namespace}/{name}/approveApprove an unblock request: add the allow entryunblockrequests.decide (cluster)
POST/api/v1/unblockrequests/{namespace}/{name}/denyDeny an unblock request (revokes an approval in force)unblockrequests.decide (cluster)

zones

MethodPathSummaryPermission
GET/api/v1/zonesList zones with serial, record count and readinesszones.read (cluster or per object)
GET/api/v1/zones/{zone}Get one zonezones.read (zone)
DELETE/api/v1/zones/{zone}Delete a zone with every record set that references itzones.delete (zone)
GET/api/v1/zones/{zone}/exportExport the served zone as a BIND master file (text/dns)zones.read (zone)
POST/api/v1/zones/{zone}/importImport a BIND master file (text/dns)records.write (zone)
POST/api/v1/zones/{zone}/notifySend NOTIFY for the zone nowzones.transfer (zone)
GET/api/v1/zones/{zone}/recordsList the endpoints of a zone across record setsrecords.read (zone)
POST/api/v1/zones/{zone}/recordsCreate or replace one endpoint in a record setrecords.write (zone)
DELETE/api/v1/zones/{zone}/records/{name}/{type}Delete the endpoints of one name and typerecords.delete (zone)

Source: site/content/reference/api/endpoints.md