node-powerdns
    Preparing search index...

    Class Client<E>

    PowerDNS Authoritative HTTP API client.

    This client is a thin wrapper around the endpoints documented by PowerDNS and keeps request and response payloads close to the upstream API.

    Type Parameters

    • E = any

      Optional caller-defined metadata stored on the client instance.

    Index

    Constructors

    • Creates a client for a PowerDNS Authoritative webserver.

      Type Parameters

      • E = any

        Optional caller-defined metadata stored on the client instance.

      Parameters

      • _config: {
            apiKey: string;
            baseUrl: string;
            extra?: E;
            fetch?: {
                (input: URL | RequestInfo, init?: RequestInit): Promise<Response>;
                (input: string | URL | Request, init?: RequestInit): Promise<Response>;
            };
            logger?: { error?: (error: Error) => void };
            server?: { id: string };
            version?: string;
        }

        Connection details for the PowerDNS API.

        • apiKey: string
        • baseUrl: string
        • Optionalextra?: E
        • Optionalfetch?: {
              (input: URL | RequestInfo, init?: RequestInit): Promise<Response>;
              (input: string | URL | Request, init?: RequestInit): Promise<Response>;
          }
        • Optionallogger?: { error?: (error: Error) => void }
        • Optionalserver?: { id: string }
        • Optionalversion?: string

      Returns Client<E>

    Properties

    autoprimaries: {
        create: (
            autoprimary: Autoprimary,
            server?: { id: string },
        ) => Promise<void>;
        delete: (
            autoprimary: Pick<Autoprimary, "ip" | "nameserver">,
            server?: { id: string },
        ) => Promise<void>;
        list: (server?: { id: string }) => Promise<Autoprimary[]>;
    } = ...

    Access to autoprimary endpoints.

    cache: {
        flush: (
            options: { domain: string },
            server?: { id: string },
        ) => Promise<CacheFlushResult>;
    } = ...

    Access to cache maintenance endpoints.

    config: { get: (server?: { id: string }) => Promise<ConfigSetting[]> } = ...

    Access to /servers/{server_id}/config.

    Type Declaration

    • get: (server?: { id: string }) => Promise<ConfigSetting[]>

      Lists PowerDNS configuration settings for a server.

    cryptokeys: {
        create: (
            zone: { id: string },
            key: CryptokeyCreateRequest,
            server?: { id: string },
        ) => Promise<Cryptokey>;
        delete: (
            zone: { id: string },
            key: { id: string },
            server?: { id: string },
        ) => Promise<void>;
        get: (
            zone: { id: string },
            key: { id: string },
            server?: { id: string },
        ) => Promise<Cryptokey>;
        list: (
            zone: { id: string },
            server?: { id: string },
        ) => Promise<Cryptokey[]>;
        update: (
            zone: { id: string },
            key: { id: string } & Pick<Cryptokey, "active" | "published">,
            server?: { id: string },
        ) => Promise<void>;
    } = ...

    Access to DNSSEC cryptokey endpoints.

    metadata: {
        create: (
            zone: { id: string },
            metadata: Pick<Metadata, "kind" | "metadata">,
            server?: { id: string },
        ) => Promise<void>;
        delete: (
            zone: { id: string },
            metadata: { kind: string },
            server?: { id: string },
        ) => Promise<void>;
        get: (
            zone: { id: string },
            metadata: { kind: string },
            server?: { id: string },
        ) => Promise<Metadata>;
        list: (
            zone: { id: string },
            server?: { id: string },
        ) => Promise<Metadata[]>;
        update: (
            zone: { id: string },
            metadata: Pick<Metadata, "kind" | "metadata">,
            server?: { id: string },
        ) => Promise<Metadata>;
    } = ...

    Access to zone metadata endpoints.

    metrics: { get: () => Promise<string> } = ...

    Access to the webserver /metrics endpoint.

    Type Declaration

    • get: () => Promise<string>

      Reads Prometheus-style metrics text from the PowerDNS webserver.

    networks: {
        get: (
            network: { ip: string; prefixlen: string | number },
            server?: { id: string },
        ) => Promise<NetworkList>;
        list: (server?: { id: string }) => Promise<NetworkList>;
        set: (
            network: { ip: string; prefixlen: string | number },
            update: NetworkUpdateRequest,
            server?: { id: string },
        ) => Promise<void>;
    } = ...

    Access to network-to-view mapping endpoints.

    search: {
        list: (
            query: {
                max?: number;
                object_type?: "record" | "zone" | "comment" | "all";
                q: string;
            },
            server?: { id: string },
        ) => Promise<SearchResult[]>;
    } = ...

    Access to the search endpoint.

    servers: {
        get: (server?: { id: string }) => Promise<Server>;
        list: () => Promise<Server[]>;
    } = ...

    Access to /servers.

    Type Declaration

    • get: (server?: { id: string }) => Promise<Server>

      Gets a single PowerDNS server description.

    • list: () => Promise<Server[]>

      Lists available PowerDNS servers.

    statistics: {
        get: (
            options?: Partial<{ includerings: boolean; statistic: string }>,
            server?: { id: string },
        ) => Promise<Statistic[]>;
    } = ...

    Access to statistics endpoints.

    tsigkeys: {
        create: (
            key: Pick<TSIGKey, "algorithm" | "name"> & { key?: string },
            server?: { id: string },
        ) => Promise<TSIGKey>;
        delete: (key: { id: string }, server?: { id: string }) => Promise<void>;
        get: (key: { id: string }, server?: { id: string }) => Promise<TSIGKey>;
        list: (server?: { id: string }) => Promise<TSIGKey[]>;
        update: (
            key: { id: string } & Partial<
                Pick<TSIGKey, "algorithm" | "name" | "key">,
            >,
            server?: { id: string },
        ) => Promise<TSIGKey>;
    } = ...

    Access to TSIG key endpoints.

    views: {
        addZone: (
            view: string,
            zone: ViewZoneInput,
            server?: { id: string },
        ) => Promise<void>;
        get: (view: string, server?: { id: string }) => Promise<View>;
        list: (server?: { id: string }) => Promise<ViewList>;
        removeZone: (
            view: string,
            zone: { id: string },
            server?: { id: string },
        ) => Promise<void>;
    } = ...

    Access to view endpoints.

    Accessors

    • get baseUrl(): URL

      Base URL for API requests without the version suffix.

      Returns URL

    • get extra(): E | undefined

      Caller-supplied metadata attached to this client instance.

      Returns E | undefined

    • get server(): { id: string }

      Default PowerDNS server target.

      PowerDNS commonly exposes the authoritative server as localhost. When the caller omits a server id, the client falls back to that value.

      Returns { id: string }

    • get version(): string | undefined

      Configured PowerDNS API version path such as /api/v1.

      Returns string | undefined

    • get webserverUrl(): URL

      Base PowerDNS webserver URL with a trailing slash.

      This is used for non-versioned endpoints like /metrics.

      Returns URL

    Methods

    • Access to zone endpoints under /servers/{server_id}/zones.

      Parameters

      • server: { id: string } = ...

        Optional server override for all returned zone helpers.

      Returns {
          axfrRetrieve: (zone: { id: string }) => Promise<void>;
          create: (
              zone: ZoneCreateRequest,
              options?: Partial<{ rrsets: boolean }>,
          ) => Promise<Zone>;
          delete: (zone: Pick<Zone, "id">) => Promise<void>;
          export: (zone: { id: string }) => Promise<string>;
          get: (
              zone: { id: string },
              options?: Partial<
                  {
                      include_disabled: boolean;
                      rrset_name: string;
                      rrset_type: string;
                      rrsets: boolean;
                  },
              >,
          ) => Promise<Zone>;
          list: (
              options?: Partial<{ dnssec: boolean; zone: string }>,
          ) => Promise<ZoneSummary[]>;
          notify: (zone: { id: string }) => Promise<void>;
          rectify: (zone: { id: string }) => Promise<string>;
          rrset: (
              zone: { id: string },
              target: { name: string; ttl?: number; type: string },
          ) => {
              create: (
                  item: Partial<
                      {
                          comments: Comment
                          | Comment[]
                          | undefined;
                          record: Record | Record[] | undefined;
                      },
                  >,
              ) => Promise<{}>;
              delete: () => Promise<void>;
              update: (
                  update: Partial<
                      {
                          comments: | Comment[]
                          | ((comment: Comment, index: number, array: Comment[]) => boolean);
                          records:
                              | Record[]
                              | ((record: Record, index: number, array: Record[]) => boolean);
                      },
                  >,
              ) => Promise<{}>;
          };
          update: (zone: ZoneUpdateRequest & Pick<Zone, "id">) => Promise<void>;
      }

      • axfrRetrieve: (zone: { id: string }) => Promise<void>

        Triggers an AXFR retrieve operation for a secondary zone.

      • create: (
            zone: ZoneCreateRequest,
            options?: Partial<{ rrsets: boolean }>,
        ) => Promise<Zone>

        Creates a zone.

      • delete: (zone: Pick<Zone, "id">) => Promise<void>

        Deletes a zone.

      • export: (zone: { id: string }) => Promise<string>

        Exports a zone in text form.

      • get: (
            zone: { id: string },
            options?: Partial<
                {
                    include_disabled: boolean;
                    rrset_name: string;
                    rrset_type: string;
                    rrsets: boolean;
                },
            >,
        ) => Promise<Zone>

        Reads a zone by id.

      • list: (options?: Partial<{ dnssec: boolean; zone: string }>) => Promise<ZoneSummary[]>

        Lists zones for the selected server.

      • notify: (zone: { id: string }) => Promise<void>

        Sends DNS NOTIFY for a zone.

      • rectify: (zone: { id: string }) => Promise<string>

        Rectifies DNSSEC records for a zone.

      • rrset: (
            zone: { id: string },
            target: { name: string; ttl?: number; type: string },
        ) => {
            create: (
                item: Partial<
                    {
                        comments: Comment
                        | Comment[]
                        | undefined;
                        record: Record | Record[] | undefined;
                    },
                >,
            ) => Promise<{}>;
            delete: () => Promise<void>;
            update: (
                update: Partial<
                    {
                        comments: | Comment[]
                        | ((comment: Comment, index: number, array: Comment[]) => boolean);
                        records:
                            | Record[]
                            | ((record: Record, index: number, array: Record[]) => boolean);
                    },
                >,
            ) => Promise<{}>;
        }

        Creates RRSet mutation helpers for a zone.

      • update: (zone: ZoneUpdateRequest & Pick<Zone, "id">) => Promise<void>

        Updates zone metadata using the zone PUT endpoint.