Paragon PathFinder API

The Juniper Networks Paragon PathFinder API enables querying of topology, management of topology planning parameters, and management of TE-LSP.

P2MP groups and SRLG/Facilities are available through the API since NorthStar 4.2 , and you can use a notification from Paragon Pathfinder to dynamically push updates to REST API clients.

Use the P2MP REST API calls to create P2MP groups and manage the following P2MP group common attributes:

  • Bandwidth

  • Setup/Holding Priority

  • Coloring Attributes

NOTE: P2MP groups cannot be created nor managed by TE-LSPs.

You can use the TE-LSP API calls or the new P2MP REST API calls to delete the P2MP leaves. For more information, see the P2MP section

You access the API using the configured Paragon address (as in paragon.example.net), through HTTPS port 443, on base URLs like the following:

  • https://paragon.example.net/traffic-engineering/api/

All of the Paragon PathFinder RESTful APIS use JSON-formatted data that conforms to the JSON-Schema specification. The main schema is topology_v2.json , and it contains links to the other data types. All schema can be found in this archive. Common data types are described in common.json . The following kinds of data and functionality are accessible and can be manipulated using the RESTful API:

You will find some example code associated with the API reference information. In addition, several examples that illustrate common usage can be found later in this document . In our example requests, we use HTTP, however the same functionality is available over HTTPS.

Existing REST APIs that reference plannedProperties/operationalStatus needs to be changed to plannedProperties/routingStatus as backwards compatibility will not be maintained from this release going forward. The reason for the change is based on the feedback from users that under plannedProperties, routingStatus would be more clear than operationalStatus. For an example, please see "LSP update example" under TE-LSPs events section below.

Notification API

Paragon PathFinder provides a socket.io interface on which object updates are sent. The socket.io namespace used is /restNotifications-v2, and the list of events is described in the next table. Unless noted, the new value of an object (or the index of the object upon object removal) is sent in the event.

Paragon PathFinder /restNotifications-v2 events
Event Schema Description
topologyEvent topology_v2.json#/definitions/topologyNotification Event affecting the complete topology, for instance when the administrator does a topology reset or resync. The notification sent can be as follows. First an add notification with empty topology indicating that the Topology has been re-synched or reseted. Second an update notification with a topology object containing only node or link set. This indicates that the complete node (resp. link) should be re-synched. This may happen in high-load situation where the notification rate is too big (northstar.cfg *_state_refresh_threshold).
nodeEvent topology_v2.json#/definitions/nodeNotification Node event notification.
linkEvent topology_v2.json#/definitions/linkNotification Link event notification.
lspEvent topology_v2.json#/definitions/lspNotification TE-LSP event notification.
lspTopologyEvent topology_v2.json#/definitions/lspTopologyEvent This notification is sent when there is a burst of LSP notification, it indicates that the complete set of TE-LSPs is potentially changed. See northstar.cfg lsp_state_refresh_threshold
demandEvent topology_v2.json#/definitions/demandNotification Demand event notification.
demandTopologyEvent topology_v2.json#/definitions/lspTopologyEvent This notification is sent when there is a burst of LSP or demand notification, it indicates that the complete set of TE-LSPs is potentially changed. See northstar.cfg lsp_state_refresh_threshold (This is intentionally the same as TE-LSPs).
p2mpEvent topology_v2.json#/definitions/p2mpGroupNotification P2MP group event notification. The lsp in the update are reduced to their lspIndex to reduce the size of the event
facilityEvent topology_v2.json#/definitions/facilityNotification Facility/SRLG event notification.
teContainerEvent topology_v2.json#/definitions/containerNotification TE Container event notification.
maintenanceEvent topology_v2.json#/definitions/maintenanceNotification Maintenance resource notification.
haEvent topology_v2.json#/definitions/haHostNotification Node state event notification. Only update (no add or remove) events are supported. The notification does not include the list of processes and only contains operational information.
healthEvent topology_v2.json#/definitions/healthNotification Node health event notification. Only update (no add or remove) events are supported. The notifications include utilization of CPU, disk, memory that exceed certain threshold, and processes status.
componentStatus topology_v2.json#/definitions/statusComponentNotification Indicating LSP reconciliation during NS bringup or Switchover.
ipePolicyEvent topology_v2.json#/definitions/ipePolicyNotification IPE Policy event notification.

The following example is a simple python client for receiving all Paragon PathFinder Notifications:


                #!/usr/bin/env python
from socketIO_client import SocketIO, BaseNamespace
import requests,json,sys
serverURL = 'https://paragon.example.net'
username = 'user'
password = 'password'
class NSNotificationNamespace(BaseNamespace):
    def on_connect(self):
        print('Connected to %s /restNotifications-v2'%serverURL)
    def on_event(key,name,data):
        print("Event: %r,data:%r"%(name,json.dumps(data)))
# First use IAM authentication API to get a token
payload = {"user":{"domain":"default","name":username},"password":password,"methods":["PASSWORD"]}
r = requests.post('https://{server}/iam/authenticate'.format(server=server), json=payload, verify=False)
data =r.json()
if "id_token" not in data:
    print("Error: Invalid credentials")
    sys.exit(1)
headers= {'x-iam-token': "{id_token}".format(**data)}
socketIO = SocketIO(serverURL, verify=False,headers=headers, resource="traffic-engineering/api/socket.io")
ns = socketIO.define(NSNotificationNamespace, '/restNotifications-v2')
socketIO.wait() 

Topology

Use the endpoints to retrieve the following information:

  • Topology list

  • Node list

  • Links

  • TE-LSPs

  • Demands

  • Facilities

  • P2MP group

  • TE-Containers

  • Maintenances

  • Interfaces

  • Component status

  • Topology status

Apply query parameter q=JSONPath to filter the objects listed under a specific endpoint. Example: The HTTP request GET https://paragon.example.net/traffic-engineering/api/topology/v2/1/te-lsps?q=$.[?(@.operationalStatus == "Down")] lists only the te-lsps with attribute operationalStatus value "Down". For more information on JSON, refer JSONPath

The topology schema is: topology_v2.json . The operations are:

  • https://paragon.example.net/traffic-engineering/api/topology/v2/topologies [GET: get a list of topologies]

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id> [GET: get all Nodes and Links]

  • https://paragon.example.net/traffic-engineering/api/topology/v2/< topology-id>/status [GET: get status of all Paragon PathFinder components]

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/status/multilayerTopology [GET: get multi-layer topology status]

The topology is typically populated using BGP-LS peering with Paragon PathFinder, but it is possible to add nodes and links using the REST API for modelling purposes. Since NorthStar 6.0, two node attributes are used to refine how nodes added using the REST API are considered for path computation, typically to model CE and Site nodes. The first attribute is a new attribute (ipRole) that models how the node is used with regard to LSP termination/transit. The attribute accepts the values: Regular, Access and Core and are defined below. Access nodes cannot act as transit, while core nodes can be transit but cannot terminate LSPs from access nodes directly. Regular nodes can act as transit nodes. The second attribute is an existing attribute (Vendor) with special values (CE or SITE) and control how the LSP is installed in the network:CE and Site nodes are pruned from the signaled path. Please see Nodes section for example on how to create Site and CE nodes.

GET
topology/v2
Get List of Topologies

Returns a list of the topologies that are available.

 
Normal response codes
200
Response example:
[
   {
      "topologyIndex": 1,
      "topoObjectType": "topology"
   }
]

This operation does not accept a request body.

GET
topology/v2/​{topology_id}​
Get Topological Elements

Lists topological elements

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:

The following examples show different set of results:

  • The example shows three nodes, and two point-to-point links between node 11 and node 8. One node is PCEP-enabled (node 8, name 62.0.0.104) and one node is a pseudo node (node 2). A pseudo node does not have router-ids in its protocol object. It's pseudoNode attribute set to TRUE.

    {
        "links": [
            {
                "endA": {
                    "TEcolor": 0,
                    "TEmetric": 10,
                    "bandwidth": 10000000000,
                    "ipv4Address": {
                        "address": "62.104.107.1",
                        "topoObjectType": "ipv4"
                    },
                    "node": {
                        "name": "62.0.0.104",
                        "topoObjectType": "node",
                        "topologyIndex": 1
                    },
                    "protocols": {
                        "ISIS": {
                            "TEMetric": 10,
                            "level": "L2",
                            "srlgs": [{"srlgValue": 407}]
                        },
                        "RSVP": {"bandwidth": 10000000000}
                    },
                    "srlgs": [{"srlgValue": 407 }],
                    "topoObjectType": "interface",
                    "unreservedBw": [9989999616, 9989999616, 9989999616, 9989999616, 9489999872, 9489999872, 9489999872, 9489999872  ]
                },
                "endZ": {
                    "TEcolor": 0,
                    "TEmetric": 10,
                    "bandwidth": 10000000000,
                    "ipv4Address": {
                        "address": "62.104.107.2",
                        "topoObjectType": "ipv4"
                    },
                    "node": {
                        "name": "62.0.0.107",
                        "topoObjectType": "node",
                        "topologyIndex": 1
                    },
                    "protocols": {
                        "ISIS": {
                            "TEMetric": 10,
                            "level": "L2",
                            "srlgs": [ { "srlgValue": 407 }]
                        },
                        "RSVP": {"bandwidth": 10000000000 }
                    },
                    "srlgs": [{"srlgValue": 407}],
                    "topoObjectType": "interface",
                    "unreservedBw": [9989999616, 9989999616, 9989999616, 9989999616, 9989999616, 9989999616,9989999616,9489999872]
                },
                "linkIndex": 6,
                "name": "L62.104.107.1_62.104.107.2",
                "operationalStatus": "Up",
                "topoObjectType": "link",
                "topologyIndex": 1
            },
            {
                "endA": {
                    "TEcolor": 0,
                    "TEmetric": 10,
                    "bandwidth": 10000000000,
                    "ipv4Address": {
                        "address": "62.114.117.1",
                        "topoObjectType": "ipv4"
                    },
                    "node": {
                        "name": "62.0.0.104",
                        "topoObjectType": "node",
                        "topologyIndex": 1
                    },
                    "protocols": {
                        "ISIS": {
                            "TEMetric": 10,
                            "level": "L2",
                            "srlgs": [{"srlgValue": 407}]
                        },
                        "RSVP": { "bandwidth": 10000000000 }
                    },
                    "srlgs": [{"srlgValue": 407} ],
                    "topoObjectType": "interface",
                    "unreservedBw": [ 10000000000, 10000000000, 10000000000, 10000000000, 10000000000, 10000000000, 10000000000, 10000000000]
                },
                "endZ": {
                    "TEcolor": 0,
                    "TEmetric": 10,
                    "bandwidth": 10000000000,
                    "ipv4Address": {
                        "address": "62.114.117.2",
                        "topoObjectType": "ipv4"
                    },
                    "node": {
                        "name": "62.0.0.107",
                        "topoObjectType": "node",
                        "topologyIndex": 1
                    },
                    "protocols": {
                        "ISIS": {
                            "TEMetric": 10,
                            "level": "L2",
                            "srlgs": [{"srlgValue": 407}]
                        },
                        "RSVP": {"bandwidth": 10000000000}
                    },
                    "srlgs": [{"srlgValue": 407}],
                    "topoObjectType": "interface",
                    "unreservedBw": [9600000000,600000000,9600000000,9600000000,9600000000,9600000000,9600000000,9600000000]
                },
                "linkIndex": 7,
                "name": "L62.114.117.1_62.114.117.2",
                "operationalStatus": "Up",
                "topoObjectType": "link",
                "topologyIndex": 1
            }
        ],
        "nodes": [
            {
                "AutonomousSystem": {"asNumber": 62},
                "hostName": "vmx104-62",
                "layer": "IP",
                "name": "62.0.0.104",
                "nodeIndex": 8,
                "protocols": {
                    "ISIS": {
                        "TERouterId": "62.0.0.104",
                        "area": "490062",
                        "isoAddress": "0620.0000.0104",
                        "routerId": "62.0.0.104"
                    },
                    "PCEP": {
                        "pccAddress": "62.0.0.104"
                    }
                },
                "topoObjectType": "node",
                "topologyIndex": 1
            },
            {
                "AutonomousSystem": {"asNumber": 62},
                "hostName": "vmx105-62-p107",
                "layer": "IP",
                "name": "62.0.0.107",
                "nodeIndex": 11,
                "protocols": {
                    "ISIS": {
                        "TERouterId": "62.0.0.107",
                        "area": "490062",
                        "isoAddress": "0620.0000.0107",
                        "routerId": "62.0.0.107"
                    }
                },
                "topoObjectType": "node",
                "topologyIndex": 1
            },
    	{
    	    "topoObjectType": "node",
    	    "topologyIndex": 1,
    	    "name": "0620.0000.0101.02",
    	    "nodeIndex": 2,
                "AutonomousSystem": {"asNumber": 62},
    	    "layer": "IP",
    	    "pseudoNode": true,
    	    "protocols": {
    		"ISIS": { }
    	    }
    	}
        ],
        "topoObjectType": "topology",
        "topologyIndex": 1
    }
    
  • The example shows two PE nodes (PE3 and PE4 - discovered from BGP-LS), two CE nodes (CE1 and CE2 - manually created using Node API) and three Sites (SiteA, SiteB and SiteC - manually created using Node API) nodes, and links between PE3 and PE4 (id: L10.0.1.10_10.0.1.9 - discovered from BGP-LS), and manually created link using Links API which are PE3 and SiteA (id: L0100.0000.0003_SiteA_PE3-SiteA), PE4 and SiteB (id: L0100.0000.0004_SiteB_PE4-SiteB), PE3 and CE1 (id: L0100.0000.0003_CE1_PE3-CE1), CE1 and SiteO (id: LCE1_SiteO_CE1-SiteO) and CE2 and SiteO (id: LCE2_SiteO_CE2-SiteO).

    {
        "topologyIndex":1,
        "topoObjectType": "topology",
        "nodes": [
            {
                "topoObjectType": "node",
                "topologyIndex": 1,
                "id": "0100.0000.0003",
                "nodeIndex": 3,
                "layer": "IP",
                "live": true,
                "AutonomousSystem": {
                    "asNumber": 100
                },
                "routerId": "10.0.0.3",
                "protocols": {
                    "ISIS": {
                        "routerId": "10.0.0.3",
                        "TERouterId": "10.0.0.3",
                        "isoAddress": "0100.0000.0003",
                        "area": "490001"
                    },
                    "NETCONF": {
                        "operationalStatus": "Up",
                        "operationalState": "Connected",
                        "clientAddress": "10.0.0.3",
                        "sessionParameters": {
                            "keepalive": 300
                        },
                        "clientCapabilities": [
                            "http://xml.juniper.net/dmi/system/1.0",
                            "http://xml.juniper.net/netconf/junos/1.0",
                            "urn:ietf:params:netconf:base:1.0",
                            "urn:ietf:params:netconf:capability:candidate:1.0",
                            "urn:ietf:params:netconf:capability:confirmed-commit:1.0",
                            "urn:ietf:params:netconf:capability:url:1.0?scheme=http,ftp,file",
                            "urn:ietf:params:netconf:capability:validate:1.0",
                            "urn:ietf:params:xml:ns:netconf:base:1.0",
                            "urn:ietf:params:xml:ns:netconf:capability:candidate:1.0",
                            "urn:ietf:params:xml:ns:netconf:capability:confirmed-commit:1.0",
                            "urn:ietf:params:xml:ns:netconf:capability:url:1.0?scheme=http,ftp,file",
                            "urn:ietf:params:xml:ns:netconf:capability:validate:1.0",
                            "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"
                        ]
                    },
                    "PCEP": {
                        "operationalStatus": "Up",
                        "pccAddress": "10.0.0.3",
                        "sessionParameters": {
                            "keepalive": 0,
                            "deadtimer": 0,
                            "maximumStackDepth": 0
                        },
                        "peerStatefullCapabilities": {
                            "lspUpdate": true,
                            "lspInstantiation": true,
                            "p2mp": true,
                            "p2mpUpdate": true,
                            "p2mpInstantiation": true,
                            "SRCapability": false
                        }
                    },
                    "management": {
                        "address": "10.0.0.3",
                        "vendor": "JUNIPER",
                        "operatingSystem": "JUNOS",
                        "operatingSystemVersion": "19.4R1.10"
                    }
                },
                "hostName": "PE3",
                "configurationDataSource": {
                    "latest": {
                        "href": "/NorthStar/API/v2/tenant/1/topology/1/nodes/3/device/configurationDataSource/latest"
                    }
                }
            },
            {
                "topoObjectType": "node",
                "topologyIndex": 1,
                "id": "0100.0000.0004",
                "nodeIndex": 4,
                "layer": "IP",
                "live": true,
                "AutonomousSystem": {
                    "asNumber": 100
                },
                "routerId": "10.0.0.4",
                "protocols": {
                    "ISIS": {
                        "routerId": "10.0.0.4",
                        "TERouterId": "10.0.0.4",
                        "isoAddress": "0100.0000.0004",
                        "area": "490001"
                    },
                    "NETCONF": {
                        "operationalStatus": "Up",
                        "operationalState": "Connected",
                        "clientAddress": "10.0.0.4",
                        "sessionParameters": {
                            "keepalive": 300
                        },
                        "clientCapabilities": [
                            "http://xml.juniper.net/dmi/system/1.0",
                            "http://xml.juniper.net/netconf/junos/1.0",
                            "urn:ietf:params:netconf:base:1.0",
                            "urn:ietf:params:netconf:capability:candidate:1.0",
                            "urn:ietf:params:netconf:capability:confirmed-commit:1.0",
                            "urn:ietf:params:netconf:capability:url:1.0?scheme=http,ftp,file",
                            "urn:ietf:params:netconf:capability:validate:1.0",
                            "urn:ietf:params:xml:ns:netconf:base:1.0",
                            "urn:ietf:params:xml:ns:netconf:capability:candidate:1.0",
                            "urn:ietf:params:xml:ns:netconf:capability:confirmed-commit:1.0",
                            "urn:ietf:params:xml:ns:netconf:capability:url:1.0?scheme=http,ftp,file",
                            "urn:ietf:params:xml:ns:netconf:capability:validate:1.0",
                            "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"
                        ]
                    },
                    "PCEP": {
                        "operationalStatus": "Up",
                        "pccAddress": "10.0.0.4",
                        "sessionParameters": {
                            "keepalive": 0,
                            "deadtimer": 0,
                            "maximumStackDepth": 0
                        },
                        "peerStatefullCapabilities": {
                            "lspUpdate": true,
                            "lspInstantiation": true,
                            "p2mp": true,
                            "p2mpUpdate": true,
                            "p2mpInstantiation": true,
                            "SRCapability": false
                        }
                    },
                    "management": {
                        "address": "10.0.0.4",
                        "vendor": "JUNIPER",
                        "operatingSystem": "JUNOS",
                        "operatingSystemVersion": "19.4R1.10"
                    }
                },
                "hostName": "PE4",
                "configurationDataSource": {
                    "latest": {
                        "href": "/NorthStar/API/v2/tenant/1/topology/1/nodes/4/device/configurationDataSource/latest"
                    }
                }
            },
            {
                "topoObjectType": "node",
                "topologyIndex": 1,
                "id": "SiteA",
                "nodeIndex": 11,
                "layer": "Service",
                "live": false,
                "routerId": "11.0.0.1",
                "ipRole": "Access",
                "protocols": {
                    "ISIS": {
                        "routerId": "11.0.0.1",
                        "TERouterId": "11.0.0.1"
                    },
                    "management": {
                        "vendor": "SITE"
                    }
                },
                "hostName": "SiteA",
                "name": "SiteA"
            },
            {
                "topoObjectType": "node",
                "topologyIndex": 1,
                "id": "SiteB",
                "nodeIndex": 12,
                "layer": "Service",
                "live": false,
                "routerId": "11.0.0.2",
                "ipRole": "Access",
                "protocols": {
                    "ISIS": {
                        "routerId": "11.0.0.2",
                        "TERouterId": "11.0.0.2"
                    },
                    "management": {
                        "vendor": "SITE"
                    }
                },
                "hostName": "SiteB",
                "name": "SiteB"
            },
            {
                "topoObjectType": "node",
                "topologyIndex": 1,
                "id": "SiteO",
                "nodeIndex": 25,
                "layer": "Service",
                "live": false,
                "routerId": "11.0.0.15",
                "ipRole": "Access",
                "protocols": {
                    "ISIS": {
                        "routerId": "11.0.0.15",
                        "TERouterId": "11.0.0.15"
                    },
                    "management": {
                        "vendor": "SITE"
                    }
                },
                "hostName": "SiteO",
                "name": "SiteO"
            },
            {
                "topoObjectType": "node",
                "topologyIndex": 1,
                "id": "CE1",
                "nodeIndex": 31,
                "layer": "Service",
                "live": false,
                "routerId": "11.0.0.101",
                "ipRole": "Regular",
                "protocols": {
                    "ISIS": {
                        "routerId": "11.0.0.101",
                        "TERouterId": "11.0.0.101"
                    },
                    "management": {
                        "vendor": "CE"
                    }
                },
                "hostName": "CE1",
                "name": "CE1"
            },
            {
                "topoObjectType": "node",
                "topologyIndex": 1,
                "id": "CE2",
                "nodeIndex": 32,
                "layer": "Service",
                "live": false,
                "routerId": "11.0.0.102",
                "ipRole": "Regular",
                "protocols": {
                    "ISIS": {
                        "routerId": "11.0.0.102",
                        "TERouterId": "11.0.0.102"
                    },
                    "management": {
                        "vendor": "CE"
                    }
                },
                "hostName": "CE2",
                "name": "CE2"
            }
        ],
        "links": [
            {
                "topoObjectType": "link",
                "linkIndex": 6,
                "id": "L10.0.1.10_10.0.1.9",
                "live": true,
                "topologyIndex": 1,
                "operationalStatus": "Up",
                "endZ": {
                    "ipv4Address": {
                        "topoObjectType": "ipv4",
                        "address": "10.0.1.10"
                    },
                    "protocols": {
                        "RSVP": {
                            "bandwidth": 10000000
                        },
                        "ISIS": {
                            "level": "L2",
                            "TEMetric": 10
                        }
                    },
                    "bandwidth": 10000000,
                    "interfaceName": "ge-0/0/1.0",
                    "TEcolor": 0,
                    "TEmetric": 10,
                    "unreservedBw": [
                        10000000,
                        10000000,
                        10000000,
                        10000000,
                        10000000,
                        10000000,
                        10000000,
                        10000000
                    ],
                    "node": {
                        "topoObjectType": "node",
                        "id": "0100.0000.0004",
                        "topologyIndex": 1
                    },
                    "topoObjectType": "interface",
                    "utilization": {
                        "utilization": 0,
                        "availableBandwidth": 10000000,
                        "usedBandwidth": 0,
                        "measuredDelay": 0.87,
                        "interfaceUtilization": 0.00107,
                        "interfaceTraffic": 10700,
                        "tunnelUtilization": 0,
                        "tunnelLiveUtilization": 0
                    }
                },
                "endA": {
                    "ipv4Address": {
                        "topoObjectType": "ipv4",
                        "address": "10.0.1.9"
                    },
                    "protocols": {
                        "RSVP": {
                            "bandwidth": 10000000
                        },
                        "ISIS": {
                            "level": "L2",
                            "TEMetric": 10
                        }
                    },
                    "bandwidth": 10000000,
                    "interfaceName": "ge-0/0/0.0",
                    "TEmetric": 10,
                    "unreservedBw": [
                        10000000,
                        10000000,
                        10000000,
                        10000000,
                        10000000,
                        10000000,
                        10000000,
                        10000000
                    ],
                    "node": {
                        "topoObjectType": "node",
                        "id": "0100.0000.0003",
                        "topologyIndex": 1
                    },
                    "topoObjectType": "interface",
                    "utilization": {
                        "utilization": 0,
                        "availableBandwidth": 10000000,
                        "usedBandwidth": 0,
                        "measuredDelay": 0.87,
                        "interfaceUtilization": 0.00158,
                        "interfaceTraffic": 15800,
                        "tunnelUtilization": 0,
                        "tunnelLiveUtilization": 0,
                        "lastUpdate": "2020-04-30T17:07:08Z"
                    }
                }
            },
            {
                "topoObjectType": "link",
                "linkIndex": 13,
                "id": "L0100.0000.0003_SiteA_PE3-SiteA",
                "live": false,
                "topologyIndex": 1,
                "operationalStatus": "Unknown",
                "name": "PE3-SiteA",
                "endZ": {
                    "node": {
                        "topoObjectType": "node",
                        "id": "SiteA",
                        "topologyIndex": 1
                    },
                    "topoObjectType": "interface",
                    "utilization": {
                        "utilization": 0,
                        "availableBandwidth": 1000000000,
                        "usedBandwidth": 0,
                        "tunnelUtilization": 0,
                        "tunnelLiveUtilization": 0
                    }
                },
                "endA": {
                    "node": {
                        "topoObjectType": "node",
                        "id": "0100.0000.0003",
                        "topologyIndex": 1
                    },
                    "topoObjectType": "interface",
                    "utilization": {
                        "utilization": 0,
                        "availableBandwidth": 1000000000,
                        "usedBandwidth": 0,
                        "tunnelUtilization": 0,
                        "tunnelLiveUtilization": 0,
                        "lastUpdate": "2020-04-30T07:34:55Z"
                    }
                }
            },
            {
                "topoObjectType": "link",
                "linkIndex": 46,
                "id": "L0100.0000.0003_CE1_PE3-CE1",
                "live": false,
                "topologyIndex": 1,
                "operationalStatus": "Unknown",
                "name": "PE3-CE1",
                "endZ": {
                    "node": {
                        "topoObjectType": "node",
                        "id": "CE1",
                        "topologyIndex": 1
                    },
                    "topoObjectType": "interface",
                    "utilization": {
                        "utilization": 0,
                        "availableBandwidth": 1000000000,
                        "usedBandwidth": 0,
                        "tunnelUtilization": 0,
                        "tunnelLiveUtilization": 0
                    }
                },
                "endA": {
                    "node": {
                        "topoObjectType": "node",
                        "id": "0100.0000.0003",
                        "topologyIndex": 1
                    },
                    "topoObjectType": "interface",
                    "utilization": {
                        "utilization": 0,
                        "availableBandwidth": 1000000000,
                        "usedBandwidth": 0,
                        "tunnelUtilization": 0,
                        "tunnelLiveUtilization": 0,
                        "lastUpdate": "2020-04-30T07:34:55Z"
                    }
                }
            },
            {
                "topoObjectType": "link",
                "linkIndex": 62,
                "id": "LCE1_SiteO_CE1-SiteO",
                "live": false,
                "topologyIndex": 1,
                "operationalStatus": "Unknown",
                "name": "CE1-SiteO",
                "endZ": {
                    "node": {
                        "topoObjectType": "node",
                        "id": "SiteO",
                        "topologyIndex": 1
                    },
                    "topoObjectType": "interface",
                    "utilization": {
                        "utilization": 0,
                        "availableBandwidth": 1000000000,
                        "usedBandwidth": 0,
                        "tunnelUtilization": 0,
                        "tunnelLiveUtilization": 0
                    }
                },
                "endA": {
                    "node": {
                        "topoObjectType": "node",
                        "id": "CE1",
                        "topologyIndex": 1
                    },
                    "topoObjectType": "interface",
                    "utilization": {
                        "utilization": 0,
                        "availableBandwidth": 1000000000,
                        "usedBandwidth": 0,
                        "tunnelUtilization": 0,
                        "tunnelLiveUtilization": 0,
                        "lastUpdate": "2020-04-30T07:34:55Z"
                    }
                }
            },
            {
                "topoObjectType": "link",
                "linkIndex": 63,
                "id": "LCE2_SiteO_CE2-SiteO",
                "live": false,
                "topologyIndex": 1,
                "operationalStatus": "Unknown",
                "name": "CE2-SiteO",
                "endZ": {
                    "node": {
                        "topoObjectType": "node",
                        "id": "SiteO",
                        "topologyIndex": 1
                    },
                    "topoObjectType": "interface",
                    "utilization": {
                        "utilization": 0,
                        "availableBandwidth": 1000000000,
                        "usedBandwidth": 0,
                        "tunnelUtilization": 0,
                        "tunnelLiveUtilization": 0
                    }
                },
                "endA": {
                    "node": {
                        "topoObjectType": "node",
                        "id": "CE2",
                        "topologyIndex": 1
                    },
                    "topoObjectType": "interface",
                    "utilization": {
                        "utilization": 0,
                        "availableBandwidth": 1000000000,
                        "usedBandwidth": 0,
                        "tunnelUtilization": 0,
                        "tunnelLiveUtilization": 0,
                        "lastUpdate": "2020-04-30T07:34:55Z"
                    }
                }
            },
            {
                "topoObjectType": "link",
                "linkIndex": 15,
                "id": "L0100.0000.0004_SiteB_PE4-SiteB",
                "live": false,
                "topologyIndex": 1,
                "operationalStatus": "Unknown",
                "name": "PE4-SiteB",
                "endZ": {
                    "node": {
                        "topoObjectType": "node",
                        "id": "SiteB",
                        "topologyIndex": 1
                    },
                    "topoObjectType": "interface",
                    "utilization": {
                        "utilization": 0,
                        "availableBandwidth": 1000000000,
                        "usedBandwidth": 0,
                        "tunnelUtilization": 0,
                        "tunnelLiveUtilization": 0
                    }
                },
                "endA": {
                    "node": {
                        "topoObjectType": "node",
                        "id": "0100.0000.0004",
                        "topologyIndex": 1
                    },
                    "topoObjectType": "interface",
                    "utilization": {
                        "utilization": 0,
                        "availableBandwidth": 1000000000,
                        "usedBandwidth": 0,
                        "tunnelUtilization": 0,
                        "tunnelLiveUtilization": 0,
                        "lastUpdate": "2020-04-30T07:34:55Z"
                    }
                }
            }
        ]
    }
    

This operation does not accept a request body.

DELETE
topology/v2/​{topology_id}​
Delete the Topology

Deletes all of the topology planned data. The information acquired through BGP-LS reappears immediately.

 
Normal response codes
204
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

This operation does not accept a request body and does not return a response body.

GET
topology/v2/​{topology_id}​/stream
Start a SSE Stream

See EventSource for format. The notifications send on that stream are only topologyEvent. The data will contain a JSON document (see Paragon PathFinder Notification API).

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:

This operation does not accept a request body.

topology/v2/​{topology_id}​/status
 
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

This operation does not accept a request body and does not return a response body.

GET
topology/v2/​{topology_id}​/status/pce
Get PCEP Protocol Adapter Status

Returns the status of the PCEP protocol adapter component.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:
{
    "component": "PCE",
    "status": "PCE is up.",
    "statusTimestamp": 0
}

This operation does not accept a request body.

GET
topology/v2/​{topology_id}​/status/topologyAcquisition
Get BGP-LS Protocol Adapter Status

Returns the status of the Network Topology Acquisition Daemon (NTAD, BGP-LSP protocol adapter) component.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:
{
    "component": "Topology acquisition",
    "status": "Connected to NTAD: 62.105.199.2 port: 450",
    "statusTimestamp": 1427167092212
}

This operation does not accept a request body.

GET
topology/v2/​{topology_id}​/status/pathComputationServer
Get Path Computation Server Status

Returns the status of the Path Computation Server component.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:
  {
    "component": "Path Computation Server",
    "status": "Active Path Stat: 3 up 0 down 0 detoured 0 being provisioned. Link Stat: 19 up 0 down. Node Stat: 7 active nodes, 0 PCC nodes",
    "statusTimestamp": 1468153795771,
    "statusTimestampTime": "2016-07-10T12:29:55.771Z"
  }

This operation does not accept a request body.

GET
topology/v2/​{topology_id}​/status/transportTopologyAcquisition
Get Transport Topology Acquisition Daemon Status

Returns the status of the Transport Network Topology Acquisition Daemon.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:
  {
    "component": "Transport Topology acquisition",
    "status": "Up",
    "childs": [
      {
        "status": "Up; current peer: hostname='' ip='192.0.2.10'",
        "statusTimestamp": 1468153845392,
        "statusTimestampTime": "2016-07-10T12:30:45.392062Z",
        "component": "VendorX"
      }
    ],
    "statusTimestamp": 1468153853495,
    "statusTimestampTime": "2016-07-10T12:30:53.495Z"
  }

This operation does not accept a request body.

GET
topology/v2/​{topology_id}​/status/analyticsCollection
Get Analytics Data Collection Component Status

Returns the status of the analytics data collection.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:
{
    "component": "Analytics data collection",
    "status": "host=pcs-server, status=OK",
    "statusTimestampTime": "2017-07-27T04:09:05.239Z",
    "statusTimestamp": 1501128545239
}

This operation does not accept a request body.

GET
topology/v2/​{topology_id}​/status/analyticsDatabase
Get Analytics Data Collection Database Status

Returns the status of the analytics data collection database.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:
{
    "component": "Analytics database",
    "status": "Analytics Database Status:green Cluster NorthStar nodes count:1 (1 data nodes)",
    "statusTimestamp": 1501129483764,
    "statusTimestampTime": "2017-07-27T04:24:43.764Z"
}

This operation does not accept a request body.

Node

Use these endpoints for access to the nodes retrieved through BGP-LS and planned nodes.

The node schema is: node_v2.json . The operations are:

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/nodes [GET : get all nodes, POST : create a new node]

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/nodes/search URL parameters : name, AS, queryType=OR [ GET : search nodes (name/as)]

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/nodes/<nodeIndex> [ GET : get node, POST : modify node , DELETE]

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/nodes/<nodeIndex>/history [ GET : node history]

As explained in the topology section, nodes can be created in the REST API, including CE and Site nodes. The examples for those are detailed in the "Create a Planned Node" section below.

GET
topology/v2/​{topology_id}​/nodes
Get Nodes

Returns a full list of nodes.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:
[
    {
        "AutonomousSystem": {"asNumber": 62},
        "layer": "IP",
        "name": "0620.0000.0101.02",
        "nodeIndex": 2,
        "protocols": {
            "ISIS": {}
        },
	"pseudoNode": true,
        "topoObjectType": "node",
        "topologyIndex": 1
    },
    {
        "AutonomousSystem": {"asNumber": 62},
        "hostName": "vmx101-62",
        "layer": "IP",
        "name": "62.0.0.101",
        "nodeIndex": 1,
        "protocols": {
            "ISIS": {
                "TERouterId": "62.0.0.101",
                "area": "490062",
                "isoAddress": "0620.0000.0101",
                "routerId": "62.0.0.101"
            },
            "PCEP": {
                "pccAddress": "62.0.0.101"
            }
        },
        "topoObjectType": "node",
        "topologyIndex": 1
    },
    {
        "AutonomousSystem": {"asNumber": 62},
        "hostName": "vmx105-62-p105",
        "layer": "IP",
        "name": "62.0.0.105",
        "nodeIndex": 9,
        "protocols": {
            "ISIS": {
                "TERouterId": "62.0.0.105",
                "area": "490062",
                "isoAddress": "0620.0000.0105",
                "routerId": "62.0.0.105"
            }
        },
        "topoObjectType": "node",
        "topologyIndex": 1
    },
    {
        "AutonomousSystem": {"asNumber": 62},
        "hostName": "vmx105-62-p106",
        "layer": "IP",
        "name": "62.0.0.106",
        "nodeIndex": 10,
        "protocols": {
            "ISIS": {
                "TERouterId": "62.0.0.106",
                "area": "490062",
                "isoAddress": "0620.0000.0106",
                "routerId": "62.0.0.106"
            }
        },
        "topoObjectType": "node",
        "topologyIndex": 1
    },
    {
        "AutonomousSystem": {"asNumber": 62},
        "hostName": "vmx105-62-p107",
        "layer": "IP",
        "name": "62.0.0.107",
        "nodeIndex": 11,
        "protocols": {
            "ISIS": {
                "TERouterId": "62.0.0.107",
                "area": "490062",
                "isoAddress": "0620.0000.0107",
                "routerId": "62.0.0.107"
            }
        },
	"topology": {
	    "coordinates": {
		"type": "Point",
		"coordinates": [-0.025,-49.459999]
	    }
	}
        "topoObjectType": "node",
        "topologyIndex": 1
    }
]

This operation does not accept a request body.

POST
topology/v2/​{topology_id}​/nodes
Create a Node

Creates a node using the following schema: node_v2.json#/definitions/createNode .

 
Normal response codes
201
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:

The following JSON sample shows the minimum required information to add a planned node. The Following parameters are required:

Create Node Required Attributes
Attribute Type Description Fixed
name string No Node Name
topologyIndex integer Yes 1
topoObjectType string Yes node

The following parameters can be set:

  • Name

  • Autonomous System

  • management address

  • hostName

  • nodeType

  • design parameter: canFail

  • Node coordinates

  • ipRole: Regular or Access or Core

  • vendor: CE or SITE

