FORMAT: 1A

# XOS
 
 
# Group Instances

List of the XOS instances

## Instances [/api/core/instances/{instance_id}/]

### List all Instances [GET]

+ Response 200 (application/json)

        [
            {
                "id": 1,
                "humanReadableName": "uninstantiated-1",
                "created": "2016-04-26T00:36:22.465259Z",
                "updated": "2016-04-26T00:36:22.465288Z",
                "enacted": null,
                "policed": null,
                "backend_register": "{}",
                "backend_status": "0 - Provisioning in progress",
                "deleted": false,
                "write_protect": false,
                "lazy_blocked": false,
                "no_sync": false,
                "instance_id": null,
                "instance_uuid": null,
                "name": "mysite_vcpe",
                "instance_name": null,
                "ip": null,
                "image": "http://xos.dev:9999/api/core/images/1/",
                "creator": "http://xos.dev:9999/api/core/users/1/",
                "slice": "http://xos.dev:9999/api/core/slices/1/",
                "deployment": "http://xos.dev:9999/api/core/deployments/1/",
                "node": "http://xos.dev:9999/api/core/nodes/1/",
                "numberCores": 0,
                "flavor": "http://xos.dev:9999/api/core/flavors/1/",
                "userData": null,
                "isolation": "vm",
                "volumes": "/etc/dnsmasq.d,/etc/ufw",
                "parent": null,
                "networks": [
                    "http://xos.dev:9999/api/core/networks/2/"
                ]
            }
        ]
        
 
 
# Group Users

List of the XOS users

## Users [/api/core/users/{user_id}/]

### List all Users [GET]

+ Response 200 (application/json)

        [
            {
                "id": 2,
                "password": "pbkdf2_sha256$12000$9gn8DmZuIoz2$YPQkx3AOOV7jZNYr2ddrgUCkiuaPpvb8+aJR7RwLZNA=",
                "last_login": "2016-04-12T18:50:45.880823Z",
                "email": "johndoe@myhouse.com",
                "username": "johndoe@myhouse.com",
                "firstname": "john",
                "lastname": "doe",
                "phone": null,
                "user_url": null,
                "site": "http://xos.dev:9999/api/core/sites/1/",
                "public_key": null,
                "is_active": true,
                "is_admin": false,
                "is_staff": true,
                "is_readonly": false,
                "is_registering": false,
                "is_appuser": false,
                "login_page": null,
                "created": "2016-04-12T18:50:45.912602Z",
                "updated": "2016-04-12T18:50:45.912671Z",
                "enacted": null,
                "policed": null,
                "backend_status": "Provisioning in progress",
                "deleted": false,
                "write_protect": false,
                "timezone": "America/New_York"
            }
        ]
        
 
 
# Group Example

## Example Services Collection [/api/service/exampleservice/]

### List all Example Services [GET]

+ Response 200 (application/json)

        [
            {
                "humanReadableName": "MyExample",
                "id": 1,
                "service_message": "This is the test message"
            }
        ]
 
 
# Group ONOS Services

List of the active onos services

## ONOS Services Collection [/api/service/onos/]

### List all ONOS Services [GET]

+ Response 200 (application/json)

        [
            {
                "humanReadableName": "service_ONOS_vBNG",
                "id": 5,
                "rest_hostname": "",
                "rest_port": "8181",
                "no_container": false,
                "node_key": ""
            }
        ]
 
 
# Group vSG

## vSG Collection [/api/service/vsg/]

### List all vSGs [GET]

+ Response 200 (application/json)

        [
            {
                "humanReadableName": "service_vsg",
                "id": 2,
                "dns_servers": "8.8.8.8",
                "url_filter_kind": null,
                "node_label": null
            }
        ]
 
 
# Group Subscribers

Resource related to the CORD Subscribers.

## Subscribers [/api/tenant/cord/subscriber/{subscriber_id}/]

### List All Subscribers [GET]

