Skip to content

UI Network Management API v3.0.0

This schema defines the REST API for a IP Address Management System (IPAM). The IPAM system manages IP subnet definitions and their corresponding allocations.

Contact: Cloud Operations

Operations

Tag: networkManagement

list-subnet-allocations

Operation Id: list-subnet-allocations

Action: GET /allocations

Summary: Retrieve list of existing subnet allocations

Parameters

Name In Type Required Description
workloadName query string false none
workloadEnvironment query string false none
maxResults query integer false none
orderBy query string false none

Responses

Status Meaning Description Schema
200 OK OK SubnetAllocationList
400 Bad Request Bad Request Problem
401 Unauthorized Unauthorized Problem
422 Unprocessable Entity Unprocessable Entity Problem
500 Internal Server Error Internal Server Error Problem

Note

This operation does not require authentication

Code samples

GET http://localhost:3000/allocations HTTP/1.1
Host: localhost:3000
Accept: application/json
# You can also use wget
curl -X GET http://localhost:3000/allocations \
  -H 'Accept: application/json'
import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('http://localhost:3000/allocations', headers = headers)

print(r.json())

create-subnet-allocation

Operation Id: create-subnet-allocation

Action: POST /allocations

Summary: Allocate a subnet

Body parameter

{
  "objectID": "e38a5427-23c9-4db1-a8ed-f0f2264f0584",
  "maskBits": 27,
  "workload": "string",
  "workloadEnvironment": "string",
  "capabilities": [
    "string"
  ],
  "assignmentProperties": null,
  "extensionProperties": null
}

Parameters

Name In Type Required Description
body body SubnetAllocationCreateData true none

Responses

Status Meaning Description Schema
201 Created Created SubnetAllocationId
400 Bad Request Bad Request Problem
401 Unauthorized Unauthorized Problem
409 Conflict Conflict Problem
422 Unprocessable Entity Unprocessable Entity Problem
500 Internal Server Error Internal Server Error Problem

Note

This operation does not require authentication

Code samples

POST http://localhost:3000/allocations HTTP/1.1
Host: localhost:3000
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST http://localhost:3000/allocations \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'
import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

r = requests.post('http://localhost:3000/allocations', headers = headers)

print(r.json())

get-subnet-allocation

Operation Id: get-subnet-allocation

Action: GET /allocations/{id}

Summary: Get an existing subnet allocation

Parameters

Name In Type Required Description
id path SubnetAllocationId true none

Responses

Status Meaning Description Schema
200 OK OK SubnetAllocation
400 Bad Request Bad Request Problem
401 Unauthorized Unauthorized Problem
404 Not Found The specified resource was not found Problem
422 Unprocessable Entity Unprocessable Entity Problem
500 Internal Server Error Internal Server Error Problem

Note

This operation does not require authentication

Code samples

GET http://localhost:3000/allocations/{id} HTTP/1.1
Host: localhost:3000
Accept: application/json
# You can also use wget
curl -X GET http://localhost:3000/allocations/{id} \
  -H 'Accept: application/json'
import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('http://localhost:3000/allocations/{id}', headers = headers)

print(r.json())

update-subnet-allocation

Operation Id: update-subnet-allocation

Action: PATCH /allocations/{id}

Summary: Update an existing subnet allocation

Body parameter

{
  "assignmentProperties": null,
  "extensionProperties": null
}

Parameters

Name In Type Required Description
id path SubnetAllocationId true none
body body SubnetAllocationUpdateData true none

Responses

Status Meaning Description Schema
200 OK OK SubnetAllocation
400 Bad Request Bad Request Problem
401 Unauthorized Unauthorized Problem
404 Not Found The specified resource was not found Problem
422 Unprocessable Entity Unprocessable Entity Problem
500 Internal Server Error Internal Server Error Problem

Note

This operation does not require authentication

Code samples

PATCH http://localhost:3000/allocations/{id} HTTP/1.1
Host: localhost:3000
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH http://localhost:3000/allocations/{id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'
import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

r = requests.patch('http://localhost:3000/allocations/{id}', headers = headers)

print(r.json())

delete-subnet-allocation

Operation Id: delete-subnet-allocation

Action: DELETE /allocations/{id}

Summary: Delete an existing subnet allocation

Parameters

Name In Type Required Description
id path SubnetAllocationId true none

Responses

Status Meaning Description Schema
204 No Content No Content None
400 Bad Request Bad Request Problem
401 Unauthorized Unauthorized Problem
404 Not Found The specified resource was not found Problem
422 Unprocessable Entity Unprocessable Entity Problem
500 Internal Server Error Internal Server Error Problem

