Skip to content

IPAM API ​

Fetching pools ​

GET /api/application/address-pools

Available Request Parameters

  • page
  • per_page
    • max is 100
  • filter[name]
json
{
  "data": [
    {
      "id": 2,
      "name": "Node dc01.local",
      "nodes_count": 1,
      "addresses_count": 6
    },
    {
      "id": 1,
      "name": "Node 172.16.141.50",
      "nodes_count": 1,
      "addresses_count": 5
    }
  ],
  "meta": {
    "pagination": {
      "total": 2,
      "count": 2,
      "per_page": 50,
      "current_page": 1,
      "total_pages": 1,
      "links": {}
    }
  }
}

Fetching a pool ​

GET /api/application/address-pools/<pool_id>

json
{
  "data": {
    "id": 1,
    "name": "Node 172.16.141.50",
    "nodes_count": 1,
    "addresses_count": 5
  }
}

Fetching a pool addresess ​

GET /api/application/address-pools/<pool_id>/addresses

Available Request Parameters

  • page
  • per_page
    • max is 100
  • filter[type] = ipv4 | ipv6
  • filter[address]
  • filter[*]
    • search by wildcard
  • filter[server_id]
    • an empty server_id field will search for unallocated IP addresses
json
{
  "data": [
    {
      "id": 11,
      "address_pool_id": 2,
      "server_id": null,
      "type": "ipv4",
      "address": "172.16.141.70",
      "cidr": 24,
      "gateway": "172.16.141.1",
      "mac_address": null
    },
    {
      "id": 10,
      "address_pool_id": 2,
      "server_id": null,
      "type": "ipv4",
      "address": "172.16.141.69",
      "cidr": 24,
      "gateway": "172.16.141.1",
      "mac_address": null
    },
    {
      "id": 9,
      "address_pool_id": 2,
      "server_id": null,
      "type": "ipv4",
      "address": "172.16.141.68",
      "cidr": 24,
      "gateway": "172.16.141.1",
      "mac_address": null
    },
    {
      "id": 8,
      "address_pool_id": 2,
      "server_id": null,
      "type": "ipv4",
      "address": "172.16.141.67",
      "cidr": 24,
      "gateway": "172.16.141.1",
      "mac_address": null
    }
  ],
  "meta": {
    "pagination": {
      "total": 4,
      "count": 4,
      "per_page": 50,
      "current_page": 1,
      "total_pages": 1,
      "links": {}
    }
  }
}

Creating a pool ​

POST /api/application/address-pools

Available Request Parameters

  • name: Pool name
  • node_ids: Node ID that can access this pool in array

Payload

json
{
  "name": "Node dc01.local",
  "node_ids": [
    1
  ]
}

Returns

json
{
  "data": {
    "id": 4,
    "name": "Node dc01.local",
    "nodes_count": 1,
    "addresses_count": 0
  }
}

Creating single or multiple address ​

POST /api/application/address-pools/<pool_id>/addresses

  • is_bulk_action: true for multiple adresses and false for single address
    • For single address use this:
      • address: IP address value
    • For multiple address use this to define range:
      • starting_address: First IP address value
      • ending_address: Last IP address value
  • type: ipv4 or ipv6
  • cidr: CIDR value
  • gateway: Network gateway IP value
  • mac_address: MAC address value or null for empty
  • server_id: Server id number for adress allocation or null for empty

Single address ​

Payload

json
{
  "is_bulk_action": false,
  "mac_address": null,
  "server_id": 10,
  "address": "172.16.141.71",
  "type": "ipv4",
  "cidr": 24,
  "gateway": "172.16.141.1"
}

Returns

json
{
  "data": {
    "id": 14,
    "address_pool_id": 2,
    "server_id": 10,
    "type": "ipv4",
    "address": "172.16.141.71",
    "cidr": 24,
    "gateway": "172.16.141.1",
    "mac_address": null
  }
}

Multiple address ​

Payload

json
{
  "is_bulk_action": true,
  "starting_address": "172.16.141.80",
  "ending_address": "172.16.141.85",
  "mac_address": null,
  "server_id": 10,
  "type": "ipv4",
  "cidr": 24,
  "gateway": "172.16.141.1"
}

Returns no content

Updating a pool ​

PUT /api/application/address-pools/<pool_id>

  • name: new name
  • node_ids: new node ID that can access this pool in array

Payload

json
{
  "name": "Network Node dc01.local",
  "node_ids": [
    1
  ]
}

Returns

json
{
  "data": {
    "id": 2,
    "name": "Network Node dc01.local",
    "nodes_count": 1,
    "addresses_count": 6
  }
}

Updating an address ​

PUT /api/application/address-pools/<pool_id>/addresses/<address_id>

  • address: New IP address value
  • type: ipv4 or ipv6
  • cidr: New CIDR value
  • gateway: New network gateway IP value
  • mac_address: New MAC address value
  • server_id: New server id number for address allocation
    • null indicates that the address is not allocated to any server
json
{
  "mac_address": null,
  "server_id": 10,
  "address": "172.16.141.71",
  "type": "ipv4",
  "cidr": 24,
  "gateway": "172.16.141.2"
}

Returns

json
{
  "data": {
    "id": 14,
    "address_pool_id": 2,
    "server_id": 10,
    "type": "ipv4",
    "address": "172.16.141.71",
    "cidr": 24,
    "gateway": "172.16.141.2",
    "mac_address": null
  }
}

Deleting a pool ​

DELETE /api/application/address-pools/<pool_id>

  • Note: make sure that there are no nodes associated with that pool before deleting. If there are nodes, an HTTP exception will be thrown and the action won't be processed.

Returns no content

Deleting an address ​

DELETE /api/application/address-pools/<pool_id>/addresses/<address_id>

Returns no content

Released under the Business Source License.