UniFi Network API — DNS policy management.
Create and manage DNS records and forwarding rules.
Supported record types
A_RECORD— IPv4 address mappingAAAA_RECORD— IPv6 address mappingCNAME_RECORD— canonical name aliasMX_RECORD— mail exchangeTXT_RECORD— text recordSRV_RECORD— service locatorFORWARD_DOMAIN— domain forwarding
Summary
Functions
Creates a new DNS policy.
Deletes a DNS policy.
Gets a specific DNS policy.
Lists all DNS policies on a site.
Returns a lazy stream that auto-paginates through all DNS policies.
Updates an existing DNS policy.
Functions
@spec create(Req.Request.t(), String.t(), map()) :: {:ok, term()} | {:error, UnifiApi.Error.t()}
Creates a new DNS policy.
Examples
# A record
{:ok, _} = UnifiApi.Network.DNS.create(client, site_id, %{
type: "A_RECORD",
name: "app.local",
value: "192.168.1.50"
})
# CNAME record
{:ok, _} = UnifiApi.Network.DNS.create(client, site_id, %{
type: "CNAME_RECORD",
name: "www.local",
value: "app.local"
})
@spec delete(Req.Request.t(), String.t(), String.t()) :: {:ok, term()} | {:error, UnifiApi.Error.t()}
Deletes a DNS policy.
Examples
{:ok, _} = UnifiApi.Network.DNS.delete(client, site_id, policy_id)
@spec get(Req.Request.t(), String.t(), String.t()) :: {:ok, term()} | {:error, UnifiApi.Error.t()}
Gets a specific DNS policy.
Examples
{:ok, policy} = UnifiApi.Network.DNS.get(client, site_id, policy_id)
@spec list(Req.Request.t(), String.t(), keyword()) :: {:ok, term()} | {:error, UnifiApi.Error.t()}
Lists all DNS policies on a site.
Options
Supports pagination: :offset, :limit, :filter.
Examples
{:ok, policies} = UnifiApi.Network.DNS.list(client, site_id)
@spec stream(Req.Request.t(), String.t(), keyword()) :: Enumerable.t()
Returns a lazy stream that auto-paginates through all DNS policies.
Error contract
A mid-stream error does not raise by default: the stream halts and
yields {:error, %UnifiApi.StreamError{}, last_offset} as its final
element, so the enumerable is heterogeneous. Match the tail:
case Enum.to_list(stream) do
items when is_list(items) ->
case List.last(items) do
{:error, error, cursor} -> {:error, error, cursor}
_ -> {:ok, items}
end
endPass raise_errors: true to raise UnifiApi.StreamError instead.
Options
:max_pages— halt after this many successful pages (default: unbounded).:max_items— halt once this many items have been yielded (default: unbounded).:raise_errors— raiseUnifiApi.StreamErroron error instead of yielding the error tuple (default:false).
Examples
UnifiApi.Network.DNS.stream(client, site_id, raise_errors: true)
|> Enum.group_by(& &1["type"])
@spec update(Req.Request.t(), String.t(), String.t(), map()) :: {:ok, term()} | {:error, UnifiApi.Error.t()}
Updates an existing DNS policy.
Examples
{:ok, _} = UnifiApi.Network.DNS.update(client, site_id, policy_id, %{
value: "192.168.1.51"
})