Note

This operation does not require authentication

Code samples

DELETE http://localhost:3000/allocations/{id} HTTP/1.1
Host: localhost:3000
Accept: application/problem+json
# You can also use wget
curl -X DELETE http://localhost:3000/allocations/{id} \
  -H 'Accept: application/problem+json'
import requests
headers = {
  'Accept': 'application/problem+json'
}

r = requests.delete('http://localhost:3000/allocations/{id}', headers = headers)

print(r.json())

get-subnet-allocation-subnets

Operation Id: get-subnet-allocation-subnets

Action: GET /allocations/{id}/subnets

Summary: Get subnets that are used by a an allocation

Parameters

Name In Type Required Description
id path SubnetAllocationId true none

Responses

Status Meaning Description Schema
200 OK OK SubnetList
400 Bad Request Bad Request Problem
401 Unauthorized Unauthorized Problem
404 Not Found The specified resource was not found Problem
422 Unprocessable Entity Unprocessable Entity Problem
500 Internal Server Error Internal Server Error Problem

Note

This operation does not require authentication

Code samples

GET http://localhost:3000/allocations/{id}/subnets HTTP/1.1
Host: localhost:3000
Accept: application/json
# You can also use wget
curl -X GET http://localhost:3000/allocations/{id}/subnets \
  -H 'Accept: application/json'
import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('http://localhost:3000/allocations/{id}/subnets', headers = headers)

print(r.json())

list-subnets

Operation Id: list-subnets

Action: GET /subnets

Summary: Retrieve list of existing subnets

Parameters

Name In Type Required Description
maxResults query integer false none
capabilities query CapabilityList false none
orderBy query string false none
cidr query IpCidr false Only return subnets that fall into a specific CIDR
onlyLocked query boolean false Return only locked subnets

Responses

Status Meaning Description Schema
200 OK OK SubnetList
400 Bad Request Bad Request Problem
401 Unauthorized Unauthorized Problem
422 Unprocessable Entity Unprocessable Entity Problem
500 Internal Server Error Internal Server Error Problem

Note

This operation does not require authentication

Code samples

GET http://localhost:3000/subnets HTTP/1.1
Host: localhost:3000
Accept: application/json
# You can also use wget
curl -X GET http://localhost:3000/subnets \
  -H 'Accept: application/json'
import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('http://localhost:3000/subnets', headers = headers)

print(r.json())

get-subnet

Operation Id: get-subnet

Action: GET /subnets/{id}

Summary: Get an existing subnet

Parameters

Name In Type Required Description
id path SubnetId true none

Responses

Status Meaning Description Schema
200 OK OK Subnet
400 Bad Request Bad Request Problem
401 Unauthorized Unauthorized Problem
404 Not Found The specified resource was not found Problem
422 Unprocessable Entity Unprocessable Entity Problem
500 Internal Server Error Internal Server Error Problem

Note

This operation does not require authentication

Code samples

GET http://localhost:3000/subnets/{id} HTTP/1.1
Host: localhost:3000
Accept: application/json
# You can also use wget
curl -X GET http://localhost:3000/subnets/{id} \
  -H 'Accept: application/json'
import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('http://localhost:3000/subnets/{id}', headers = headers)

print(r.json())

list-networks

Operation Id: list-networks

Action: GET /networks

Summary: Retrieve list of existing networks

Parameters

Name In Type Required Description
maxResults query integer false none
capabilities query CapabilityList false none
orderBy query string false none
onlyLocked query boolean false Return only locked subnets

Responses

Status Meaning Description Schema
200 OK OK NetworkList
400 Bad Request Bad Request Problem
401 Unauthorized Unauthorized Problem
422 Unprocessable Entity Unprocessable Entity Problem
500 Internal Server Error Internal Server Error Problem

Note

This operation does not require authentication

Code samples

GET http://localhost:3000/networks HTTP/1.1
Host: localhost:3000
Accept: application/json
# You can also use wget
curl -X GET http://localhost:3000/networks \
  -H 'Accept: application/json'
import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('http://localhost:3000/networks', headers = headers)

print(r.json())

create-network

Operation Id: create-network

Action: POST /networks

Summary: Create a new network

Body parameter

{
  "address": "string",
  "maskBits": 27,
  "capabilities": [
    "string"
  ],
  "locked": false
}

Parameters

Name In Type Required Description
body body NetworkCreateData true none

Responses

Status Meaning Description Schema
201 Created Created NetworkId
400 Bad Request Bad Request Problem
401 Unauthorized Unauthorized Problem
409 Conflict Conflict Problem
422 Unprocessable Entity Unprocessable Entity Problem
500 Internal Server Error Internal Server Error Problem

