--- title: "CloudLabs REST API v2.7" slug: "cloudlabs-rest-api-v27-documentation-11" updated: 2026-11-09T13:44:44Z published: 2026-11-09T13:44:44Z canonical: "help.cloudlabs.ai/cloudlabs-rest-api-v27-documentation-11" --- > ## Documentation Index > Fetch the complete documentation index at: https://help.cloudlabs.ai/llms.txt > Use this file to discover all available pages before exploring further. # CloudLabs REST API v2.7 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: 1. Authentication on behalf of Azure AD App (using client credentials). 2. Authentication on behalf of Azure AD User (Azure AAD Authentication). 3. Authentication on behalf of Azure AD User (OAuth 2.0 resource owner Password credentials Grant). Few entities associated with CloudLabs: 4. Tenant: Partner/Customer who is authorized by Spektra Systems to create/manage labs in CloudLabs Portal. 5. Lab: It can be a classroom/workshop with pre-configured template/subscription for lab environments. 6. Attendee: End user who is going to use the lab environment. 7. 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](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark0) [Get Tenants 4](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark1) [Get Labs 4](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark2) [Get Lab By Id 7](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark3) [Add Deployments 9](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark4) [Get Lab Summary 9](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark5) [Add Attendee 10](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark6) [Add Attendee (Anonymous) 12](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark7) [Get Attendee Deployment 13](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark8) [Launch Lab Environment 17](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark9) [Get Attendees 18](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark10) [Get Attendee List Report 19](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark11) [Check Signup Availability 20](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark12) [Modify Attendee Settings 20](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark13) [Delete deployment 21](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark14) [Create Activation Codes 22](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark15) [Get Activation Codes 23](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark16) [Schedule Start VM 24](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark17) [Schedule Stop VM 25](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark18) [Clone Lab 26](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark19) [Exceptions 26](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark20) [Meta data – Attendee Status 27](/docs/cloudlabs-rest-api-v27-documentation-11#_bookmark21) # 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](https://login.microsoftonline.com/%7bdirectoryId%7d/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](https://cloudlabs-api-qa.portal.azure-api.net/developer) [your](https://cloudlabs-api-qa.portal.azure-api.net/developer) [Profile.](https://cloudlabs-api-qa.portal.azure-api.net/developer) | 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](https://cloudlabs-api-qa.portal.azure-api.net/developer) [your](https://cloudlabs-api-qa.portal.azure-api.net/developer) [Profile.](https://cloudlabs-api-qa.portal.azure-api.net/developer) | 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-](https://cloudlabs-manage.azurewebsites.net/%23/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-](https://cloudlabs-dev.azurewebsites.net/%23/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](https://cloudlabs-api-qa.portal.azure-api.net/developer) [your](https://cloudlabs-api-qa.portal.azure-api.net/developer) [Profile.](https://cloudlabs-api-qa.portal.azure-api.net/developer) | 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-](https://cloudlabs-manage.azurewebsites.net/%23/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](https://cloudlabs-api-qa.portal.azure-api.net/developer) [your](https://cloudlabs-api-qa.portal.azure-api.net/developer) [Profile.](https://cloudlabs-api-qa.portal.azure-api.net/developer) | | 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](https://cloudlabs-api-qa.portal.azure-api.net/developer) [your](https://cloudlabs-api-qa.portal.azure-api.net/developer) [Profile.](https://cloudlabs-api-qa.portal.azure-api.net/developer) | 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](https://cloudlabs-api-qa.portal.azure-api.net/developer) [your](https://cloudlabs-api-qa.portal.azure-api.net/developer) [Profile.](https://cloudlabs-api-qa.portal.azure-api.net/developer) | | --- | --- | --- | | 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 | | email | 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"](https://cloudlabs-manage.azurewebsites.net/%23/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](https://cloudlabs-api-qa.portal.azure-api.net/developer) [your](https://cloudlabs-api-qa.portal.azure-api.net/developer) [Profile.](https://cloudlabs-api-qa.portal.azure-api.net/developer) | | 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"](https://cloudlabs-manage.azurewebsites.net/%23/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](https://cloudlabs-api-qa.portal.azure-api.net/developer) [your](https://cloudlabs-api-qa.portal.azure-api.net/developer) [Profile.](https://cloudlabs-api-qa.portal.azure-api.net/developer) | 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-](https://rdp-141491o3qtnneegkgum.ms-cloudlabs.ai/guacamole/%23/?userName=USERNAME&uri=rdp%3A%2F%2Fdemouser%3Ademopass%24123%40labvmrxo7m6bgpwlri.eastus.cloudapp.azure.com%3A3389%2F%3Fsecurity%3Dany%26ignore-cert%3Dtrue%26disable-audio%3Dtrue) [141491o3qtnneegkgum.mscloudlabs.ai/guacamole/#/?userName=USERNAME&uri=rdp:%2F%2Fdemouser:d](https://rdp-141491o3qtnneegkgum.ms-cloudlabs.ai/guacamole/%23/?userName=USERNAME&uri=rdp%3A%2F%2Fdemouser%3Ademopass%24123%40labvmrxo7m6bgpwlri.eastus.cloudapp.azure.com%3A3389%2F%3Fsecurity%3Dany%26ignore-cert%3Dtrue%26disable-audio%3Dtrue) [emopass$123@labvmrxo7](https://rdp-141491o3qtnneegkgum.ms-cloudlabs.ai/guacamole/%23/?userName=USERNAME&uri=rdp%3A%2F%2Fdemouser%3Ademopass%24123%40labvmrxo7m6bgpwlri.eastus.cloudapp.azure.com%3A3389%2F%3Fsecurity%3Dany%26ignore-cert%3Dtrue%26disable-audio%3Dtrue) [m6bgpwlri.eastus.cloudapp.azure.com:3389%2F%3Fsecurity%3Dany%26ignore-cert%3Dtrue%26disableaudio%3Dtrue”,](https://rdp-141491o3qtnneegkgum.ms-cloudlabs.ai/guacamole/%23/?userName=USERNAME&uri=rdp%3A%2F%2Fdemouser%3Ademopass%24123%40labvmrxo7m6bgpwlri.eastus.cloudapp.azure.com%3A3389%2F%3Fsecurity%3Dany%26ignore-cert%3Dtrue%26disable-audio%3Dtrue) “labGuideURL”: null, “labLaunchURL”: [“https://manage.cloudlabs.ai/#/odl/acec4a96-62cc-404a-825aec7b34800745/445b7365-4589-4f2d-b925-ee399d3cb025”,](https://manage.cloudlabs.ai/%23/odl/acec4a96-62cc-404a-825a-ec7b34800745/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-](https://rdp-141491o3qtnneegkgum.ms-cloudlabs.ai/guacamole/%23/?userName=USERNAME&uri=rdp%3A%2F%2Fdemouser%3Ademopass%24123%40labvmrxo7m6bgpwlri.eastus.cloudapp.azure.com%3A3389%2F%3Fsecurity%3Dany%26ignore-cert%3Dtrue%26disable-audio%3Dtrue) [141491o3qtnneegkgum.mscloudlabs.ai/guacamole/#/?userName=USERNAME&uri=rdp:%2F%2Fdemouser:d](https://rdp-141491o3qtnneegkgum.ms-cloudlabs.ai/guacamole/%23/?userName=USERNAME&uri=rdp%3A%2F%2Fdemouser%3Ademopass%24123%40labvmrxo7m6bgpwlri.eastus.cloudapp.azure.com%3A3389%2F%3Fsecurity%3Dany%26ignore-cert%3Dtrue%26disable-audio%3Dtrue) [emopass$123@labvmrxo7](https://rdp-141491o3qtnneegkgum.ms-cloudlabs.ai/guacamole/%23/?userName=USERNAME&uri=rdp%3A%2F%2Fdemouser%3Ademopass%24123%40labvmrxo7m6bgpwlri.eastus.cloudapp.azure.com%3A3389%2F%3Fsecurity%3Dany%26ignore-cert%3Dtrue%26disable-audio%3Dtrue) [m6bgpwlri.eastus.cloudapp.azure.com:3389%2F%3Fsecurity%3Dany%26ignore-cert%3Dtrue%26disableaudio%3Dtrue”,](https://rdp-141491o3qtnneegkgum.ms-cloudlabs.ai/guacamole/%23/?userName=USERNAME&uri=rdp%3A%2F%2Fdemouser%3Ademopass%24123%40labvmrxo7m6bgpwlri.eastus.cloudapp.azure.com%3A3389%2F%3Fsecurity%3Dany%26ignore-cert%3Dtrue%26disable-audio%3Dtrue) “labGuideURL”: “[https://manage.cloudlabs.ai/#/labguide/90da055c-6887-4dd5-aaff-698a7439e366/111b6e97-78fa-4771-bf33-f9f76587731”,](https://manage.cloudlabs.ai/%23/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”,](https://manage.cloudlabs.ai/%23/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](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-](https://manage.cloudlabs.ai/%23/labguide/90da055c-6887-4dd5-aaff-698a7439e366/111b6e97-78fa-4771-bf33-f9f76587731f) [698a7439e366/111b6e97-78fa-4771-bf33-f9f76587731f”,](https://manage.cloudlabs.ai/%23/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”,](https://manage.cloudlabs.ai/%23/odl/acec4a96-62cc-404a-825a-ec7b34800745/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](https://cloudlabs-api-qa.portal.azure-api.net/developer) [your](https://cloudlabs-api-qa.portal.azure-api.net/developer) [Profile.](https://cloudlabs-api-qa.portal.azure-api.net/developer) | | 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 | | email | 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 | | email | 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](https://cloudlabs-api-qa.portal.azure-api.net/developer) [your](https://cloudlabs-api-qa.portal.azure-api.net/developer) [Profile.](https://cloudlabs-api-qa.portal.azure-api.net/developer) | 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 | | email | 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](https://cloudlabs-api-qa.portal.azure-api.net/developer) [your](https://cloudlabs-api-qa.portal.azure-api.net/developer) [Profile.](https://cloudlabs-api-qa.portal.azure-api.net/developer) | 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 | | email | 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](https://cloudlabs-api-qa.portal.azure-api.net/developer) [your](https://cloudlabs-api-qa.portal.azure-api.net/developer) [Profile.](https://cloudlabs-api-qa.portal.azure-api.net/developer) | 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](https://cloudlabs-api-qa.portal.azure-api.net/developer) [your](https://cloudlabs-api-qa.portal.azure-api.net/developer) [Profile.](https://cloudlabs-api-qa.portal.azure-api.net/developer) | | 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](https://cloudlabs-api-qa.portal.azure-api.net/developer) [your](https://cloudlabs-api-qa.portal.azure-api.net/developer) [Profile.](https://cloudlabs-api-qa.portal.azure-api.net/developer) | 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](https://cloudlabs-api-qa.portal.azure-api.net/developer) [your](https://cloudlabs-api-qa.portal.azure-api.net/developer) [Profile.](https://cloudlabs-api-qa.portal.azure-api.net/developer) | 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](https://cloudlabs-api-qa.portal.azure-api.net/developer) [your](https://cloudlabs-api-qa.portal.azure-api.net/developer) [Profile.](https://cloudlabs-api-qa.portal.azure-api.net/developer) | 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](https://cloudlabs-api-qa.portal.azure-api.net/developer) [your](https://cloudlabs-api-qa.portal.azure-api.net/developer) [Profile.](https://cloudlabs-api-qa.portal.azure-api.net/developer) | | 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["](https://cloudlabs-manage.azurewebsites.net/%23/odl/c12d590c-95f2-42c8-bafe-1af312cf206d/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](https://bit.ly/2J7U70D) [.](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 |