diff --git a/apiary.apib b/apiary.apib
deleted file mode 100644
index 5bd34fd..0000000
--- a/apiary.apib
+++ /dev/null
@@ -1,1344 +0,0 @@
-FORMAT: 1A
-
-# XOS
- 
- 
-# 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)
-
-## Port Forwarding [/api/utility/portforwarding/]
-
-Contains the set of port forwarding mappings for each compute node.
-Used on OpenCloud to setup port forwarding for nat-net.
-
-### List port forwarding objects [GET]
-
-+ Response 200 (application/json)
-
-        [
-            {
-                "id": 79,
-                "ip": "172.16.0.36",
-                "ports": "tcp 2222, tcp 25566",
-                "hostname": "node1.opencloud.us"
-            },
-            {
-                "id": 131,
-                "ip": "172.16.0.16",
-                "ports": "udp 53, tcp 8017",
-                "hostname": "node2.opencloud.us"
-            }
-        ]
-
-## Slices Plus [/api/utility/slicesplus/]
-
-A list of slices with addictional information, it is used in the Tenant custom dashboard.
-
-### List Slices objects [GET]
-
-+ Response 200 (application/json)
-
-        [
-             {
-                "humanReadableName": "mysite_management",
-                "id": 2,
-                "created": "2016-06-29T18:43:50.730912Z",
-                "updated": "2016-06-29T18:43:50.730789Z",
-                "enacted": null,
-                "name": "mysite_management",
-                "enabled": true,
-                "omf_friendly": false,
-                "description": "",
-                "slice_url": "",
-                "site": 2,
-                "max_instances": 10,
-                "service": null,
-                "network": "noauto",
-                "mount_data_sets": "GenBank",
-                "default_image": null,
-                "default_flavor": null,
-                "serviceClass": null,
-                "creator": 2,
-                "networks": [],
-                "network_ports": "",
-                "backendIcon": "/static/admin/img/icon_clock.gif",
-                "backendHtml": "<span title=\"Pending sync, last_status = 0 - Provisioning in progress\"><img src=\"/static/admin/img/icon_clock.gif\"></span>",
-                "current_user_roles": [],
-                "instance_distribution": {},
-                "instance_distribution_ready": {},
-                "instance_total": 0,
-                "instance_total_ready": 0,
-                "instance_status": {},
-                "users": [],
-                "user_names": [],
-                "current_user_can_see": true
-            }
-        ]
-
-## Synchronizer [/api/utility/synchronizer/]
-
-Lists the Diag objects for synchronizers. From here you can get the synchronizer status.
-
-### List Diag objects [GET]
-
-+ Response 200 (application/json)
-
-        [
-            {
-                "id": 3,
-                "name": "onboarding",
-                "backend_status": "1 - Bottom Of Loop",
-                "backend_register": "{\"last_duration\": 0.18996095657348633, \"last_run\": 1467923907.908469}"
-            }
-        ]
-
-## Onboarding [/api/utility/onboarding/{service}/ready]
-
-Used to get the status of onboarding, to determine if services have been to successfully onboarded and if the XOS UI container has been built.
-
-### Get service status [GET]
-
-+ Parameters
-    + service: services/vsg (string) - Name of the service to wait for
-
-
-+ Response 200 (text/plain)
-
-        true
-
-## Tosca [/api/utility/tosca/run/]
-
-### Load a Tosca recipe [POST]
-
-+ Request (application/json)
-
-        {
-            "recipe": "tosca_definitions_version: tosca_simple_yaml_1_0\n\ndescription: Onboard the exampleservice\n\nimports:\n   - custom_types/xos.yaml\n\ntopology_template:\n  node_templates:\n    test_site:\n      type: tosca.nodes.Site\n      properties:\n          display_name: Test Site\n          site_url: https://www.onlab.us/"
-        }
-
-+ Response 200 (application/json)
-
-        {
-            "log_msgs":[
-                "ordered_names: ['test_site']",
-                "Created Site 'Test Site'"
-            ]
-        }
-
-## Ssh Keys [/api/utility/sshkeys/]
-
-Returns the set of ssh keys for instances. Used on OpenCloud to configure ssh-proxy to instances.
-
-### List ssh keys by instance [GET]
-
-+ Response 200 (application/json)
-
-        [
-            {
-                "id": "instance-00000001",
-                "public_keys": [
-                    "ssh-rsa xxyyzz\r\n"
-                ],
-                "node_name": "node1.opencloud.us"
-            },
-            {
-                "id": "instance-00000001",
-                "public_keys": [
-                    "ssh-rsa xxyyzz\r\n"
-                ],
-                "node_name": "node2.opencloud.us"
-            }
-        ]
- 
- 
-# Group Tenant
- 
- 
-## Subscribers [/api/tenant/cord/subscriber/{subscriber_id}/]
-
-Resource related to the CORD Subscribers.
-
-### 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"
-        }
- 
- 
-## Truckroll Collection [/api/tenant/truckroll/{truckroll_id}/]
-
-Virtual Truckroll, enable to perform basic test on user connectivity such as ping, traceroute and tcpdump.
-
-### 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
-
- 
- 
-## vOLT Collection [/api/tenant/cord/volt/{volt_id}/]
-
-OLT devices aggregate a set of subscriber connections
-
-### 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"
-            }
-        }
-
- 
- 
-## 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"
-            }
-        ]
- 
- 
-# Group Service
- 
- 
-## 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"
-            }
-        ]
-
- 
- 
-## ONOS Services Collection [/api/service/onos/]
-
-List of the active onos services
-
-### 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": ""
-            }
-        ]
- 
- 
-## 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 Core
-
-List of the XOS Core API
- 
- 
-## Deployments [/api/core/deployments/{id}/]
-
-List of the XOS deployments
-
-### 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"
-                ]
-            }
-        ]
-
-### Create a deployment [POST]
-
-+ Request (application/json)
-
-        {
-            "humanReadableName": "MyDeployment",
-        }
-
-+ 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"
-            ]
-        }
-
-### Delete a Deployment [DELETE]
-
-+ Parameters
-    + id: 1 (number) - ID of the Deployment in the form of an integer
-
-+ Response 204
- 
- 
-## Flavors [/api/core/flavors/{id}/]
-
-List of the XOS flavors
-
-### 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"
-                ]
-            }
-        ]
-
-### Create a Flavor [POST]
-
-+ Request (application/json)
-
-        {
-            "humanReadableName": "mq.test",
-        }
-
-+ 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"
-            ]
-        }
-
-### Delete a Flavors Detail [DELETE]
-
-+ Parameters
-    + id: 1 (number) - ID of the Flavors in the form of an integer
-
-+ Response 204 
- 
- 
-## Instances Collection [/api/core/instances/{?no_hyperlinks}]
-
-    + no_hyperlinks (number, optional) - Wheter to return relation with links or ids
-        + Default: `0`
-
-### 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"
-                ]
-            }
-        ]
-
-### Create an Instance [POST]
-
-+ Parameters
-    + no_hyperlinks: 1
-
-+ Request (application/json)
-
-        {
-            "name": "test-instance",
-            "image": 1,
-            "slice": 1,
-            "deployment": 1,
-            "node": 1
-        }
-
-+ 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": "test-instance",
-            "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"
-            ]
-        }
-
-## Instances Detail [/api/core/instances/{id}/]
-
-### Get instance details [GET]
-
-+ Parameters
-    + id: 1 (number) - ID of the Instance in the form of an integer
-
-+ 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"
-            ]
-        }
-
-### Delete instance [DELETE]
-
-+ Parameters
-    + id: 1 (number) - ID of the Instance in the form of an integer
-
-+ Response 204
- 
- 
-## 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": []
-            }
-        ]
-
- 
- 
-## Services [/api/core/services/{id}/]
-
-### List all Services [GET]
-
-+ Response 200 (application/json)
-
-        [
-            {
-                "humanReadableName": "MyService",
-                "id": 1,
-                "created": "2016-05-05T23:06:33.835277Z",
-                "updated": "2016-05-05T23:06:33.835302Z",
-                "enacted": null,
-                "policed": null,
-                "backend_register": "{}",
-                "backend_status": "0 - Provisioning in progress",
-                "deleted": false,
-                "write_protect": false,
-                "lazy_blocked": false,
-                "no_sync": false,
-                "no_policy": false,
-                "description": null,
-                "enabled": true,
-                "kind": "vROUTER",
-                "name": "MyService",
-                "versionNumber": null,
-                "published": true,
-                "view_url": "/admin/vrouter/vrouterservice/$id$/",
-                "icon_url": null,
-                "public_key": null,
-                "private_key_fn": null,
-                "service_specific_id": null,
-                "service_specific_attribute": null
-            }
-        ]
-
-### Create a Service [POST]
-
-+ Request (application/json)
-
-        {
-            "name": "MyService",
-            "kind": "vROUTER"
-        }
-
-+ Response 200 (application/json)
-
-        {
-            "humanReadableName": "MyService",
-            "id": 1,
-            "created": "2016-05-05T23:06:33.835277Z",
-            "updated": "2016-05-05T23:06:33.835302Z",
-            "enacted": null,
-            "policed": null,
-            "backend_register": "{}",
-            "backend_status": "0 - Provisioning in progress",
-            "deleted": false,
-            "write_protect": false,
-            "lazy_blocked": false,
-            "no_sync": false,
-            "no_policy": false,
-            "description": null,
-            "enabled": true,
-            "kind": "vROUTER",
-            "name": "MyService",
-            "versionNumber": null,
-            "published": true,
-            "view_url": "/admin/vrouter/vrouterservice/$id$/",
-            "icon_url": null,
-            "public_key": null,
-            "private_key_fn": null,
-            "service_specific_id": null,
-            "service_specific_attribute": null
-        }
-
-### View a Service Detail [GET]
-
-+ Parameters
-    + id: 1 (number) - ID of the Service in the form of an integer
-
-+ Response 200 (application/json)
-
-        {
-                "humanReadableName": "MyService",
-                "id": 1,
-                "created": "2016-05-05T23:06:33.835277Z",
-                "updated": "2016-05-05T23:06:33.835302Z",
-                "enacted": null,
-                "policed": null,
-                "backend_register": "{}",
-                "backend_status": "0 - Provisioning in progress",
-                "deleted": false,
-                "write_protect": false,
-                "lazy_blocked": false,
-                "no_sync": false,
-                "no_policy": false,
-                "description": null,
-                "enabled": true,
-                "kind": "vROUTER",
-                "name": "MyService",
-                "versionNumber": null,
-                "published": true,
-                "view_url": "/admin/vrouter/vrouterservice/$id$/",
-                "icon_url": null,
-                "public_key": null,
-                "private_key_fn": null,
-                "service_specific_id": null,
-                "service_specific_attribute": null
-            }
-
-### Delete a Service [DELETE]
-
-+ Parameters
-    + id: 1 (number) - ID of the Service in the form of an integer
-
-+ Response 204
-
- 
- 
-## Sites [/api/core/sites/]
-
-### List all sites [GET]
-
-+ Response 200 (application/json)
-
-        [
-            {
-                "humanReadableName": "mysite",
-                "id": 1,
-                "created": "2016-08-18T21:21:03.429133Z",
-                "updated": "2016-08-18T21:21:06.676008Z",
-                "enacted": null,
-                "policed": null,
-                "backend_register": "{}",
-                "backend_status": "0 - Provisioning in progress",
-                "deleted": false,
-                "write_protect": false,
-                "lazy_blocked": false,
-                "no_sync": false,
-                "no_policy": false,
-                "name": "mysite",
-                "site_url": "http://opencloud.us/",
-                "enabled": true,
-                "hosts_nodes": true,
-                "hosts_users": true,
-                "longitude": null,
-                "latitude": null,
-                "login_base": "mysite",
-                "is_public": true,
-                "abbreviated_name": "",
-                "deployments": [
-                    "1"
-                ]
-            }
-        ]
-
-## Sites [/api/core/sites/{id}/]
-
-### View a Site Detail [GET]
-
-+ Parameters
-    + id: 1 (number) - ID of the Site in the form of an integer
-
-+ Response 200 (application/json)
-        
-        {
-            "humanReadableName": "mysite",
-            "id": 1,
-            "created": "2016-08-18T21:21:03.429133Z",
-            "updated": "2016-08-18T21:21:06.676008Z",
-            "enacted": null,
-            "policed": null,
-            "backend_register": "{}",
-            "backend_status": "0 - Provisioning in progress",
-            "deleted": false,
-            "write_protect": false,
-            "lazy_blocked": false,
-            "no_sync": false,
-            "no_policy": false,
-            "name": "mysite",
-            "site_url": "http://opencloud.us/",
-            "enabled": true,
-            "hosts_nodes": true,
-            "hosts_users": true,
-            "longitude": null,
-            "latitude": null,
-            "login_base": "mysite",
-            "is_public": true,
-            "abbreviated_name": "",
-            "deployments": [
-                "1"
-            ]
-        }
-
- 
- 
-## Slices [/api/core/slices/{id}/]
-
-List of the XOS slices
-
-### 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/"
-                ]
-            }
-        ]
-        
- 
- 
-## 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"
-            }
-        ]
-        
\ No newline at end of file
diff --git a/xos/tests/api/.gitignore b/xos/tests/api/.gitignore
deleted file mode 100644
index 99e7d87..0000000
--- a/xos/tests/api/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-apiary.apib
\ No newline at end of file
diff --git a/xos/tests/api/README.md b/xos/tests/api/README.md
deleted file mode 100644
index 67db53d..0000000
--- a/xos/tests/api/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# xos-api-docs
-
-These folder contain the XOS API definition and specs. To run tests visit `configurations/test-standalone` folder.
-
-To document new API:
-- run `npm install`
-- run `npm start`
-- add the appropriate endpont under `source` folder.
-
-_API are documented using (Api BluePrint)[https://apiblueprint.org/] syntax and the documentation is published on (Apiary)[http://docs.xos.apiary.io/#]_
-
diff --git a/xos/tests/api/dredd.yml b/xos/tests/api/dredd.yml
deleted file mode 100644
index 9e32eba..0000000
--- a/xos/tests/api/dredd.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-reporter: apiary
-custom:
-  apiaryApiKey: f941658c6714ebf58eeda5e0786e937f
-  apiaryApiName: xos
-dry-run: null
-hookfiles: "./hooks.py"
-language: python
-sandbox: false
-server: null
-server-wait: 3
-init: false
-names: false
-only: []
-output: []
-header: []
-sorted: false
-user: null
-inline-errors: false
-details: false
-method: []
-color: true
-level: info
-timestamp: false
-silent: false
-path: []
-hooks-worker-timeout: 5000
-hooks-worker-connect-timeout: 1500
-hooks-worker-connect-retry: 500
-hooks-worker-after-connect-wait: 100
-hooks-worker-term-timeout: 5000
-hooks-worker-term-retry: 500
-hooks-worker-handler-host: localhost
-hooks-worker-handler-port: 61321
-blueprint: apiary.apib
-endpoint: 'http://127.0.0.1:9999/'
diff --git a/xos/tests/api/gulpfile.js b/xos/tests/api/gulpfile.js
deleted file mode 100644
index c9be91c..0000000
--- a/xos/tests/api/gulpfile.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var gulp = require('gulp');
-var concat = require('gulp-concat');
-
-
-
-gulp.task('default', function() {
-  gulp.watch('./source/**/*.md', ['concat']);
-});
-
-gulp.task('concat', function() {
-  return gulp.src([
-      './source/base.md',
-      './source/utility/group.md',
-      './source/utility/**/*.md',
-      './source/tenant/group.md',
-      './source/tenant/**/*.md',
-      './source/service/group.md',
-      './source/service/**/*.md',
-      './source/core/group.md',
-      './source/core/**/*.md',
-    ])
-    .pipe(concat('../../../apiary.apib', {newLine: '\n \n \n'}))
-    .pipe(gulp.dest('./'));
-});
diff --git a/xos/tests/api/helpers/__init__.py b/xos/tests/api/helpers/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/xos/tests/api/helpers/__init__.py
+++ /dev/null
diff --git a/xos/tests/api/helpers/before_test.py b/xos/tests/api/helpers/before_test.py
deleted file mode 100644
index b81e239..0000000
--- a/xos/tests/api/helpers/before_test.py
+++ /dev/null
@@ -1,296 +0,0 @@
-import dredd_hooks as hooks
-import sys
-
-# HELPERS
-# NOTE move in separated module
-import os
-import sys
-sys.path.append("/opt/xos")
-os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xos.settings")
-import django
-from core.models import *
-from services.volt.models import *
-from services.vsg.models import *
-from services.vtr.models import *
-import urllib2
-import json
-from django.utils import timezone
-django.setup()
-
-
-def doLogin(username, password):
-    url = "http://127.0.0.1:8000/xoslib/login?username=%s&password=%s" % (username, password)
-    res = urllib2.urlopen(url).read()
-    parsed = json.loads(res)
-    return {'token': parsed['xoscsrftoken'], 'sessionid': parsed['xossessionid']}
-
-
-def cleanDB():
-    # deleting all subscribers
-    for s in CordSubscriberRoot.objects.all():
-        s.delete(purge=True)
-
-    # deleting all slices
-    for s in Slice.objects.all():
-        s.delete(purge=True)
-
-    # deleting all Services
-    for s in Service.objects.all():
-        s.delete(purge=True)
-
-    # deleting all Tenants
-    for s in Tenant.objects.all():
-        s.delete(purge=True)
-
-    # deleting all Networks
-    for s in Network.objects.all():
-        s.delete(purge=True)
-
-    # deleting all NetworkTemplates
-    for s in NetworkTemplate.objects.all():
-        s.delete(purge=True)
-
-    for s in NetworkSlice.objects.all():
-        s.delete(purge=True)
-
-    for s in AddressPool.objects.all():
-        s.delete(purge=True)
-
-    for s in Flavor.objects.all():
-        s.delete(purge=True)
-
-    for s in Image.objects.all():
-        s.delete(purge=True)
-
-    # print 'DB Cleaned'
-
-
-def createTestSubscriber():
-
-    cleanDB()
-    createFlavors()
-
-    # load user
-    user = User.objects.get(email="padmin@vicci.org")
-
-    # network template
-    private_template = NetworkTemplate()
-    private_template.name = 'Private Network'
-    private_template.save()
-
-    # creating the test subscriber
-    subscriber = CordSubscriberRoot(name='Test Subscriber 1', id=1)
-    subscriber.created = timezone.now()
-    subscriber.save()
-
-    # vRouter service
-    vrouter_service = VRouterService()
-    vrouter_service.name = 'service_vrouter'
-    vrouter_service.save()
-
-    # address pools
-    ap_vsg = AddressPool()
-    ap_vsg.service = vrouter_service
-    ap_vsg.name = 'addresses_vsg'
-    ap_vsg.addresses = '10.168.0.0'
-    ap_vsg.gateway_ip = '10.168.0.1'
-    ap_vsg.gateway_mac = '02:42:0a:a8:00:01'
-    ap_vsg.save()
-
-    # print 'vRouter created'
-
-    # Site
-    site = Site.objects.get(name='mysite')
-
-    # vSG service
-    vsg_service = VSGService()
-    vsg_service.name = 'service_vsg'
-
-    # vSG slice
-    vsg_slice = Slice(id=2)
-    vsg_slice.name = site.login_base + "_testVsg"
-    vsg_slice.service = vsg_service.id
-    vsg_slice.site = site
-    vsg_slice.caller = user
-
-    vsg_slice.save()
-
-    vsg_service.save()
-
-    # volt service
-    volt_service = VOLTService()
-    volt_service.name = 'service_volt'
-    volt_service.save()
-
-    # cvpe image
-    createImage('ubuntu-vcpe4')
-
-    # vcpe slice
-    vcpe_slice = Slice(id=3)
-    vcpe_slice.name = site.login_base + "_testVcpe"
-    vcpe_slice.service = Service.objects.get(kind='vCPE')
-    vcpe_slice.site = site
-    vcpe_slice.caller = user
-    vcpe_slice.save()
-
-    # print 'vcpe_slice created'
-
-    # create a lan network
-    lan_net = Network(id=1)
-    lan_net.name = 'lan_network'
-    lan_net.owner = vcpe_slice
-    lan_net.template = private_template
-    lan_net.save()
-
-    # print 'lan_network created'
-
-    # add relation between vcpe slice and lan network
-    vcpe_network = NetworkSlice()
-    vcpe_network.network = lan_net
-    vcpe_network.slice = vcpe_slice
-    vcpe_network.save()
-
-    # print 'vcpe network relation added'
-
-    # vbng service
-    vbng_service = VBNGService()
-    vbng_service.name = 'service_vbng'
-    vbng_service.save()
-
-    # print 'vbng_service creater'
-
-    # volt tenant
-    vt = VOLTTenant(subscriber=subscriber.id, id=1)
-    vt.s_tag = "222"
-    vt.c_tag = "432"
-    vt.provider_service_id = volt_service.id
-    vt.caller = user
-    vt.save()
-
-    # print "Subscriber Created"
-
-
-def deleteTruckrolls():
-    for s in VTRTenant.objects.all():
-        s.delete(purge=True)
-
-
-def setUpTruckroll():
-    service_vtr = VTRService()
-    service_vtr.name = 'service_vtr'
-    service_vtr.save()
-
-
-def createTruckroll():
-    setUpTruckroll()
-    tn = VTRTenant(id=1)
-    tn.created = timezone.now()
-    tn.save()
-
-
-def createFlavors():
-    small = Flavor(id=1)
-    small.name = "m1.small"
-    small.created = timezone.now()
-    small.save()
-
-    medium = Flavor(id=2)
-    medium.name = "m1.medium"
-    medium.created = timezone.now()
-    medium.save()
-
-    large = Flavor(id=3)
-    large.name = "m1.large"
-    large.created = timezone.now()
-    large.save()
-
-
-def createSlice():
-    site = Site.objects.get(name='mysite')
-    user = User.objects.get(email="padmin@vicci.org")
-
-    sl = Slice(id=1)
-    sl.created = timezone.now()
-    sl.name = site.login_base + "_testSlice"
-    sl.site = site
-    sl.caller = user
-    sl.save()
-    return sl
-
-
-def createDeployment():
-    deployment = Deployment(id=1)
-    deployment.created = timezone.now()
-    deployment.name = 'MyTestDeployment'
-    deployment.save()
-    return deployment
-
-
-def createImage(name):
-    img = Image(id=1)
-    img.name = name
-    img.created = timezone.now()
-    img.disk_format = 'QCOW2'
-    img.kind = 'vm'
-    img.save()
-    return img
-
-
-def createNode(deployment):
-    site = Site.objects.get(name='mysite')
-
-    site_deployment = SiteDeployment(id=1)
-    site_deployment.site = site
-    site_deployment.created = timezone.now()
-    site_deployment.deployment = deployment
-    site_deployment.save()
-
-    node = Node(id=1)
-    node.name = 'test-node'
-    node.created = timezone.now()
-    node.site = site
-    node.site_deployment = site_deployment
-    node.save()
-    return node
-
-
-def setupInstance():
-    deployment = createDeployment()
-    sl = createSlice()
-    node = createNode(deployment)
-    img = createImage('test-image')
-    # print {'image': img.id, 'deployment': deployment.id, 'slice': sl.id}
-    return {'image': img, 'deployment': deployment, 'slice': sl}
-
-
-def createInstance():
-    requirements = setupInstance()
-    user = User.objects.get(email="padmin@vicci.org")
-
-    instance = Instance(id=1)
-    instance.name = 'test-instance'
-    instance.created = timezone.now()
-    instance.node = Node.objects.all()[0]
-    instance.image = requirements['image']
-    instance.slice = requirements['slice']
-    instance.deployment = requirements['deployment']
-    instance.caller = user
-    instance.save()
-
-
-def createService():
-    service = Service(id=1)
-    service.name = 'test-service'
-    service.save()
-
-# setupInstance()
-# depl = createDeployment()
-# createTestSubscriber()
-# createInstance()
-# createSlice()
-# createNode(depl)
-# createImage('test-image')
-# createFlavors()
-# createTruckroll()
-# setUpTruckroll()
-createService()
diff --git a/xos/tests/api/helpers/flavors.py b/xos/tests/api/helpers/flavors.py
deleted file mode 100644
index dca4d77..0000000
--- a/xos/tests/api/helpers/flavors.py
+++ /dev/null
@@ -1,22 +0,0 @@
-import dredd_hooks as hooks
-import sys
-
-# HELPERS
-# NOTE move in separated module
-import os
-import sys
-sys.path.append("/opt/xos")
-os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xos.settings")
-import django
-from core.models import *
-import urllib2
-import json
-django.setup()
-
-def createFlavor():
-    fl = Flavor(id=1)
-    fl.name = 'm1.large'
-    fl.save()
-    print(fl, fl.id)
-
-createFlavor()
\ No newline at end of file
diff --git a/xos/tests/api/helpers/sites.py b/xos/tests/api/helpers/sites.py
deleted file mode 100644
index 7d20745..0000000
--- a/xos/tests/api/helpers/sites.py
+++ /dev/null
@@ -1,23 +0,0 @@
-import dredd_hooks as hooks
-import sys
-
-# HELPERS
-# NOTE move in separated module
-import os
-import sys
-sys.path.append("/opt/xos")
-os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xos.settings")
-import django
-from core.models import *
-import urllib2
-import json
-django.setup()
-
-
-def createSite():
-    site = Site(id=1)
-    site.name = 'mysite'
-    site.save()
-    print(site, site.id)
-
-createSite()
\ No newline at end of file
diff --git a/xos/tests/api/helpers/subscriber.py b/xos/tests/api/helpers/subscriber.py
deleted file mode 100644
index caac1fe..0000000
--- a/xos/tests/api/helpers/subscriber.py
+++ /dev/null
@@ -1,399 +0,0 @@
-import dredd_hooks as hooks
-import sys
-
-# HELPERS
-# NOTE move in separated module
-import os
-import sys
-sys.path.append("/opt/xos")
-os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xos.settings")
-import django
-from core.models import *
-from services.volt.models import *
-from services.vsg.models import *
-from services.vtr.models import *
-import urllib2
-import json
-from django.utils import timezone
-django.setup()
-
-
-def doLogin(username, password):
-    url = "http://127.0.0.1:9999/xoslib/login?username=%s&password=%s" % (username, password)
-    res = urllib2.urlopen(url).read()
-    parsed = json.loads(res)
-    return {'token': parsed['xoscsrftoken'], 'sessionid': parsed['xossessionid']}
-
-
-def cleanDB():
-    # deleting all subscribers
-    for s in CordSubscriberRoot.objects.all():
-        s.delete(purge=True)
-
-    # deleting all slices
-    for s in Slice.objects.all():
-        s.delete(purge=True)
-
-    # deleting all Services
-    for s in Service.objects.all():
-        s.delete(purge=True)
-
-    # deleting all Tenants
-    for s in Tenant.objects.all():
-        s.delete(purge=True)
-
-    # deleting all Networks
-    for s in Network.objects.all():
-        s.delete(purge=True)
-
-    # deleting all NetworkTemplates
-    for s in NetworkTemplate.objects.all():
-        s.delete(purge=True)
-
-    for s in NetworkSlice.objects.all():
-        s.delete(purge=True)
-
-    for s in AddressPool.objects.all():
-        s.delete(purge=True)
-
-    for s in Flavor.objects.all():
-        s.delete(purge=True)
-
-    for s in Image.objects.all():
-        s.delete(purge=True)
-
-    # print 'DB Cleaned'
-
-
-def createTestSubscriber():
-
-    cleanDB()
-    createFlavors()
-
-    # load user
-    user = User.objects.get(email="padmin@vicci.org")
-
-    # network template
-    private_template = NetworkTemplate()
-    private_template.name = 'Private Network'
-    private_template.save()
-
-    # creating the test subscriber
-    subscriber = CordSubscriberRoot(name='Test Subscriber 1', id=1)
-    subscriber.created = timezone.now()
-    subscriber.save()
-
-    # vRouter service
-    vrouter_service = VRouterService()
-    vrouter_service.name = 'service_vrouter'
-    vrouter_service.save()
-
-    # address pools
-    ap_vsg = AddressPool()
-    ap_vsg.service = vrouter_service
-    ap_vsg.name = 'addresses_vsg'
-    ap_vsg.addresses = '10.168.0.0'
-    ap_vsg.gateway_ip = '10.168.0.1'
-    ap_vsg.gateway_mac = '02:42:0a:a8:00:01'
-    ap_vsg.save()
-
-    # print 'vRouter created'
-
-    # cvpe image
-    vsg_img = createImage('ubuntu-vcpe4')
-
-    # Site
-    site = Site.objects.get(name='mysite')
-
-    # vSG service
-    vsg_service = VSGService()
-    vsg_service.name = 'service_vsg'
-
-    # vSG slice
-    vsg_slice = Slice(id=2)
-    vsg_slice.name = site.login_base + "_testVsg"
-    vsg_slice.service = vsg_service.id
-    vsg_slice.site = site
-    vsg_slice.caller = user
-    vsg_slice.default_image = vsg_img
-    vsg_slice.save()
-
-    vsg_service.save()
-
-    # volt service
-    volt_service = VOLTService()
-    volt_service.name = 'service_volt'
-    volt_service.save()
-
-    # vcpe slice
-    vcpe_slice = Slice(id=3)
-    vcpe_slice.name = site.login_base + "_testVcpe"
-    vcpe_slice.service = Service.objects.get(kind='vCPE')
-    vcpe_slice.site = site
-    vcpe_slice.caller = user
-    vcpe_slice.default_image =  vsg_img
-    vcpe_slice.save()
-
-    # print 'vcpe_slice created'
-
-    # create a lan network
-    lan_net = Network(id=1)
-    lan_net.name = 'lan_network'
-    lan_net.owner = vcpe_slice
-    lan_net.template = private_template
-    lan_net.save()
-
-    # print 'lan_network created'
-
-    # add relation between vcpe slice and lan network
-    vcpe_network = NetworkSlice()
-    vcpe_network.network = lan_net
-    vcpe_network.slice = vcpe_slice
-    vcpe_network.save()
-
-    # print 'vcpe network relation added'
-
-    # volt tenant
-    vt = VOLTTenant(subscriber=subscriber.id, id=1)
-    vt.s_tag = "222"
-    vt.c_tag = "432"
-    vt.provider_service_id = volt_service.id
-    vt.caller = user
-    vt.save()
-
-    # print "Subscriber Created"
-
-
-def deleteTruckrolls():
-    for s in VTRTenant.objects.all():
-        s.delete(purge=True)
-
-
-def setUpTruckroll():
-    service_vtr = VTRService()
-    service_vtr.name = 'service_vtr'
-    service_vtr.save()
-
-
-def createTruckroll():
-    setUpTruckroll()
-    tn = VTRTenant(id=1)
-    tn.created = timezone.now()
-    tn.save()
-
-
-def createFlavors():
-    small = Flavor(id=1)
-    small.name = "m1.small"
-    small.created = timezone.now()
-    small.save()
-
-    medium = Flavor(id=2)
-    medium.name = "m1.medium"
-    medium.created = timezone.now()
-    medium.save()
-
-    large = Flavor(id=3)
-    large.name = "m1.large"
-    large.created = timezone.now()
-    large.save()
-
-
-def createSlice():
-    site = Site.objects.get(name='mysite')
-    user = User.objects.get(email="padmin@vicci.org")
-
-    sl = Slice(id=1)
-    sl.created = timezone.now()
-    sl.name = site.login_base + "_testSlice"
-    sl.site = site
-    sl.caller = user
-    sl.save()
-    return sl
-
-
-def createDeployment():
-    deployment = Deployment(id=1)
-    deployment.created = timezone.now()
-    deployment.name = 'MyTestDeployment'
-    deployment.save()
-    return deployment
-
-
-def createImage(name):
-    img = Image(id=1)
-    img.name = name
-    img.created = timezone.now()
-    img.disk_format = 'QCOW2'
-    img.kind = 'vm'
-    img.save()
-    return img
-
-
-def createNode(deployment):
-    site = Site.objects.get(name='mysite')
-
-    site_deployment = SiteDeployment(id=1)
-    site_deployment.site = site
-    site_deployment.created = timezone.now()
-    site_deployment.deployment = deployment
-    site_deployment.save()
-
-    node = Node(id=1)
-    node.name = 'test-node'
-    node.created = timezone.now()
-    node.site = site
-    node.site_deployment = site_deployment
-    node.save()
-    return node
-
-
-def setupInstance():
-    deployment = createDeployment()
-    sl = createSlice()
-    node = createNode(deployment)
-    img = createImage('test-image')
-    # print {'image': img.id, 'deployment': deployment.id, 'slice': sl.id}
-    return {'image': img, 'deployment': deployment, 'slice': sl}
-
-
-def createInstance():
-    requirements = setupInstance()
-    user = User.objects.get(email="padmin@vicci.org")
-
-    instance = Instance(id=1)
-    instance.name = 'test-instance'
-    instance.created = timezone.now()
-    instance.node = Node.objects.all()[0]
-    instance.image = requirements['image']
-    instance.slice = requirements['slice']
-    instance.deployment = requirements['deployment']
-    instance.caller = user
-    instance.save()
-
-
-def createService():
-    service = Service(id=1)
-    service.name = 'test-service'
-    service.save()
-
-@hooks.before_all
-def my_before_all_hook(transactions):
-    # print "-------------------------------- Before All Hook --------------------------------"
-    cleanDB()
-
-
-@hooks.before_each
-def my_before_each_hook(transaction):
-    print "-------------------------------- Before Each Hook --------------------------------"
-    print transaction['name']
-    auth = doLogin('padmin@vicci.org', 'letmein')
-    transaction['request']['headers']['X-CSRFToken'] = auth['token']
-    transaction['request']['headers']['Cookie'] = "xossessionid=%s; xoscsrftoken=%s" % (auth['sessionid'], auth['token'])
-    createTestSubscriber()
-    setupInstance()
-    sys.stdout.flush()
-
-
-# @hooks.after_each
-# def my_after_each(transaction):
-#     print "-------------------------------- Test end --------------------------------"
-
-
-@hooks.before("Core > Services > View a Service Detail")
-def get_service(transaction):
-    createService()
-
-
-@hooks.before("Core > Services > Delete a Service")
-def delete_service(transaction):
-    createService()
-
-
-@hooks.before("Tenant > Truckroll Collection > Create a Truckroll")
-def test1(transaction):
-    setUpTruckroll()
-
-
-@hooks.before("Tenant > Truckroll Collection > View a Truckroll Detail")
-def test2(transaction):
-    deleteTruckrolls()
-    createTruckroll()
-
-
-@hooks.before("Tenant > Truckroll Collection > Delete a Truckroll Detail")
-def test3(transaction):
-    deleteTruckrolls()
-    createTruckroll()
-
-
-@hooks.before("Tenant > vOLT Collection > Create a vOLT")
-def test4(transaction):
-    # transaction['skip'] = True
-    VOLTTenant.objects.get(kind='vOLT').delete()
-
-
-@hooks.before("Core > Flavors > View a Flavors Detail")
-def test5(transaction):
-    createFlavors()
-
-
-@hooks.before("Core > Deployments > View a Deployment Detail")
-def get_deployments(transaction):
-    createDeployment()
-
-
-@hooks.before("Core > Deployments > Delete a Deployment")
-def delete_deployments(transaction):
-    createDeployment()
-
-
-@hooks.before("Core > Instances Collection > Create an Instance")
-def create_instance(transaction):
-    setupInstance()
-    transaction['skip'] = True
-
-
-@hooks.before("Core > Instances Detail > Get instance details")
-def get_instance(transaction):
-    createInstance()
-
-
-@hooks.before("Core > Instances Detail > Delete instance")
-def delete_instance(transaction):
-    createInstance()
-
-
-@hooks.before("Service > Example Services Collection > List all Example Services")
-def exampleTest(transaction):
-    transaction['skip'] = True
-
-
-@hooks.before("Service > Login > Log a user in the system")
-def before_logout_hook(transaction):
-    transaction['skip'] = True
-    # auth = doLogin('padmin@vicci.org', 'letmein')
-    # transaction['request']['body'] = {}
-    # transaction['request']['body']['xossessionid'] = auth['sessionid']
-
-
-@hooks.before("Utility > Logout > Log a user out of the system")
-def skip_logout(transaction):
-    transaction['skip'] = True
-
-
-@hooks.before("Utility > Onboarding > Get service status")
-def skip_onboarding(transaction):
-    transaction['skip'] = True
-
-
-@hooks.after("Utility > Tosca > Load a Tosca recipe")
-def check_tosca(transaction):
-    try:
-        site = Site.objects.get(name='Test Site')
-    except Exception, e:
-        transaction['fail'] = "Test Site has not been created"
-
-
-deleteTruckrolls()
-createTruckroll()
diff --git a/xos/tests/api/hooks.py b/xos/tests/api/hooks.py
deleted file mode 100644
index 53a18d4..0000000
--- a/xos/tests/api/hooks.py
+++ /dev/null
@@ -1,411 +0,0 @@
-import dredd_hooks as hooks
-import sys
-
-# HELPERS
-# NOTE move in separated module
-import os
-import sys
-sys.path.append("/opt/xos")
-os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xos.settings")
-import django
-from core.models import *
-from services.volt.models import *
-from services.vsg.models import *
-from services.vtr.models import *
-import urllib2
-import json
-from django.utils import timezone
-django.setup()
-
-
-def doLogin(username, password):
-    url = "http://127.0.0.1:9999/xoslib/login?username=%s&password=%s" % (username, password)
-    res = urllib2.urlopen(url).read()
-    parsed = json.loads(res)
-    return {'token': parsed['xoscsrftoken'], 'sessionid': parsed['xossessionid']}
-
-
-def cleanDB():
-    # deleting all subscribers
-    for s in CordSubscriberRoot.objects.all():
-        s.delete(purge=True)
-
-    # deleting all slices
-    for s in Slice.objects.all():
-        s.delete(purge=True)
-
-    # deleting all Services
-    for s in Service.objects.all():
-        s.delete(purge=True)
-
-    # deleting all Tenants
-    for s in Tenant.objects.all():
-        s.delete(purge=True)
-
-    # deleting all Networks
-    for s in Network.objects.all():
-        s.delete(purge=True)
-
-    # deleting all NetworkTemplates
-    for s in NetworkTemplate.objects.all():
-        s.delete(purge=True)
-
-    for s in NetworkSlice.objects.all():
-        s.delete(purge=True)
-
-    for s in AddressPool.objects.all():
-        s.delete(purge=True)
-
-    for s in Flavor.objects.all():
-        s.delete(purge=True)
-
-    for s in Image.objects.all():
-        s.delete(purge=True)
-
-    # for s in Site.objects.all():
-    #     s.delete(purge=True)
-
-    # print 'DB Cleaned'
-
-
-def createTestSubscriber():
-
-    cleanDB()
-    createFlavors()
-
-    # load user
-    user = User.objects.get(email="padmin@vicci.org")
-
-    # network template
-    private_template = NetworkTemplate()
-    private_template.name = 'Private Network'
-    private_template.save()
-
-    # creating the test subscriber
-    subscriber = CordSubscriberRoot(name='Test Subscriber 1', id=1)
-    subscriber.created = timezone.now()
-    subscriber.save()
-
-    # vRouter service
-    vrouter_service = VRouterService()
-    vrouter_service.name = 'service_vrouter'
-    vrouter_service.save()
-
-    # address pools
-    ap_vsg = AddressPool()
-    ap_vsg.service = vrouter_service
-    ap_vsg.name = 'addresses_vsg'
-    ap_vsg.addresses = '10.168.0.0'
-    ap_vsg.gateway_ip = '10.168.0.1'
-    ap_vsg.gateway_mac = '02:42:0a:a8:00:01'
-    ap_vsg.save()
-
-    # print 'vRouter created'
-
-    # cvpe image
-    vsg_img = createImage('ubuntu-vcpe4')
-
-    # Site
-    site = Site.objects.get(name='mysite')
-
-    # vSG service
-    vsg_service = VSGService()
-    vsg_service.name = 'service_vsg'
-
-    # vSG slice
-    vsg_slice = Slice(id=2)
-    vsg_slice.name = site.login_base + "_testVsg"
-    vsg_slice.service = vsg_service.id
-    vsg_slice.site = site
-    vsg_slice.caller = user
-    vsg_slice.default_image = vsg_img
-    vsg_slice.save()
-
-    vsg_service.save()
-
-    # volt service
-    volt_service = VOLTService()
-    volt_service.name = 'service_volt'
-    volt_service.save()
-
-    # vcpe slice
-    vcpe_slice = Slice(id=3)
-    vcpe_slice.name = site.login_base + "_testVcpe"
-    vcpe_slice.service = Service.objects.get(kind='vCPE')
-    vcpe_slice.site = site
-    vcpe_slice.caller = user
-    vcpe_slice.default_image =  vsg_img
-    vcpe_slice.save()
-
-    # print 'vcpe_slice created'
-
-    # create a lan network
-    lan_net = Network(id=1)
-    lan_net.name = 'lan_network'
-    lan_net.owner = vcpe_slice
-    lan_net.template = private_template
-    lan_net.save()
-
-    # print 'lan_network created'
-
-    # add relation between vcpe slice and lan network
-    vcpe_network = NetworkSlice()
-    vcpe_network.network = lan_net
-    vcpe_network.slice = vcpe_slice
-    vcpe_network.save()
-
-    # print 'vcpe network relation added'
-
-    # volt tenant
-    vt = VOLTTenant(subscriber=subscriber.id, id=1)
-    vt.s_tag = "222"
-    vt.c_tag = "432"
-    vt.provider_service_id = volt_service.id
-    vt.caller = user
-    vt.save()
-
-    # print "Subscriber Created"
-
-
-def deleteTruckrolls():
-    for s in VTRTenant.get_tenant_objects().all():
-        s.delete(purge=True)
-
-
-def setUpTruckroll():
-    service_vtr = VTRService()
-    service_vtr.name = 'service_vtr'
-    service_vtr.save()
-
-
-def createTruckroll():
-    setUpTruckroll()
-    tn = VTRTenant(id=1)
-    tn.created = timezone.now()
-    tn.save()
-
-
-def createFlavors():
-    small = Flavor(id=1)
-    small.name = "m1.small"
-    small.created = timezone.now()
-    small.save()
-
-    medium = Flavor(id=2)
-    medium.name = "m1.medium"
-    medium.created = timezone.now()
-    medium.save()
-
-    large = Flavor(id=3)
-    large.name = "m1.large"
-    large.created = timezone.now()
-    large.save()
-
-
-def createSlice():
-    site = Site.objects.get(name='mysite')
-    user = User.objects.get(email="padmin@vicci.org")
-
-    sl = Slice(id=1)
-    sl.created = timezone.now()
-    sl.name = site.login_base + "_testSlice"
-    sl.site = site
-    sl.caller = user
-    sl.save()
-    return sl
-
-
-def createDeployment():
-    deployment = Deployment(id=1)
-    deployment.created = timezone.now()
-    deployment.name = 'MyTestDeployment'
-    deployment.save()
-    return deployment
-
-
-def createImage(name):
-    img = Image(id=1)
-    img.name = name
-    img.created = timezone.now()
-    img.disk_format = 'QCOW2'
-    img.kind = 'vm'
-    img.save()
-    return img
-
-
-def createNode(deployment):
-    site = Site.objects.get(name='mysite')
-
-    site_deployment = SiteDeployment(id=1)
-    site_deployment.site = site
-    site_deployment.created = timezone.now()
-    site_deployment.deployment = deployment
-    site_deployment.save()
-
-    node = Node(id=1)
-    node.name = 'test-node'
-    node.created = timezone.now()
-    node.site = site
-    node.site_deployment = site_deployment
-    node.save()
-    return node
-
-
-def setupInstance():
-    deployment = createDeployment()
-    sl = createSlice()
-    node = createNode(deployment)
-    img = createImage('test-image')
-    # print {'image': img.id, 'deployment': deployment.id, 'slice': sl.id}
-    return {'image': img, 'deployment': deployment, 'slice': sl}
-
-
-def createInstance():
-    requirements = setupInstance()
-    user = User.objects.get(email="padmin@vicci.org")
-
-    instance = Instance(id=1)
-    instance.name = 'test-instance'
-    instance.created = timezone.now()
-    instance.node = Node.objects.all()[0]
-    instance.image = requirements['image']
-    instance.slice = requirements['slice']
-    instance.deployment = requirements['deployment']
-    instance.caller = user
-    instance.save()
-
-
-def createService():
-    service = Service(id=1)
-    service.name = 'test-service'
-    service.save()
-
-
-def createSite():
-    site = Site(id=1)
-    site.name = 'mysite'
-    site.created = timezone.now()
-    site.save()
-
-
-@hooks.before_all
-def my_before_all_hook(transactions):
-    # print "-------------------------------- Before All Hook --------------------------------"
-    cleanDB()
-
-
-@hooks.before_each
-def my_before_each_hook(transaction):
-    # print "-------------------------------- Before Each Hook --------------------------------"
-    # print transaction['name']
-    auth = doLogin('padmin@vicci.org', 'letmein')
-    transaction['request']['headers']['X-CSRFToken'] = auth['token']
-    transaction['request']['headers']['Cookie'] = "xossessionid=%s; xoscsrftoken=%s" % (auth['sessionid'], auth['token'])
-    createTestSubscriber()
-    setupInstance()
-    sys.stdout.flush()
-
-
-# @hooks.after_each
-# def my_after_each(transaction):
-#     print "-------------------------------- Test end --------------------------------"
-
-
-@hooks.before("Core > Services > View a Service Detail")
-def get_service(transaction):
-    createService()
-
-
-@hooks.before("Core > Services > Delete a Service")
-def delete_service(transaction):
-    createService()
-
-
-@hooks.before("Core > Sites > View a Site Detail")
-def get_site(transaction):
-    createSite()
-
-
-@hooks.before("Tenant > Truckroll Collection > Create a Truckroll")
-def test1(transaction):
-    setUpTruckroll()
-
-
-@hooks.before("Tenant > Truckroll Collection > View a Truckroll Detail")
-def test2(transaction):
-    deleteTruckrolls()
-    createTruckroll()
-
-
-@hooks.before("Tenant > Truckroll Collection > Delete a Truckroll Detail")
-def test3(transaction):
-    deleteTruckrolls()
-    createTruckroll()
-
-
-@hooks.before("Tenant > vOLT Collection > Create a vOLT")
-def test4(transaction):
-    # transaction['skip'] = True
-    VOLTTenant.objects.get(kind='vOLT').delete()
-
-
-@hooks.before("Core > Flavors > View a Flavors Detail")
-def test5(transaction):
-    createFlavors()
-
-
-@hooks.before("Core > Deployments > View a Deployment Detail")
-def get_deployments(transaction):
-    createDeployment()
-
-
-@hooks.before("Core > Deployments > Delete a Deployment")
-def delete_deployments(transaction):
-    createDeployment()
-
-
-@hooks.before("Core > Instances Collection > Create an Instance")
-def create_instance(transaction):
-    setupInstance()
-    transaction['skip'] = True
-
-
-@hooks.before("Core > Instances Detail > Get instance details")
-def get_instance(transaction):
-    createInstance()
-
-
-@hooks.before("Core > Instances Detail > Delete instance")
-def delete_instance(transaction):
-    createInstance()
-
-
-@hooks.before("Service > Example Services Collection > List all Example Services")
-def exampleTest(transaction):
-    transaction['skip'] = True
-
-
-@hooks.before("Service > Login > Log a user in the system")
-def before_logout_hook(transaction):
-    transaction['skip'] = True
-    # auth = doLogin('padmin@vicci.org', 'letmein')
-    # transaction['request']['body'] = {}
-    # transaction['request']['body']['xossessionid'] = auth['sessionid']
-
-
-@hooks.before("Utility > Logout > Log a user out of the system")
-def skip_logout(transaction):
-    transaction['skip'] = True
-
-
-@hooks.before("Utility > Onboarding > Get service status")
-def skip_onboarding(transaction):
-    transaction['skip'] = True
-
-
-@hooks.after("Utility > Tosca > Load a Tosca recipe")
-def check_tosca(transaction):
-    try:
-        site = Site.objects.get(name='Test Site')
-    except Exception, e:
-        transaction['fail'] = "Test Site has not been created"
diff --git a/xos/tests/api/package.json b/xos/tests/api/package.json
deleted file mode 100644
index 9a2ba84..0000000
--- a/xos/tests/api/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-  "name": "xos-api-docs",
-  "version": "1.0.0",
-  "description": "Api documentation for XOS",
-  "main": "index.js",
-  "scripts": {
-    "start": "gulp",
-    "test": "dredd",
-    "dry": "dredd --dry-run"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/teone/xos-api-docs.git"
-  },
-  "author": "Matteo Scandolo",
-  "license": "ISC",
-  "bugs": {
-    "url": "https://github.com/teone/xos-api-docs/issues"
-  },
-  "homepage": "https://github.com/teone/xos-api-docs#readme",
-  "dependencies": {
-    "dredd": "^1.0.8"
-  },
-  "devDependencies": {
-    "gulp": "^3.9.1",
-    "gulp-concat": "^2.6.0"
-  }
-}
diff --git a/xos/tests/api/source/base.md b/xos/tests/api/source/base.md
deleted file mode 100644
index 564798b..0000000
--- a/xos/tests/api/source/base.md
+++ /dev/null
@@ -1,3 +0,0 @@
-FORMAT: 1A
-
-# XOS
\ No newline at end of file
diff --git a/xos/tests/api/source/core/deployment.md b/xos/tests/api/source/core/deployment.md
deleted file mode 100644
index d6e9931..0000000
--- a/xos/tests/api/source/core/deployment.md
+++ /dev/null
@@ -1,124 +0,0 @@
-## Deployments [/api/core/deployments/{id}/]
-
-List of the XOS deployments
-
-### 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"
-                ]
-            }
-        ]
-
-### Create a deployment [POST]
-
-+ Request (application/json)
-
-        {
-            "humanReadableName": "MyDeployment",
-        }
-
-+ 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"
-            ]
-        }
-
-### Delete a Deployment [DELETE]
-
-+ Parameters
-    + id: 1 (number) - ID of the Deployment in the form of an integer
-
-+ Response 204
\ No newline at end of file
diff --git a/xos/tests/api/source/core/flavors.md b/xos/tests/api/source/core/flavors.md
deleted file mode 100644
index 78ca189..0000000
--- a/xos/tests/api/source/core/flavors.md
+++ /dev/null
@@ -1,102 +0,0 @@
-## Flavors [/api/core/flavors/{id}/]
-
-List of the XOS flavors
-
-### 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"
-                ]
-            }
-        ]
-
-### Create a Flavor [POST]
-
-+ Request (application/json)
-
-        {
-            "humanReadableName": "mq.test",
-        }
-
-+ 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"
-            ]
-        }
-
-### Delete a Flavors Detail [DELETE]
-
-+ Parameters
-    + id: 1 (number) - ID of the Flavors in the form of an integer
-
-+ Response 204 
\ No newline at end of file
diff --git a/xos/tests/api/source/core/group.md b/xos/tests/api/source/core/group.md
deleted file mode 100644
index 7298012..0000000
--- a/xos/tests/api/source/core/group.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Group Core
-
-List of the XOS Core API
\ No newline at end of file
diff --git a/xos/tests/api/source/core/instances.md b/xos/tests/api/source/core/instances.md
deleted file mode 100644
index b3f4ce9..0000000
--- a/xos/tests/api/source/core/instances.md
+++ /dev/null
@@ -1,145 +0,0 @@
-## Instances Collection [/api/core/instances/{?no_hyperlinks}]
-
-    + no_hyperlinks (number, optional) - Wheter to return relation with links or ids
-        + Default: `0`
-
-### 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"
-                ]
-            }
-        ]
-
-### Create an Instance [POST]
-
-+ Parameters
-    + no_hyperlinks: 1
-
-+ Request (application/json)
-
-        {
-            "name": "test-instance",
-            "image": 1,
-            "slice": 1,
-            "deployment": 1,
-            "node": 1
-        }
-
-+ 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": "test-instance",
-            "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"
-            ]
-        }
-
-## Instances Detail [/api/core/instances/{id}/]
-
-### Get instance details [GET]
-
-+ Parameters
-    + id: 1 (number) - ID of the Instance in the form of an integer
-
-+ 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"
-            ]
-        }
-
-### Delete instance [DELETE]
-
-+ Parameters
-    + id: 1 (number) - ID of the Instance in the form of an integer
-
-+ Response 204
\ No newline at end of file
diff --git a/xos/tests/api/source/core/nodes.md b/xos/tests/api/source/core/nodes.md
deleted file mode 100644
index bad3a3a..0000000
--- a/xos/tests/api/source/core/nodes.md
+++ /dev/null
@@ -1,26 +0,0 @@
-## 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": []
-            }
-        ]
diff --git a/xos/tests/api/source/core/services.md b/xos/tests/api/source/core/services.md
deleted file mode 100644
index fb2d4a2..0000000
--- a/xos/tests/api/source/core/services.md
+++ /dev/null
@@ -1,116 +0,0 @@
-## Services [/api/core/services/{id}/]
-
-### List all Services [GET]
-
-+ Response 200 (application/json)
-
-        [
-            {
-                "humanReadableName": "MyService",
-                "id": 1,
-                "created": "2016-05-05T23:06:33.835277Z",
-                "updated": "2016-05-05T23:06:33.835302Z",
-                "enacted": null,
-                "policed": null,
-                "backend_register": "{}",
-                "backend_status": "0 - Provisioning in progress",
-                "deleted": false,
-                "write_protect": false,
-                "lazy_blocked": false,
-                "no_sync": false,
-                "no_policy": false,
-                "description": null,
-                "enabled": true,
-                "kind": "vROUTER",
-                "name": "MyService",
-                "versionNumber": null,
-                "published": true,
-                "view_url": "/admin/vrouter/vrouterservice/$id$/",
-                "icon_url": null,
-                "public_key": null,
-                "private_key_fn": null,
-                "service_specific_id": null,
-                "service_specific_attribute": null
-            }
-        ]
-
-### Create a Service [POST]
-
-+ Request (application/json)
-
-        {
-            "name": "MyService",
-            "kind": "vROUTER"
-        }
-
-+ Response 200 (application/json)
-
-        {
-            "humanReadableName": "MyService",
-            "id": 1,
-            "created": "2016-05-05T23:06:33.835277Z",
-            "updated": "2016-05-05T23:06:33.835302Z",
-            "enacted": null,
-            "policed": null,
-            "backend_register": "{}",
-            "backend_status": "0 - Provisioning in progress",
-            "deleted": false,
-            "write_protect": false,
-            "lazy_blocked": false,
-            "no_sync": false,
-            "no_policy": false,
-            "description": null,
-            "enabled": true,
-            "kind": "vROUTER",
-            "name": "MyService",
-            "versionNumber": null,
-            "published": true,
-            "view_url": "/admin/vrouter/vrouterservice/$id$/",
-            "icon_url": null,
-            "public_key": null,
-            "private_key_fn": null,
-            "service_specific_id": null,
-            "service_specific_attribute": null
-        }
-
-### View a Service Detail [GET]
-
-+ Parameters
-    + id: 1 (number) - ID of the Service in the form of an integer
-
-+ Response 200 (application/json)
-
-        {
-                "humanReadableName": "MyService",
-                "id": 1,
-                "created": "2016-05-05T23:06:33.835277Z",
-                "updated": "2016-05-05T23:06:33.835302Z",
-                "enacted": null,
-                "policed": null,
-                "backend_register": "{}",
-                "backend_status": "0 - Provisioning in progress",
-                "deleted": false,
-                "write_protect": false,
-                "lazy_blocked": false,
-                "no_sync": false,
-                "no_policy": false,
-                "description": null,
-                "enabled": true,
-                "kind": "vROUTER",
-                "name": "MyService",
-                "versionNumber": null,
-                "published": true,
-                "view_url": "/admin/vrouter/vrouterservice/$id$/",
-                "icon_url": null,
-                "public_key": null,
-                "private_key_fn": null,
-                "service_specific_id": null,
-                "service_specific_attribute": null
-            }
-
-### Delete a Service [DELETE]
-
-+ Parameters
-    + id: 1 (number) - ID of the Service in the form of an integer
-
-+ Response 204
diff --git a/xos/tests/api/source/core/sites.md b/xos/tests/api/source/core/sites.md
deleted file mode 100644
index afd4f12..0000000
--- a/xos/tests/api/source/core/sites.md
+++ /dev/null
@@ -1,74 +0,0 @@
-## Sites [/api/core/sites/]
-
-### List all sites [GET]
-
-+ Response 200 (application/json)
-
-        [
-            {
-                "humanReadableName": "mysite",
-                "id": 1,
-                "created": "2016-08-18T21:21:03.429133Z",
-                "updated": "2016-08-18T21:21:06.676008Z",
-                "enacted": null,
-                "policed": null,
-                "backend_register": "{}",
-                "backend_status": "0 - Provisioning in progress",
-                "deleted": false,
-                "write_protect": false,
-                "lazy_blocked": false,
-                "no_sync": false,
-                "no_policy": false,
-                "name": "mysite",
-                "site_url": "http://opencloud.us/",
-                "enabled": true,
-                "hosts_nodes": true,
-                "hosts_users": true,
-                "longitude": null,
-                "latitude": null,
-                "login_base": "mysite",
-                "is_public": true,
-                "abbreviated_name": "",
-                "deployments": [
-                    "1"
-                ]
-            }
-        ]
-
-## Sites [/api/core/sites/{id}/]
-
-### View a Site Detail [GET]
-
-+ Parameters
-    + id: 1 (number) - ID of the Site in the form of an integer
-
-+ Response 200 (application/json)
-        
-        {
-            "humanReadableName": "mysite",
-            "id": 1,
-            "created": "2016-08-18T21:21:03.429133Z",
-            "updated": "2016-08-18T21:21:06.676008Z",
-            "enacted": null,
-            "policed": null,
-            "backend_register": "{}",
-            "backend_status": "0 - Provisioning in progress",
-            "deleted": false,
-            "write_protect": false,
-            "lazy_blocked": false,
-            "no_sync": false,
-            "no_policy": false,
-            "name": "mysite",
-            "site_url": "http://opencloud.us/",
-            "enabled": true,
-            "hosts_nodes": true,
-            "hosts_users": true,
-            "longitude": null,
-            "latitude": null,
-            "login_base": "mysite",
-            "is_public": true,
-            "abbreviated_name": "",
-            "deployments": [
-                "1"
-            ]
-        }
diff --git a/xos/tests/api/source/core/slices.md b/xos/tests/api/source/core/slices.md
deleted file mode 100644
index 050aade..0000000
--- a/xos/tests/api/source/core/slices.md
+++ /dev/null
@@ -1,44 +0,0 @@
-## Slices [/api/core/slices/{id}/]
-
-List of the XOS slices
-
-### 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/"
-                ]
-            }
-        ]
-        
\ No newline at end of file
diff --git a/xos/tests/api/source/core/users.md b/xos/tests/api/source/core/users.md
deleted file mode 100644
index 5a6518a..0000000
--- a/xos/tests/api/source/core/users.md
+++ /dev/null
@@ -1,37 +0,0 @@
-## 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"
-            }
-        ]
-        
\ No newline at end of file
diff --git a/xos/tests/api/source/service/exampleservice.md b/xos/tests/api/source/service/exampleservice.md
deleted file mode 100644
index df79fc7..0000000
--- a/xos/tests/api/source/service/exampleservice.md
+++ /dev/null
@@ -1,13 +0,0 @@
-## 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"
-            }
-        ]
diff --git a/xos/tests/api/source/service/group.md b/xos/tests/api/source/service/group.md
deleted file mode 100644
index daf5737..0000000
--- a/xos/tests/api/source/service/group.md
+++ /dev/null
@@ -1 +0,0 @@
-# Group Service
\ No newline at end of file
diff --git a/xos/tests/api/source/service/onos.md b/xos/tests/api/source/service/onos.md
deleted file mode 100644
index 33e39d3..0000000
--- a/xos/tests/api/source/service/onos.md
+++ /dev/null
@@ -1,18 +0,0 @@
-## ONOS Services Collection [/api/service/onos/]
-
-List of the active onos services
-
-### 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": ""
-            }
-        ]
\ No newline at end of file
diff --git a/xos/tests/api/source/service/vsg.md b/xos/tests/api/source/service/vsg.md
deleted file mode 100644
index 1cec60e..0000000
--- a/xos/tests/api/source/service/vsg.md
+++ /dev/null
@@ -1,15 +0,0 @@
-## 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
-            }
-        ]
\ No newline at end of file
diff --git a/xos/tests/api/source/tenant/cord/subscribers.md b/xos/tests/api/source/tenant/cord/subscribers.md
deleted file mode 100644
index b9397a5..0000000
--- a/xos/tests/api/source/tenant/cord/subscribers.md
+++ /dev/null
@@ -1,228 +0,0 @@
-## Subscribers [/api/tenant/cord/subscriber/{subscriber_id}/]
-
-Resource related to the CORD Subscribers.
-
-### 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"
-        }
\ No newline at end of file
diff --git a/xos/tests/api/source/tenant/cord/truckroll.md b/xos/tests/api/source/tenant/cord/truckroll.md
deleted file mode 100644
index 2792863..0000000
--- a/xos/tests/api/source/tenant/cord/truckroll.md
+++ /dev/null
@@ -1,81 +0,0 @@
-## Truckroll Collection [/api/tenant/truckroll/{truckroll_id}/]
-
-Virtual Truckroll, enable to perform basic test on user connectivity such as ping, traceroute and tcpdump.
-
-### 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
diff --git a/xos/tests/api/source/tenant/cord/volt.md b/xos/tests/api/source/tenant/cord/volt.md
deleted file mode 100644
index 3f644ad..0000000
--- a/xos/tests/api/source/tenant/cord/volt.md
+++ /dev/null
@@ -1,76 +0,0 @@
-## vOLT Collection [/api/tenant/cord/volt/{volt_id}/]
-
-OLT devices aggregate a set of subscriber connections
-
-### 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"
-            }
-        }
diff --git a/xos/tests/api/source/tenant/group.md b/xos/tests/api/source/tenant/group.md
deleted file mode 100644
index 52dde1c..0000000
--- a/xos/tests/api/source/tenant/group.md
+++ /dev/null
@@ -1 +0,0 @@
-# Group Tenant
\ No newline at end of file
diff --git a/xos/tests/api/source/tenant/onos/app.md b/xos/tests/api/source/tenant/onos/app.md
deleted file mode 100644
index c77365a..0000000
--- a/xos/tests/api/source/tenant/onos/app.md
+++ /dev/null
@@ -1,14 +0,0 @@
-## 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"
-            }
-        ]
\ No newline at end of file
diff --git a/xos/tests/api/source/utility/group.md b/xos/tests/api/source/utility/group.md
deleted file mode 100644
index cac339c..0000000
--- a/xos/tests/api/source/utility/group.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Group Utility
-
-List of the XOS Utility API
\ No newline at end of file
diff --git a/xos/tests/api/source/utility/utility.md b/xos/tests/api/source/utility/utility.md
deleted file mode 100644
index 2dce77b..0000000
--- a/xos/tests/api/source/utility/utility.md
+++ /dev/null
@@ -1,174 +0,0 @@
-## 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)
-
-## Port Forwarding [/api/utility/portforwarding/]
-
-Contains the set of port forwarding mappings for each compute node.
-Used on OpenCloud to setup port forwarding for nat-net.
-
-### List port forwarding objects [GET]
-
-+ Response 200 (application/json)
-
-        [
-            {
-                "id": 79,
-                "ip": "172.16.0.36",
-                "ports": "tcp 2222, tcp 25566",
-                "hostname": "node1.opencloud.us"
-            },
-            {
-                "id": 131,
-                "ip": "172.16.0.16",
-                "ports": "udp 53, tcp 8017",
-                "hostname": "node2.opencloud.us"
-            }
-        ]
-
-## Slices Plus [/api/utility/slicesplus/]
-
-A list of slices with addictional information, it is used in the Tenant custom dashboard.
-
-### List Slices objects [GET]
-
-+ Response 200 (application/json)
-
-        [
-             {
-                "humanReadableName": "mysite_management",
-                "id": 2,
-                "created": "2016-06-29T18:43:50.730912Z",
-                "updated": "2016-06-29T18:43:50.730789Z",
-                "enacted": null,
-                "name": "mysite_management",
-                "enabled": true,
-                "omf_friendly": false,
-                "description": "",
-                "slice_url": "",
-                "site": 2,
-                "max_instances": 10,
-                "service": null,
-                "network": "noauto",
-                "mount_data_sets": "GenBank",
-                "default_image": null,
-                "default_flavor": null,
-                "serviceClass": null,
-                "creator": 2,
-                "networks": [],
-                "network_ports": "",
-                "backendIcon": "/static/admin/img/icon_clock.gif",
-                "backendHtml": "<span title=\"Pending sync, last_status = 0 - Provisioning in progress\"><img src=\"/static/admin/img/icon_clock.gif\"></span>",
-                "current_user_roles": [],
-                "instance_distribution": {},
-                "instance_distribution_ready": {},
-                "instance_total": 0,
-                "instance_total_ready": 0,
-                "instance_status": {},
-                "users": [],
-                "user_names": [],
-                "current_user_can_see": true
-            }
-        ]
-
-## Synchronizer [/api/utility/synchronizer/]
-
-Lists the Diag objects for synchronizers. From here you can get the synchronizer status.
-
-### List Diag objects [GET]
-
-+ Response 200 (application/json)
-
-        [
-            {
-                "id": 3,
-                "name": "onboarding",
-                "backend_status": "1 - Bottom Of Loop",
-                "backend_register": "{\"last_duration\": 0.18996095657348633, \"last_run\": 1467923907.908469}"
-            }
-        ]
-
-## Onboarding [/api/utility/onboarding/{service}/ready]
-
-Used to get the status of onboarding, to determine if services have been to successfully onboarded and if the XOS UI container has been built.
-
-### Get service status [GET]
-
-+ Parameters
-    + service: services/vsg (string) - Name of the service to wait for
-
-
-+ Response 200 (text/plain)
-
-        true
-
-## Tosca [/api/utility/tosca/run/]
-
-### Load a Tosca recipe [POST]
-
-+ Request (application/json)
-
-        {
-            "recipe": "tosca_definitions_version: tosca_simple_yaml_1_0\n\ndescription: Onboard the exampleservice\n\nimports:\n   - custom_types/xos.yaml\n\ntopology_template:\n  node_templates:\n    test_site:\n      type: tosca.nodes.Site\n      properties:\n          display_name: Test Site\n          site_url: https://www.onlab.us/"
-        }
-
-+ Response 200 (application/json)
-
-        {
-            "log_msgs":[
-                "ordered_names: ['test_site']",
-                "Created Site 'Test Site'"
-            ]
-        }
-
-## Ssh Keys [/api/utility/sshkeys/]
-
-Returns the set of ssh keys for instances. Used on OpenCloud to configure ssh-proxy to instances.
-
-### List ssh keys by instance [GET]
-
-+ Response 200 (application/json)
-
-        [
-            {
-                "id": "instance-00000001",
-                "public_keys": [
-                    "ssh-rsa xxyyzz\r\n"
-                ],
-                "node_name": "node1.opencloud.us"
-            },
-            {
-                "id": "instance-00000001",
-                "public_keys": [
-                    "ssh-rsa xxyyzz\r\n"
-                ],
-                "node_name": "node2.opencloud.us"
-            }
-        ]
\ No newline at end of file
