The API described here is a draft; there will very likely be some differences in the finalized implementation. This page will reflect the changes when they come. 

The following is the summary of the ONOS REST API.

Please note that the all endpoints need to be prefixed with: http://<controller IP>:8181/onos/v1/

Example: http://127.0.0.1:8181/onos/v1/devices if ONOS is running on your local machine.

The entries in bold are currently implemented.

Device

GET /devicesLists all infrastructure devices.
GET /devices/{deviceId}Lists details of a specific infrastructure device.
GET /devices/{deviceId}/portsLists ports of a specific infrastructure device.
POST /devicesCreates a new infrastructure device into inventory (future).
PUT /devices/{deviceId}Updates a device - attributes, availability, mastership.
DELETE /devices/{deviceId}Deletes an infrastructure device from inventory.

Link

GET /linksLists all infrastructure links.
GET /links?{device=deviceId}{port=portNumber}{direction=[ALL,INGRESS,EGRESS]}Lists details of a link.
POST /linksCreates a new infrastructure link into inventory (future).
PUT /links/{linkId}Updates a link - attributes, e.g. type.
DELETE /link/{linkId}Deletes an infrastructure link from inventory.

Host

GET /hostsLists all end-stations hosts.
GET /hosts/{hostId}Lists details of a specific end-station host specified by the host ID.
GET /hosts/{mac}/{vlan}Lists details of a specific end-station host specified by the host MAC address and VLan Id.
POST /hostsCreates a new end-station host into inventory (future).
PUT /hosts/{hostId}Updates an end-station host - attributes, e.g. IP, location.
DELETE /hosts/{hostId}Deletes an end-station host from inventory.

Topology

GET /topologyGets overview of the current topology.
GET /topology/clustersGets list of topology cluster overviews.
GET /topology/clusters/{clusterId}Gets overview of a specific topology cluster.
GET /topology/clusters/{clusterId}/devicesGets infrastructure devices that belong to the specified topology cluster.
GET /topology/clusters/{clusterId}/linksGets infrastructure links that belong to the specified topology cluster.
GET /topology/broadcast/{connectPoint}Gets indication whether the given point permits broadcast.
GET /topology/infrastructure/{connectPoint}Gets indication whether the given point belongs to network infrastructure.

Path

GET /paths/{elementId}/{elementId}Gets set of pre-computed shortest paths between the specified source and destination network elements.

Flow  

POST /flows/{deviceId}Creates a single flow rule applied to the specified infrastructure device.
GET /flows/{deviceId}Gets list of flow rules applied to the specified infrastructure device.
GET /flows/{deviceId}/{flowId}Gets details of a specified flow rule.
GET /flowsGets details of all flow rules in the system.
POST /flows/(TODO) Applies batch of flow rule operations; this includes add/remove operations.
POST /flows/{deviceId}Applies a new flow rule on the specified device.
DELETE /flows/{deviceId}/{flowId} Deletes a flow rule from the specified device.
GET /statistics/flows/link/{linkId}Gets aggregate statistics for all flows traversing the given link.

Intent

GET /intents/{intent-id}Gets the details for the given Intent object.
GET /intentsGets a collection containing all the Intent objects currently in the system.
POST /intentsCreates a new Intent object.
POST /intentsCreates a batch of Intent objects (pending -may not be included in finalized API).
DELETE /intent/{Intent-id}Removes an intent from the system.

Application

GET /applicationsGets a list of all installed applications.
GET /applications/{app-name}Gets information about the named application.
POST /applications/Installs application using the posted app.xml or application package file (ZIP).
DELETE /applications/{app-name}Uninstalls the named application.
POST /applications/{app-name}/activeActivates the named application.
DELETE /applications/{app-name}/activeDeactivates the named application.

 

Component Configuration

Each OSGI component within ONOS can have its own set of configuration values.  The REST APIs present these as a map when generating JSON:

{
    "org.onosproject.provider.host.impl.HostLocationProvider":
    {
        "ipv6NeighborDiscovery":"false",
        "hostRemovalEnabled":"true"
    }
}
GET /configurationGets a list of all active components and their configuration values
GET /configuration/{component}Gets the configuration values for a single component
POST /configuration/{component}Adds a set of configuration values to a component
DELETE /configuration/{component}Removes the configuration values for a component and sets them back to their default values

 


Previous : Appendix A : List of ONOS Test Scripts (onos-* scripts)
Next : Appendix C : Source Tree Organization