Create Node examples:

  • In this example, create planned node

    {
        "name": "PlannedNode",
        "topoObjectType": "node",
        "topologyIndex": 1
    }
    

    The response is:

    {
        "layer": "IP",
        "name": "PlannedNode",
        "nodeIndex": 12,
        "protocols": {},
        "topoObjectType": "node",
        "topologyIndex": 1
    }
  • In this example, create Site node with Access role. The node will not be used as transit node during path computation (due to ipRole=Transit) and won't be included in P2MP tree signaling (due to vendor=SITE)

    {
       "topoObjectType":"node",
       "topologyIndex":1,
       "name":"SiteZ",
       "ipRole":"Access",
       "protocols":{
          "management":{
             "vendor":"SITE"
          }
       }
    }

    The response is:

    {
       "nodeIndex":46,
       "layer":"IP",
       "name":"SiteZ",
       "ipRole":"Access",
       "topoObjectType":"node",
       "live":false,
       "topologyIndex":1,
       "location":"/NorthStar/API/v2/tenant/1/topology/1/nodes/46",
       "id":"SiteZ",
       "protocols":{
          "management":{
             "vendor":"SITE"
          }
       }
    }
    
  • In this example, create CE node with Regular role. Compared to the previous example (Site), this node will be used as transit for path computation (ipRole=Regular).

    {
       "topoObjectType":"node",
       "topologyIndex":1,
       "name":"CEZ1",
       "ipRole":"Regular",
       "protocols":{
          "management":{
             "vendor":"CE"
          }
       }
    }

    The response is:

    {
       "nodeIndex":58,
       "layer":"IP",
       "name":"CEZ1",
       "ipRole":"Regular",
       "topoObjectType":"node",
       "live":false,
       "topologyIndex":1,
       "location":"/NorthStar/API/v2/tenant/1/topology/1/nodes/58",
       "id":"CEZ1",
       "protocols":{
          "management":{
             "vendor":"CE"
          }
       }
    }
    

Response example:

The responses are shown per example in the request section. In general the response is a JSON document conforming to node_v2.json#/definitions/createNode.

GET
topology/v2/​{topology_id}​/nodes/search
Search Nodes

Searches the list of nodes for specific URI parameters. For example, search?name=62.0.0.101 must return one node.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

name (Optional) query xsd:string

Filters on node name. The parameter is treated as a regular expression. Simple strings such as 62.0.0.101 are accepted. JavaScript regexp (for example, /^62/) is also accepted.

hostName (Optional) query xsd:int

Filters on hostname

AS (Optional) query xsd:int

Filters on AS number

queryType (Optional) query xsd:string

The queryType parameter sets the logical operator to be used between the query parameters. By default, the queryType is AND. If queryType is set to OR, node is included in the result if any of the query parameters matches.

Response example:
[
    {
        "AutonomousSystem": {"asNumber": 62},
        "layer": "IP",
        "name": "0620.0000.0101.02",
        "nodeIndex": 2,
        "protocols": {
            "ISIS": {}
        },
	"pseudoNode": true,
        "topoObjectType": "node",
        "topologyIndex": 1
    },
    {
        "AutonomousSystem": {"asNumber": 62},
        "hostName": "vmx101-62",
        "layer": "IP",
        "name": "62.0.0.101",
        "nodeIndex": 1,
        "protocols": {
            "ISIS": {
                "TERouterId": "62.0.0.101",
                "area": "490062",
                "isoAddress": "0620.0000.0101",
                "routerId": "62.0.0.101"
            },
            "PCEP": {
                "pccAddress": "62.0.0.101"
            }
        },
        "topoObjectType": "node",
        "topologyIndex": 1
    },
    {
        "AutonomousSystem": {"asNumber": 62},
        "hostName": "vmx105-62-p105",
        "layer": "IP",
        "name": "62.0.0.105",
        "nodeIndex": 9,
        "protocols": {
            "ISIS": {
                "TERouterId": "62.0.0.105",
                "area": "490062",
                "isoAddress": "0620.0000.0105",
                "routerId": "62.0.0.105"
            }
        },
        "topoObjectType": "node",
        "topologyIndex": 1
    },
    {
        "AutonomousSystem": {"asNumber": 62},
        "hostName": "vmx105-62-p106",
        "layer": "IP",
        "name": "62.0.0.106",
        "nodeIndex": 10,
        "protocols": {
            "ISIS": {
                "TERouterId": "62.0.0.106",
                "area": "490062",
                "isoAddress": "0620.0000.0106",
                "routerId": "62.0.0.106"
            }
        },
        "topoObjectType": "node",
        "topologyIndex": 1
    },
    {
        "AutonomousSystem": {"asNumber": 62},
        "hostName": "vmx105-62-p107",
        "layer": "IP",
        "name": "62.0.0.107",
        "nodeIndex": 11,
        "protocols": {
            "ISIS": {
                "TERouterId": "62.0.0.107",
                "area": "490062",
                "isoAddress": "0620.0000.0107",
                "routerId": "62.0.0.107"
            }
        },
	"topology": {
	    "coordinates": {
		"type": "Point",
		"coordinates": [-0.025,-49.459999]
	    }
	}
        "topoObjectType": "node",
        "topologyIndex": 1
    }
]
GET
topology/v2/​{topology_id}​/nodes/stream
Start a SSE Stream

See EventSource for format. The notifications send on that stream are only nodeEvent. The data will contain a JSON document (see Paragon PathFinder Notification API).

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:

This operation does not accept a request body.

GET
topology/v2/​{topology_id}​/nodes/​{nodeIndex}​
Get a Single Node

Returns details for a node.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

nodeIndex URI xsd:int

The unique nodeIndex.

Response example:
{
    "AutonomousSystem": {
        "asNumber": 62
    },
    "hostName": "vmx101-62",
    "layer": "IP",
    "name": "62.0.0.101",
    "nodeIndex": 1,
    "protocols": {
        "ISIS": {
            "TERouterId": "62.0.0.101",
            "area": "490062",
            "isoAddress": "0620.0000.0101",
            "routerId": "62.0.0.101"
        },
        "PCEP": {
            "pccAddress": "62.0.0.101"
        }
    },
    "topoObjectType": "node",
    "topologyIndex": 1
}

This operation does not accept a request body.

PUT
topology/v2/​{topology_id}​/nodes/​{nodeIndex}​
Update Node Properties

Updates a node using the following schema: node_v2.json#/definitions/updateNode

 
Normal response codes
202
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

nodeIndex URI xsd:int

The unique nodeIndex.

Request example:
{
    "layer": "IP",
    "id": "PlannedNode",
    "hostName" : "plannedNode.domain.example.com",
    "nodeIndex": 12,
    "protocols": {},
    "topoObjectType": "node",
    "topologyIndex": 1
}
Response example:
{
    "layer": "IP",
    "id": "PlannedNode",
    "hostName" : "plannedNode.domain.example.com",
    "nodeIndex": 12,
    "protocols": {},
    "topoObjectType": "node",
    "topologyIndex": 1
}
PATCH
topology/v2/​{topology_id}​/nodes/​{nodeIndex}​
Patch Node

Updates a node using a RFC6902 patch: json-patch.json. The result of the patch must conform to node_v2.json#/definitions/updateNode. The REST server remove all operational parameters like operationalStatus, ..etc. .

 
Normal response codes
202
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

nodeIndex URI xsd:int

The unique nodeIndex.

Request example:

The Patched update accepts the same parameters as the update

[{"op" : "add", "path":"/protocols/PCEP/extensions/lsp-association-protection" , "value" : false}]
Response example:
{
    "layer": "IP",
    "id": "PlannedNode",
    "hostName" : "plannedNode.domain.example.com",
    "nodeIndex": 12,
    "protocols": {},
    "topoObjectType": "node",
    "topologyIndex": 1,
    "protocols" : {
        "PCEP" : {
            "extensions" : {
                "lsp-association-protection" : false
            }
        }
    }
}
DELETE
topology/v2/​{topology_id}​/nodes/​{nodeIndex}​
Delete a Node

Deletes a node. (You cannot delete a live node; it reappears on the next update from Topology server.)

 
Normal response codes
204
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

nodeIndex URI xsd:int

The unique nodeIndex.

This operation does not accept a request body and does not return a response body.

GET
topology/v2/​{topology_id}​/nodes/​{nodeIndex}​/history
Get the Node Event History

Returns the event history for a node.

 

The history contains a list of Unix-timestamped events for the node resource.

Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

nodeIndex URI xsd:int

The unique nodeIndex.

start (Optional) query xsd:int

Start timestamp: Include events with the starting timetime and later.

end (Optional) query xsd:int

End timestamp: Include events before (but not including) the ending timestamp.

Response example:
[
    {
	"topoObjectType": "node",
	"topologyIndex": 1,
	"name": "62.0.0.101",
	"nodeIndex": 1,
	"AutonomousSystem": {
	    "asNumber": 62
	},
	"layer": "IP",
	"protocols": {
	    "ISIS": {
		"routerId": "62.0.0.101",
		"TERouterId": "62.0.0.101",
		"isoAddress": "0620.0000.0101",
		"area": "490062"
	    }
	},
	"hostName": "vmx101-62",
	"timestamp": 1427130726939
    },
    {
	"topoObjectType": "node",
	"topologyIndex": 1,
	"name": "62.0.0.101",
	"nodeIndex": 1,
	"AutonomousSystem": {
	    "asNumber": 62
	},
	"layer": "IP",
	"protocols": {
	    "ISIS": {
		"routerId": "62.0.0.101",
		"TERouterId": "62.0.0.101",
		"isoAddress": "0620.0000.0101",
		"area": "490062"
	    }
	},
	"hostName": "vmx101-62",
	"timestamp": 1427130727025
    },
    {
	"topoObjectType": "node",
	"topologyIndex": 1,
	"name": "62.0.0.101",
	"nodeIndex": 1,
	"AutonomousSystem": {
	    "asNumber": 62
	},
	"layer": "IP",
	"protocols": {
	    "ISIS": {
		"routerId": "62.0.0.101",
		"TERouterId": "62.0.0.101",
		"isoAddress": "0620.0000.0101",
		"area": "490062"
	    }
	},
	"hostName": "vmx101-62",
	"timestamp": 1427135395317
    },
    {
	"topoObjectType": "node",
	"topologyIndex": 1,
	"name": "62.0.0.101",
	"nodeIndex": 1,
	"AutonomousSystem": {
	    "asNumber": 62
	},
	"layer": "IP",
	"protocols": {
	    "ISIS": {
		"routerId": "62.0.0.101",
		"TERouterId": "62.0.0.101",
		"isoAddress": "0620.0000.0101",
		"area": "490062"
	    }
	},
	"hostName": "CHI",
	"topology": {
	    "coordinates": {
		"type": "Point",
		"coordinates": [
		    4.29167,
		    2.9
		]
	    }
	},
	"timestamp": 1427168112286
    }
]
POST
topology/v2/​{topology_id}​/nodes/bulk
Create a List of Nodes

Creates several Nodes using the following JSON schema: node_v2.json#/definitions/createNodeList .

 
Normal response codes
201
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:

The request must contain a list of Nodes to be created. The individual node parameters are the same as creating an single node.

[
    {"name": "PlannedNode2","topoObjectType": "node","topologyIndex": 1},
    {"name": "PlannedNode3","topoObjectType": "node","topologyIndex": 1}
]
Response example:
[
    {"topoObjectType": "node","topologyIndex": 1, "id": "PlannedNode2","name": "PlannedNode2","nodeIndex": 9,"layer": "IP","live": false},
    {"topoObjectType": "node","topologyIndex": 1, "id": "PlannedNode3","name": "PlannedNode3","nodeIndex": 10,"layer": "IP","live": false}
]
PUT
topology/v2/​{topology_id}​/nodes/bulk
Update a List of Nodes

Updates several Nodes using the following JSON schema: node_v2.json#/definitions/nodeListUpdate .

 
Normal response codes
202
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:

The bulk update accepts a list of Node updates. Each entry requires the same parameters and logic as updating a single Node.

[
    {"nodeIndex": 9,"topoObjectType": "node","topologyIndex": 1, "hostName" : "testHostName"},
    {"nodeIndex": 10,"topoObjectType": "node","topologyIndex": 1,"comment" : "This is a comment"}
]
Response example:

The response contains a list of individual update responses (see Node update).

[
    {"topoObjectType": "node","topologyIndex": 1, "id": "PlannedNode2","nodeIndex": 9,"layer": "IP","live": false,"hostName" : "testHostName"},
    {"topoObjectType": "node","topologyIndex": 1, "id": "PlannedNode3","nodeIndex": 10,"layer": "IP","live": false,"comment" : "This is a comment"}
]   
PATCH
topology/v2/​{topology_id}​/nodes/bulk
Update a List of Nodes using PATCH

Updates several Nodes using the following JSON schema: node_v2.json#/definitions/nodeListPatch .

 
Normal response codes
202
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:

The bulk PATCH accepts a list consisting of nodeIndex and patch:

[
    {"nodeIndex": 9, "patch" : [{"op" : "add", "path" : "/comment", "value": "Updated"}]},
    {"nodeIndex": 10,"patch" : [{"op" : "add", "path" : "/comment", "value": "Updated-1"}]}
]
Response example:

The response contains a list of individual update responses.

[
    {"topoObjectType": "node","topologyIndex": 1, "id": "PlannedNode2","nodeIndex": 9,"layer": "IP","live": false,"hostName" : "testHostName","comment" : "Updated"},
    {"topoObjectType": "node","topologyIndex": 1, "id": "PlannedNode3","nodeIndex": 10,"layer": "IP","live": false,"comment" : "Updated1"}
]   
DELETE
topology/v2/​{topology_id}​/nodes/bulk
Delete a List of Nodes

Deletes a list of Nodess. The payload must conform to node_v2.json#/definitions/nodeListDelete

 
Normal response codes
204
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

This operation does not accept a request body and does not return a response body.

TE-LSPs

Use these endpoints to access TE-LSPs and the related information.

The TE-LSP schema is: lsp.json .

You can perform the following operations using the TE-LSP endpoints:

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/te-lsps/ [GET : get all te-lsps, POST : create one LSP]

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/te-lsps/search search parameters : name={nameFilter}, from={fromIpV4} operStatus={operationalStatus} queryType=OR [ GET : search LSPs ()]

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/te-lsps/bulk Bulk LSP operations: allows to create/update/delete a list of te-lsps [ POST : create LSPs , PUT/PATCH : update lsps, DELETE : delete]

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/te-lsps/<lspIndex> [ GET : get te-lsp, PUT/PATCH : update, DELETE : delete]

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/te-lsps/<lspIndex>/history [ GET : get historical index of te-lsps]

Note: Use this API to create point-to-point LSPs only. The API supports RSVP and SR LSPs. Starting from Northstar release 4.1 onwards, binding SID SR LSPs are supported. Do not use this API to create the P2MP members. Ensure that you use the P2MP resources to create P2MP resources.

The TE-LSP API does allow diverse LSPs to be computed. This is controlled using the following set of attributes:

  • diversityGroup: the LSPs are grouped together using a diversityGroup. If LSP1 and LSP2 should be diverse to each other, they should be in the same diversityGroup.

  • diversityLevel (site, srlg or link): the level of requested diversity. Paragon PathFinder will try to compute path that reach that diversity level, if this cannot be achieved, it will try to route the path as diverse as possible, unless minimumDiversityLevel is specified.

  • minimumDiversityLevel (site, srlg or link): the minimum acceptable diversity level. If Paragon PathFinder cannot achieve diversity as good or better than minimumDiversityLevel, the routing is considered as failed.

GET
topology/v2/​{topology_id}​/te-lsps
Get TE-LSPs

Returns the TE-LSP list.

 

The example contains 10 TE-LSPs:

  • A simple delegated LSP (index 1, named LSP_Node101_Node102). A delegated LSP is configured in the PCC and delegated to Paragon PathFinder. Paragon PathFinder controls the path and some attributes of the LSP.

  • A delegated LSP with a configured explicit path (index 2, name LSP_101_103). The path name in the router is Path_Node101_Node103_Strict_1.

  • A protected tunnel with a primary and secondary path. The two paths (each represented as a TE-LSP) of a tunnel (index 3 and 4). The tunnel is named LSP_Node102_Node104_with_secondary and each path has a pathName. The tunnel name is used for correlation. One path (index3) is the primary path, while the other is the secondary path. The secondary path will be activated upon primary path failure. LSPs carrying traffic are marked as "Active" rather than "Up".

  • A protected tunnel with a primary and secondary standby path (index 5 and 6). The model is similar to a tunnel with a secondary path, the difference is that the standby path has a pathType set to standby and the path is signaled in the control plane (making its operational status "Up").

  • A set of three TE-LSPs in a TE++ configuration (index 7,8,9). The TE-LSPs are named TEplusplus-Node102-Node103-<index>. Correlation of the entries can be done using liveProperties, options, and TEPlusPlusId. Those LSPs are not delegated to Paragon PathFinder, as indicated by the attribute controlType set to PCC. Paragon PathFinder will not modify those LSPs.

  • A PCE-Initiated LSP (index 10).

Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:
[
    {
        "operationalStatus": "Active",
        "plannedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.106.107.1",
                    "loose": false
                }
            ],
            "routingStatus": "Down",
            "adminStatus": "Up",
            "design": {
                "routingMethod": "routeByDevice"
            },
            "lastStatusString": "[PCServer]<Down controller_state=Path found on down lsp",
            "controllerStatus": {
                "status": "Path found on down lsp"
            },
            "correlatedRROHopCount": 2
        },
        "name": "rsvp-105-106",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.105"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.106"
        },
        "lspIndex": 13,
        "controlType": "PCC",
        "provisioningType": "RSVP",
        "collectedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.105",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.106.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.106",
                    "loose": false
                }
            ],
            "routingStatus": "Up",
            "adminStatus": "Up",
            "correlatedRROHopCount": 1
        },
        "tunnelId": 60274,
        "liveProperties": {
            "bandwidth": 0,
            "metric": 10,
            "setupPriority": 7,
            "holdingPriority": 0,
            "operationalStatus": "Active",
            "adminStatus": "Up",
            "ero": [],
            "rro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.106.2",
                    "protectionInUse": false,
                    "protectionAvailable": false
                }
            ]
        },
        "controller": "External"
    },
    {
        "operationalStatus": "Active",
        "name": "11.0.0.101:11.0.0.104:300:vpls:vpn_200",
        "p2mpIndex": 184549480,
        "p2mpName": "11.0.0.104:300:vpls:vpn_200",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.104"
        },
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.101"
        },
        "liveProperties": {
            "bandwidth": 0,
            "metric": 0,
            "setupPriority": 7,
            "holdingPriority": 0,
            "operationalStatus": "Active",
            "adminStatus": "Up",
            "ero": [],
            "rro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.101.105.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                }
            ]
        },
        "controlType": "PCC",
        "controller": "External",
        "pathType": "primary",
        "lspIndex": 14
    },
    {
        "operationalStatus": "Active",
        "name": "11.0.0.103:11.0.0.104:300:vpls:vpn_200",
        "p2mpIndex": 184549480,
        "p2mpName": "11.0.0.104:300:vpls:vpn_200",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.104"
        },
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.103"
        },
        "liveProperties": {
            "bandwidth": 0,
            "metric": 0,
            "setupPriority": 7,
            "holdingPriority": 0,
            "operationalStatus": "Active",
            "adminStatus": "Up",
            "ero": [],
            "rro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.103.107.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                }
            ]
        },
        "controlType": "PCC",
        "controller": "External",
        "pathType": "primary",
        "lspIndex": 15
    },
    {
        "operationalStatus": "Active",
        "name": "11.0.0.106:11.0.0.104:300:vpls:vpn_200",
        "p2mpIndex": 184549480,
        "p2mpName": "11.0.0.104:300:vpls:vpn_200",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.104"
        },
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.106"
        },
        "liveProperties": {
            "bandwidth": 0,
            "metric": 0,
            "setupPriority": 7,
            "holdingPriority": 0,
            "operationalStatus": "Active",
            "adminStatus": "Up",
            "ero": [],
            "rro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.106.2",
                    "protectionInUse": false,
                    "protectionAvailable": false
                }
            ]
        },
        "controlType": "PCC",
        "controller": "External",
        "pathType": "primary",
        "lspIndex": 16
    },
    {
        "operationalStatus": "Active",
        "plannedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.101.105.1",
                    "loose": false
                }
            ],
            "routingStatus": "Up",
            "adminStatus": "Up",
            "lastStatusString": "[PCServer]<PCC ACK request_id=417990091",
            "correlatedRROHopCount": 3
        },
        "name": "Silver-104-101",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.104"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.101"
        },
        "lspIndex": 17,
        "controlType": "Delegated",
        "provisioningType": "RSVP",
        "initiator": "PCC",
        "controller": "NorthStar",
        "collectedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.104",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.101.105.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.101",
                    "loose": false
                }
            ],
            "routingStatus": "Up",
            "adminStatus": "Up",
            "correlatedRROHopCount": 3
        },
        "tunnelId": 32533,
        "liveProperties": {
            "bandwidth": 0,
            "metric": 30,
            "setupPriority": 7,
            "holdingPriority": 0,
            "operationalStatus": "Active",
            "adminStatus": "Up",
            "ero": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.101.105.1",
                    "loose": false
                }
            ],
            "rro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.101.105.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                }
            ]
        }
    },
    {
        "operationalStatus": "Active",
        "plannedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.102.105.1",
                    "loose": false
                }
            ],
            "routingStatus": "Up",
            "adminStatus": "Up",
            "lastStatusString": "[PCServer]<PCC ACK request_id=417990082",
            "correlatedRROHopCount": 3
        },
        "name": "Silver-104-102",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.104"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.102"
        },
        "lspIndex": 18,
        "controlType": "Delegated",
        "provisioningType": "RSVP",
        "initiator": "PCC",
        "controller": "NorthStar",
        "collectedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.104",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.102.105.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.102",
                    "loose": false
                }
            ],
            "routingStatus": "Up",
            "adminStatus": "Up",
            "correlatedRROHopCount": 3
        },
        "tunnelId": 29910,
        "liveProperties": {
            "bandwidth": 0,
            "metric": 30,
            "setupPriority": 7,
            "holdingPriority": 0,
            "operationalStatus": "Active",
            "adminStatus": "Up",
            "ero": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.102.105.1",
                    "loose": false
                }
            ],
            "rro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.102.105.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                }
            ]
        }
    },
    {
        "operationalStatus": "Active",
        "plannedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.103.107.1",
                    "loose": false
                }
            ],
            "routingStatus": "Up",
            "adminStatus": "Up",
            "lastStatusString": "[PCServer]<PCC ACK request_id=417990087",
            "correlatedRROHopCount": 2
        },
        "name": "Silver-104-103",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.104"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.103"
        },
        "lspIndex": 19,
        "controlType": "Delegated",
        "provisioningType": "RSVP",
        "initiator": "PCC",
        "controller": "NorthStar",
        "collectedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.104",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.103.107.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.103",
                    "loose": false
                }
            ],
            "routingStatus": "Up",
            "adminStatus": "Up",
            "correlatedRROHopCount": 2
        },
        "tunnelId": 32451,
        "liveProperties": {
            "bandwidth": 0,
            "metric": 20,
            "setupPriority": 7,
            "holdingPriority": 0,
            "operationalStatus": "Active",
            "adminStatus": "Up",
            "ero": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.103.107.1",
                    "loose": false
                }
            ],
            "rro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.103.107.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                }
            ]
        }
    },
    {
        "operationalStatus": "Active",
        "plannedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "loose": false
                }
            ],
            "routingStatus": "Down",
            "adminStatus": "Up",
            "design": {
                "routingMethod": "routeByDevice"
            },
            "lastStatusString": "[PCServer]<Down controller_state=Path found on down lsp",
            "controllerStatus": {
                "status": "Path found on down lsp"
            },
            "correlatedRROHopCount": 2
        },
        "name": "rsvp-104-105",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.104"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.105"
        },
        "lspIndex": 20,
        "controlType": "PCC",
        "provisioningType": "RSVP",
        "collectedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.104",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.105",
                    "loose": false
                }
            ],
            "routingStatus": "Up",
            "adminStatus": "Up",
            "correlatedRROHopCount": 2
        },
        "tunnelId": 32072,
        "liveProperties": {
            "bandwidth": 0,
            "metric": 20,
            "setupPriority": 7,
            "holdingPriority": 0,
            "operationalStatus": "Active",
            "adminStatus": "Up",
            "ero": [],
            "rro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                }
            ]
        },
        "controller": "External"
    }
]

This operation does not accept a request body.

POST
topology/v2/​{topology_id}​/te-lsps
Create a TE-LSP

Creates a TE-LSP using the following JSON schema: lsp.json#/definitions/createLSP . For example, protection and custom service mapping parameters set.

 
Normal response codes
201
Error response codes
400
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:

Create LSP Required Attributes.
Attribute Type Description Fixed
name string No Tunnel name
from/address string No Tunnel ingress
to/address string No Tunnel egress

The following examples show different set of parameters and results:

  • LSP with a bandwidth of 100M

    {
        "name": "Rest_LSP_1",
        "from": {
    	"topoObjectType": "ipv4",
    	"address": "62.0.0.101"
        },
        "to": {
    	"topoObjectType": "ipv4",
    	"address": "62.0.0.103"
        },
        "plannedProperties": {
    	"bandwidth": "100M",
    	"setupPriority": 7,
    	"holdingPriority": 7
        }
    }
    
  • Primary and standby LSPs. The source (from), destination (to), and name must be the same. The standby (and secondary) LSPs must have a pathName attribute set in order to differentiate them. The Primary LSP may have a pathName set.

    Primary LSP:

    {
        "name": "REST_LSP_2", 
        "from": {"address": "62.0.0.102", "topoObjectType": "ipv4"}, 
        "to": {"address": "62.0.0.104", "topoObjectType": "ipv4"},
        "pathType": "primary", 
        "plannedProperties": {	
    	"bandwidth": "400M", 
    	"setupPriority": 7, 
    	"holdingPriority": 7
        }
    }
    

    Standby LSP:

    {
        "name": "REST_LSP_2", 
        "from": {"address": "62.0.0.102", "topoObjectType": "ipv4"}, 
        "to": {"address": "62.0.0.104", "topoObjectType": "ipv4"},
        "pathType": "standby", 
        "plannedProperties": {	
    	"pathName" : "standby_path_for_second_LSP",
    	"bandwidth": "100M", 
    	"setupPriority": 7, 
    	"holdingPriority": 7
        }
    }
    
  • LSP with a loose explicit route. The loose hop must follow a hop; if no other hop can be supplied, usual best practice is use of the ingress node ID.

    {
    
        "name": "REST_LPS_with_explicit_route",
        "from": {"topoObjectType": "ipv4","address": "62.0.0.101"},
        "to":   {"topoObjectType": "ipv4","address": "62.0.0.103"},
        "plannedProperties": {
    	"bandwidth": 10000000,
    	"setupPriority": 7,
    	"holdingPriority": 7,
    	"ero" : [
                {"topoObjectType": "ipv4","address": "62.0.0.101","loose": false},
                {"topoObjectType": "ipv4","address": "62.0.0.102","loose": true}
    	]
        }
    }
    
  • Creates a TE LSP and associates it with a CCC VPN via userProperties.

    {
      "name": "lintalphaomega",
      "creationConfigurationMethod": "NETCONF",
      "provisioningType": "RSVP",
      "pathType": "primary",
      "from": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.101"
      },
      "to": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.103"
      },
      "plannedProperties": {
        "bandwidth": "24k",
        "setupPriority": 7,
        "holdingPriority": 7,
        "userProperties": {
          "ccc-vpn-name": "vpnsisisi",
          "ccc-interface": "ge-0/0/7.987",
          "transmit-lsp": "lintalphaomega",
          "receive-lsp": "lintomegaalpha"
        }
      }
    }
    

    The response is :

    {
        "plannedProperties": {
            "bandwidth": "24K",
            "setupPriority": 7,
            "holdingPriority": 7,
            "pathName": "lintalphaomega_p0",
            "adminStatus": "Up",
            "preferredEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.101.105.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.103.107.1",
                    "loose": false
                }
            ],
            "userProperties": {
                "ccc-vpn-name": "vpnsisisi",
                "ccc-interface": "ge-0/0/7.987",
                "transmit-lsp": "lintalphaomega",
                "receive-lsp": "lintomegaalpha"
            },
            "lastStatusString": "[ConfigServer]<Netconf provisioning order received",
            "correlatedRROHopCount": 0
        },
        "name": "lintalphaomega",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.101"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.103"
        },
        "lspIndex": 95,
        "controlType": "PCC",
        "provisioningType": "RSVP"
    }
    

In the following NETCONF SR LSP examples, the following should be noted:

  • Only Juniper routers are supported.

  • Only NETCONF provisioning is supported.

  • The binding SID label, if specified, is checked by the device based on the configured label range.

  • Only one primary LSP path is supported.

SR LSP examples:

  • In this example, the SR LSP has a node SID specified for the destination.

    {
      "name": "restSRNodeSID",
      "creationConfigurationMethod": "NETCONF",
      "provisioningType": "SR",
      "pathType": "primary",
      "from": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.101"
      },
      "to": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.103"
      },
      "plannedProperties": {
        "bandwidth": "0",
        "setupPriority": 7,
        "holdingPriority": 7,
        "ero": [
          {
            "topoObjectType": "ipv4",
            "address": "11.0.0.101",
            "loose": false
          },
          {
            "topoObjectType": "ipv4",
            "address": "11.0.0.103",
            "loose": true
          }
        ],
        "design": {
          "routingMethod": "routeByDevice",
          "adminGroups": {}
        }
      }
    }
    

    The response is:

    {
        "plannedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 7,
            "adminStatus": "Up",
            "ero": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.101",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.103",
                    "loose": true
                }
            ],
            "design": {
                "routingMethod": "routeByDevice"
            }
        },
        "name": "restSRNodeSID",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.101"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.103"
        },
        "lspIndex": 106,
        "controlType": "PCC",
        "provisioningType": "SR"
    }
    
  • In this example, the SR LSP has a list of link SIDs specified to reach the destination.

    {
      "name": "restSRLinkSIDs",
      "creationConfigurationMethod": "NETCONF",
      "provisioningType": "SR",
      "pathType": "primary",
      "from": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.101"
      },
      "to": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.104"
      },
      "plannedProperties": {
        "bandwidth": "0",
        "setupPriority": 7,
        "holdingPriority": 7,
        "ero": [
          {
            "topoObjectType": "ipv4",
            "address": "11.0.0.101",
            "loose": false
          },
          {
            "topoObjectType": "ipv4",
            "address": "11.101.105.2",
            "loose": false
          },
          {
            "topoObjectType": "ipv4",
            "address": "11.105.106.2",
            "loose": false
          },
          {
            "topoObjectType": "ipv4",
            "address": "11.106.107.2",
            "loose": false
          },
          {
            "topoObjectType": "ipv4",
            "address": "11.104.107.1",
            "loose": false
          }
        ],
        "design": {
          "adminGroups": {}
        }
      }
    }
    

    The response is:

    {
        "plannedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 7,
            "adminStatus": "Up",
            "ero": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.101",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.101.105.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.106.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.106.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.1",
                    "loose": false
                }
            ]
        },
        "name": "restSRLinkSIDs",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.101"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.104"
        },
        "lspIndex": 107,
        "controlType": "PCC",
        "provisioningType": "SR"
    }
    

    In Paragon PathFinder, a privateForwardingAdjacency is comprised of a pair of binding SID SR LSPs from node A to node Z and from node Z to node A.

  • In this example, the Binding SID SR LSP named restBindingSIDSRnodeSID from vmx105 to vmx 107 has a node SID specified for the destination.

    {
      "name": "restBindingSIDSRnodeSID",
      "creationConfigurationMethod": "NETCONF",
      "provisioningType": "SR",
      "pathType": "primary",
      "from": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.105"
      },
      "to": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.107"
      },
      "plannedProperties": {
        "bandwidth": "0",
        "setupPriority": 7,
        "holdingPriority": 7,
        "bindingSID": 1048048,
        "ero": [
          {
            "topoObjectType": "ipv4",
            "address": "11.0.0.105",
            "loose": false
          },
          {
            "topoObjectType": "ipv4",
            "address": "11.0.0.107",
            "loose": true
          }
        ],
        "design": {
          "routingMethod": "routeByDevice",
          "adminGroups": {}
        }
      }
    }
    

    The response is:

    {
        "plannedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 7,
            "adminStatus": "Up",
            "ero": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.105",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.107",
                    "loose": true
                }
            ],
            "design": {
                "routingMethod": "routeByDevice"
            }
        },
        "name": "restBindingSIDSRnodeSID",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.105"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.107"
        },
        "lspIndex": 108,
        "controlType": "PCC",
        "provisioningType": "SR"
    }
    
  • In this example, the Binding SID SR LSP named restBindingSIDSRnodeSID from vmx107 to vmx 105 has a node SID specified for the destination.

    {
      "name": "restBindingSIDSRnodeSID",
      "creationConfigurationMethod": "NETCONF",
      "provisioningType": "SR",
      "pathType": "primary",
      "from": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.107"
      },
      "to": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.105"
      },
      "plannedProperties": {
        "bandwidth": "0",
        "setupPriority": 7,
        "holdingPriority": 7,
        "bindingSID": 1048048,
        "ero": [
          {
            "topoObjectType": "ipv4",
            "address": "11.0.0.107",
            "loose": false
          },
          {
            "topoObjectType": "ipv4",
            "address": "11.0.0.105",
            "loose": true
          }
        ],
        "design": {
          "routingMethod": "routeByDevice",
          "adminGroups": {}
        }
      }
    }
    

    The response is:

    {
        "plannedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 7,
            "adminStatus": "Up",
            "ero": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.107",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.105",
                    "loose": true
                }
            ],
            "design": {
                "routingMethod": "routeByDevice"
            }
        },
        "name": "restBindingSIDSRnodeSID",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.107"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.105"
        },
        "lspIndex": 109,
        "controlType": "PCC",
        "provisioningType": "SR"
    }
    
  • In this example, the Binding SID SR LSP named restBindingSIDSRlinkSIDs from vmx105 to vmx 107 has a list of SIDs specified to reach the destination.

    {
      "name": "restBindingSIDSRlinkSIDs",
      "creationConfigurationMethod": "NETCONF",
      "provisioningType": "SR",
      "pathType": "primary",
      "from": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.105"
      },
      "to": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.107"
      },
      "plannedProperties": {
        "bandwidth": "0",
        "setupPriority": 7,
        "holdingPriority": 7,
        "bindingSID": 1048049,
        "ero": [
          {
            "topoObjectType": "ipv4",
            "address": "11.0.0.105",
            "loose": false
          },
          {
            "topoObjectType": "ipv4",
            "address": "11.102.105.1",
            "loose": false
          },
          {
            "topoObjectType": "ipv4",
            "address": "11.102.106.2",
            "loose": false
          },
          {
            "topoObjectType": "ipv4",
            "address": "11.104.106.1",
            "loose": false
          },
          {
            "topoObjectType": "ipv4",
            "address": "11.104.107.2",
            "loose": false
          }
        ],
        "design": {
          "adminGroups": {
    
          }
        }
      }
    }
    

    The response is:

    {
        "plannedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 7,
            "adminStatus": "Up",
            "ero": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.105",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.102.105.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.102.106.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.106.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                }
            ]
        },
        "name": "restBindingSIDSRlinkSIDs",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.105"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.107"
        },
        "lspIndex": 110,
        "controlType": "PCC",
        "provisioningType": "SR"
    }
    
  • In this example, the Binding SID SR LSP named restBindingSIDSRlinkSIDs from vmx107 to vmx 105 has a list of SIDs specified to reach the destination.

    {
      "name": "restBindingSIDSRlinkSIDs",
      "creationConfigurationMethod": "NETCONF",
      "provisioningType": "SR",
      "pathType": "primary",
      "from": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.107"
      },
      "to": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.105"
      },
      "plannedProperties": {
        "bandwidth": "0",
        "setupPriority": 7,
        "holdingPriority": 7,
        "bindingSID": 1048049,
        "ero": [
          {
            "topoObjectType": "ipv4",
            "address": "11.0.0.107",
            "loose": false
          },
          {
            "topoObjectType": "ipv4",
            "address": "11.104.107.1",
            "loose": false
          },
          {
            "topoObjectType": "ipv4",
            "address": "11.104.106.2",
            "loose": false
          },
          {
            "topoObjectType": "ipv4",
            "address": "11.102.106.1",
            "loose": false
          },
          {
            "topoObjectType": "ipv4",
            "address": "11.102.105.2",
            "loose": false
          }
        ],
        "design": {
          "adminGroups": {
    
          }
        }
      }
    }
    

    The response is:

    {
        "plannedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 7,
            "adminStatus": "Up",
            "ero": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.107",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.106.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.102.106.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.102.105.2",
                    "loose": false
                }
            ]
        },
        "name": "restBindingSIDSRlinkSIDs",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.107"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.105"
        },
        "lspIndex": 111,
        "controlType": "PCC",
        "provisioningType": "SR"
    }
    
  • In this example, the SR LSP named restSRoverPFA1 from vmx101 to vmx 103 has a list of SIDs specified to reach the destination; along the path, a privateForwardingAdjacency is used.

    {
      "name": "restSRoverPFA1",
      "creationConfigurationMethod": "NETCONF",
      "provisioningType": "SR",
      "pathType": "primary",
      "from": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.101"
      },
      "to": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.103"
      },
      "plannedProperties": {
        "bandwidth": "0",
        "setupPriority": 7,
        "holdingPriority": 7,
        "ero": [
          {
            "topoObjectType": "ipv4",
            "address": "11.0.0.101",
            "loose": false
          },
          {
            "topoObjectType": "ipv4",
            "address": "11.101.105.2",
            "loose": false
          },
          {
            "topoObjectType": "hopId",
            "id": "binding:0110.0000.0105:restBindingSIDSRlinkSIDs",
            "loose": false
          },
          {
            "topoObjectType": "ipv4",
            "address": "11.103.107.1",
            "loose": false
          }
        ],
        "design": {
          "adminGroups": {
    
          }
        }
      }
    }
    

    The response is:

    {
        "plannedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 7,
            "adminStatus": "Up",
            "ero": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.101",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.101.105.2",
                    "loose": false
                },
                {
                    "topoObjectType": "hopId",
                    "id": "binding:0110.0000.0105:restBindingSIDSRlinkSIDs",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.103.107.1",
                    "loose": false
                }
            ]
        },
        "name": "restSRoverPFA1",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.101"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.103"
        },
        "lspIndex": 112,
        "controlType": "PCC",
        "provisioningType": "SR"
    }
    

