FORMAT: 1A

# XOS
 
 
# Group Deployments

List of the XOS deployments

## Deployments [/api/core/deployments/{id}/]

### List all deployments [GET]

+ Response 200 (application/json)

        [
            {
                "humanReadableName": "MyDeployment",
                "id": 1,
                "created": "2016-04-29T16:19:03.549901Z",
                "updated": "2016-04-29T16:19:05.624151Z",
                "enacted": null,
                "policed": null,
                "backend_register": "{}",
                "backend_status": "0 - Provisioning in progress",
                "deleted": false,
                "write_protect": false,
                "lazy_blocked": false,
                "no_sync": true,
                "name": "MyDeployment",
                "accessControl": "allow all",
                "images": [
                    "1"
                ],
                "sites": [
                    "1"
                ],
                "flavors": [
                    "1",
                    "2",
                    "3"
                ],
                "dashboardviews": [
                    "1"
                ]
            }
        ]

### View a Deployment Detail [GET]

+ Parameters
    + id: 1 (number) - ID of the Deployment in the form of an integer

+ Response 200 (application/json)

        {
            "humanReadableName": "MyDeployment",
            "id": 1,
            "created": "2016-04-27T21:46:57.354544Z",
            "updated": "2016-04-27T21:47:05.221720Z",
            "enacted": null,
            "policed": null,
            "backend_register": "{}",
            "backend_status": "0 - Provisioning in progress",
            "deleted": false,
            "write_protect": false,
            "lazy_blocked": false,
            "no_sync": true,
            "name": "MyDeployment",
            "accessControl": "allow all",
            "images": [],
            "sites": [
                "1"
            ],
            "flavors": [
                "3",
                "2",
                "1"
            ],
            "dashboardviews": [
                "3"
            ]
        }

 
 
# Group Flavors

List of the XOS flavors

## Flavors [/api/core/flavors/{id}/]

### List all flavors [GET]

+ Response 200 (application/json)

        [
            {
                "humanReadableName": "m1.large",
                "id": 1,
                 "created": "2016-04-29T16:19:01.979548Z",
                "updated": "2016-04-29T16:19:03.568238Z",
                "enacted": null,
                "policed": null,
                "backend_register": "{}",
                "backend_status": "0 - Provisioning in progress",
                "deleted": false,
                "write_protect": false,
                "lazy_blocked": false,
                "no_sync": true,
                "name": "m1.large",
                "description": null,
                "flavor": "m1.large",
                "order": 0,
                "default": false,
                "deployments": [
                    "1"
                ]
            }
        ]

### View a Flavors Detail [GET]

+ Parameters
    + id: 1 (number) - ID of the Flavors in the form of an integer

+ Response 200 (application/json)

        {
            "humanReadableName": "m1.large",
            "id": 1,
             "created": "2016-04-29T16:19:01.979548Z",
            "updated": "2016-04-29T16:19:03.568238Z",
            "enacted": null,
            "policed": null,
            "backend_register": "{}",
            "backend_status": "0 - Provisioning in progress",
            "deleted": false,
            "write_protect": false,
            "lazy_blocked": false,
            "no_sync": true,
            "name": "m1.large",
            "description": null,
            "flavor": "m1.large",
            "order": 0,
            "default": false,
            "deployments": [
                "1"
            ]
        }
 
 
# Group Instances

List of the XOS instances

## Instances [/api/core/instances/{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": "1",
                "creator": "1",
                "slice": "1",
                "deployment": "1",
                "node": "1",
                "numberCores": 0,
                "flavor": "1",
                "userData": null,
                "isolation": "vm",
                "volumes": "/etc/dnsmasq.d,/etc/ufw",
                "parent": null,
                "networks": [
                    "1"
                ]
            }
        ]
        
 
 
# Group Nodes

List of the XOS nodes

## Nodes [/api/core/nodes/{id}/]

### List all nodes [GET]