Note

This operation does not require authentication

Code samples

POST http://localhost:3000/networks HTTP/1.1
Host: localhost:3000
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST http://localhost:3000/networks \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'
import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

r = requests.post('http://localhost:3000/networks', headers = headers)

print(r.json())

get-network

Operation Id: get-network

Action: GET /networks/{id}

Summary: Get an existing network

Parameters

Name In Type Required Description
id path NetworkId true none

Responses

Status Meaning Description Schema
200 OK OK Network
400 Bad Request Bad Request Problem
401 Unauthorized Unauthorized Problem
404 Not Found The specified resource was not found Problem
422 Unprocessable Entity Unprocessable Entity Problem
500 Internal Server Error Internal Server Error Problem

Note

This operation does not require authentication

Code samples

GET http://localhost:3000/networks/{id} HTTP/1.1
Host: localhost:3000
Accept: application/json
# You can also use wget
curl -X GET http://localhost:3000/networks/{id} \
  -H 'Accept: application/json'
import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('http://localhost:3000/networks/{id}', headers = headers)

print(r.json())

create-child-network

Operation Id: create-child-network

Action: POST /networks/{id}

Summary: Create a new child network

Description: Create a new child network. The CIDR of the child network must fit into the CIDR defined by it's parent and it must not collide with any other child network CIDRs already defined for the parent network.

Body parameter

{
  "address": "string",
  "maskBits": 27,
  "capabilities": [
    "string"
  ],
  "locked": false
}

Parameters

Name In Type Required Description
id path NetworkId true none
body body NetworkCreateData true none

Responses

Status Meaning Description Schema
201 Created Created NetworkId
400 Bad Request Bad Request Problem
401 Unauthorized Unauthorized Problem
404 Not Found The specified resource was not found Problem
409 Conflict Conflict Problem
422 Unprocessable Entity Unprocessable Entity Problem
500 Internal Server Error Internal Server Error Problem

Note

This operation does not require authentication

Code samples

POST http://localhost:3000/networks/{id} HTTP/1.1
Host: localhost:3000
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST http://localhost:3000/networks/{id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'
import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

r = requests.post('http://localhost:3000/networks/{id}', headers = headers)

print(r.json())

delete-network

Operation Id: delete-network

Action: DELETE /networks/{id}

Summary: Delete an existing network

Parameters

Name In Type Required Description
id path NetworkId true none

Responses

Status Meaning Description Schema
204 No Content No Content None
400 Bad Request Bad Request Problem
401 Unauthorized Unauthorized Problem
404 Not Found The specified resource was not found Problem
422 Unprocessable Entity Unprocessable Entity Problem
500 Internal Server Error Internal Server Error Problem

Note

This operation does not require authentication

Code samples

DELETE http://localhost:3000/networks/{id} HTTP/1.1
Host: localhost:3000
Accept: application/problem+json
# You can also use wget
curl -X DELETE http://localhost:3000/networks/{id} \
  -H 'Accept: application/problem+json'
import requests
headers = {
  'Accept': 'application/problem+json'
}

r = requests.delete('http://localhost:3000/networks/{id}', headers = headers)

print(r.json())

update-network

Operation Id: update-network

Action: PATCH /networks/{id}

Summary: Update an existing network

Body parameter

{
  "capabilities": [
    "string"
  ],
  "locked": true
}

Parameters

Name In Type Required Description
id path NetworkId true none
body body NetworkUpdateData true none

Responses

Status Meaning Description Schema
200 OK OK Network
400 Bad Request Bad Request Problem
401 Unauthorized Unauthorized Problem
404 Not Found The specified resource was not found Problem
422 Unprocessable Entity Unprocessable Entity Problem
500 Internal Server Error Internal Server Error Problem

Note

This operation does not require authentication

Code samples

PATCH http://localhost:3000/networks/{id} HTTP/1.1
Host: localhost:3000
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH http://localhost:3000/networks/{id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'
import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

r = requests.patch('http://localhost:3000/networks/{id}', headers = headers)

print(r.json())

list-network-subnets

Operation Id: list-network-subnets

Action: GET /networks/{id}/subnets

Summary: Retrieve list of subnets of a network

Parameters

Name In Type Required Description
id path NetworkId true none
cidr query IpCidr false Only return subnets that fall into a specific CIDR
onlyAllocated query boolean false Return only allocated subnets

Responses

Status Meaning Description Schema
200 OK OK SubnetList
400 Bad Request Bad Request Problem
401 Unauthorized Unauthorized Problem
404 Not Found The specified resource was not found Problem
422 Unprocessable Entity Unprocessable Entity Problem
500 Internal Server Error Internal Server Error Problem