Response example:

The following example shows the creation of an LSP with a bandwidth of 100M:

{
    "lspIndex": 20,
    "name": "Rest_LSP_1",
    "from": {"address": "62.0.0.101", "topoObjectType": "ipv4"},
    "to":   {"address": "62.0.0.103", "topoObjectType": "ipv4"},
    "controlType": "PCEInitiated",
    "plannedProperties": {
	"adminStatus": "Up",
	"bandwidth": "100M",
	"setupPriority": 7,
	"holdingPriority": 7,
	"lastStatusString": "Provisioning Order from REST Interface",
	"routingStatus": "Unknown"
    },
    "operationalStatus": "Unknown",
    "pathType": "primary"
}

If the input does not conform to the JSON schema, the response includes an HTTP Error 400 and the validation errors.

{
  "error": "Input Validation error :Invalid type: number (expected string) /name"
}
GET
topology/v2/​{topology_id}​/te-lsps/search
Search LSPs

Performs a search in the LSP list based on the URI parameters. For example, "search?name=62.101.105" returns one link.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

name (Optional) query xsd:string

Filters on specified LSP Name, which is treated as a regular expression. Simple strings like "LP_" are acceptable, as are JavaScript regular expressions such as "/104$/").

from (Optional) query xsd:string

Filters on the LSP from/address property.

operationalStatus (Optional) query xsd:string

Filters based on the LSP operationalStatus property.

queryType (Optional) query xsd:string

The queryType parameter sets the logical operator to be used between the query parameters. By default, the queryType is AND. If the queryType is set to OR, an LSP is included in the results if any of its parameter values match the query.

Response example:
[
    {
        "operationalStatus": "Active",
        "plannedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.106.107.1",
                    "loose": false
                }
            ],
            "routingStatus": "Down",
            "adminStatus": "Up",
            "design": {
                "routingMethod": "routeByDevice"
            },
            "lastStatusString": "[PCServer]<Down controller_state=Path found on down lsp",
            "controllerStatus": {
                "status": "Path found on down lsp"
            },
            "correlatedRROHopCount": 2
        },
        "name": "rsvp-105-106",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.105"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.106"
        },
        "lspIndex": 13,
        "controlType": "PCC",
        "provisioningType": "RSVP",
        "collectedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.105",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.106.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.106",
                    "loose": false
                }
            ],
            "routingStatus": "Up",
            "adminStatus": "Up",
            "correlatedRROHopCount": 1
        },
        "tunnelId": 60274,
        "liveProperties": {
            "bandwidth": 0,
            "metric": 10,
            "setupPriority": 7,
            "holdingPriority": 0,
            "operationalStatus": "Active",
            "adminStatus": "Up",
            "ero": [],
            "rro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.106.2",
                    "protectionInUse": false,
                    "protectionAvailable": false
                }
            ]
        },
        "controller": "External"
    },
    {
        "operationalStatus": "Active",
        "name": "11.0.0.101:11.0.0.104:300:vpls:vpn_200",
        "p2mpIndex": 184549480,
        "p2mpName": "11.0.0.104:300:vpls:vpn_200",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.104"
        },
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.101"
        },
        "liveProperties": {
            "bandwidth": 0,
            "metric": 0,
            "setupPriority": 7,
            "holdingPriority": 0,
            "operationalStatus": "Active",
            "adminStatus": "Up",
            "ero": [],
            "rro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.101.105.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                }
            ]
        },
        "controlType": "PCC",
        "controller": "External",
        "pathType": "primary",
        "lspIndex": 14
    },
    {
        "operationalStatus": "Active",
        "name": "11.0.0.103:11.0.0.104:300:vpls:vpn_200",
        "p2mpIndex": 184549480,
        "p2mpName": "11.0.0.104:300:vpls:vpn_200",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.104"
        },
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.103"
        },
        "liveProperties": {
            "bandwidth": 0,
            "metric": 0,
            "setupPriority": 7,
            "holdingPriority": 0,
            "operationalStatus": "Active",
            "adminStatus": "Up",
            "ero": [],
            "rro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.103.107.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                }
            ]
        },
        "controlType": "PCC",
        "controller": "External",
        "pathType": "primary",
        "lspIndex": 15
    },
    {
        "operationalStatus": "Active",
        "name": "11.0.0.106:11.0.0.104:300:vpls:vpn_200",
        "p2mpIndex": 184549480,
        "p2mpName": "11.0.0.104:300:vpls:vpn_200",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.104"
        },
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.106"
        },
        "liveProperties": {
            "bandwidth": 0,
            "metric": 0,
            "setupPriority": 7,
            "holdingPriority": 0,
            "operationalStatus": "Active",
            "adminStatus": "Up",
            "ero": [],
            "rro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.106.2",
                    "protectionInUse": false,
                    "protectionAvailable": false
                }
            ]
        },
        "controlType": "PCC",
        "controller": "External",
        "pathType": "primary",
        "lspIndex": 16
    },
    {
        "operationalStatus": "Active",
        "plannedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.101.105.1",
                    "loose": false
                }
            ],
            "routingStatus": "Up",
            "adminStatus": "Up",
            "lastStatusString": "[PCServer]<PCC ACK request_id=417990091",
            "correlatedRROHopCount": 3
        },
        "name": "Silver-104-101",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.104"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.101"
        },
        "lspIndex": 17,
        "controlType": "Delegated",
        "provisioningType": "RSVP",
        "initiator": "PCC",
        "controller": "NorthStar",
        "collectedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.104",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.101.105.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.101",
                    "loose": false
                }
            ],
            "routingStatus": "Up",
            "adminStatus": "Up",
            "correlatedRROHopCount": 3
        },
        "tunnelId": 32533,
        "liveProperties": {
            "bandwidth": 0,
            "metric": 30,
            "setupPriority": 7,
            "holdingPriority": 0,
            "operationalStatus": "Active",
            "adminStatus": "Up",
            "ero": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.101.105.1",
                    "loose": false
                }
            ],
            "rro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.101.105.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                }
            ]
        }
    },
    {
        "operationalStatus": "Active",
        "plannedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.102.105.1",
                    "loose": false
                }
            ],
            "routingStatus": "Up",
            "adminStatus": "Up",
            "lastStatusString": "[PCServer]<PCC ACK request_id=417990082",
            "correlatedRROHopCount": 3
        },
        "name": "Silver-104-102",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.104"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.102"
        },
        "lspIndex": 18,
        "controlType": "Delegated",
        "provisioningType": "RSVP",
        "initiator": "PCC",
        "controller": "NorthStar",
        "collectedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.104",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.102.105.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.102",
                    "loose": false
                }
            ],
            "routingStatus": "Up",
            "adminStatus": "Up",
            "correlatedRROHopCount": 3
        },
        "tunnelId": 29910,
        "liveProperties": {
            "bandwidth": 0,
            "metric": 30,
            "setupPriority": 7,
            "holdingPriority": 0,
            "operationalStatus": "Active",
            "adminStatus": "Up",
            "ero": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.102.105.1",
                    "loose": false
                }
            ],
            "rro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.102.105.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                }
            ]
        }
    },
    {
        "operationalStatus": "Active",
        "plannedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.103.107.1",
                    "loose": false
                }
            ],
            "routingStatus": "Up",
            "adminStatus": "Up",
            "lastStatusString": "[PCServer]<PCC ACK request_id=417990087",
            "correlatedRROHopCount": 2
        },
        "name": "Silver-104-103",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.104"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.103"
        },
        "lspIndex": 19,
        "controlType": "Delegated",
        "provisioningType": "RSVP",
        "initiator": "PCC",
        "controller": "NorthStar",
        "collectedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.104",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.103.107.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.103",
                    "loose": false
                }
            ],
            "routingStatus": "Up",
            "adminStatus": "Up",
            "correlatedRROHopCount": 2
        },
        "tunnelId": 32451,
        "liveProperties": {
            "bandwidth": 0,
            "metric": 20,
            "setupPriority": 7,
            "holdingPriority": 0,
            "operationalStatus": "Active",
            "adminStatus": "Up",
            "ero": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.103.107.1",
                    "loose": false
                }
            ],
            "rro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.103.107.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                }
            ]
        }
    },
    {
        "operationalStatus": "Active",
        "plannedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "loose": false
                }
            ],
            "routingStatus": "Down",
            "adminStatus": "Up",
            "design": {
                "routingMethod": "routeByDevice"
            },
            "lastStatusString": "[PCServer]<Down controller_state=Path found on down lsp",
            "controllerStatus": {
                "status": "Path found on down lsp"
            },
            "correlatedRROHopCount": 2
        },
        "name": "rsvp-104-105",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.104"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.105"
        },
        "lspIndex": 20,
        "controlType": "PCC",
        "provisioningType": "RSVP",
        "collectedProperties": {
            "bandwidth": "0",
            "setupPriority": 7,
            "holdingPriority": 0,
            "calculatedEro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.104",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "loose": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.0.0.105",
                    "loose": false
                }
            ],
            "routingStatus": "Up",
            "adminStatus": "Up",
            "correlatedRROHopCount": 2
        },
        "tunnelId": 32072,
        "liveProperties": {
            "bandwidth": 0,
            "metric": 20,
            "setupPriority": 7,
            "holdingPriority": 0,
            "operationalStatus": "Active",
            "adminStatus": "Up",
            "ero": [],
            "rro": [
                {
                    "topoObjectType": "ipv4",
                    "address": "11.104.107.2",
                    "protectionInUse": false,
                    "protectionAvailable": false
                },
                {
                    "topoObjectType": "ipv4",
                    "address": "11.105.107.1",
                    "protectionInUse": false,
                    "protectionAvailable": false
                }
            ]
        },
        "controller": "External"
    }
]
GET
topology/v2/​{topology_id}​/te-lsps/stream
Start a SSE Stream

See EventSource for format. The notifications send on that stream are only lspEvent or lspTopologyEvent. The data will contain a JSON document (see Paragon PathFinder Notification API).

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:

This operation does not accept a request body.

GET
topology/v2/​{topology_id}​/te-lsps/​{lspIndex}​
Get a Single TE-LSP

Returns the details for a TE-LSP.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

lspIndex URI xsd:int

The unique lspIndex.

Response example:
{
    "lspIndex": 2,
    "name": "LP_101_103",
    "from": {"address": "62.0.0.101", "topoObjectType": "ipv4"},
    "to":   {"address": "62.0.0.103", "topoObjectType": "ipv4"},
    "controlType": "Delegated",
    "plannedProperties": {
	"bandwidth": "10M",
	"setupPriority": 7,
	"holdingPriority": 0,
	"calculatedEro": [
	    {"topoObjectType": "ipv4","address": "62.101.105.2","loose": false},
	    {"topoObjectType": "ipv4","address": "62.102.105.1","loose": false},
	    {"topoObjectType": "ipv4","address": "62.102.106.2","loose": false},
	    {"topoObjectType": "ipv4","address": "62.104.106.1","loose": false},
	    {"topoObjectType": "ipv4","address": "62.104.107.2","loose": false},
	    {"topoObjectType": "ipv4","address": "62.103.107.1","loose": false}
	],
	"pathName": "Path_Node101_Node103_Strict_1",
	"adminStatus": "Up",
	"routingStatus": "Up",
	"lastStatusString": "<Active PCS initialization"
    },
    "liveProperties": {
        "adminStatus": "Up",
        "bandwidth": 10000000,
        "ero": [
            {"address": "62.101.105.2", "loose": false, "topoObjectType": "ipv4" },
            {"address": "62.105.107.2", "loose": false, "topoObjectType": "ipv4" },
            {"address": "62.103.107.1", "loose": false, "topoObjectType": "ipv4" }
        ],
        "holdingPriority": 0,
        "metric": 40,
        "pathName": "Path_Node101_Node103_Strict_1",
        "rro": [
            {"address": "62.0.0.105",   "protectionAvailable": true, "protectionInUse": false, "topoObjectType": "ipv4"},
            {"address": "62.101.105.2", "protectionAvailable": true, "protectionInUse": false, "topoObjectType": "ipv4"},
            {"address": "62.0.0.107",   "protectionAvailable": false, "protectionInUse": false, "topoObjectType": "ipv4"},
            {"address": "62.105.107.2", "protectionAvailable": false, "protectionInUse": false, "topoObjectType": "ipv4"},
            {"address": "62.0.0.103",   "protectionAvailable": false, "protectionInUse": false, "topoObjectType": "ipv4"},
            {"address": "62.103.107.1", "protectionAvailable": false, "protectionInUse": false, "topoObjectType": "ipv4"}
        ],
        "setupPriority": 7
    },
    "operationalStatus": "Active",
    "pathType": "primary",
    "tunnelId": 56614
}

This operation does not accept a request body.

PUT
topology/v2/​{topology_id}​/te-lsps/​{lspIndex}​
Update a TE-LSP

Updates a TE-LSP using the JSON schema: lsp.json#/definitions/updateLSP .

 
Normal response codes
202
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

lspIndex URI xsd:int

The unique lspIndex.

Request example:

The update accepts the same parameters as the create, except for parameters that cannot be modified (from, to, name, pathName, pathType).

{
    "lspIndex": 31,
    "name": "Rest_LSP_1",
    "from": {"topoObjectType": "ipv4","address": "62.0.0.101" },
    "to": {"topoObjectType": "ipv4","address": "62.0.0.103"  },
    "pathType": "primary",
    "plannedProperties": {
	"bandwidth": "15M",
	"setupPriority": 7,
	"holdingPriority": 7	
    }
}
Response example:
{
    "lspIndex": 20,
    "name": "Rest_LSP_1",
    "from": {"address": "62.0.0.101", "topoObjectType": "ipv4"},
    "to":   {"address": "62.0.0.103", "topoObjectType": "ipv4"},
    "controlType": "PCEInitiated",
    "plannedProperties": {
	"adminStatus": "Up",
	"bandwidth": "100M",
	"setupPriority": 7,
	"holdingPriority": 7,
	"lastStatusString": "Provisioning Order from REST Interface",
	"routingStatus": "Unknown"
    },
    "operationalStatus": "Unknown",
    "pathType": "primary"
}
PATCH
topology/v2/​{topology_id}​/te-lsps/​{lspIndex}​
Patch a TE-LSP

Updates a TE-LSP using a RFC6902 patch: json-patch.json. The result of the patch must conform to lsp.json#/definitions/updateLsp. The REST server remove all operational parameters like operationalStatus, ..etc. . Using an empty patch (empty list) will result in the LSP to be re-provisioned without parameter changed.

 
Normal response codes
202
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

lspIndex URI xsd:int

The unique lspIndex.

Request example:

The Patched update accepts the same parameters as the create, except for parameters that cannot be modified (from, to, name, pathName, pathType).

[{ "op": "replace", "path": "/plannedProperties/bandwidth", "value": "100M" }]
Response example:
{
    "lspIndex": 20,
    "name": "Rest_LSP_1",
    "from": {"address": "62.0.0.101", "topoObjectType": "ipv4"},
    "to":   {"address": "62.0.0.103", "topoObjectType": "ipv4"},
    "controlType": "PCEInitiated",
    "plannedProperties": {
	"adminStatus": "Up",
	"bandwidth": "100M",
	"setupPriority": 7,
	"holdingPriority": 7,
	"lastStatusString": "Provisioning Order from REST Interface",
	"routingStatus": "Unknown"
    },
    "operationalStatus": "Unknown",
    "pathType": "primary"
}
DELETE
topology/v2/​{topology_id}​/te-lsps/​{lspIndex}​
Delete a TE-LSP

Deletes a TE-LSP. This function is supported only on the PCE-initiated LSPs. PCC-controlled and PCC-delegated LSPs cannot be deleted from Paragon PathFinder. They must be deleted in the node.

 
Normal response codes
204
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

lspIndex URI xsd:int

The unique lspIndex.

This operation does not accept a request body and does not return a response body.

POST
topology/v2/​{topology_id}​/te-lsps/bulk
Create a List of TE-LSPs

Creates several TE-LSPs using the following JSON schema: lsp.json#/definitions/createLSPList .

 
Normal response codes
201
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:

The request must contain a list of LSPs to be created. The LSP parameters are the same as creating an individual LSP. The following example shows the creation of two diverse LSPs at the same time.

[
    {
        "name": "REST_LSP_DIVERSE_1", 
        "from": {"address": "62.0.0.102", "topoObjectType": "ipv4"}, 
        "to":   {"address": "62.0.0.104", "topoObjectType": "ipv4"},
        "plannedProperties": {	
	    "bandwidth": "100M", 
	    "setupPriority": 7, 
	    "holdingPriority": 7,
            "design" : {"diversityLevel":"srlg","diversityGroup":"DiverseGroup1"}
        }
    },
    {
        "name": "REST_LSP_DIVERSE_2", 
        "from": {"address": "62.0.0.103", "topoObjectType": "ipv4"}, 
        "to":   {"address": "62.0.0.101", "topoObjectType": "ipv4"},
        "plannedProperties": {	
	    "bandwidth": "100M", 
	    "setupPriority": 7, 
	    "holdingPriority": 7,
            "design" : {"diversityLevel":"srlg","diversityGroup":"DiverseGroup1"}
        }
    }
]
Response example:
[
    {
        "name": "REST_LSP_DIVERSE_1", 
        "from": {"address": "62.0.0.102", "topoObjectType": "ipv4"}, 
        "to":   {"address": "62.0.0.104", "topoObjectType": "ipv4"},
        "lspIndex": 21,
        "plannedProperties": {	
	    "bandwidth": "100M", 
	    "setupPriority": 7, 
	    "holdingPriority": 7,
            "adminStatus": "Up",
            "routingStatus": "Unknown",
            "design" : {"diversityLevel":"srlg","diversityGroup":"DiverseGroup1"},
            "lastStatusString": ">Provisioning Order from REST Interface"
        },
        "controlType": "PCEInitiated",
        "operationalStatus": "Unknown"
    },
    {
        "name": "REST_LSP_DIVERSE_2", 
        "from": {"address": "62.0.0.103", "topoObjectType": "ipv4"}, 
        "to":   {"address": "62.0.0.101", "topoObjectType": "ipv4"},
        "lspIndex": 22,       
        "plannedProperties": {	
	    "bandwidth": "100M", 
	    "setupPriority": 7, 
	    "holdingPriority": 7,
            "adminStatus": "Up",
            "routingStatus": "Unknown",
            "design" : {"diversityLevel":"srlg","diversityGroup":"DiverseGroup1"},
            "lastStatusString": ">Provisioning Order from REST Interface"
        },
        "controlType": "PCEInitiated",
        "operationalStatus": "Unknown"
    }
]

PUT
topology/v2/​{topology_id}​/te-lsps/bulk
Update a List of TE-LSPs

Updates several TE-LSPs using the following JSON schema: lsp.json#/definitions/lspListUpdate .

 
Normal response codes
202
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:

The bulk update accepts a list of LSP updates. Each entry requires the same parameters and logic as updating a single LSP.

Response example:

The response contains a list of individual update responses (see TE-LSP update).

PATCH
topology/v2/​{topology_id}​/te-lsps/bulk
Update a List of TE-LSPs using PATCH

Updates several TE-LSPs using the following JSON schema: lsp.json#/definitions/lspListPatch .

 
Normal response codes
202
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:

The bulk PATCH accepts a list consisting of lspIndex and patch:

[
	{"lspIndex" : 1,"patch":[{ "op": "replace", "path": "/plannedProperties/bandwidth", "value": "1M" }]},
	{"lspIndex" : 2,"patch":[{ "op": "replace", "path": "/plannedProperties/bandwidth", "value": "2M" }]}
]
Response example:

The response contains a list of individual update responses (see TE-LSP update).

DELETE
topology/v2/​{topology_id}​/te-lsps/bulk
Delete a List of TE-LSPs

Deletes a list of TE-LSPs. This function is supported only on the PCE-initiated LSPs. PCC-controlled and PCC-delegated LSPs cannot be deleted from Paragon PathFinder. They must be deleted in the node.b The payload must conform to lsp.json#/definitions/lspListDelete

 
Normal response codes
204
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

This operation does not accept a request body and does not return a response body.

GET
topology/v2/​{topology_id}​/te-lsps/​{lspIndex}​/history
Get the LSP Event History

Returns the history for a TE-LSP.

 

The history contains a list of Unix-timestamped events for the LSP resource.

Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

lspIndex URI xsd:int

The unique lspIndex.

start (Optional) query xsd:int

Start timestamp: Include events with the starting timetime and later.

end (Optional) query xsd:int

End timestamp: Include events before (but not including) the ending timestamp.

Response example:
[
    {
	"plannedProperties": {
	    "bandwidth": "0",
	    "setupPriority": 7,
	    "holdingPriority": 0,
	    "adminStatus": "Up",
	    "routingStatus": "Down"
	},
	"controlType": "PCC",
	"eventStatusString": "<Down",
	"timestamp": 1427128941053,
	"operation": "State Change"
    },
    {
	"plannedProperties": {
	    "bandwidth": "0",
	    "setupPriority": 7,
	    "holdingPriority": 0,
	    "adminStatus": "Up",
	    "routingStatus": "Down"
	},
	"controlType": "PCC",
	"eventStatusString": "<Down PCS initialization",
	"timestamp": 1427128941057,
	"operation": "State Change"
    },
    {
	"plannedProperties": {
	    "bandwidth": "10M",
	    "setupPriority": 7,
	    "holdingPriority": 0,
	    "pathName": "VMX103_VMX101",
	    "adminStatus": "Up",
	    "routingStatus": "Down"
	},
	"controlType": "Delegated",
	"eventStatusString": "reprovision:provisioning new delegated lsp",
	"timestamp": 1427132006714,
	"operation": "State Change"
    },
    {
	"plannedProperties": {
	    "bandwidth": "10M",
	    "setupPriority": 7,
	    "holdingPriority": 0,
	    "pathName": "Node103_Node101",
	    "adminStatus": "Up",
	    "routingStatus": "Down"
	},
	"controlType": "Delegated",
	"eventStatusString": "Down",
	"timestamp": 1427132006720,
	"operation": "State Change"
    },
    {
	"plannedProperties": {
	    "bandwidth": "10M",
	    "setupPriority": 7,
	    "holdingPriority": 0,
	    "pathName": "Node103_Node101",
	    "adminStatus": "Up",
	    "routingStatus": "Down"
	},
	"controlType": "Delegated",
	"eventStatusString": "Down",
	"timestamp": 1427132006780,
	"operation": "State Change"
    },
    {
	"plannedProperties": {
	    "bandwidth": "10M",
	    "setupPriority": 7,
	    "holdingPriority": 0,
	    "pathName": "Node103_Node101",
	    "adminStatus": "Up",
	    "routingStatus": "Up"
	},
	"controlType": "Delegated",
	"eventStatusString": "Up",
	"timestamp": 1427132007053,
	"operation": "State Change"
    },
    {
	"plannedProperties": {
	    "bandwidth": "10M",
	    "setupPriority": 7,
	    "holdingPriority": 0,
	    "pathName": "Node103_Node101",
	    "adminStatus": "Up",
	    "routingStatus": "Up"
	},
	"controlType": "Delegated",
	"eventStatusString": "Active",
	"timestamp": 1427132007069,
	"operation": "State Change"
    },
    {
	"plannedProperties": {
	    "bandwidth": "10M",
	    "setupPriority": 7,
	    "holdingPriority": 0,
	    "pathName": "Node103_Node101",
	    "adminStatus": "Up",
	    "routingStatus": "Up"
	},
	"controlType": "Delegated",
	"eventStatusString": "Active",
	"timestamp": 1427132009764,
	"operation": "State Change"
    },
    {
	"plannedProperties": {
	    "bandwidth": "10M",
	    "setupPriority": 7,
	    "holdingPriority": 0,
	    "pathName": "Node103_Node101",
	    "adminStatus": "Up",
	    "routingStatus": "Up"
	},
	"controlType": "Delegated",
	"eventStatusString": "Active",
	"timestamp": 1427135406437,
	"operation": "State Change"
    },
    {
	"plannedProperties": {
	    "bandwidth": "10M",
	    "setupPriority": 7,
	    "holdingPriority": 0,
	    "pathName": "Path_Node101_Node103_Strict_1",
	    "adminStatus": "Up",
	    "routingStatus": "Down"
	},
	"controlType": "Delegated",
	"eventStatusString": "reprovision:Provision using planned data",
	"timestamp": 1427167092366,
	"operation": "State Change"
    },
    {
	"plannedProperties": {
	    "bandwidth": "10M",
	    "setupPriority": 7,
	    "holdingPriority": 0,
	    "pathName": "Path_Node101_Node103_Strict_1",
	    "adminStatus": "Up",
	    "routingStatus": "Down"
	},
	"controlType": "Delegated",
	"eventStatusString": "Down, PCS initialization",
	"timestamp": 1427167092372,
	"operation": "State Change"
    },
    {
	"plannedProperties": {
	    "bandwidth": "10M",
	    "setupPriority": 7,
	    "holdingPriority": 0,
	    "pathName": "Path_Node101_Node103_Strict_1",
	    "adminStatus": "Up",
	    "routingStatus": "Down"
	},
	"controlType": "Delegated",
	"eventStatusString": "Down",
	"timestamp": 1427167092475,
	"operation": "State Change"
    },
    {
	"plannedProperties": {
	    "bandwidth": "10M",
	    "setupPriority": 7,
	    "holdingPriority": 0,
	    "pathName": "Path_Node101_Node103_Strict_1",
	    "adminStatus": "Up",
	    "routingStatus": "Down"
	},
	"controlType": "Delegated",
	"eventStatusString": "Down",
	"timestamp": 1427167092516,
	"operation": "State Change"
    },
    {
	"plannedProperties": {
	    "bandwidth": "10M",
	    "setupPriority": 7,
	    "holdingPriority": 0,
	    "pathName": "Path_Node101_Node103_Strict_1",
	    "adminStatus": "Up",
	    "routingStatus": "Up"
	},
	"controlType": "Delegated",
	"eventStatusString": "Active",
	"timestamp": 1427167092865,
	"operation": "State Change"
    }
]

Demands

Use the following endpoints to access demands and the related information. Demands can be created based on netflow or LDP collection tasks.

The demand resources are described in demands.json .

GET
topology/v2/​{topology_id}​/demands
Gets all Demands

Returns a full list of Demands.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:
[  
   {  
      "operationalStatus":"Unknown",
      "plannedProperties":{  
         "bandwidth":"1.684666M",
         "setupPriority":7,
         "holdingPriority":7,
         "calculatedEro":[  
            {  
               "topoObjectType":"ipv4",
               "address":"11.103.107.2",
               "loose":false
            },
            {  
               "topoObjectType":"ipv4",
               "address":"11.105.107.1",
               "loose":false
            },
            {  
               "topoObjectType":"ipv4",
               "address":"11.101.105.1",
               "loose":false
            }
         ],
         "routingStatus":"Up",
         "pathName":"11.0.0.101",
         "adminStatus":"Up",
         "lastStatusString":"[PCServer]>demand update",
         "controllerStatus":{  
            "status":""
         },
         "correlatedRROHopCount":3
      },
      "name":"vmx103_11.0.0.101/32_NONE_IP",
      "from":{  
         "topoObjectType":"ipv4",
         "address":"11.0.0.103"
      },
      "pathType":"primary",
      "to":{  
         "topoObjectType":"prefix",
         "address":"11.0.0.101",
         "length":32
      },
      "demandIndex":30,
      "liveProperties":{  
         "bandwidth":"1.684666M"
      }
   },
   {  
      "operationalStatus":"Unknown",
      "plannedProperties":{  
         "bandwidth":"1.613733M",
         "setupPriority":7,
         "holdingPriority":7,
         "calculatedEro":[  
            {  
               "topoObjectType":"ipv4",
               "address":"11.104.107.2",
               "loose":false
            },
            {  
               "topoObjectType":"ipv4",
               "address":"11.105.107.1",
               "loose":false
            },
            {  
               "topoObjectType":"ipv4",
               "address":"11.102.105.1",
               "loose":false
            }
         ],
         "routingStatus":"Up",
         "pathName":"11.0.0.102",
         "adminStatus":"Up",
         "lastStatusString":"[PCServer]>demand update",
         "controllerStatus":{  
            "status":""
         },
         "correlatedRROHopCount":3
      },
      "name":"vmx104_11.0.0.102/32_NONE_IP",
      "from":{  
         "topoObjectType":"ipv4",
         "address":"11.0.0.104"
      },
      "pathType":"primary",
      "to":{  
         "topoObjectType":"prefix",
         "address":"11.0.0.102",
         "length":32
      },
      "demandIndex":31,
      "liveProperties":{  
         "bandwidth":"1.613733M"
      }
   }
]

This operation does not accept a request body.

POST
topology/v2/​{topology_id}​/demands
Create a Demand

Create a demand using the following JSON schema: demands.json#/definitions/createDemand .

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:
{  
   "plannedProperties":{  
      "pathName":"11.0.0.11",
      "bandwidth":"0",
      "setupPriority":7,
      "holdingPriority":7,
      "design":{  
         "routingMethod":"default",
         "adminGroups":{  

         }
      }
   },
   "name":"testprefix",
   "pathType":"primary",
   "from":{  
      "topoObjectType":"ipv4",
      "address":"11.0.0.10"
   },
   "to":{  
      "topoObjectType":"ipv4",
      "address":"11.0.0.11"
   },
   "prefix":{  
      "topoObjectType":"ipv4",
      "address":"10.4.10.0",
      "length":24
   }
}
Response example:
{
    "plannedProperties": {
        "bandwidth": 0,
        "setupPriority": 7,
        "holdingPriority": 7,
        "pathName": "11.0.0.11",
        "adminStatus": "Up"
    },
    "name": "testprefix",
    "from": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.10"
    },
    "pathType": "primary",
    "to": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.11"
    },
    "demandIndex": 17,
    "prefix": {
        "topoObjectType": "prefix",
        "address": "10.4.10.0",
        "length": 24
    }
}
GET
topology/v2/​{topology_id}​/demands/stream
Start a SSE Stream

See EventSource for format. The notifications send on that stream are only demandEvent and demandTopologyEvent. The data will contain a JSON document (see Paragon PathFinder Notification API).

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:

This operation does not accept a request body.

GET
topology/v2/​{topology_id}​/demands/​{demandIndex}​
Get a Specific Demand

Return the details of a specified demand.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

demandIndex URI xsd:int

The unique demandIndex.

Response example:
{
    "operationalStatus": "Unknown",
    "plannedProperties": {
        "bandwidth": 0,
        "setupPriority": 7,
        "holdingPriority": 7,
        "pathName": "11.0.0.11",
        "adminStatus": "Up",
        "calculatedEro": [
            {
                "topoObjectType": "ipv4",
                "address": "10.1.10.1",
                "loose": false
            },
            {
                "topoObjectType": "ipv4",
                "address": "10.1.2.2",
                "loose": false
            },
            {
                "topoObjectType": "ipv4",
                "address": "10.2.11.11",
                "loose": false
            }
        ],
        "routingStatus": "Up",
        "correlatedRROHopCount": 3,
        "lastStatusString": "[PCServer]<demand orders update"
    },
    "name": "testprefix",
    "from": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.10"
    },
    "pathType": "primary",
    "to": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.11"
    },
    "demandIndex": 27,
    "prefix": {
        "topoObjectType": "prefix",
        "address": "10.4.10.0",
        "length": 24
    }
}

This operation does not accept a request body.

PUT
topology/v2/​{topology_id}​/demands/​{demandIndex}​
Update a Specific Demand

Modify a specific demand using the following JSON schema: demands.json#/definitions/updateDemand .

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

demandIndex URI xsd:int

The unique demandIndex.

Request example:
{
    "plannedProperties": {
        "bandwidth": 4727,
        "setupPriority": 7,
        "holdingPriority": 7,
        "calculatedEro": [
            {
                "topoObjectType": "ipv4",
                "address": "10.1.10.1",
                "loose": false
            },
            {
                "topoObjectType": "ipv4",
                "address": "10.1.2.2",
                "loose": false
            },
            {
                "topoObjectType": "ipv4",
                "address": "10.2.11.11",
                "loose": false
            }
        ],
        "bindingLSP":"sr-color-test",
        "routingStatus": "Up",
        "pathName": "11.0.0.11",
        "adminStatus": "Up",
        "lastStatusString": "[PCServer]>new demand",
        "correlatedRROHopCount": 3
    },
    "name": "PE1_10.4.0.0/24_IP",
    "from": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.10"
    },
    "pathType": "primary",
    "to": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.11"
    },
    "demandIndex": 47,
    "prefix": {
        "topoObjectType": "prefix",
        "address": "10.4.0.0",
        "length": 24
    }
}
Response example:
{
    "plannedProperties": {
        "bandwidth": 4727,
        "setupPriority": 7,
        "holdingPriority": 7,
        "pathName": "11.0.0.11",
        "adminStatus": "Up",
        "bindingLSP": "sr-color-test"
    },
    "name": "PE1_10.4.0.0/24_IP",
    "from": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.10"
    },
    "pathType": "primary",
    "to": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.11"
    },
    "demandIndex": 47,
    "prefix": {
        "topoObjectType": "prefix",
        "address": "10.4.0.0",
        "length": 24
    }
}
PATCH
topology/v2/​{topology_id}​/demands/​{demandIndex}​
Update a Specific Demand using PATCH

Patch a specific demand using a RFC6902 patch: json-patch.json. The result of the patch must conform to demands.json#/definitions/updateDemand. The REST server remove all operational parameters like operationalStatus, ..etc. .

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

demandIndex URI xsd:int

The unique demandIndex.

Request example:
[{ "op": "add", "path": "/plannedProperties/bindingLSP", "value": "sr-color-test" }]
Response example:
{
    "plannedProperties": {
        "bandwidth": 140019,
        "setupPriority": 7,
        "holdingPriority": 7,
        "pathName": "11.0.0.11",
        "adminStatus": "Up",
        "bindingLSP": "sr-color-test"
    },
    "name": "PE1_10.4.0.0/24_IP",
    "from": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.10"
    },
    "pathType": "primary",
    "to": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.11"
    },
    "demandIndex": 50,
    "prefix": {
        "topoObjectType": "prefix",
        "address": "10.4.0.0",
        "length": 24
    }
}
DELETE
topology/v2/​{topology_id}​/demands/​{demandIndex}​
Delete a Specific Demand

Delete a specific demand.

 
Normal response codes
204
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

demandIndex URI xsd:int

The unique demandIndex.

This operation does not accept a request body and does not return a response body.

POST
topology/v2/​{topology_id}​/demands/bulk
Create a set of Demands