+ Response 200 (application/json)

        [
            {
                "humanReadableName": "node2.opencloud.us",
                "id": 1,
                "created": "2016-04-29T16:19:05.661567Z",
                "updated": "2016-04-29T16:19:05.661454Z",
                "enacted": null,
                "policed": null,
                "backend_register": "{}",
                "backend_status": "0 - Provisioning in progress",
                "deleted": false,
                "write_protect": false,
                "lazy_blocked": false,
                "no_sync": true,
                "name": "node2.opencloud.us",
                "site_deployment": "1",
                "site": "1",
                "nodelabels": []
            }
        ]

 
 
# Group Sites

List of the XOS sites

## Sites [/api/core/sites/{id}/]

### List all sites [GET]

+ Response 200 (application/json)

        {
            "humanReadableName": "MySite",
            "id": 1,
            "created": "2016-04-29T16:19:03.587770Z",
            "updated": "2016-04-29T16:19:05.651933Z",
            "enacted": null,
            "policed": null,
            "backend_register": "{}",
            "backend_status": "0 - Provisioning in progress",
            "deleted": false,
            "write_protect": false,
            "lazy_blocked": false,
            "no_sync": false,
            "name": "MySite",
            "site_url": "http://opencord.us/",
            "enabled": true,
            "hosts_nodes": true,
            "hosts_users": true,
            "location": null,
            "longitude": null,
            "latitude": null,
            "login_base": "mysite",
            "is_public": true,
            "abbreviated_name": "",
            "deployments": [
                "1"
            ]
        }
 
 
# Group Slices

List of the XOS slices

## Slices [/api/core/slices/{id}/]

### List all slices [GET]

+ Response 200 (application/json)

        [
            {
                "humanReadableName": "mysite_slice",
                "id": 1,
                "created": "2016-04-29T16:23:22.505072Z",
                "updated": "2016-04-29T16:23:22.504691Z",
                "enacted": null,
                "policed": "2016-04-29T16:23:22.781298Z",
                "backend_register": "{}",
                "backend_status": "0 - Provisioning in progress",
                "deleted": false,
                "write_protect": false,
                "lazy_blocked": false,
                "no_sync": false,
                "name": "mysite_slice",
                "enabled": true,
                "omf_friendly": false,
                "description": "",
                "slice_url": "",
                "site": "http://apt118.apt.emulab.net/api/core/sites/1/",
                "max_instances": 10,
                "service": null,
                "network": null,
                "exposed_ports": null,
                "serviceClass": "http://apt118.apt.emulab.net/api/core/serviceclasses/1/",
                "creator": "http://apt118.apt.emulab.net/api/core/users/1/",
                "default_flavor": null,
                "default_image": null,
                "mount_data_sets": "GenBank",
                "default_isolation": "vm",
                "networks": [
                    "http://apt118.apt.emulab.net/api/core/networks/1/"
                ]
            }
        ]
        
 
 
# Group Users

List of the XOS users

## Users [/api/core/users/{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 Utility

List of the XOS Utility API

## Login [/api/utility/login/]

### Log a user in the system [POST]

+ Request (application/json)

        {
            "username": "padmin@vicci.org",
            "password": "letmein"
        }

+ Response 200 (application/json)

        {
            "xoscsrftoken":"xuvsRC1jkXAsnrdRlgJvcXpmtthTAqqf",
            "xossessionid":"7ds5a3wzjlgbjqo4odkd25qsm0j2s6zg",
            "user": "{\"policed\": null, \"site\": 3, \"is_appuser\": false, \"is_staff\": true, \"backend_status\": \"Provisioning in progress\", \"id\": 3, \"is_registering\": false, \"last_login\": \"2016-04-30T22:51:04.788675+00:00\", \"email\": \"padmin@vicci.org\", \"no_sync\": false, \"username\": \"padmin@vicci.org\", \"dashboards\": [11], \"login_page\": null, \"firstname\": \"XOS\", \"user_url\": null, \"deleted\": false, \"lastname\": \"admin\", \"is_active\": true, \"lazy_blocked\": false, \"phone\": null, \"is_admin\": true, \"enacted\": null, \"public_key\": null, \"is_readonly\": false, \"no_policy\": false, \"write_protect\": false}"
        }

## Logout [/api/utility/logout/]

### Log a user out of the system [POST]

+ Request (application/json)
        {xossessionid: "sessionId"}

+ Response 200 (application/json)

 
 
# 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"
            }
        ]