openapi: 3.0.3 info: title: Lab API description: | # Introduction Welcome to Skillable Connect: LAB Edition, our core platform for creating, customizing, and managing labs. ## Skillable Production API & Integration Testing Only lab profiles with a development status of **Complete** are consumable via API. Development/Integration Testing API available with all the same API calls your production API can make, but has the following settings: - Max Active Lab Instances: 5 - Max Saved Labs per User: 1 - Max Active Lab Instances per user: 5 - Max lab duration: 30 minutes - Allows launching of lab profiles with any Development Status (i.e. is not restricted to a Complete development status) - Has a dedicated API key - Does not generate billable events ## Authenticate with API Key Skillable APIs offer one form of authentication: an API Key. All methods require an API Key, which must be obtained from a Skillable team member working with your organization. Our systems use this key to validate your development account. Pass your API Key as an HTTP request header with the header name "api_key". termsOfService: 'https://skillable.com/terms-and-conditions/' contact: name: Skillable Support email: support@skillable.com url: 'https://skillable.com/customer-support/' x-logo: url: 'https://raw.githubusercontent.com/LearnOnDemandSystems/ConnectAPI/main/Skillable%20Connect%20Logo.svg' altText: Skillable Connect license: name: Apache 2.0 url: 'http://www.apache.org/licenses/LICENSE-2.0.html' version: '3.0' servers: - url: 'https://labondemand.com/api/v3' description: Skillable Connect LAB API security: - api_key: [] tags: - name: Lab Instance Management description: |- The Lab Instance Management group of API commands allows interacting with lab instances. This includes but is not limited to the following actions: * [Launch a lab](https://connect.skillable.com/lab/operation/Launch/) * [Cancel a lab](https://connect.skillable.com/lab/operation/Cancel/) * [Save a lab](https://connect.skillable.com/lab/operation/Save/) * [Resuming a lab](https://connect.skillable.com/lab/operation/Resume/) * [Initiate scoring of activities in a lab](https://connect.skillable.com/lab/operation/ScoreActivities/) * [Send notifications to a lab](https://connect.skillable.com/lab/operation/SendNotification-post/) * [Retrieve information about lab instances](https://connect.skillable.com/lab/operation/Results/) - name: Lab Profile Management description: |- The Lab Profile Management group of API commands allows for managing instructions and retrieving information about Lab Profiles within Skillable Studio. * [Retrieve information about a specific lab profile](https://connect.skillable.com/lab/operation/LabProfile/) * [Retrieve lab instructions for a specific lab](https://connect.skillable.com/lab/operation/LabProfile/) * [Download instructions in a zip file for a specific lab](https://connect.skillable.com/lab/operation/GetLabInstructionsPackage/) * [Update lab instructions for a specific lab profile using an HTTP post](https://connect.skillable.com/lab/operation/UpdateLabInstructions/) * [Update lab instructions for a specific lab by uploading a zip file](https://connect.skillable.com/lab/operation/UpdateLabInstructionsPackage/) - name: Class Management description: |- The Class Management group of API commands allows for the creation, management, access, and monitoring of classes within Skillable Studio. * [Retrieve information about a class in Skillable Studio](https://connect.skillable.com/lab/operation/Class/) * [Retrieve information about an existing class, if the class does not exist, it will be created](https://connect.skillable.com/lab/operation/GetOrCreateClass/) * [Return a single access URL to access a class management page](https://connect.skillable.com/lab/operation/ClassAccessUrl/) * [Return a single use URL to monitor a lab instance](https://connect.skillable.com/lab/operation/LabMonitorUrl/) * [Return a single use URL to access a lab instance](https://connect.skillable.com/lab/operation/LabAccessUrl/) * [Update a specific class](https://connect.skillable.com/lab/operation/UpdateClass/) * [Delete a specific class](https://connect.skillable.com/lab/operation/DeleteClass/) - name: User Management description: |- The User Management group of API commands are used to administer user accounts within Skillable Studio. * [Return information about saved or running labs for a specific user account](https://connect.skillable.com/lab/operation/UserRunningAndSavedLabs/) * [Close a user account and remove all associated user information](https://connect.skillable.com/lab/operation/CloseUserAccount/) - name: Event Management description: |- The Event Management group of API commands allows for launching lab profiles for events and retrieving evaluation responses. * [Launch a lab within an event](https://connect.skillable.com/lab/operation/LaunchforEvent/) * [Launch a lab within an event, using an external ID](https://connect.skillable.com/lab/operation/LaunchforEventByExternalId/) * [Retrieve evaluation data for a specified event](https://connect.skillable.com/lab/operation/GetEvaluationResponsesForEvent/) - name: Organization description: |- Organizational API commands provide the ability to return information about lab profiles, lab series, and delivery regions available to your organization in Skillable Studio. * [Retrieve information about lab profiles, lab series, and delivery regions available to your organization](https://connect.skillable.com/lab/operation/Catalog/) * [Retrieve information about delivery regions that are available to your organization](https://connect.skillable.com/lab/operation/DeliveryRegions/) paths: /launch: get: tags: - Lab Instance Management summary: Launch a lab description: The **Launch** command will launch a specified lab for a specified user. operationId: Launch parameters: - name: labid in: query description: The ID of the lab profile. required: true style: form explode: true schema: type: integer format: int32 example: 100 - name: userid in: query description: The ID you use to identify the user in your external system. required: true style: form explode: true schema: type: string example: '555' - name: firstname in: query description: An optional parameter used to set the user’s first name. If this value is not provided for a new user a random anonymized value in the format 'anon-#######' will be created. required: false style: form explode: true schema: type: string example: Joe - name: lastname in: query description: An optional parameter used to set the user’s last name. If this value is not provided for a new user a random anonymized value in the format 'anon-########' will be created. required: false style: form explode: true schema: type: string example: Smith - name: email in: query description: An optional parameter used to set the user’s email address. required: false style: form explode: true schema: type: string example: joe.smith@email.com - name: classId in: query description: 'An optional parameter used to associate the lab with a class (see **GetOrCreateClass**). This is the unique identifier of the class as it is represented in your organization. ' required: false style: form explode: true schema: type: string example: '1223334444' - name: canBeMarkedComplete in: query description: 'An optional parameter used to specify if the lab can be marked as complete by the student. 1 = true, 2 = false. If not specified, defaults to 1 (true).' required: false style: form explode: true schema: type: integer format: int32 enum: - 1 - 2 default: 1 example: 1 - name: tag in: query description: An optional parameter that can be used for tagging the lab instance with your own custom data. required: false style: form explode: true schema: type: string example: testlaunch - name: ipAddress in: query description: 'When specified, Skillable will attempt to launch the lab in the closest available delivery region. You should provide the IP address of the user that is taking the lab, not the IP address of your system. IPv4 and IPv6 address are supported.' required: false style: form explode: true schema: type: string example: 1.1.1.1 - name: regionId in: query description: 'When specified, Skillable will attempt to launch the lab in the specified delivery region if a suitable host in that region is available and all required storage is available in that region. Delivery regions can be found using the **DeliveryRegions** command or **Catalog** command. Using the ipAddress parameter will result in a more reliable geo-location of the lab for the end user.' required: false style: form explode: true schema: type: integer format: int32 example: 1 - name: roleId in: query description: Allows you specify the role(s) to assign to the user. You may pass multiple instances of this parameter to specify multiple roles. Roles are used for specialized integration purposes and are not needed in typical integration scenarios. Role IDs will be provided by Skillable when appropriate. required: false style: form explode: true schema: type: integer format: int32 example: 1 - name: variable-name in: query description: 'Allows you to set the values of named variables used within the lab instance. The key must start with the fixed text **variable-**. ' required: false style: form explode: true schema: type: string example: Chad - name: maxSavedLabs in: query description: The max number of labs an individual user may save is capped by the number configured on your API consumer. required: false style: form explode: true schema: type: integer format: int32 example: 2 - name: maxActiveLabs in: query description: The max number of concurrent lab instances is capped by the number configured on your API consumer. required: false style: form explode: true schema: type: integer format: int32 example: 1 - name: lang in: query description: |- Allows you to override the language of the Instruction Set as well as the lab client UI language. This affects lab client UI elements like menus, tabs, and dialogs. Using this in connection with instructionsId will allow you to select launching labs with a specific Instruction Set in the specified language if they have been defined within the lab profile. NOTE: If this parameter is omitted, or if the specified language is not specified on one of the Instruction sets in a lab profile, then the default language as defined in the Lab Profile ➔ Manage Instructions Sets option. en = English es = Spanish fr = French de = German pt = Portuguese ja = Japanese zh-hans = Simplified Chinese zh-hant = Traditional Chinese ko = Korean required: false style: form explode: true schema: type: string enum: - en - es - fr - de - pt - ja - zh-hans - zh-hant - ko example: en - name: instructionsId in: query description: |- When specified, Skillable will attempt to launch the lab and present the selected instructions. If not specified, or the instruction Id could not be found, the default instructions, as defined on the Lab Profile, will be used instead. This is a string that cannot contain spaces. NOTE: To be able to see how to use this parameter, add the column "API Example" in the Manage Instruction Sets feature while editing the instructions. required: false style: form explode: true schema: type: string example: Base-01 - schema: type: integer in: query name: durationMinutes description: 'An optional parameter used to adjust the lab timer duration, requires "Allow Lab Duration Customizations" setting to be enabled for the API Consumer. Value can be between a minimum of 15 minutes and a maximum of 1.5 the lab profile configured time. The absolute max is 20160 minutes (approximately 14 days).' - schema: type: integer in: query name: lastActivityTimeoutMinutes description: 'An optional parameter used to adjust the last activity timeout of the launched lab, requires "Allow Lab Duration Customizations" setting to be enabled for the API Consumer. Value can be between a minimum of 1 minute and absolute max is 20160 minutes (approximately 14 days).' responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/LaunchResponse' examples: Example of a successful lab instance launch: value: Result: 1 Url: 'https://labondemand.com/console/setup/1b4909d6-0dbe-43db-9ab9-74ee4f913c4e' LabInstanceId: 3896477 Expires: 1337977153 Status: 1 Error: null deprecated: false /cancel: get: summary: Cancel a lab instance description: |- The **Cancel** command allows you to cancel a specified lab instance. **Please note**: when issuing this command that there is some time required for the lab instance tear down process. If retrying a lab launch for a user where the Max Active Lab Instances Per User is set to 1 for the API consumer, then please take this teardown time into account for the API integration. operationId: Cancel parameters: - name: labinstanceid in: query description: The ID of the lab instance to cancel. required: true style: form explode: true schema: type: integer format: int64 example: 12345678 responses: '200': description: OK Response headers: {} content: application/json: schema: $ref: '#/components/schemas/CancelResponse' examples: Example of successfully cancelling a lab instance available to the API consumer: summary: Example of a successful response value: Result: 1 Error: null Status: 1 Example of trying to cancel a lab instance launched by a different API consumer: summary: Example of an error response value: Error: Invalid integration key Status: 1 deprecated: false tags: - Lab Instance Management /details: get: tags: - Lab Instance Management summary: Retrieve details about a lab instance description: The **Details** command retrieves detailed information about a specified lab instance. operationId: Details parameters: - name: labinstanceid in: query description: The ID of the lab instance. required: true style: form explode: true schema: type: integer format: int64 example: 360701 responses: '200': description: OK Response. content: application/json: schema: $ref: '#/components/schemas/DetailsResponse' examples: Example of the details returned from a specific lab instance: value: Id: 360701 LabProfileId: 18100 LabProfileName: '01: Launch/Details Call' SeriesId: 10702 SeriesName: API Examples UserId: '11' UserFirstName: Chad UserLastName: S ClassId: null ClassName: null Start: 1603295589 StartTime: /Date(1603295589000)/ Expires: 1603299334 ExpiresTime: /Date(1603299334000)/ End: 1603295793 EndTime: /Date(1603295793000)/ LastActivity: 1603295787 LastActivityTime: /Date(1603295787000)/ LastSave: null LastSaveTime: null SaveExpires: null SaveExpiresTime: null State: Tearing Down CompletionStatus: Complete PoolMemberName: null LabHostId: 111 LabHostName: LOD-HV03 DatacenterId: 4 DatacenterName: LOD-East DeliveryRegionId: 1 DeliveryRegionName: Default PlatformId: 2 LastSaveTriggerType: null TimeInSession: 204 TotalRunTime: 204 TimeRemaining: 0 InstructorName: null StartupDuration: 145 Errors: [] Snapshots: [] Sessions: - Start: 1603295589 StartTime: /Date(1603295589000)/ End: 1603295793 EndTime: /Date(1603295793000)/ Notes: - Time: 1603295793 TimeValue: /Date(1603295793000)/ Title: This environment has been submitted for grading and can no longer be accessed. Text: Submitted for scoring from the lab console by the student. HasContent: true Task: null Exercise: null NumTasks: 0 NumCompletedTasks: 0 TaskCompletePercent: 100 MonitorUrl: null DetailsUrl: 'https://labondemand.com/LabInstance/360701' RemoteController: HTML5 Tag: null BrowserUserAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36 Edg/86.0.622.48' LastLatency: 35 ExamPassed: true ExamScore: 5 ExamMaxPossibleScore: 5 ExamPassingScore: 2 ExamScoredById: null ExamScoredByName: null ExamDetails: null ExamScoredDate: 1603295793 ExamScoredTime: /Date(1603295793000)/ IsExam: true IpAddress: 198.199.209.76 Country: United States of America Region: Florida City: Lakeland Latitude: 28.03947 Longitude: -81.9498 PublicIpAddresses: [] CloudCredentials: - PropertiesJson: '{ "Username": "Username2", "Password": "Password2"}' Expires: 1645557720000 DisplayName: Demo Demo Demo Demo Demo Message: null CloudPortalCredentials: - CloudPlatform: 10 PropertiesJson: "{\r\n \"Username\": \"User1-360701@lod.onmicrosoft.com\",\r\n \"Password\": \"1234ABCD\",\r\n \"_FirstName\": \"Chad\",\r\n \"_LastName\": \"S\"\r\n}" VirtualMachineCredentials: - Id: 13484 Name: Windows 10 2004 Username: Student Password: Pa$$w0rd CloudPlatformId: 10 ClientUrl: null ActivityResults: - ActivityId: 4910 ActivityName: What is 1 + 1? Scored: true Score: 1 Passed: true ActivityType: 0 TextResult: null UiResponse: You got the correct answer. AnswerResults: - AnswerId: 2856 AnswerText: '2' Correct: true ScriptResults: [] DisplayScriptsAsTaskList: false AnswerTexts: - Correct: false AnswerId: 2855 Text: '1' Chosen: false - Correct: true AnswerId: 2856 Text: '2' Chosen: true - Correct: false AnswerId: 2857 Text: '3' Chosen: false - Correct: false AnswerId: 2858 Text: '4' Chosen: false ScriptTexts: [] ShowResultsInReports: true - ActivityId: 4911 ActivityName: Select all that result in a product of 4 Scored: true Score: 3 Passed: true ActivityType: 10 TextResult: null UiResponse: 'Good, you understand what a product function is.' AnswerResults: - AnswerId: 2859 AnswerText: '1, 4' Correct: true - AnswerId: 2860 AnswerText: '-1, -4' Correct: true - AnswerId: 2861 AnswerText: '2, 2' Correct: true DisplayScriptsAsTaskList: false AnswerTexts: - Correct: true AnswerId: 2859 Text: '1, 4' Chosen: true - Correct: true AnswerId: 2860 Text: '-1, -4' Chosen: true - Correct: true AnswerId: 2861 Text: '2, 2' Chosen: true - Correct: false AnswerId: 2862 Text: '2, -2' Chosen: false ScriptTexts: [] ShowResultsInReports: true - ActivityId: 4912 ActivityName: What is the southernmost continent on earth? Scored: true Score: 1 Passed: true ActivityType: 20 TextResult: Antarctica UiResponse: 'Great, you know your geography.' AnswerResults: [] ScriptResults: [] DisplayScriptsAsTaskList: false AnswerTexts: [] ScriptTexts: [] ShowResultsInReports: true - ActivityId: 110631 ActivityName: What are the colors of the French flag? Scored: true Score: 3 Passed: true ActivityType: 30 TextResult: 'It''s blue, white, red' UiResponse: 'Correct, move on to the next flag question.' AnswerResults: [] ScriptResults: [] DisplayScriptsAsTaskList: false AnswerTexts: [] ScriptTexts: [] ShowResultsInReports: true - ActivityId: 91810 ActivityName: 'Create a folder called LAB in the root of C:' Scored: true Score: 0 Passed: false ActivityType: 40 TextResult: null UiResponse: null AnswerResults: [] ScriptResults: - ScriptId: 37337 Score: 0 Passed: false UiResponse: '' ScriptResponse: "Check if [C:\\LAB] exists.\r\n\r\nPath Does Not Exist\r\n" PlatformError: false ScriptError: false DisplayScriptsAsTaskList: false AnswerTexts: [] ScriptTexts: - ScriptId: 37337 Text: null ShowResultsInReports: true ActivityGroupResults: - Id: 1131 Name: GRP1 ScoreValueTotal: 40 AggregateScore: 20 ActivityResults: - ActivityId: 91811 ActivityName: Instructor First Name Scored: true Score: 20 Passed: true ActivityType: 20 TextResult: Jon UiResponse: Correct AnswerResults: [] ScriptResults: [] DisplayScriptsAsTaskList: false AnswerTexts: [] ScriptTexts: [] ShowResultsInReports: true - ActivityId: 91812 ActivityName: Instructor Last Name Scored: true Score: 0 Passed: false ActivityType: 20 TextResult: Kirk UiResponse: Incorrect AnswerResults: [] ScriptResults: [] DisplayScriptsAsTaskList: false AnswerTexts: [] ScriptTexts: [] ShowResultsInReports: true EstimatedReadySeconds: null InstructionsId: The ID of the Instructions used Lang: en Error: null Status: 1 deprecated: false /Result: get: tags: - Lab Instance Management summary: Retrieve information about a lab instance result description: The **Result** command returns information about a particular lab instance result. operationId: Result parameters: - name: labinstanceId in: query description: The ID of the lab instance. required: true style: form explode: true schema: type: integer format: int64 example: 2393049 responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/ResultResponse' examples: Example of successfully returning information about a particular lab instance result: value: LabProfileId: 1 Start: 1338224609 End: 1338224624 LastActivity: 1338224624 UserId: '555' ClassId: null CompletionStatus: 4 TotalRunTimeSeconds: 4168 TaskCompletePercent: 100 IsExam: false ExamPassed: null ExamScore: null ExamMaxPossibleScore: null ExamPassingScore: null IpAddress: null Country: null Region: null City: null Latitude: null Longitude: null LabHostId: 49 DatacenterId: 3 DeliveryRegionId: 2 Status: 1 Error: null deprecated: false /Results: get: tags: - Lab Instance Management summary: Retrieve information about a lab instance result within a specified time range description: The **Results** command returns information about all lab instance results that started or ended within a specified time range. The time range cannot exceed 7 days. operationId: Results parameters: - name: start in: query description: The start of the timeframe to check against (in Unix epoch time). required: true style: form explode: true schema: type: integer format: int64 example: 1325376000 - name: end in: query description: The end of the timeframe to check against (in Unix epoch time). required: true style: form explode: true schema: type: integer format: int64 example: 1357002000 responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/ResultsResponse' examples: Example of returning information about all lab instance results that started or ended within a specified time range: value: Results: - LabInstanceId: 349744 LabProfileId: 5522 Start: 1325376800 End: 1325376900 LastActivity: 1325376900 UserId: '555' ClassId: null CompletionStatus: 1 TotalRunTimeSeconds: 2548 TaskCompletePercent: 33 IsExam: false ExamPassed: null ExamScore: null ExamMaxPossibleScore: null ExamPassingScore: null IpAddress: null Country: null Region: null City: null Latitude: null Longitude: null LabHostId: 49 DatacenterId: 3 DeliveryRegionId: 2 - LabInstanceId: 349745 LabProfileId: 5523 Start: 1325377000 End: 1325377100 LastActivity: 1325377100 UserId: '555' ClassId: null CompletionStatus: 1 TotalRunTimeSeconds: 4168 TaskCompletePercent: 44 IsExam: false ExamPassed: null ExamScore: null ExamMaxPossibleScore: null ExamPassingScore: null IpAddress: null Country: null Region: null City: null Latitude: null Longitude: null LabHostId: 125 DatacenterId: 4 DeliveryRegionId: 3 Status: 1 Error: null Example when specifying a date range greater than 7 days: value: Error: Timeframe cannot exceed 7 days Status: 0 deprecated: false /labinstance/search: get: summary: Retrieve multiple lab instance details or results tags: - Lab Instance Management responses: '200': description: OK Response. content: application/json: schema: type: object properties: TotalResults: type: integer x-stoplight: id: h5s48n18h1ca4 example: 878 description: The total number of results found. TotalPages: type: integer x-stoplight: id: vpzujejh05rgu example: 9 description: The total number of pages containing results. Results: x-stoplight: id: xo2qmubw7w1un oneOf: - $ref: '#/components/schemas/ResultResponse' - $ref: '#/components/schemas/DetailsResponse' description: 'Response format depends on mode specified. 0 for standard /Result, 10 for verbose). ' operationId: LabInstanceSearch x-stoplight: id: 1i3hzl72od78k description: "The lab instance **Search** command returns paginated information about either lab instance details or lab instance results for all lab instances that meet selected criteria. \r\nThe response body will contain a collection of instance results in one of two formats, depending on the mode specified:\r\n\r\n- Mode = 0, standard: a collection of responses in the format of the **[Result](https://docs.skillable.com/apidocs/retrieve-information-about-a-lab-instance-result-1)** command\r\n\r\n- Mode = 10, verbose (default) a collection of responses in the format of the **[Details](https://docs.skillable.com/apidocs/retrieve-details-about-a-lab-instance)** command \r\n\r\n" parameters: - schema: type: integer format: int64 example: 1717516139 in: query name: start description: The earliest start time of lab instances to return (in Unix epoch time). - schema: type: integer format: int64 example: 1712245739 in: query name: end description: The latest end time of lab instances to return (in Unix epoch time). - schema: type: string in: query name: userId description: 'The user id of the external system. Must be an exact match. ' - schema: type: integer format: int32 example: 54321 in: query name: labSeriesId description: The unique numeric identifier of the series the lab profile belongs to. - schema: type: integer format: int32 example: 12345 in: query name: labProfileId description: The unique numeric identifier of the lab profile. - schema: type: integer default: 0 format: int32 in: query name: pageIndex description: The index of the paged result to return. - schema: type: integer default: 100 format: int32 in: query name: pageSize description: The size of the paged result to return. - schema: type: string default: start desc in: query name: sort description: 'The desired sort order of the results. Options include: start (default), start desc, end, end desc, userid, userid desc, labseriesid, labseriesid desc, labprofileid, labprofileid desc.' - schema: type: integer default: 10 format: int32 in: query name: mode description: 'Which response schema to return. 0 - standard, returns response body of /Result, 10 - verbose, returns response body of /details.' parameters: [] /save: get: tags: - Lab Instance Management summary: Save a lab instance description: The **Save** command allows you to save a specified lab instance. operationId: Save parameters: - name: labinstanceid in: query description: The ID of the lab instance to save. required: true style: form explode: true schema: type: integer format: int64 example: 2393049 responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/SaveResponse' examples: Example of successfully saving a specified lab instance: value: Result: 1 Expires: 1337977153 Status: 1 Error: null deprecated: false /resume: get: tags: - Lab Instance Management summary: Resume a lab instance from a saved state description: The **Resume** command allows you to resume a specified lab instance. operationId: Resume parameters: - name: labinstanceid in: query description: The ID of the lab instance to resume. required: true style: form explode: true schema: type: integer format: int64 example: 2393049 responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/ResumeResponse' examples: Example of resuming a lab with a specific lab instance: value: Result: 1 Url: 'https://labondemand.com/console/setup/1b4909d6-0dbe-43db-9ab9-74ee4f913c4e' Expires: 1337977153 LabProfileId: 18100 Status: 1 Error: null deprecated: false /scoreactivities: get: tags: - Lab Instance Management summary: Initiate scoring in a lab instance description: |- The **ScoreActivities** command causes all scored activities in a particular lab instance to undergo scoring. Please note that this is API command is only necessary in specialized situations. In most cases, scoring is triggered by the student in the lab client and this command is not needed. However, if your students do not use our lab client, ScoreActivities provides a mechanism to trigger scoring. This command does not return scoring results. To obtain scoring results, use the **[Details](https://docs.skillable.com/apidocs/retrieve-details-about-a-lab-instance)** command. operationId: ScoreActivities parameters: - name: labinstanceid in: query description: The ID of the lab instance. required: false style: form explode: true schema: type: integer format: int64 example: 12186142 - name: rescoreAll in: query description: The ID of the lab instance. required: false style: form explode: true schema: type: integer format: int32 example: 12186142 responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/ScoreActivitiesResponse' examples: Example successful response: value: Status: 1 Error: null deprecated: false /sendnotification: post: tags: - Lab Instance Management summary: Send a notification to a lab instance description: 'The **SendNotification** command allows you to send a notification to a specified lab instance for the user to see. For notifications sent using the POST HTTP verb, the notification text is limited to 4000 characters.' operationId: SendNotification-post parameters: - name: labinstanceid in: query description: The ID of the lab instance to send the notification to. required: true style: form explode: true schema: type: integer format: int64 example: 2393048 - name: notification in: query description: 'The text of the notification to send. Please ensure the message is properly encoded. Line breaks can be included using \n. For notifications sent using the POST HTTP verb, the notification text is limited to 4000 characters.' required: true style: form explode: true schema: type: string example: I'd+like+to+let+you+know - name: name in: query description: 'An optional name for the notification. If you name the notification, subsequent SendNotification commands using the same labInstanceId and name will cause the existing notification to be updated. It is also possible to delete a named notification by sending the name along with no notification value.' required: false style: form explode: true schema: type: string example: Hello responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/SendNotificationResponse' examples: Example of successfully sending a notification: value: Id: 28297 Result: 1 Status: 1 Error: null deprecated: false get: tags: - Lab Instance Management summary: Send a notification to a lab instance description: 'The **SendNotification** command allows you to send a notification to a specified lab instance for the user to see. For notifications sent using the GET HTTP verb, the notification text is limited to 800 characters. ' operationId: SendNotification-get parameters: - name: labinstanceid in: query description: The ID of the lab instance to send the notification to. required: true style: form explode: true schema: type: integer format: int64 example: 2393048 - name: notification in: query description: 'The text of the notification to send. Please ensure the message is properly encoded. Line breaks can be included using \n. For notifications sent using the GET HTTP verb, the notification text is limited to 800 characters.' required: true style: form explode: true schema: type: string example: I'd+like+to+let+you+know - name: name in: query description: 'An optional name for the notification. If you name the notification, subsequent SendNotification commands using the same labInstanceId and name will cause the existing notification to be updated. It is also possible to delete a named notification by sending the name along with no notification value.' required: false style: form explode: true schema: type: string example: Hello responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/SendNotificationResponse' examples: Example of successfully sending a notification: value: Id: 28297 Result: 1 Status: 1 Error: null deprecated: false /replacementtokens: get: tags: - Lab Instance Management summary: Retrieve replacement tokens from a lab instance description: The **ReplacementTokens** command retrieves all @lab replacement tokens available for a particular lab instance. operationId: ReplacementTokens parameters: - name: labInstanceId in: query description: The ID of the lab instance. required: true style: form explode: true schema: type: integer format: int64 example: 1286841 responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/ReplacementTokensResponse' examples: Example of retrieving all @lab replacement tokens available for a particular lab instance: value: ReplacementTokens: - Token: '@lab.VirtualMachine(machine1).Username' Replacement: user1 - Token: '@lab.VirtualMachine(machine1).Password' Replacement: h&4Fa?)C3/eQ;)?E - Token: '@lab.VirtualMachine(machine2).Username' Replacement: user1 - Token: '@lab.VirtualMachine(machine2).Password' Replacement: LXM(#(Z^Hw4Upp>f - Token: '@lab.LabInstance.Id' Replacement: '15167595' - Token: '@lab.LabInstance.GlobalId' Replacement: lod15167595 - Token: '@lab.LabInstance.StartDate' Replacement: '20190809' - Token: '@lab.LabProfile.Id' Replacement: '1581178' - Token: '@lab.User.Id' Replacement: '11832814' - Token: '@lab.User.FirstName' Replacement: 'John ' - Token: '@lab.User.LastName' Replacement: Doe - Token: '@lab.User.Email' Replacement: john.doe@sample.net Error: null Status: 1 deprecated: false /LatestResults: get: tags: - Lab Instance Management summary: Returns information about all lab instance results that have recently started or ended description: The **LatestResults** command returns information about all lab instance results that have recently changed state. operationId: LatestResults parameters: - name: minutes in: query description: 'Lab instances that have changed state within this many minutes of the current time will be included. This value cannot exceed 10,080 (7 days)' required: true style: form explode: true schema: type: integer format: int64 example: 60 responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/LatestResultsResponse' examples: Example response returning information about all lab instance results that have recently changed state: value: Results: - LabInstanceId: 349744 LabProfileId: 5522 Start: 1325376800 End: 1325376900 LastActivity: 1325376899 UserId: '555' ClassId: null CompletionStatus: 1 TotalRunTimeSeconds: 2548 TaskCompletePercent: 33 IsExam: false ExamPassed: null ExamScore: null ExamMaxPossibleScore: null ExamPassingScore: null IpAddress: null Country: null Region: null City: null Latitude: null Longitude: null LabHostId: 49 DatacenterId: 3 DeliveryRegionId: 2 - LabInstanceId: 349745 LabProfileId: 5523 Start: 1325377000 End: 1325377100 LastActivity: 1325377099 UserId: '555' ClassId: null CompletionStatus: 1 TotalRunTimeSeconds: 4168 TaskCompletePercent: 44 IsExam: false ExamPassed: null ExamScore: null ExamMaxPossibleScore: null ExamPassingScore: null IpAddress: null Country: null Region: null City: null Latitude: null Longitude: null LabHostId: 125 DatacenterId: 4 DeliveryRegionId: 3 Status: 1 Error: null deprecated: false /runningandsavedlabs: get: tags: - Lab Instance Management summary: Retrieves running and saved lab instances available to this API consumer description: |- The **RunningAndSavedLabs** command retrieves all lab instances launched by this API Consumer that are currently running or saved. **NOTE**: there are no query parameters for this command. operationId: RunningAndSavedLabs parameters: [] responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/RunningAndSavedLabsResponse' examples: Example of retrieving all lab instances launched by this API Consumer that are currently running or saved: value: RunningLabs: - Id: 3497 UserId: '5843' UserFirstName: John UserLastName: Doe LabProfileId: 5 LabProfileName: Demo Lab 1 LabProfileNumber: LAB001 Start: 1338223121 Expires: 1338244721 IsExam: false SavedLabs: - Id: 3493 UserId: '5158' UserFirstName: Sally UserLastName: Smith LabProfileId: 1 LabProfileName: Demo Lab 2 LabProfileNumber: LAB002 Start: 1337987655 Expires: 1338592455 IsExam: false Status: 1 Error: null deprecated: false /stats: get: tags: - Lab Instance Management summary: Returns statistics about how many labs are currently active and saved description: |- The **Stats** command returns statistics about how many labs are currently active and saved. **NOTE**: there are no query parameters for this command. operationId: Stats parameters: [] responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/StatsResponse' examples: Example of returning statistics about how many labs are currently active and saved: value: NumActive: 571 NumSaved: 451 Status: 1 Error: null deprecated: false /GetEvaluationResponses: get: tags: - Lab Instance Management summary: Returns evaluation data for a specific evaluation description: The **GetEvaluationResponses** command returns evaluation responses. operationId: GetEvaluationResponses parameters: - name: id in: query description: The unique identifier of the evaluation. required: true style: form explode: true schema: type: integer format: int32 example: 12345 - name: takenAfter in: query description: The date/time (in Unix epoch time) that the evaluation response is after. required: false style: form explode: true schema: type: integer format: int64 example: 1598292299 - name: takenBefore in: query description: The date/time (in Unix epoch time) that the evaluation response is after. required: false style: form explode: true schema: type: integer format: int64 example: 1598465099 - name: classId in: query description: The unique identifier of the class the evaluation was taken in. required: false style: form explode: true schema: type: integer format: int32 example: 1223334444 - name: eventId in: query description: The unique identifier of the event the evaluation was taken in. required: false style: form explode: true schema: type: integer format: int32 example: 24 responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/GetEvaluationResponsesResponse' examples: Example of a response for an evaluation: value: Responses: - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: 'Multiple Choice, Multiple Answers' Label: '' A1DText: Answer 2 A1DWeight: 0 A2DText: null A2DWeight: null TextAnswer: null - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: 'Matrix, One Answer Per Row' Label: '' A1DText: Row 1 A1DWeight: 0 A2DText: Column 2 A2DWeight: 0 TextAnswer: null - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: 'Matrix, One Answer Per Row' Label: '' A1DText: Row 2 A1DWeight: 0 A2DText: Column 2 A2DWeight: 0 TextAnswer: null - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: 'Matrix, One Answer Per Row' Label: '' A1DText: Row 3 A1DWeight: 0 A2DText: Column 2 A2DWeight: 0 TextAnswer: null - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: 'Matrix, Multiple Answers Per Row' Label: '' A1DText: Row 1 A1DWeight: 0 A2DText: Column 1 A2DWeight: 0 TextAnswer: null - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: 'Matrix, Multiple Answers Per Row' Label: '' A1DText: Row 3 A1DWeight: 0 A2DText: Column 3 A2DWeight: 0 TextAnswer: null - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: Single Textbox Label: '' A1DText: null A1DWeight: null A2DText: null A2DWeight: null TextAnswer: Just answer 2 - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: Multiple Textboxs Label: '' A1DText: Textbox 1 A1DWeight: 0 A2DText: null A2DWeight: null TextAnswer: Textboxes 2 and 3 are blank. - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: Multiple Textboxs Label: '' A1DText: Textbox 2 A1DWeight: 0 A2DText: null A2DWeight: null TextAnswer: This is answer 2 - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: Multiple Textboxs Label: '' A1DText: Textbox 1 A1DWeight: 0 A2DText: null A2DWeight: null TextAnswer: This is answer 1 - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: Single Textbox Label: '' A1DText: null A1DWeight: null A2DText: null A2DWeight: null TextAnswer: I answered 1 and 2 - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: 'Matrix, Multiple Answers Per Row' Label: '' A1DText: Row 3 A1DWeight: 0 A2DText: Column 3 A2DWeight: 0 TextAnswer: null - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: 'Matrix, Multiple Answers Per Row' Label: '' A1DText: Row 3 A1DWeight: 0 A2DText: Column 1 A2DWeight: 0 TextAnswer: null - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 Label: '' QuestionText: 'Matrix, Multiple Answers Per Row' A1DText: Row 2 A1DWeight: 0 A2DText: Column 3 A2DWeight: 0 TextAnswer: null Error: null Status: 1 deprecated: false /labprofile: get: summary: Retrieves information about a specified lab profile description: The **LabProfile** command will return information about a specific lab profile. operationId: LabProfile parameters: - name: id in: query description: The unique identifier of the lab profile. required: true style: form explode: true schema: type: integer format: int32 example: 77457 responses: '200': description: OK Response. content: application/json: schema: $ref: '#/components/schemas/LabProfileResponse' examples: Example of returning information a specific lab profile: value: Error: null Status: 1 Id: 1 Name: Demo Lab 1 Number: ' Module 1' PlatformId: 2 Platform: 2 CloudPlatformId: null SeriesId: 1 OrganizationId: 5 Enabled: true ReasonDisabled: null DevelopmentStatusId: 10 DevelopmentStatus: 10 RequiresBrowserPlugin: false RequiresNestedVirtualization: false NumPublicIpAddresses: 0 Description: A demo lab. Objective: This is the HTML-formatted objective of the lab Scenario: ' This is the HTML-formatted scenario of the lab' DurationMinutes: 360 ExpectedDurationMinutes: 360 ResourceUnits: 16 Ram: 512 HasIntegratedContent: true ContentVersion: 2 IsExam: false PremiumPrice: 10 BasicPrice: 8 PricePerHour: 2 ExpectedCloudCost: 0 ParticipantLabPrice: 0 ExamPages: - Empty SharedClassEnvironmentRoleId: 0 SharedClassEnvironmentRole: 0 SharedClassEnvironmentLabProfileId: 0 UsesRdp: false Tags: - Tag1 - Tag2 InstructionSets: - Id: Base-01 Language: en Description: Basic Instructions LabTitle: A demo lab DurationMinutes: 360 OrganizationId: 1 - Id: Base-01 Language: fr Description: Instructions de base LabTitle: Un laboratoire de démonstration DurationMinutes: 360 OrganizationId: 1 Created: 1656366326607 LastModified: 1656440153550 SCORMLastDownloaded: 1755781199000 deprecated: false tags: - Lab Profile Management /GetLabInstructions: get: summary: Returns instructions for a specific lab description: The **GetLabInstructions** command allows you to download the IDLx instructions of a lab as a string. operationId: GetLabInstructions parameters: - name: id in: query description: The ID of the lab profile that will be the source of the instructions. The profile must be owned by the organization on the API consumer. required: true style: form explode: true schema: type: integer format: int32 example: 2393048 - name: lang in: query description: |- Allows you to select the language of the Instruction Set. Using this in connection with instructionsId will allow you to select a specific lab Instruction Set in the specified language if they have been defined within the lab profile. NOTE: If this parameter is omitted, or if the specified language is not specified on one of the Instruction sets in a lab profile, then the default language as defined in the Lab Profile ➔ Manage Instructions Sets option will be used instead. en = English es = Spanish fr = French de = German pt = Portuguese ja = Japanese zh-hans = Simplified Chinese zh-hant = Traditional Chinese ko = Korean required: false style: form explode: true schema: type: string enum: - en - es - fr - de - pt - ja - zh-hans - zh-hant - ko example: en - name: instructionsId in: query description: |- When specified, Skillable will attempt to retrieve the selected instructions. If not specified, or the instruction Id could not be found, the default instructions, as defined on the Lab Profile, will be used instead. This is a string that cannot contain spaces. NOTE: To be able to see how to use this parameter, add the column "API Example" in the Manage Instruction Sets feature while editing the instructions. required: false style: form explode: true schema: type: string example: Base-01 responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/GetLabInstructionsResponse' examples: Example of retrieving the instructions from a lab: value: Instructions: '##Welcome to the world of tomorrow!' Error: null Status: 1 Example when trying to retrieve instructions for a nonexistent lab profile: value: Error: Lab profile not found Status: 0 deprecated: false tags: - Lab Profile Management /GetLabInstructionsPackage: get: summary: Returns the contents of the instructions for a specific lab as a file archive description: |- The **GetLabInstructionsPackage** command allows you to download the IDLx instructions of a lab as an archived file. The results are returned as a compressed format that can be exported as a .zip file when using Postman. There is an additional Header parameter Content-Disposition that is returned which contains the name of the lab. operationId: GetLabInstructionsPackage parameters: - name: id in: query description: The ID of the lab profile that will be the source of the instructions. The profile must be owned by the organization on the API consumer. required: true style: form explode: true schema: type: integer format: int32 example: 2393048 - name: lang in: query description: |- Allows you to select the language of the Instruction Set. Using this in connection with instructionsId will allow you to select a specific lab Instruction Set in the specified language if they have been defined within the lab profile. NOTE: If this parameter is omitted, or if the specified language is not specified on one of the Instruction sets in a lab profile, then the default language as defined in the Lab Profile ➔ Manage Instructions Sets option will be used instead. en = English es = Spanish fr = French de = German pt = Portuguese ja = Japanese zh-hans = Simplified Chinese zh-hant = Traditional Chinese ko = Korean required: false style: form explode: true schema: type: string enum: - en - es - fr - de - pt - ja - zh-hans - zh-hant - ko example: en - name: instructionsId in: query description: |- When specified, Skillable will attempt to retrieve the selected instructions. If not specified, or the instruction Id could not be found, the default instructions, as defined on the Lab Profile, will be used instead. This is a string that cannot contain spaces. NOTE: To be able to see how to use this parameter, add the column "API Example" in the Manage Instruction Sets feature while editing the instructions. required: false style: form explode: true schema: type: string example: Base-01 responses: '200': description: OK Response. headers: Content-Disposition: schema: type: string description: |- attachment; filename="DemoLab.zip" **Note:** The filename will contain the name of the Lab Profile. content: application/zip: schema: type: object properties: '': type: string description: The raw binary compressed package. format: binary deprecated: false tags: - Lab Profile Management /updatelabinstructions: post: summary: Update IDLx instructions of a lab profile description: 'The **UpdateLabInstructions** command allows you to update the IDLx instructions of a lab. In order to support longer instructions lengths, this method requires an HTTP POST. The Content-Type of your post should be set to application/x-www-form-urlencoded.' operationId: UpdateLabInstructions parameters: - name: id in: query description: The ID of the lab profile to update. required: true style: form explode: true schema: type: integer format: int32 example: 2393048 - name: lang in: query description: |- Allows you to select the language of the Instruction Set. Using this in connection with instructionsId will allow you to update a specific lab Instruction Set in the specified language if they have been defined within the lab profile. NOTE: If this parameter is omitted, or if the specified language is not specified on one of the Instruction sets in a lab profile, then the default language as defined in the Lab Profile ➔ Manage Instructions Sets option will be used instead. en = English es = Spanish fr = French de = German pt = Portuguese ja = Japanese zh-hans = Simplified Chinese zh-hant = Traditional Chinese ko = Korean required: false style: form explode: true schema: type: string enum: - en - es - fr - de - pt - ja - zh-hans - zh-hant - ko example: en - name: instructionsId in: query description: |- When specified, Skillable will attempt to update the selected instructions. If not specified, or the instruction Id could not be found, the default instructions, as defined on the Lab Profile, will be updated instead. This is a string that cannot contain spaces. NOTE: To be able to see how to use this parameter, add the column "API Example" in the Manage Instruction Sets feature while editing the instructions. required: false style: form explode: true schema: type: string example: Base-01 - name: instructions in: query description: The IDLx instructions. This should included in the body of the post. required: true style: form explode: true schema: type: string example: Updated from the API responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/UpdateLabInstructionsResponse' examples: Example of successfully updating the lab instructions: value: Status: 1 Error: null deprecated: false tags: - Lab Profile Management /updatelabinstructionspackage: post: summary: Allows you to update the IDLx instructions of a lab by uploading a ZIP archive description: |- The **UpdateLabInstructionsPackage** command allows you to update the IDLx instructions of a lab by uploading a ZIP archive containing the instructions and any referenced files, such as images and videos. **This method requires an HTTP POST**. The Content-Type of your post should be set to multipart/form-data. This is the same behavior that a browser uses to upload a file to a server. In .NET environments, the System.Net.WebClient class provides an UploadFile method that can be used. Set your content by using the body tab in postman. operationId: UpdateLabInstructionsPackage parameters: - name: Id in: query description: The ID of the lab profile to update. required: true style: form explode: true schema: type: integer format: int32 example: 2393048 - name: lang in: query description: |- Allows you to select the language of the Instruction Set. Using this in connection with instructionsId will allow you to select a specific lab Instruction Set in the specified language if they have been defined within the lab profile. NOTE: If this parameter is omitted, or if the specified language is not specified on one of the Instruction sets in a lab profile, then the default language as defined in the Lab Profile ➔ Manage Instructions Sets option. en = English es = Spanish fr = French de = German pt = Portuguese ja = Japanese zh-hans = Simplified Chinese zh-hant = Traditional Chinese ko = Korean required: false style: form explode: true schema: type: string enum: - en - es - fr - de - pt - ja - zh-hans - zh-hant - ko example: en - name: instructionsId in: query description: |- When specified, Skillable will attempt to update the selected instructions. If not specified, or the instruction Id could not be found, the default instructions, as defined on the Lab Profile, will be updated instead. This is a string that cannot contain spaces. NOTE: To be able to see how to use this parameter, add the column "API Example" in the Manage Instruction Sets feature while editing the instructions. required: false style: form explode: true schema: type: string example: Base-01 requestBody: content: multipart/form-data: schema: type: object properties: file: type: string format: binary responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/UpdateLabInstructionsResponse' examples: Example of successfully updating the lab instructions: value: Status: 1 Error: null deprecated: false tags: - Lab Profile Management /class: get: summary: Returns information about a class description: The **Class** command returns information about a class. operationId: Class parameters: - name: id in: query description: 'The unique identifier of the class, as represented in your organization.' style: form explode: true schema: type: string example: '1223334444' required: true responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/ClassResponse' examples: Example of getting information about a specific class: value: Id: '4449999' Name: Sample Class Start: 1333267200 StartTime: /Date(1333267200000)/ End: 1333299600 EndTime: /Date(1333299600000)/ Expires: 1335978000 ExpiresTime: /Date(1335978000000)/ Instructor: Id: '65214' FirstName: Demo LastName: Instructor Url: null MaxActiveLabInstances: 20 AvailableLabs: - 17390 - 17432 Error: null Status: 1 deprecated: false tags: - Class Management /GetOrCreateClass: get: summary: 'Returns information about a class. If the class doesn’t exist, it is created' description: 'The **GetOrCreateClass** command returns information about a class. If the class doesn’t exist, it is created.' operationId: GetOrCreateClass parameters: - name: id in: query description: 'The unique identifier of the class, as represented in your organization.' required: true style: form explode: true schema: type: string example: '1223334444' - name: name in: query description: The name of the class. required: true style: form explode: true schema: type: string example: Sample+Class - name: start in: query description: When the class starts (in Unix epoch time). required: true style: form explode: true schema: type: integer format: int64 example: 1333267200 - name: end in: query description: When the class ends (in Unix epoch time). required: true style: form explode: true schema: type: integer format: int64 example: 1333299600 - name: expires in: query description: When labs can no longer be associated with the class (in Unix epoch time). required: true style: form explode: true schema: type: integer format: int64 example: 1335978000 - name: instructorId in: query description: The ID you use to identify the class instructor in your external system. required: false style: form explode: true schema: type: string example: '65214' - name: instructorFirstName in: query description: The first name of the class instructor. required: false style: form explode: true schema: type: string example: Demo - name: instructorLastName in: query description: The last name of the class instructor. required: false style: form explode: true schema: type: string example: Instructor - name: maxActiveLabInstances in: query description: 'The maximum number of active lab instances than can exist concurrently within this class context. This is optional in most situations. However, it is required for classes that host shared environments. If a shared lab is launched against a class that doesn''t have this value set, the launch will fail.' required: false style: form explode: true schema: type: integer format: int32 example: 20 - name: AvailableLabs in: query description: 'An optional array of lab profile IDs. When provided, Skillable will know that these labs are available within the class. You do not need to set this value in order to launch labs against the class. This is useful when using Skillable to display a class attendance page, or when consuming shared class environments and you want the shared environment launch link to appear on the class monitor page.' required: false style: form explode: true schema: type: array items: type: integer uniqueItems: true example: - 17390 - 17432 responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/GetOrCreateClassResponse' examples: Example of creating a class: value: Id: '4449999' Name: Sample Class Start: 1333267200 StartTime: /Date(1333267200000)/ End: 1333299600 EndTime: /Date(1333299600000)/ Expires: 1335978000 ExpiresTime: /Date(1335978000000)/ Instructor: null Url: null MaxActiveLabInstances: null AvailableLabs: - 17390 - 17432 Status: 1 Error: null Example of retrieving information on an existing class: value: Id: '4449999' Name: Sample Class Start: 1333267200 StartTime: /Date(1333267200000)/ End: 1333299600 EndTime: /Date(1333299600000)/ Expires: 1335978000 ExpiresTime: /Date(1335978000000)/ Instructor: Id: '65214' FirstName: Demo LastName: Instructor Url: null MaxActiveLabInstances: null AvailableLabs: - 17390 - 17432 Status: 1 Error: null deprecated: false tags: - Class Management /ClassAccessUrl: get: summary: Returns a single use URL to access a class description: The **ClassAccessUrl** command returns a single use URL to access the class management page. operationId: ClassAccessUrl parameters: - name: id in: query description: 'The unique identifier of the class, as represented in your organization.' required: true style: form explode: true schema: type: string example: '4449999' responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/ClassAccessUrlResponse' examples: Example of a successful response with a valid class: value: Url: 'https://labondemand.com/class/access/ab1c2345-6d7b-890e-f1gh-234ij5kl6m7n' Error: null Status: 1 Example of an error response when class is not found: value: Error: Class not found Status: 0 deprecated: false tags: - Class Management /LabMonitorUrl: get: summary: Returns a single use URL to monitor a lab instance responses: '200': description: OK Response. content: application/json: schema: $ref: '#/components/schemas/LabMonitorUrlResponse' examples: Example of successfully retrieving the URL to monitor a lab instance: value: Url: 'https://labondemand.com/access/ab1c2345-6d7b-890e-f1gh-234ij5kl6m7n?monitor=1' Error: null Status: 1 operationId: LabMonitorUrl parameters: - schema: type: integer format: int64 in: query name: labInstanceId description: The unique identifier of the lab instance. required: true style: form description: The **LabMonitorUrl** command returns a single use URL to monitor a lab instance. tags: - Class Management /LabAccessUrl: get: summary: Returns a single use URL is used to access a lab instance responses: '200': description: OK Response. content: application/json: schema: $ref: '#/components/schemas/LabAccessUrlResponse' examples: Example of successfully retrieving the URL for an active Lab instance.: value: Url: 'https://labondemand.com/access/ab1c2345-6d7b-890e-f1gh-234ij5kl6m7n' Error: null Status: 1 operationId: LabAccessUrl description: The **LabAccessUrl** command returns a single use URL to access a lab instance. parameters: - schema: type: integer format: int64 in: query name: labInstanceId style: form description: The unique identifier of the lab instance. required: true - schema: type: integer format: int32 in: query name: roleId description: Allows you to specify the role(s) to assign to the user. You may pass multiple instances of this parameter to specify multiple roles. Roles are used for specialized integration purposes and are not needed in typical integration scenarios. Role IDs will be provided by Skillable when appropriate. style: form tags: - Class Management /updateclass: get: summary: Updates a specified class description: The **UpdateClass** command updates a specified class. operationId: UpdateClass parameters: - name: id in: query description: 'The unique identifier of the class, as represented in your organization.' required: true style: form explode: true schema: type: string example: '1223334444' - name: name in: query description: The name of the class. required: true style: form explode: true schema: type: string example: Sample+Class - name: start in: query description: When the class starts (in Unix epoch time). required: true style: form explode: true schema: type: integer format: int64 example: 1333267200 - name: end in: query description: When the class ends (in Unix epoch time). required: true style: form explode: true schema: type: integer format: int64 example: 1333299600 - name: expires in: query description: When labs can no longer be associated with the class (in Unix epoch time). required: true style: form explode: true schema: type: integer format: int64 example: 1335978000 - name: instructorId in: query description: 'The unique identifier of the class instructor, as represented in your organization.' required: false style: form explode: true schema: type: string example: ABC123 - name: instructorFirstName in: query description: The first name of the class instructor. required: false style: form explode: true schema: type: string example: Demo - name: instructorLastName in: query description: The last name of the class instructor. required: false style: form explode: true schema: type: string example: Instructor - name: maxActiveLabInstances in: query description: 'The maximum number of active lab instances than can exist concurrently within this class context. This is optional in most situations. However, it is required for classes that host shared environments. If a shared lab is launched against a class that doesn''t have this value set, the launch will fail.' required: false style: form explode: true schema: type: integer format: int32 example: 20 - name: AvailableLabs in: query description: 'An optional array of lab profile IDs. When provided, Skillable will know that these labs are available within the class. You do not need to set this value in order to launch labs against the class. This is useful when using Skillable to display a class attendance page, or when consuming shared class environments and you want the shared environment launch link to appear on the class monitor page.' style: form explode: true schema: type: array items: type: integer uniqueItems: true example: - 17390 - 16980 responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/UpdateClassResponse' examples: Example of response after successfully updating information for a specified class: value: Success: true Status: 1 Error: null deprecated: false tags: - Class Management /deleteclass: get: summary: Deletes a specified class description: The **DeleteClass** command deletes a specified class. operationId: DeleteClass parameters: - name: id in: query description: 'The unique identifier of the class, as represented in your organization.' required: true style: form explode: true schema: type: string example: '4449999' responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/DeleteClassResponse' examples: Example of successfully deleting an existing class: value: Success: true Error: null Status: 1 Example of trying to delete a class that does not exist: value: Error: Class not found Status: 0 deprecated: false tags: - Class Management /userrunningandsavedlabs: get: summary: Retrieve all running or saved labs for a particular user account description: The **UserRunningAndSavedLabs** command retrieves all labs that are currently running or saved for a particular user account. operationId: UserRunningAndSavedLabs parameters: - name: userid in: query description: The unique identifier used to identify the user in within your organization. required: true style: form explode: true schema: type: string example: '555' responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/UserRunningAndSavedLabsResponse' examples: Example of retrieving all labs that are currently running or saved for a particular user account: value: RunningLabs: - LabInstanceId: 3497 LabProfileId: 5 LabProfileName: Demo Lab 1 LabProfileNumber: LAB001 Start: 1338223121 Expires: 1338244721 Url: null IsExam: false SavedLabs: - LabInstanceId: 3493 LabProfileId: 1 LabProfileName: Demo Lab 2 LabProfileNumber: LAB002 MinutesRemaining: 359 Saved: 1337987655 Expires: 1338592455 SaveInProgress: false IsExam: false SubmittedForGrading: false Status: 1 Error: null deprecated: false tags: - User Management /CloseUserAccount: get: summary: Close a user account description: The **CloseUserAccount** command closes a user account and removes all user information using an ID. This is usually a unique identifier used by the calling system. operationId: CloseUserAccount parameters: - name: userId in: query description: The ID of the user to retrieve. This is usually a unique identifier used by the calling system. required: true style: form explode: true schema: type: string example: '555' responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/CloseUserAccountResponse' examples: Example of successfully closing out a user account: value: Status: 1 Error: null RowsAffected: 25 Example response when the user does not exist and no rows are affected: value: RowsAffected: 0 Error: null Status: 1 deprecated: false tags: - User Management /LaunchForEvent: get: summary: Launches a specified lab within an event description: The **LaunchForEvent** command launches a lab instance within an event. operationId: LaunchforEvent parameters: - name: labId in: query description: The ID of the lab profile. required: true style: form explode: true schema: type: integer format: int32 example: 100 - name: eventId in: query description: The ID of the event the lab is part of. required: true style: form explode: true schema: type: integer format: int32 example: 24 - name: userid in: query description: The ID you use to identify the user in your external system. required: true style: form explode: true schema: type: string example: '555' - name: firstname in: query description: The user’s first name. required: true style: form explode: true schema: type: string example: Joe - name: lastname in: query description: The user’s last name. required: true style: form explode: true schema: type: string example: Smith - name: email in: query description: The user’s email address. required: true style: form explode: true schema: type: string example: joe.smith@email.com - name: classId in: query description: 'An optional parameter used to associate the lab with a class (see **GetOrCreateClass**). This is the unique identifier of the class as it is represented in your organization. ' required: false style: form explode: true schema: type: string example: '1223334444' - name: canBeMarkedComplete in: query description: 'An optional parameter used to specify if the lab can be marked as complete by the student. 1 = true, 2 = false. If not specified, defaults to 1 (true).' required: false style: form explode: true schema: type: integer format: int32 enum: - 1 - 2 default: 1 example: 1 - name: tag in: query description: An optional parameter that can be used for tagging the lab instance with your own custom data. required: false style: form explode: true schema: type: string example: eventLaunch - name: ipAddress in: query description: 'When specified, Skillable will attempt to launch the lab in the closest available delivery region. You should provide the IP address of the user that is taking the lab, not the IP address of your system.' required: false style: form explode: true schema: type: string example: 1.1.1.1 - name: regionId in: query description: 'When specified, Skillable will attempt to launch the lab in the specified delivery region if a suitable host in that region is available and all required storage is available in that region. Delivery regions can be found using the **DeliveryRegions** command or **Catalog** command. Using the ipAddress parameter will result in a more reliable geo-location of the lab for the end user.' required: false style: form explode: true schema: type: integer format: int32 example: 1 - name: lang in: query description: |- Allows you to override the language of the Instruction Set as well as the lab client UI language. This affects lab client UI elements like menus, tabs, and dialogs. Using this in connection with instructionsId will allow you to select launching labs with a specific Instruction Set in the specified language if they have been defined within the lab profile. NOTE: If this parameter is omitted, or if the specified language is not specified on one of the Instruction sets in a lab profile, then the default language as defined in the Lab Profile ➔ Manage Instructions Sets option. en = English es = Spanish fr = French de = German pt = Portuguese ja = Japanese zh-hans = Simplified Chinese zh-hant = Traditional Chinese ko = Korean required: false style: form explode: true schema: type: string enum: - en - es - fr - de - pt - ja - zh-hans - zh-hant - ko example: en - name: instructionsId in: query description: |- When specified, Skillable will attempt to launch the lab and present the selected instructions. If not specified, or the instruction Id could not be found, the default instructions, as defined on the Lab Profile, will be used instead. This is a string that cannot contain spaces. NOTE: To be able to see how to use this parameter, add the column "API Example" in the Manage Instruction Sets feature while editing the instructions. required: false style: form explode: true schema: type: string example: Base-01 responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/LaunchForEventResponse' examples: Example of a successful lab instance launch within an event: value: Result: 1 Url: 'https://labondemand.com/console/setup/1b4909d6-0dbe-43db-9ab9-74ee4f913c4e' LabInstanceId: 3896477 Expires: 1337977153 Status: 1 Error: null deprecated: false tags: - Event Management /LaunchForEventByExternalId: get: summary: Launches a specified lab within an event using an external lab ID description: The **LaunchForEventByExternalId** command launches a lab instance within an event by external ID. operationId: LaunchforEventByExternalId parameters: - name: externalLabId in: query description: The external ID of the lab to launch. This should be the ID you use in your system. required: true style: form explode: true schema: type: string example: '100' - name: eventId in: query description: The ID of the event the lab is part of. required: true style: form explode: true schema: type: integer format: int32 example: 24 - name: userid in: query description: The ID you use to identify the user in your external system. required: true style: form explode: true schema: type: string example: '555' - name: firstname in: query description: The user’s first name. required: true style: form explode: true schema: type: string example: Joe - name: lastname in: query description: The user’s last name. required: true style: form explode: true schema: type: string example: Smith - name: email in: query description: The user’s email address. required: true style: form explode: true schema: type: string example: joe.smith@email.com - name: classId in: query description: 'An optional parameter used to associate the lab with a class (see **GetOrCreateClass**). This is the unique identifier of the class as it is represented in your organization. ' required: false style: form explode: true schema: type: string example: '1223334444' - name: canBeMarkedComplete in: query description: 'An optional parameter used to specify if the lab can be marked as complete by the student. 1 = true, 2 = false. If not specified, defaults to 1 (true).' required: false style: form explode: true schema: type: integer format: int32 enum: - 1 - 2 default: 1 example: 1 - name: tag in: query description: An optional parameter that can be used for tagging the lab instance with your own custom data. required: false style: form explode: true schema: type: string example: eventLaunch - name: ipAddress in: query description: 'When specified, Skillable will attempt to launch the lab in the closest available delivery region. You should provide the IP address of the user that is taking the lab, not the IP address of your system.' required: false style: form explode: true schema: type: string example: 1.1.1.1 - name: regionId in: query description: 'When specified, Skillable will attempt to launch the lab in the specified delivery region if a suitable host in that region is available and all required storage is available in that region. Delivery regions can be found using the **DeliveryRegions** command or **Catalog** command. Using the ipAddress parameter will result in a more reliable geo-location of the lab for the end user.' required: false style: form explode: true schema: type: integer format: int32 example: 1 - name: lang in: query description: |- Allows you to override the language of the Instruction Set as well as the lab client UI language. This affects lab client UI elements like menus, tabs, and dialogs. Using this in connection with instructionsId will allow you to select launching labs with a specific Instruction Set in the specified language if they have been defined within the lab profile. NOTE: If this parameter is omitted, or if the specified language is not specified on one of the Instruction sets in a lab profile, then the default language as defined in the Lab Profile ➔ Manage Instructions Sets option. en = English es = Spanish fr = French de = German pt = Portuguese ja = Japanese zh-hans = Simplified Chinese zh-hant = Traditional Chinese ko = Korean required: false style: form explode: true schema: type: string enum: - en - es - fr - de - pt - ja - zh-hans - zh-hant - ko example: en - name: instructionsId in: query description: |- When specified, Skillable will attempt to launch the lab and present the selected instructions. If not specified, or the instruction Id could not be found, the default instructions, as defined on the Lab Profile, will be used instead. This is a string that cannot contain spaces. NOTE: To be able to see how to use this parameter, add the column "API Example" in the Manage Instruction Sets feature while editing the instructions. required: false style: form explode: true schema: type: string example: Base-01 responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/LaunchForEventResponse' examples: Example of a successful lab instance launch within an event by external ID: value: Result: 1 Url: 'https://labondemand.com/console/setup/1b4909d6-0dbe-43db-9ab9-74ee4f913c4e' LabInstanceId: 3896477 Expires: 1337977153 Status: 1 Error: null deprecated: false tags: - Event Management /GetEvaluationResponsesForEvent: get: summary: Returns evaluation data for a specific event description: The **GetEvaluationResponsesForEvent** command returns evaluation responses for a specific event. operationId: GetEvaluationResponsesForEvent parameters: - name: id in: query description: The unique identifier of the event. required: true style: form explode: true schema: type: integer format: int32 example: 12345 responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/GetEvaluationResponsesResponse' examples: Example of evaluation responses for an event: value: Responses: - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: 'Multiple Choice, Multiple Answers' Label: '' A1DText: Answer 2 A1DWeight: 0 A2DText: null A2DWeight: null TextAnswer: null - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: 'Matrix, One Answer Per Row' Label: '' A1DText: Row 1 A1DWeight: 0 A2DText: Column 2 A2DWeight: 0 TextAnswer: null - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: 'Matrix, One Answer Per Row' Label: '' A1DText: Row 2 A1DWeight: 0 A2DText: Column 2 A2DWeight: 0 TextAnswer: null - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: 'Matrix, One Answer Per Row' Label: '' A1DText: Row 3 A1DWeight: 0 A2DText: Column 2 A2DWeight: 0 TextAnswer: null - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: 'Matrix, Multiple Answers Per Row' Label: '' A1DText: Row 1 A1DWeight: 0 A2DText: Column 1 A2DWeight: 0 TextAnswer: null - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: 'Matrix, Multiple Answers Per Row' Label: '' A1DText: Row 3 A1DWeight: 0 A2DText: Column 3 A2DWeight: 0 TextAnswer: null - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: Single Textbox Label: '' A1DText: null A1DWeight: null A2DText: null A2DWeight: null TextAnswer: Just answer 2 - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: Multiple Textboxs Label: '' A1DText: Textbox 1 A1DWeight: 0 A2DText: null A2DWeight: null TextAnswer: Textboxes 2 and 3 are blank. - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: Multiple Textboxs Label: '' A1DText: Textbox 2 A1DWeight: 0 A2DText: null A2DWeight: null TextAnswer: This is answer 2 - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: Multiple Textboxs Label: '' A1DText: Textbox 1 A1DWeight: 0 A2DText: null A2DWeight: null TextAnswer: This is answer 1 - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: Single Textbox Label: '' A1DText: null A1DWeight: null A2DText: null A2DWeight: null TextAnswer: I answered 1 and 2 - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: 'Matrix, Multiple Answers Per Row' Label: '' A1DText: Row 3 A1DWeight: 0 A2DText: Column 3 A2DWeight: 0 TextAnswer: null - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 QuestionText: 'Matrix, Multiple Answers Per Row' Label: '' A1DText: Row 3 A1DWeight: 0 A2DText: Column 1 A2DWeight: 0 TextAnswer: null - Number: Sample0101 Name: Sample Lab 0101 Tag: null Start: 1333267200 End: 1333299600 Label: '' QuestionText: 'Matrix, Multiple Answers Per Row' A1DText: Row 2 A1DWeight: 0 A2DText: Column 3 A2DWeight: 0 TextAnswer: null Error: null Status: 1 deprecated: false tags: - Event Management /catalog: get: summary: 'Returns all lab series, lab profiles, and delivery regions available to your organization' description: 'The **Catalog** command will return all lab series, lab profiles, and delivery regions available to your organization. Lab profiles are generally grouped into series. Depending on your organization, you may have multiple physical delivery regions available to you.' operationId: Catalog parameters: - name: includeAll in: query description: 'This parameter can usually be ignored. When not included (or passed as any value except 1), labs that are not currently available for launch will not be included in catalog results. If you want to include all lab profiles, regardless of whether they are enabled or are developmentally complete, you can pass includeAll=1.' style: form explode: true schema: type: integer format: int32 example: 1 - name: LabSeriesID in: query description: 'By providing a LabSeriesID, the response will be filtered so that only lab profiles within the specified lab series will be returned.' style: form explode: true schema: type: integer format: int32 example: 123456 - name: OrganizationID in: query description: 'By providing an OrganizationID, the response will be filtered so that only lab profiles belonging to the specified organization will be returned. Typically omitted.' style: form explode: true schema: type: integer format: int32 example: 3 - name: tag in: query description: 'By providing a Tag, the response will be filtered so that only lab profiles within the specified lab series defined with the identified tag will be returned. Multiple Tag parameters can be defined.' schema: type: array items: type: string example: - mytag1 - mytag2 - name: LabSeriesCreatedAfter in: query description: The date/time (in Unix epoch time) that the Lab Series was created after. required: false style: form explode: true schema: type: integer format: int64 example: 1598465099 - name: LabSeriesCreatedBefore in: query description: The date/time (in Unix epoch time) that the Lab Series was created before. required: false style: form explode: true schema: type: integer format: int64 example: 1598465099 - name: LabSeriesModifiedAfter in: query description: The date/time (in Unix epoch time) that the Lab Series was modified after. required: false style: form explode: true schema: type: integer format: int64 example: 1598465099 - name: LabSeriesModifiedBefore in: query description: The date/time (in Unix epoch time) that the Lab Series was modified before. required: false style: form explode: true schema: type: integer format: int64 example: 1598465099 - name: LabProfileCreatedAfter in: query description: The date/time (in Unix epoch time) that the Lab Profile was created after. required: false style: form explode: true schema: type: integer format: int64 example: 1598465099 - name: LabProfileCreatedBefore in: query description: The date/time (in Unix epoch time) that the Lab Profile was created before. required: false style: form explode: true schema: type: integer format: int64 example: 1598465099 - name: LabProfileModifiedAfter in: query description: The date/time (in Unix epoch time) that the Lab Profile was modified after. required: false style: form explode: true schema: type: integer format: int64 example: 1598465099 - name: LabProfileModifiedBefore in: query description: The date/time (in Unix epoch time) that the Lab Profile was modified before. required: false style: form explode: true schema: type: integer format: int64 example: 1598465099 responses: '200': description: OK Response headers: {} content: application/json: schema: $ref: '#/components/schemas/CatalogResponse' examples: Example of successfully retrieving a catalog: value: LabSeries: - Id: 1 Name: Demo Series 1 Description: A demo lab series. NumTrainingDays: 5 AllowAssignments: true AllowAssignmentsUntil: /Date(1534438041470)/ Created: 1689505754000 LastModified: 1692886226000 - Id: 2 Name: Demo Series 2 Description: Another demo lab series. NumTrainingDays: 5 AllowAssignments: false AllowAssignmentsUntil: null Created: 1689505754000 LastModified: 1692886226000 LabProfiles: - Id: 1 Name: Demo Lab 1 Number: ' Module 1' Description: A demo lab. SeriesId: 1 OrganizationId: 5 Objective: This is the HTML-formatted objective of the lab Scenario: ' This is the HTML-formatted scenario of the lab' DurationMinutes: 360 ExpectedDurationMinutes: 360 ResourceUnits: 11.25 PlatformId: 2 SharedClassEnvironmentRoleId: 0 SharedClassEnvironmentLabProfileId: 5 UsesRdp: false Ram: 8192 Enabled: true ReasonDisabled: null HasIntegratedContent: true DevelopmentStatusId: 10 RequiresBrowserPlugin: false RequiresNestedVirtualization: false NumPublicIpAddresses: 0 IsExam: false PremiumPrice: 10 BasicPrice: 8 PricePerHour: 2.67 ExpectedCloudCost: 0 ParticipantLabPrice: 8 ExamPages: null Tags: - Tag1 - Tag2 CloudPlatformId: null ContentVersion: 2 Created: /Date(1534438041470)/ LastModified: /Date(1623367490010)/ SCORMLastDownloaded: 1723899599000 InstructionSets: - UId: 2376859 Id: Base-02 Language: es Description: Advanced Instructions - Spanish LabTitle: laboratorio avanzado DurationMinutes: 60 OrganizationId: 158 - UId: 2376860 Id: Base-02 Language: de Description: Advanced Instructions - German LabTitle: Fortgeschrittenes Labor DurationMinutes: 60 OrganizationId: 158 - Id: 2 Name: Demo Lab 2 Number: ' Module 2' Description: Another demo lab. SeriesId: 1 OrganizationId: 7 Objective: This is the HTML-formatted objective of the lab Scenario: This is the HTML-formatted scenario of the lab DurationMinutes: 360 ExpectedDurationMinutes: 360 ResourceUnits: 11.25 PlatformId: 2 SharedClassEnvironmentRoleId: 0 SharedClassEnvironmentLabProfileId: 9 UsesRdp: false Ram: 4096 Enabled: true ReasonDisabled: null HasIntegratedContent: true DevelopmentStatusId: 10 RequiresBrowserPlugin: false NumPublicIpAddresses: 0 IsExam: false PremiumPrice: 4 BasicPrice: 4 PricePerHour: 1.33 ExpectedCloudCost: 0 ParticipantLabPrice: 8 ExamPages: null Tags: - Tag1 - Tag2 CloudPlatformId: 10 ContentVersion: 2 Created: /Date(1534438041470)/ LastModified: /Date(1623367490010) SCORMLastDownloaded: 1755781199000 InstructionSets: - Id: Base-01 Language: en Description: Base Instructions LabTitle: General Lab DurationMinutes: 60 OrganizationId: 158 - Id: Base-01 Language: fr Description: Base Instructions - French LabTitle: Laboratoire général DurationMinutes: 60 OrganizationId: 158 DeliveryRegions: - Id: 1 Name: North America Description: North American datacenters. - Id: 2 Name: Australia Description: null Status: 1 Error: null deprecated: false tags: - Organization /deliveryregions: get: summary: Returns all delivery regions available to your organization description: |- The **DeliveryRegions** command will return all delivery regions available to your organization. **NOTE**: there are no query parameters for this command. operationId: DeliveryRegions parameters: [] responses: '200': description: OK Response. headers: {} content: application/json: schema: $ref: '#/components/schemas/DeliveryRegionsResponse' examples: Example of a successful response listing all delivery regions available to your organization: value: DeliveryRegions: - Id: 1 Name: North America Description: North American datacenters. - Id: 2 Name: Australia Description: null Status: 1 Error: null deprecated: false tags: - Organization components: securitySchemes: api_key: name: api_key type: apiKey in: header description: 'All methods require an API key, which must be obtained from Skillable. This key is used by Skillable to validate your account. The key can be passed as an HTTP request header with the header name "api_key".' schemas: CancelResponse: type: object properties: Result: type: integer description: |- Indicates the result of the lab instance cancellation. 0 = Error 1 = Success Status: type: integer description: |- Indicates the status of the API request. 0 = Error 1 = Success Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true description: '' x-examples: {} CatalogResponse: type: object x-examples: {} properties: LabSeries: type: array uniqueItems: true minItems: 1 description: Array of Lab Series. items: type: object properties: Id: type: integer description: The unique identifier of the lab series. Name: type: string minLength: 1 description: The name of the lab series. Description: type: string minLength: 1 description: A brief description of the lab series. NumTrainingDays: type: integer description: The number of training days expected to complete the series. AllowAssignments: type: boolean description: Indicates that the Lab Series can be assigned. AllowAssignmentsUntil: type: string description: The date (in Unix epoch time) after which assignments are no longer valid. A null value indicates that assignments do not expire. nullable: true Created: type: integer format: int64 description: The date (in Unix epoch time) that the Lab Series was created. nullable: false LastModified: type: integer format: int64 description: The date (in Unix epoch time) that the Lab Series was modified. nullable: true LabProfiles: type: array uniqueItems: true minItems: 1 description: Array of Lab Profile. items: type: object properties: Id: type: integer description: The unique identifier of the lab profile. Name: type: string minLength: 1 description: The name of the lab profile. Number: type: string minLength: 1 description: 'The lab number (usually to identify a lab within a series, e.g. Module 1, Module 2, etc.).' Description: type: string minLength: 1 description: A brief description of the lab profile. nullable: true SeriesId: type: integer description: The unique identifier of the series the lab profile belongs to. format: int32 OrganizationId: type: integer description: The unique identifier of the Organization the lab profile belongs to. format: int32 nullable: true Objective: type: string minLength: 1 description: Text describing the objective of the lab. nullable: true Scenario: type: string minLength: 1 description: Text describing the scenario of the lab. nullable: true DurationMinutes: type: integer description: The maximum number of minutes a lab instance is allowed to run before it expires. format: int32 ExpectedDurationMinutes: type: integer description: The expected number of minutes a user will take to complete the lab. format: int32 ResourceUnits: type: number description: 'This response property is obsolete, and will show the value of RAM/32.' deprecated: true PlatformId: type: integer description: |- The virtualization platform the lab is run on. 1 = None 2 = Hyper-V 3 = ESX 10 = Azure 11 = AWS 20 = Docker SharedClassEnvironmentRoleId: type: integer description: |- Indicates the role the lab plays in a shared environment 0 = None. This lab has no shared environment involvement at all. Most labs work this way.) 10 = Shared Environment. This lab provides the shared infrastructure that participant labs will connect into. Typically launched and maintained by an administrator or instructor. 20 = Participant. This lab will connect into shared environments and act as a participant. Typically launched by students. format: int32 nullable: true SharedClassEnvironmentLabProfileId: type: integer description: The id of the lab profile that will be used in the shared class environment. format: int32 nullable: true UsesRdp: type: boolean description: Indicates whether this lab profile uses Remote Desktop Protocol (RDP) or not. Ram: type: integer format: int32 description: The amount of RAM in MB used by the lab. Enabled: type: boolean description: Whether the lab is currently enabled for launch. ReasonDisabled: type: string description: The reason the lab is disabled. Only supplied when the lab is not enabled. nullable: true HasIntegratedContent: type: boolean description: Indicates whether the lab has integrated digital lab (IDL) content. DevelopmentStatusId: type: integer format: int32 description: |- Indicates the development status of the lab. In general, a lab not marked as Complete should not be launched (though it can be). 1 = In Development 5 = AwaitingVerification 7 = InVerification 8 = VerificationFailed 10 = Complete RequiresBrowserPlugin: type: boolean description: Indicates if this lab profile requires the use of a browser plugin. RequiresNestedVirtualization: type: boolean description: Indicates if this lab profile requires the use of nested virtualization. NumPublicIpAddresses: type: integer description: Indicates the number of public ip addresses used in this lab profile. format: int32 nullable: false IsExam: type: boolean description: Indicates whether the lab is scored. PremiumPrice: type: number description: The consumption cost of the lab when premium experience features are included. BasicPrice: type: number description: The consumption cost of the lab when only basic experience features are included. PricePerHour: type: number description: The hourly consumption cost of the lab when only basic experience features are included. format: float ExpectedCloudCost: type: number description: The expected cloud cost of the lab. format: float nullable: true ParticipantLabPrice: type: number description: The expected participant cost of the shared lab. format: float nullable: true ExamPages: type: array description: This response property is obsolete and is not Populated. deprecated: true nullable: true items: type: string Tags: type: array description: A list of tags associated with the lab profile. items: type: string CloudPlatformId: type: integer description: |- The cloud platform the lab is run on. null = None 10 = Azure 11 = AWS nullable: true ContentVersion: type: integer format: int32 description: Indicates the content version (only applicable if HasIntegratedContent = true). Created: type: string description: The date when the lab profile was created (in Unix epoch time). LastModified: type: string description: The date when the lab profile was last modified (in Unix epoch time). SCORMLastDownloaded: type: integer format: int64 description: The date when the SCORM package was last downloaded from the lab profile (in Unix epoch time). InstructionSets: type: array description: Array of instruction sets for the lab profile. items: type: object properties: UId: type: integer description: The internal system id of the instruction set/language combination. Id: type: string description: The display id of the instruction set. Language: type: string description: |- The lanuage code of the instruction set. en = English es = Spanish fr = French de = German pt = Portuguese ja = Japanese zh-hans = Simplified Chinese zh-hant = Traditional Chinese ko = Korean Description: type: string description: The description of the instruction set. LabTitle: type: string description: The title of the lab to be displayed in the lab instructions. DurationMinutes: type: integer format: int32 description: The duration of the lab when using the specified instruction set. OrganizationId: type: integer format: int32 description: The id of the organization to which the instruction set belongs. Skills: type: array description: A list of the skills assigned to the lab profile and their basic details. items: type: object x-stoplight: id: fm124ryyegxxe properties: Id: type: integer description: The unique identifier of the skill. x-stoplight: id: f84t9srl00ywk ExternalId: type: string description: The optional external unique identifier of the skill. x-stoplight: id: q9tm7qhkjungj nullable: true Name: type: string description: The name of the skill. x-stoplight: id: 8nwiatb3xgk7b FrameworkId: type: integer description: The unique identifier of the framework of the skill. x-stoplight: id: 8ddop9v39rw9n FrameworkName: type: string description: The name of the framework of the skill. x-stoplight: id: ssltuu0onknyk DeliveryRegions: type: array uniqueItems: true minItems: 1 description: Array of DeliveryRegion. items: type: object properties: Id: type: integer format: int32 description: 'The unique identifier of the delivery region. When specified, Skillable will attempt to launch the lab in the specified delivery region if a suitable host in that region is available and all required storage is available in that region. Delivery regions can be found using the **DeliveryRegions** command or **Catalog** command. Using the ipAddress parameter will result in a more reliable geo-location of the lab for the end user.' Name: type: string minLength: 1 description: The name of the delivery region. Description: type: string minLength: 1 description: A brief description of the delivery region. nullable: true Status: type: number description: |- Indicates the status of the API request. 0 = Error 1 = Success Error: description: 'In the event of an error, this will contain a detailed error message.' type: string nullable: true ClassResponse: description: '' type: object x-examples: {} properties: Id: type: string minLength: 1 description: 'The unique identifier of the class, as represented in your organization.' Name: type: string minLength: 1 description: The name of the class. Start: type: integer format: int64 description: When the class starts (in Unix epoch time). StartTime: type: string description: When the class starts (in Unix epoch time). End: type: integer format: int64 description: When the class ends (in Unix epoch time). EndTime: type: string minLength: 1 description: When the class ends (in Unix epoch time). Expires: type: integer format: int64 description: When labs can no longer be associated with the class (in Unix epoch time). ExpiresTime: type: string minLength: 1 description: When labs can no longer be associated with the class (in Unix epoch time). Instructor: type: object description: The class instructor object. properties: Id: type: string minLength: 1 description: 'The unique identifier of the instructor, as represented in your external system.' FirstName: type: string minLength: 1 description: The instructor's first name. LastName: type: string minLength: 1 description: The instructor's last name. Url: type: string description: |- This response property is deprecated. Unless explicitly allowed by Skillable, this field will always be null. To obtain a class URL, use the **ClassAccessUrl** API command. deprecated: true nullable: true MaxActiveLabInstances: type: integer description: The maximum amount of active lab instances from the class that can be running. AvailableLabs: type: array description: Array of Available Labs for the class. items: type: integer Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true Status: type: integer format: int32 description: |- Indicates the status of the API request. 0 = Error 1 = Success ClassAccessUrlResponse: description: '' type: object x-examples: {} properties: Url: type: string minLength: 1 description: The single use URL to access the class management page. Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true Status: type: integer description: |- Indicates the status of the API request. 0 = Error 1 = Success CloseUserAccountResponse: description: '' type: object x-examples: {} properties: Status: type: integer format: int32 description: |- Indicates the status of the API request. 0 = Error 1 = Success Error: type: string description: 'In the event of an error, this will contain a detailed error message. The status property will also be set to Error (0).' nullable: true RowsAffected: type: integer format: int32 description: The number of database rows affected while removing all user data for the account. DeleteClassResponse: type: object x-examples: {} properties: Success: type: boolean description: |- Returns with true if the class was successfully deleted. This element **will only** be returned for successful class deletions. true = Success Status: type: integer format: int32 description: |- Indicates the status of the API request. 0 = Error 1 = Success Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true DeliveryRegionsResponse: type: object x-examples: {} properties: DeliveryRegions: type: array description: Array of DeliveryRegion objects. items: type: object properties: Id: type: integer description: The unique identifier of the delivery region. Name: type: string description: The name of the delivery region. Description: type: string description: A brief description of the delivery region. nullable: true Status: type: integer description: |- Indicates the status of the API request. 0 = Error 1 = Success Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true DetailsResponse: type: object x-examples: {} properties: Id: type: integer description: The ID of the lab instance. format: int64 LabProfileId: type: integer description: The ID of the lab profile. format: int32 LabProfileName: type: string description: The name of the lab profile. SeriesId: type: integer description: The ID of the lab series. format: int32 nullable: true SeriesName: type: string description: The name of the lab series. nullable: true UserId: type: string description: The ID you use to identify the user in your external system. UserFirstName: type: string description: The user's first name. UserLastName: type: string description: The user's last name. UserEmail: description: The user's email address. type: string x-stoplight: id: qov42uvxpcdqz nullable: true ClassId: description: The ID you use to identify the associated class in your external system. type: string nullable: true ClassName: description: The name of the class the lab instance is associated with. type: string nullable: true PreinstanceStartTime: type: integer description: 'When the lab was pre-instanced, if pre-instancing occurred (in Unix epoch time).' format: int64 x-stoplight: id: jt1a5kl9l4hdv Start: type: integer description: When the lab was started (in Unix epoch time). format: int64 StartTime: type: string description: When the lab was started (in Unix epoch time). Expires: type: integer description: When the lab expires (in Unix epoch time). format: int64 ExpiresTime: type: string description: When the lab expires (in Unix epoch time). End: type: integer description: When the lab ended (in Unix epoch time). format: int64 nullable: true EndTime: type: string description: When the lab ended (in Unix epoch time). nullable: true LastActivity: type: integer description: When student activity was last detected (in Unix epoch time). format: int64 nullable: true LastActivityTime: type: string description: When student activity was last detected (in Unix epoch time). nullable: true LastSave: type: integer description: When the lab was last saved (in Unix epoch time). format: int64 nullable: true LastSaveTime: type: string description: When the lab was last saved (in Unix epoch time). nullable: true SaveExpires: type: integer description: 'If the lab instance is saved, when the saved data will expire and be deleted (in Unix epoch time).' format: int64 nullable: true SaveExpiresTime: type: string description: 'If the lab instance is saved, when the saved data will expire and be deleted (in Unix epoch time).' nullable: true State: type: string description: |- The state of the lab instance. Possible values: Off Provisioning Storage Building Building (Displayable) Starting Running Saving Saved Resuming Creating Snapshot Applying Snapshot Updating Lab Profile Tearing Down Cloning Creating As Clone Moving (Running) Moving (Saved) Creating New Lab Profile Scoring Scheduled CompletionStatus: type: string description: |- The student's completion status. Possible values: Scheduled Cancelled Not Started Incomplete Complete Storage Provisioning Failed Lab Creation Failed Resume Failed Save Failed Submitted For Grading Grading In Progress PoolMemberName: description: 'If the lab contains a virtual machine pool, the name of the pool member that was used.' type: string nullable: true LabHostId: type: integer description: The ID of the lab host machine. format: int32 LabHostName: type: string description: The name of the lab host machine. DatacenterId: type: integer description: The ID of the datacenter where the lab is located. format: int32 DatacenterName: type: string description: The name of the datacenter where the lab is located. DeliveryRegionId: type: integer description: 'When specified, Skillable will attempt to launch the lab in the specified delivery region if a suitable host in that region is available and all required storage is available in that region. Delivery regions can be found using the **DeliveryRegions** command or **Catalog** command. Using the ipAddress parameter will result in a more reliable geo-location of the lab for the end user.' format: int32 DeliveryRegionName: type: string description: The name of the delivery region where the lab is located. PlatformId: type: integer description: |- The platform the lab has hosted on. Possible values: 2 = Hyper-V 3 = ESX 20 = Docker -1 = None format: int32 LastSaveTriggerType: description: |- If the lab is currently saved, what triggered the save operation. Possible values: Unknown By Student By Administrator Automatic From API Consumer type: string nullable: true TimeInSession: type: integer description: The total number of seconds the user spent in the lab. format: int32 TotalRunTime: type: integer description: 'The total number of seconds the lab was running, whether or not the student was present.' format: int32 TimeRemaining: type: integer description: The total number of seconds remaining before the lab expires. format: int32 InstructorName: description: The name of the instructor for the associated class. type: string nullable: true StartupDuration: type: integer description: The number of seconds it took the lab to start. format: int32 nullable: true Errors: type: array description: An array of all errors associated with the lab instance. items: type: object Snapshots: type: array description: An array of snapshots created by the user within the lab. This contains an array of LabInstanceSnapshot objects. items: type: object properties: Name: type: string description: The name that the student gave to the snapshot. Time: type: integer description: When the student created the snapshot (in Unix epoch time). format: int64 Sessions: type: array description: An array of session times the student spent in the lab. This contains an array of LabInstanceSnapshot objects. items: type: object properties: Start: type: integer format: int64 description: When the session started (in Unix epoch time). StartTime: type: string End: type: integer description: When the session ended (in Unix epoch time). nullable: true EndTime: type: string Notes: type: array description: Array of notes applicable to the lab instance. items: type: object properties: Time: type: integer TimeValue: type: string Title: type: string Text: type: string HasContent: type: boolean description: 'Indicates whether the lab has content, or simply houses virtual machines.' Task: description: 'If the lab has content (HasContent=true), indicates the name of the task the student is working on.' type: string nullable: true Exercise: description: 'If the lab has content (HasContent=true), indicates the name of the exercise the student is working on.' type: string nullable: true NumTasks: type: integer description: 'If the lab has content (HasContent=true), indicates the total number of tasks in the lab.' format: int32 NumCompletedTasks: type: integer description: 'If the lab has content (HasContent=true), indicates the number of tasks the student has completed.' format: int32 TaskCompletePercent: type: integer description: 'If the lab has content (HasContent=true), indicates the percentage of tasks that the student has completed.' format: int32 MonitorUrl: description: |- This response property is deprecated. Unless explicitly allowed by Skillable, this field will always be null. To obtain an access URL, use the **LabMonitorUrl** command. type: string nullable: true DetailsUrl: type: string description: The URL at which the lab instance details can be reviewed (required authentication to view). RemoteController: type: string description: The name of the remote controller used by the user. Tag: type: string description: Lab instance tag data. nullable: true BrowserUserAgent: type: string description: The browser user agent used by the user. nullable: true LastLatency: type: integer description: The last known latency value as measured between the client and the lab's datacenter. format: int32 nullable: true ExamPassed: type: boolean description: Indicates whether the user passed the lab. Will only be set if the lab has activities which have been scored. nullable: true ExamScore: type: number description: Indicates the lab score. Will only be set if the lab has activities which have been scored. format: float nullable: true ExamMaxPossibleScore: type: integer description: Indicates the maximum possible score of the lab. Will only be set if the lab has activities which have been scored. format: int32 nullable: true ExamPassingScore: type: integer description: Indicates the minimum score required to pass the lab. Will only be set if the lab has activities which have been scored. format: int32 nullable: true ExamScoredById: type: integer description: The ID of the user that manually scored the lab. Will only be set if the lab has activities which have been scored manually. Automatically scored labs will not include a value for this property. format: int64 nullable: true ExamScoredByName: description: The name of the user that manually scored the lab. Will only be set if the lab has activities which have been scored manually. Automatically scored labs will not include a value for this property. type: string nullable: true ExamDetails: description: Legacy Field from previous scoring engine. type: string nullable: true ExamScoredDate: type: integer description: The date the lab was scored (in Unix epoch time). format: int64 nullable: true ExamScoredTime: type: string description: When the lab was scored (in Unix epoch time). Will only be set if the lab has activities which have been scored. nullable: true IsExam: type: boolean description: Indicates whether the lab is scored. IpAddress: type: string description: The user's IP address. This is only included if the IP address was provided when the lab was launched. nullable: true Country: type: string description: The user's country as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. nullable: true Region: type: string description: The user's state/region as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. nullable: true City: type: string description: The user's city as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. nullable: true Latitude: type: number description: The user's latitude as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. format: float nullable: true Longitude: type: number description: The user's longitude as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. format: float nullable: true PublicIpAddresses: type: array description: An array of public IP address information objects. This contains an array of IpAddressInfo objects. items: type: object properties: IpAddress: type: string description: An IP address. MacAddress: type: string description: The MAC address of the NIC that the IP address was assigned to. MachineInstanceName: type: string description: The name of the virtual machine instance that the IP address was assigned to. CloudCredentials: type: array description: An array of credentials assigned to the lab instance. This contains an array of CloudCredential objects. items: type: object properties: PropertiesJson: type: string description: 'Json serialized properties for the credentials, as defined in the cloud credential pool.' Expires: type: integer description: When the credentials expire (in Unix epoch time). format: int64 DisplayName: type: string description: Friendly credential name displayed in the lab user interface. Message: type: string nullable: true CloudPortalCredentials: type: array description: An array of credentials assigned to the lab instance. This contains an array of CloudPortalCredential objects. items: type: object properties: CloudPlatform: type: integer format: int32 description: |- The ID of the cloud platform to which the credentials belong. 10 = Azure 11 = AWS PropertiesJson: type: string description: Json serialized properties for the credentials. VirtualMachineCredentials: type: array description: An array of credentials used to access the virtual machines. This contains an array of VirtualMachineCredential objects. items: type: object properties: Id: type: integer description: ID of the virtual machine. format: int32 Name: type: string description: Name of the virtual machine. Username: type: string description: Username used to accces the virtual machine. Password: type: string description: Password used to access the virtual machine. CloudPlatformId: type: integer description: |- The ID of the cloud platform. Possible values: 10 = Azure 11 = AWS format: int32 nullable: true ClientUrl: description: |- This response property is deprecated. Unless explicitly allowed by Skillable, this field will always be null. To obtain an access URL, use the **LabAccessUrl** command. type: string nullable: true ActivityResults: type: array description: An array of results for activities displayed in the lab instance. This contains an array of ActivityResult objects. items: type: object properties: ActivityId: type: integer description: ID of the Activity. format: int32 ActivityName: type: string description: Name of the Activity. Scored: type: boolean description: Whether the activity is scored. Score: type: number description: The Score received by the student. format: float Passed: type: boolean description: Whether the student received a passing score on the activity. ActivityType: type: integer description: |- 0 = Multiple choice, single answer 10 = Multiple choice, multiple answer 20 = Short answer, exact match 30 = Short answer, regex match 40 = Automated Activity format: int32 TextResult: type: string description: The answer given by a student for Short Answer type questions. nullable: true UiResponse: type: string description: The response given to the student if specified in the question Answer Feedback. nullable: true AnswerResults: type: array description: A collection of the answers available in single-answer activities. items: type: object properties: AnswerId: type: integer format: int32 AnswerText: type: string Correct: type: boolean ScriptResults: type: array description: 'A collection of the results of the an automated activity. Includes Script ID, Score, Passing Status, UiResponse, ScriptResponse, PlatformError, and ScriptError.' items: type: object DisplayScriptsAsTaskList: type: boolean description: Whether automated activities are scored as a TaskList or individually. AnswerTexts: type: array description: A collection of the answers available in multi- answer activities. items: type: object properties: Correct: type: boolean AnswerId: type: integer format: int32 Text: type: string Chosen: type: boolean ScriptTexts: type: array description: The Activity ID and Text displayed in the Task List if Task List is enabled on the activity. items: type: object ShowResultsInReports: type: boolean description: Whether results of the script are shown on the lab instance. Skills: type: array description: The list of skills assigned to the lab activity and their basic details. items: type: object x-stoplight: id: tw3o9xfbb9uqw properties: Id: type: integer x-stoplight: id: catx7lwp675c2 description: The unique identifier of the skill. ExternalId: type: string x-stoplight: id: 1dw7cr9zq6n4j description: The optional external unique idf nullable: true Name: type: string x-stoplight: id: wwdz0ww5ed8dt description: The name of the skill. FrameworkId: type: integer x-stoplight: id: zxaqmzr9hb5f5 description: The unique identifier of the framework for this skill. FrameworkName: type: string x-stoplight: id: 5rrgxdmovdfzl description: The name of the framework for this skill. ActivityGroupResults: type: array description: An array of results for activities displayed in the lab instance Activity Group. This contains an array of ActivityResult objects. items: type: object properties: Id: type: integer format: int32 description: ID of the Activity Group. Name: type: string description: Name of the Activity Group. ScoreValueTotal: type: number format: float description: The maximum score for the Activity Group. AggregateScore: type: number format: float description: The resultant score the of the Activity Group. ActivityResults: type: array description: An array of results for activities displayed in the lab instance Activity Group. This contains an array of ActivityResult objects. items: type: object properties: ActivityId: type: integer format: int32 description: ID of the Activity. ActivityName: type: string description: Name of the Activity. Scored: type: boolean description: Whether the activity is scored. Score: type: integer description: The Score received by the student. Passed: type: boolean description: Whether the student received a passing score on the activity. ActivityType: type: integer description: |- 0 = Multiple choice, single answer 10 = Multiple choice, multiple answer 20 = Short answer, exact match 30 = Short answer, regex match 40 = Automated Activity TextResult: type: string description: The answer given by a student for Short Answer type questions. UiResponse: type: string description: The response given to the student if specified in the question Answer Feedback. AnswerResults: type: array description: A collection of the answers available in single-answer activities. items: type: object ScriptResults: type: array description: 'A collection of the results of the an automated activity. Includes Script ID, Score, Passing Status, UiResponse, ScriptResponse, PlatformError, and ScriptError.' items: type: object DisplayScriptsAsTaskList: type: boolean description: Whether automated activities are scored as a TaskList or individually. AnswerTexts: type: array description: A collection of the answers available in multi- answer activities. items: type: object properties: '': type: string ScriptTexts: type: array description: The Activity ID and Text displayed in the Task List if Task List is enabled on the activity. items: type: object ShowResultsInReports: type: boolean description: Whether results of the script are shown on the lab instance. Skills: type: array description: The list of skills assigned to the lab activity and their basic details. items: type: object x-stoplight: id: smt3iskg6udmq properties: Id: type: integer x-stoplight: id: f23m4pglbwax5 format: int32 description: The unique identifier of the skill. ExternalId: type: string x-stoplight: id: rp18u3c4rmuu7 description: The optional external unique identifier of the skill. nullable: true Name: type: string x-stoplight: id: l4iwf8scj45cf description: The name of the skill. FrameworkId: type: integer x-stoplight: id: kja02q4qxnmic description: The unique identifier of the framework for this skill. FrameworkName: type: string x-stoplight: id: 1gl6wd3eszn87 description: The name of the framework for this skill. EstimatedReadySeconds: type: integer description: An estimated number of seconds before the lab is ready. format: int32 nullable: true InstructionsId: type: string description: The ID of the Instructions used nullable: true Lang: type: string description: |- The lanuage code of the instruction set. en = English es = Spanish fr = French de = German pt = Portuguese ja = Japanese zh-hans = Simplified Chinese zh-hant = Traditional Chinese ko = Korean nullable: true Skills: type: array description: The list of skills assigned to the lab profile and their basic details. items: type: object x-stoplight: id: jhkn2lvirpmlc properties: Id: type: integer description: The unique identifier of the skill. ExternalId: type: string description: The optional external identifier of the skill. x-stoplight: id: 92n99z40okupz nullable: true Name: type: string description: The name of the skill. x-stoplight: id: h5so2p95worpy FrameworkId: type: integer description: The unique identifier of the framework for this skill. x-stoplight: id: 6o4t6ti2lkgq9 FrameworkName: type: string description: The name of the framework for this skill. x-stoplight: id: jmbwbikfqhb32 Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true Status: type: integer description: |- Indicates the status of the API request. 0 = Error 1 = Success format: int32 GetEvaluationResponsesResponse: type: object x-examples: {} properties: Responses: type: array items: type: object properties: Number: type: string description: The lab number. Name: type: string description: The lab name. Tag: type: string description: The tag associated with the lab instance. nullable: true Start: type: integer description: The start time of the lab instance (in Unix epoch time). format: int64 End: type: integer description: The end time of the lab instance (in Unix epoch time). format: int64 QuestionText: type: string description: The text of the evaluation question. Label: type: string description: The text of the evaluation question. nullable: true A1DText: type: string description: The text of the 1D answer option. nullable: true A1DWeight: type: integer description: The associated weight of the 1D answer option. format: int32 nullable: true A2DText: type: string description: The text of the 2D answer option. nullable: true A2DWeight: type: integer description: The associated weight of the 2D answer option. format: int32 nullable: true TextAnswer: type: string description: The manually entered answer to the evaluation question. nullable: true Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true Status: type: integer format: int32 description: |- Indicates the status of the API request. 0 = Error 1 = Success GetLabInstructionsResponse: type: object x-examples: {} properties: Instructions: type: string description: The IDLx instructions of a lab. nullable: true Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true Status: type: integer format: int32 description: |- 0 = Error 1 = Success GetOrCreateClassResponse: type: object x-examples: {} description: '' properties: Id: type: string description: 'The unique identifier of the class, as represented in your organization.' Name: type: string description: The name of the class. Start: type: integer description: When the class starts (in Unix epoch time). format: int64 StartTime: type: string description: When the class starts (in Unix epoch time). End: type: integer description: When the class ends (in Unix epoch time). format: int64 EndTime: type: string description: When the class ends (in Unix epoch time). Expires: type: integer description: When labs can no longer be associated with the class (in Unix epoch time). format: int64 ExpiresTime: type: string description: When labs can no longer be associated with the class (in Unix epoch time). Instructor: type: object nullable: true properties: Id: type: string description: The ID of the class instructor in your external system. FirstName: type: string description: The first name of the class instructor. LastName: type: string description: The last name of the class instructor. Url: type: string description: |- This response property is deprecated. Unless explicitly allowed by Skillable, this field will always be null. To obtain a class URL, use the **ClassAccessUrl** API command. nullable: true MaxActiveLabInstances: type: integer description: The maximum number of active lab instances than can exist concurrently within this class context. format: int32 nullable: true AvailableLabs: type: array description: The IDs of labs available for launch within the class when using the class attendance UI directly in Skillable (generally not used for class deliveries managed outside of Skillable). items: type: integer Status: type: integer description: |- Indicates the status of the API request. 0 = Error 1 = Success format: int32 Error: description: 'In the event of an error, this will contain a detailed error message.' type: string nullable: true LabAccessUrlResponse: type: object x-examples: {} properties: Url: type: string description: The single use URL to access the lab instance. Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true Status: type: integer format: int32 description: |- Indicates the status of the API request. 0 = Error 1 = Success LabMonitorUrlResponse: type: object x-examples: {} properties: Url: type: string description: The single use URL to monitor a lab instance Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true Status: type: integer format: int32 description: |- Indicates the status of the API request. 0 = Error 1 = Success LabProfileResponse: type: object x-examples: {} properties: Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true Status: type: integer description: |- Indicates the status of the API request. 0 = Error 1 = Success format: int32 Id: type: integer description: The unique identifier of the lab profile. format: int32 Name: type: string description: The name of the lab profile. Number: type: string description: 'The lab number (usually to identify a lab within a series, e.g. Module 1, Module 2, etc.).' nullable: true PlatformId: type: integer description: |- The virtualization platform the lab is run on. 1 = None 2 = Hyper-V 3 = ESX 10 = Azure 11 = AWS 20 = Docker format: int32 Platform: type: integer description: 'This response property is obsolete, and will show the same value as PlatformId.' format: int32 deprecated: true CloudPlatformId: type: integer description: |- The cloud platform the lab is run on. null = None 10 = Azure 11 = AWS format: int32 nullable: true SeriesId: type: integer description: The unique identifier of the series the lab profile belongs to. format: int32 nullable: true OrganizationId: type: integer description: The unique identifier of the Organization the lab profile belongs to. format: int32 nullable: true Enabled: type: boolean description: Whether the lab is currently enabled for launch. ReasonDisabled: type: string description: The reason the lab is disabled. Only supplied when the lab is not enabled. nullable: true DevelopmentStatusId: type: integer description: |- Indicates the development status of the lab. In general, a lab not marked as Complete should not be launched (though it can be). 1 = In Development 5 = AwaitingVerification 7 = InVerification 8 = VerificationFailed 10 = Complete format: int32 DevelopmentStatus: type: integer description: 'This response property is obsolete, and will show the same values as DevelopmentStatusId.' format: int32 deprecated: true RequiresBrowserPlugin: type: boolean description: Indicates if this lab profile requires the use of a browser plugin. RequiresNestedVirtualization: type: boolean description: Indicates if this lab profile requires the use of nested virtualization. NumPublicIpAddresses: type: integer description: Indicates the number of public ip addresses used in this lab profile. format: int32 nullable: false Description: type: string description: A brief description of the lab profile. nullable: true Objective: type: string description: Text describing the objective of the lab. nullable: true Scenario: type: string description: Text describing the scenario of the lab. nullable: true DurationMinutes: type: integer description: The maximum number of minutes a lab instance is allowed to run before it expires. format: int32 ExpectedDurationMinutes: type: integer description: 'This response property is obsolete, and will reflect the same value shown for DurationMinutes.' format: int32 deprecated: true ResourceUnits: type: integer description: 'This response property is obsolete, and will show the value of RAM/32.' format: int32 deprecated: true Ram: type: integer description: The amount of RAM in MB used by the lab. format: int32 HasIntegratedContent: type: boolean description: Indicates whether the lab has integrated digital lab (IDL) content. ContentVersion: type: integer description: Indicates the content version (only applicable if HasIntegratedContent = true). format: int32 IsExam: type: boolean description: Indicates whether the lab is scored. PremiumPrice: type: number description: The consumption cost of the lab when premium experience features are included. format: float BasicPrice: type: number description: The consumption cost of the lab when only basic experience features are included. format: float PricePerHour: type: number description: The hourly consumption cost of the lab when only basic experience features are included. format: float ExpectedCloudCost: type: number description: The expected cloud cost of the lab. format: float nullable: true ParticipantLabPrice: type: number description: The expected participant cost of the shared lab. format: float nullable: true SharedClassEnvironmentRoleId: type: integer description: |- Indicates the role the lab plays in a shared environment. 0 = None. This lab has no shared environment involvement at all. Most labs work this way.) 10 = Shared Environment. This lab provides the shared infrastructure that participant labs will connect into. Typically launched and maintained by an administrator or instructor. 20 = Participant. This lab will connect into shared environments and act as a participant. Typically launched by students. format: int32 nullable: true SharedClassEnvironmentRole: type: integer description: 'This response property is obsolete, and will show the same value as SharedClassEnvironmentRoleId.' format: int32 deprecated: true nullable: true SharedClassEnvironmentLabProfileId: type: integer description: The id of the lab profile that will be used in the shared class environment. format: int32 nullable: true UsesRdp: type: boolean description: Indicates whether this lab profile uses Remote Desktop Protocol (RDP) or not. ExamPages: type: array description: This response property is obsolete and is not Populated. deprecated: true items: type: string Tags: type: array description: A list of tags associated with the lab profile. items: type: string InstructionSets: type: array description: A list of the available instruction sets and their basic details for the lab profile. items: type: object properties: Id: type: string description: The unique identifier of the instruction set. nullable: false Language: type: string description: |- The character code for the language of the instruction set. en = English es = Spanish fr = French de = German pt = Portuguese ja = Japanese zh-hans = Simplified Chinese zh-hant = Traditional Chinese ko = Korean Description: type: string description: The description of the instruction set. LabTitle: type: string description: The title of the lab as used in this instruction set. DurationMinutes: type: integer description: 'The duration of the lab, in minutes, when using this instruction set.' OrganizationId: type: integer description: The unique identifier of the organization to which this instruction set belongs. Created: type: integer format: int64 description: The date when the lab profile was created (in Unix epoch time). LastModified: type: integer format: int64 description: The date when the lab profile was last modified (in Unix epoch time). SCORMLastDownloaded: type: integer format: int64 description: The date when the SCORM package was last downloaded for the lab profile (in Unix epoch time). Skills: type: array description: A list of the skills assigned to the lab profile and their basic details. items: type: object x-stoplight: id: 0xdoqzxrf3l4q properties: Id: type: integer description: The unique identifier of the skill. nullable: false ExternalId: type: string description: The optional external unique identifier of the skill. x-stoplight: id: 1p51mvcaxobhb nullable: true Name: type: string description: The name of the skill. x-stoplight: id: s9j7rh2zwuc1l FrameworkId: type: integer description: The unique identifier of the framework for this skill. x-stoplight: id: q8chtpypezthy FrameworkName: type: string description: The name of the framework for this skill. x-stoplight: id: hcbixaiixlte1 LatestResultsResponse: type: object x-examples: {} properties: Results: type: array description: Array of LabResult. items: type: object properties: LabInstanceId: type: integer description: The unique identifier of the lab instance. format: int64 LabProfileId: type: integer format: int32 description: The unique identifier of the lab profile the lab instance is based on. Start: type: integer format: int64 description: When the lab was started (in Unix epoch time). End: type: integer format: int64 description: When the lab ended (in Unix epoch time). nullable: true LastActivity: type: integer format: int64 description: The last time the student interacted with the lab (in Unix epoch time). nullable: true UserId: type: string description: 'The unique identifier of the user, as represented in your system.' nullable: true ClassId: description: 'The unique identifier of the class the lab is related to, as represented in your system.' type: string nullable: true CompletionStatus: type: integer description: |- 1 = Cancelled 2 = No Show 3 = Incomplete 4 = Complete 10 = Storage Provisioning Failed 20 = Lab Creation Failed 30 = Resume Failed 40 = Save Failed 50 = Submitted For Grading 60 = Grading In Progress format: int32 TotalRunTimeSeconds: type: integer description: 'The total number of seconds the lab was running, whether or not the student was present.' format: int32 TaskCompletePercent: type: integer format: int32 description: 'If the lab has integrated tasks, the percentage of tasks that the user has completed.' IsExam: type: boolean description: Indicates whether the lab is scored. nullable: true ExamPassed: type: boolean description: Indicates whether the user passed the lab. Will only be set if the lab has activities which have been scored. nullable: true ExamScore: type: integer format: int32 description: Indicates the lab score. Will only be set if the lab has activities which have been scored. nullable: true ExamMaxPossibleScore: type: integer format: int32 description: Indicates the maximum possible score of the lab. Will only be set if the lab has activities which have been scored. nullable: true ExamPassingScore: type: integer format: int32 description: Indicates the minimum score required to pass the lab. Will only be set if the lab has activities which have been scored. nullable: true IpAddress: type: string description: The user's IP address. This is only included if the IP address was provided when the lab was launched. nullable: true Country: type: string description: The user's country as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. nullable: true Region: type: string description: The user's state/region as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. nullable: true City: type: string description: The user's city as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. nullable: true Latitude: type: number description: The user's latitude as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. nullable: true Longitude: type: number description: The user's longitude as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. nullable: true LabHostId: type: integer description: The ID of the lab host server that the lab instance is housed on. DatacenterId: type: integer description: The ID of the datacenter that the lab instance is located in. DeliveryRegionId: type: integer description: 'When specified, Skillable will attempt to launch the lab in the specified delivery region if a suitable host in that region is available and all required storage is available in that region. Delivery regions can be found using the DeliveryRegions command or Catalog command. Using the ipAddress parameter will result in a more reliable geo-location of the lab for the end user.' Status: type: integer format: int32 description: |- Indicates the status of the API request. 0 = Error 1 = Success Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true LaunchResponse: type: object x-examples: {} properties: Result: type: integer format: int32 description: |- Result of the launch command. Possible values are: 0 = Error 1 = Success 2 = User has too many active labs 3 = Insufficient host resources 5 = API integration has too many active labs 6 = User has a saved instance of this lab 7 = API integration doesn't have enough available RAM 10 = User doesn't have enough available RAM 20 = User's organization has too many active labs 30 = User's organization doesn't have enough available RAM 40 = Lab profile has too many active instances 50 = Lab organization doesn't have enough available RAM 60 = Lab organization has too many active instances 70 = Lab series has too many active instances 80 = Lab series doesn't have enough available RAM 90 = Too many labs within the specified class are currently active for another lab to be launched. 100 = User has launched the maximum number of instances of this lab profile. 110 = This lab is not currently available for launch via API. It is awaiting security review. 120 = Lab instance is not in the correct state to perform the requested action. 130 = This lab is not currently available for launch via API. It is awaiting security review. 140 = The request is invalid or contains invalid parameters. 150 = The participant lab instance cannot be launched because the shared class environment is not currently available. 160 = The lab cannot be launched because the user is required to provide additional information. Url: type: string description: A URL where the lab can be viewed by the user. LabInstanceId: type: integer description: The Id assigned to the new lab instance. format: int64 Expires: type: integer format: int64 description: When the lab will expire (in Unix epoch time). Status: type: integer description: |- Indicates the status of the API request. 0 = Error 1 = Success Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true LaunchForEventResponse: type: object x-examples: {} properties: Result: type: integer format: int32 description: |- Result of the launch command. Possible values are: 0 = Error 1 = Success 2 = User has too many active labs 3 = Insufficient host resources 5 = API integration has too many active labs 6 = User has a saved instance of this lab 7 = API integration doesn't have enough available RAM 10 = User doesn't have enough available RAM 20 = User's organization has too many active labs 30 = User's organization doesn't have enough available RAM 40 = Lab profile has too many active instances 50 = Lab organization doesn't have enough available RAM 60 = Lab organization has too many active instances 70 = Lab series has too many active instances 80 = Lab series doesn't have enough available RAM Url: type: string description: A URL where the lab can be viewed by the user. LabInstanceId: type: integer description: The Id assigned to the new lab instance. format: int64 Expires: type: integer format: int64 description: When the lab will expire (in Unix epoch time). Status: type: integer description: |- Indicates the status of the API request. 0 = Error 1 = Success Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true ResultResponse: type: object x-examples: {} properties: LabProfileId: type: integer description: The unique identifier of the lab profile the lab is based on. format: int32 Start: type: integer description: When the lab instance was started (in Unix epoch time). format: int64 End: type: integer description: When the lab instance was ended (in Unix epoch time). format: int64 nullable: true LastActivity: type: integer description: The last time the student interacted with the lab (in Unix epoch time). format: int64 nullable: true UserId: type: string description: The user ID as represented in your organization. nullable: true ClassId: type: string description: The class ID as represented in your organization. nullable: true CompletionStatus: type: integer description: |- The status when the lab instance is completed. Possible values are: 1 = Cancelled 2 = No Show 3 = Incomplete 4 = Complete 10 = Storage Provisioning Failed 20 = Lab Creation Failed 30 = Resume Failed 40 = Save Failed 50 = Submitted For Grading 60 = Grading In Progress format: int32 TotalRunTimeSeconds: type: integer description: 'The total number of seconds the lab was running, whether or not the student was present.' format: int32 TaskCompletePercent: type: integer description: 'If the lab has integrated tasks, the percentage of tasks that the user has completed.' format: int32 IsExam: type: boolean description: Indicates whether the lab is scored. ExamPassed: type: boolean description: Indicates whether the user passed the lab. Will only be set if the lab has activities which have been scored. nullable: true ExamScore: type: number description: Indicates the lab score. Will only be set if the lab has activities which have been scored. format: float nullable: true ExamMaxPossibleScore: type: integer description: Indicates the maximum possible score of the lab. Will only be set if the lab has activities which have been scored. format: int32 nullable: true ExamPassingScore: type: integer description: Indicates the minimum score required to pass the lab. Will only be set if the lab has activities which have been scored. format: int32 nullable: true IpAddress: type: string description: The user's IP address. This is only included if the IP address was provided when the lab was launched. nullable: true Country: type: string description: The user's country as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. nullable: true Region: type: string description: The user's state/region as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. nullable: true City: type: string description: The user's city as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. nullable: true Latitude: type: number description: The user's latitude as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. format: float nullable: true Longitude: type: number description: The user's longitude as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. format: float nullable: true LabHostId: type: integer description: The ID of the lab host server that the lab instance is housed on. format: int32 nullable: true DatacenterId: type: integer description: The ID of the datacenter that the lab instance is located in. format: int32 nullable: true DeliveryRegionId: type: integer description: 'When specified, Skillable will attempt to launch the lab in the specified delivery region if a suitable host in that region is available and all required storage is available in that region. Delivery regions can be found using the **DeliveryRegions** command or **Catalog** command. Using the ipAddress parameter will result in a more reliable geo-location of the lab for the end user.' format: int32 nullable: true Status: type: integer description: |- Indicates the status of the API request. 0 = Error 1 = Success format: int32 Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true ResultsResponse: type: object x-examples: {} properties: Results: type: array description: Array of LabResult objects. items: type: object properties: LabInstanceId: type: integer format: int64 description: The unique identifier of the lab instance. LabProfileId: type: integer format: int32 description: The unique identifier of the lab profile the lab instance is based on. Start: type: integer format: int64 description: When the lab was started (in Unix epoch time). End: type: integer format: int64 description: When the lab was started (in Unix epoch time). nullable: true LastActivity: type: integer format: int64 description: The last time the student interacted with the lab (in Unix epoch time). nullable: true UserId: type: string description: 'The unique identifier of the user, as represented in your system.' nullable: true ClassId: type: string description: 'The unique identifier of the class the lab is related to, as represented in your system.' nullable: true CompletionStatus: type: integer description: |- The status when the lab instance is completed. Possible values are: 1 = Cancelled 2 = No Show 3 = Incomplete 4 = Complete 10 = Storage Provisioning Failed 20 = Lab Creation Failed 30 = Resume Failed 40 = Save Failed 50 = Submitted For Grading 60 = Grading In Progress format: int32 TotalRunTimeSeconds: type: integer format: int32 description: 'The total number of seconds the lab was running, whether or not the student was present.' TaskCompletePercent: type: integer format: int32 description: 'If the lab has integrated tasks, the percentage of tasks that the user has completed.' IsExam: type: boolean description: Indicates whether the lab is scored. ExamPassed: type: boolean description: Indicates whether the user passed the lab. Will only be set if the lab has activities which have been scored. nullable: true ExamScore: type: number description: Indicates the lab score. Will only be set if the lab has activities which have been scored. format: float nullable: true ExamMaxPossibleScore: type: integer format: int32 description: Indicates the maximum possible score of the lab. Will only be set if the lab has activities which have been scored. nullable: true ExamPassingScore: type: integer format: int32 description: Indicates the minimum score required to pass the lab. Will only be set if the lab has activities which have been scored. nullable: true IpAddress: type: string description: The user's IP address. This is only included if the IP address was provided when the lab was launched. nullable: true Country: type: string description: The user's country as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. nullable: true Region: type: string description: The user's state/region as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. nullable: true City: type: string description: The user's city as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. nullable: true Latitude: type: number format: float description: The user's latitude as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. nullable: true Longitude: type: number format: float description: The user's longitude as determined by IP address geolocation. This is only included if the IP address was provided when the lab was launched. nullable: true LabHostId: type: integer description: The ID of the lab host server that the lab instance is housed on. nullable: true DatacenterId: type: integer description: The ID of the datacenter that the lab instance is located in. nullable: true DeliveryRegionId: type: integer description: 'When specified, Skillable will attempt to launch the lab in the specified delivery region if a suitable host in that region is available and all required storage is available in that region. Delivery regions can be found using the **DeliveryRegions** command or **Catalog** command. Using the ipAddress parameter will result in a more reliable geo-location of the lab for the end user.' nullable: true Status: type: integer format: int32 description: |- Indicates the status of the API request 0 = Error 1 = Success Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true ReplacementTokensResponse: type: object x-examples: {} properties: ReplacementTokens: type: array description: Array of ReplacementToken objects. items: type: object properties: Token: type: string description: The token name. Replacement: type: string description: The replacement value for the token. Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true Status: type: integer format: int32 description: |- Indicates the status of the API request. 0 = Error 1 = Success ResumeResponse: type: object x-examples: {} properties: Result: type: integer format: int32 description: |- Result of the Resume command. Possible values are: 0 = Error 1 = Success 2 = User has too many active labs 3 = Insufficient host resources 5 = API integration has too many active labs 6 = User has a saved instance of this lab 7 = API integration doesn't have enough available RAM 10 = User doesn't have enough available RAM 20 = User's organization has too many active labs 30 = User's organization doesn't have enough available RAM 40 = Lab profile has too many active instances 50 = Lab organization doesn't have enough available RAM 60 = Lab organization has too many active instances 70 = Lab series has too many active instances 80 = Lab series doesn't have enough available RAM Url: type: string description: A URL where the lab can be viewed by the user. LabProfileId: type: integer description: The Id of the resumed lab profile. format: int32 Expires: type: integer format: int64 description: When the lab will expire (in Unix epoch time). Status: type: integer description: |- Indicates the status of the API request. 0 = Error 1 = Success Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true RunningAndSavedLabsResponse: type: object x-examples: {} properties: RunningLabs: type: array description: Array of LabInstance objects for running labs. items: type: object properties: Id: type: integer format: int64 description: The unique identifier of the lab instance. UserId: type: string description: The ID of the user the lab instance belongs to. UserFirstName: type: string description: The first name of the user the lab instance belongs to. UserLastName: type: string description: The last name of the user the lab instance belongs to. LabProfileId: type: integer format: int32 description: The unique identifier of the lab profile the lab instance is based on. LabProfileName: type: string description: The number/code of the lab profile the lab instance is based on. LabProfileNumber: type: string description: The name of the lab profile the lab instance is based on. Start: type: integer format: int64 description: When the lab instance was started (in Unix epoch time). Expires: type: integer format: int64 description: When the lab will expire (in Unix epoch time). IsExam: type: boolean description: Indicates whether the lab is scored. SavedLabs: type: array description: Array of LabInstance objects for saved labs. items: type: object properties: Id: type: integer format: int64 description: The unique identifier of the lab instance. UserId: type: string description: The ID of the user the lab instance belongs to. UserFirstName: type: string description: The first name of the user the lab instance belongs to. UserLastName: type: string description: The last name of the user the lab instance belongs to. LabProfileId: type: integer format: int32 description: The unique identifier of the lab profile the lab instance is based on. LabProfileName: type: string description: The number/code of the lab profile the lab instance is based on. LabProfileNumber: type: string description: The name of the lab profile the lab instance is based on. Start: type: integer format: int64 description: When the lab instance was started (in Unix epoch time). Expires: type: integer format: int64 description: When the lab will expire (in Unix epoch time). IsExam: type: boolean description: Indicates whether the lab is scored. Status: type: integer format: int32 description: |- Indicates the status of the API request. 0 = Error 1 = Success Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true SaveResponse: type: object x-examples: {} properties: Result: type: integer format: int32 description: |- Result of the Save command. Possible values are: 0 = Unknown Error 1 = Success 2 = Invalid State Expires: type: integer format: int32 description: When the saved lab will expire (in Unix epoch time). Status: type: integer format: int32 description: |- Indicates the status of the API request. 0 = Error 1 = Success Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true ScoreActivitiesResponse: type: object x-examples: {} properties: Status: type: integer description: |- Indicates the status of the API request. 0 = Error 1 = Success Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true SendNotificationResponse: type: object x-examples: {} properties: name: type: string description: 'An optional name for the notification. If you name the notification, subsequent SendNotification commands using the same labInstanceId and name will cause the existing notification to be updated. It is also possible to delete a named notification by sending the name along with no notification value.' Id: type: integer description: The unique identifier of the notification. format: int32 Result: type: integer description: |- Result of the sending the notification. 0 = Error 1 = Success format: int32 Status: type: integer description: |- Indicates the status of the API request. 0 = Error 1 = Success format: int32 Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true StatsResponse: type: object x-examples: {} properties: NumActive: type: integer format: int32 description: 'The number of currently active labs (starting, running, tearing down, saving, resuming, etc).' NumSaved: type: integer format: int32 description: The number of currently saved labs. Status: type: integer format: int32 description: |- Indicates the status of the API request. 0 = Error 1 = Success Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true UpdateClassResponse: type: object x-examples: {} properties: Success: type: boolean Status: type: integer format: int32 description: |- Indicates the status of the API request. 0 = Error 1 = Success Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true UpdateLabInstructionsResponse: type: object x-examples: {} properties: Status: type: integer description: |- Indicates the status of the API request. 0 = Error 1 = Success format: int32 Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true UserRunningAndSavedLabsResponse: type: object x-examples: {} properties: RunningLabs: type: array description: Array of RunningLab objects. items: type: object properties: LabInstanceId: type: integer format: int64 description: The unique identifier of the lab instance. LabProfileId: type: integer format: int32 description: The unique identifier of the lab profile the lab instance is based on. LabProfileName: type: string description: The name of the lab profile the lab instance is based on. LabProfileNumber: type: string description: The number/code of the lab profile the lab instance is based on. Start: type: integer format: int64 description: When the lab instance was started (in Unix epoch time). Expires: type: integer format: int64 description: When the lab will expire (in Unix epoch time). Url: description: 'This response property is deprecated. Unless explicitly allowed by Skillable, this field will always be null. To obtain an access URL, use the **LabAccessUrl** command.' type: string nullable: true IsExam: type: boolean description: Indicates whether the lab is scored. SavedLabs: type: array description: Array of SavedLab objects. items: type: object properties: LabInstanceId: type: integer format: int64 description: The unique identifier of the lab instance. LabProfileId: type: integer format: int32 description: The unique identifier of the lab profile the lab instance is based on. LabProfileName: type: string description: The name of the lab profile the lab instance is based on. LabProfileNumber: type: string description: The number/code of the lab profile the lab instance is based on. MinutesRemaining: type: integer format: int32 description: The number of minutes remaining for the student to complete the lab (when resumed). Saved: type: integer format: int64 description: When the lab was saved (in Unix epoch time). Expires: type: integer format: int64 description: 'When the saved lab will expire (in Unix epoch time). The student must resume the lab for this date, or the lab will be deleted.' SaveInProgress: type: boolean description: True/false indicating whether the lab is currently in the process of being saved. IsExam: type: boolean description: Indicates whether the lab is scored. SubmittedForGrading: type: boolean description: Indicates whether the lab has been submitted for grading and is in a saved state while awaiting scoring. This will only be true for scored labs. Status: type: integer format: int32 description: |- Indicates the status of the API request. 0 = Error 1 = Success Error: type: string description: 'In the event of an error, this will contain a detailed error message.' nullable: true