Graph API Use the Graph API to read existing graph and graph containers in the system and is an api/v2 endpoint. If not otherwise specified, the Content-Type of the request and response is application/json. Resource Method Description /graphs GET Retrieves the metadata of all registered graph containers. /graphs/{containerid} GET Retrieve the container identified by {containerid}. Returns a 404 if a graph container with {containerid} does not exist. /graphs/{containerid}/{namespace} GET Retrieve the graph with namespace {namespace} from the container {containerid}. Returns a 404 if either the {containerid} does not exist or the container does not contain any graphs with namespace {namespace}. /graphs/{containerid}/{namespace} POST Retrieve the view of the graph with namespace {namespace} from the container {containerid}. The body must contain the query to create the view, e.g., { "semanticZoomLevel": 1, "verticesInFocus": []} If no semanticZoomLevel is provided, 1 is assumed. If no verticesInFocus is provided, the default focus of the graph is used. Valid values for verticesInFocus are vertex references (namespace:id tuple, e.g. dummy:1). At the moment, the context of a search must always be a concrete namespace and can never be over all graphs or containers. Resource Method Description /graphs/search/suggestions/{namespace}?s={search} GET Provides suggestions in the context of {namespace} for the input {search}. Each suggestion has the following properties: context: The context of the suggestion, e.g., Node for a node, id: A unique identifier of the representing element of this suggestion, e.g., node id, label: A human-readable label, e.g., node label, provider: The source of the suggestion. /graphs/search/results/{namespace}?providerId={providerid}&criteria={criteria}&context={context} GET Resolves a suggestion to actual vertices. The values for {providerid} and {context} are defined in the suggestion. The {criteria} is the {id} property of the suggestion. The API lets you query any container and graph via REST, but in most cases you should query only for a graph view. Examples Retrieve all graph container information Request curl -X GET -u admin:admin http://localhost:8980/opennms/api/v2/graphs Response [ { "description": "Displays all defined applications and their calculated states.", "graphs": [ { "description": "Displays all defined applications and their calculated states.", "label": "Application Graph", "namespace": "application" } ], "id": "application", "label": "Application Graph" }, { "description": "Displays the hierarchy of the defined Business Services and their computed operational states.", "graphs": [ { "description": "Displays the hierarchy of the defined Business Services and their computed operational states.", "label": "Business Service Graph", "namespace": "bsm" } ], "id": "bsm", "label": "Business Service Graph" }, { "description": "This Topology Provider displays the topology information discovered by the Enhanced Linkd daemon. It uses the SNMP information of several protocols like OSPF, ISIS, LLDP and CDP to generate an overall topology.", "graphs": [ { "description": "This Topology Provider displays the topology information discovered by the Enhanced Linkd daemon. It uses the SNMP information of several protocols like OSPF, ISIS, LLDP and CDP to generate an overall topology.", "label": "Enhanced Linkd Topology Provider", "namespace": "nodes" } ], "id": "nodes", "label": "Enhanced Linkd Topology Provider" }, { "description": "The VMware Topology Provider displays the infrastructure information gathered by the VMware Provisioning process.", "graphs": [ { "description": "The VMware Topology Provider displays the infrastructure information gathered by the VMware Provisioning process.", "label": "VMware Topology Provider", "namespace": "vmware" } ], "id": "vmware", "label": "VMware Topology Provider" } ] Retrieve graph container 'bsm' Request curl -X GET -u admin:admin http://localhost:8980/opennms/api/v2/graphs/bsm Response { "description": "Displays the hierarchy of the defined Business Services and their computed operational states.", "graphs": [ { "defaultFocus": { "type": "SELECTION", "vertexIds": [] }, "description": "Displays the hierarchy of the defined Business Services and their computed operational states.", "edges": [], "label": "Business Service Graph", "namespace": "bsm", "vertices": [] } ], "id": "bsm", "label": "Business Service Graph" } Retrieve graph 'layer3-network' in container 'layer3-topology' Request curl -X GET -u admin:admin http://localhost:8980/opennms/api/v2/graphs/layer3-topology/layer3-network Response { "defaultFocus": { "type": "ALL", "vertexIds": [ { "id": "horizon", "namespace": "layer3-network" }, { "id": "database", "namespace": "layer3-network" }, { "id": "r01", "namespace": "layer3-network" }, { "id": "r03", "namespace": "layer3-network" }, { "id": "r02", "namespace": "layer3-network" }, { "id": "location-r02", "namespace": "layer3-network" }, { "id": "net-location", "namespace": "layer3-network" }, { "id": "location-r03", "namespace": "layer3-network" }, { "id": "net-central", "namespace": "layer3-network" }, { "id": "location-r01", "namespace": "layer3-network" }, { "id": "minion-01", "namespace": "layer3-network" } ] }, "edges": [ { "id": "layer3-network:database->layer3-network:net-central", "namespace": "layer3-network", "source": { "id": "database", "namespace": "layer3-network" }, "target": { "id": "net-central", "namespace": "layer3-network" } }, { "id": "layer3-network:horizon->layer3-network:net-central", "namespace": "layer3-network", "source": { "id": "horizon", "namespace": "layer3-network" }, "target": { "id": "net-central", "namespace": "layer3-network" } }, { "id": "layer3-network:location-r01->layer3-network:net-location", "namespace": "layer3-network", "source": { "id": "location-r01", "namespace": "layer3-network" }, "target": { "id": "net-location", "namespace": "layer3-network" } }, { "id": "layer3-network:location-r02->layer3-network:net-location", "namespace": "layer3-network", "source": { "id": "location-r02", "namespace": "layer3-network" }, "target": { "id": "net-location", "namespace": "layer3-network" } }, { "id": "layer3-network:location-r03->layer3-network:net-location", "namespace": "layer3-network", "source": { "id": "location-r03", "namespace": "layer3-network" }, "target": { "id": "net-location", "namespace": "layer3-network" } }, { "id": "layer3-network:minion-01->layer3-network:net-central", "namespace": "layer3-network", "source": { "id": "minion-01", "namespace": "layer3-network" }, "target": { "id": "net-central", "namespace": "layer3-network" } }, { "id": "layer3-network:minion-01->layer3-network:net-location", "namespace": "layer3-network", "source": { "id": "minion-01", "namespace": "layer3-network" }, "target": { "id": "net-location", "namespace": "layer3-network" } }, { "id": "layer3-network:r01->layer3-network:net-central", "namespace": "layer3-network", "source": { "id": "r01", "namespace": "layer3-network" }, "target": { "id": "net-central", "namespace": "layer3-network" } }, { "id": "layer3-network:r02->layer3-network:net-central", "namespace": "layer3-network", "source": { "id": "r02", "namespace": "layer3-network" }, "target": { "id": "net-central", "namespace": "layer3-network" } }, { "id": "layer3-network:r03->layer3-network:net-central", "namespace": "layer3-network", "source": { "id": "r03", "namespace": "layer3-network" }, "target": { "id": "net-central", "namespace": "layer3-network" } } ], "enrichment.resolveNodes": "true", "focus-strategy": "ALL", "id": "layer3-topology", "namespace": "layer3-network", "vertex-status-provider": "true", "vertices": [ { "foreignID": "database", "foreignSource": "opennms-stack", "iconKey": "database", "id": "database", "label": "database", "namespace": "layer3-network" }, { "foreignID": "horizon", "foreignSource": "opennms-stack", "iconKey": "opennms_server", "id": "horizon", "label": "horizon", "namespace": "layer3-network" }, { "foreignID": "location-r01", "foreignSource": "bgp-routers", "iconKey": "server", "id": "location-r01", "label": "location-r01", "namespace": "layer3-network" }, { "foreignID": "location-r02", "foreignSource": "bgp-routers", "iconKey": "server", "id": "location-r02", "label": "location-r02", "namespace": "layer3-network" }, { "foreignID": "location-r03", "foreignSource": "bgp-routers", "iconKey": "server", "id": "location-r03", "label": "location-r03", "namespace": "layer3-network" }, { "foreignID": "minion-01", "foreignSource": "Minions", "id": "minion-01", "label": "minion-01", "namespace": "layer3-network" }, { "iconKey": "vmware-network", "id": "net-central", "label": "192.168.10.0/24", "namespace": "layer3-network" }, { "iconKey": "vmware-network", "id": "net-location", "label": "192.168.50.0/24", "namespace": "layer3-network" }, { "foreignID": "r01", "foreignSource": "bgp-routers", "iconKey": "server", "id": "r01", "label": "r01", "namespace": "layer3-network" }, { "foreignID": "r02", "foreignSource": "bgp-routers", "iconKey": "server", "id": "r02", "label": "r02", "namespace": "layer3-network" }, { "foreignID": "r03", "foreignSource": "bgp-routers", "iconKey": "server", "id": "r03", "label": "r03", "namespace": "layer3-network" } ] } Get a view of the graph Request curl -X POST -u admin:admin -H "Content-Type: application/json" -d '{ "semanticZoomLevel": 1, "verticesInFocus": ["horizon"] }' http://localhost:8980/opennms/api/v2/graphs/layer3-topology/layer3-network Response { "edges": [ { "id": "layer3-network:horizon->layer3-network:net-central", "namespace": "layer3-network", "source": { "id": "horizon", "namespace": "layer3-network" }, "target": { "id": "net-central", "namespace": "layer3-network" } } ], "enrichment.resolveNodes": "true", "focus": { "semanticZoomLevel": 1, "vertices": [ "horizon" ] }, "focus-strategy": "ALL", "id": "layer3-topology", "namespace": "layer3-network", "vertex-status-provider": "true", "vertices": [ { "foreignID": "horizon", "foreignSource": "opennms-stack", "iconKey": "opennms_server", "id": "horizon", "label": "horizon", "namespace": "layer3-network", "nodeInfo": { "categories": [], "foreignId": "horizon", "foreignSource": "opennms-stack", "id": 90, "ipInterfaces": [ { "address": "/192.168.10.4", "managed": true, "primary": false } ], "label": "horizon", "location": "Default" } }, { "iconKey": "vmware-network", "id": "net-central", "label": "192.168.10.0/24", "namespace": "layer3-network" } ] } Search Suggestions Request curl -X GET -u admin:admin http://localhost:8980/opennms/api/v2/graphs/search/suggestions/layer3-network?s=horizon Response [ { "context": "GenericVertex", "id": "horizon", "label": "horizon", "provider": "LabelSearchProvider" }, { "context": "Node", "id": "90", "label": "horizon", "provider": "NodeSearchProvider" } ] Search Results Request curl -X GET -u admin:admin http://localhost:8980/opennms/api/v2/graphs/search/results/layer3-network?providerId=NodeSearchProvider&context=Node&criteria=90 Response [ { "id": "horizon", "namespace": "layer3-network" } ] Foreign Sources Groups