-
Notifications
You must be signed in to change notification settings - Fork 3
/
laas_api_documentation.yaml
424 lines (424 loc) · 9.67 KB
/
laas_api_documentation.yaml
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
swagger: '2.0'
info:
description: |-
Details for all endpoints for LaaS automation API. This serves to allow users
to create bookings outside of the web UI hosted at labs.lfnetworking.org.
All included setup is referencing the development server hosted while in
beta testing for the API.
version: 1.0.0
title: LaaS Automation API
termsOfService: 'http://labs.lfnetworking.org'
contact:
email: [email protected]
license:
name: MIT License
host: 10.10.30.55
basePath: /api
tags:
- name: Bookings
description: View and edit existing bookings
- name: Resource Inventory
description: Examine and manage resources in a lab
- name: Users
description: All actions for referencing
schemes:
- http
security:
- AutomationAPI: []
paths:
/booking:
get:
tags:
- Bookings
summary: Get all bookings belonging to user
description: Get all bookings belonging to the user authenticated by API key.
operationId: retrieveBookings
produces:
- application/json
responses:
'200':
description: successful operation
schema:
type: array
items:
$ref: '#/definitions/Booking'
'401':
description: Unauthorized API key
/booking/makeBooking:
put:
tags:
- Bookings
summary: Make booking by specifying information
description: Exposes same functionality as quick booking form from dashboard
operationId: makeBooking
consumes:
- application/json
produces:
- application/json
parameters:
- in: body
name: booking
description: the booking to create
schema:
$ref: '#/definitions/MakeBookingTemplate'
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/Booking'
'400':
description: Error in booking info
'401':
description: Unauthorized API key
'/booking/{bookingID}':
get:
tags:
- Bookings
summary: See all info for specific booking
description: ''
operationId: specificBooking
parameters:
- in: path
name: bookingID
required: true
type: integer
produces:
- application/json
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/Booking'
'404':
description: Booking does not exist
'401':
description: Unauthorized API key
delete:
tags:
- Bookings
summary: Cancel booking
description: ''
operationId: cancelBooking
parameters:
- in: path
name: bookingID
required: true
type: integer
produces:
- application/json
responses:
'200':
description: successfully canceled booking
'404':
description: Booking does not exist
'400':
description: Cannnot cancel booking
'401':
description: Unauthorized API key
'/booking/{bookingID}/details':
get:
tags:
- Bookings
summary: Get booking details
description: ''
operationID: bookingDetails
parameters:
- in: path
name: bookingID
required: true
type: integer
produces:
- application/json
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/Booking'
'404':
description: Booking does not exist
'401':
description: Unauthorized API key
'/booking/{bookingID}/extendBooking/{days}':
post:
tags:
- Bookings
summary: Extend end date of booking
description: ''
operationId: extendBooking
parameters:
- in: path
name: bookingID
required: true
type: integer
- in: path
name: days
required: true
type: integer
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/Booking'
'404':
description: Booking to extend does not exist
'400':
description: Cannot extend Booking
'401':
description: Unauthorized API key
'/resource_inventory/{templateLabID}/images':
get:
tags:
- Resource Inventory
summary: See valid images for a resource template
description: ''
operationId: viewImages
parameters:
- in: path
name: templateLabID
required: true
type: integer
produces:
- application/json
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/Image'
'404':
description: Resource Template does not exist
'401':
description: Unauthorized API key
/resource_inventory/availableTemplates:
get:
tags:
- Resource Inventory
summary: All Resource Templates currently available
description: ''
operationId: listTemplates
produces:
- application/json
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/ResourceTemplate'
'401':
description: Unauthorized API key
/users:
get:
tags:
- Users
summary: See all public users that can be added to a booking
description: ''
operationId: getUsers
produces:
- application/json
responses:
'200':
description: successful operation
schema:
type: array
items:
$ref: '#/definitions/UserProfile'
'401':
description: Unauthorized API key
/labs:
get:
tags:
- Lab
summary: List all labs and some of their info
description: ''
operationId: listLabs
produces:
- application/json
responses:
'200':
description: successful operation
schema:
type: array
items:
$ref: '#/definitions/Lab'
'401':
description: Unauthorized API Key
/labs/{labID}/users:
get:
tags:
- Lab
summary: Get all users that are visible to a lab for operational purposes
description: ''
operationId: labUsers
consumes:
- application/json
produces:
- application/json
parameters:
- in: path
name: labID
required: true
type: string
responses:
'200':
description: successful
schema: array
items:
$ref: '#/definitions/UserProfile'
'400':
description: invalid lab id
securityDefinitions:
AutomationAPI:
type: apiKey
in: header
name: auth-token
definitions:
Lab:
type: object
required:
- id
- name
properties:
id:
type: integer
format: int64
name:
type: string
MakeBookingTemplate:
type: object
required:
- templateID
- purpose
- project
- collaborators
- hostname
- length
- imageLabID
properties:
templateID:
type: integer
purpose:
type: string
project:
type: string
collaborators:
type: array
items:
type: string
description: username of the referred user
hostname:
type: string
length:
type: integer
description: length of the booking in days (max 21, min 1)
imageLabID:
type: integer
Booking:
type: object
required:
- id
- owner
- collaborators
- start
- end
- lab
- purpose
- project
- resourceBundle
properties:
id:
type: integer
format: int64
owner:
type: string
collaborators:
type: array
items:
$ref: '#/definitions/UserProfile'
start:
type: string
format: date-time
end:
type: string
format: date-time
lab:
$ref: '#/definitions/Lab'
purpose:
type: string
resourceBundle:
$ref: '#/definitions/ResourceBundle'
project:
type: string
Image:
type: object
required:
- labID
- resources
properties:
labID:
type: integer
format: int64
name:
type: string
ResourceBundle:
type: object
required:
- id
- resources
properties:
id:
type: integer
format: int64
resources:
type: array
items:
$ref: '#/definitions/Server'
ResourceProfile:
type: object
required:
- id
- name
properties:
id:
type: integer
format: int64
name:
type: string
UserProfile:
type: object
required:
- id
- name
properties:
id:
type: integer
format: int64
name:
type: string
ResourceTemplate:
type: object
required:
- id
- name
- resourceProfiles
properties:
id:
type: integer
format: int64
name:
type: string
resourceProfiles:
type: array
items:
$ref: '#/definitions/ResourceProfile'
Server:
type: object
required:
- id
- labid
- profile
properties:
id:
type: integer
format: int64
profile:
$ref: '#/definitions/ResourceProfile'
labid:
type: string