Introduction
Logical Folders are containers for storing and organizing inventory objects, in this case virtual machines. As Just like the network resource, a Folder has a Managed Object Reference (moref) which is required for either virtual machine deployment (where a virtual machine will be placed upon creation) or updating virtual machine containing folder (movedmove).
The /v2/folder resource lists folders you are allowed to access in our environment. If by any chance you cannot see a folder and you add it to a new virtual machine creation request or a virtual machine change request, they will not be successfully processed. If you believe you need access to a specific folder, please let us know.
Panel | ||||||
---|---|---|---|---|---|---|
On this page:
|
The following table shows a brief description and HTTP methods allowed to interact with logical folders.
language | bash |
---|
Resource | URI | Description | GET | POST | PUT | PATCH |
---|
Folder | /folder | Logical Folder Management resource. List permitted folders and their attributes | ||||
Folder Object | /folder/<moref> | Get logical folder attributes. | ||||
Folder Name | /folder/<moref>/name | Rename object. | ||||
Folder Children | /folder/<moref>/children | Get children folders if any. |
title | OPTIONS HTTP method |
---|
Remember, you can also show what methods are allowed and method description, parameters, etc. by making an OPTIONS HTTP request to /v2/folder.
Folder Parent | /folder/<moref>/parent | Get or move folder to a different parent. | ||||
Folder VMs | /folder/<moref>/vm | List children virtual machines. | ||||
Folder Permission | /folder/<moref>/permission | List object permission. |
Note | ||||
---|---|---|---|---|
TK stores the Cloud API Token generated as a result of the following POST request to the /auth/request-token resource:
For example, extracting the token with the jq command:
|
|
List
In order to list allowed Folders you should make a GET request to the endpoint /v2/folder, passing your access token. As a result, you will get a reference URI /v2/folder/<moref> to get detailed information about that folder, human readable name and Managed Object Reference (moref).
folder
name..
The following examples implements HTTPie and CURL to list all folders a user have access to:
Code Block |
---|
http -a $TK GET "https://vss-api.eis.utoronto.ca:8001/v2/folder" "Authorization: Bearer $TK" curl -uH "Authorization: Bearer $TK" -X GET "https://vss-api.eis.utoronto.ca:8001/v2/folder" |
The following examples implements HTTPie and CURL to list all folders a user have access to:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "_links": { "apiself": "https://vss-api.eis.utoronto.ca:8001/v2/folder?per_page=3&filter=path,like,%25Testing%25" }, "data": [ { "self "created_on": "https://vss-api.eis.utoronto.ca:8001/v2/folder"2019-07-17 Wed 15:18:59 EDT", "has_children": false, }, "has_parent": true, "data": [ "moref": "group-v8923", {"name": "ut20170621092129", "_linksparent": { "selfmoref": "https://vss-api.eis.utoronto.ca:8001/v2/folder/group-v6736group-v7350", "name": "Testing", "parent_moref": "group-v7349", "path": "VSS > Development > Testing", "vim_type": "vim.Folder" }, "full_parent_moref": "group-v7350", "path": "VSS > SandboxDevelopment > jm > APIDemo"Testing > ut20170621092129", "updated_on": "2019-07-17 Wed 15:18:59 EDT", "vim_type": "vim.Folder" }, { "created_on": "2019-07-17 Wed 15:18:59 EDT", "has_children": true, "has_parent": true, "moref": "group-v6736",v7350", "name": "Testing", "parent": { "moref": "group-v7349", "name": "APIDemo""Development", "parent_moref": "group-v305", "path": "VSS > Development", "vim_type": "vim.Folder" }, "parent_moref": "jmgroup-v7349", "path": "VSS > Development > Testing", "updated_on": "2019-07-17 Wed 15:18:59 EDT", "vim_type": "vim.Folder" }, { "created_links": { on": "2019-07-17 Wed 15:18:59 EDT", "has_children": true, "selfhas_parent": "https://vss-api.eis.utoronto.ca:8001/v2/folder/group-v6749"true, "moref": "group-v8900", "name": "ut20170135153548", "parent": { "moref": "group-v7350", }, "name": "Testing", "full_parent_moref": "group-v7349", "path": "VSS > SandboxDevelopment > jm > DockerDatacenter" Testing", "vim_type": "vim.Folder" }, "parent_moref": "group-v6749v7350", "path": "VSS > Development > Testing > ut20170135153548", "nameupdated_on": "DockerDatacenter2019-07-17 Wed 15:18:59 EDT", "parentvim_type": "jmvim.Folder" } ], "meta": { "count": 3, "pages": { ": 2first_url": "https://vss-api.eis.utoronto.ca/v2/folder?per_page=100&page=1&expand=True", "last_url": "https://vss-api.eis.utoronto.ca/v2/folder?per_page=100&page=1&expand=True", "next_url": null, "page": 1, "pages": 1, "per_page": 100, "prev_url": null, "total": 3 }, "time": "0.46083s11766s", "user": "jm" } } |
Filters
This resource has two main filters to narrow down the number of Networks shown in the result.
Name | Description |
---|---|
Name | Folder name |
moref | vCenter Managed Object Reference (moref) |
Paging
All requests to the /folder URL are paginated. The response body includes a 'meta.pages' key with everything to navigate through the results, for instance:
Key | Description |
---|---|
first_url | Contain the URLs to navigate through results. |
last_url | |
prev_url | |
next_url | |
page | Current page |
pages | Total number of pages |
per_page | Results per page. Maximum 250; Default 10. |
total | Total number of results |
Results per page can be set by including the parameter in the URL query, so we can get the desired number of elements per page, for example:
Code Block |
---|
http GET "https://vss-api.eis.utoronto.ca/v2/folder?per_page=1" "Authorization: Bearer $TK"
curl -H "Authorization: Bearer $TK" -X GET "https://vss-api.eis.utoronto.ca/v2/folder?per_page=1" |
Filtering
Folders can be filtered by adding the filter argument to the query string in the following format:
Code Block |
---|
filter=<field_name>,<operator>,<value> |
Operators can be:
Operator | Description |
---|---|
eq | Equals |
ne | Not equal |
lt | Lower than |
le | Lower equal |
gt | Greater than |
ge | Greater equal |
like | Matching pattern |
in | Match value in many items separated by commas |
A resource can be filtered by as many attributes the request has, for instance /folder can be filtered by moref, path, created_on, name, etc. Thus, the following example will filter only by name=Prod
Code Block |
---|
http GET "https://vss-api.eis.utoronto.ca/v2/folder?per_page=10&expand=1&filter=name,like,%Prod%" "Authorization: Bearer $TK" |
Sorting
The resource provides also attribute sorting by adding the sort parameter in the URL query string in the following format:
Code Block |
---|
sort=<field_name>,<asc|desc> |
The following example shows how to filter by label:
Code Block |
---|
http GET "https://vss-api.eis.utoronto.ca/v2/folder?per_page=10&expand=1&filter=name,like,%Prod%&sort=label,desc" "Authorization: Bearer $TK"
curl -X GET -H "Authorization: Bearer $TK" "https://vss-api.eis.utoronto.ca/v2/network?per_page=10&expand=1&filter=name,like,%VL%&sort=label,desc" |
Create
To create a new folder you just need to submit a request to /v2/folder/<moref> and provide the name of the new folder as a parameter. So, the folder <moref> will be parent of the new folder. For this example we will create a subfolder in APIDemo > APISubFolder, so request will be crafted as follows:
Code Block |
---|
http -a $TK GETPOST "https://vss-api.eis.utoronto.ca:8001/v2/folder?name=API" http -a $TK GET "/group-v6736 "Authorization: Bearer $TK" name=APISubFolder curl -H "Content-Type: application/json" -H "Authorization: Bearer $TK" -X POST https://vss-api.eis.utoronto.ca:8001/v2/folder?moref=6736"/group-v6736 -d '{"name": "APISubFolder"}' |
Code Block | ||
---|---|---|
| ||
HTTP/1.1 202 ACCEPTED
Allow: POST, HEAD, OPTIONS, GET
Connection: keep-alive
Content-Length: 400
Content-Type: application/json
Date: Wed, 11 May 2016 17:19:15 GMT
Location: https://vss-api.eis.utoronto.ca/v2/request/task/fff43ba4-40c1-40df-bf5b-02f5424e091a
Server: nginx
X-RateLimit-Limit: 3000
X-RateLimit-Remaining: 2997
X-RateLimit-Reset: 1462989600 |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "data": { "_links": { "apirequest": "https://vss-api.eis.utoronto.ca:8001/v2/request/folder/2", "selftask": "https://vss-api.eis.utoronto.ca:8001/v2/folder"/request/task/fff43ba4-40c1-40df-bf5b-02f5424e091a" }, "data "message": "VM Folder creation request has been accepted for processing", "name": ["Accepted", { "state": "Submitted", "status": 202 }, "_linksmeta": { "time": "0.07877s", "selfuser": "jm" } } |
Update
Renaming or moving folders between your folder tree is possible by making a PUT request to the URI folder in question sending both the attribute and value you wish to update. Currently, we support name and parent as supported attributes.
Attribute | Description |
---|---|
name | folder new name |
parent | managed object reference of new parent folder |
The following request illustrates how to update a folder's name (group-v6736) to NewAPIFolder:
Code Block |
---|
http PUT https://vss-api.eis.utoronto.ca:8001/v2/folder/group-v6736 "Authorization: Bearer $TK" attribute="name" value="NewAPIFolder" curl -H "Content-Type: application/json" -H "Authorization: Bearer $TK" -X PUT https://vss-api.eis.utoronto.ca/v2/folder/group-v6736 -d '{"attribute": "name", "value": "NewAPIFolder"}' |
HTTP response would look something like:
Code Block | ||
---|---|---|
| ||
HTTP/1.1 202 ACCEPTED Allow: HEAD, GET, PUT, POST, OPTIONS Connection: keep-alive Content-Length: 437 Content-Type: application/json Date: }, Mon, 27 Jun 2016 14:38:32 GMT Location: https://vss-api.eis.utoronto.ca/v2/request/task/d7eec47d-fd14-4958-a5ff-bfb93a191a01 Server: nginx X-RateLimit-Limit: 3000 X-RateLimit-Remaining: 2996 X-RateLimit-Reset: 1467039600 |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "full_pathdata": "VSS > Sandbox > jm > APIDemo",{ "_links": { "morefrequest": "group-v6736https://vss-api.eis.utoronto.ca/v2/request/folder/3", "nametask": "APIDemo", https://vss-api.eis.utoronto.ca/v2/request/task/d7eec47d-fd14-4958-a5ff-bfb93a191a01" }, "message": "VM Folder change request has been accepted for processing", "parentname": "jmAccepted", } "state": "Submitted", ], "metastatus": {202 }, "countmeta": 1,{ "time": "0.46083s39327s", "user": "jm" } } |
List specific folder info
Some of the attributes will have an object value. Such is the case of items in attribute vms.
Name | Type | Description |
---|---|---|
vms | array | Array of Virtual Machines in folder. |
vmCount | integer | Number of virtual machines in folder |
The following example, requests information about a particular Folder using the base resource /v2/folder and appending the moref to get the URI /v2/folder/group-v6736:
Code Block | ||||||
---|---|---|---|---|---|---|
Tip | ||||||
If you wish to update any parent folder, just select the new parent moref and include it in the PUT request attribute's value, i.e.
|
HTTP response body would look something like:
Where group-v1234 would be new parent of group-v6736 |