Create a set of demands using the following JSON schema: demands.json#/definitions/createDemandList. The resulting list of demands (after the patch is applied) must also conform to demands.json#/definitions/demandListUpdate . The return code indicates the request acceptance.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:
[
	{  
	   "plannedProperties":{  
	      "pathName":"11.0.0.11",
	      "bandwidth":"0",
	      "setupPriority":7,
	      "holdingPriority":7,
	      "design":{  
	         "routingMethod":"default",
	         "adminGroups":{  
	
	         }
	      }
	   },
	   "name":"testprefix",
	   "pathType":"primary",
	   "from":{  
	      "topoObjectType":"ipv4",
	      "address":"11.0.0.10"
	   },
	   "to":{  
	      "topoObjectType":"ipv4",
	      "address":"11.0.0.11"
	   },
	   "prefix":{  
	      "topoObjectType":"ipv4",
	      "address":"10.4.10.0",
	      "length":24
	   }
	},
	{  
	   "plannedProperties":{  
	      "pathName":"11.0.0.11",
	      "bandwidth":"0",
	      "setupPriority":7,
	      "holdingPriority":7,
	      "design":{  
	         "routingMethod":"default",
	         "adminGroups":{  
	
	         }
	      }
	   },
	   "name":"testprefix2",
	   "pathType":"primary",
	   "from":{  
	      "topoObjectType":"ipv4",
	      "address":"11.0.0.10"
	   },
	   "to":{  
	      "topoObjectType":"ipv4",
	      "address":"11.0.0.11"
	   },
	   "prefix":{  
	      "topoObjectType":"ipv4",
	      "address":"10.4.11.0",
	      "length":24
	   }
	}	
]
Response example:
[
    {
        "plannedProperties": {
            "bandwidth": 0,
            "setupPriority": 7,
            "holdingPriority": 7,
            "pathName": "11.0.0.11",
            "adminStatus": "Up"
        },
        "name": "testprefix",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.10"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.11"
        },
        "demandIndex": 51,
        "prefix": {
            "topoObjectType": "prefix",
            "address": "10.4.10.0",
            "length": 24
        }
    },
    {
        "plannedProperties": {
            "bandwidth": 0,
            "setupPriority": 7,
            "holdingPriority": 7,
            "pathName": "11.0.0.11",
            "adminStatus": "Up"
        },
        "name": "testprefix2",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.10"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.11"
        },
        "demandIndex": 52,
        "prefix": {
            "topoObjectType": "prefix",
            "address": "10.4.11.0",
            "length": 24
        }
    }
]
PUT
topology/v2/​{topology_id}​/demands/bulk
Update a set of Demands

Update a set of demands using the following JSON schema: demands.json#/definitions/demandListUpdate . The return code indicates the request acceptance.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:
[
    {
        "plannedProperties": {
            "bandwidth": 0,
            "setupPriority": 7,
            "holdingPriority": 7,
            "pathName": "11.0.0.11",
            "adminStatus": "Up"
        },
        "name": "testprefix",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.10"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.11"
        },
        "demandIndex": 51,
        "prefix": {
            "topoObjectType": "prefix",
            "address": "10.4.20.0",
            "length": 24
        }
    },
    {
        "plannedProperties": {
            "bandwidth": 0,
            "setupPriority": 7,
            "holdingPriority": 7,
            "pathName": "11.0.0.11",
            "adminStatus": "Up"
        },
        "name": "testprefix2",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.10"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.11"
        },
        "demandIndex": 52,
        "prefix": {
            "topoObjectType": "prefix",
            "address": "10.4.21.0",
            "length": 24
        }
    }
]
Response example:
[
    {
        "plannedProperties": {
            "bandwidth": 0,
            "setupPriority": 7,
            "holdingPriority": 7,
            "pathName": "11.0.0.11",
            "adminStatus": "Up"
        },
        "name": "testprefix",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.10"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.11"
        },
        "demandIndex": 51,
        "prefix": {
            "topoObjectType": "prefix",
            "address": "10.4.20.0",
            "length": 24
        }
    },
    {
        "plannedProperties": {
            "bandwidth": 0,
            "setupPriority": 7,
            "holdingPriority": 7,
            "pathName": "11.0.0.11",
            "adminStatus": "Up"
        },
        "name": "testprefix2",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.10"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.11"
        },
        "demandIndex": 52,
        "prefix": {
            "topoObjectType": "prefix",
            "address": "10.4.21.0",
            "length": 24
        }
    }
]
PATCH
topology/v2/​{topology_id}​/demands/bulk
Patch a set of Demands

Patch a set of demands using the following JSON schema: demands.json#/definitions/demandListPatch . The return code indicates the request acceptance.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:
[
	{"demandIndex" : 51,"patch":[{ "op": "replace", "path": "/prefix/address", "value": "10.4.30.0" }]},
	{"demandIndex" : 52,"patch":[{ "op": "replace", "path": "/prefix/address", "value": "10.4.31.0" }]}
]
Response example:
[
    {
        "plannedProperties": {
            "bandwidth": 0,
            "setupPriority": 7,
            "holdingPriority": 7,
            "pathName": "11.0.0.11",
            "adminStatus": "Up"
        },
        "name": "testprefix",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.10"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.11"
        },
        "demandIndex": 51,
        "prefix": {
            "topoObjectType": "prefix",
            "address": "10.4.30.0",
            "length": 24
        }
    },
    {
        "plannedProperties": {
            "bandwidth": 0,
            "setupPriority": 7,
            "holdingPriority": 7,
            "pathName": "11.0.0.11",
            "adminStatus": "Up"
        },
        "name": "testprefix2",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.10"
        },
        "pathType": "primary",
        "to": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.11"
        },
        "demandIndex": 52,
        "prefix": {
            "topoObjectType": "prefix",
            "address": "10.4.31.0",
            "length": 24
        }
    }
]
DELETE
topology/v2/​{topology_id}​/demands/bulk
Delete a set of Demands

Delete a set of demands. The return code indicates the request acceptance.

 
Normal response codes
204
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:
[
  {"demandIndex":32},
  {"demandIndex":31}
]

This operation does not return a response body.

Task scheduler

Use these endpoints to work with task scheduler.

The scheduler resources are described in scheduler.json.

The scheduler also provides a socket.io interface on which taskStatusUpdate event updates like task add/remove/update/status-change are sent. The socket.io namespace used is /taskScheduler and event name taskStatusUpdate.

GET
scheduler/v2/tasklist
Gets all Tasks

Returns a full list of Tasks as per JSON schema: scheduler.json#/definitions/taskList

 
Normal response codes
200
Response example:
[
    {
    "taskID": "7660df1e-b8fb-4f71-987e-a3d261c4d78f",
    "taskType": "Device Collection",
    "taskName": "dc",
    "createTime": "2019-04-26T09:45:54.745",
    "interval": 1,
    "scheduleType": 0,
    "startTime": "2019-04-26T09:45:54.745",
    "stopTime": null,
    "lastExecutionTime": "2019-04-26T09:45:57.755",
    "lastExecutionEndTime": "2019-04-26T09:46:30.762",
    "lastExecutionStatus": "Completed",
    "chainAfter": null,
    "taskparam": {
        "groupName": "liveNetwork",
        "idList": [],
        "jobId": 1556271955188,
        "opts": {
            "useMgmt": true,
            "concurrentJob": 16,
            "runParsing": true,
            "archiveRawData": true
        },
        "waitingList": [],
        "deviceGroups": [],
        "collection_commands": "config|interface|tunnel_path|transit_tunnel",
        "process_commands": "config,interface,tunnel_path,transit_tunnel,switch_cli,equipment_cli"
    },
    "lastExecutionLog": [
        "IP Address,Hostname,Status,Job Type,Severity",
        "11.0.0.101,vmx101-shiva,OK,config|interface|tunnel_path|transit_tunnel,INFO",
        "11.0.0.104,vmx104-shiva,OK,config|interface|tunnel_path|transit_tunnel,INFO",
        "11.0.0.103,vmx103-shiva,OK,config|interface|tunnel_path|transit_tunnel,INFO",
        "11.0.0.102,vmx102-shiva,OK,config|interface|tunnel_path|transit_tunnel,INFO",
        ",All Devices,COMPLETE,Collection (Dir: /opt/northstar/data/collection/7660df1e-b8fb-4f71-987e-a3d261c4d78f/1556271957755),INFO",
        ",All Devices,COMPLETE,Processing,INFO"
    ],
    "chainTaskGroup": null,
    "taskSize": 1
},
{
    "taskID": "fad3d27f-0e20-45b7-bbf1-c027509d75e0",
    "taskType": "Network Archive",
    "taskName": "NA4",
    "createTime": "2019-06-13T06:03:09.795",
    "interval": 0,
    "scheduleType": 0,
    "startTime": "2019-06-13T06:03:09.795",
    "stopTime": null,
    "lastExecutionTime": "2019-06-13T06:03:12.827",
    "lastExecutionEndTime": "2019-06-13T06:05:56.574",
    "lastExecutionStatus": "Completed",
    "chainAfter": null,
    "taskparam": {
        "opts": [
            "-l"
        ]
    },
    "lastExecutionLog": [
        "Details,Severity",
        "Parsed config files,INFO",
        "Parsed tunnel path and added to the spec file,INFO",
        "Added interface and tunnel traffic to the spec file,INFO",
        "Saved PCS tunnel to optunnel.x and added to the spec file,INFO"
    ],
    "chainTaskGroup": null,
    "taskSize": 1
}
]

This operation does not accept a request body.

GET
scheduler/v2/tasks
Get tasks based on filter tasktype

Returns a list of Tasks by filter tasktype(?tasktype={tasktypeFilter}) as per JSON schema: scheduler.json#/definitions/taskList

 
Normal response codes
200
Response example:
[
    {
        "taskID": "7660df1e-b8fb-4f71-987e-a3d261c4d78f",
        "taskType": "Device Collection",
        "taskName": "dc",
        "createTime": "2019-04-26T09:45:54.745",
        "interval": 1,
        "scheduleType": 0,
        "startTime": "2019-04-26T09:45:54.745",
        "stopTime": null,
        "lastExecutionTime": "2019-04-26T09:45:57.755",
        "lastExecutionEndTime": "2019-04-26T09:46:30.762",
        "lastExecutionStatus": "Completed",
        "chainAfter": null,
        "taskparam": {
            "groupName": "liveNetwork",
            "idList": [],
            "jobId": 1556271955188,
            "opts": {
                "useMgmt": true,
                "concurrentJob": 16,
                "runParsing": true,
                "archiveRawData": true
            },
            "waitingList": [],
            "deviceGroups": [],
            "collection_commands": "config|interface|tunnel_path|transit_tunnel",
            "process_commands": "config,interface,tunnel_path,transit_tunnel,switch_cli,equipment_cli"
        },
        "lastExecutionLog": [
            "IP Address,Hostname,Status,Job Type,Severity",
            "11.0.0.101,vmx101-shiva,OK,config|interface|tunnel_path|transit_tunnel,INFO",
            "11.0.0.104,vmx104-shiva,OK,config|interface|tunnel_path|transit_tunnel,INFO",
            "11.0.0.103,vmx103-shiva,OK,config|interface|tunnel_path|transit_tunnel,INFO",
            "11.0.0.102,vmx102-shiva,OK,config|interface|tunnel_path|transit_tunnel,INFO",
            ",All Devices,COMPLETE,Collection (Dir: /opt/northstar/data/collection/7660df1e-b8fb-4f71-987e-a3d261c4d78f/1556271957755),INFO",
            ",All Devices,COMPLETE,Processing,INFO"
        ],
        "chainTaskGroup": null,
        "taskSize": 1
    },
    {
        "taskID": "c51aea24-1c13-426a-89c9-fbb99ecc87de",
        "taskType": "Device Collection",
        "taskName": "future",
        "createTime": "2019-06-11T12:18:52.112",
        "interval": 0,
        "scheduleType": 1,
        "startTime": "2019-06-28T12:18:00.00",
        "stopTime": null,
        "lastExecutionTime": null,
        "lastExecutionEndTime": null,
        "lastExecutionStatus": "Scheduled",
        "chainAfter": null,
        "taskparam": {
            "groupName": "liveNetwork",
            "idList": [],
            "jobId": 1560255525511,
            "opts": {
                "useMgmt": true,
                "concurrentJob": 16,
                "runParsing": true,
                "archiveRawData": true
            },
            "waitingList": [],
            "deviceGroups": [],
            "collection_commands": "config|interface|tunnel_path|transit_tunnel",
            "process_commands": "config,interface,tunnel_path,transit_tunnel,switch_cli,equipment_cli"
        },
        "lastExecutionLog": [],
        "chainTaskGroup": null,
        "taskSize": 1
    },
    {
        "taskID": "70c71c06-73b4-4ea6-b4c8-48b831bb1781",
        "taskType": "Device Collection",
        "taskName": "dc1",
        "createTime": "2019-06-10T08:44:04.929",
        "interval": 0,
        "scheduleType": 0,
        "startTime": "2019-06-10T08:44:04.929",
        "stopTime": null,
        "lastExecutionTime": "2019-06-10T08:44:07.953",
        "lastExecutionEndTime": "2019-06-10T08:44:46.30",
        "lastExecutionStatus": "Completed",
        "chainAfter": null,
        "taskparam": {
            "groupName": "liveNetwork",
            "idList": [],
            "jobId": 1560156243979,
            "opts": {
                "useMgmt": true,
                "concurrentJob": 16,
                "runParsing": true,
                "archiveRawData": true
            },
            "waitingList": [],
            "deviceGroups": [],
            "collection_commands": "config|interface|tunnel_path|transit_tunnel",
            "process_commands": "config,interface,tunnel_path,transit_tunnel,switch_cli,equipment_cli"
        },
        "lastExecutionLog": [
            "Count,IP Address,Hostname,Status,Job Type,Severity",
            "1,11.0.0.101,vmx101-shiva,OK,config|interface|tunnel_path|transit_tunnel,INFO",
            "2,11.0.0.104,vmx104-shiva,OK,config|interface|tunnel_path|transit_tunnel,INFO",
            "3,11.0.0.103,vmx103-shiva,ACCESS_FAIL,config|interface|tunnel_path|transit_tunnel,CRITIC",
            "4,11.0.0.102,vmx102-shiva,OK,config|interface|tunnel_path|transit_tunnel,INFO",
            "-,-,All Devices,COMPLETE,Collection (Dir: /opt/northstar/data/collection/70c71c06-73b4-4ea6-b4c8-48b831bb1781/1560156247953),INFO",
            "-,-,All Devices,COMPLETE,Processing,INFO",
            "Task result:,Devices attempted- 4 | success- 3 | access_fail- 1,,,"
        ],
        "chainTaskGroup": null,
        "taskSize": 4
    },
    {
        "taskID": "00e61ebd-adb2-4d97-a18f-b072f6f43504",
        "taskType": "Device Collection",
        "taskName": "First collection",
        "createTime": "2019-06-14T05:24:45.745",
        "interval": 1,
        "scheduleType": 4,
        "startTime": "2019-06-14T05:23:00.00",
        "stopTime": null,
        "lastExecutionTime": "2019-06-14T05:24:45.759",
        "lastExecutionEndTime": "2019-06-14T05:25:32.754",
        "lastExecutionStatus": "Scheduled",
        "chainAfter": null,
        "taskparam": {
            "groupName": "liveNetwork",
            "idList": [],
            "jobId": 1560489792572,
            "opts": {
                "useMgmt": true,
                "concurrentJob": 16,
                "runParsing": true,
                "archiveRawData": true
            },
            "waitingList": [],
            "deviceGroups": [],
            "collection_commands": "config|interface|tunnel_path|transit_tunnel|switch_cli|equipment_cli",
            "process_commands": "config,interface,tunnel_path,transit_tunnel,switch_cli,equipment_cli"
        },
        "lastExecutionLog": [
            "Count,IP Address,Hostname,Status,Job Type,Severity",
            "1,11.0.0.101,vmx101-shiva,OK,config|interface|tunnel_path|transit_tunnel|switch_cli|equipment_cli,INFO",
            "2,11.0.0.104,vmx104-shiva,OK,config|interface|tunnel_path|transit_tunnel|switch_cli|equipment_cli,INFO",
            "3,11.0.0.103,vmx103-shiva,ACCESS_FAIL,config|interface|tunnel_path|transit_tunnel|switch_cli|equipment_cli,CRITIC",
            "4,11.0.0.102,vmx102-shiva,OK,config|interface|tunnel_path|transit_tunnel|switch_cli|equipment_cli,INFO",
            "-,-,All Devices,COMPLETE,Collection (Dir: /opt/northstar/data/collection/00e61ebd-adb2-4d97-a18f-b072f6f43504/1560489885759),INFO",
            "-,-,All Devices,COMPLETE,Processing,INFO",
            "Task result:,Devices attempted- 4 | success- 3 | access_fail- 1,,,"
        ],
        "chainTaskGroup": null,
        "taskSize": 4
    },
    {
        "taskID": "862b6dfb-4494-4230-ab4b-f40849eefc10",
        "taskType": "Device Collection",
        "taskName": "dc-1day",
        "createTime": "2019-02-05T09:09:38.237",
        "interval": 1,
        "scheduleType": 4,
        "startTime": "2019-02-05T09:09:38.237",
        "stopTime": null,
        "lastExecutionTime": "2019-06-13T09:09:38.278",
        "lastExecutionEndTime": "2019-06-13T09:10:13.691",
        "lastExecutionStatus": "Scheduled",
        "chainAfter": null,
        "taskparam": {
            "groupName": "liveNetwork",
            "idList": [],
            "jobId": 1549357765460,
            "opts": {
                "useMgmt": true,
                "concurrentJob": 16,
                "runParsing": true,
                "archiveRawData": true
            },
            "waitingList": [],
            "deviceGroups": [],
            "collection_commands": "config|interface|tunnel_path|transit_tunnel",
            "process_commands": "config,interface,tunnel_path,transit_tunnel,switch_cli,equipment_cli"
        },
        "lastExecutionLog": [
            "Count,IP Address,Hostname,Status,Job Type,Severity",
            "1,11.0.0.101,vmx101-shiva,OK,config|interface|tunnel_path|transit_tunnel,INFO",
            "2,11.0.0.104,vmx104-shiva,OK,config|interface|tunnel_path|transit_tunnel,INFO",
            "3,11.0.0.103,vmx103-shiva,ACCESS_FAIL,config|interface|tunnel_path|transit_tunnel,CRITIC",
            "4,11.0.0.102,vmx102-shiva,OK,config|interface|tunnel_path|transit_tunnel,INFO",
            "-,-,All Devices,COMPLETE,Collection (Dir: /opt/northstar/data/collection/862b6dfb-4494-4230-ab4b-f40849eefc10/1560416978278),INFO",
            "-,-,All Devices,COMPLETE,Processing,INFO",
            "Task result:,Devices attempted- 4 | success- 3 | access_fail- 1,,,"
        ],
        "chainTaskGroup": "Device Collection_dc-1day",
        "taskSize": 4
    }
]

This operation does not accept a request body.

POST
scheduler/v2/updatetask
Update a task

Update a task using the following JSON schema: scheduler.json#/definitions/updateTask. Returns response as per JSON schema: scheduler.json#/definitions/responseObject.

 
Normal response codes
200
Request example:
{  
  "taskID": "00e61ebd-adb2-4d97-a18f-b072f6f43504",
  "taskType": "Device Collection",
  "taskName": "First collection",
  "interval": 1,
  "scheduleType": 4,
  "chainAfter": null,
  "chainTaskGroup": "",
  "taskparam": {
    "groupName": "liveNetwork",
    "idList": [],
    "opts": {
      "useMgmt": true,
      "concurrentJob": 16,
      "runParsing": true,
      "archiveRawData": true
    },
    "waitingList": [],
    "deviceGroups": [],
    "collection_commands": "config|interface|tunnel_path|transit_tunnel|switch_cli|equipment_cli",
    "process_commands": "config,interface,tunnel_path,transit_tunnel,switch_cli,equipment_cli"
  },
  "startTime": "2019-06-14T05:23:00.000Z"
}
Response example:
{
  "taskID":"00e61ebd-adb2-4d97-a18f-b072f6f43504",
  "success":true
}
POST
scheduler/v2/removeaddtask
Remove and add a new Task

Removes all the existing tasks with given taskType and adds a new Task using the following JSON schema: scheduler.json#/definitions/updateTask. Returns response as per JSON schema: scheduler.json#/definitions/responseObject.

 
Normal response codes
200
Request example:
{  
  "taskID": "00e61ebd-adb2-4d97-a18f-b072f6f43504",
  "taskType": "Device Collection",
  "taskName": "First collection",
  "interval": 1,
  "scheduleType": 4,
  "chainAfter": null,
  "chainTaskGroup": "",
  "taskparam": {
    "groupName": "liveNetwork",
    "idList": [],
    "opts": {
      "useMgmt": true,
      "concurrentJob": 16,
      "runParsing": true,
      "archiveRawData": true
    },
    "waitingList": [],
    "deviceGroups": [],
    "collection_commands": "config|interface|tunnel_path|transit_tunnel|switch_cli|equipment_cli",
    "process_commands": "config,interface,tunnel_path,transit_tunnel,switch_cli,equipment_cli"
  },
  "startTime": "2019-06-14T05:23:00.000Z"
}
Response example:
{
  "taskID":"00e61ebd-adb2-4d97-a18f-b072f6f43504",
  "success":true
}
POST
scheduler/v2/deletetask
Delete tasks

Delete one or more tasks using the following JSON schema: scheduler.json#/definitions/deleteTask. Returns response as per JSON schema: scheduler.json#/definitions/responseObject.

 
Normal response codes
200
Request example:
["00e61ebd-adb2-4d97-a18f-b072f6f43504"]
Response example:
{
    "success": true
}
GET
scheduler/v2/taskshistory/​{taskId}​
Gets task execution status history in HTML table format for a given taskId