+ Response 200 (application/json)

        [
            {
                "humanReadableName": "cordSubscriber-1",
                "id": 1,
                "features": {
                    "cdn": false,
                    "uplink_speed": 1000000000,
                    "downlink_speed": 1000000000,
                    "uverse": false,
                    "status": "enabled"
                },
                "identity": {
                    "account_num": "123",
                    "name": "My House"
                },
                "related": {
                    "instance_name": "mysite_vcpe",
                    "vsg_id": 4,
                    "compute_node_name": "node2.opencloud.us",
                    "c_tag": "432",
                    "instance_id": 1,
                    "wan_container_ip": null,
                    "volt_id": 3,
                    "s_tag": "222"
                }
            }
        ]


### View a Subscriber Detail [GET]

+ Parameters
    + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer

+ Response 200 (application/json)
 
        {
            "humanReadableName": "cordSubscriber-1", 
            "id": 1, 
            "features": { 
                "cdn": false, 
                "uplink_speed": 1000000000, 
                "downlink_speed": 1000000000, 
                "uverse": false, 
                "status": "enabled" 
            }, 
            "identity": { 
                "account_num": "123",
                "name": "My House"
            }, 
            "related": { 
                "instance_name": "mysite_vcpe", 
                "vsg_id": 4, 
                "compute_node_name": "node2.opencloud.us",
                "c_tag": "432", 
                "instance_id": 1, 
                "wan_container_ip": null, 
                "volt_id": 3, 
                "s_tag": "222" 
            } 
        }

### Delete a Subscriber [DELETE]

+ Parameters
    + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer

+ Response 204

### Subscriber features [/api/tenant/cord/subscriber/{subscriber_id}/features/]

+ Parameters
    + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer

### View a Subscriber Features Detail [GET]

+ Response 200 (application/json)

        {
            "cdn": false, 
            "uplink_speed": 1000000000, 
            "downlink_speed": 1000000000, 
            "uverse": true, 
            "status": "enabled"
        }

#### Subscriber features uplink_speed [/api/tenant/cord/subscriber/{subscriber_id}/features/uplink_speed/]

+ Parameters
    + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer

#### Read Subscriber uplink_speed [GET]

+ Response 200 (application/json)

        {
            "uplink_speed": 1000000000
        }

#### Update Subscriber uplink_speed [PUT]

+ Request 200 (application/json)

        {
            "uplink_speed": 1000000000
        }

+ Response 200 (application/json)

        {
            "uplink_speed": 1000000000
        }

#### Subscriber features downlink_speed [/api/tenant/cord/subscriber/{subscriber_id}/features/downlink_speed/]

+ Parameters
    + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer

#### Read Subscriber downlink_speed [GET]

+ Response 200 (application/json)

        {
            "downlink_speed": 1000000000
        }

#### Update Subscriber downlink_speed [PUT]

+ Request 200 (application/json)

        {
            "downlink_speed": 1000000000
        }

+ Response 200 (application/json)

        {
            "downlink_speed": 1000000000
        }

#### Subscriber features cdn [/api/tenant/cord/subscriber/{subscriber_id}/features/cdn/]

+ Parameters
    + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer

#### Read Subscriber cdn [GET]

+ Response 200 (application/json)

        {
            "cdn": false
        }

#### Update Subscriber cdn [PUT]

+ Request 200 (application/json)

        {
            "cdn": false
        }

+ Response 200 (application/json)

        {
            "cdn": false
        }

#### Subscriber features uverse [/api/tenant/cord/subscriber/{subscriber_id}/features/uverse/]

+ Parameters
    + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer

#### Read Subscriber uverse [GET]

+ Response 200 (application/json)

        {
            "uverse": false
        }

#### Update Subscriber uverse [PUT]

+ Request 200 (application/json)

        {
            "uverse": false
        }

+ Response 200 (application/json)

        {
            "uverse": false
        }

#### Subscriber features status [/api/tenant/cord/subscriber/{subscriber_id}/features/status/]

+ Parameters
    + subscriber_id: 1 (number) - ID of the Subscriber in the form of an integer

#### Read Subscriber status [GET]

+ Response 200 (application/json)

        {
            "status": "enabled"
        }

#### Update Subscriber status [PUT]

+ Request 200 (application/json)

        {
            "status": "enabled"
        }

+ Response 200 (application/json)

        {
            "status": "enabled"
        }
 
 
# Group Truckroll

Virtual Truckroll, enable to perform basic test on user connectivity such as ping, traceroute and tcpdump.

