openapi: 3.1.0 info: title: Infoblox WAPI (Web API) DHCP DNS Records API description: RESTful API for managing Infoblox NIOS DDI (DNS, DHCP, IPAM) services, network objects, and configuration. The WAPI uses standard HTTP methods for CRUD operations and supports JSON and XML input and output formats. Authentication is handled via HTTP basic authentication or certificate-based authentication, and sessions can be maintained using cookies returned after initial authentication. The API follows a resource-oriented design where each NIOS object type is accessible as a REST resource. version: '2.12' contact: name: Infoblox Support email: support@infoblox.com url: https://www.infoblox.com/support/ termsOfService: https://www.infoblox.com/company/legal/website-terms-and-conditions/ servers: - url: https://{grid-master}/wapi/v2.12 description: Infoblox NIOS Grid Master variables: grid-master: default: grid-master.example.com description: The hostname or IP address of the Infoblox NIOS Grid Master appliance. security: - basicAuth: [] - cookieAuth: [] tags: - name: DNS Records description: Operations for managing DNS resource records including A, AAAA, CNAME, MX, PTR, TXT, SRV, and NS records. paths: /record:a: get: operationId: listARecords summary: Infoblox List DNS A records description: Retrieves a list of DNS A records from the Infoblox appliance. Supports filtering by name, IP address, view, zone, and other fields. Use the _return_fields parameter to specify which fields to include in the response. Results can be paginated using _max_results and _paging parameters. tags: - DNS Records parameters: - $ref: '#/components/parameters/ReturnFields' - $ref: '#/components/parameters/MaxResults' - $ref: '#/components/parameters/Paging' - $ref: '#/components/parameters/PageId' - name: name in: query description: Filter by the fully qualified domain name of the A record. schema: type: string - name: ipv4addr in: query description: Filter by the IPv4 address of the A record. schema: type: string format: ipv4 - name: view in: query description: Filter by the DNS view name. schema: type: string - name: zone in: query description: Filter by the DNS zone name. schema: type: string responses: '200': description: Successfully retrieved list of A records. content: application/json: schema: type: array items: $ref: '#/components/schemas/RecordA' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createARecord summary: Infoblox Create a DNS A record description: Creates a new DNS A record with the specified name and IPv4 address. The record is created in the specified DNS view, or the default view if none is specified. Returns the object reference of the newly created record. tags: - DNS Records requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RecordACreate' responses: '201': description: Successfully created the A record. content: application/json: schema: type: string description: The object reference of the newly created record. '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /record:a/{ref}: get: operationId: getARecord summary: Infoblox Get a DNS A record description: Retrieves a specific DNS A record by its object reference. Use the _return_fields parameter to specify which fields to include in the response. tags: - DNS Records parameters: - $ref: '#/components/parameters/ObjectRef' - $ref: '#/components/parameters/ReturnFields' responses: '200': description: Successfully retrieved the A record. content: application/json: schema: $ref: '#/components/schemas/RecordA' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' put: operationId: updateARecord summary: Infoblox Update a DNS A record description: Updates an existing DNS A record identified by its object reference. Only the fields included in the request body are modified. Returns the object reference of the updated record. tags: - DNS Records parameters: - $ref: '#/components/parameters/ObjectRef' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RecordAUpdate' responses: '200': description: Successfully updated the A record. content: application/json: schema: type: string description: The object reference of the updated record. '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' delete: operationId: deleteARecord summary: Infoblox Delete a DNS A record description: Deletes a DNS A record identified by its object reference. Returns the object reference of the deleted record. tags: - DNS Records parameters: - $ref: '#/components/parameters/ObjectRef' responses: '200': description: Successfully deleted the A record. content: application/json: schema: type: string description: The object reference of the deleted record. '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /record:aaaa: get: operationId: listAAAARecords summary: Infoblox List DNS AAAA records description: Retrieves a list of DNS AAAA (IPv6 address) records. Supports filtering by name, IPv6 address, view, and zone. tags: - DNS Records parameters: - $ref: '#/components/parameters/ReturnFields' - $ref: '#/components/parameters/MaxResults' - name: name in: query description: Filter by the fully qualified domain name. schema: type: string - name: ipv6addr in: query description: Filter by the IPv6 address. schema: type: string format: ipv6 - name: view in: query description: Filter by the DNS view name. schema: type: string responses: '200': description: Successfully retrieved list of AAAA records. content: application/json: schema: type: array items: $ref: '#/components/schemas/RecordAAAA' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createAAAARecord summary: Infoblox Create a DNS AAAA record description: Creates a new DNS AAAA record mapping a domain name to an IPv6 address. tags: - DNS Records requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RecordAAAACreate' responses: '201': description: Successfully created the AAAA record. content: application/json: schema: type: string '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /record:cname: get: operationId: listCNAMERecords summary: Infoblox List DNS CNAME records description: Retrieves a list of DNS CNAME (canonical name) records. Supports filtering by name, canonical name, view, and zone. tags: - DNS Records parameters: - $ref: '#/components/parameters/ReturnFields' - $ref: '#/components/parameters/MaxResults' - name: name in: query description: Filter by the alias name. schema: type: string - name: canonical in: query description: Filter by the canonical (target) name. schema: type: string - name: view in: query description: Filter by the DNS view name. schema: type: string responses: '200': description: Successfully retrieved list of CNAME records. content: application/json: schema: type: array items: $ref: '#/components/schemas/RecordCNAME' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createCNAMERecord summary: Infoblox Create a DNS CNAME record description: Creates a new DNS CNAME record mapping an alias name to a canonical name. tags: - DNS Records requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RecordCNAMECreate' responses: '201': description: Successfully created the CNAME record. content: application/json: schema: type: string '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /record:mx: get: operationId: listMXRecords summary: Infoblox List DNS MX records description: Retrieves a list of DNS MX (mail exchange) records. Supports filtering by name, mail exchanger, preference, view, and zone. tags: - DNS Records parameters: - $ref: '#/components/parameters/ReturnFields' - $ref: '#/components/parameters/MaxResults' - name: name in: query description: Filter by the domain name. schema: type: string - name: mail_exchanger in: query description: Filter by the mail exchanger hostname. schema: type: string - name: view in: query description: Filter by the DNS view name. schema: type: string responses: '200': description: Successfully retrieved list of MX records. content: application/json: schema: type: array items: $ref: '#/components/schemas/RecordMX' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createMXRecord summary: Infoblox Create a DNS MX record description: Creates a new DNS MX record specifying a mail exchanger for a domain. tags: - DNS Records requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RecordMXCreate' responses: '201': description: Successfully created the MX record. content: application/json: schema: type: string '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /record:txt: get: operationId: listTXTRecords summary: Infoblox List DNS TXT records description: Retrieves a list of DNS TXT records. Supports filtering by name, text content, view, and zone. tags: - DNS Records parameters: - $ref: '#/components/parameters/ReturnFields' - $ref: '#/components/parameters/MaxResults' - name: name in: query description: Filter by the domain name. schema: type: string - name: view in: query description: Filter by the DNS view name. schema: type: string responses: '200': description: Successfully retrieved list of TXT records. content: application/json: schema: type: array items: $ref: '#/components/schemas/RecordTXT' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createTXTRecord summary: Infoblox Create a DNS TXT record description: Creates a new DNS TXT record with the specified text data. tags: - DNS Records requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RecordTXTCreate' responses: '201': description: Successfully created the TXT record. content: application/json: schema: type: string '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /record:ptr: get: operationId: listPTRRecords summary: Infoblox List DNS PTR records description: Retrieves a list of DNS PTR (pointer) records used for reverse DNS lookups. Supports filtering by name, ptrdname, view, and zone. tags: - DNS Records parameters: - $ref: '#/components/parameters/ReturnFields' - $ref: '#/components/parameters/MaxResults' - name: ptrdname in: query description: Filter by the domain name the PTR record points to. schema: type: string - name: ipv4addr in: query description: Filter by the IPv4 address for the PTR record. schema: type: string format: ipv4 - name: view in: query description: Filter by the DNS view name. schema: type: string responses: '200': description: Successfully retrieved list of PTR records. content: application/json: schema: type: array items: $ref: '#/components/schemas/RecordPTR' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createPTRRecord summary: Infoblox Create a DNS PTR record description: Creates a new DNS PTR record for reverse DNS resolution. tags: - DNS Records requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RecordPTRCreate' responses: '201': description: Successfully created the PTR record. content: application/json: schema: type: string '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /record:host: get: operationId: listHostRecords summary: Infoblox List DNS host records description: Retrieves a list of DNS host records. A host record contains the DNS and DHCP data for a host, including one or more IP addresses. Supports filtering by name, view, and zone. tags: - DNS Records parameters: - $ref: '#/components/parameters/ReturnFields' - $ref: '#/components/parameters/MaxResults' - name: name in: query description: Filter by the fully qualified domain name of the host. schema: type: string - name: view in: query description: Filter by the DNS view name. schema: type: string responses: '200': description: Successfully retrieved list of host records. content: application/json: schema: type: array items: $ref: '#/components/schemas/RecordHost' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createHostRecord summary: Infoblox Create a DNS host record description: Creates a new DNS host record with the specified name and IP addresses. A host record can contain multiple IPv4 and IPv6 addresses and automatically creates the corresponding A and AAAA records. tags: - DNS Records requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RecordHostCreate' responses: '201': description: Successfully created the host record. content: application/json: schema: type: string '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' components: schemas: RecordMXCreate: type: object required: - name - mail_exchanger - preference properties: name: type: string description: The domain name. mail_exchanger: type: string description: The mail exchanger hostname. preference: type: integer description: The preference value. minimum: 0 maximum: 65535 view: type: string description: The DNS view. comment: type: string description: A descriptive comment. maxLength: 256 RecordAAAACreate: type: object required: - name - ipv6addr properties: name: type: string description: The fully qualified domain name. ipv6addr: type: string format: ipv6 description: The IPv6 address to map. view: type: string description: The DNS view in which to create the record. comment: type: string description: A descriptive comment. maxLength: 256 RecordAUpdate: type: object properties: name: type: string description: The fully qualified domain name for the A record. ipv4addr: type: string format: ipv4 description: The IPv4 address. ttl: type: integer description: The time to live in seconds. use_ttl: type: boolean description: Whether to use the specified TTL value. comment: type: string description: A descriptive comment for the record. maxLength: 256 disable: type: boolean description: Whether to disable the record. RecordHostCreate: type: object required: - name - ipv4addrs properties: name: type: string description: The fully qualified domain name of the host. ipv4addrs: type: array items: type: object required: - ipv4addr properties: ipv4addr: type: string description: The IPv4 address. Use func:nextavailableip for automatic assignment. mac: type: string description: The MAC address for DHCP configuration. configure_for_dhcp: type: boolean description: Whether to configure DHCP for this address. description: The list of IPv4 addresses for the host. view: type: string description: The DNS view. comment: type: string description: A descriptive comment. maxLength: 256 RecordPTR: type: object properties: _ref: type: string description: The object reference for this PTR record. ptrdname: type: string description: The domain name the PTR record points to. ipv4addr: type: string format: ipv4 description: The IPv4 address for reverse lookup. view: type: string description: The DNS view. comment: type: string description: A descriptive comment. maxLength: 256 Error: type: object properties: Error: type: string description: The error type identifier. code: type: string description: The error code. text: type: string description: A human-readable error message. RecordACreate: type: object required: - name - ipv4addr properties: name: type: string description: The fully qualified domain name for the A record. ipv4addr: type: string format: ipv4 description: The IPv4 address to map to the domain name. Use func:nextavailableip to assign the next available IP. view: type: string description: The DNS view in which to create the record. ttl: type: integer description: The time to live in seconds. use_ttl: type: boolean description: Whether to use the specified TTL value. comment: type: string description: A descriptive comment for the record. maxLength: 256 RecordA: type: object properties: _ref: type: string description: The object reference for this A record. name: type: string description: The fully qualified domain name of the A record. ipv4addr: type: string format: ipv4 description: The IPv4 address mapped to the domain name. view: type: string description: The DNS view in which this record exists. zone: type: string description: The DNS zone containing this record. ttl: type: integer description: The time to live in seconds for the record. use_ttl: type: boolean description: Whether to use the TTL value specified on this record. comment: type: string description: A descriptive comment for the record (max 256 characters). maxLength: 256 disable: type: boolean description: Whether the record is disabled. RecordTXT: type: object properties: _ref: type: string description: The object reference for this TXT record. name: type: string description: The domain name. text: type: string description: The text data of the record. view: type: string description: The DNS view. comment: type: string description: A descriptive comment. maxLength: 256 RecordTXTCreate: type: object required: - name - text properties: name: type: string description: The domain name. text: type: string description: The text data. view: type: string description: The DNS view. comment: type: string description: A descriptive comment. maxLength: 256 RecordHost: type: object properties: _ref: type: string description: The object reference for this host record. name: type: string description: The fully qualified domain name of the host. ipv4addrs: type: array items: type: object properties: _ref: type: string description: The object reference for this IPv4 address entry. ipv4addr: type: string format: ipv4 description: The IPv4 address. configure_for_dhcp: type: boolean description: Whether DHCP is configured for this address. mac: type: string description: The MAC address associated with this IP. description: The list of IPv4 addresses for the host. view: type: string description: The DNS view. comment: type: string description: A descriptive comment. maxLength: 256 RecordCNAMECreate: type: object required: - name - canonical properties: name: type: string description: The alias name. canonical: type: string description: The canonical (target) domain name. view: type: string description: The DNS view. comment: type: string description: A descriptive comment. maxLength: 256 RecordMX: type: object properties: _ref: type: string description: The object reference for this MX record. name: type: string description: The domain name. mail_exchanger: type: string description: The mail exchanger hostname. preference: type: integer description: The preference value (lower values have higher priority). minimum: 0 maximum: 65535 view: type: string description: The DNS view. comment: type: string description: A descriptive comment. maxLength: 256 RecordCNAME: type: object properties: _ref: type: string description: The object reference for this CNAME record. name: type: string description: The alias name. canonical: type: string description: The canonical (target) domain name. view: type: string description: The DNS view in which this record exists. ttl: type: integer description: The time to live in seconds. comment: type: string description: A descriptive comment. maxLength: 256 RecordPTRCreate: type: object required: - ptrdname - ipv4addr properties: ptrdname: type: string description: The domain name the PTR record points to. ipv4addr: type: string format: ipv4 description: The IPv4 address. view: type: string description: The DNS view. comment: type: string description: A descriptive comment. maxLength: 256 RecordAAAA: type: object properties: _ref: type: string description: The object reference for this AAAA record. name: type: string description: The fully qualified domain name. ipv6addr: type: string format: ipv6 description: The IPv6 address mapped to the domain name. view: type: string description: The DNS view in which this record exists. ttl: type: integer description: The time to live in seconds. comment: type: string description: A descriptive comment for the record. maxLength: 256 parameters: ReturnFields: name: _return_fields in: query description: Comma-separated list of field names to include in the response. Use _return_fields+ to add fields to the default set. schema: type: string Paging: name: _paging in: query description: Set to 1 to enable result paging. When enabled, a next_page_id is returned if more results are available. schema: type: integer enum: - 0 - 1 PageId: name: _page_id in: query description: The page identifier returned from a previous paged request. Used to retrieve the next page of results. schema: type: string ObjectRef: name: ref in: path required: true description: The object reference string that uniquely identifies the WAPI object. schema: type: string MaxResults: name: _max_results in: query description: The maximum number of results to return. The default is 1000. Use a negative value to return all results. schema: type: integer default: 1000 responses: Unauthorized: description: Authentication failed or credentials were not provided. content: application/json: schema: $ref: '#/components/schemas/Error' BadRequest: description: The request was malformed or contained invalid parameters. content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: The specified object reference was not found. content: application/json: schema: $ref: '#/components/schemas/Error' securitySchemes: basicAuth: type: http scheme: basic description: HTTP Basic Authentication using NIOS admin credentials. cookieAuth: type: apiKey in: cookie name: ibapauth description: Session cookie returned after successful authentication. Pass the ibapauth cookie with subsequent requests to maintain an authenticated session. externalDocs: description: Infoblox WAPI Documentation url: https://docs.infoblox.com/space/niosapi/