Returns task execution status history in HTML table format as per JSON schema: scheduler.json#/definitions/tasksHistoryList

 
Normal response codes
200
Response example:
[
{
 "header": "1) 2019-06-14T07:03:18.040Z to 2019-06-14T07:03:42.616Z",
 "details":"
  <html>
    <body>
        <table cellspacing=0 cellpadding=0 width=\"100%\" border=1>\n
            <tr bgcolor=#cccccc>
                <td nowrap>
                    <b>IP Address</b>
                </td>
                <td nowrap>
                    <b>Hostname</b>
                </td>
                <td nowrap>
                    <b>Description</b>
                </td>
            </tr>\n
            <tr>
                <td nowrap>172.25.158.69</td>
                <td nowrap>vmx101-shiva-p107</td>
                <td nowrap>Collected 1 LSPs</td>
            </tr>\n
            <tr>
                <td nowrap>172.25.158.69</td>
                <td nowrap>vmx101-shiva</td>
                <td nowrap>Collected 9 LSPs</td>
            </tr>\n
            <tr>
                <td nowrap>172.25.158.69</td>
                <td nowrap>vmx101-shiva-p105</td>
                <td nowrap>Collected 2 LSPs</td>
            </tr>\n
            <tr>
                <td nowrap>172.25.158.69</td>
                <td nowrap>vmx101-shiva-p106</td>
                <td nowrap>Collected 1 LSPs</td>
            </tr>\n
            <tr>
                <td nowrap>172.25.158.70</td>
                <td nowrap>vmx104-shiva</td>
                <td nowrap>Collected 27 LSPs</td>
            </tr>\n
            <tr>
                <td nowrap>172.25.158.72</td>
                <td nowrap>vmx102-shiva</td>
                <td nowrap>Collected 55 LSPs</td>
            </tr>\n
            <tr bgcolor=#ff3333>
                <td nowrap>172.25.158.71</td>
                <td nowrap>vmx103-shiva</td>
                <td nowrap>No SNMP response received before timeout</td>
            </tr>\n
        </table>
    </body>
</html>"},

{
 "header": "2) 2019-06-14T06:58:18.040Z to 2019-06-14T06:58:42.722Z",
 "details":"
  <html>
    <body>
        <table cellspacing=0 cellpadding=0 width=\"100%\" border=1>\n
            <tr bgcolor=#cccccc>
                <td nowrap>
                    <b>IP Address</b>
                </td>
                <td nowrap>
                    <b>Hostname</b>
                </td>
                <td nowrap>
                    <b>Description</b>
                </td>
            </tr>\n
            <tr>
                <td nowrap>172.25.158.69</td>
                <td nowrap>vmx101-shiva-p107</td>
                <td nowrap>Collected 1 LSPs</td>
            </tr>\n
            <tr>
                <td nowrap>172.25.158.69</td>
                <td nowrap>vmx101-shiva</td>
                <td nowrap>Collected 9 LSPs</td>
            </tr>\n
            <tr>
                <td nowrap>172.25.158.69</td>
                <td nowrap>vmx101-shiva-p105</td>
                <td nowrap>Collected 2 LSPs</td>
            </tr>\n
            <tr>
                <td nowrap>172.25.158.69</td>
                <td nowrap>vmx101-shiva-p106</td>
                <td nowrap>Collected 1 LSPs</td>
            </tr>\n
            <tr>
                <td nowrap>172.25.158.70</td>
                <td nowrap>vmx104-shiva</td>
                <td nowrap>Collected 27 LSPs</td>
            </tr>\n
            <tr>
                <td nowrap>172.25.158.72</td>
                <td nowrap>vmx102-shiva</td>
                <td nowrap>Collected 55 LSPs</td>
            </tr>\n
            <tr bgcolor=#ff3333>
                <td nowrap>172.25.158.71</td>
                <td nowrap>vmx103-shiva</td>
                <td nowrap>No SNMP response received before timeout</td>
            </tr>\n
        </table>
    </body>
</html>"},

{
 "header":"3) 2019-06-14T06:53:18.037Z to 2019-06-14T06:53:45.973Z",
 "details":"
 <html>
    <body>
        <table cellspacing=0 cellpadding=0 width=\"100%\" border=1>\n
            <tr bgcolor=#cccccc>
                <td nowrap>
                    <b>IP Address</b>
                </td>
                <td nowrap>
                    <b>Hostname</b>
                </td>
                <td nowrap>
                    <b>Description</b>
                </td>
            </tr>\n
            <tr>
                <td nowrap>172.25.158.69</td>
                <td nowrap>vmx101-shiva-p107</td>
                <td nowrap>Collected 1 LSPs</td>
            </tr>\n
            <tr>
                <td nowrap>172.25.158.69</td>
                <td nowrap>vmx101-shiva</td>
                <td nowrap>Collected 9 LSPs</td>
            </tr>\n
            <tr>
                <td nowrap>172.25.158.69</td>
                <td nowrap>vmx101-shiva-p106</td>
                <td nowrap>Collected 1 LSPs</td>
            </tr>\n
            <tr>
                <td nowrap>172.25.158.69</td>
                <td nowrap>vmx101-shiva-p105</td>
                <td nowrap>Collected 2 LSPs</td>
            </tr>\n
            <tr>
                <td nowrap>172.25.158.70</td>
                <td nowrap>vmx104-shiva</td>
                <td nowrap>Collected 27 LSPs</td>
            </tr>\n
            <tr>
                <td nowrap>172.25.158.72</td>
                <td nowrap>vmx102-shiva</td>
                <td nowrap>Collected 55 LSPs</td>
            </tr>\n
            <tr bgcolor=#ff3333>
                <td nowrap>172.25.158.71</td>
                <td nowrap>vmx103-shiva</td>
                <td nowrap>No SNMP response received before timeout</td>
            </tr>\n
        </table>
    </body>
</html>"
}
]

This operation does not accept a request body.

GET
scheduler/v2/taskstatus/​{taskId}​
Gets task execution status history for a given taskId

Returns task execution status history as per JSON schema: scheduler.json#/definitions/tasksStatusList

 
Normal response codes
200
Response example:
[
    {
        "taskid": "1767fcb4-59a0-48f8-8cb7-ad2612ceb606",
        "executionbegintime": "2019-06-14 07:18:18.044Z",
        "executionendtime": "2019-06-14 07:18:41.763Z",
        "executionlog": [
            "IP Address,Hostname,Description,Severity",
            "172.25.158.69,vmx101-shiva-p107,Collected 1 LSPs,INFO",
            "172.25.158.69,vmx101-shiva,Collected 9 LSPs,INFO",
            "172.25.158.69,vmx101-shiva-p105,Collected 2 LSPs,INFO",
            "172.25.158.69,vmx101-shiva-p106,Collected 1 LSPs,INFO",
            "172.25.158.70,vmx104-shiva,Collected 27 LSPs,INFO",
            "172.25.158.72,vmx102-shiva,Collected 55 LSPs,INFO",
            "172.25.158.71,vmx103-shiva,No SNMP response received before timeout,ERROR"
        ]
    },
    {
        "taskid": "1767fcb4-59a0-48f8-8cb7-ad2612ceb606",
        "executionbegintime": "2019-06-14 07:13:18.042Z",
        "executionendtime": "2019-06-14 07:13:42.494Z",
        "executionlog": [
            "IP Address,Hostname,Description,Severity",
            "172.25.158.69,vmx101-shiva-p107,Collected 1 LSPs,INFO",
            "172.25.158.69,vmx101-shiva,Collected 9 LSPs,INFO",
            "172.25.158.69,vmx101-shiva-p106,Collected 1 LSPs,INFO",
            "172.25.158.69,vmx101-shiva-p105,Collected 2 LSPs,INFO",
            "172.25.158.70,vmx104-shiva,Collected 27 LSPs,INFO",
            "172.25.158.72,vmx102-shiva,Collected 55 LSPs,INFO",
            "172.25.158.71,vmx103-shiva,No SNMP response received before timeout,ERROR"
        ]
    },
    {
        "taskid": "1767fcb4-59a0-48f8-8cb7-ad2612ceb606",
        "executionbegintime": "2019-06-14 07:08:18.040Z",
        "executionendtime": "2019-06-14 07:08:44.478Z",
        "executionlog": [
            "IP Address,Hostname,Description,Severity",
            "172.25.158.69,vmx101-shiva-p107,Collected 1 LSPs,INFO",
            "172.25.158.69,vmx101-shiva,Collected 9 LSPs,INFO",
            "172.25.158.69,vmx101-shiva-p106,Collected 1 LSPs,INFO",
            "172.25.158.69,vmx101-shiva-p105,Collected 2 LSPs,INFO",
            "172.25.158.70,vmx104-shiva,Collected 27 LSPs,INFO",
            "172.25.158.72,vmx102-shiva,Collected 55 LSPs,INFO",
            "172.25.158.71,vmx103-shiva,No SNMP response received before timeout,ERROR"
        ]
    },
    {
        "taskid": "1767fcb4-59a0-48f8-8cb7-ad2612ceb606",
        "executionbegintime": "2019-06-14 07:03:18.040Z",
        "executionendtime": "2019-06-14 07:03:42.616Z",
        "executionlog": [
            "IP Address,Hostname,Description,Severity",
            "172.25.158.69,vmx101-shiva-p107,Collected 1 LSPs,INFO",
            "172.25.158.69,vmx101-shiva,Collected 9 LSPs,INFO",
            "172.25.158.69,vmx101-shiva-p105,Collected 2 LSPs,INFO",
            "172.25.158.69,vmx101-shiva-p106,Collected 1 LSPs,INFO",
            "172.25.158.70,vmx104-shiva,Collected 27 LSPs,INFO",
            "172.25.158.72,vmx102-shiva,Collected 55 LSPs,INFO",
            "172.25.158.71,vmx103-shiva,No SNMP response received before timeout,ERROR"
        ]
    },
    {
        "taskid": "1767fcb4-59a0-48f8-8cb7-ad2612ceb606",
        "executionbegintime": "2019-06-14 06:58:18.040Z",
        "executionendtime": "2019-06-14 06:58:42.722Z",
        "executionlog": [
            "IP Address,Hostname,Description,Severity",
            "172.25.158.69,vmx101-shiva-p107,Collected 1 LSPs,INFO",
            "172.25.158.69,vmx101-shiva,Collected 9 LSPs,INFO",
            "172.25.158.69,vmx101-shiva-p105,Collected 2 LSPs,INFO",
            "172.25.158.69,vmx101-shiva-p106,Collected 1 LSPs,INFO",
            "172.25.158.70,vmx104-shiva,Collected 27 LSPs,INFO",
            "172.25.158.72,vmx102-shiva,Collected 55 LSPs,INFO",
            "172.25.158.71,vmx103-shiva,No SNMP response received before timeout,ERROR"
        ]
    }
]

This operation does not accept a request body.

Configuration

Endpoints for fetching/updating/deleting Northstar component configurations.

The configuration resources are described in configuration.json.

The config also provide interface to update northstar configuration.

GET
config/config
Get Paragon PathFinder component configurations

Return a json object containing component configurations configuration.json#/definitions/northstar

 
Normal response codes
200
Response example:
{
    "analytics": {
        "data-publisher": {
            "max-queue-size": 3000000,
            "timeout": "30s"
        },
        "log-collector": {
            "heap-size": "2g",
            "jti-port": 3000,
            "jvision-ifd-port": 2000,
            "jvision-ifl-port": 2001,
            "jvision-lsp-port": 2002,
            "rpm-statistics-port": 1514
        },
        "model-driven-telemetry": {
            "log-destination": [
                {
                    "name": "pipeline",
                    "level": "info",
                    "filename": "/opt/northstar/logs/pipeline.log"
                }
            ]
        },
        "netflowd": {
            "aggregate-by-prefix": {
                "disable": [
                    null
                ]
            },
            "default-sampling-interval": 1,
            "enable-ssl": "",
            "log-destination": [
                {
                    "name": "netflowd",
                    "level": "info",
                    "filename": "/opt/northstar/logs/netflowd.log"
                }
            ],
            "publish-interval": "60s",
            "workers": 10
        },
        "rollup-query-cutoff-interval": "7d"
    },
    "config-server": {
        "include-interface-type": [
            "links-if",
            "loopback-mgmt",
            "physical",
            "vrf-if"
        ]
    },
    "mladapter": {
        "polling-interval": 3600
    },
    "netconfd": {
        "device-connection-pool": {
            "batch-size": 10,
            "disconnect-delay": "300s",
            "netconf": {
                "keepalive-interval": "0s",
                "port": 830
            },
            "registry": {
                "check-delay": "45s",
                "publish-delay": "30s"
            },
            "publish-connected-device-status-delay": "300s",
            "reconnect-delay": "30s"
        },
        "encoding-template-folder": "/opt/northstar/netconfd/encoding_templates",
        "in-memory-datastore": {
            "connection-pool-size": 5
        },
        "log-destination": [
            {
                "name": "netconfd",
                "level": "info",
                "filename":"/opt/northstar/logs/netconfd.log"
            }
        ],
        "persistent-datastore": {
            "connection-pool-size": 5
        },
        "template-folder": "/opt/northstar/netconfd/templates"
    },
    "path-computation-server": {
        "link-flap": {
            "flap-count": 20,
            "flap-interval": "120s"
        }
    },
    "peer-engineering": {
        "egress": {
            "application": {
                "debug": false,
                "exec-pace-rate": "0.5"
            },
            "log-destination": [
                {
                    "name": "log",
                    "filename": "/opt/northstar/logs/epePlanner_info.log",
                    "level": "info"
                }
            ],
            "northstar-rest-client": {
                "allow-rest-insecure": true,
                "host": "localhost",
                "port": 8443,
                "protocol": "https"
            },
            "notification": {
                "filename": "notif.json",
                "notification-types": [
                    "amqp"
                ]
            }
        },
        "ingress": {
            "log-destination": [
                {
                    "name": "ipe_app",
                    "level": "info",
                    "filename": "/opt/northstar/logs/ipe.log"
                }
            ]
        }
    },
    "programmable-rpd-client": {
        "retry-interval": "30s"
    },
    "system": {
        "health-monitor": {
            "heartbeat-holdown-timer": "15s",
            "heartbeat-interval": "5s",
            "history-ttl": "2d",
            "poll-interval": "10m"
        },
        "in-memory-datastore": {
            "connection-pool-size": 5,
            "reconnect-delay": 1000,
            "reconnect-retries": 10000
        },
        "messaging-bus": {
            "max-channels": 128,
            "reconnect-delay": 1000,
            "reconnect-retries": -1
        },
        "scheduler": {
            "distributed-task-queue": {
                "collector-max-queue-size": 0,
                "thread-pool-size": 10
            },
            "tasks": {
                "collection-cleanup": {
                    "interval": "1d",
                    "raw-data-retention-duration": "14d",
                    "rollup-data-retention-duration": "180d"
                },
                "demand-reports": {
                    "as-demands-bucket-size": 100
                },
                "device-collection": {
                    "data-path": "/opt/northstar/data",
                    "purge-cutoff": "7d",
                    "timeout": "1800s"
                },
                "file-transfer": {
                    "interval": "3600s"
                },
                "rollup": {
                    "bulk-insert-record-count": 5000,
                    "interval": "1h",
                    "max-worker-process": 4
                },
                "scheduled-lsp-sizing": {
                    "bandwidth-sizing": {
                        "log-destination": [
                            {
                                "name": "bws_log",
                                "filename": "bandwidth_sizing.log",
                                "level": "info"
                            }
                        ],
                        "stats-query-workers": 1
                    },
                    "container-lsp-normalization": {
                        "log-destination": [
                            {
                                "name": "clsp_log",
                                "filename": "container_lsp.log",
                                "level": "info"
                            }
                        ]
                    },
                    "stats-collection-interval": "1m"
                },
                "snmp-collection": {
                    "retries": 3,
                    "timeout": "3s"
                }
            }
        }
    },
    "topology-server": {
        "application": {
            "element-state-mask": 23,
            "element-type-mask": 63
        },
        "application-tuning": {
            "lsp-topo-sync-timeout": "120s",
            "message-queue-high-watermark": 10000,
            "message-queue-low-watermark": 5000,
            "message-queue-overflow-watermark": 0,
            "pce-beacon-holddown": "90s",
            "pce-high-watermark-count-threshold": 10,
            "pce-high-watermark-rate": "-1.0",
            "pce-high-watermark-timeout": 60000,
            "pce-low-watermark-count-threshold": 3,
            "pce-low-watermark-rate": "-1.0",
            "pce-restart-holddown": "30s",
            "pce-watermark-interval": "10s",
            "resync-unresolved-node-threshold": 10
        },
        "data-persistence": {
            "debug-file-store-path": "/u/wandl/tmp/debug",
            "file-store-path": "/opt/northstar/data",
            "network-snapshot-store-interval": "3600s",
            "network-snapshot-store-path": "/opt/northstar/data/network_archive/NorthStar",
            "persistent-storage-init-wait": "45s",
            "do-not-persist-lsps": ""
        },
        "log-destination": [
            {
                "name": "topology-server",
                "filename": "/opt/northstar/logs/toposerver.log",
                "level": "info"
            }
        ],
        "topology-acquisition": {
            "eor-timeout": "20s",
            "refresh-holddown": "300s",
            "retry-before-exit-count": 0,
            "retry-delay": "5s"
        }
    }
}

This operation does not accept a request body.

POST
config/config
Updates all component configurations

Updates all component configurations using the following JSON schema: configuration.json#/definitions/northstar-post. Returns response as per JSON schema: configuration.json#/definitions/responseObject.

 
Request example:
{
    "analytics": {
        "data-publisher": {
            "max-queue-size": 3000000,
            "timeout": "30s"
        },
        "log-collector": {
            "heap-size": "2g",
            "jti-port": 3000,
            "jvision-ifd-port": 2000,
            "jvision-ifl-port": 2001,
            "jvision-lsp-port": 2002,
            "rpm-statistics-port": 1514
        },
        "netflowd": {
            "aggregate-by-prefix": {
                "disable": [
                    null
                ]
            },
            "default-sampling-interval": 1,
            "enable-ssl": "",
            
            "publish-interval": "60s",
            "workers": 10
        },
        "rollup-query-cutoff-interval": "7d"
    },
    "config-server": {
        "include-interface-type": [
            "physical",
            "loopback-mgmt",
            "vrf-if",
            "links-if"
        ]
    },
    "mladapter": {
        "polling-interval": 3600
    },
    "netconfd": {
        "device-connection-pool": {
            "batch-size": 10,
            "disconnect-delay": "300s",
            "netconf": {
                "keepalive-interval": "0s",
                "port": 830
            },
            "publish-connected-device-status-delay": "300s",
            "reconnect-delay": "30s"
        },
        "encoding-template-folder": "/opt/northstar/netconfd/encoding_templates",
        "in-memory-datastore": {
            "connection-pool-size": 5
        },
        "persistent-datastore": {
            "connection-pool-size": 5
        },
        "template-folder": "/opt/northstar/netconfd/templates"
    },
    "peer-engineering": {
        "egress": {
            "application": {
                "debug": false,
                "exec-pace-rate": "0.5"
            },
            
            "northstar-rest-client": {
                "allow-rest-insecure": true,
                "host": "localhost",
                "port": 8443,
                "protocol": "https"
            },
            "notification": {
                "filename": "notif.json",
                "notification-types": [
                    "amqp"
                ]
            }
        }        
    },
    "programmable-rpd-client": {
        "retry-interval": "30s"
    },
    "system": {
        "health-monitor": {
            "heartbeat-holdown-timer": "15s",
            "heartbeat-interval": "5s",
            "history-ttl": "2d",
            "poll-interval": "10m"
        },
        "in-memory-datastore": {
            "connection-pool-size": 5,
            "reconnect-delay": 1000,
            "reconnect-retries": 10000
        },
        "messaging-bus": {
            "max-channels": 128,
            "reconnect-delay": 1000,
            "reconnect-retries": -1
        },
        "scheduler": {
            "distributed-task-queue": {
                "collector-max-queue-size": 0,
                "thread-pool-size": 10
            },
            "tasks": {
                "collection-cleanup": {
                    "interval": "1d",
                    "raw-data-retention-duration": "14d",
                    "rollup-data-retention-duration": "180d"
                },
                "demand-reports": {
                    "as-demands-bucket-size": 100
                },
                "device-collection": {
                    "data-path": "/opt/northstar/data",
                    "purge-cutoff": "7d",
                    "timeout": "1800s"
                },
                "file-transfer": {
                    "interval": "3600s"
                },
                "rollup": {
                    "bulk-insert-record-count": 5000,
                    "interval": "1h",
                    "max-worker-process": 4
                },
                "scheduled-lsp-sizing": {
                    "bandwidth-sizing": {
                        "log-destination": [
                            {
                                "name": "bws_log",
                                "filename": "bandwidth_sizing.log",
                                "level": "info"
                            }
                        ],
                        "stats-query-workers": 1
                    },
                    "container-lsp-normalization": {
                        "log-destination": [
                            {
                                "name": "clsp_log",
                                "filename": "container_lsp.log",
                                "level": "info"
                            }
                        ]
                    },
                    "stats-collection-interval": "1m"
                },
                "snmp-collection": {
                    "retries": 3,
                    "timeout": "3s"
                }
            }
        }
    },
    "topology-server": {
        "application": {
            "element-state-mask": 23,
            "element-type-mask": 63
        },
        "application-tuning": {
            "lsp-topo-sync-timeout": "120s",
            "message-queue-high-watermark": 10000,
            "message-queue-low-watermark": 5000,
            "message-queue-overflow-watermark": 0,
            "pce-beacon-holddown": "90s",
            "pce-high-watermark-count-threshold": 10,
            "pce-high-watermark-rate": "-1.0",
            "pce-high-watermark-timeout": 60000,
            "pce-low-watermark-count-threshold": 3,
            "pce-low-watermark-rate": "-1.0",
            "pce-restart-holddown": "30s",
            "pce-watermark-interval": "10s",
            "resync-unresolved-node-threshold": 10
        },
        "data-persistence": {
            "debug-file-store-path": "/u/wandl/tmp/debug",
            "file-store-path": "/opt/northstar/data",
            "network-snapshot-store-interval": "3600s",
            "network-snapshot-store-path": "/opt/northstar/data/network_archive/NorthStar",
            "persistent-storage-init-wait": "45s",
            "persist-demand-events": ""
        },
        "topology-acquisition": {
            "eor-timeout": "20s",
            "refresh-holddown": "300s",
            "retry-before-exit-count": 0,
            "retry-delay": "5s"
        }
    },
     "path-computation-server": {
        "link-flap": {
            "flap-count": 20,
            "flap-interval": "120s"
        }
    }
}

This operation does not return a response body.

PATCH
config/config
Patch some component configurations

Updates configuration similar to plain-patch mechanism described in RFC7396. The content of the request body will be merged into Paragon PathFinder configuration. The limitation of this method is that it is not supporting deletion of attributes, for that the DELETE method should be used. Two known deviations from RFC are: arrays types are merged instead of getting replaced and to unset the empty types DELETE operation has to be used. config.json#/definitions/northstar-post. Returns response as per JSON schema: config.json#/definitions/responseObject.

 
Request example:
{
    "analytics": {
        "netflowd": {
            "enable-ssl": "",
            "aggregate-by-prefix": {
                "always": [ null ]
            },
            "default-sampling-interval": 1,
            "log-destination": [
                {
                    "name": "netflowd-debug",
                    "filename": "netflowd-debug2.log",
                    "level": "debug"
                }
            ],
            "workers": 10
        }
    },
    "netconfd": {
        "device-connection-pool": {
            "batch-size": 100
        },
        "log-destination": [
            {
                "name": "netconfd2",
                "filename": "/opt/northstar/logs/netconfd-debug.log",
                "level": "debug"
            }
        ]
    },
    "path-computation-server": {
        "link-flap": {
            "flap-count": 10,
            "flap-interval": "100s"
        }
    },
    "topology-server": {
        "application": {
            "element-state-mask": 38,
            "element-type-mask": 60
        },
        "data-persistence": {
            "persist-demand-events": ""
        }
    }
}

This operation does not return a response body.

DELETE
config/config
DELETE configuration

Delete component configurations using the following JSON schema: config.json#/definitions/northstar. Returns response as per JSON schema: config.json#/definitions/responseObject.

 
Request example:
{
    "analytics": {
        "model-driven-telemetry": {
            "log-destination": [
                {
                    "name": "pipeline2",
                    "filename": "pipeline-debug.log",
                    "level": "debug"
                }
            ]
        },
        "netflowd": {
            "enable-ssl": "",
            "aggregate-by-prefix": {
                "always": [
                    null
                ]
            },
            "log-destination": [
                {
                    "name": "netflowd3",
                    "filename": "netflowd-debug.log",
                    "level": "debug"
                }
            ]
        }
    },
    "topology-server": {
        "application": {
            "element-state-mask": 38,
            "element-type-mask": 60
        }
    }
}

This operation does not return a response body.

Device Profiles

Use these endpoints to work with device profiles.

The device profile schema is: deviceProfile.json . The operations are:

  • https://paragon.example.net/traffic-engineering/api/netconf/v2/profiles/ [GET : get all device profile, POST : create new device profiles, PUT: update device profiles, DELETE : delete device profiles]

  • https://paragon.example.net/traffic-engineering/api/netconf/v2/collection/liveNetwork [ POST: create a collection job with requested device profile ids ]

  • https://paragon.example.net:8443/traffic-engineering/api/netconf/v2/collection/<id> [ GET: get a collection job status with requested job id ]

GET
netconf/v2/profiles
Get all Profiles

Gets all profiles.

 
Normal response codes
200
Response example:

Returns the following JSON document: deviceProfile.json#/definitions/profileList .

This operation does not accept a request body.

POST
netconf/v2/profiles
Create New Profiles

Creates new profiles.

 
Normal response codes
201
Request example:

The request must use the following JSON schema: deviceProfile.json#/definitions/createProfileList .

Response example:

Returns the following JSON document: deviceProfile.json#/definitions/profileList

PUT
netconf/v2/profiles
Update Profiles

Updates profiles.

 
Normal response codes
202
Request example:

The request must use the following JSON schema: deviceProfile.json#/definitions/updateProfileList and must contain an id in each profile: deviceProfile.json#/definitions/profile

Response example:

Returns the following JSON document: deviceProfile.json#/definitions/profileList

DELETE
netconf/v2/profiles
Delete Profiles

Deletes profiles.

 
Normal response codes
204
Request example:

The request must use the following JSON schema: deviceProfile.json#/definitions/deleteProfileList and must contain an id in each profile: deviceProfile.json#/definitions/profile

Response example:

Returns the following JSON document: deviceProfile.json#/definitions/profileList

POST
netconf/v2/collection/liveNetwork
Create a New Collect

Creates a new collection.

 
Normal response codes
201
Request example:

The request must use the following JSON schema: deviceProfile.json#/definitions/startCollection .

Response example:

Returns the following JSON document: deviceProfile.json#/definitions/collectionStatus .

GET
netconf/v2/collection/​{id}​
Get the Status of a Collection Job

Gets the Status of a collection job.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
collectionJobId URI xsd:int

The unique identifier of the collection job.

Response example:

Returns the following JSON document: deviceProfile.json#/definitions/collectionStatus .

This operation does not accept a request body.

TE-Containers

TE-Containers are related to TE-LSPs, similar to JunOS TE++ containers. The API allows the access to those TE-Containers parameter. A TE-Container has most of the TE-LSP parameters and split/merge parameters. A TE-Container will create a set of child TE-LSPs to adjust for traffic. The container normalization is handled as a separate global task.

The TE-containers schema is: lsp-containers.json . The operations are:

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/te-containers/ [GET, POST]

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/te-containers/<containerIndex> [ GET , PUT, PATCH , DELETE]

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/te-containers/bulk [ POST , PUT, PATCH , DELETE] Bulk API

GET
topology/v2/​{topology_id}​/te-containers

List all TE-containers.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:

Returns the following JSON document: lsp-containers.json.json#/definitions/containerList .

This operation does not accept a request body.

POST
topology/v2/​{topology_id}​/te-containers

Creates a container.

 
Normal response codes
201
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:

The input must conform to the lsp-containers.json#/definitions/createContainer schema.

Response example:

Follows lsp-containers.json#/definitions/container .

GET
topology/v2/​{topology_id}​/te-containers/stream
Start a SSE Stream

See EventSource for format. The notifications send on that stream are only teContainerEvent. The data will contain a JSON document (see Paragon PathFinder Notification API).

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:

This operation does not accept a request body.

GET
topology/v2/​{topology_id}​/te-containers/​{containerIndex}​

Gets a TE Container.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

containerIndex URI xsd:int

Program ID of a TE-container.

Response example:

Follows lsp-containers.json#/definitions/container .

This operation does not accept a request body.

PUT
topology/v2/​{topology_id}​/te-containers/​{containerIndex}​

Updates a TE Container

 
Normal response codes
201
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

containerIndex URI xsd:int

Program ID of a TE-container.

Request example:

The input must conform to the lsp-containers.json#/definitions/updateContainer schema.

Response example:

Returns the following JSON document: lsp-containers.json#/definitions/container .

PATCH
topology/v2/​{topology_id}​/te-containers/​{containerIndex}​

Updates a TE Container using an RFC6902 document

 
Normal response codes
201
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

containerIndex URI xsd:int

Program ID of a TE-container.

Request example:

The input must conform to the rest-schemas/json-patch.json schema, the produced document (Original resource +patch) must conform to the lsp-containers.json#/definitions/updateContainer schema.

Response example:

Returns the following JSON document: lsp-containers.json#/definitions/container

DELETE
topology/v2/​{topology_id}​/te-containers/​{containerIndex}​

Deletes a container.

 

The container must exist, no payload is expected or returned.

Normal response codes
204
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

containerIndex URI xsd:int

Program ID of a TE-container.

Request example:

No content is expected.

Response example:

No content

POST
topology/v2/​{topology_id}​/te-containers/bulk

Create a list of TE Container

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:

The input must conform to the lsp-containers.json#/definitions/containerCreateList schema.

Response example:

Returns the following JSON document: lsp-containers.json#/definitions/containerList .

PUT
topology/v2/​{topology_id}​/te-containers/bulk

Modify a list of TE Container

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:

The input must conform to the lsp-containers.json#/definitions/containerUpdateList schema.

Response example:

Returns the following JSON document: lsp-containers.json#/definitions/containerList .

PATCH
topology/v2/​{topology_id}​/te-containers/bulk

Modify a list of TE Container using a PATCH

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:

The input must conform to the lsp-containers.json#/definitions/containerListPatch schema. the resulting container list (with patch applied) must also comply to the lsp-containers.json#/definitions/containerUpdateList schema.

Response example:

Returns the following JSON document: lsp-containers.json#/definitions/containerList

DELETE
topology/v2/​{topology_id}​/te-containers/bulk

Deletes a list of containers.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:

The containers must exist, the payload must conform to lsp-containers.json#/definitions/containerListDelete.

Response example:

Facilities

Use these endpoints to work with facilities.

The facilities schema is: facilities.json . The operations are:

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/facilities/ [GET : get all facilities]

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/facilities/<facilityIndex> [ GET : get a facilitity, PUT : update, DELETE: delete]

GET
topology/v2/​{topology_id}​/facilities

Gets all Facilities.

 

Returns the following JSON document: facilities.json#/definitions/facilityList .

Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

This operation does not accept a request body and does not return a response body.

POST
topology/v2/​{topology_id}​/facilities

Creates a facility.

 

Returns the following JSON document: facilities.json#/definitions/facility .

Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

This operation does not accept a request body and does not return a response body.

GET
topology/v2/​{topology_id}​/facilities/stream
Start a SSE Stream

See EventSource for format. The notifications send on that stream are only facilityEvent. The data will contain a JSON document (see Paragon PathFinder Notification API).

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:

This operation does not accept a request body.

GET
topology/v2/​{topology_id}​/facilities/​{facilityIndex}​

Gets a Facility.

 

Returns the following JSON document: facilities.json#/definitions/facility .

Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

facilityIndex URI xsd:int

Program ID of a facility.

This operation does not accept a request body and does not return a response body.

PUT
topology/v2/​{topology_id}​/facilities/​{facilityIndex}​

Updates a facility

 

Returns the following JSON document: facilities.json#/definitions/facility .

Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

facilityIndex URI xsd:int

Program ID of a facility.

This operation does not accept a request body and does not return a response body.

DELETE
topology/v2/​{topology_id}​/facilities/​{facilityIndex}​

Deletes a facility.

 
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

facilityIndex URI xsd:int

Program ID of a facility.

This operation does not accept a request body and does not return a response body.

P2MP

Use these endpoints to retrieve the P2MP lists and manage the P2MP groups. The complete set of endpoints and parameters is described in the schema p2mp.json. P2MP group in Paragon PathFinder can be provisioned using NETCONF (default) or PCEP. Since Paragon PathFinder 5.1 flow mapping to MVPN using source and group is supported.

The API allows for group and leaf discovery, creation, modification, deletion and bulk deletion. Those operations are supported using the following endpoints:

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/p2mp/ [GET: get all P2MP groups, POST: create a new P2MP group ]

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/p2mp/<p2mpGroupIndex> [GET: get a P2MP group specified by index, PUT/PATCH: modify the P2MP group, DELETE: Delete the P2MP group and all its members leaves, POST: Create a list of leaves, ]

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/p2mp/<p2mpGroupIndex>/<lspIndex> [GET: get a P2MP leaf by index, PUT: get a P2MP leaf specified by index, DELETE: remove a leaf]

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/p2mp/<p2mpGroupIndex>/bulk [DELETE: bulk remove a list of leaves]

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/p2mp/<p2mpGroupIndex>/bulk [DELETE only: delete a list of TE-LSP members]

A special use case for the PATCH method is to re-provision an entire tree (or a leaf) and do not change anything. To reprovision a tree a PATCH /traffic-engineering/api/topology/v2/1/p2mp/<p2mpGroupIndex> payload

[]
The same method is used for a leaf: PATCH /traffic-engineering/api/topology/v2/1/te-lsps/< lspIndex> payload
[]
. Another use case for PATCH is to add or replace flow mapping, the PATH examples show how to achieve those operations.

Since NorthStar 6.0, the P2MP tree leaves can also be CE or Site nodes. Paragon PathFinder path computation will compute the P2MP tree using those nodes but will configure them in the network terminating at the PE nodes. Please note that currently combination of PE and non-pE (CE or Site) nodes as destinations nodes in a P2MP tree is not supported. Use can either create P2MP tree where all destination nodes consist of PE nodes only or consist of CE nodes only. It cannot be combination of both (mixture of PE and CE nodes) in a single tree.

GET
topology/v2/​{topology_id}​/p2mp
Get P2MP groups

Returns a full list of P2MP groups.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:
[
    {
        "p2mpGroupIndex": 3,
        "p2mpIndex": 40,
        "name": "geeiamtree",
        "topoObjectType": "p2mpGroup",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.101"
        },
        "links": [
            {
                "rel": "self",
                "href": "3/"
            }
        ]
    },
    {
        "p2mpGroupIndex": 4,
        "p2mpIndex": 43,
        "name": "mapletree",
        "topoObjectType": "p2mpGroup",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.101"
        },
        "links": [
            {
                "rel": "self",
                "href": "4/"
            }
        ]
    }
]

This operation does not accept a request body.

POST
topology/v2/​{topology_id}​/p2mp
Create a P2MP group

Create a P2MP group using the following schema: p2mp.json#/definitions/createP2mpGroup. The API request contains the destination list and the common planned properties. The common planned properties may include plannedProperties with flow mapping parameters.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:

While creating the P2MP group, ensure that either the following plannedProperties parameters of all the members are identical, or the group plannedProperties are applied. Do not set the plannedProperties in the members. If you do not provide the plannedProperties parameter, the default value is applied.

P2MP group creation required Attributes.
Attribute Type Default Description
name string None P2MP group name name
from/address string none P2MP group ingress ingress
plannedProperties/bandwidth string or integer 0 P2MP members bandwidth
plannedProperties/setupPriority integer 7 P2MP member setup priority
plannedProperties/holdingPriority integer 0 P2MP member setup holdingPriority
plannedProperties/design/adminGroups/attributeIncludeAny integer 0 (not set) P2MP member setup administrative color include any
plannedProperties/design/adminGroups/attributeIncludeAll integer 0 (not set) P2MP member setup administrative color include all
plannedProperties/design/adminGroups/attributeExclude integer 0 (not set) P2MP member setup administrative color exclude
lsps list None List of members with name and destination. The name must be unique on the ingress.

The following examples show different set of parameters and results:

  • A P2MP tree with 3 Members using NETCONF.

    {
      "name":"alphatree",
      "from":{"address": "11.0.0.101", "topoObjectType": "ipv4"},
      "plannedProperties":{
        "bandwidth":"99k",
        "setupPriority":7,
        "holdingPriority":7,
        "design":{
          "adminGroups":{
            "attributeExclude":0,
            "attributeIncludeAll":0,
            "attributeIncludeAny":0
          },
          "diversityGroup":"twins"
        }
      },
      "lsps":[
        {
          "name":"alphatree-101102",
          "to":{"address": "11.0.0.102", "topoObjectType": "ipv4"}
        },
        {
          "name":"alphatree-101103",
          "to":{"address": "11.0.0.103", "topoObjectType": "ipv4"}
        },
        {
          "name":"alphatree-101104",
          "to":{"address": "11.0.0.104", "topoObjectType": "ipv4"}
        }
      ]
    }

    The response is:

    {
      "topoObjectType":"p2mpGroup",
      "name":"alphatree",
      "from":{"address": "11.0.0.101", "topoObjectType": "ipv4"},
      "lsps":[
        {
          "name":"alphatree-101102",
          "to":{"address": "11.0.0.102", "topoObjectType": "ipv4"},
          "plannedProperties":{
            "adminStatus":"Up",
            "bandwidth":"99K",
            "correlatedRROHopCount":0,
            "design":{
              "diversityGroup":"TWINS"
            },
            "ero":[
              {
                "address":"11.101.105.2",
                "loose":false,
                "topoObjectType":"ipv4"
              },
              {
                "address":"11.102.105.1",
                "loose":false,
                "topoObjectType":"ipv4"
              }
            ],
            "holdingPriority":0,
            "lastStatusString":"[ConfigServer]<Netconf provisioning order received",
            "pathName":"alphatree-101102_p0",
            "setupPriority":7
          },
          "controlType":"PCC",
          "from":{
            "address":"11.0.0.101",
            "topoObjectType":"ipv4"
          },
          "lspIndex":91,
          "p2mpName":"alphatree",
          "pathType":"primary",
          "provisioningType":"RSVP"
        },
        {
          "name":"alphatree-101103",
          "to":{"address": "11.0.0.103", "topoObjectType": "ipv4"},
          "plannedProperties":{
            "adminStatus":"Up",
            "bandwidth":"99K",
            "correlatedRROHopCount":0,
            "design":{
              "diversityGroup":"TWINS"
            },
            "ero":[
              {
                "address":"11.101.105.2",
                "loose":false,
                "topoObjectType":"ipv4"
              },
              {
                "address":"11.105.107.2",
                "loose":false,
                "topoObjectType":"ipv4"
              },
              {
                "address":"11.103.107.1",
                "loose":false,
                "topoObjectType":"ipv4"
              }
            ],
            "holdingPriority":0,
            "lastStatusString":"[ConfigServer]<Netconf provisioning order received",
            "pathName":"alphatree-101103_p0",
            "setupPriority":7
          },
          "controlType":"PCC",
          "from":{
            "address":"11.0.0.101",
            "topoObjectType":"ipv4"
          },
          "lspIndex":92,
          "p2mpName":"alphatree",
          "pathType":"primary",
          "provisioningType":"RSVP"
        },
        {
          "name":"alphatree-101104",
          "to":{"address": "11.0.0.104", "topoObjectType": "ipv4"},
          "plannedProperties":{
            "adminStatus":"Up",
            "bandwidth":"99K",
            "correlatedRROHopCount":0,
            "design":{
              "diversityGroup":"TWINS"
            },
            "ero":[
              {
                "address":"dynamic",
                "loose":false,
                "topoObjectType":"ipv4"
              }
            ],
            "holdingPriority":0,
            "lastStatusString":"[ConfigServer]<Netconf provisioning order received",
            "pathName":"alphatree-101104_p0",
            "setupPriority":7
          },
          "controlType":"PCC",
          "from":{
            "address":"11.0.0.101",
            "topoObjectType":"ipv4"
          },
          "lspIndex":93,
          "p2mpName":"alphatree",
          "pathType":"primary",
          "provisioningType":"RSVP"
        }
      ]
    }
  • Create a P2MP group using PCEP and associate it with a Multicast VPN. This is the Paragon PathFinder 5.1 version using the flow mapping, prior version were using different encoding.

    {
      "name":"alphatree",
      "from":{"address": "11.0.0.191", "topoObjectType": "ipv4"},
      "plannedProperties":{
        "bandwidth":"99k",
        "setupPriority":7,
        "holdingPriority":7,
        "flows":[
          {
            "topoObjectType":"flow",
            "vpn":{"rd": "11.0.0.105:65000", "topoObjectType": "vpnId"},
            "source":{"address": "11.0.0.101", "length": 32, "topoObjectType": "prefix"},
            "group":{"address": "239.2.2.2", "length": 32, "topoObjectType": "prefix"}
          },
          {
            "topoObjectType":"flow",
            "vpn":{"rd": "11.0.0.105:65000", "topoObjectType": "vpnId"},
            "source":{"address": "11.0.0.101", "length": 32, "topoObjectType": "prefix"},
            "group":{"address": "239.3.3.3", "length": 32, "topoObjectType": "prefix"}
          }
        ]
      },
      "lsps":[
        {
          "to":{"address": "11.0.0.213", "topoObjectType": "ipv4"}
        },
        {
          "to":{"address": "11.0.0.214", "topoObjectType": "ipv4"}
        }
      ],
      "creationConfigurationMethod":"PCEP"
    }

    The response is:

    {
      "topoObjectType":"p2mpGroup",
      "name":"alphatree",
      "from":{"address": "11.0.0.191", "topoObjectType": "ipv4"},
      "plannedProperties":{
        "bandwidth":"99k",
        "setupPriority":7,
        "holdingPriority":7,
        "design":{
          "adminGroups":{
            "attributeExclude":0,
            "attributeIncludeAll":0,
            "attributeIncludeAny":0
          }
        },
        "flows":[
          {
            "topoObjectType":"flow",
            "vpn":{"rd": "11.0.0.105:65000", "topoObjectType": "vpnId"},
            "source":{"address": "11.0.0.101", "length": 32, "topoObjectType": "prefix"},
            "group":{"address": "239.2.2.2", "length": 32, "topoObjectType": "prefix"}
          },
          {
            "topoObjectType":"flow",
            "vpn":{"rd": "11.0.0.105:65000", "topoObjectType": "vpnId"},
            "source":{"address": "11.0.0.101", "length": 32, "topoObjectType": "prefix"},
            "group":{"address": "239.3.3.3", "length": 32, "topoObjectType": "prefix"}
          }
        ]
      },
      "lsps":[
        {
          "name":"alphatree_11.0.0.213",
          "to":{"address": "11.0.0.213", "topoObjectType": "ipv4"},
          "plannedProperties":{
            "adminStatus":"Up",
            "bandwidth":"99k",
            "holdingPriority":7,
            "pathName":"alphatree_to213_p0",
            "setupPriority":7
          },
          "controlType":"PCEInitiated",
          "from":{
            "address":"11.0.0.191",
            "topoObjectType":"ipv4"
          },
          "lspIndex":145953,
          "p2mpName":"alphatree",
          "pathType":"primary",
          "provisioningType":"RSVP"
        },
        {
          "name":"alphatree_11.0.0.214",
          "to":{"address": "11.0.0.214", "topoObjectType": "ipv4"},
          "plannedProperties":{
            "adminStatus":"Up",
            "bandwidth":"99k",
            "holdingPriority":7,
            "setupPriority":7
          },
          "controlType":"PCEInitiated",
          "from":{
            "address":"11.0.0.191",
            "topoObjectType":"ipv4"
          },
          "lspIndex":145954,
          "p2mpName":"alphatree",
          "pathType":"primary",
          "provisioningType":"RSVP"
        }
      ]
    }
  • Create a P2MP group using PCEP and CE and Site nodes as destination nodes. This is Paragon PathFinder 6.0 version. CE and Sites nodes are SiteA1, SiteZ and CEY2. Please note that currently combination of PE and Site nodes as destinations nodes in a P2MP tree is not supported. Use can either create P2MP tree with all destination nodes consist of PE nodes only or consist of CE/Site nodes only. It cannot be combination of both (mixture of PE and CE/Sites nodes) in a single tree.

    {
       "name":"pecenoippcep1",
       "creationConfigurationMethod":"PCEP",
       "from":{
          "topoObjectType":"ipv4",
          "address":"10.0.0.1"
       },
       "plannedProperties":{
           "bandwidth":"10"
       },
       "lsps":[
          {
             "to":{
                "topoObjectType":"ipv4",
                "address":"SiteA1"
             }
          },
          {
             "to":{
                "topoObjectType":"ipv4",
                "address":"SiteZ"
             }
          },
          {
             "to":{
                "topoObjectType":"ipv4",
                "address":"CEY2"
             }
          }
       ]
    }
    

    The response is:

    {
       "from":{
          "address":"10.0.0.1",
          "topoObjectType":"ipv4"
       },
       "name":"pecenoippcep1",
       "lsps":[
          {
             "p2mpName":"pecenoippcep1",
             "initiator":"PCE",
             "from":{
                "address":"10.0.0.1",
                "topoObjectType":"ipv4"
             },
             "name":"pecenoippcep1_SiteA1",
             "pathType":"primary",
             "plannedProperties":{
                "adminStatus":"Up",
                "bandwidth":10,
                "holdingPriority":0,
                "setupPriority":7
             },
             "to":{
                "address":"SiteA1",
                "topoObjectType":"ipv4"
             },
             "controlType":"PCEInitiated",
             "provisioningType":"RSVP",
             "lspIndex":462
          },
          {
             "p2mpName":"pecenoippcep1",
             "initiator":"PCE",
             "from":{
                "address":"10.0.0.1",
                "topoObjectType":"ipv4"
             },
             "name":"pecenoippcep1_SiteZ",
             "pathType":"primary",
             "plannedProperties":{
                "adminStatus":"Up",
                "bandwidth":10,
                "holdingPriority":0,
                "setupPriority":7
             },
             "to":{
                "address":"SiteZ",
                "topoObjectType":"ipv4"
             },
             "controlType":"PCEInitiated",
             "provisioningType":"RSVP",
             "lspIndex":464
          },
          {
             "p2mpName":"pecenoippcep1",
             "initiator":"PCE",
             "from":{
                "address":"10.0.0.1",
                "topoObjectType":"ipv4"
             },
             "name":"pecenoippcep1_CEY2",
             "pathType":"primary",
             "plannedProperties":{
                "adminStatus":"Up",
                "bandwidth":10,
                "holdingPriority":0,
                "setupPriority":7
             },
             "to":{
                "address":"CEY2",
                "topoObjectType":"ipv4"
             },
             "controlType":"PCEInitiated",
             "provisioningType":"RSVP",
             "lspIndex":467
          }
       ],
       "creationConfigurationMethod":"PCEP",
       "topoObjectType":"p2mpGroup",
       "plannedProperties":{
          "bandwidth":10,
          "design":{
             "adminGroups":{
                "attributeIncludeAny":0,
                "attributeExclude":0,
                "attributeIncludeAll":0
             }
          },
          "holdingPriority":0,
          "setupPriority":7
       },
       "location":"/NorthStar/API/v2/tenant/1/topology/1/p2mp/2",
       "p2mpGroupIndex":2,
       "provisioningType":"RSVP"
    }

Response example:

The responses are shown per example in the request section. In general the response is a JSON document conforming to p2mp.json#/definitions/p2mpGroup.

GET
topology/v2/​{topology_id}​/p2mp/stream
Start a SSE Stream

See EventSource for format. The notifications send on that stream are only p2mpEvent. The data will contain a JSON document (see Paragon PathFinder Notification API).

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:

This operation does not accept a request body.

GET
topology/v2/​{topology_id}​/p2mp/​{p2mpGroupIndex}​
Get a Specific P2MP Group

Returns the details of a specified P2MP group.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

p2mpGroupIndex URI xsd:int

Signaling protocol P2MP id, which may be empty, and is the same for all TE-LSPs of a tunnel.

Response example:
{
  "topoObjectType":"p2mpGroup",
  "p2mpGroupIndex":8,
  "name":"geeiamtree",
  "from":{"address": "11.0.0.101", "topoObjectType": "ipv4"},
  "plannedProperties":{
    "bandwidth":"99k",
    "setupPriority":7,
    "holdingPriority":0,
    "design":{
      "adminGroups":{
        "attributeExclude":0,
        "attributeIncludeAll":0,
        "attributeIncludeAny":0
      }
    }
  },
  "lsps":[
    {
      "name":"geeiamtree101-102",
      "to":{"address": "11.0.0.102", "topoObjectType": "ipv4"},
      "plannedProperties":{
        "adminStatus":"Up",
        "bandwidth":"99K",
        "calculatedEro":[
          {
            "address":"11.101.105.2",
            "loose":false,
            "topoObjectType":"ipv4"
          },
          {
            "address":"11.102.105.1",
            "loose":false,
            "topoObjectType":"ipv4"
          }
        ],
        "correlatedRROHopCount":2,
        "holdingPriority":0,
        "lastStatusString":"[PCServer]<Active",
        "pathName":"geeiamtree101-102_p0",
        "preferredEro":[
          {
            "address":"11.101.105.2",
            "loose":false,
            "topoObjectType":"ipv4"
          },
          {
            "address":"11.102.105.1",
            "loose":false,
            "topoObjectType":"ipv4"
          }
        ],
        "routingStatus":"Up",
        "setupPriority":7
      },
      "collectedProperties":{
        "adminStatus":"Up",
        "bandwidth":"99K",
        "calculatedEro":[
          {
            "address":"11.101.105.2",
            "loose":false,
            "topoObjectType":"ipv4"
          },
          {
            "address":"11.102.105.1",
            "loose":false,
            "topoObjectType":"ipv4"
          }
        ],
        "correlatedRROHopCount":2,
        "explicitPathName":"geeiamtree101-102_p0",
        "holdingPriority":0,
        "preferredEro":[
          {
            "address":"11.101.105.2",
            "loose":false,
            "topoObjectType":"ipv4"
          },
          {
            "address":"11.102.105.1",
            "loose":false,
            "topoObjectType":"ipv4"
          }
        ],
        "routingStatus":"Up",
        "setupPriority":7
      },
      "controlType":"PCC",
      "controller":"External",
      "from":{
        "address":"11.0.0.101",
        "topoObjectType":"ipv4"
      },
      "liveProperties":{
        "adminStatus":"Up",
        "bandwidth":99000,
        "ero":[
          {
            "address":"11.101.105.2",
            "loose":false,
            "topoObjectType":"ipv4"
          },
          {
            "address":"11.102.105.1",
            "loose":false,
            "topoObjectType":"ipv4"
          }
        ],
        "holdingPriority":0,
        "metric":0,
        "operationalStatus":"Active",
        "pathName":"geeiamtree101-102_p0",
        "rro":[
          {
            "address":"11.101.105.2",
            "protectionAvailable":false,
            "protectionInUse":false,
            "topoObjectType":"ipv4"
          },
          {
            "address":"11.102.105.1",
            "protectionAvailable":false,
            "protectionInUse":false,
            "topoObjectType":"ipv4"
          }
        ],
        "setupPriority":7
      },
      "lspIndex":638,
      "operationalStatus":"Active",
      "p2mpIndex":184549477,
      "p2mpName":"geeiamtree",
      "pathType":"primary",
      "provisioningType":"RSVP"
    }
  ],
  "p2mpIndex":638
}

This operation does not accept a request body.

PUT
topology/v2/​{topology_id}​/p2mp/​{p2mpGroupIndex}​
Update a Specific P2MP Group

Modify a specific P2MP group, if the LSPS are not specified, the common properties are changed, not the LSPs. If the LSPs are specified, the set of LSPs will be modified. i.e LSP that is not in the new list will be remove, the other will be added/updated".

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

p2mpGroupIndex URI xsd:int

Signaling protocol P2MP id, which may be empty, and is the same for all TE-LSPs of a tunnel.

