Repository navigation
Expand file tree
/
Copy pathSkillable-lab-OpenAPI.yaml
More file actions
6753 lines (6717 loc) · 261 KB
/
Copy pathSkillable-lab-OpenAPI.yaml
File metadata and controls
6753 lines (6717 loc) · 261 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
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".
<SecurityDefinitions />
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 <strong>instructionsId</strong> 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 <strong>Lab Profile ➔ Manage Instructions Sets</strong> 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 "<strong>API Example</strong>" in the <strong>Manage Instruction Sets</strong> 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
- schema:
type: string
example: Canceled since the lab instance is no longer being used.
in: query
name: note
description: Note that details any additional context for why the lab was canceled.
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'
- $ref: '#/components/schemas/ConciseResponse'
description: 'Response format depends on mode specified. 0 for standard /Result, 5 for concise, 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- Mode = 5, concise: a collection of responses containing portions of the **[Details](https://docs.skillable.com/apidocs/retrieve-details-about-a-lab-instance)** and **[Result](https://docs.skillable.com/apidocs/retrieve-information-about-a-lab-instance-result-1)** commands.\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, 5 - concise, returns response body containing portions of the /details and /result, 10 - verbose, returns response body of /details.'
- schema:
type: string
in: query
name: classId
description: 'The class ID as represented in your organization. Must be an exact match. '
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: