AdGuardHome/openapi/openapi.yaml

1850 lines
63 KiB
YAML
Raw Normal View History

openapi: 3.0.3
2018-08-30 17:25:33 +03:00
info:
title: AdGuard Home
description: AdGuard Home REST API. Admin web interface is built on top of this REST API.
2020-05-02 11:39:37 +03:00
version: "0.102"
contact:
name: "AdGuard Home"
url: "https://github.com/AdguardTeam/AdGuardHome"
servers:
- url: /control
tags:
- name: clients
description: Clients list operations
- name: dhcp
description: Built-in DHCP server controls
- name: filtering
description: Rule-based filtering
- name: global
description: AdGuard Home server general settings and controls
- name: i18n
description: Application localization
- name: install
description: First-time install configuration handlers
- name: log
description: AdGuard Home query log
- name: parental
description: Blocking adult and explicit materials
- name: safebrowsing
description: Blocking malware/phishing sites
- name: safesearch
description: Enforce family-friendly results in search engines
- name: stats
description: AdGuard Home statistics
- name: tls
description: AdGuard Home HTTPS/DOH/DOT settings
paths:
2018-08-30 17:25:33 +03:00
/status:
get:
tags:
- global
operationId: status
summary: Get DNS server current status and general settings
2018-08-30 17:25:33 +03:00
responses:
"200":
2018-08-30 17:25:33 +03:00
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ServerStatus"
2019-11-14 16:36:59 +03:00
/dns_info:
get:
tags:
- global
operationId: dnsInfo
summary: Get general DNS parameters
2019-11-14 16:36:59 +03:00
responses:
"200":
2019-11-14 16:36:59 +03:00
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/DNSConfig"
2019-11-14 16:36:59 +03:00
/dns_config:
post:
tags:
- global
operationId: dnsConfig
summary: Set general DNS parameters
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DNSConfig"
2019-11-14 16:36:59 +03:00
responses:
"200":
2019-11-14 16:36:59 +03:00
description: OK
2018-11-25 22:30:08 +03:00
/test_upstream_dns:
post:
tags:
- global
operationId: testUpstreamDNS
summary: Test upstream configuration
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/UpstreamsConfig"
description: Upstream configuration to be tested
2018-11-25 22:30:08 +03:00
responses:
"200":
description: Status of testing each requested server, with "OK" meaning that
server works, any other text means an error.
content:
2018-11-25 22:30:08 +03:00
application/json:
examples:
response:
value:
1.1.1.1: OK
1.0.0.1: OK
8.8.8.8: OK
8.8.4.4: OK
192.168.1.104:53535: Couldn't communicate with DNS server
2018-11-26 13:22:14 +03:00
/version.json:
2019-06-27 10:52:45 +03:00
post:
2018-11-26 13:22:14 +03:00
tags:
- global
operationId: getVersionJson
summary: Gets information about the latest available version of AdGuard
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/GetVersionRequest"
required: true
2018-11-26 13:22:14 +03:00
responses:
"200":
description: Version info. If response message is empty, UI does not show a
version update message.
content:
application/json:
schema:
$ref: "#/components/schemas/VersionInfo"
"500":
description: Cannot write answer
"502":
description: Cannot retrieve the version.json file contents
2019-05-20 10:57:07 +03:00
/update:
post:
tags:
- global
operationId: beginUpdate
summary: Begin auto-upgrade procedure
2019-05-20 10:57:07 +03:00
responses:
"200":
2019-05-20 10:57:07 +03:00
description: OK
"500":
2019-05-20 10:57:07 +03:00
description: Failed
2018-08-30 17:25:33 +03:00
/querylog:
get:
2018-08-30 17:25:33 +03:00
tags:
- log
2018-08-30 17:25:33 +03:00
operationId: queryLog
summary: Get DNS server query log.
2018-08-30 17:25:33 +03:00
parameters:
- name: older_than
in: query
description: Filter by older than
schema:
type: string
- name: offset
in: query
description:
Specify the ranking number of the first item on the page.
Even though it is possible to use "offset" and "older_than",
we recommend choosing one of them and sticking to it.
schema:
type: integer
- name: limit
in: query
description: Limit the number of records to be returned
schema:
type: integer
2020-05-28 17:58:56 +03:00
- name: search
in: query
2020-05-28 17:58:56 +03:00
description: Filter by domain name or client IP
schema:
type: string
2020-05-28 17:58:56 +03:00
- name: response_status
in: query
description: Filter by response status
schema:
type: string
enum:
2020-06-16 12:12:32 +03:00
- all
- filtered
2020-05-28 17:58:56 +03:00
- blocked
2020-06-16 12:12:32 +03:00
- blocked_safebrowsing
- blocked_parental
2020-05-28 17:58:56 +03:00
- whitelisted
2020-06-16 12:12:32 +03:00
- rewritten
- safe_search
2020-05-28 17:58:56 +03:00
- processed
2018-08-30 17:25:33 +03:00
responses:
"200":
2018-08-30 17:25:33 +03:00
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/QueryLog"
/querylog_info:
get:
tags:
- log
operationId: queryLogInfo
summary: Get query log parameters
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/QueryLogConfig"
/querylog_config:
2018-08-30 17:25:33 +03:00
post:
tags:
- log
operationId: queryLogConfig
summary: Set query log parameters
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/QueryLogConfig"
2018-08-30 17:25:33 +03:00
responses:
"200":
2018-08-30 17:25:33 +03:00
description: OK
/querylog_clear:
2018-08-30 17:25:33 +03:00
post:
tags:
- log
operationId: querylogClear
summary: Clear query log
2018-08-30 17:25:33 +03:00
responses:
"200":
2018-08-30 17:25:33 +03:00
description: OK
/stats:
get:
tags:
2018-11-25 22:30:08 +03:00
- stats
2018-08-30 17:25:33 +03:00
operationId: stats
summary: Get DNS server statistics
2018-08-30 17:25:33 +03:00
responses:
"200":
description: Returns statistics data
content:
application/json:
schema:
$ref: "#/components/schemas/Stats"
/stats_reset:
post:
tags:
2018-11-25 22:30:08 +03:00
- stats
operationId: statsReset
summary: Reset all statistics to zeroes
responses:
"200":
description: OK
/stats_info:
get:
tags:
- stats
operationId: statsInfo
summary: Get statistics parameters
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/StatsConfig"
/stats_config:
post:
tags:
- stats
operationId: statsConfig
summary: Set statistics parameters
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/StatsConfig"
responses:
"200":
description: OK
2019-02-21 17:33:46 +03:00
/tls/status:
get:
tags:
- tls
operationId: tlsStatus
summary: Returns TLS configuration and its status
2019-02-21 17:33:46 +03:00
responses:
"200":
2019-02-21 17:33:46 +03:00
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TlsConfig"
2019-02-21 17:33:46 +03:00
/tls/configure:
post:
tags:
- tls
operationId: tlsConfigure
summary: Updates current TLS configuration
requestBody:
$ref: "#/components/requestBodies/TlsConfig"
2019-02-21 17:33:46 +03:00
responses:
"200":
description: TLS configuration and its status
content:
application/json:
schema:
$ref: "#/components/schemas/TlsConfig"
"400":
description: Invalid configuration or unavailable port
"500":
description: Error occurred while applying configuration
2019-02-21 17:33:46 +03:00
/tls/validate:
post:
tags:
- tls
operationId: tlsValidate
summary: Checks if the current TLS configuration is valid
requestBody:
$ref: "#/components/requestBodies/TlsConfig"
2019-02-21 17:33:46 +03:00
responses:
"200":
description: TLS configuration and its status
content:
application/json:
schema:
$ref: "#/components/schemas/TlsConfig"
"400":
description: Invalid configuration or unavailable port
2018-11-06 12:22:44 +03:00
/dhcp/status:
2018-11-25 22:30:08 +03:00
get:
tags:
- dhcp
operationId: dhcpStatus
summary: Gets the current DHCP settings and status
2018-11-25 22:30:08 +03:00
responses:
"200":
2018-11-25 22:30:08 +03:00
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/DhcpStatus"
2018-11-06 12:22:44 +03:00
/dhcp/set_config:
2018-11-25 22:30:08 +03:00
post:
tags:
- dhcp
operationId: dhcpSetConfig
summary: Updates the current DHCP server configuration
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DhcpConfig"
description: DHCP configuration JSON
required: true
2018-11-25 22:30:08 +03:00
responses:
"200":
2018-11-25 22:30:08 +03:00
description: OK
/dhcp/find_active_dhcp:
post:
tags:
- dhcp
operationId: checkActiveDhcp
summary: Searches for an active DHCP server on the network
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/DhcpSearchResult"
2019-05-28 18:42:42 +03:00
/dhcp/add_static_lease:
post:
tags:
- dhcp
operationId: dhcpAddStaticLease
summary: Adds a static lease
requestBody:
$ref: "#/components/requestBodies/DhcpStaticLease"
2019-05-28 18:42:42 +03:00
responses:
"200":
2019-05-28 18:42:42 +03:00
description: OK
/dhcp/remove_static_lease:
post:
tags:
- dhcp
operationId: dhcpRemoveStaticLease
summary: Removes a static lease
requestBody:
$ref: "#/components/requestBodies/DhcpStaticLease"
2019-05-28 18:42:42 +03:00
responses:
"200":
2019-05-28 18:42:42 +03:00
description: OK
2019-10-23 18:52:58 +03:00
/dhcp/reset:
post:
tags:
- dhcp
operationId: dhcpReset
summary: Reset DHCP configuration
2019-10-23 18:52:58 +03:00
responses:
"200":
2019-10-23 18:52:58 +03:00
description: OK
/filtering/status:
get:
tags:
- filtering
operationId: filteringStatus
summary: Get filtering parameters
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/FilterStatus"
/filtering/config:
2018-08-30 17:25:33 +03:00
post:
tags:
- filtering
2019-09-06 17:19:04 +03:00
operationId: filteringConfig
summary: Set filtering parameters
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/FilterConfig"
required: true
2018-08-30 17:25:33 +03:00
responses:
"200":
2018-08-30 17:25:33 +03:00
description: OK
/filtering/add_url:
2019-05-07 10:46:02 +03:00
post:
2018-08-30 17:25:33 +03:00
tags:
- filtering
operationId: filteringAddURL
summary: Add filter URL or an absolute file path
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AddUrlRequest"
required: true
2018-08-30 17:25:33 +03:00
responses:
"200":
2018-08-30 17:25:33 +03:00
description: OK
/filtering/remove_url:
2019-05-07 10:46:02 +03:00
post:
2018-08-30 17:25:33 +03:00
tags:
- filtering
operationId: filteringRemoveURL
summary: Remove filter URL
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/RemoveUrlRequest"
required: true
2018-08-30 17:25:33 +03:00
responses:
"200":
2018-08-30 17:25:33 +03:00
description: OK
2019-09-06 17:19:04 +03:00
/filtering/set_url:
2018-08-30 17:25:33 +03:00
post:
tags:
- filtering
2019-09-06 17:19:04 +03:00
operationId: filteringSetURL
summary: Set URL parameters
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/FilterSetUrl"
2018-08-30 17:25:33 +03:00
responses:
"200":
2018-08-30 17:25:33 +03:00
description: OK
/filtering/refresh:
post:
tags:
- filtering
operationId: filteringRefresh
summary: >
2018-08-30 17:25:33 +03:00
Reload filtering rules from URLs
2018-08-30 17:25:33 +03:00
This might be needed if new URL was just added and you dont want to wait for automatic refresh to kick in.
2018-08-30 17:25:33 +03:00
This API request is ratelimited, so you can call it freely as often as you like, it wont create unneccessary burden on servers that host the URL.
2018-08-30 17:25:33 +03:00
This should work as intended, a `force` parameter is offered as last-resort attempt to make filter lists fresh.
2018-08-30 17:25:33 +03:00
If you ever find yourself using `force` to make something work that otherwise wont, this is a bug and report it accordingly.
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/FilterRefreshRequest"
2018-08-30 17:25:33 +03:00
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/FilterRefreshResponse"
2018-08-30 17:25:33 +03:00
/filtering/set_rules:
2019-05-07 10:46:02 +03:00
post:
2018-08-30 17:25:33 +03:00
tags:
- filtering
operationId: filteringSetRules
summary: Set user-defined filter rules
requestBody:
content:
text/plain:
schema:
type: string
example: "@@||yandex.ru^|"
description: All filtering rules, one line per rule
2018-08-30 17:25:33 +03:00
responses:
"200":
2018-08-30 17:25:33 +03:00
description: OK
/filtering/check_host:
get:
tags:
- filtering
operationId: filteringCheckHost
summary: Check if host name is filtered
parameters:
- name: name
in: query
2020-05-02 11:39:37 +03:00
description: Filter by host name
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/FilterCheckHostResponse"
2018-08-30 17:25:33 +03:00
/safebrowsing/enable:
post:
tags:
- safebrowsing
operationId: safebrowsingEnable
summary: Enable safebrowsing
2018-08-30 17:25:33 +03:00
responses:
"200":
2018-08-30 17:25:33 +03:00
description: OK
/safebrowsing/disable:
post:
tags:
- safebrowsing
operationId: safebrowsingDisable
summary: Disable safebrowsing
2018-08-30 17:25:33 +03:00
responses:
"200":
2018-08-30 17:25:33 +03:00
description: OK
/safebrowsing/status:
get:
tags:
- safebrowsing
operationId: safebrowsingStatus
summary: Get safebrowsing status
2018-08-30 17:25:33 +03:00
responses:
"200":
2018-08-30 17:25:33 +03:00
description: OK
content:
2018-08-30 17:25:33 +03:00
application/json:
examples:
response:
value:
enabled: false
2018-08-30 17:25:33 +03:00
/parental/enable:
post:
tags:
- parental
operationId: parentalEnable
summary: Enable parental filtering
requestBody:
content:
text/plain:
schema:
type: string
enum:
- EARLY_CHILDHOOD
- YOUNG
- TEEN
- MATURE
example: sensitivity=TEEN
description: |
Age sensitivity for parental filtering,
EARLY_CHILDHOOD is 3
YOUNG is 10
TEEN is 13
MATURE is 17
required: true
2018-08-30 17:25:33 +03:00
responses:
"200":
2018-08-30 17:25:33 +03:00
description: OK
/parental/disable:
post:
tags:
- parental
operationId: parentalDisable
summary: Disable parental filtering
2018-08-30 17:25:33 +03:00
responses:
"200":
2018-08-30 17:25:33 +03:00
description: OK
/parental/status:
get:
tags:
- parental
operationId: parentalStatus
summary: Get parental filtering status
2018-08-30 17:25:33 +03:00
responses:
"200":
2018-08-30 17:25:33 +03:00
description: OK
content:
2018-08-30 17:25:33 +03:00
application/json:
examples:
response:
value:
enabled: true
sensitivity: 13
2018-08-30 17:25:33 +03:00
/safesearch/enable:
post:
tags:
- safesearch
operationId: safesearchEnable
summary: Enable safesearch
2018-08-30 17:25:33 +03:00
responses:
"200":
2018-08-30 17:25:33 +03:00
description: OK
/safesearch/disable:
post:
tags:
- safesearch
operationId: safesearchDisable
summary: Disable safesearch
2018-08-30 17:25:33 +03:00
responses:
"200":
2018-08-30 17:25:33 +03:00
description: OK
/safesearch/status:
get:
tags:
- safesearch
operationId: safesearchStatus
summary: Get safesearch status
2018-08-30 17:25:33 +03:00
responses:
"200":
2018-08-30 17:25:33 +03:00
description: OK
content:
2018-08-30 17:25:33 +03:00
application/json:
examples:
response:
value:
enabled: false
/clients:
get:
tags:
- clients
operationId: clientsStatus
summary: Get information about configured clients
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Clients"
2019-05-07 10:45:18 +03:00
/clients/add:
post:
tags:
- clients
operationId: clientsAdd
summary: Add a new client
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Client"
required: true
2019-05-07 10:45:18 +03:00
responses:
"200":
2019-05-07 10:45:18 +03:00
description: OK
/clients/delete:
post:
tags:
- clients
operationId: clientsDelete
summary: Remove a client
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ClientDelete"
required: true
2019-05-07 10:45:18 +03:00
responses:
"200":
2019-05-07 10:45:18 +03:00
description: OK
/clients/update:
post:
tags:
- clients
operationId: clientsUpdate
summary: Update client information
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ClientUpdate"
required: true
2019-05-07 10:45:18 +03:00
responses:
"200":
2019-05-07 10:45:18 +03:00
description: OK
/clients/find:
get:
tags:
- clients
operationId: clientsFind
summary: Get information about selected clients by their IP address
parameters:
- name: ip0
in: query
2020-05-02 11:39:37 +03:00
description: Filter by IP address
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ClientsFindResponse"
2019-07-29 19:14:17 +03:00
/blocked_services/list:
get:
tags:
- blocked_services
operationId: blockedServicesList
summary: Get blocked services list
2019-07-29 19:14:17 +03:00
responses:
"200":
2019-07-29 19:14:17 +03:00
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/BlockedServicesArray"
2019-07-29 19:14:17 +03:00
/blocked_services/set:
post:
tags:
- blocked_services
operationId: blockedServicesSet
summary: Set blocked services list
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BlockedServicesArray"
2019-07-29 19:14:17 +03:00
responses:
"200":
2019-07-29 19:14:17 +03:00
description: OK
2019-07-26 17:09:46 +03:00
/rewrite/list:
get:
tags:
- rewrite
operationId: rewriteList
summary: Get list of Rewrite rules
2019-07-26 17:09:46 +03:00
responses:
"200":
2019-07-26 17:09:46 +03:00
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/RewriteList"
2019-07-26 17:09:46 +03:00
/rewrite/add:
post:
tags:
- rewrite
operationId: rewriteAdd
summary: Add a new Rewrite rule
requestBody:
$ref: "#/components/requestBodies/RewriteEntry"
2019-07-26 17:09:46 +03:00
responses:
"200":
2019-07-26 17:09:46 +03:00
description: OK
/rewrite/delete:
post:
tags:
- rewrite
operationId: rewriteDelete
summary: Remove a Rewrite rule
requestBody:
$ref: "#/components/requestBodies/RewriteEntry"
2019-07-26 17:09:46 +03:00
responses:
"200":
2019-07-26 17:09:46 +03:00
description: OK
2018-11-25 22:30:08 +03:00
/i18n/change_language:
post:
tags:
- i18n
operationId: changeLanguage
summary: Change current language. Argument must be an ISO 639-1 two-letter code
requestBody:
content:
text/plain:
schema:
type: string
example: en
description: New language. It must be known to the server and must be an ISO 639-1
two-letter code
2018-11-25 22:30:08 +03:00
responses:
"200":
2018-11-25 22:30:08 +03:00
description: OK
/i18n/current_language:
get:
tags:
- i18n
operationId: currentLanguage
summary: Get currently set language. Result is ISO 639-1 two-letter code. Empty
result means default language.
2018-11-25 22:30:08 +03:00
responses:
"200":
2018-11-25 22:30:08 +03:00
description: OK
content:
2018-11-25 22:30:08 +03:00
text/plain:
examples:
response:
value: en
/install/get_addresses:
get:
tags:
- install
operationId: installGetAddresses
summary: Gets the network interfaces information.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AddressesInfo"
2019-04-22 12:45:50 +03:00
/install/check_config:
post:
tags:
- install
operationId: installCheckConfig
summary: Checks configuration
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CheckConfigRequest"
description: Configuration to be checked
required: true
2019-04-22 12:45:50 +03:00
responses:
"200":
2019-04-22 12:45:50 +03:00
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/CheckConfigResponse"
"400":
description: Failed to parse JSON or cannot listen on the specified address
/install/configure:
post:
tags:
- install
operationId: installConfigure
summary: Applies the initial configuration.
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/InitialConfiguration"
description: Initial configuration JSON
required: true
responses:
"200":
description: OK
"400":
description: Failed to parse initial configuration or cannot listen to the
specified addresses
"500":
description: Cannot start the DNS server
2019-09-11 19:26:37 +03:00
/login:
post:
tags:
- global
operationId: login
summary: Perform administrator log-in
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Login"
required: true
2019-09-11 19:26:37 +03:00
responses:
"200":
2019-09-11 19:26:37 +03:00
description: OK
/logout:
get:
tags:
- global
operationId: logout
summary: Perform administrator log-out
2019-09-11 19:26:37 +03:00
responses:
"302":
2019-09-11 19:26:37 +03:00
description: OK
/profile:
get:
tags:
- global
operationId: getProfile
summary: ""
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ProfileInfo"
components:
requestBodies:
TlsConfig:
content:
application/json:
schema:
$ref: "#/components/schemas/TlsConfig"
description: TLS configuration JSON
required: true
DhcpStaticLease:
content:
application/json:
schema:
$ref: "#/components/schemas/DhcpStaticLease"
required: true
RewriteEntry:
content:
application/json:
schema:
$ref: "#/components/schemas/RewriteEntry"
required: true
schemas:
ServerStatus:
type: object
description: AdGuard Home server status and configuration
required:
- dns_address
- dns_port
- protection_enabled
- querylog_enabled
- running
- bootstrap_dns
- upstream_dns
- version
- language
properties:
dns_address:
type: string
example: 127.0.0.1
dns_port:
type: integer
format: int32
example: 53
minimum: 1
maximum: 65535
protection_enabled:
type: boolean
querylog_enabled:
type: boolean
running:
type: boolean
version:
type: string
example: "0.1"
language:
type: string
example: en
DNSConfig:
type: object
description: Query log configuration
properties:
2020-05-02 11:39:37 +03:00
bootstrap_dns:
type: array
description: Bootstrap servers, port is optional after colon. Empty value will
reset it to default values
items:
type: string
example:
- 8.8.8.8:53
- 1.1.1.1:53
upstream_dns:
type: array
description: Upstream servers, port is optional after colon. Empty value will
reset it to default values
items:
type: string
example:
- tls://1.1.1.1
- tls://1.0.0.1
protection_enabled:
type: boolean
ratelimit:
type: integer
blocking_mode:
type: string
enum:
- default
- nxdomain
- null_ip
- custom_ip
blocking_ipv4:
type: string
blocking_ipv6:
type: string
edns_cs_enabled:
type: boolean
dnssec_enabled:
type: boolean
cache_size:
type: integer
cache_ttl_min:
type: integer
cache_ttl_max:
type: integer
upstream_mode:
enum:
- ""
- parallel
- fastest_addr
UpstreamsConfig:
type: object
description: Upstreams configuration
required:
- bootstrap_dns
- upstream_dns
properties:
bootstrap_dns:
type: array
description: Bootstrap servers, port is optional after colon. Empty value will
reset it to default values
items:
type: string
example:
- 8.8.8.8:53
- 1.1.1.1:53
upstream_dns:
type: array
description: Upstream servers, port is optional after colon. Empty value will
reset it to default values
items:
type: string
example:
- tls://1.1.1.1
- tls://1.0.0.1
Filter:
type: object
description: Filter subscription info
required:
- enabled
- id
- lastUpdated
- name
- rulesCount
- url
properties:
enabled:
type: boolean
id:
type: integer
example: 1234
lastUpdated:
type: string
format: date-time
example: 2018-10-30T12:18:57+03:00
name:
type: string
example: AdGuard Simplified Domain Names filter
rulesCount:
type: integer
example: 5912
url:
type: string
example: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
FilterStatus:
type: object
description: Filtering settings
properties:
enabled:
type: boolean
interval:
type: integer
filters:
type: array
items:
$ref: "#/components/schemas/Filter"
user_rules:
type: array
items:
type: string
FilterConfig:
type: object
description: Filtering settings
properties:
enabled:
type: boolean
interval:
type: integer
FilterSetUrl:
type: object
description: Filtering URL settings
properties:
url:
type: string
enabled:
type: boolean
FilterRefreshRequest:
type: object
description: Refresh Filters request data
properties:
whitelist:
type: boolean
FilterCheckHostResponse:
type: object
description: Check Host Result
properties:
reason:
type: string
description: DNS filter status
enum:
- NotFilteredNotFound
- NotFilteredWhiteList
- NotFilteredError
- FilteredBlackList
- FilteredSafeBrowsing
- FilteredParental
- FilteredInvalid
- FilteredSafeSearch
- FilteredBlockedService
- ReasonRewrite
filter_id:
type: integer
rule:
type: string
example: "||example.org^"
description: Filtering rule applied to the request (if any)
service_name:
type: string
description: Set if reason=FilteredBlockedService
cname:
type: string
description: Set if reason=ReasonRewrite
ip_addrs:
type: array
items:
type: string
description: Set if reason=ReasonRewrite
FilterRefreshResponse:
type: object
description: /filtering/refresh response data
properties:
updated:
type: integer
GetVersionRequest:
type: object
description: /version.json request data
properties:
recheck_now:
description: If false, server will check for a new version data only once in
several hours
type: boolean
VersionInfo:
type: object
description: Information about the latest available version of AdGuard Home
properties:
new_version:
type: string
example: v0.9
announcement:
type: string
example: AdGuard Home v0.9 is now available!
announcement_url:
type: string
example: https://github.com/AdguardTeam/AdGuardHome/releases/tag/v0.9
can_autoupdate:
type: boolean
Stats:
type: object
description: Server statistics data
properties:
time_units:
type: string
description: Time units (hours | days)
example: hours
num_dns_queries:
type: integer
description: Total number of DNS queries
example: 123
num_blocked_filtering:
type: integer
description: Number of requests blocked by filtering rules
example: 50
num_replaced_safebrowsing:
type: integer
description: Number of requests blocked by safebrowsing module
example: 5
num_replaced_safesearch:
type: integer
description: Number of requests blocked by safesearch module
example: 5
num_replaced_parental:
type: integer
description: Number of blocked adult websites
example: 15
avg_processing_time:
type: number
format: float
description: Average time in milliseconds on processing a DNS
example: 0.34
top_queried_domains:
type: array
items:
$ref: "#/components/schemas/TopArrayEntry"
top_clients:
type: array
items:
$ref: "#/components/schemas/TopArrayEntry"
top_blocked_domains:
type: array
items:
$ref: "#/components/schemas/TopArrayEntry"
dns_queries:
type: array
items:
type: integer
blocked_filtering:
type: array
items:
type: integer
replaced_safebrowsing:
type: array
items:
type: integer
replaced_parental:
type: array
items:
type: integer
TopArrayEntry:
type: object
description: Represent the number of hits per key (domain or client IP)
properties:
domain_or_ip:
type: integer
StatsConfig:
type: object
description: Statistics configuration
properties:
interval:
type: integer
description: Time period to keep data (1 | 7 | 30 | 90)
DhcpConfig:
type: object
description: Built-in DHCP server configuration
required:
- enabled
- gateway_ip
- subnet_mask
- range_start
- range_end
- lease_duration
properties:
enabled:
type: boolean
gateway_ip:
type: string
example: 192.168.1.1
subnet_mask:
type: string
example: 255.255.255.0
range_start:
type: string
example: 192.168.1.2
range_end:
type: string
example: 192.168.10.50
lease_duration:
type: string
example: 12h
DhcpLease:
type: object
description: DHCP lease information
required:
- mac
- ip
- hostname
- expires
properties:
mac:
type: string
example: 00:11:09:b3:b3:b8
ip:
type: string
example: 192.168.1.22
hostname:
type: string
example: dell
expires:
type: string
format: date-time
example: 2017-07-21T17:32:28Z
DhcpStaticLease:
type: object
description: DHCP static lease information
required:
- mac
- ip
- hostname
- expires
properties:
mac:
type: string
example: 00:11:09:b3:b3:b8
ip:
type: string
example: 192.168.1.22
hostname:
type: string
example: dell
DhcpStatus:
type: object
description: Built-in DHCP server configuration and status
required:
- config
- leases
properties:
config:
$ref: "#/components/schemas/DhcpConfig"
leases:
type: array
items:
$ref: "#/components/schemas/DhcpLease"
static_leases:
type: array
items:
$ref: "#/components/schemas/DhcpStaticLease"
DhcpSearchResult:
type: object
description: Information about a DHCP server discovered in the current network
properties:
other_server:
$ref: "#/components/schemas/DhcpSearchResultOtherServer"
static_ip:
$ref: "#/components/schemas/DhcpSearchResultStaticIP"
DhcpSearchResultOtherServer:
type: object
properties:
found:
type: string
description: yes|no|error
example: no
error:
type: string
description: Set if found=error
example: ""
DhcpSearchResultStaticIP:
type: object
properties:
static:
type: string
description: yes|no|error
example: yes
ip:
type: string
description: Set if static=no
example: ""
DnsAnswer:
type: object
description: DNS answer section
properties:
ttl:
type: integer
example: 55
type:
type: string
example: A
value:
type: string
example: 217.69.139.201
DnsQuestion:
type: object
description: DNS question section
properties:
class:
type: string
example: IN
host:
type: string
example: example.org
type:
type: string
example: A
AddUrlRequest:
type: object
description: /add_url request data
properties:
name:
type: string
url:
description: URL or an absolute path to the file containing filtering rules
type: string
example: https://filters.adtidy.org/windows/filters/15.txt
RemoveUrlRequest:
type: object
description: /remove_url request data
properties:
url:
description: Previously added URL containing filtering rules
type: string
example: https://filters.adtidy.org/windows/filters/15.txt
QueryLogItem:
type: object
description: Query log item
properties:
answer:
type: array
items:
$ref: "#/components/schemas/DnsAnswer"
original_answer:
type: array
description: Answer from upstream server (optional)
items:
$ref: "#/components/schemas/DnsAnswer"
2020-05-28 17:58:56 +03:00
upstream:
type: string
description: Upstream URL starting with tcp://, tls://, https://, or with an IP address
answer_dnssec:
type: boolean
client:
type: string
example: 192.168.0.1
2020-05-29 11:19:31 +03:00
client_proto:
2020-05-29 11:46:37 +03:00
enum:
- dot
- doh
- ""
elapsedMs:
type: string
example: "54.023928"
question:
$ref: "#/components/schemas/DnsQuestion"
filterId:
type: integer
example: 123123
description: In case if there's a rule applied to this DNS request, this is ID of
the filter that rule belongs to.
rule:
type: string
example: "||example.org^"
description: Filtering rule applied to the request (if any)
reason:
type: string
description: DNS filter status
enum:
- NotFilteredNotFound
- NotFilteredWhiteList
- NotFilteredError
- FilteredBlackList
- FilteredSafeBrowsing
- FilteredParental
- FilteredInvalid
- FilteredSafeSearch
- FilteredBlockedService
- ReasonRewrite
service_name:
type: string
description: Set if reason=FilteredBlockedService
status:
type: string
description: DNS response status
example: NOERROR
time:
type: string
description: DNS request processing start time
example: 2018-11-26T00:02:41+03:00
QueryLog:
type: object
description: Query log
properties:
oldest:
type: string
example: 2018-11-26T00:02:41+03:00
data:
type: array
items:
$ref: "#/components/schemas/QueryLogItem"
QueryLogConfig:
type: object
description: Query log configuration
properties:
enabled:
type: boolean
description: Is query log enabled
interval:
type: integer
description: Time period to keep data (1 | 7 | 30 | 90)
anonymize_client_ip:
type: boolean
description: Anonymize clients' IP addresses
TlsConfig:
type: object
description: TLS configuration settings and status
properties:
enabled:
type: boolean
example: "true"
description: enabled is the encryption (DOT/DOH/HTTPS) status
server_name:
type: string
example: example.org
description: server_name is the hostname of your HTTPS/TLS server
force_https:
type: boolean
example: "true"
description: if true, forces HTTP->HTTPS redirect
port_https:
type: integer
format: int32
example: 443
description: HTTPS port. If 0, HTTPS will be disabled.
port_dns_over_tls:
type: integer
format: int32
example: 853
description: DNS-over-TLS port. If 0, DOT will be disabled.
certificate_chain:
type: string
description: Base64 string with PEM-encoded certificates chain
private_key:
type: string
description: Base64 string with PEM-encoded private key
certificate_path:
type: string
description: Path to certificate file
private_key_path:
type: string
description: Path to private key file
valid_cert:
type: boolean
example: "true"
description: valid_cert is true if the specified certificates chain is a valid
chain of X509 certificates
valid_chain:
type: boolean
example: "true"
description: valid_chain is true if the specified certificates chain is verified
and issued by a known CA
subject:
type: string
example: CN=example.org
description: subject is the subject of the first certificate in the chain
issuer:
type: string
example: CN=Let's Encrypt Authority X3,O=Let's Encrypt,C=US
description: issuer is the issuer of the first certificate in the chain
not_before:
type: string
example: 2019-01-31T10:47:32Z
description: not_before is the NotBefore field of the first certificate in the
chain
not_after:
type: string
example: 2019-05-01T10:47:32Z
description: not_after is the NotAfter field of the first certificate in the chain
dns_names:
type: array
items:
type: string
description: dns_names is the value of SubjectAltNames field of the first
certificate in the chain
example:
- "*.example.org"
valid_key:
type: boolean
example: "true"
description: valid_key is true if the key is a valid private key
key_type:
type: string
example: RSA
description: key_type is either RSA or ECDSA
warning_validation:
type: string
example: You have specified an empty certificate
description: warning_validation is a validation warning message with the issue
description
valid_pair:
type: boolean
example: "true"
description: valid_pair is true if both certificate and private key are correct
NetInterface:
type: object
description: Network interface info
properties:
flags:
type: string
example: up|broadcast|multicast
hardware_address:
type: string
example: 52:54:00:11:09:ba
mtu:
type: integer
format: int32
example: 1500
name:
type: string
example: eth0
ip_addresses:
type: array
items:
type: string
example:
- 127.0.0.1
AddressInfo:
type: object
description: Port information
properties:
ip:
type: string
example: 127.0.0.1
port:
type: integer
format: int32
example: 53
AddressesInfo:
type: object
description: AdGuard Home addresses configuration
properties:
dns_port:
type: integer
format: int32
example: 53
web_port:
type: integer
format: int32
example: 80
interfaces:
type: object
description: Network interfaces dictionary (key is the interface name)
additionalProperties:
$ref: "#/components/schemas/NetInterface"
ProfileInfo:
type: object
description: Information about the current user
properties:
name:
type: string
Client:
type: object
description: Client information
properties:
name:
type: string
description: Name
example: localhost
ids:
type: array
description: IP, CIDR or MAC address
items:
type: string
use_global_settings:
type: boolean
filtering_enabled:
type: boolean
parental_enabled:
type: boolean
safebrowsing_enabled:
type: boolean
safesearch_enabled:
type: boolean
use_global_blocked_services:
type: boolean
blocked_services:
type: array
items:
type: string
upstreams:
type: array
items:
type: string
ClientAuto:
type: object
description: Auto-Client information
properties:
ip:
type: string
description: IP address
example: 127.0.0.1
name:
type: string
description: Name
example: localhost
source:
type: string
description: The source of this information
example: etc/hosts
ClientUpdate:
type: object
description: Client update request
properties:
name:
type: string
data:
$ref: "#/components/schemas/Client"
ClientDelete:
type: object
description: Client delete request
properties:
name:
type: string
ClientsFindResponse:
type: array
description: Response to clients find operation
items:
$ref: "#/components/schemas/ClientsFindEntry"
ClientsFindEntry:
type: object
properties:
1.2.3.4:
items:
$ref: "#/components/schemas/Client"
Clients:
type: object
properties:
clients:
$ref: "#/components/schemas/ClientsArray"
auto_clients:
$ref: "#/components/schemas/ClientsAutoArray"
ClientsArray:
type: array
items:
$ref: "#/components/schemas/Client"
description: Clients array
ClientsAutoArray:
type: array
items:
$ref: "#/components/schemas/ClientAuto"
description: Auto-Clients array
RewriteList:
type: array
items:
$ref: "#/components/schemas/RewriteEntry"
description: Rewrite rules array
RewriteEntry:
type: object
description: Rewrite rule
properties:
domain:
type: string
description: Domain name
example: example.org
answer:
type: string
description: value of A, AAAA or CNAME DNS record
example: 127.0.0.1
BlockedServicesArray:
type: array
items:
type: string
CheckConfigRequest:
type: object
description: Configuration to be checked
properties:
dns:
$ref: "#/components/schemas/CheckConfigRequestInfo"
web:
$ref: "#/components/schemas/CheckConfigRequestInfo"
set_static_ip:
type: boolean
example: false
CheckConfigRequestInfo:
type: object
properties:
ip:
type: string
example: 127.0.0.1
port:
type: integer
format: int32
example: 53
autofix:
type: boolean
example: false
CheckConfigResponse:
type: object
properties:
dns:
$ref: "#/components/schemas/CheckConfigResponseInfo"
web:
$ref: "#/components/schemas/CheckConfigResponseInfo"
static_ip:
$ref: "#/components/schemas/CheckConfigStaticIpInfo"
CheckConfigResponseInfo:
type: object
properties:
status:
type: string
example: ""
can_autofix:
type: boolean
example: false
CheckConfigStaticIpInfo:
type: object
properties:
static:
type: string
example: no
description: "Can be: yes, no, error"
ip:
type: string
example: 192.168.1.1
description: Current dynamic IP address. Set if static=no
error:
type: string
example: ""
description: Error text. Set if static=error
InitialConfiguration:
type: object
description: AdGuard Home initial configuration (for the first-install wizard)
properties:
dns:
$ref: "#/components/schemas/AddressInfo"
web:
$ref: "#/components/schemas/AddressInfo"
username:
type: string
description: Basic auth username
example: admin
password:
type: string
description: Basic auth password
example: password
Login:
type: object
description: Login request data
properties:
username:
type: string
description: User name
password:
type: string
2020-05-02 11:39:37 +03:00
description: Password