Request example:
{
  "topoObjectType":"p2mpGroup",
  "name":"alphatree",
  "from":{"address": "11.0.0.191", "topoObjectType": "ipv4"},
  "plannedProperties":{
    "bandwidth":"21k",
    "setupPriority":3,
    "holdingPriority":3
  },
  "lsps":[
    {"to":{"address": "11.0.0.102", "topoObjectType": "ipv4"}},
    {"to":{"address": "11.0.0.103", "topoObjectType": "ipv4"}},
    {"to":{"address": "11.0.0.104", "topoObjectType": "ipv4"}}
  ]
}
Response example:
{
  "topoObjectType":"p2mpGroup",
  "name":"alphatree",
  "from":{"address": "11.0.0.191", "topoObjectType": "ipv4"},
  "plannedProperties":{
    "bandwidth":"21k",
    "setupPriority":3,
    "holdingPriority":3,
    "design":{
      "adminGroups":{
        "attributeExclude":0,
        "attributeIncludeAll":0,
        "attributeIncludeAny":0
      }
    }
  },
  "lsps":[
    {
      "name":"alphatree_to213",
      "to":{"address": "11.0.0.213", "topoObjectType": "ipv4"},
      "plannedProperties":{
        "adminStatus":"Up",
        "bandwidth":"21k",
        "design":{
          "routingMethod":"routeByDevice"
        },
        "holdingPriority":3,
        "pathName":"alphatree_to213_p0",
        "setupPriority":3
      },
      "controlType":"PCC",
      "from":{
        "address":"11.0.0.191",
        "topoObjectType":"ipv4"
      },
      "lspIndex":145948,
      "p2mpName":"alphatree",
      "pathType":"primary",
      "provisioningType":"RSVP"
    },
    {
      "name":"alphatree_to214",
      "to":{"address": "11.0.0.214", "topoObjectType": "ipv4"},
      "plannedProperties":{
        "adminStatus":"Up",
        "bandwidth":"21k",
        "design":{
          "routingMethod":"routeByDevice"
        },
        "holdingPriority":3,
        "pathName":"alphatree_to214_p0",
        "setupPriority":3
      },
      "controlType":"PCC",
      "from":{
        "address":"11.0.0.191",
        "topoObjectType":"ipv4"
      },
      "lspIndex":145949,
      "p2mpName":"alphatree",
      "pathType":"primary",
      "provisioningType":"RSVP"
    }
  ]
}
PATCH
topology/v2/​{topology_id}​/p2mp/​{p2mpGroupIndex}​
Update a Specific P2MP Group using a PATCH document

Modify a specific P2MP group using a PATCH document (RFC6906). The operation has the same behavior as the PUT method. An empty PATCH will re-provision the complete tree.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

p2mpGroupIndex URI xsd:int

Signaling protocol P2MP id, which may be empty, and is the same for all TE-LSPs of a tunnel.

Request example:

The following examples show different set of parameters and results:

  • Modify the group bandwidth, setup and holding priority.

    [{ "op": "add", "path": "/plannedProperties/bandwidth", "value": "21k" },{ "op": "add", "path": "/plannedProperties/setupPriority", "value": 3 },{ "op": "add", "path": "/plannedProperties/holdingPriority", "value": 3 }]
    
  • Modify flow mapping: replace all (initial flows with groups 239.2.2.2 and 239.3.3.3) flows.

    [
      {
        "op":"add",
        "path":"/plannedProperties/flows",
        "value":[
          {
            "topoObjectType":"flow",
            "vpn":{"rd": "11.0.0.105:65000", "topoObjectType": "vpnId"},
            "source":{"address": "11.0.0.101", "length": 32, "topoObjectType": "prefix"},
            "group":{"address": "239.4.4.4", "length": 32, "topoObjectType": "prefix"}
          },
          {
            "topoObjectType":"flow",
            "vpn":{"rd": "11.0.0.105:65000", "topoObjectType": "vpnId"},
            "source":{"address": "11.0.0.101", "length": 32, "topoObjectType": "prefix"},
            "group":{"address": "239.5.5.5", "length": 32, "topoObjectType": "prefix"}
          }
        ]
      }
    ]
    
  • Modify flow mapping: insert a new flow (initial flows with groups 239.2.2.2 and 239.3.3.3) flows.

    [
      {
        "op":"add",
        "path":"/plannedProperties/flows/0",
        "value": {
          "topoObjectType":"flow",
          "vpn":{"rd": "11.0.0.105:65000", "topoObjectType": "vpnId"},
          "source":{"address": "11.0.0.101", "length": 32, "topoObjectType": "prefix"},
          "group":{"address": "239.1.1.1", "length": 32, "topoObjectType": "prefix"}
        }  
      }
    ]
    

Response example:

The response to the requests are

  • Modify the group bandwidth, setup and holding priority.

    {
      "topoObjectType":"p2mpGroup",
      "name":"alphatree",
      "from":{"address": "11.0.0.191", "topoObjectType": "ipv4"},
      "plannedProperties":{
        "bandwidth":"21k",
        "setupPriority":3,
        "holdingPriority":3,
        "design":{
          "adminGroups":{
            "attributeExclude":0,
            "attributeIncludeAll":0,
            "attributeIncludeAny":0
          }
        }
      },
      "lsps":[
        {
          "name":"alphatree_to213",
          "to":{"address": "11.0.0.213", "topoObjectType": "ipv4"},
          "plannedProperties":{
            "adminStatus":"Up",
            "bandwidth":"21k",
            "design":{
              "routingMethod":"routeByDevice"
            },
            "holdingPriority":3,
            "pathName":"alphatree_to213_p0",
            "setupPriority":3
          },
          "controlType":"PCC",
          "from":{
            "address":"11.0.0.191",
            "topoObjectType":"ipv4"
          },
          "lspIndex":145948,
          "p2mpName":"alphatree",
          "pathType":"primary",
          "provisioningType":"RSVP"
        },
        {
          "name":"alphatree_to214",
          "to":{"address": "11.0.0.214", "topoObjectType": "ipv4"},
          "plannedProperties":{
            "adminStatus":"Up",
            "bandwidth":"21k",
            "design":{
              "routingMethod":"routeByDevice"
            },
            "holdingPriority":3,
            "pathName":"alphatree_to214_p0",
            "setupPriority":3
          },
          "controlType":"PCC",
          "from":{
            "address":"11.0.0.191",
            "topoObjectType":"ipv4"
          },
          "lspIndex":145949,
          "p2mpName":"alphatree",
          "pathType":"primary",
          "provisioningType":"RSVP"
        }
      ]
    }
  • Modify flow mapping: replace all flows.

    {
      "topoObjectType":"p2mpGroup",
      "name":"alphatree",
      "from":{"address": "11.0.0.191", "topoObjectType": "ipv4"},
      "plannedProperties":{
        "bandwidth":"99k",
        "setupPriority":7,
        "holdingPriority":7,
        "design":{
          "adminGroups":{
            "attributeExclude":0,
            "attributeIncludeAll":0,
            "attributeIncludeAny":0
          }
        },
        "flows":[
          {
            "topoObjectType":"flow",
            "vpn":{"rd": "11.0.0.105:65000", "topoObjectType": "vpnId"},
            "source":{"address": "11.0.0.101", "length": 32, "topoObjectType": "prefix"},
            "group":{"address": "239.4.4.4", "length": 32, "topoObjectType": "prefix"}
          },
          {
            "topoObjectType":"flow",
            "vpn":{"rd": "11.0.0.105:65000", "topoObjectType": "vpnId"},
            "source":{"address": "11.0.0.101", "length": 32, "topoObjectType": "prefix"},
            "group":{"address": "239.5.5.5", "length": 32, "topoObjectType": "prefix"}
          }
        ]
      },
      "lsps":[
        {
          "name":"alphatree_11.0.0.213",
          "to":{"address": "11.0.0.213", "topoObjectType": "ipv4"},
          "plannedProperties":{
            "adminStatus":"Up",
            "bandwidth":"99k",
            "holdingPriority":7,
            "pathName":"alphatree_to213_p0",
            "setupPriority":7
          },
          "controlType":"PCEInitiated",
          "from":{
            "address":"11.0.0.191",
            "topoObjectType":"ipv4"
          },
          "lspIndex":145953,
          "p2mpName":"alphatree",
          "pathType":"primary",
          "provisioningType":"RSVP"
        },
        {
          "name":"alphatree_11.0.0.214",
          "to":{"address": "11.0.0.214", "topoObjectType": "ipv4"},
          "plannedProperties":{
            "adminStatus":"Up",
            "bandwidth":"99k",
            "holdingPriority":7,
            "setupPriority":7
          },
          "controlType":"PCEInitiated",
          "from":{
            "address":"11.0.0.191",
            "topoObjectType":"ipv4"
          },
          "lspIndex":145954,
          "p2mpName":"alphatree",
          "pathType":"primary",
          "provisioningType":"RSVP"
        }
      ]
    }
    
  • Modify flow mapping: insert a new flow flows.

    {
      "topoObjectType":"p2mpGroup",
      "name":"alphatree",
      "from":{"address": "11.0.0.191", "topoObjectType": "ipv4"},
      "plannedProperties":{
        "bandwidth":"99k",
        "setupPriority":7,
        "holdingPriority":7,
        "design":{
          "adminGroups":{
            "attributeExclude":0,
            "attributeIncludeAll":0,
            "attributeIncludeAny":0
          }
        },
        "flows":[
          {
            "topoObjectType":"flow",
            "vpn":{"rd": "11.0.0.105:65000", "topoObjectType": "vpnId"},
            "source":{"address": "11.0.0.101", "length": 32, "topoObjectType": "prefix"},
            "group":{"address": "239.1.1.1", "length": 32, "topoObjectType": "prefix"}
          },
          {
            "topoObjectType":"flow",
            "vpn":{"rd": "11.0.0.105:65000", "topoObjectType": "vpnId"},
            "source":{"address": "11.0.0.101", "length": 32, "topoObjectType": "prefix"},
            "group":{"address": "239.2.2.2", "length": 32, "topoObjectType": "prefix"}
          },
          {
            "topoObjectType":"flow",
            "vpn":{"rd": "11.0.0.105:65000", "topoObjectType": "vpnId"},
            "source":{"address": "11.0.0.101", "length": 32, "topoObjectType": "prefix"},
            "group":{"address": "239.3.3.3", "length": 32, "topoObjectType": "prefix"}
          }
        ]
      },
      "lsps":[
        {
          "name":"alphatree_11.0.0.213",
          "to":{"address": "11.0.0.213", "topoObjectType": "ipv4"},
          "plannedProperties":{
            "adminStatus":"Up",
            "bandwidth":"99k",
            "holdingPriority":7,
            "pathName":"alphatree_to213_p0",
            "setupPriority":7
          },
          "controlType":"PCEInitiated",
          "from":{
            "address":"11.0.0.191",
            "topoObjectType":"ipv4"
          },
          "lspIndex":145953,
          "p2mpName":"alphatree",
          "pathType":"primary",
          "provisioningType":"RSVP"
        },
        {
          "name":"alphatree_11.0.0.214",
          "to":{"address": "11.0.0.214", "topoObjectType": "ipv4"},
          "plannedProperties":{
            "adminStatus":"Up",
            "bandwidth":"99k",
            "holdingPriority":7,
            "setupPriority":7
          },
          "controlType":"PCEInitiated",
          "from":{
            "address":"11.0.0.191",
            "topoObjectType":"ipv4"
          },
          "lspIndex":145954,
          "p2mpName":"alphatree",
          "pathType":"primary",
          "provisioningType":"RSVP"
        }
      ]
    }
    

DELETE
topology/v2/​{topology_id}​/p2mp/​{p2mpGroupIndex}​
Delete a P2MP Group

No response is received from the REST API unless an error occurs.

 
Normal response codes
204
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

p2mpGroupIndex URI xsd:int

Signaling protocol P2MP id, which may be empty, and is the same for all TE-LSPs of a tunnel.

This operation does not accept a request body and does not return a response body.

DELETE
topology/v2/​{topology_id}​/p2mp/bulk
Delete list of P2MP Groups

No response is received from the REST API unless an error occurs.

 
Normal response codes
204
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

p2mpGroupIndex URI xsd:int

Bulk process P2MP Groups.

Request example:
[
    {"p2mpGroupIndex": 3},
    {"p2mpGroupIndex": 4}
]

This operation does not return a response body.

POST
topology/v2/​{topology_id}​/p2mp/​{p2mpGroupIndex}​
Create a P2MP Leaf

The POST URL accepts a list of new leaves. Use the following schema to create a P2MP leaf: p2mp.json#/definitions/createP2mpLeavesList .

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

p2mpGroupIndex URI xsd:int

Signaling protocol P2MP id, which may be empty, and is the same for all TE-LSPs of a tunnel.

Request example:
[
  {
    "name":"alphatree_to225",
    "to":{"address": "11.0.0.225", "topoObjectType": "ipv4"}
  }
]
Response example:
[
  {
    "name":"alphatree_to225",
    "to":{"address": "11.0.0.225", "topoObjectType": "ipv4"},
    "plannedProperties":{
      "adminStatus":"Up",
      "bandwidth":"21k",
      "holdingPriority":3,
      "pathName":"alphatree_to225_p0",
      "setupPriority":3
    },
    "controlType":"PCC",
    "from":{
      "address":"11.0.0.191",
      "topoObjectType":"ipv4"
    },
    "lspIndex":145950,
    "p2mpName":"alphatree",
    "pathType":"primary",
    "provisioningType":"RSVP"
  }
]
GET
topology/v2/​{topology_id}​/p2mp/​{p2mpGroupIndex}​/​{lspIndex}​
Get a Specific P2MP Leaf

Returns the details of a specified P2MP leaf.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

p2mpGroupIndex URI xsd:int

Signaling protocol P2MP id, which may be empty, and is the same for all TE-LSPs of a tunnel.

lspIndex URI xsd:int

The unique lspIndex.

Response example:
{
    "operationalStatus": "Active",
    "plannedProperties": {
        "bandwidth": "99K",
        "setupPriority": 7,
        "holdingPriority": 0,
        "calculatedEro": [
            {
                "topoObjectType": "ipv4",
                "address": "11.101.105.2",
                "loose": false
            },
            {
                "topoObjectType": "ipv4",
                "address": "11.102.105.1",
                "loose": false
            }
        ],
        "routingStatus": "Up",
        "pathName": "geeiamtree101-102_p0",
        "adminStatus": "Up",
        "preferredEro": [
            {
                "topoObjectType": "ipv4",
                "address": "11.101.105.2",
                "loose": false
            },
            {
                "topoObjectType": "ipv4",
                "address": "11.102.105.1",
                "loose": false
            }
        ],
        "lastStatusString": "[PCServer]<Active",
        "correlatedRROHopCount": 2
    },
    "name": "geeiamtree101-102",
    "from": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.101"
    },
    "pathType": "primary",
    "to": {
        "topoObjectType": "ipv4",
        "address": "11.0.0.102"
    },
    "lspIndex": 638,
    "controlType": "PCC",
    "provisioningType": "RSVP",
    "p2mpName": "geeiamtree",
    "collectedProperties": {
        "bandwidth": "99K",
        "setupPriority": 7,
        "holdingPriority": 0,
        "calculatedEro": [
            {
                "topoObjectType": "ipv4",
                "address": "11.101.105.2",
                "loose": false
            },
            {
                "topoObjectType": "ipv4",
                "address": "11.102.105.1",
                "loose": false
            }
        ],
        "routingStatus": "Up",
        "explicitPathName": "geeiamtree101-102_p0",
        "adminStatus": "Up",
        "preferredEro": [
            {
                "topoObjectType": "ipv4",
                "address": "11.101.105.2",
                "loose": false
            },
            {
                "topoObjectType": "ipv4",
                "address": "11.102.105.1",
                "loose": false
            }
        ],
        "correlatedRROHopCount": 2
    },
    "p2mpIndex": 184549477,
    "liveProperties": {
        "bandwidth": 99000,
        "metric": 0,
        "setupPriority": 7,
        "holdingPriority": 0,
        "operationalStatus": "Active",
        "adminStatus": "Up",
        "ero": [
            {
                "topoObjectType": "ipv4",
                "address": "11.101.105.2",
                "loose": false
            },
            {
                "topoObjectType": "ipv4",
                "address": "11.102.105.1",
                "loose": false
            }
        ],
        "rro": [
            {
                "topoObjectType": "ipv4",
                "address": "11.101.105.2",
                "protectionInUse": false,
                "protectionAvailable": false
            },
            {
                "topoObjectType": "ipv4",
                "address": "11.102.105.1",
                "protectionInUse": false,
                "protectionAvailable": false
            }
        ],
        "pathName": "geeiamtree101-102_p0"
    },
    "controller": "External"
}

This operation does not accept a request body.

DELETE
topology/v2/​{topology_id}​/p2mp/​{p2mpGroupIndex}​/​{lspIndex}​
Delete a P2MP Leaf

No response is received from the REST API unless an error occurs.

 
Normal response codes
204
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

p2mpGroupIndex URI xsd:int

Signaling protocol P2MP id, which may be empty, and is the same for all TE-LSPs of a tunnel.

lspIndex URI xsd:int

The unique lspIndex.

This operation does not accept a request body and does not return a response body.

DELETE
topology/v2/​{topology_id}​/p2mp/​{p2mpGroupIndex}​/bulk
Delete list of P2MP leaves

No response is received from the REST API unless an error occurs.

 
Normal response codes
204
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

p2mpGroupIndex URI xsd:int

Signaling protocol P2MP id, which may be empty, and is the same for all TE-LSPs of a tunnel.

lspIndex URI xsd:int

Bulk process P2MP leaves.

Request example:
[
    {"lspIndex": 145948},
    {"lspIndex": 145950}
]

This operation does not return a response body.

VRF

The endpoints defined here allows to discover which VRFs are configured in the router. This endpoint has been introduced in NorthStar 5.1 and is read-only. The information from this endpoint is opulated using the device collection.

Those operations are supported using the following endpoints:

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/vrfs/ [GET: list the nodes with VRF information]

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/vrfs/<nodeIndex> [GET: list the VRF on a given node]

The detail of the information provided is defined in the associated json-schema vrfs.json.

GET
topology/v2/​{topology_id}​/vrfs
Get the nodes with VRF

Returns the list of VRF summary: which node have vrf information and how many vrf are present.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:
[
  {
    "topologyIndex":1,
    "topoObjectType":"vrfSummary",
    "links":[{"href": "1/", "rel": "vrfs"}],
    "node":{"id": "0110.0000.0102", "nodeIndex": 1, "topoObjectType": "node", "topologyIndex": 1},
    "entries":6
  },
  {
    "topologyIndex":1,
    "topoObjectType":"vrfSummary",
    "links":[{"href": "2/", "rel": "vrfs"}],
    "node":{"id": "0110.0000.0105", "nodeIndex": 2, "topoObjectType": "node", "topologyIndex": 1},
    "entries":1
  },
  {
    "topologyIndex":1,
    "topoObjectType":"vrfSummary",
    "links":[{"href": "3/", "rel": "vrfs"}],
    "node":{"id": "0110.0000.0106", "nodeIndex": 3, "topoObjectType": "node", "topologyIndex": 1},
    "entries":6
  },
  {
    "topologyIndex":1,
    "topoObjectType":"vrfSummary",
    "links":[{"href": "4/", "rel": "vrfs"}],
    "node":{"id": "0110.0000.0107", "nodeIndex": 4, "topoObjectType": "node", "topologyIndex": 1},
    "entries":3
  }
]

This operation does not accept a request body.

GET
topology/v2/​{topology_id}​/vrfs/​{nodeIndex}​
List the VRF on a given node

Returns the list of discovered VRF for that node.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

nodeIndex URI xsd:int

The unique nodeIndex.

Response example:
[
  {
    "topologyIndex":1,
    "topoObjectType":"vrf",
    "node":{"id": "0110.0000.0102", "nodeIndex": 1, "topoObjectType": "node", "topologyIndex": 1},
    "instanceName":"cherryblossom",
    "routeDistinguisher":"11.0.0.102:65000",
    "interfaces":[{"interfaceName": "ge-0/0/7.0"}],
    "importPolicies":[{"policyName": "65000:100"}],
    "exportPolicies":[{"policyName": "65000:100"}]
  },
  {
    "topologyIndex":1,
    "topoObjectType":"vrf",
    "node":{"id": "0110.0000.0102", "nodeIndex": 1, "topoObjectType": "node", "topologyIndex": 1},
    "instanceName":"etree1",
    "routeDistinguisher":"11.0.0.102:301",
    "interfaces":[{"interfaceName": "ge-0/0/5.301"}],
    "importPolicies":[{"policyName": "6500:301"}],
    "exportPolicies":[{"policyName": "6500:301"}],
    "VLANID":100
  },
  {
    "topologyIndex":1,
    "topoObjectType":"vrf",
    "node":{"id": "0110.0000.0102", "nodeIndex": 1, "topoObjectType": "node", "topologyIndex": 1},
    "instanceName":"l2vpn_3_ce_101",
    "routeDistinguisher":"",
    "interfaces":[{"interfaceName": "ge-0/0/5.3"}]
  },
  {
    "topologyIndex":1,
    "topoObjectType":"vrf",
    "node":{"id": "0110.0000.0102", "nodeIndex": 1, "topoObjectType": "node", "topologyIndex": 1},
    "instanceName":"vpn_0",
    "routeDistinguisher":"11.0.0.102:100",
    "interfaces":[{"interfaceName": "ge-0/0/1.0"}, {"interfaceName": "lo0.1"}],
    "importPolicies":[{"policyName": "11:100"}],
    "exportPolicies":[{"policyName": "11:100"}],
    "lspMatchRegex":"^Silver.*"
  },
  {
    "topologyIndex":1,
    "topoObjectType":"vrf",
    "node":{"id": "0110.0000.0102", "nodeIndex": 1, "topoObjectType": "node", "topologyIndex": 1},
    "instanceName":"vpws_sh6_sh2_vlan1002",
    "routeDistinguisher":"11.0.0.102:2002",
    "interfaces":[{"interfaceName": "ge-0/0/5.1002"}],
    "importPolicies":[{"policyName": "6500:1002"}],
    "exportPolicies":[{"policyName": "6500:1002"}]
  },
  {
    "topologyIndex":1,
    "topoObjectType":"vrf",
    "node":{"id": "0110.0000.0102", "nodeIndex": 1, "topoObjectType": "node", "topologyIndex": 1},
    "instanceName":"vpn_200_ce_101",
    "routeDistinguisher":"",
    "interfaces":[{"interfaceName": "ge-0/0/5.200"}]
  }
]

This operation does not accept a request body.

BGP Routes

If PRDP is configured for a set of nodes, this API allows to see the BGP routes retrived by Paragon PathFinder.

The schema is: route.json . The operations are:

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/routes/ [GET : get the list of nodes with bgp routes (summary only)

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/routes/<nodeIndex> [ GET : get the list of routes on a node]

Paragon PathFinder is limiting the number of routes fetched, the list may be incomplete.

GET
topology/v2/​{topology_id}​/routes

List all nodes with BGP routes and the number of routes for that node.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:

Returns the following JSON document: route.json.json#/definitions/summaryList .

[
    {
        "topologyIndex": 1,
        "topologyObjectType": "routeSummary",
        "node": {
            "topoObjectType": "node",
            "nodeIndex": 7,
            "id": "0110.0000.0012",
            "topologyIndex": 1
        },
        "entries": 50
    },
    {
        "topologyIndex": 1,
        "topologyObjectType": "routeSummary",
        "node": {
            "topoObjectType": "node",
            "nodeIndex": 5,
            "id": "0110.0000.0010",
            "topologyIndex": 1
        },
        "entries": 98
    },
    {
        "topologyIndex": 1,
        "topologyObjectType": "routeSummary",
        "node": {
            "topoObjectType": "node",
            "nodeIndex": 6,
            "id": "0110.0000.0011",
            "topologyIndex": 1
        },
        "entries": 50
    }
]

This operation does not accept a request body.

GET
topology/v2/​{topology_id}​/routes/​{nodeIndex}​

Gets the routes maintained by Paragon PathFinder for a node.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

nodeIndex URI xsd:int

Program ID of a node.

Response example:

Follows route.json#/definitions/routeList .

[
    {
        "topologyIndex": 1,
        "topologyObjectType": "route",
        "node": {
            "topoObjectType": "node",
            "nodeIndex": 7,
            "id": "0110.0000.0012",
            "topologyIndex": 1
        },
        "table": "inet.0",
        "prefix": {
            "topoObjectType": "prefix",
            "address": "10.4.4.0",
            "length": 24
        },
        "pathCookie": 190819980,
        "asPath": [
            "3",
            "4"
        ],
        "protocolNextHops": [
            "11.0.0.22",
            "11.0.0.31"
        ],
        "protocol": "BGP",
        "routePreference": 170,
        "localPreference": 100,
        "vpnLabel": 0
    },
    {
        "topologyIndex": 1,
        "topologyObjectType": "route",
        "node": {
            "topoObjectType": "node",
            "nodeIndex": 7,
            "id": "0110.0000.0012",
            "topologyIndex": 1
        },
        "table": "inet.0",
        "prefix": {
            "topoObjectType": "prefix",
            "address": "10.4.22.0",
            "length": 24
        },
        "pathCookie": 190821156,
        "asPath": [
            "2",
            "4"
        ],
        "protocolNextHops": [
            "11.0.0.22"
        ],
        "protocol": "BGP",
        "routePreference": 170,
        "localPreference": 100,
        "vpnLabel": 0
    }
]

This operation does not accept a request body.

IPE Policies

When generation of external nodes and links through BGP policy configuration is enabled, this API allows creating, retrieving, updating and deleting IPE Policies. Note: This API is currently experimental and subject to change in future releases.

The schema is: ipe.json . The operations are:

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/ipe/policy/ [ GET : Gets all IPE policies, POST: Creates IPE Policies (bulk), PUT: Updates IPE Policies (bulk), DELETE: Deletes IPE Policies (bulk) ]

  • https://paragon.example.net/traffic-engineering/api/topology/v2/<topology-id>/ipe/policy/<ipePolicyId> [ GET : Gets single IPE ]

GET
topology/v2/​{topology_id}​/ipe/policy

Get all IPE Policies

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:
{
    "ipe_policies": [
        {
            "id": 1,
            "node": {
                "id": "0110.0000.0011",
                "nodeIndex": 6,
                "topologyIndex": 1,
                "topoObjectType": "node"
            },
            "neighbor": "11.0.0.21",
            "prefix": "199.1.1.0/24",
            "priority": 1,
            "operationalStatus": "Up",
            "errorReason": "None"
        },
        {
            "id": 3,
            "node": {
                "id": "0110.0000.0011",
                "nodeIndex": 6,
                "topologyIndex": 1,
                "topoObjectType": "node"
            },
            "neighbor": "11.0.0.21",
            "prefix": "198.1.1.0/24",
            "priority": 3,
            "operationalStatus": "Up",
            "errorReason": "None"
        },
        {
            "id": 4,
            "node": {
                "id": "0110.0000.0012",
                "nodeIndex": 7,
                "topologyIndex": 1,
                "topoObjectType": "node"
            },
            "neighbor": "11.0.0.31",
            "prefix": "177.1.2.0/24",
            "priority": 5,
            "operationalStatus": "Up",
            "errorReason": "None"
        }
    ]
}

This operation does not accept a request body.

POST
topology/v2/​{topology_id}​/ipe/policy

Create IPE Policies

 
Normal response codes
202
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:

Required schema: ipe.json#/definitions/bulkIPECreate

Response example:

This operation does not return a response body.

PUT
topology/v2/​{topology_id}​/ipe/policy

Update IPE Policies

 
Normal response codes
202
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:

Required schema: ipe.json#/definitions/bulkIPEUpdate

Response example:

This operation does not return a response body.

DELETE
topology/v2/​{topology_id}​/ipe/policy

Delete IPE Policies

 
Normal response codes
202
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:

Required schema: ipe.json#/definitions/bulkIPEDelete

Response example:

This operation does not return a response body.

GET
topology/v2/​{topology_id}​/ipe/policy/​{ipePolicyId}​

Get single IPE policy

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

ipePolicyId URI xsd:int

Program ID of an IPE policy

Response example:
{
    "id": 4,
    "node": {
      "id": "0110.0000.0012",
      "nodeIndex": 7,
      "topologyIndex": 1,
      "topoObjectType": "node"
    },
    "neighbor": "11.0.0.31",
    "prefix": "177.1.2.0/24",
    "priority": 5,
    "operationalStatus": "Up",
    "errorReason": "None"
  }

This operation does not accept a request body.

Analytics API

The analytics REST API allows to query the analytics data collected by NorthStar controller. Each URL accepts a POST request with as set of parameters refining the query.

Each queried object has specific counters. Those counters are dynamically generated based on the data collected. The queries are

  • Interfaces: /NorthStar/API/v2/tenant/1/statistics/interfaces/fields

  • LSP/demands: /NorthStar/API/v2/tenant/1/statistics/te-lsps/fields

  • Interface delay/loss: /NorthStar/API/v2/tenant/1/statistics/delay/fields

The information returned is a JSON object with a fields property containing a list of strings. For instance:
{ "fields": [ "average_rtt", "jitter", "loss_percent", "max_rtt", "min_rtt", "one_way" ]}

Other common parameters are startTime and endTime, Those parameter represent an absolute or relative time.

Absolute values can be either a string (ISO8601 format, date is required, time is optional) or an integer (milliseconds since epoch). The special value now is accepted.

The Date mathematic consist of a plus or minus followed by a time unit: y (year), M(month), w (week), d (day), h or H (hours), m (minutes) or s (seconds). For instance a query with startTime set to "now-1d", endTime "now" will retrieve the statistics for the last day. This field is based on ElasticSearch Date Math

POST
statistics/v2/demands/bulk
Query resource bulk

The POST request accepts a JSON object describing the query parameters.

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

  • counter : Either a single counter or an array of counters. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • demand (array ): Array of demand objects.

  • endTime (Either string or integer): Date time. .

.

 

The POST data must conform to the following JSON schema.

{
  "id": "demands-bulk.hjson",
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the GET bulk demand API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counters"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    },
    "demand": {
      "$ref": "/stats-templates/common.json#/definitions/demandArray"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/interfaces/delay/​{device_name}​/​{interface_name}​
Query resource {interface_name}

The POST request accepts a JSON object describing the query parameters.

  • counter (string ): Name of the counter to aggregate by..

  • endTime (Either string or integer): Date time. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /device/top API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counter"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    }
  }
}
Normal response codes
200
Request parameters
Parameter Style Type Description
{device_name} URI xsd:string

TODO

{interface_name} URI xsd:string

TODO

Request example: Response example:
POST
statistics/v2/interfaces/bulk
Query resource bulk

The POST request accepts a JSON object describing the query parameters.

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

  • counter : Either a single counter or an array of counters. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • interface (array ): Array of interface objects.

  • endTime (Either string or integer): Date time. .

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /interface/bulk API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counters"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    },
    "interface": {
      "$ref": "/stats-templates/common.json#/definitions/interfaceArray"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/interfaces/fields
Query resource fields

The POST request accepts a JSON object describing the query parameters.

  • endTime (Either string or integer): Date time. .

  • startTime (Either string or integer): Date time. .

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /interfaces/fields API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/interfaces/top
Query resource top

The POST request accepts a JSON object describing the query parameters.

  • counter (string ): Name of the counter to aggregate by..

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • device (array ): Array of node objects.

  • endTime (Either string or integer): Date time. .

  • size (integer ): Max number of interfaces top return.

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /device/top API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "size": {
      "description": "Max number of interfaces top return",
      "type": "integer",
      "minimum": 1
    },
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counter"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    },
    "device": {
      "$ref": "/stats-templates/common.json#/definitions/deviceArray"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/interfaces/childtraffic/​{device_name}​/​{interface_name}​
Query resource {interface_name}

The POST request accepts a JSON object describing the query parameters.

  • counter (string ): Name of the counter to aggregate by..

  • endTime (Either string or integer): Date time. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

.

 

The POST data must conform to the following JSON schema.

{
  "id": "interface-traffic.hjson",
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST interface-traffic API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counter"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    }
  }
}
Normal response codes
200
Request parameters
Parameter Style Type Description
{device_name} URI xsd:string

TODO

{interface_name} URI xsd:string

TODO

Request example: Response example:
POST
statistics/v2/interfaces/bulkdelay
Query resource bulkdelay

The POST request accepts a JSON object describing the query parameters.

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

  • counter : Either a single counter or an array of counters. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • interface (array ): Array of interface objects.

  • endTime (Either string or integer): Date time. .

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /interface/bulk API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counters"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    },
    "interface": {
      "$ref": "/stats-templates/common.json#/definitions/interfaceArray"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/interfaces/traffic
Query resource traffic

The POST request accepts a JSON object describing the query parameters.

  • endTime (Either string or integer): Date time. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /device/top API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/interfaces/traffic/​{device_name}​
Query resource {device_name}

The POST request accepts a JSON object describing the query parameters.

  • counter (string ): Name of the counter to aggregate by..

  • endTime (Either string or integer): Date time. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /device/top API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counter"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    }
  }
}
Normal response codes
200
Request parameters
Parameter Style Type Description
{device_name} URI xsd:string

TODO

Request example: Response example:
POST
statistics/v2/interfaces/traffic/​{device_name}​/​{interface_name}​
Query resource {interface_name}

The POST request accepts a JSON object describing the query parameters.

  • counter (string ): Name of the counter to aggregate by..

  • endTime (Either string or integer): Date time. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

.

 

The POST data must conform to the following JSON schema.

{
  "id": "interface-traffic.hjson",
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST interface-traffic API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counter"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    }
  }
}
Normal response codes
200
Request parameters
Parameter Style Type Description
{device_name} URI xsd:string

TODO

{interface_name} URI xsd:string

TODO

Request example: Response example:
POST
statistics/v2/interfaces/topdelay
Query resource topdelay