Note

This operation does not require authentication

Code samples

GET http://localhost:3000/networks/{id}/subnets HTTP/1.1
Host: localhost:3000
Accept: application/json
# You can also use wget
curl -X GET http://localhost:3000/networks/{id}/subnets \
  -H 'Accept: application/json'
import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('http://localhost:3000/networks/{id}/subnets', headers = headers)

print(r.json())

Schemas

InnerError

{
  "code": "string",
  "innererror": {
    "code": "string",
    "innererror": {
      "code": "string",
      "innererror": {
        "code": "string",
        "innererror": {
          "code": null,
          "innererror": null
        }
      }
    }
  }
}

Properties

Name Type Required Restrictions Description
code string false none none
innererror InnerError false none none

Error

{
  "code": "string",
  "message": "string",
  "target": "string",
  "details": [
    {
      "code": "string",
      "message": "string",
      "target": "string",
      "details": [
        {
          "code": "string",
          "message": "string",
          "target": "string",
          "details": [
            {}
          ],
          "innererror": {
            "code": null,
            "innererror": null
          }
        }
      ],
      "innererror": {
        "code": "string",
        "innererror": {
          "code": "string",
          "innererror": {}
        }
      }
    }
  ],
  "innererror": {
    "code": "string",
    "innererror": {
      "code": "string",
      "innererror": {
        "code": "string",
        "innererror": {
          "code": null,
          "innererror": null
        }
      }
    }
  }
}

Properties

Name Type Required Restrictions Description
code string false none none
message string false none none
target string false none none
details [Error] false none none
innererror InnerError false none none

Problem

{
  "type": "/some/uri-reference",
  "title": "some title for the error situation",
  "status": 100,
  "detail": "some description for the error situation",
  "instance": "/some/uri-reference#specific-occurrence-context",
  "cause": {
    "code": "string",
    "message": "string",
    "target": "string",
    "details": [
      {
        "code": "string",
        "message": "string",
        "target": "string",
        "details": [
          {
            "code": null,
            "message": null,
            "target": null,
            "details": null,
            "innererror": null
          }
        ],
        "innererror": {
          "code": "string",
          "innererror": {}
        }
      }
    ],
    "innererror": {
      "code": "string",
      "innererror": {
        "code": "string",
        "innererror": {
          "code": null,
          "innererror": null
        }
      }
    }
  }
}

https://datatracker.ietf.org/doc/html/rfc7807

Properties

Name Type Required Restrictions Description
type string(uri) true none A URI reference that uniquely identifies the problem type only in the context of the provided API. Opposed to the specification in RFC-7807, it is neither recommended to be dereferenceable and point to a human-readable documentation nor globally unique for the problem type.
title string false none A short summary of the problem type. Written in English and readable for engineers, usually not suited for non technical stakeholders and not localized.
status integer(int32) false none The HTTP status code generated by the origin server for this occurrence of the problem.
detail string false none A human readable explanation specific to this occurrence of the problem that is helpful to locate the problem and give advice on how to proceed. Written in English and readable for engineers, usually not suited for non technical stakeholders and not localized.
instance string(uri-reference) false none A URI reference that identifies the specific occurrence of the problem, e.g. by adding a fragment identifier or sub-path to the problem type. May be used to locate the root of this problem in the source code.
cause Error false none none

SubnetAllocationId

"497f6eca-6276-4993-bfeb-53cbbbba6f08"

Properties

Name Type Required Restrictions Description
anonymous string(uuid) false none none

SubnetId

"497f6eca-6276-4993-bfeb-53cbbbba6f08"

Properties

Name Type Required Restrictions Description
anonymous string(uuid) false none none

MaskBits

27

Properties

Name Type Required Restrictions Description
anonymous integer(int32) false none none

IpAddress

"string"

Properties

Name Type Required Restrictions Description
anonymous string false none none

IpCidr

"string"

Properties

Name Type Required Restrictions Description
anonymous string false none none

Capability

"string"

Properties

Name Type Required Restrictions Description
anonymous string false none none

CapabilityList

[
  "string"
]

Properties

Name Type Required Restrictions Description
anonymous [Capability] false none none

SubnetAllocation

{
  "objectId": "e39ea5f2-2188-47f8-add0-f1976630af5e",
  "address": "string",
  "maskBits": 27,
  "workload": "string",
  "workloadEnvironment": "string",
  "capabilities": [
    "string"
  ],
  "assignmentProperties": null,
  "extensionProperties": null
}

Properties

