CloudLabs provides hands-on lab environments for individual learners and organizations for events and workshops. CloudLabs REST API provides end points to create and manage your own labs and environments.
Following are the supported authentication methods:
Authentication on behalf of Azure AD App (using client credentials).
Authentication on behalf of Azure AD User (Azure AAD Authentication).
Authentication on behalf of Azure AD User (OAuth 2.0 resource owner Password credentials Grant). Few entities associated with CloudLabs:
Tenant: Partner/Customer who is authorized by Spektra Systems to create/manage labs in CloudLabs Portal.
Lab: It can be a classroom/workshop with pre-configured template/subscription for lab environments.
Attendee: End user who is going to use the lab environment.
Deployment: Environment setup in Azure.
Before trying out our API, please make sure you have a valid apiURL, api-version, Ocp-Apim-SubscriptionKey, and data required for authentication.
Table of Contents
Authentication on behalf of Azure AD App 3
Meta data – Attendee Status 27
Authentication on behalf of Azure AD App
Here Authentication is done in the context of an Azure AD App provided by Spektra Systems. This will be unique for a tenant. For accessing any of the endpoints mentioned in this document, you need to pass authorization token and Ocp-Apim-Subscription-Key in the Headers. Directory Id, Client Id, Client Secret and Scope will be shared by Spektra Systems.
GET https://login.microsoftonline.com/{directoryId}/oauth2/v2.0/token Headers
Name | Value |
Content-Type | application/x-www-form-urlencoded |
Request Body
Name | Value |
client_id | Use data provided by Spektra Systems |
client_secret | Use data provided by Spektra Systems |
scope | Use data provided by Spektra Systems |
grant_type | client_credentials |
Sample Response Status Code: 200 Body: JSON Object
{
"token_type": "Bearer", "expires_in": 3599,
"ext_expires_in": 3599,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6InBpVmxsb1FEU01LeGgxbTJ5Z3FHU1ZkZ 0ZwQSIsImtpZCI6InBpVmxsb1FEU01LeGgxbTJ5Z3FHU1ZkZ0ZwQSJ9.eyJhdWQiOiJhcGk6Ly8wMGMwNjVkMi1jNmQwLTRhZm YtYjJjNy1kOTg2YzllN2Y3ZTAiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9iYWQ1MmY2Mi0wOTU3LTQ3ZTEtYjA0 Ny04YTg3NzhlMjdiNjEvIiwiaWF0IjoxNTc3Nzc1MzA3LCJuYmYiOjE1Nzc3NzUzMDcsImV4cCI6MTU3Nzc3OTIwNywiYWlvIj oiNDJWZ1lPaDdIK2hkODRtWGVmN2JTLy91ZGpuSEFnQT0iLCJhcHBpZCI6ImY3ZTNhZDEyLTU4YmEtNGM2MC1iMjkxLWFkMWRl
NTQ3OWY2NiIsImFwcGlkYWNyIjoiMSIsImlkcCI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0L2JhZDUyZjYyLTA5NTctNDdlMS 1iMDQ3LThhODc3OGUyN2I2MS8iLCJvaWQiOiIwZWQxZWY5Yi03NTY0LTRiYmUtYWRiZC02MDVhNDY5ZWU5ZWMiLCJyb2xlcyI"
}
Get Tenants
This endpoint returns information (name, tenantId) about tenants associated with user/app from which request is originated. TenantId retrieved in the response is mandatory for all other requests.
GET {apiURL}/api/tenants URI Parameters
Name | In | Required | Type | Description |
api-version | query | True | string | The API version to use for this operation. |
Headers
Name | Type | Description |
Authorization | string | OAuth 2.0 access token obtained from Cloud Labs OAuth2 V2. Supported grant types: Authorization code, Client credentials. |
Ocp-Apim-Subscription-Key | string | Subscription key which provides access to this API. Found in your Profile. |
Sample Response Status Code: 200 Body: JSON Object
{
"previousLink": null, "totalItems": 1, "value": [
{
"name": "Contoso",
"tenantId": "4a203453-4c37-4874-8c4b-96d865f8371a"
}
],
"nextLink": null
}
Get Labs
This endpoint returns all active labs associated with requested tenant. LabId in the response, can be used in all scenarios related to a lab.
GET {apiURL}/api/tenants/{tenantId}/labs URI Parameters
Name | In | Required | Type | Description |
tenantId | path | True | string | Id which uniquely identifies a tenant |
labType | query | False | string | Accepted values: instructor-led, self-paced, demo |
api-version | query | True | string | The API version to use for this operation. |
Name | Type | Description |
Authorization | string | OAuth 2.0 access token obtained from Cloud Labs OAuth2 V2. Supported grant types: Authorization code, Client credentials. |
Ocp-Apim-Subscription-Key | string | Subscription key which provides access to this API. Found in your Profile. |
Sample Response Status Code: 200 Body: JSON Object
{
"previousLink": null, "totalItems": 2, "value": [
{
"name": "Azure Functions & Logic App Serverless", "labId": "8352c78d-5c1b-4527-9e0b-435a8ff884e1",
"labCode": "AZ001",
"labType": "demo",
"launchUrl": "https://cloudlabs-manage.azurewebsites.net/#/odl/8352c78d-5c1b-45279e0b-435a8ff884e1",
"description": "Test", "deploymentMaxIdleTime": "1H",
"usesRdp": false,
"status": "registration_open",
"approvalStatus": "registration_activation_code_required", "maxNumberOfAttendees": null,
"maxNumberOfRetake": "5", "expiryDate": "2019-12-31T00:00:00",
"ownerEmail": "akash@spektra.com", "allowPersonalEmailForRegistration": true, "allowAttendeeToDeleteEnvironment": false, "enableStandByDeployments": true, "regions": [
"West Central US"
],
"tags": [
"azure"
],
"jobRoles": [
"Application Developer", "Architects",
"Business Analyst"
],
"audiences": [
"Data Developer", "Enterprise Developer"
],
"topics": [
"Administration", "Application Innovation"
],
"levels": [
Headers
"Intermediate"
],
"products": [
"Apache Spark", "Application Gateway"
]
},
{
"name": "Migrating SQL Database to Azure", "labId": "c12d590c-95f2-42c8-bafe-1af312cf206d", "labCode": "sdktest",
"labType": "self-paced",
"launchUrl": "https://cloudlabs-dev.azurewebsites.net/#/launch/c12d590c-95f2-
42c8bafe-1af312cf206d",
"description": "Please sign-up to get access.", "deploymentMaxIdleTime": "1H",
"usesRdp": false,
"status": "registration_open", "approvalStatus": "registration_required", "maxNumberOfAttendees": null, "maxNumberOfRetake": "",
"expiryDate": "2019-12-31T00:00:00",
"ownerEmail": "akash.premaraj@spektrasystems.com", "allowPersonalEmailForRegistration": true, "allowAttendeeToDeleteEnvironment": false, "enableStandByDeployments": true,
"regions": [
"West Central US"
],
"tags": [
"azure"
],
"jobRoles": [],
"audiences": [],
"topics": [],
"levels": [],
"products": []
}
],
"nextLink": null
}
Get Lab By Id
This endpoint returns data specific to a lab.
GET {apiURL}/api/tenants/{tenantId}/labs/{labId} URI Parameters
Name | In | Required | Type | Description |
tenantId | path | True | string | Id which uniquely identifies a tenant |
labId | path | True | string | Id which uniquely identifies a lab |
api-version | query | True | string | The API version to use for this operation. |
Name | Type | Description |
Authorization | string | OAuth 2.0 access token obtained from Cloud Labs OAuth2 V2. Supported grant types: Authorization code, Client credentials. |
Ocp-Apim-Subscription-Key | string | Subscription key which provides access to this API. Found in your Profile. |
Sample Response Status Code: 200 Body: JSON Object
{
"name": "Azure Functions & Logic App Serverless", "labId": "8352c78d-5c1b-4527-9e0b-435a8ff884e1",
"labCode": "sdktest", "labType": "demo",
"launchUrl": "https://cloudlabs-manage.azurewebsites.net/#/odl/8352c78d-5c1b-45279e0b-435a8ff884e1",
"description": "Test", "deploymentMaxIdleTime": "1H",
"usesRdp": false,
"status": "registration_open",
"approvalStatus": "registration_activation_code_required", "maxNumberOfAttendees": null,
"maxNumberOfRetake": "5", "expiryDate": "2019-12-31T00:00:00",
"ownerEmail": "akash@spektra.com", "allowPersonalEmailForRegistration": true, "allowAttendeeToDeleteEnvironment": false, "enableStandByDeployments": true, "regions": [
"West Central US"
],
"tags": [
"azure"
],
"jobRoles": [
"Application Developer", "Architects",
"Business Analyst"
],
"audiences": [
"Data Developer", "Enterprise Developer"
],
"topics": [
"Administration", "Application Innovation"
],
"levels": [
"Intermediate"
Headers
],
"products": [
"Apache Spark", "Application Gateway"
]
}
Add Deployments
This can be used to create pre-created lab environments for attendees before the lab begins. Number of environments/deployments required needs to be mentioned in the request body.
POST {apiURL}/api/tenants/{tenantId}/labs/{labId}/deployments URI Parameter
Name | In | Required | Type | Description |
tenantId | path | True | string | Id which uniquely identifies a tenant |
labId | path | True | string | Id which uniquely identifies a lab |
api-version | query | True | string | The API version to use for this operation. |
Headers
Name | Type | Description |
Authorization | string | OAuth 2.0 access token obtained from Cloud Labs OAuth2 V2. Supported grant types: Authorization code, Client credentials. |
Ocp-Apim-Subscription-Key | string | Subscription key which provides access to this API. Found in your Profile. |
Content-Type | string | Value: application/json |
Request Body (JSON)
Name | Required | Type | Description |
count | True | integer | Number of deployments to be deployed for lab |
Sample Response
Status Code: 204 No Content Body:
Empty
Get Lab Summary
Before starting a lab, this endpoint can be used to check the lab deployment status, user count, etc. GET {apiURL}/api/tenants/{tenantId}/labs/{labId}/summary
URI Parameter
Name | In | Required | Type | Description | ||
tenantId | path | True | string | Id which uniquely identifies a tenant | ||
labId | path | True | string | Id which uniquely identifies a lab | ||
api-version | query | True | string | The API version to use for this operation. | ||
Name | Type | Description | ||||
Authorization | string | OAuth 2.0 access token obtained from Cloud Labs OAuth2 V2. Supported grant types: Authorization code, Client credentials. | ||||
Ocp-Apim-Subscription-Key | string | Subscription key which provides access to this API. Found in your Profile. | ||||
Sample Response Status Code: 200 Body: JSON Object
{
"initiatedDeploymentCount": 1,
"standByDeploymentCount": 0
}
Add Attendee
This endpoint can be used to add an attendee to a lab.
POST {apiURL}/api/tenants/{tenantId}/labs/{labId}/attendees URI Parameters
Name | In | Required | Type | Description |
tenantId | path | True | string | Id which uniquely identifies a tenant |
labId | path | True | string | Id which uniquely identifies a lab |
autoLaunch | query | False | bool | True if you want a deployment along with attendee registration |
api-version | query | True | string | The API version to use for this operation. |
Headers
Name | Type | Description |
Authorization | string | OAuth 2.0 access token obtained from Cloud Labs OAuth2 V2. Supported grant types: Authorization code, Client credentials. |
Headers
Ocp-Apim-Subscription-Key | string | Subscription key which provides access to this API. Found in your Profile. |
Content-Type | String | Value: application/json |
Request Body (JSON)
Name | Required | Type | Description |
firstName | True | string | first name of attendee |
lastName | True | string | last name of attendee |
True | string | email address of attendee |
Sample Response Status Code: 200
Body: JSON Object
{
"attendeeId": "9a6c5f31-141a-4a19-921f-56ab091175ca",
"labLaunchURL": "https://cloudlabs-manage.azurewebsites.net/#/odl/c12d590c-95f2-42c8-bafe-1af312cf206d/9a6c5f31-141a-4a19-921f-56ab091175ca"
}
This launch URL can be given to attendee. Once this is viewed in a browser, attendee will get either a launch button (if environment is not launched previously) or deployment details/VM + Guide experience.
Add Attendee (Anonymous)
This endpoint can be used to add an anonymous attendee to a lab. Since the attendee’s name and email address are optional, the request body can be left empty. Once the launch URL is opened in a browser, the environment will launch automatically. This is supported only if the ODL approval type is configured with “Anonymous” approval type.
POST {apiURL}/api/tenants/{tenantId}/labs/{labId}/attendees URI Parameters
Name | In | Required | Type | Description |
tenantId | path | True | string | Id which uniquely identifies a tenant |
labId | path | True | string | Id which uniquely identifies a lab |
autoLaunch | query | False | bool | True if you want a deployment along with attendee registration |
api-version | query | True | string | The API version to use for this operation. |
Headers
Name | Type | Description |
Authorization | string | OAuth 2.0 access token obtained from Cloud Labs OAuth2 V2. Supported grant types: Authorization code, Client credentials. |
Ocp-Apim-Subscription-Key | string | Subscription key which provides access to this API. Found in your Profile. |
Content-Type | String | Value: application/json |
Request Body (JSON) Empty
Sample Response Status Code: 200
Body: JSON Object
{
"attendeeId": "9a6c5f31-141a-4a19-921f-56ab091175ca",
"labLaunchURL": "https://cloudlabs-manage.azurewebsites.net/#/odl/c12d590c-95f2-42c8-bafe-1af312cf206d/9a6c5f31-141a-4a19-921f-56ab091175ca"
}
Get Attendee Deployment
This can be used to get current deployment of an attendee. If the deployment status is not “Succeeded”, this endpoint needs to be called after some time, to get new status.
GET {apiURL}/api/tenants/{tenantId}/labs/{labId}/attendees/{attendeeId}/deployments URI Parameter
Name | In | Required | Type | Description |
tenantId | path | True | string | Id which uniquely identifies a tenant |
labId | path | True | string | Id which uniquely identifies a lab |
attendeeId | path | True | string | Id which uniquely identifies an attendee |
api-version | query | True | string | The API version to use for this operation. |
Headers
Name | Type | Description |
Authorization | string | OAuth 2.0 access token obtained from Cloud Labs OAuth2 V2. Supported grant types: Authorization code, Client credentials. |
Ocp-Apim-Subscription-Key | string | Subscription key which provides access to this API. Found in your Profile. |
Sample Response (for VM only scenario) Status Code: 200
Body: JSON Object
{
“attendeeId”: “68141a-4a19-921f-56ab091175ca”
“userName”: “odl_user_141589@cloudlabsaioutlook.onmicrosoft.com”, “password”: “htzj01SBX*u3”,
“deploymentStatus”: “Succeeded”, “rdpOverHttpsURL”: “https://rdp-
141491o3qtnneegkgum.mscloudlabs.ai/guacamole/#/?userName=USERNAME&uri=rdp:%2F%2Fdemouser:d emopass$123@labvmrxo7 m6bgpwlri.eastus.cloudapp.azure.com:3389%2F%3Fsecurity%3Dany%26ignore-cert%3Dtrue%26disableaudio%3Dtrue”,
“labGuideURL”: null,
“labLaunchURL”: “https://manage.cloudlabs.ai/#/odl/acec4a96-62cc-404a-825aec7b34800745/445b7365-4589-4f2d-b925-ee399d3cb025”,
“servicePrincipalDisplayName”: “https://odl_user_sp_141911”,
“servicePrincipalApplicationId”: “c2f7349a-1a42-4651-b644-893b15515yui”, “servicePrincipalAppObjectId”: “f01642b0-aae9-49df-b06b-02f368ac1678”,
“servicePrincipalObjectId”: “f987fb27-1ecb-4b93-9152-5a94f6af9e0c”, “servicePrincipalKey”: “zerk69JMM*BR”,
“properties”: [], “resourceGroups”: [
{
“resourceGroupName”: “ODL-vm-141589”, “resourceGroupRegion”: “West US”,
“resourceGroupStatus”: “Succeeded”, “outputParameters”: [
“vmDNSName”: “labvmrxo7m6bgpwlri.eastus.cloudapp.azure.com”,
“vmUsername”: “demouser”, “vmPassword”: “demopass$123”
]
}
]
}
Sample Response (for VM + Git Document scenario) Status Code: 200
Body: JSON Object
{
“attendeeId”: “1341a-4a19-921f-56ab091175ca”
“userName”: “odl_user_97837@cloudlabsaioutlook.onmicrosoft.com”, “password”: “htzj01SBX*u3”,
“deploymentStatus”: “Succeeded”, “rdpOverHttpsURL”: “https://rdp-
141491o3qtnneegkgum.mscloudlabs.ai/guacamole/#/?userName=USERNAME&uri=rdp:%2F%2Fdemouser:d
emopass$123@labvmrxo7 m6bgpwlri.eastus.cloudapp.azure.com:3389%2F%3Fsecurity%3Dany%26ignore-cert%3Dtrue%26disableaudio%3Dtrue”,
“labGuideURL”: “https://manage.cloudlabs.ai/#/labguide/90da055c-6887-4dd5-aaff-698a7439e366/111b6e97-78fa-4771-bf33-f9f76587731”,
“labLaunchURL”: “https://manage.cloudlabs.ai/#/labenvironment/f334db39-1d40-4444-b3d5-81a0ea59edc7/777f570a-0ede-46a3-858d-ecf6545a0fb5”,
“servicePrincipalDisplayName”: null, “servicePrincipalApplicationId”: null, “servicePrincipalAppObjectId”: null, “servicePrincipalObjectId”: null,
“servicePrincipalKey”: null, “properties”: [], “resourceGroups”:
[
{
“resourceGroupName”: “ODL-vm-97837”, “resourceGroupRegion”: “West US”, “resourceGroupStatus”: “Succeeded”,
"signInLink":
"https://console.cloud.google.com/home/dashboard?project=clgcporg8-046", "signInProperty": "clgcporg8-046"
“outputParameters”: [
“vmDNSName”: “labvmrxo7m6bgpwlri.eastus.cloudapp.azure.com”,
“vmUsername”: “demouser”, “vmPassword”: “demopass$123”
]
}
]
}
Sample Response (for Git Document only scenario) Status Code: 200
Body: JSON Object
{
“attendeeId”: “78521a-4a19-921f-56ab091175ca”
“userName”: “odl_user_141000@cloudlabsaioutlook.onmicrosoft.com”, “password”: “htzj01SBX*u3”,
“deploymentStatus”: “Succeeded”, “rdpOverHttpsURL”: null,
“labGuideURL”: “https://manage.cloudlabs.ai/#/labguide/90da055c-6887-4dd5-aaff-
698a7439e366/111b6e97-78fa-4771-bf33-f9f76587731f”,
“labLaunchURL”: “https://manage.cloudlabs.ai/#/odl/acec4a96-62cc-404a-825aec7b34800745/445b7365-4589-4f2d-b925-ee399d3cb025”,
“servicePrincipalDisplayName”: null, “servicePrincipalApplicationId”: null, “servicePrincipalAppObjectId”: null, “servicePrincipalObjectId”: null,
“servicePrincipalKey”: null, “properties”: [], “resourceGroups”:
[
{
“resourceGroupName”: “ODL-vm-141000”, “resourceGroupRegion”: “West US”, “resourceGroupStatus”: “Succeeded”, “outputParameters”: []
}
]
}
Sample Response (if deployment is In-Progress) Status Code: 200
Body: JSON Object
{
“attendeeId”: “35321a-4a19-921f-56ab091175ca” “userName”: null,
“password”: null,
“deploymentStatus”: “In-Progress”, “rdpOverHttpsURL”: null, “labGuideURL”: null,
“labLaunchURL”: null,
“servicePrincipalDisplayName”: null, “servicePrincipalApplicationId”: null,
“servicePrincipalAppObjectId”: null, “servicePrincipalObjectId”: null,
“servicePrincipalKey”: null, “properties”: [],
“resourceGroups”: []
}
Sample Response (if deployment is Deleted) Status Code: 200
Body: JSON Object
{
“attendeeId”: “366441a-4a19-921f-56ab091175ca”
“userName”: “odl_user_141001@cloudlabsaioutlook.onmicrosoft.com”, “password”: “fasj01SBXreg3”,
“deploymentStatus”: “Deleted”, “rdpOverHttpsURL”: null, “labGuideURL”: null,
“labLaunchURL”: null,
“servicePrincipalDisplayName”: null, “servicePrincipalApplicationId”: null,
“servicePrincipalAppObjectId”: null, “servicePrincipalObjectId”: null,
“servicePrincipalKey”: null, “properties”: [], “resourceGroups”:
[
{
“resourceGroupName”: “ODL-vm-141001”, “resourceGroupRegion”: “West US”, “resourceGroupStatus”: “Deleted”,
“outputParameters”: []
}
]
}
Launch Lab Environment
This endpoint can be used to launch a lab environment. Note: No need to use this endpoint if it is already launched while using “Add Attendee” endpoint with auto launch.
POST {apiURL}/api/tenants/{tenantId}/labs/{labId}/attendees/{attendeeId} URI Parameters
Name | In | Required | Type | Description |
tenantId | path | True | string | Id which uniquely identifies a tenant |
labId | path | True | string | Id which uniquely identifies a lab |
attendeeId | path | True | string | Id which uniquely identifies an attendee |
autoLaunch | query | False | bool | True if you want a deployment along with attendee registration |
api-version | query | True | string | The API version to use for this operation. |
Headers
Name | Type | Description |
Authorization | string | OAuth 2.0 access token obtained from Cloud Labs OAuth2 V2. Supported grant types: Authorization code, Client credentials. |
Ocp-Apim-Subscription-Key | string | Subscription key which provides access to this API. Found in your Profile. |
Content-Type | String | Value: application/json |
Request Body (JSON)
Name | Required | Type | Description |
firstName | True | string | first name of attendee |
lastName | True | string | last name of attendee |
True | string | email address of attendee |
Sample Response Status Code: 200 Body: JSON Object
*Same as “Get Attendee Deployment”
Get Attendees
This endpoint returns all attendees in a lab. Attendee in the response, can be used in all scenarios related to an attendee.
GET {apiURL}/api/tenants/{tenantId}/labs/{labId}/attendees URI Parameter
Name | In | Required | Type | Description |
tenantId | path | True | string | Id which uniquely identifies a tenant |
labId | path | True | string | Id which uniquely identifies a lab |
query | False | string | email address of attendee. Only this attendee details will be included in the response | |
api-version | query | True | string | The API version to use for this operation. |
Headers
Name | Type | Description |
Authorization | string | OAuth 2.0 access token obtained from Cloud Labs OAuth2 V2. Supported grant types: Authorization code, Client credentials. |
Ocp-Apim-Subscription-Key | string | Subscription key which provides access to this API. Found in your Profile. |
Sample Response Status Code: 200 Body: JSON Object
{
"previousLink": null, "totalItems": 2, "value": [
{
"id": "a5744afc-5f54-4a80-9c2e-13997fc9de54", "firstName": "Akash",
"lastName": "P",
"email": "akash10@spektra.com", "status": "Deleted"
},
{
"id": "9a6c5f31-141a-4a19-921f-56ab091175ca",
"firstName": "Akash", "lastName": "P",
"email": "akash8@spektra.com", "status": "Registered"
},
],
"nextLink": null
}
Get Attendee List Report
This endpoint returns all attendees in a lab. Attendee in the response, can be used in all scenarios related to an attendee.
GET {apiURL}/api/tenants/{tenantId}/labs/{labId}/attendees/reports URI Parameter
Name | In | Required | Type | Description |
tenantId | path | True | string | Id which uniquely identifies a tenant |
labId | path | True | string | Id which uniquely identifies a lab |
query | False | string | Use the attendee's email address to filter the results. | |
cloudDeploymentId | query | False | string | Use the cloud deployment Id to filter the results. |
api-version | query | True | string | The API version to use for this operation. |
Headers
Name | Type | Description |
Authorization | string | OAuth 2.0 access token obtained from Cloud Labs OAuth2 V2. Supported grant types: Authorization code, Client credentials. |
Ocp-Apim-Subscription-Key | string | Subscription key which provides access to this API. Found in your Profile. |
Sample Response Status Code: 200 Body: JSON Object
{
"previousLink": null, "totalItems": 4, "value": [
{
"id": "e6a0d187-7807-475d-bc4f-ac8aab5e4991", "firstName": "Santhosh",
"lastName": "sr",
"email": "Santhosh.sr@spektrasystems.com", "status": "Succeeded", "cloudDeploymentId": 131930
},
{
"id": "eff22b9f-48f9-4e7f-b28d-09f8cab8c12c", "firstName": "Akash",
"lastName": "P",
"email": "akash8@spektra.com ", "status": "Deleted", "cloudDeploymentId": 131929
}
],
"nextLink": null
}
Check Signup Availability
Before adding an attendee or if attendee wants a retake, this endpoint can be used to check the signup availability.
GET {apiURL}/api/tenants/{tenantId}/labs/{labId}/checkSignUpAvailability URI Parameters
Name | In | Required | Type | Description |
tenantId | path | True | string | Id which uniquely identifies a tenant |
labId | path | True | string | Id which uniquely identifies a lab |
query | True | string | Email address of attendee. | |
api-version | query | True | string | The API version to use for this operation. |
Headers
Name | Type | Description |
Authorization | string | OAuth 2.0 access token obtained from Cloud Labs OAuth2 V2. Supported grant types: Authorization code, Client credentials. |
Ocp-Apim-Subscription-Key | string | Subscription key which provides access to this API. Found in your Profile. |
Sample Response Status Code: 200 Body: JSON Object
{
canSignUp: true,
message: "This user did not register for the lab"
}
Modify Attendee Settings
This endpoint can be used to extend an attendee’s lab environment before it expires. Also, if attendee wants to retake the lab one more time, maxTakeCount can be increased by setting it to larger value.
PUT {apiURL}/api/tenants/{tenantId}/labs/{labId}/attendees /{attendeeId}/settings
URI Parameter
Name | In | Required | Type | Description |
tenantId | path | True | string | Id which uniquely identifies a tenant |
labId | path | True | string | Id which uniquely identifies a lab |
attendeeId | path | True | string | Id which uniquely identifies an attendee |
api-version | query | True | string | The API version to use for this operation. |
Headers
Name | Type | Description |
Authorization | string | OAuth 2.0 access token obtained from Cloud Labs OAuth2 V2. Supported grant types: Authorization code, Client credentials. |
Ocp-Apim-Subscription-Key | string | Subscription key which provides access to this API. Found in your Profile. |
Content-Type | string | Value: application/json |
Request Body (JSON)
Name | Required | Type | Description |
maxDuration | False | integer | Duration in hours |
maxTakeCount | False | integer | Maximum attempts an attendee can take |
Sample Response Status Code: 200 Body: JSON Object
{
maxDuration: 6H, maxTakeCount: 1,
remainingDuration: 2H30M
}
Delete deployment
If an attendee’s lab environment needs to be deleted, this endpoint can be used by specifying tenantId, labId and attendeeId.
DELETE {apiURL}/api/tenants/{tenantId}/labs/{labId}/attendees /{attendeeId}/deployment URI Parameter
Name | In | Required | Type | Description |
tenantId | path | True | string | Id which uniquely identifies a tenant |
labId | path | True | string | Id which uniquely identifies a lab |
attendeeId | path | True | string | Id which uniquely identifies an attendee |
api-version | query | True | string | The API version to use for this operation. |
Headers
Name | Type | Description |
Authorization | string | OAuth 2.0 access token obtained from Cloud Labs OAuth2 V2. Supported grant types: Authorization code, Client credentials. |
Ocp-Apim-Subscription-Key | string | Subscription key which provides access to this API. Found in your Profile. |
Sample Response
Status Code: 204 No Content Body: Empty
Create Activation Codes
This endpoint can be used to add an activation code to a lab.
POST {apiURL}/api/tenants/{tenantId}/labs/{labId}/activationcodes URI Parameters
Name | In | Required | Type | Description |
tenantId | path | True | string | Id which uniquely identifies a tenant |
labId | path | True | string | Id which uniquely identifies a lab |
Headers
Name | Type | Description |
Authorization | string | OAuth 2.0 access token obtained from Cloud Labs OAuth2 V2. Supported grant types: Authorization code, Client credentials. |
Content-Type | string | Value: application/json |
Request Body (JSON)
Name | Required | Type | Description |
Name | True | string | Name of the activation code. |
Customer | True | string | Name of customer. |
City | True | string | Name of the City. |
Country | True | string | Name of the country. |
ExpiryDate | True | string | Expiry date of the activation code. |
Sample Response Status Code: 200 Body: JSON Object
{
"OperationType": null, "Status": "Success", "ErrorCode": null,
"ErrorMessage": null, "ErrorDetail": null, "Data": null,
"ErrorKey": null
}
Get Activation Codes
This endpoint returns all activation code in a lab.
GET {apiURL}/api/tenants/{tenantId}/labs/{labId}/activationcodes URI Parameter
Name | In | Required | Type | Description |
tenantId | path | True | string | Id which uniquely identifies a tenant |
labId | path | True | string | Id which uniquely identifies a lab |
Headers
Name | Type | Description |
Authorization | string | OAuth 2.0 access token obtained from Cloud Labs OAuth2 V2. Supported grant types: Authorization code, Client credentials. |
Sample Response Status Code: 200
Body: JSON Object {
"OperationType": null, "Status": "Success", "ErrorCode": null,
"ErrorMessage": null, "ErrorDetail": null, "Data": [
"CL001", "CL002"
],
"ErrorKey": null
}
Schedule Start VM
POST {{apiURL}}/api/tenants/{{tenantId}}/labs/{{labId}}/schedule/startVM
This endpoint can be used to schedule the start of all VM instances present in active deployments. URI Parameters
Name | In | Required | Type | Description |
tenantId | path | True | string | Id which uniquely identifies a tenant |
labId | path | True | string | Id which uniquely identifies a lab |
Headers
Name | Type | Description |
Authorization | string | OAuth 2.0 access token obtained from Cloud Labs OAuth2 V2. Supported grant types: Authorization code, Client credentials. |
Ocp-Apim-SubscriptionKey | string | Subscription key which provides access to this API. Found in your Profile. |
Request Body (JSON)
{
"Timezone":"(UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi", "ScheduledDate":"2024-05-10",
"ScheduledTime":1706, "ScheduleConfigId": 4
}
Sample Response Status Code: 200 Body: JSON Object
{
"OperationType": null, "Status": "Success", "ErrorCode": null,
"ErrorMessage": null, "ErrorDetail": null, "Data": null,
"ErrorKey": null
}
Schedule Stop VM
POST {{apiURL}}/api/tenants/{{tenantId}}/labs/{{labId}}/schedule/stopVM
This endpoint can be used to schedule the stop all VM instances present in active deployments. URI Parameters
Name | In | Required | Type | Description |
tenantId | path | True | string | Id which uniquely identifies a tenant |
labId | path | True | string | Id which uniquely identifies a lab |
Headers
Name | Type | Description |
Authorization | string | OAuth 2.0 access token obtained from Cloud Labs OAuth2 V2. Supported grant types: Authorization code, Client credentials. |
Ocp-Apim-SubscriptionKey | string | Subscription key which provides access to this API. Found in your Profile. |
Request Body (JSON)
{
"Timezone":"(UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi", "ScheduledDate":"2024-05-10",
"ScheduledTime":1706, "ScheduleConfigId":5c
}
Sample Response Status Code: 200 Body: JSON Object
{
"OperationType": null, "Status": "Success", "ErrorCode": null,
"ErrorMessage": null, "ErrorDetail": null, "Data": null,
"ErrorKey": null
}
Clone Lab
Use this endpoint to clone an existing lab. Add the reference or base ODL labId as the “labId” URI parameter. POST {apiURL}/api/tenants/{tenantId}/labs/{labId}/clone
URI Parameters
Name | In | Required | Type | Description |
tenantId | path | True | string | Id which uniquely identifies a tenant |
labId | path | True | string | Id which uniquely identifies a lab |
api-version | query | True | string | The API version to use for this operation. |
Headers
Name | Type | Description |
Authorization | string | OAuth 2.0 access token obtained from Cloud Labs OAuth2 V2. Supported grant types: Authorization code, Client credentials. |
Ocp-Apim-Subscription-Key | string | Subscription key which provides access to this API. Found in your Profile. |
Content-Type | String | Value: application/json |
Request Body (JSON)
Name | Required | Type | Description |
title | True | string | Title of new odl which will be created after cloning. |
Sample Response Status Code: 200
Body: JSON Object
{
"name": "Azure Functions & Logic App Serverless", "labId": "9a6c5f31-141a-4a19-921f-56ab091175ca"
}
The response object contains the ODL name and labId of the newly cloned ODL.
Exceptions
Sample Response
Status Code: 400/401/403/404/500 Body: JSON Object
{
"correlationId": 637105246526361093", "errorCode": "CL5014",
"errorMessage": " Voucher code expired",
"detailedErrorMessage": " Voucher code expired"
}
List of error codes will be available at https://bit.ly/2J7U70D .
Meta data – Attendee Status
AttendeeStatus | Description |
Registered | Attendee registered, but deployment is not associated |
Failed | Deployment got failed |
Deploying | Deployment is still deploying |
Succeeded | Deployment is succeeded, and associated with attendee |
Deleting | Deployment is deleting |
Deleted | Deployment is deleted |