## Truckroll Collection [/api/tenant/truckroll/{truckroll_id}/]

### List all Truckroll [GET]

+ Response 200 (application/json)

        [
            {
                "humanReadableName": "vTR-tenant-9",
                "id": 9,
                "provider_service": 6,
                "target_id": 2,
                "scope": "container",
                "test": "ping",
                "argument": "8.8.8.8",
                "result": "",
                "result_code": "",
                "is_synced": false,
                "backend_status": "2 - Exception('Unreachable results in ansible recipe',)"
            }
        ]

### Create a Truckroll [POST]

A virtual truckroll is complete once is_synced equal true

+ Request (application/json)

        {
            "target_id": 2,
            "scope": "container",
            "test": "ping",
            "argument": "8.8.8.8"
        }

+ Response 201 (application/json)

        {
            "humanReadableName": "vTR-tenant-1",
            "id": 1,
            "provider_service": 6,
            "target_id": 2,
            "scope": "container",
            "test": "ping",
            "argument": "8.8.8.8",
            "result": null,
            "result_code": null,
            "is_synced": false,
            "backend_status": "0 - Provisioning in progress"
        }


### View a Truckroll Detail [GET]

+ Parameters
    + truckroll_id: 1 (number) - ID of the Truckroll in the form of an integer

+ Response 200 (application/json)

        {
            "humanReadableName": "vTR-tenant-10",
            "id": 10,
            "provider_service": 6,
            "target_id": 2,
            "scope": "container",
            "test": "ping",
            "argument": "8.8.8.8",
            "result": null,
            "result_code": null,
            "is_synced": false,
            "backend_status": "0 - Provisioning in progress"
        }

### Delete a Truckroll Detail [DELETE]

+ Parameters
    + truckroll_id: 1 (number) - ID of the Truckroll in the form of an integer

+ Response 204

 
 
# Group vOLT

OLT devices aggregate a set of subscriber connections

## vOLT Collection [/api/tenant/cord/volt/{volt_id}/]

### List all vOLT [GET]

+ Response 200 (application/json)

        [
            {
                "humanReadableName": "vOLT-tenant-1",
                "id": 1,
                "service_specific_id": "123",
                "s_tag": "222",
                "c_tag": "432",
                "subscriber": 1,
                "related": {
                    "instance_id": 1,
                    "instance_name": "mysite_vcpe",
                    "vsg_id": 4,
                    "wan_container_ip": null,
                    "compute_node_name": "node2.opencloud.us"
                }
            }
        ]

### Create a vOLT [POST]

+ Request (application/json)

        {
            "s_tag": "222",
            "c_tag": "432",
            "subscriber": 1
        }

+ Response 201 (application/json)

        {
                "humanReadableName": "vOLT-tenant-1",
                "id": 1,
                "service_specific_id": "123",
                "s_tag": "222",
                "c_tag": "432",
                "subscriber": 1,
                "related": {
                    "instance_id": 1,
                    "instance_name": "mysite_vcpe",
                    "vsg_id": 4,
                    "wan_container_ip": null,
                    "compute_node_name": "node2.opencloud.us"
                }
            }

### View a vOLT Detail [GET]

+ Parameters
    + volt_id: 1 (number) - ID of the vOLT in the form of an integer

+ Response 200 (application/json)

        {
            "humanReadableName": "vOLT-tenant-1",
            "id": 1,
            "service_specific_id": "123",
            "s_tag": "222",
            "c_tag": "432",
            "subscriber": 1,
            "related": {
                "instance_id": 1,
                "instance_name": "mysite_vcpe",
                "vsg_id": 4,
                "wan_container_ip": null,
                "compute_node_name": "node2.opencloud.us"
            }
        }

 
 
# Group ONOS Apps

## ONOS App Collection [/api/tenant/onos/app/]

### List all apps [GET]

+ Response 200 (application/json)

        [
            {
                "humanReadableName": "onos-tenant-7",
                "id": 7,
                "name": "vBNG_ONOS_app",
                "dependencies": "org.onosproject.proxyarp, org.onosproject.virtualbng, org.onosproject.openflow, org.onosproject.fwd"
            }
        ]