Name Type Required Restrictions Description
objectId SubnetAllocationId true none none
address IpAddress true none none
maskBits MaskBits false none none
workload string true none none
workloadEnvironment string true none none
capabilities CapabilityList false none none
assignmentProperties any false none none
extensionProperties any false none none

SubnetAllocationCreateData

{
  "objectID": "e38a5427-23c9-4db1-a8ed-f0f2264f0584",
  "maskBits": 27,
  "workload": "string",
  "workloadEnvironment": "string",
  "capabilities": [
    "string"
  ],
  "assignmentProperties": null,
  "extensionProperties": null
}

Properties

Name Type Required Restrictions Description
objectID SubnetId false none none
maskBits MaskBits false none none
workload string true none none
workloadEnvironment string true none none
capabilities CapabilityList false none none
assignmentProperties any false none none
extensionProperties any false none none

SubnetAllocationUpdateData

{
  "assignmentProperties": null,
  "extensionProperties": null
}

Properties

Name Type Required Restrictions Description
assignmentProperties any false none none
extensionProperties any false none none

SubnetAllocationList

[
  {
    "objectId": "e39ea5f2-2188-47f8-add0-f1976630af5e",
    "address": "string",
    "maskBits": 27,
    "workload": "string",
    "workloadEnvironment": "string",
    "capabilities": [
      "string"
    ],
    "assignmentProperties": null,
    "extensionProperties": null
  }
]

Properties

Name Type Required Restrictions Description
anonymous [SubnetAllocation] false none none

Subnet

{
  "objectId": "e39ea5f2-2188-47f8-add0-f1976630af5e",
  "networkId": "9cffe777-e105-4870-8eb8-2f3ee9883664",
  "address": "string",
  "maskBits": 27,
  "startIp": "string",
  "endIp": "string",
  "capabilities": [
    "string"
  ],
  "locked": false,
  "allocatedBy": "e702f7b1-dd91-47fd-9bff-9ae02361e481"
}

Properties

Name Type Required Restrictions Description
objectId SubnetId true none none
networkId NetworkId true none none
address IpAddress true none none
maskBits MaskBits false none none
startIp string false none none
endIp string false none none
capabilities CapabilityList false none none
locked boolean false none The locked state of a subnet. Locked subnets cannot be assigned to an allocation.
allocatedBy SubnetAllocationId false none none

SubnetList

[
  {
    "objectId": "e39ea5f2-2188-47f8-add0-f1976630af5e",
    "networkId": "9cffe777-e105-4870-8eb8-2f3ee9883664",
    "address": "string",
    "maskBits": 27,
    "startIp": "string",
    "endIp": "string",
    "capabilities": [
      "string"
    ],
    "locked": false,
    "allocatedBy": "e702f7b1-dd91-47fd-9bff-9ae02361e481"
  }
]

Properties

Name Type Required Restrictions Description
anonymous [Subnet] false none none

NetworkId

"497f6eca-6276-4993-bfeb-53cbbbba6f08"

Properties

Name Type Required Restrictions Description
anonymous string(uuid) false none none

NetworkIdList

[
  "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]

Properties

Name Type Required Restrictions Description
anonymous [NetworkId] false none none

Network

{
  "objectId": "e39ea5f2-2188-47f8-add0-f1976630af5e",
  "address": "string",
  "maskBits": 27,
  "startIp": "string",
  "endIp": "string",
  "capabilities": [
    "string"
  ],
  "locked": false
}

Properties

Name Type Required Restrictions Description
objectId NetworkId true none none
address IpAddress true none none
maskBits MaskBits false none none
startIp string false none none
endIp string false none none
capabilities CapabilityList false none none
locked boolean false none The locked state of a network. Locked networks cannot be assigned to an allocation.

NetworkCreateData

{
  "address": "string",
  "maskBits": 27,
  "capabilities": [
    "string"
  ],
  "locked": false
}

Properties

Name Type Required Restrictions Description
address IpAddress true none none
maskBits MaskBits true none none
capabilities CapabilityList false none none
locked boolean false none Create the network in locked state

NetworkUpdateData

{
  "capabilities": [
    "string"
  ],
  "locked": true
}

Properties

Name Type Required Restrictions Description
capabilities CapabilityList false none none
locked boolean false none Update the locked state of a network

NetworkList

[
  {
    "objectId": "e39ea5f2-2188-47f8-add0-f1976630af5e",
    "address": "string",
    "maskBits": 27,
    "startIp": "string",
    "endIp": "string",
    "capabilities": [
      "string"
    ],
    "locked": false
  }
]

Properties

Name Type Required Restrictions Description
anonymous [Network] false none none