diff options
author | Sawyer Bergeron <sbergeron@iol.unh.edu> | 2021-10-15 14:14:46 -0400 |
---|---|---|
committer | Sawyer Bergeron <sbergeron@iol.unh.edu> | 2021-10-15 14:20:02 -0400 |
commit | 35b9f39178cc502a5283a1b37a65f7dd0838ae05 (patch) | |
tree | 676ede483e2aa6a0ad8ebaef0c0300a155a22023 /laas_api_documentation.yaml | |
parent | b3ed8ebcf536c021330e7ccbc0376f6b89189348 (diff) |
Merge User Booking API Rev 1 (Try 3)
Signed-off-by: Sawyer Bergeron <sbergeron@iol.unh.edu>
Change-Id: Ie1eee0a59929f8da39f16bb6bc17ae3de4f1cba9
Signed-off-by: Sawyer Bergeron <sbergeron@iol.unh.edu>
Diffstat (limited to 'laas_api_documentation.yaml')
-rw-r--r-- | laas_api_documentation.yaml | 401 |
1 files changed, 401 insertions, 0 deletions
diff --git a/laas_api_documentation.yaml b/laas_api_documentation.yaml new file mode 100644 index 0000000..ee967b0 --- /dev/null +++ b/laas_api_documentation.yaml @@ -0,0 +1,401 @@ +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: opnfv@iol.unh.edu + 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}/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 |