The POST request accepts a JSON object describing the query parameters.

  • counter (string ): Name of the counter to aggregate by..

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • device (array ): Array of node objects.

  • endTime (Either string or integer): Date time. .

  • size (integer ): Max number of interfaces top return.

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /device/top API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "size": {
      "description": "Max number of interfaces top return",
      "type": "integer",
      "minimum": 1
    },
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counter"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    },
    "device": {
      "$ref": "/stats-templates/common.json#/definitions/deviceArray"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/childtraffic/bulk
Query resource bulk

The POST request accepts a JSON object describing the query parameters.

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

  • counter : Either a single counter or an array of counters. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • interface (array ): Array of interface objects.

  • endTime (Either string or integer): Date time. .

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /interface/bulk API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counters"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    },
    "interface": {
      "$ref": "/stats-templates/common.json#/definitions/interfaceArray"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/jnxcos/bulk
Query resource bulk

The POST request accepts a JSON object describing the query parameters.

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

  • counter : Either a single counter or an array of counters. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • interface (array ): Array of interface objects.

  • endTime (Either string or integer): Date time. .

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /jnxcos/bulk API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counters"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    },
    "interface": {
      "$ref": "/stats-templates/common.json#/definitions/interfaceArray"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/delay/fields
Query resource fields

The POST request accepts a JSON object describing the query parameters.

  • endTime (Either string or integer): Date time. .

  • startTime (Either string or integer): Date time. .

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /te-lsps/fields API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/te-lsps/bulk
Query resource bulk

The POST request accepts a JSON object describing the query parameters.

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

  • startTime (Either string or integer): Date time. .

  • counter : Either a single counter or an array of counters. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • lsp (array ): Array of lsp objects.

  • endTime (Either string or integer): Date time. .

.

 

The POST data must conform to the following JSON schema.

{
  "id": "lsp-bulk.hjson",
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST bulk lsp API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counters"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    },
    "lsp": {
      "$ref": "/stats-templates/common.json#/definitions/lspArray"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/te-lsps/fields
Query resource fields

The POST request accepts a JSON object describing the query parameters.

  • endTime (Either string or integer): Date time. .

  • startTime (Either string or integer): Date time. .

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /te-lsps/fields API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/te-lsps/top
Query resource top

The POST request accepts a JSON object describing the query parameters.

  • counter (string ): Name of the counter to aggregate by..

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • device (array ): Array of node objects.

  • endTime (Either string or integer): Date time. .

  • size (number ): ???.

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /te-lsps/top API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counter"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    },
    "size": {
      "$ref": "/stats-templates/common.json#/definitions/size"
    },
    "device": {
      "$ref": "/stats-templates/common.json#/definitions/deviceArray"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/te-lsps/bulkdelay
Query resource bulkdelay

The POST request accepts a JSON object describing the query parameters.

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

  • startTime (Either string or integer): Date time. .

  • counter : Either a single counter or an array of counters. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • lsp (array ): Array of lsp objects.

  • endTime (Either string or integer): Date time. .

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /interface/bulk API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counters"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    },
    "lsp": {
      "$ref": "/stats-templates/common.json#/definitions/lspArray"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/te-lsps/delay/​{device_name}​/​{lsp_name}​
Query resource {lsp_name}

The POST request accepts a JSON object describing the query parameters.

  • counter (string ): Name of the counter to aggregate by..

  • endTime (Either string or integer): Date time. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /device/top API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counter"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    }
  }
}
Normal response codes
200
Request parameters
Parameter Style Type Description
{device_name} URI xsd:string

TODO

{lsp_name} URI xsd:string

TODO

Request example: Response example:
POST
statistics/v2/te-lsps/traffic
Query resource traffic

The POST request accepts a JSON object describing the query parameters.

  • endTime (Either string or integer): Date time. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /device/top API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/te-lsps/traffic/​{device_name}​
Query resource {device_name}

The POST request accepts a JSON object describing the query parameters.

  • counter (string ): Name of the counter to aggregate by..

  • endTime (Either string or integer): Date time. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /device/top API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counter"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    }
  }
}
Normal response codes
200
Request parameters
Parameter Style Type Description
{device_name} URI xsd:string

TODO

Request example: Response example:
POST
statistics/v2/te-lsps/traffic/​{device_name}​/​{lsp_name}​
Query resource {lsp_name}

The POST request accepts a JSON object describing the query parameters.

  • counter (string ): Name of the counter to aggregate by..

  • endTime (Either string or integer): Date time. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

.

 

The POST data must conform to the following JSON schema.

{
  "id": "lsp-traffic.json",
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /te-lsps/traffic API",
  "type": "object",
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counter"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    }
  }
}
Normal response codes
200
Request parameters
Parameter Style Type Description
{device_name} URI xsd:string

TODO

{lsp_name} URI xsd:string

TODO

Request example: Response example:
POST
statistics/v2/te-lsps/events/bulk
Query resource bulk

The POST request accepts a JSON object describing the query parameters.

  • from (number ): TODO.

  • startTime (Either string or integer): Date time. .

  • filter (object ): Generic filter object, ???.

  • lsp (array ): Array of lsp objects.

  • endTime (Either string or integer): Date time. .

  • order : Result order (asc or desc).the value must be one of:

    • asc

    • desc

  • size (number ): ???.

.

 

The POST data must conform to the following JSON schema.

{
  "id": "events-bulk.hjson",
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST bulk lsp API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "lsp": {
      "$ref": "/stats-templates/common.json#/definitions/lspArray"
    },
    "size": {
      "$ref": "/stats-templates/common.json#/definitions/size"
    },
    "from": {
      "$ref": "/stats-templates/common.json#/definitions/from"
    },
    "order": {
      "$ref": "/stats-templates/common.json#/definitions/order"
    },
    "filter": {
      "$ref": "/stats-templates/common.json#/definitions/filter"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/te-lsps/events/​{lsp_name}​
Query resource {lsp_name}

This query does not accept any parameter.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
{lsp_name} URI xsd:string

TODO

Request example: Response example:
POST
statistics/v2/device/bulk
Query resource bulk

The POST request accepts a JSON object describing the query parameters.

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

  • counter : Either a single counter or an array of counters. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • device (array ): Array of node objects.

  • endTime (Either string or integer): Date time. .

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /device/top API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counters"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    },
    "device": {
      "$ref": "/stats-templates/common.json#/definitions/deviceArray"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/device/top
Query resource top

The POST request accepts a JSON object describing the query parameters.

  • counter (string ): Name of the counter to aggregate by..

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • device (array ): Array of node objects.

  • endTime (Either string or integer): Date time. .

  • size (number ): ???.

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /device/top API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "size": {
      "$ref": "/stats-templates/common.json#/definitions/size"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counter"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    },
    "device": {
      "$ref": "/stats-templates/common.json#/definitions/deviceArray"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/ldp-lsps/bulk
Query resource bulk

The POST request accepts a JSON object describing the query parameters.

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

  • startTime (Either string or integer): Date time. .

  • counter : Either a single counter or an array of counters. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • lsp (array ): Array of lsp objects.

  • endTime (Either string or integer): Date time. .

.

 

The POST data must conform to the following JSON schema.

{
  "id": "ldp-lsps.hjson",
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the GET bulk lsp API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counters"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    },
    "lsp": {
      "$ref": "/stats-templates/common.json#/definitions/fecArray"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/ldp-lsps/traffic/​{device_name}​/​{fec}​
Query resource {fec}

The POST request accepts a JSON object describing the query parameters.

  • counter (string ): Name of the counter to aggregate by..

  • endTime (Either string or integer): Date time. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

.

 

The POST data must conform to the following JSON schema.

{
  "id": "lsp-traffic.json",
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the GET /te-lsps/traffic API",
  "type": "object",
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counter"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    }
  }
}
Normal response codes
200
Request parameters
Parameter Style Type Description
{device_name} URI xsd:string

TODO

{fec} URI xsd:string

TODO

Request example: Response example:
POST
statistics/v2/netflow/prefix_flow_demand
Query resource prefix_flow_demand

The POST request accepts a JSON object describing the query parameters.

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

  • counter : Either a single counter or an array of counters. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • demand (array ): Array of demand objects.

  • endTime (Either string or integer): Date time. .

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /interface/bulk API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counters"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    },
    "demand": {
      "$ref": "/stats-templates/common.json#/definitions/demandArray"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/sid/bulk
Query resource bulk

The POST request accepts a JSON object describing the query parameters.

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

  • counter : Either a single counter or an array of counters. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • sid (array ): Array of sid objects.

  • endTime (Either string or integer): Date time. .

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /sid/bulk API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counters"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    },
    "interface": {
      "$ref": "/stats-templates/common.json#/definitions/sidArray"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/sr-te-policy/bulk
Query resource bulk

The POST request accepts a JSON object describing the query parameters.

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

  • counter : Either a single counter or an array of counters. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • policy (array ): Array of policy objects.

  • endTime (Either string or integer): Date time. .

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /sr-te-policy/bulk API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counters"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    },
    "interface": {
      "$ref": "/stats-templates/common.json#/definitions/policyArray"
    }
  }
}
Normal response codes
200
Request example: Response example:
POST
statistics/v2/te-containers/traffic/bulk
Query resource bulk

The POST request accepts a JSON object describing the query parameters.

  • interval (string ): Time duration for instance 1d, 1y, 24h,.

  • counter : Either a single counter or an array of counters. .

  • aggregation (string ): Aggregation function to use to aggregate values.the value must be one of:

    • avg

    • max

    • min

    • cardinality

    • sum

  • startTime (Either string or integer): Date time. .

  • containerLsp (array ): Array of Container LSP objects.

  • endTime (Either string or integer): Date time. .

.

 

The POST data must conform to the following JSON schema.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Specifies the parameters expected in the POST /te-containers/traffic/bulk API",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "startTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "endTime": {
      "$ref": "/stats-templates/common.json#/definitions/date"
    },
    "interval": {
      "$ref": "/stats-templates/common.json#/definitions/interval"
    },
    "counter": {
      "$ref": "/stats-templates/common.json#/definitions/counters"
    },
    "aggregation": {
      "$ref": "/stats-templates/common.json#/definitions/aggregation"
    },
    "containerLsp": {
      "$ref": "/stats-templates/common.json#/definitions/containerLspArray"
    }
  }
}
Normal response codes
200
Request example:
{
    "startTime": "now-1h",
    "endTime": "now",
    "aggregation": "avg",
    "interval": "5m",
    "counter": [
      "lsp_stats.pps",
      "lsp_stats.bps"
    ],
    "containerLsp": [
      {
        "name": "Container-lsp-vmx102-104",
        "index": 2
      },
      {
        "name": "Container-lsp-vmx101-106",
        "index": 3
      }
    ]
  }
Response example:
{
    "startTime": 1555989900000,
    "Container-lsp-vmx101-106": {
      "id": {
        "statisticType": "lsp",
        "name": "Container-lsp-vmx101-106"
      },
      "lsp_stats.pps": [
        392,
        617,
        678,
        710,
        663,
        697,
        722,
        662,
        672,
        674,
        717,
        706
      ],
      "lsp_stats.bps": [
        4172245,
        6557747,
        7205803,
        7550527,
        7047811,
        7414119,
        7677474,
        7035194,
        7143393,
        7163097,
        7618785,
        7504668
      ]
    },
    "Container-lsp-vmx102-104": {
      "id": {
        "statisticType": "lsp",
        "name": "Container-lsp-vmx102-104"
      },
      "lsp_stats.bps": [        
        674246,
        6283335,
        5609443,
        6873056,
        6343583,
        5900760,
        5775125,
        5986879,
        6336140,
        6031002,
        5902709,
        2955696
      ],
      "lsp_stats.pps": [
        63,
        591,
        528,
        646,
        597,
        555,
        543,
        563,
        596,
        567,
        555,
        278
      ]
    }
  }

Transport Topology acquisition

Enables configuration of the Paragon PathFinder connection to the transport controller for retrieval of abstracted transport topology and automation of addition of information to the IP layer.

The corresponding schema is: transportController.json .

The following tables show the set of parameters describing a transport controller configuration.

Create Transport controller Attributes
Attribute Type Fixed Description
name string No Transport controller name
notifyUrl string No The REST/RESTCONF URL publishing (via Server-Sent-event) topology notifications
profileName string No The profile group name the Paragon PathFinder controller must use to connect to the transport controller instances.
topologyUrl string No The URL providing the abstract topology, following the IETF model supported by Paragon PathFinder .
topoObjectType string Yes transportController

The other parameters are:

Create Transport controller optional Attributes
Attribute Type Fixed Description
interfaceType string No Indicates whether the transport controller interface follows the RESTCONF draft or a more simple REST interface. This does not affect the Paragon PathFinder Operation.
pollUrl string No The URL on the server to poll server liveliness, by default /.well-known/host-meta.
reconnectTimeout string No The time, in seconds, between two reconnect attempts between controller instances.
rootUrl string No Default root URL for RESTCONF datastores.
srlgPrefix string No Use the SRLG prefix to generate the SRLGs for the IP topology. If set, the SRLGs will be TSRLG_<srlgPrefix>_<SRLG>, otherwise TSRLG_<SRLG>. This permits you to either separate or merge two controller SRLG spaces. By default, SRLG is not set, or it has an empty string which corresponds to merging the SRLGs space.
topologyToUse string No The transport controller might return several topologies. This field permits you to select a specific topology to apply as a filter to the model te-topology-id field.

GET
transport-controllers/v2
Get Transport Controller List

Returns a full list of the transport controllers using the following schema: transportController.json#/definitions/transportControllerList

 
Normal response codes
200
Response example:
[
  {
    "transportControllerIndex": 1,
    "name": "Nortel",
    "interfaceType": "RESTCONF",
    "notifyUrl": "/streams/NETCONF-JSON",
    "pollUrl": "",
    "profileName": "NortelProfile",
    "reconnectTimeout": 10,
    "rootUrl": "",
    "srlgPrefix": "",
    "topologyToUse": "",
    "topologyUrl": "/restconf/data/ietf-te-topology:te-topologies-state",
    "topoObjectType": "transportController"
  }
]

This operation does not accept a request body.

POST
transport-controllers/v2
Create Transport Controller Configuration

Creates a transport controller using the following schema: transportController.json#/definitions/createTransportController

 
Normal response codes
201
Request example:

{
    "name": "Nortel",
    "topologyModel":"ietf-te-topology-01",
    "interfaceType": "RESTCONF",
    "notifyUrl": "/streams/NETCONF-JSON",
    "profileName": "NortelProfile",
    "reconnectTimeout": 10,
    "topologyUrl": "/restconf/data/ietf-te-topology:te-topologies-state",
    "topoObjectType": "transportController"
}

Response example:
{
  "name": "Nortel",
  "interfaceType": "RESTCONF",
  "topologyModel":"ietf-te-topology-01",    
  "notifyUrl": "/streams/NETCONF-JSON",
  "profileName": "NortelProfile",
  "reconnectTimeout": 10,
  "topologyUrl": "/restconf/data/ietf-te-topology:te-topologies-state",
  "topoObjectType": "transportController",
  "transportControllerIndex": 1
}
GET
transport-controllers/v2/​{transportControllerIndex}​
Get Transport Controller Configuration

Returns the configuration of a transport controller.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
transportControllerIndex URI xsd:int

The unique transportControllerIndex.

Response example:

Returns the following JSON document: transportController.json#/definitions/transportController .

{
  "name": "Nortel",
  "interfaceType": "RESTCONF",
  "topologyModel":"ietf-te-topology-01",    
  "notifyUrl": "/streams/NETCONF-JSON",
  "profileName": "NortelProfile",
  "reconnectTimeout": 10,
  "topologyUrl": "/restconf/data/ietf-te-topology:te-topologies-state",
  "topoObjectType": "transportController",
  "transportControllerIndex": 1
}

This operation does not accept a request body.

PUT
transport-controllers/v2/​{transportControllerIndex}​
Update Transport Controller Configuration

Updates a transport controller using the following schema: transportController.json#/definitions/updateTransportController The parameters are the same as for transport controller creation. A parameter change triggers reconnection to the transport controller using the new parameters.

 
Normal response codes
202
Request parameters
Parameter Style Type Description
transportControllerIndex URI xsd:int

The unique transportControllerIndex.

Request example:
{
  "name": "Nortel",
  "interfaceType": "RESTCONF",
  "notifyUrl": "/streams/NETCONF-JSON",
  "profileName": "NortelProfile",
  "reconnectTimeout": 10,
  "topologyUrl": "/restconf/data/ietf-te-topology:te-topologies-state",
  "srlgPrefix": "space1",
  "topoObjectType": "transportController",
  "transportControllerIndex": 1
}
Response example:
{
  "name": "Nortel",
  "interfaceType": "RESTCONF",
  "notifyUrl": "/streams/NETCONF-JSON",
  "profileName": "NortelProfile",
  "reconnectTimeout": 10,
  "topologyUrl": "/restconf/data/ietf-te-topology:te-topologies-state",
  "srlgPrefix": "space1",
  "topoObjectType": "transportController",
  "transportControllerIndex": 1
}
DELETE
transport-controllers/v2/​{transportControllerIndex}​
Delete Transport Controller Configuration

Deletes a transport controller configuration. The transport node, link, and circuits created from that transport controller are not deleted. You must delete them manually, if required.

 
Normal response codes
204
Request parameters
Parameter Style Type Description
transportControllerIndex URI xsd:int

The unique transportControllerIndex.

This operation does not accept a request body and does not return a response body.

Transport Topology devices

Manages a set of instances of a transport controller.

The corresponding schema is: transportControllerEndpoint.json .

The devices are managed as group of devices. For each device the following parameters can be managed:

Create Transport controller Attributes
Attribute Type Fixed Description
ipAddr string No IP address to connect
accessMethod string No Either HTTP or HTTPS
authMethod string No Authentication method; can be BASIC or NOAUTH

The other parameters are:

Create transport controller optional attributes
Attribute Type Fixed Description
hostName string No Device name.
httpPort int No HTTP port.
login string Yes Login to be used for the BASIC auth.
passwd string Yes Encrypted password to be used for the BASIC auth.
retry int No Number of retries for the heartbeat, before the device is considered down.
timeout int No Request timeout for the device.

GET
transport-controller-groups/v2
Get Transport Controller Device Groups

Returns the full list of transport controller groups using the following schema: transportControllerEndpoint.json#/definitions/transportControllerGroupList .

 
Normal response codes
200
Response example:
[  
  {
    "name": "NortelProfile"
  },
  {
    "name": "Default"
  }
]

This operation does not accept a request body.

POST
transport-controller-groups/v2
Create A Transport Controller Device Group

Creates a group of transport controller devices using the following schema: transportControllerEndpoint.json#/definitions/transportControllerGroupDescription .

 

The request must contain the group name to be created, as shown in the example.

Normal response codes
201
Request example:
{
    "name": "NortelProfile",
    "profileType": "Network Controllers"
}
Response example:
{
  "success": true
}
DELETE
transport-controller-groups/v2
Delete a Transport Controller Device Group

Deletes a group of transport controller devices using the following schema: transportControllerEndpoint.json#/definitions/transportControllerGroupDescription

 

The request must contain the group name to be deleted, as shown in the example.

Normal response codes
201
Request example:
{
    "name": "NortelProfile",
    "profileType": "Network Controllers"
}
Response example:
{
  "success": true
}
GET
transport-controller-groups/v2/​{transportControllerGroupName}​
Get Transport Controller Device Groups

Returns a list of transport controller groups using the following schema: transportControllerEndpoint.json#/definitions/transportControllerGroup The password is set by empty strings.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
transportControllerGroupName URI xsd:string

The name of the transport controller devices group.

Response example:
[
  {
    "id": "91172e83-7b45-422c-ac1e-1940fb9a7ddf",
    "accessMethod": "HTTP",
    "authMethod": "BASIC",
    "hostName": "",
    "httpPort": 80,
    "ipAddr": "10.0.1.3",
    "login": "Login2",
    "passwd": "",
    "retry": 3,
    "timeout": 2
  },
  {
    "id": "7bcf5b8a-30f4-46ad-9a51-29daac671587",
    "accessMethod": "HTTP",
    "authMethod": "BASIC",
    "hostName": "",
    "httpPort": 80,
    "ipAddr": "10.0.1.2",
    "login": "Login",
    "passwd": "",
    "retry": 3,
    "timeout": 2
  }
]

This operation does not accept a request body.

POST
transport-controller-groups/v2/​{transportControllerGroupName}​
Create New Devices in a Group

Creates devices in a group using the following schema: transportControllerEndpoint.json#/definitions/transportControllerGroup

 

The request contains a list of devices to be created.

Normal response codes
201
Request parameters
Parameter Style Type Description
transportControllerGroupName URI xsd:string

The name of the transport controller devices group.

Request example:
[
    {
        "accessMethod": "HTTP",
        "authMethod": "BASIC",
        "hostName": "",
        "httpPort": 80,
        "ipAddr": "10.0.1.2",
        "login": "Login",
        "passwd" : "XYXYXYXYXYX",
        "retry": 3,
        "timeout": 2
    },
    {
        "accessMethod": "HTTP",
        "authMethod": "BASIC",
        "hostName": "",
        "httpPort": 80,
        "ipAddr": "10.0.1.3",
        "login": "Login2",
        "passwd" : "XYXYXYXYXYX",
        "retry": 3,
        "timeout": 2
  }
]
Response example:
{
  "success": true
}
PUT
transport-controller-groups/v2/​{transportControllerGroupName}​
Update Devices in the Group

Updates devices in a group using the following schema: transportControllerEndpoint.json#/definitions/transportControllerGroup

 

The request contains a list of devices to be updated. The id parameter is required.

Normal response codes
201
Request parameters
Parameter Style Type Description
transportControllerGroupName URI xsd:string

The name of the transport controller devices group.

Request example:
[
  {
    "id": "91172e83-7b45-422c-ac1e-1940fb9a7ddf",
    "accessMethod": "HTTP",
    "authMethod": "BASIC",
    "hostName": "",
    "httpPort": 80,
    "ipAddr": "10.0.1.3",
    "login": "Login3",
    "passwd": "",
    "retry": 3,
    "timeout": 2
  }
]
Response example:
{
  "success": true
}
DELETE
transport-controller-groups/v2/​{transportControllerGroupName}​
Delete Devices in the Group

Deletes devices from a group using the following schema: transportControllerEndpoint.json#/definitions/transportControllerGroup

 

The request contains a list of devices to be deleted. The id parameter is required, while other parameters are ignored.

Normal response codes
201
Request parameters
Parameter Style Type Description
transportControllerGroupName URI xsd:string

The name of the transport controller devices group.

Request example:
[
  {
    "id": "91172e83-7b45-422c-ac1e-1940fb9a7ddf"
  }
]
Response example:
{
  "success": true
}

Path Computation API

The path computation APIs enable you to compute a path on the TE topology without creating an LSP. It supports the TE-LSP API constraints. The LSP is assumed to be an RSVP LSP by default. The SR-TE path is supported by using the provisioningType parameter, as described in pathComputation.json, and illustrated in the following example:

NOTE: The path computation API for SR-TE provides only the path and does not provide the SIDs.

POST
topology/v2/​{topology_id}​/pathComputation

Use the following schema to request for a path computation: pathComputation.json#/definitions/pathComputationRequests . Response: pathComputation.json#/definitions/pathComputationResponses .

 

The request/response example illustrates a set of three path computation requests. The first request is successful. The two subsequent requests cannot be computed due to routing constraints because there is no path with fewer than two hops and no path that can carry 100G in the topology. All of the paths in the request list are computed in the order they are specified. This API does NOT re-shuffle the request order to optimize the solution or the constraints. No bandwidth is reserved by the path computation request. For example, if only 5G is available between two nodes, one path computation requesting two paths with 3G each will return a partial result, where only the first path is calculated.

Normal response codes
201
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:
{"requests" :
 [
    {"from": {"topoObjectType": "ipv4","address": "11.0.0.101"},
     "to"  : {"topoObjectType": "ipv4","address": "11.0.0.104"},
     "bandwidth" : 1000000,"design" :{"maxDelay":5},"extra" :"allowed"
    },
    {"from": {"topoObjectType": "ipv4","address": "11.0.0.104"},
     "to"  : {"topoObjectType": "ipv4","address": "11.0.0.101"},
    "bandwidth" : 1000000,"design" :{"maxHop":2}
    },
    {"from": {"topoObjectType": "ipv4","address": "11.0.0.102"},
     "to"  : {"topoObjectType": "ipv4","address": "11.0.0.103"},
     "bandwidth" : "100G"}
 ]
}
Response example:
{
  "result": "partial",
  "responses": [
      {"from": {"topoObjectType": "ipv4","address": "11.0.0.101"},
       "to"  : {"topoObjectType": "ipv4","address": "11.0.0.104"},
       "bandwidth" : 1000000,"design" :{"maxDelay":5},"extra" :"allowed",
       "status": "success",
       "path": [
           {"topoObjectType": "ipv4","address": "11.101.105.2"},
           {"topoObjectType": "ipv4","address": "11.105.107.2"},
           {"topoObjectType": "ipv4","address": "11.114.117.1"}
       ]
      },
      {"from": {"topoObjectType": "ipv4","address": "11.0.0.104"},
       "to"  : {"topoObjectType": "ipv4","address": "11.0.0.101"},
       "bandwidth" : 1000000,"design" :{"maxHop":2},
       "status": "noPathAvailable"
      },
      {"from": {"topoObjectType": "ipv4","address": "11.0.0.102"},
       "to"  : {"topoObjectType": "ipv4","address": "11.0.0.103"},
       "bandwidth" : "100G",    
       "status": "noPathAvailable"
      }    
  ]
}

Maintenance API

Use these endpoints to work with maintenance.

The corresponding schema is: maintenance.json .

GET
topology/v2/​{topology_id}​/maintenances
Get Maintenance

Returns a full list of Maintenance.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:
[
    {
        "topoObjectType": "maintenance",
        "topologyIndex": 1,
        "maintenanceIndex": 1,
        "user": "admin",
        "name": "1LinkMaint1",
        "status": "planned",
        "startTime": "2018-04-20T17:00:00Z",
        "endTime": "2018-04-20T17:30:00Z",
        "elements": [
            {
                "topoObjectType": "link",
                "index": 8,
                "id": "L11.105.107.1_11.105.107.2"
            }
        ]
    },
    {
        "topoObjectType": "maintenance",
        "topologyIndex": 1,
        "maintenanceIndex": 2,
        "user": "admin",
        "name": "1LinkMaint",
        "status": "planned",
        "startTime": "2018-04-20T17:00:00Z",
        "endTime": "2018-04-20T17:30:00Z",
        "elements": [
            {
                "topoObjectType": "link",
                "index": 8,
                "id": "L11.105.107.1_11.105.107.2"
            }
        ]
    }
]

This operation does not accept a request body.

POST
topology/v2/​{topology_id}​/maintenances
Create a new maintenance

Create a new maintenance using the following schema: maintenance.json#/definitions/createMaintenance .

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Request example:
{
	"topoObjectType": "maintenance",
	"topologyIndex": 1,
	"startTime": "20180220T120700",
	"endTime": "20180220T120700",
    "name": "2LinksMaint",
    "elements": [
        {
            "topoObjectType": "link",
            "index": 1
        },
        {
            "topoObjectType": "link",
            "index": 3
        }
    ]
}
Response example:
{
    "topoObjectType": "maintenance",
    "topologyIndex": 1,
    "maintenanceIndex": 3,
    "user": "admin",
    "name": "2LinksMaint",
    "status": "planned",
    "startTime": "2018-04-20T16:07:00Z",
    "endTime": "2018-04-20T16:15:00Z",
    "elements": [
        {
            "topoObjectType": "link",
            "index": 1,
            "id": "L11.101.105.1_11.101.105.2"
        },
        {
            "topoObjectType": "link",
            "index": 3,
            "id": "L11.102.105.1_11.102.105.2"
        }
    ]
}
GET
topology/v2/​{topology_id}​/maintenances/stream
Start a SSE Stream

See EventSource for format. The notifications send on that stream are only maintenanceEvent. The data will contain a JSON document (see Paragon PathFinder Notification API).

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

Response example:

This operation does not accept a request body.

GET
topology/v2/​{topology_id}​/maintenances/​{maintenanceIndex}​
Get a Specific Maintenance

Returns the details of a specified maintenance.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

maintenanceIndex URI xsd:int

The unique maintenanceIndex.

Response example:
{
    "topoObjectType": "maintenance",
    "topologyIndex": 1,
    "maintenanceIndex": 2,
    "user": "admin",
    "name": "1LinkMaint",
    "status": "planned",
    "startTime": "2018-04-20T17:00:00Z",
    "endTime": "2018-04-20T17:30:00Z",
    "elements": [
        {
            "topoObjectType": "link",
            "index": 8,
            "id": "L11.105.107.1_11.105.107.2"
        }
    ]
}

This operation does not accept a request body.

PUT
topology/v2/​{topology_id}​/maintenances/​{maintenanceIndex}​
Update a Specific Maintenance

Modify a specific maintenance.

 
Normal response codes
200
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

maintenanceIndex URI xsd:int

The unique maintenanceIndex.

Request example:
{
  "topoObjectType": "maintenance",
  "topologyIndex": 1,
  "startTime": "20180408T154500",
  "endTime": "20180408T155000",
  "maintenanceIndex": 2,
    "name": "1LinkMaint",
    "elements": [
        {
            "topoObjectType": "link",
            "index": 1
        },
        {
            "topoObjectType": "link",
            "index": 2
        }
    ]
}
Response example:
{
    "topoObjectType": "maintenance",
    "topologyIndex": 1,
    "maintenanceIndex": 2,
    "user": "admin",
    "name": "1LinkMaint",
    "status": "planned",
    "startTime": "2018-04-08T20:45:00Z",
    "endTime": "2018-04-08T20:50:00Z",
    "elements": [
        {
            "topoObjectType": "link",
            "index": 1,
            "id": "L11.101.105.1_11.101.105.2"
        },
        {
            "topoObjectType": "link",
            "index": 2,
            "id": "L11.102.105.1_11.102.105.2"
        }
    ]
}
DELETE
topology/v2/​{topology_id}​/maintenances/​{maintenanceIndex}​
Delete a Specific Maintenance

Delete a specific maintenance.

 
Request parameters
Parameter Style Type Description
topologyId URI xsd:int

A unique identifier for the topology. In Paragon PathFinder version 2, the unique identifier is set to 1.

maintenanceIndex URI xsd:int

The unique maintenanceIndex.

This operation does not accept a request body and does not return a response body.

RPCs

Remote Procedure Call (RPC) REST APIs allow subroutines that are written for Paragon PathFinder Planner to be utilized via the REST API. For instance Diverse P2MP Tree Design and Bandwidth Calendaring Simulation functionality can be called via these RPC type of REST APIs.

The corresponding schema is: rpcs.json .

Path Optimization RPC

These REST APIs are used to perform global or targeted path optimizations runs. The REST POST without a request body is used to call the global path optimization and with a request body to call the targeted path optimization functionalities. The REST GET is used to return the last global path optimization result that shows the difference between the previous vs. the optimized results. The REST GET doesn't support for targeted path optimization.

POST
topology/v2/rpc/optimize

Trigger global path optimization.

 

The request body must be empty. The response returned by the server conforms to: rpcs.json#/definitions/optimizationResponse .

Normal response codes
201
Response example:
{
    "result ": "Path optimization started."
}

This operation does not accept a request body.

GET
topology/v2/rpc/optimize

Get last global path optimization results.

 

The response returned by the server conforms to: rpcs.json#/definitions/optimizationStatus .

Normal response codes
201
Response example:
{
    "previous": {
        "bandwidth": 20000000,
        "hopCount": 98,
        "latency": 5
    },
    "optimized": {
        "bandwidth": 17000000,
        "hopCount": 85,
        "latency": 4
    },
    "numberOfOptimizedPaths": 6,
    "maxHopCount": 5,
    "maxLatency": 0.6,
    "tunnelCount": 21,
    "lastOptimizationTimeStamp": "2017-12-01T12:02:36.367Z"
}

This operation does not accept a request body.

POST
topology/v2/rpc/optimize

Trigger targeted path optimization.

 

The request body must not be empty. The body consists of a list of elements. The elements can be either LSP, link or mixed. The elements are identified by the element index number. The response consists of a list of candidate elements to be optimized.

The response returned by the server conforms to: rpcs.json#/definitions/optimizationResponse .

Normal response codes
201
Request example:
{
   "elements":[
      {
         "index":1,
         "topoObjectType":"lsp"
      },
      {
         "index":3,
         "topoObjectType":"lsp"
      },
      {
         "index":47,
         "topoObjectType":"lsp"
      }
   ]
}
Response example:
{
   "elements":[
      {
         "topoObjectType":"lsp",
         "index":1
      },
      {
         "topoObjectType":"lsp",
         "index":3
      }
   ]
}

Routing and Failure Simulation RPC

The routing and failure simulation APIs are used to simulate bandwidth calendaring (time based) and failure. Use the first REST POST function to perform routing simulation or failure simulation. Use the subsequent three REST GET operations to return the reports to the calling program for further analysis.

NOTE: Starting from Northstar release 4.1, all the requests are timestamped.

Use the following API to simulate routes and failures:

POST
topology/v2/rpc/simulation
Failure Simulation optimization RPC

Perform failure simulation analysis.

 

The request body must follow the schema rpcs.json#/definitions/simulationRequest The response returned by the server conforms to: rpcs.json#/definitions/simulationResponse .

Normal response codes
200
Request example:

The following example show different set of request:

  • The following example shows maintenance simulation creation with exhaustive node, link and facility failure:

    {
      "topologyIndex": 1,
      "elements":
      [
        "node",
        "link",
        "srlg",
        {
        "type": "maintenance",
        "maintenanceName": "1LinkMaint"
        }
      ]
    }
  • The following example shows maintenance simulation creation without exhaustive failure:

    {
      "topologyIndex": 1,
      "elements":
      [
        {
        "type": "maintenance",
        "maintenanceName": "1LinkMaint"
        }
      ]
    }

Response example:

The following example show different set of response based on the request above:

  • The following example shows the response of maintenance simulation creation with exhaustive node, link and facility failure:

    {
        "status": "success",
        "simulationId": "c203d890-24ee-4592-84b4-0975c7c0b79a",
        "results": {
            "links": [
                {
                    "rel": "results",
                    "href": "c203d890-24ee-4592-84b4-0975c7c0b79a"
                }
            ]
        },
        "topologyIndex": 1,
        "elements": [
            "node",
            "link",
            "srlg",
            {
                "type": "maintenance",
                "maintenanceName": "1LinkMaint"
            }
        ]
    }
  • The following example shows the response of maintenance simulation creation without exhaustive failure:

    {
        "status": "success",
        "simulationId": "852c34b8-368d-4ae8-82d2-e9ed2dd8d223",
        "results": {
            "links": [
                {
                    "rel": "results",
                    "href": "852c34b8-368d-4ae8-82d2-e9ed2dd8d223"
                }
            ]
        },
        "topologyIndex": 1,
        "elements": [
            {
                "type": "maintenance",
                "maintenanceName": "1LinkMaint"
            }
        ]
    }

GET
topology/v2/rpc/simulation
Get Simulation optimization RPC list

Returns the simulation list.

 

The response returned by the server conforms to: rpcs.json#/definitions/simulationsList .

Normal response codes
200
Response example:
{
    "topologyIndex": 1,
    "simulationReports": [
        {
            "status": "success",
            "simulationId": "c203d890-24ee-4592-84b4-0975c7c0b79a",
            "results": {
                "links": [
                    {
                        "rel": "results",
                        "href": "c203d890-24ee-4592-84b4-0975c7c0b79a"
                    }
                ]
            },
            "topologyIndex": 1,
            "elements": [
                "node",
                "link",
                "srlg",
                {
                    "type": "maintenance",
                    "maintenanceName": "1LinkMaint"
                }
            ]
        },
        {
            "simulationId": "20facea2-4ca6-4883-93da-0af22a0a4b75",
            "results": {
                "links": [
                    {
                        "rel": "results",
                        "href": "20facea2-4ca6-4883-93da-0af22a0a4b75"
                    }
                ]
            },
            "topologyIndex": 1,
            "elements": [
                {
                    "type": "maintenance",
                    "maintenanceName": "2LinkMaint"
                }
            ]
        }
    ]
}

This operation does not accept a request body.

GET
topology/v2/rpc/simulation/​{uuid}​
Get a specific simulation

Returns the details of a specified simulation.

 

The response returned by the server conforms to: rpcs.json#/definitions/simulationReports .

Normal response codes
200
Request parameters
Parameter Style Type Description
uuid URI xsd:string

rpc id.

Response example:
{
    "status": "success",
    "simulationId": "c203d890-24ee-4592-84b4-0975c7c0b79a",
    "topologyIndex": 1,
    "elements": [
        "node",
        "link",
        "srlg",
        {
            "type": "maintenance",
            "maintenanceName": "1LinkMaint"
        }
    ],
    "reports": [
        {
            "reportName": "Report/L2_PathChange.r0",
            "links": [
                {
                    "href": "Report/L2_PathChange.r0"
                }
            ]
        },
        {
            "reportName": "Report/L2_PATHDELAY.r0",
            "links": [
                {
                    "href": "Report/L2_PATHDELAY.r0"
                }
            ]
        },
        {
            "reportName": "Report/L2_DVSIM.r0",
            "links": [
                {
                    "href": "Report/L2_DVSIM.r0"
                }
            ]
        },
        {
            "reportName": "Report/L2_LinkUtilChange.r0",
            "links": [
                {
                    "href": "Report/L2_LinkUtilChange.r0"
                }
            ]
        },
        {
            "reportName": "Report/L2_PeakSimLink.r0",
            "links": [
                {
                    "href": "Report/L2_PeakSimLink.r0"
                }
            ]
        },
        {
            "reportName": "Report/L2_PeakSimRoute.r0",
            "links": [
                {
                    "href": "Report/L2_PeakSimRoute.r0"
                }
            ]
        },
        {
            "reportName": "Report/L2_PHYDVSIM.r0",
            "links": [
                {
                    "href": "Report/L2_PHYDVSIM.r0"
                }
            ]
        },
        {
            "reportName": "Report/Maintenance/maintsiminfo.1LinkMaint",
            "links": [
                {
                    "href": "Report/Maintenance/maintsiminfo.1LinkMaint"
                }
            ]
        },
        {
            "reportName": "Report/L2_PeakSimSummary.r0",
            "links": [
                {
                    "href": "Report/L2_PeakSimSummary.r0"
                }
            ]
        }
    ]
}

This operation does not accept a request body.

GET
topology/v2/rpc/simulation/​{uuid}​/​{reportName}​
Get a specific report of one simulation

Returns specific report details of a selected simulation.

 

The response returned by the server is a WANDL Report (Text file), see IPMPLSVIew report format documentation.

Normal response codes
200
Request parameters
Parameter Style Type Description
uuid URI xsd:string

rpc id.

reportName URI xsd:string

report name.

Response example:
#**********************************************
#  LSP Path Changes
#**********************************************
##  Software Release= 4.0.0 20180327_72790_157, 64 bits,  Compilation Date= 20180327
##  Customer= JNPR_Hanita-test
##  Platform=x86_64, OS=Linux 2.6.32-696.1.1.el6.x86_64
##  Report Date= 2018-3-28 14:44   Runcode=r0  User=pcs
Name,Node A,Node Z,Orig Hop Count,New Hop Count,Orig Path Cost,New Path Cost,Orig Path,New Path,Protection,Orig Delay,New Delay,Delay Change %,Orig BW,New BW,Type
Silver-101-103,vmx101,vmx103,3,4,30,60,11.101.105.2-11.105.107.2-11.103.107.1,11.101.105.2-11.105.106.2-11.106.107.2-11.103.107.1,,  0.00,  0.00,  0.00%,0,0,,
Silver-104-102,vmx104,vmx102,3,4,30,60,11.104.107.2-11.105.107.1-11.102.105.1,11.104.107.2-11.106.107.1-11.105.106.1-11.102.105.1,,  0.00,  0.00,  0.00%,0,0,,
rsvp-103-105,vmx103,vmx105,2,3,20,50,11.103.107.2-11.105.107.1,11.103.107.2-11.106.107.1-11.105.106.1,,  0.00,  0.00,  0.00%,0,0,,
Silver-103-102,vmx103,vmx102,3,4,30,60,11.103.107.2-11.105.107.1-11.102.105.1,11.103.107.2-11.106.107.1-11.105.106.1-11.102.105.1,,  0.00,  0.00,  0.00%,0,0,,
11.0.0.103:11.0.0.106:200:vpls:vpn_200,vmx106,vmx103,3,2,30,40,11.105.106.1-11.105.107.2-11.103.107.1,11.106.107.2-11.103.107.1,,  0.00,  0.00,  0.00%,0,0,,
11.0.0.101:11.0.0.103:200:vpls:vpn_200,vmx103,vmx101,3,4,30,60,11.103.107.2-11.105.107.1-11.101.105.1,11.103.107.2-11.106.107.1-11.105.106.1-11.101.105.1,,  0.00,  0.00,  0.00%,0,0,,
rsvp-105-106,vmx105,vmx106,3,1,70,10,11.105.107.2-11.104.107.1-11.104.106.2,11.105.106.2,,  0.00,  0.00,  0.00%,0,0,,
rsvp-107-105,vmx107,vmx105,1,2,10,40,11.105.107.1,11.106.107.1-11.105.106.1,,  0.00,  0.00,  0.00%,0,0,,
11.0.0.104:11.0.0.101:300:vpls:vpn_200,vmx101,vmx104,3,4,30,60,11.101.105.2-11.105.107.2-11.104.107.1,11.101.105.2-11.105.106.2-11.106.107.2-11.104.107.1,,  0.00,  0.00,  0.00%,0,0,,
tcg1tree-102107,vmx102,vmx107,2,-,20,-,11.102.105.2-11.105.107.2, # vmx102--11.0.0.105--11.0.0.107,(path down),  0.00,-,,10.000K,10.000K,,
11.0.0.106:11.0.0.103:200:vpls:vpn_200,vmx103,vmx106,3,2,30,40,11.103.107.2-11.105.107.1-11.105.106.2,11.103.107.2-11.106.107.1,,  0.00,  0.00,  0.00%,0,0,,
11.0.0.101:11.0.0.104:300:vpls:vpn_200,vmx104,vmx101,3,3,30,70,11.104.107.2-11.105.107.1-11.101.105.1,11.104.106.2-11.105.106.1-11.101.105.1,,  0.00,  0.00,  0.00%,0,0,,
rsvp-106-105,vmx106,vmx105,3,1,70,10,11.104.106.1-11.104.107.2-11.105.107.1,11.105.106.1,,  0.00,  0.00,  0.00%,0,0,,
tcg1tree-102106,vmx102,vmx106,3,-,50,-,11.102.105.2-11.105.107.2-11.106.107.1, # vmx102--11.0.0.105--11.0.0.107--11.0.0.106,(path down),  0.00,-,,10.000K,10.000K,,
rsvp-104-105,vmx104,vmx105,2,3,20,50,11.104.107.2-11.105.107.1,11.104.107.2-11.106.107.1-11.105.106.1,,  0.00,  0.00,  0.00%,0,0,,
Silver-102-103,vmx102,vmx103,3,4,30,60,11.102.105.2-11.105.107.2-11.103.107.1,11.102.105.2-11.105.106.2-11.106.107.2-11.103.107.1,,  0.00,  0.00,  0.00%,0,0,,
Silver-101-104,vmx101,vmx104,3,4,30,60,11.101.105.2-11.105.107.2-11.104.107.1,11.101.105.2-11.105.106.2-11.106.107.2-11.104.107.1,,  0.00,  0.00,  0.00%,0,0,,
11.0.0.103:11.0.0.101:300:vpls:vpn_200,vmx101,vmx103,3,4,30,60,11.101.105.2-11.105.107.2-11.103.107.1,11.101.105.2-11.105.106.2-11.106.107.2-11.103.107.1,,  0.00,  0.00,  0.00%,0,0,,
Silver-103-101,vmx103,vmx101,3,4,30,60,11.103.107.2-11.105.107.1-11.101.105.1,11.103.107.2-11.106.107.1-11.105.106.1-11.101.105.1,,  0.00,  0.00,  0.00%,0,0,,
Silver-104-101,vmx104,vmx101,3,4,30,60,11.104.107.2-11.105.107.1-11.101.105.1,11.104.107.2-11.106.107.1-11.105.106.1-11.101.105.1,,  0.00,  0.00,  0.00%,0,0,,
tcg0tree-102104,vmx102,vmx104,3,-,30,-,11.102.105.2-11.105.107.2-11.104.107.1, # vmx102--11.0.0.105--11.0.0.107--11.0.0.104,(path down),  0.00,-,,10.000K,10.000K,,
11.0.0.106:11.0.0.104:300:vpls:vpn_200,vmx104,vmx106,3,1,30,50,11.104.107.2-11.105.107.1-11.105.106.2,11.104.106.2,,  0.00,  0.00,  0.00%,0,0,,
11.0.0.104:11.0.0.106:200:vpls:vpn_200,vmx106,vmx104,3,1,30,50,11.105.106.1-11.105.107.2-11.104.107.1,11.104.106.1,,  0.00,  0.00,  0.00%,0,0,,

This operation does not accept a request body.

P2MP Tree design RPC

These REST APIs are used for P2MP Tree Design Simulation. The first REST POST is utilized by the user to perform diverse p2mp tree design, given two trees in the same diversity group. The subsequent two REST GET operations are used to return the resulting list of P2MP trees. Since NS 5.0 the provisioningMethod (default NETCONF) can be specified and is used when useResultAsEro is set to true (The groups will be provisioned as a result of the design). The provisioningMethod must be set on the diverseTree request and will overwrite any set on the groups themselves. The fourth REST POST allows the user to perform diverse p2mp group using PCEP and associate it with a flow mapping. The POST REQUEST remains same for diverse p2mp group with or without flow mapping. Note, as the default provisioning method is NETCONF, we need to add additional field in the POST REQUEST ("creationConfigurationMethod": "PCEP"). This needs to be added globally as well as under "P2MPGroup", and "diverseP2MPGroup". Diverse p2mp with flow mapping is supported since NorthStar 6.1.0. A non-diverse P2MP group with flow mapping is supported from NorthStar 5.1 version.

Following 2 statements are needed on the Junos router headend:

  • set protocols pcep pce ns1 pce-traffic-steering.

  • set routing-instances mvpn provider-tunnel external-controller pccd.

The tree design API does allow diverse P2MP trees to be computed. This is controlled using the following set of attributes:

  • diversityGroup: the tree or leaves are grouped together using a diversityGroup. If TreeA and TreeB (LSP1 and LSP2) should be diverse to each other, they should be in the same diversityGroup (i.e the client should set the same value). Setting the diversityGroup on the Group will set it on all its leaves and Paragon PathFinder will pair the leaves based on their destination node/site.

  • diversityLevel (site, srlg or link): the level of requested diversity. Paragon PathFinder will try to compute path that reach that diversity level, if this cannot be achieved, it will try to route the path as diverse as possible, unless minimumDiversityLevel is specified.

  • minimumDiversityLevel (site, srlg or link): the minimum acceptable diversity level. If Paragon PathFinder cannot achieve diversity as good or better than minimumDiversityLevel, the routing is considered as failed. For DiverseTree design, this imply that the tree will not be provisioned if the minimumDiversityLevel cannot be achieved.

For instance a diverseTree request with diversityLevel=srlg and no minimumDiversityLevel may provision a tree with link diverse paths, while the same request with diversityLevel=minimumDiversityLevel=srlg will not provision the tree.

The Tree can also be terminated in CE or Site nodes, taking into account the PE to CE links for diversity constraints. The same restriction for P2MP groups detailed in P2MP groups applies.

POST
topology/v2/rpc/diverseTreeDesign
P2MP Diverse Tree Design optimization RPC

Create 2 P2MP trees and perform Diverse P2MP Tree Design.

 

The request body must follow the schema rpcs.json#/definitions/diverseTreeRequest The response returned by the server conforms to: rpcs.json#/definitions/diverseTreeResult .

Normal response codes
200
Request example:

The following example show different set of request:

  • The following example shows P2MP Diverse Tree Design optimization. Note that the values in the "name" field under "P2MPGroup" and under "diverseP2MPGroup" are required to be different from each other.

    {
    
      "P2MPGroup": {
        "name": "hhtree",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.102"
        },
        "plannedProperties": {
          "bandwidth": "99k",
          "design": {
            "diversityGroup": "hhzz"
          }
        },
        "lsps": [
            {
              "name": "hhtree-102104",
              "to" : {
                "topoObjectType": "ipv4",
                "address": "11.0.0.104"
              }
            },
            {
              "name": "hhtree-102107",
              "to" : {
                "topoObjectType": "ipv4",
                "address": "11.0.0.107"
              }
            }
        ]
      },
      "diverseP2MPGroup": {
        "name": "zztree",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.102"
        },
        "plannedProperties": {
          "bandwidth": "99k",
          "design": {
            "diversityGroup": "hhzz"
          }
        },
        "lsps": [
            {
              "name": "zztree-102104",
              "to" : {
                "topoObjectType": "ipv4",
                "address": "11.0.0.104"
              }
            },
            {
              "name": "zztree-102107",
              "to" : {
                "topoObjectType": "ipv4",
                "address": "11.0.0.107"
              }
            }
        ]
      },
      "ignoreExistingPath" : true,
      "useResultAsEro"     : true,
      "maxIterations" : 1000
    }

    The response is:

    {
        "result": {
            "requestId": "fa87b57e-6edc-45a8-8b73-b06c79289f87",
            "status": "running",
            "maxIterations": 1000,
            "iterationsRun": 0
        }
    }
  • The following example shows P2MP Diverse Tree Design optimization using sites. Note that the values in the "name" field under "P2MPGroup" and under "diverseP2MPGroup" are required to be different from each other.

    {
       "P2MPGroup":{
          "name":"tch0tree",
          "from":{
             "topoObjectType":"ipv4",
             "address":"11.0.0.101"
          },
          "plannedProperties":{
             "bandwidth":"10k",
             "design":{
                "diversityGroup":"h0h1"
             }
          },
          "lsps":[
             {
                "name":"tch0tree-101104",
                "to":{
                   "topoObjectType":"ipv4",
                   "address":"11.0.0.104"
                }
             },
             {
                "name":"tch0tree-101107",
                "to":{
                   "topoObjectType":"ipv4",
                   "address":"11.0.0.107"
                }
             }
          ]
       },
       "diverseP2MPGroup":{
          "name":"tch1tree",
          "from":{
             "topoObjectType":"ipv4",
             "address":"11.0.0.102"
          },
          "plannedProperties":{
             "bandwidth":"10k",
             "design":{
                "diversityGroup":"h0h1"
             }
          },
          "lsps":[
             {
                "name":"tch1tree-102106",
                "to":{
                   "topoObjectType":"ipv4",
                   "address":"11.0.0.106"
                }
             },
             {
                "name":"tch1tree-102107",
                "to":{
                   "topoObjectType":"ipv4",
                   "address":"11.0.0.107"
                }
             }
          ]
       },
       "ignoreExistingPath":true,
       "useResultAsEro":true,
       "maxIterations":1000,
       "sites":[
          {
             "site":"site A",
             "nodes":[
                {"nodeIndex": 4},{"nodeIndex": 6}
             ]
          }
       ]
    }

    The response is:

    {
        "result": {
            "requestId": "f8c290ef-e850-45bb-9fd9-30089b095daa",
            "status": "running",
            "maxIterations": 1000,
            "iterationsRun": 0
        }
    }
  • The following example shows P2MP Diverse Tree Design optimization with bandwidth calendaring. Note that the values in the "name" field under "P2MPGroup" and under "diverseP2MPGroup" are required to be different from each other.

    {
    
      "P2MPGroup": {
        "name": "hhbwcaltree",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.102"
        },
        "plannedProperties": {
          "bandwidth": "99k",
          "bandwidthCalendar":{
          	"startTime": "20180430T0900",
          	"endTime": "20180430T0905"
          },
          "design": {
            "diversityGroup": "hzbw"
          }
        },
        "lsps": [
            {
              "name": "hhbwcaltree-102104",
              "to" : {
                "topoObjectType": "ipv4",
                "address": "11.0.0.104"
              }
            },
            {
              "name": "hhbwcaltree-102107",
              "to" : {
                "topoObjectType": "ipv4",
                "address": "11.0.0.107"
              }
            }
        ]
      },
      "diverseP2MPGroup": {
        "name": "zzbwcaltree",
        "from": {
            "topoObjectType": "ipv4",
            "address": "11.0.0.102"
        },
        "plannedProperties": {
          "bandwidth": "99k",
          "bandwidthCalendar":{
          	"startTime": "20180430T0900",
          	"endTime": "20180430T0905"
          },
          "design": {
            "diversityGroup": "hzbw"
          }
        },
        "lsps": [
            {
              "name": "zzbwcaltree-102104",
              "to" : {
                "topoObjectType": "ipv4",
                "address": "11.0.0.104"
              }
            },
            {
              "name": "zzbwcaltree-102107",
              "to" : {
                "topoObjectType": "ipv4",
                "address": "11.0.0.107"
              }
            }
        ]
      },
      "ignoreExistingPath" : true,
      "useResultAsEro"     : true,
      "maxIterations" : 1000
    }

    The response is:

    {
        "result": {
            "requestId": "f669b929-d82a-4bda-86bf-3ff623a794c9",
            "status": "running",
            "maxIterations": 1000,
            "iterationsRun": 0
        }
    }
  • The following example shows P2MP Diverse Tree Design optimization with minimum diversity level = site. Minimum diversity level options are site, srlg and link. Note that the values in the "name" field under "P2MPGroup" and under "diverseP2MPGroup" are required to be different from each other.

    {
       "P2MPGroup":{
          "name":"tcb0pcepmindiv",
          "from":{
             "topoObjectType":"ipv4",
             "address":"11.0.0.101"
          },
          "plannedProperties":{
             "bandwidth":"10",
             "design":{
                "minimumDiversityLevel":"site",
                "diversityGroup":"tcb0tcb1pcepmindiv"
             }
          },
          "lsps":[
             {
                "to":{
                   "topoObjectType":"ipv4",
                   "address":"11.0.0.104"
                }
             },
             {
                "to":{
                   "topoObjectType":"ipv4",
                   "address":"11.0.0.107"
                }
             }
          ]
       },
       "diverseP2MPGroup":{
          "name":"tcb1pcepmindiv",
          "from":{
             "topoObjectType":"ipv4",
             "address":"11.0.0.101"
          },
          "plannedProperties":{
             "bandwidth":"10",
             "design":{
                "minimumDiversityLevel":"site",
                "diversityGroup":"tcb0tcb1pcepmindiv"
             }
          },
          "lsps":[
             {
                "to":{
                   "topoObjectType":"ipv4",
                   "address":"11.0.0.104"
                }
             },
             {
                "to":{
                   "topoObjectType":"ipv4",
                   "address":"11.0.0.107"
                }
             }
          ]
       },
       "creationConfigurationMethod":"PCEP",
       "ignoreExistingPath":true,
       "useResultAsEro":true,
       "maxIterations":1000
    }

    The response is:

    {
       u'result':{
          u'status':u'running',
          u'maxIterations':1000,
          u'requestId':u'2862ddb5-2845-4971-8cd1-d8c9d56c281a',
          u'iterationsRun':0
       }
    }
  • The following example shows P2MP Diverse Tree Design optimization with CE and Site nodes as destination nodes. CE and Sites nodes are SiteA1, SiteZ and CEY2. Please note that currently combination of PE and CE/Site nodes as destinations nodes in a P2MP tree is not supported. Use can either create P2MP tree with all destination nodes consist of PE nodes only or consist of CE/Site nodes only. It cannot be combination of both (mixture of PE and CE/Sites nodes) in a single tree. Note that the values in the "name" field under "P2MPGroup" and under "diverseP2MPGroup" are required to be different from each other.

    {
       "P2MPGroup":{
          "name":"Atree",
          "from":{
             "topoObjectType":"ipv4",
             "address":"10.0.0.1"
          },
          "plannedProperties":{
             "bandwidth":"10k",
             "design":{
                "diversityGroup":"AB"
             }
          },
          "lsps":[
             {
                "to":{
                   "topoObjectType":"ipv4",
                   "address":"SiteA1"
                }
             },
             {
                "to":{
                   "topoObjectType":"ipv4",
                   "address":"SiteZ"
                }
             },
             {
                "to":{
                   "topoObjectType":"ipv4",
                   "address":"CEY2"
                }
             }
          ]
       },
       "diverseP2MPGroup":{
          "name":"Btree",
          "from":{
             "topoObjectType":"ipv4",
             "address":"10.0.0.1"
          },
          "plannedProperties":{
             "bandwidth":"10k",
             "design":{
                "diversityGroup":"AB"
             }
          },
          "lsps":[
             {
                "to":{
                   "topoObjectType":"ipv4",
                   "address":"SiteA1"
                }
             },
             {
                "to":{
                   "topoObjectType":"ipv4",
                   "address":"SiteZ"
                }
             },
             {
                "to":{
                   "topoObjectType":"ipv4",
                   "address":"CEY2"
                }
             }
          ]
       },
       "creationConfigurationMethod":"PCEP",
       "ignoreExistingPath":true,
       "useResultAsEro":true,
       "maxIterations":1000
    }

    The response is:

    {
        "result": {
            "requestId": "4dde363c-abc0-471f-b76c-1b6df88bd9c9",
            "status": "running",
            "maxIterations": 1000,
            "iterationsRun": 0
        }
    }

Response example:

The responses are shown per example in the request section. In general the response is a JSON document conforming to rpcs.json#/definitions/diverseTreeResult.

GET
topology/v2/rpc/diverseTreeDesign
Get Simulation optimization RPC list

Return the list of simulation optimization RPC list.

 

The response returned by the server conforms to: rpcs.json#/definitions/diverseTreeResultList .

Normal response codes
200
Response example:
{
    "topologyIndex": "1",
    "rpcRequestIdList": [
        "f520e4e0-dcd7-4698-9575-6a2bcc8fd54b",
        "45eefe15-a668-4521-9d26-6159753fa948",
        "a9995c11-a5a7-4bf1-a0b1-dc9f65d38d19",
        "b0fa56f2-e178-4257-be47-ab12aab6043c",
        "cf168ccc-8bad-4c5d-8037-3dd5c6af7f53",
        "c4de3065-1b01-4a23-8aae-7a7860e5c4dc",
        "a39291c7-39de-4013-baab-8fa498c072fd",
        "69747e68-8a56-4b55-b36b-5167dd45d883",
        "248a2c33-f0c4-4e11-9275-8aa0aedad7df",
        "6dbe12b1-0cdc-4f85-8862-cf50aaa5b15b",
        "a27b2484-2181-457d-9424-1aa19cf6bcd0",
        "0f66bdf1-0346-49b8-956a-d6995446d861",
        "8fa7d9aa-8e42-4a44-bf93-f936df0ad084",
        "58f4da42-c20d-46b5-951d-bbdc80491da7"
    ]
}

This operation does not accept a request body.

GET
topology/v2/rpc/diverseTreeDesign/​{uuid}​
Get a Specific Simulation optimization RPC Result

Return the details of specified simulation optimization RPC result.

 

The response returned by the server conforms to: rpcs.json#/definitions/diverseTreeResult .

Normal response codes
200
Request parameters
Parameter Style Type Description
uuid URI xsd:string

rpc id.

Response example:
{
    "result": {
        "requestId": "f520e4e0-dcd7-4698-9575-6a2bcc8fd54b",
        "status": "partial",
        "P2MPGroup": {
            "name": "alphatree",
            "topoObjectType": "p2mpGroup",
            "from": {
                "topoObjectType": "ipv4",
                "address": "11.0.0.101"
            },
            "lsps": [
                {
                    "operationalStatus": "Unknown",
                    "plannedProperties": {
                        "bandwidth": "99K",
                        "setupPriority": 7,
                        "holdingPriority": 0,
                        "calculatedEro": [
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.101.105.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.105.106.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.102.106.1",
                                "loose": false
                            }
                        ],
                        "routingStatus": "Up",
                        "pathName": "alphatree-101102_p0",
                        "adminStatus": "Up",
                        "design": {
                            "diversityGroup": "TWINS"
                        },
                        "ero": [
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.101.105.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.105.106.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.102.106.1",
                                "loose": false
                            }
                        ],
                        "correlatedRROHopCount": 3
                    },
                    "name": "alphatree-101102",
                    "from": {
                        "topoObjectType": "ipv4",
                        "address": "11.0.0.101"
                    },
                    "pathType": "primary",
                    "to": {
                        "topoObjectType": "ipv4",
                        "address": "11.0.0.102"
                    },
                    "lspIndex": 68,
                    "controlType": "PCC",
                    "provisioningType": "RSVP",
                    "p2mpName": "alphatree"
                },
                {
                    "operationalStatus": "Unknown",
                    "plannedProperties": {
                        "bandwidth": "99K",
                        "setupPriority": 7,
                        "holdingPriority": 0,
                        "calculatedEro": [
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.101.105.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.105.107.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.103.107.1",
                                "loose": false
                            }
                        ],
                        "routingStatus": "Up",
                        "pathName": "alphatree-101103_p0",
                        "adminStatus": "Up",
                        "design": {
                            "diversityGroup": "TWINS"
                        },
                        "ero": [
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.101.105.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.105.107.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.103.107.1",
                                "loose": false
                            }
                        ],
                        "correlatedRROHopCount": 3
                    },
                    "name": "alphatree-101103",
                    "from": {
                        "topoObjectType": "ipv4",
                        "address": "11.0.0.101"
                    },
                    "pathType": "primary",
                    "to": {
                        "topoObjectType": "ipv4",
                        "address": "11.0.0.103"
                    },
                    "lspIndex": 69,
                    "controlType": "PCC",
                    "provisioningType": "RSVP",
                    "p2mpName": "alphatree"
                },
                {
                    "operationalStatus": "Unknown",
                    "plannedProperties": {
                        "bandwidth": "99K",
                        "setupPriority": 7,
                        "holdingPriority": 0,
                        "calculatedEro": [
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.101.105.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.105.107.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.104.107.1",
                                "loose": false
                            }
                        ],
                        "routingStatus": "Up",
                        "pathName": "alphatree-101104_p0",
                        "adminStatus": "Up",
                        "design": {
                            "diversityGroup": "TWINS"
                        },
                        "ero": [
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.101.105.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.105.107.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.104.107.1",
                                "loose": false
                            }
                        ],
                        "correlatedRROHopCount": 3
                    },
                    "name": "alphatree-101104",
                    "from": {
                        "topoObjectType": "ipv4",
                        "address": "11.0.0.101"
                    },
                    "pathType": "primary",
                    "to": {
                        "topoObjectType": "ipv4",
                        "address": "11.0.0.104"
                    },
                    "lspIndex": 70,
                    "controlType": "PCC",
                    "provisioningType": "RSVP",
                    "p2mpName": "alphatree"
                }
            ]
        },
        "diverseP2MPGroup": {
            "name": "betatree",
            "topoObjectType": "p2mpGroup",
            "from": {
                "topoObjectType": "ipv4",
                "address": "11.0.0.102"
            },
            "lsps": [
                {
                    "operationalStatus": "Unknown",
                    "plannedProperties": {
                        "bandwidth": "99K",
                        "setupPriority": 7,
                        "holdingPriority": 0,
                        "calculatedEro": [
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.102.105.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.101.105.1",
                                "loose": false
                            }
                        ],
                        "routingStatus": "Up",
                        "pathName": "betatree-102101_p0",
                        "adminStatus": "Up",
                        "design": {
                            "diversityGroup": "TWINS"
                        },
                        "ero": [
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.102.105.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.101.105.1",
                                "loose": false
                            }
                        ],
                        "correlatedRROHopCount": 2
                    },
                    "name": "betatree-102101",
                    "from": {
                        "topoObjectType": "ipv4",
                        "address": "11.0.0.102"
                    },
                    "pathType": "primary",
                    "to": {
                        "topoObjectType": "ipv4",
                        "address": "11.0.0.101"
                    },
                    "lspIndex": 65,
                    "controlType": "PCC",
                    "provisioningType": "RSVP",
                    "p2mpName": "betatree"
                },
                {
                    "operationalStatus": "Unknown",
                    "plannedProperties": {
                        "bandwidth": "99K",
                        "setupPriority": 7,
                        "holdingPriority": 0,
                        "calculatedEro": [
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.102.106.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.106.107.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.103.107.1",
                                "loose": false
                            }
                        ],
                        "routingStatus": "Up",
                        "pathName": "betatree-102103_p0",
                        "adminStatus": "Up",
                        "design": {
                            "diversityGroup": "TWINS"
                        },
                        "ero": [
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.102.106.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.106.107.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.103.107.1",
                                "loose": false
                            }
                        ],
                        "correlatedRROHopCount": 3
                    },
                    "name": "betatree-102103",
                    "from": {
                        "topoObjectType": "ipv4",
                        "address": "11.0.0.102"
                    },
                    "pathType": "primary",
                    "to": {
                        "topoObjectType": "ipv4",
                        "address": "11.0.0.103"
                    },
                    "lspIndex": 66,
                    "controlType": "PCC",
                    "provisioningType": "RSVP",
                    "p2mpName": "betatree"
                },
                {
                    "operationalStatus": "Unknown",
                    "plannedProperties": {
                        "bandwidth": "99K",
                        "setupPriority": 7,
                        "holdingPriority": 0,
                        "calculatedEro": [
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.102.106.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.104.106.1",
                                "loose": false
                            }
                        ],
                        "routingStatus": "Up",
                        "pathName": "betatree-102104_p0",
                        "adminStatus": "Up",
                        "design": {
                            "diversityGroup": "TWINS"
                        },
                        "ero": [
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.102.106.2",
                                "loose": false
                            },
                            {
                                "topoObjectType": "ipv4",
                                "address": "11.104.106.1",
                                "loose": false
                            }
                        ],
                        "correlatedRROHopCount": 2
                    },
                    "name": "betatree-102104",
                    "from": {
                        "topoObjectType": "ipv4",
                        "address": "11.0.0.102"
                    },
                    "pathType": "primary",
                    "to": {
                        "topoObjectType": "ipv4",
                        "address": "11.0.0.104"
                    },
                    "lspIndex": 67,
                    "controlType": "PCC",
                    "provisioningType": "RSVP",
                    "p2mpName": "betatree"
                }
            ]
        }
    },
    "request": {
        "P2MPGroup": {
            "from": {
                "topoObjectType": "ipv4",
                "address": "11.0.0.101"
            },
            "name": "alphatree"
        },
        "diverseP2MPGroup": {
            "from": {
                "topoObjectType": "ipv4",
                "address": "11.0.0.102"
            },
            "name": "betatree"
        },
        "ignoreExistingPath": true,
        "useResultAsEro": true
    }
}

This operation does not accept a request body.

POST
topology/v2/rpc/diverseTreeDesign
P2MP Diverse Tree Design optimization with flow mapping

Create 2 P2MP trees and perform Diverse P2MP Tree Design with flow mapping.

 

The request body must follow the schema rpcs.json#/definitions/diverseTreeRequest. The response returned by the server conforms to: rpcs.json#/definitions/diverseTreeResult.

Normal response codes
200
Request example:

The following example shows Diverse P2MP Diverse Tree Design optimization with flow mapping. Note that the values in the "name" field under "P2MPGroup" and under "diverseP2MPGroup" are required to be different from each other.

{
	"P2MPGroup": {
		"creationConfigurationMethod": "PCEP",
		"name": "alphatree",
		"from": {"topoObjectType": "ipv4","address": "11.0.0.105"},
		"plannedProperties": {
			"bandwidth": "99k",
			"flows": [
				{
					"topoObjectType": "flow",
					"vpn": {"topoObjectType": "vpnId", "rd": "11.0.0.105:65000"},
					"source": {"topoObjectType": "prefix", "address": "11.0.0.101", "length": 32},
					"group": {"topoObjectType": "prefix", "address": "239.2.2.2", "length": 32}
				}
			],
			"design": {"diversityGroup": "Omega_diverse_group"}
		},
		"lsps": [
			{"to": {"topoObjectType": "ipv4","address": "11.0.0.102"}},
			{"to": {"topoObjectType": "ipv4","address": "11.0.0.106"}},
			{"to": {"topoObjectType": "ipv4","address": "11.0.0.107"}}
		]
	},
	"diverseP2MPGroup": {
		"creationConfigurationMethod": "PCEP",
		"name": "Betatree",
		"from": {"topoObjectType": "ipv4","address": "11.0.0.105"},
		"plannedProperties": {
			"bandwidth": "99k",
			"flows": [
				{
					"topoObjectType": "flow",
					"vpn": {"topoObjectType": "vpnId", "rd": "11.0.0.105:65000"},
					"source": {"topoObjectType": "prefix", "address": "11.0.0.101", "length": 32},
					"group": {"topoObjectType": "prefix", "address": "239.3.3.3", "length": 32}
				}
			],
			"design": {"diversityGroup": "Omega_diverse_group"}
		},
		"lsps": [
			{"to": {"topoObjectType": "ipv4","address": "11.0.0.102"}},
			{"to": {"topoObjectType": "ipv4","address": "11.0.0.106"}},
			{"to": {"topoObjectType": "ipv4","address": "11.0.0.107"}}
		]
	},
	"creationConfigurationMethod": "PCEP",
	"maxIterations": 1000
}

Response example:
{
	"result": {
		"requestId": "6fc5ebe6-7763-4db7-a80b-0ca66e18ef66",
		"status": "running",
		"maxIterations": 1000,
		"iterationsRun": 0
	}
}

Notification examples

Node events

Node update example

                        {"action": "update", "notificationType": "node", "object":   {
    "topoObjectType": "node","topologyIndex": 1,"id": "192.0.2.1","nodeIndex": 1,"layer": "IP","AutonomousSystem": {"asNumber": 11},
    "protocols": {"ISIS": {
        "routerId": "192.0.2.1",
        "TERouterId": "192.0.2.1",
        "isoAddress": "0110.0000.0101",
        "area": "490011"},
      "PCEP": {"operationalStatus": "Up","pccAddress": "192.0.2.1"}}}}

                    

Node removal example

                        {"action": "remove", "notificationType": "node", "object": {"nodeIndex": 1, "topologyIndex": 1, "id": "192.0.2.1", "topoObjectType": "node"}}

                    

Link events

Link update example

                        {"action": "remove", "notificationType": "link","object": {
    "topoObjectType": "link","topologyIndex": 1,
    "linkIndex": 1,"id": "L192.0.2.13_192.0.2.14",   
    "endA": {
        "topoObjectType": "interface","TEcolor": 0, "TEmetric": 10,	"delay" : 600,
        "bandwidth": 40000000000,
        "node"       : {"id": "192.0.2.3","topoObjectType": "node","topologyIndex": 1},
        "ipv4Address": {"address": "192.0.2.13","topoObjectType": "ipv4"},
        "protocols": {"ISIS": { "TEMetric": 10,"level": "L2"},
                      "RSVP": {"bandwidth": 40000000000}},        
        "unreservedBw": [39970000896, 39970000896, 39970000896, 39469998080, 39469998080, 39469998080, 39469998080, 39469998080]
    },
    "endZ": {
        "topoObjectType": "interface","TEcolor": 0, "TEmetric": 10,	"delay" : 600,
        "bandwidth": 40000000000,
        "node"       : {"id": "192.0.2.7","topoObjectType": "node","topologyIndex": 1},
        "ipv4Address": {"address": "192.0.2.14","topoObjectType": "ipv4"},
        "protocols": {"ISIS": { "TEMetric": 10,"level": "L2"},
                      "RSVP": {"bandwidth": 40000000000}}, 
        "unreservedBw": [39289999360, 38790000640, 38790000640, 38790000640, 38790000640, 38790000640, 38790000640, 38790000640]
    },        
    "operationalStatus": "Up"}}


                    

Link removal example

                        {"action": "remove", "object": {"id": "192.0.2.13", "topologyIndex": 1, "linkIndex": 1, "topoObjectType": "link"}, "notificationType": "link"},

                    

TE-LSPs events

LSP update example

                        {"action": "remove", "notificationType": "lsp","object":{
    "lspIndex": 2,
    "name": "LP_101_103",
    "from": {"address": "62.0.0.101", "topoObjectType": "ipv4"},
    "to":   {"address": "62.0.0.103", "topoObjectType": "ipv4"},
    "controlType": "Delegated",
    "plannedProperties": {
	"bandwidth": "10M",
	"setupPriority": 7,
	"holdingPriority": 0,
	"calculatedEro": [
	    {"topoObjectType": "ipv4","address": "62.101.105.2","loose": false},
	    {"topoObjectType": "ipv4","address": "62.102.105.1","loose": false},
	    {"topoObjectType": "ipv4","address": "62.102.106.2","loose": false},
	    {"topoObjectType": "ipv4","address": "62.104.106.1","loose": false},
	    {"topoObjectType": "ipv4","address": "62.104.107.2","loose": false},
	    {"topoObjectType": "ipv4","address": "62.103.107.1","loose": false}
	],
	"pathName": "Path_Node101_Node103_Strict_1",
	"adminStatus": "Up",
	"routingStatus": "Up",
	"lastStatusString": "<Active PCS initialization"
    },
    "liveProperties": {
        "adminStatus": "Up",
        "bandwidth": 10000000,
        "ero": [
            {"address": "62.101.105.2", "loose": false, "topoObjectType": "ipv4" },
            {"address": "62.105.107.2", "loose": false, "topoObjectType": "ipv4" },
            {"address": "62.103.107.1", "loose": false, "topoObjectType": "ipv4" }
        ],
        "holdingPriority": 0,
        "metric": 40,
        "pathName": "Path_Node101_Node103_Strict_1",
        "rro": [
            {"address": "62.0.0.105",   "protectionAvailable": true, "protectionInUse": false, "topoObjectType": "ipv4"},
            {"address": "62.101.105.2", "protectionAvailable": true, "protectionInUse": false, "topoObjectType": "ipv4"},
            {"address": "62.0.0.107",   "protectionAvailable": false, "protectionInUse": false, "topoObjectType": "ipv4"},
            {"address": "62.105.107.2", "protectionAvailable": false, "protectionInUse": false, "topoObjectType": "ipv4"},
            {"address": "62.0.0.103",   "protectionAvailable": false, "protectionInUse": false, "topoObjectType": "ipv4"},
            {"address": "62.103.107.1", "protectionAvailable": false, "protectionInUse": false, "topoObjectType": "ipv4"}
        ],
        "setupPriority": 7
    },
    "operationalStatus": "Active",
    "pathType": "primary",
    "tunnelId": 56614
}}

                    

LSP removal example

                        {"action": "remove", "object": {"lspIndex": 74}, "notificationType": "lsp"},

                    

P2MP Groups

P2MP update example

The following example illustrates updating a P2MP group with a new LSP. The result is, in fact, two updates, one for the group and one for the newly added LSP. The results are similar when an LSP is removed from the group; the group is updated (or removed if no LSP remains), then the member itself is removed.


                        {"action": "update", "object": {"from": {"address": "11.0.0.101", "topoObjectType": "ipv4"}, "name": "1-d", "lsps": [{"lspIndex": 90}, {"lspIndex": 91}], "p2mpIndex": 184549477, "topoObjectType": "p2mpGroup", "p2mpGroupIndex": 8}, "notificationType": "p2mpGroup"},

                    

                        {"action": "add", "object": {"p2mpName": "1-d", "from": {"address": "11.0.0.101", "topoObjectType": "ipv4"}, "name": "p2mpMember-02", "p2mpIndex": 184549477, "liveProperties": {"adminStatus": "Up", "rro": [{"address": "11.101.105.2", "protectionAvailable": false, "protectionInUse": false, "topoObjectType": "ipv4"}, {"address": "11.105.107.2", "protectionAvailable": false, "protectionInUse": false, "topoObjectType": "ipv4"}, {"address": "11.104.107.1", "protectionAvailable": false, "protectionInUse": false, "topoObjectType": "ipv4"}], "setupPriority": 7, "metric": 0, "bandwidth": 0, "holdingPriority": 0, "ero": []}, "pathType": "primary", "to": {"address": "11.0.0.104", "topoObjectType": "ipv4"}, "controller": "External", "operationalStatus": "Up", "controlType": "PCC", "lspIndex": 91}, "notificationType": "lsp"},

                    

P2MP group removal example

When the Last LSP of the P2MP group is removed, the P2MP group is removed.

NOTE: LSP removal notification is described in the LSP notification examples.


                        {"action": "remove", "object": {"p2mpGroupIndex": 8, "topologyIndex": 1, "topoObjectType": "p2mpGroup"}, "notificationType": "p2mpGroup"},

                    

Node events

Node update example

                        {"action": "update", "notificationType": "node", "object":   {
    "topoObjectType": "node","topologyIndex": 1,"id": "192.0.2.1","nodeIndex": 1,"layer": "IP","AutonomousSystem": {"asNumber": 11},
    "protocols": {"ISIS": {
        "routerId": "192.0.2.1",
        "TERouterId": "192.0.2.1",
        "isoAddress": "0110.0000.0101",
        "area": "490011"},
      "PCEP": {"operationalStatus": "Up","pccAddress": "192.0.2.1"}}}}

                    

Node removal example

                        {"action": "remove", "notificationType": "node", "object": {"nodeIndex": 1, "topologyIndex": 1, "id": "192.0.2.1", "topoObjectType": "node"}}

                    

Topology events

Topology reset example

                        {"action": "add", "object": {"topoObjectType" : "topology", "topologyIndex" : 1}, "notificationType": "topology"}



                    

High Availability events

Node status update

                        {"action": "add","notificationType": "host","object" :{
    "hostname" : "node1.northstar.example.net",
    "status" : "Up",
    "role" : "Active"
}}