openapi: 3.0.1 info: title: Airport Manager description: | Microservice Application for Airport Manager contact: name: Martin Slovik email: 540485@mail.muni.cz # insert your information as well license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html version: "1.1" servers: - url: "{scheme}://{server}:{port}" description: my server variables: scheme: default: http enum: - http - https server: default: localhost port: default: "8080" tags: - name: Core description: microservice for core paths: /api/stewards: get: tags: - Steward summary: Get all stewards description: | Returns an array of objects representing stewards, ordered from the newest to the oldest. Each steward must have an **id**, **firstName** and **lastName**. operationId: getAllStewards responses: "200": description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/StewardDto' post: tags: - Steward summary: Create a new steward description: | Receives data both in request body and as URL parameter and stores them as a new steward. Returns the new steward as response. operationId: createSteward requestBody: content: application/json: schema: $ref: '#/components/schemas/NewStewardDtoRequest' required: true responses: "201": $ref: '#/components/responses/SingleStewardDtoResponse' "400": description: input data were not correct content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' /api/stewards/{id}: get: tags: - Steward summary: Get steward by id description: Looks up a stewards by id. operationId: getSteward parameters: - name: id in: path required: true schema: type: integer format: int64 responses: "200": $ref: '#/components/responses/SingleStewardDtoResponse' "404": description: steward not found content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' delete: tags: - Steward summary: Delete steward by id operationId: deleteSteward parameters: - name: id in: path required: true schema: type: integer format: int64 responses: "204": description: deleted "404": description: steward not found content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' '401': description: unauthorized /api/stewards/paged: get: tags: - Steward summary: Paged stewards description: | Returns a page of stewards. Stewards are ordered from the newest to the oldest. The parameter `page` specifies zero-based index of the requested page, and the parameter `size` specifies the size of the page. operationId: getStewardsPaged parameters: - name: page in: query description: Zero-based page index (0..N) required: false schema: minimum: 0 type: integer default: 0 - name: size in: query description: The size of the page to be returned required: false schema: minimum: 1 type: integer default: 20 - name: sort in: query description: "Sorting criteria in the format: property,(asc|desc). Default\ \ sort order is ascending. Multiple sort criteria are supported." required: false schema: type: array items: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PageStewardDto' /api/flights: get: tags: - Flight summary: Get all flights description: | Returns an array of objects representing flights, ordered from the newest to the oldest. Each steward must have an **id**. operationId: getAllFlights responses: "200": description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/FlightDto' components: schemas: DomainEntity: title: domain entity description: represents a domain entity type: object required: - id properties: id: type: integer description: id of domain entity format: int64 example: 1 discriminator: propertyName: objectType ErrorMessage: allOf: - $ref: '#/components/schemas/DomainEntity' title: error message description: response body for HTML statuses type: object properties: timestamp: type: string description: time in ISO format format: date-time example: 2022-12-21T18:52:10.757Z status: type: integer description: HTTP status code format: int32 example: 404 error: type: string description: HTTP status text example: Not Found message: type: string description: reason for error example: entity not found path: type: string description: URL path example: /api/stewards/1 StewardDto: allOf: - $ref: '#/components/schemas/DomainEntity' type: object title: steward description: represents a steward on a flight required: - id - firstName - lastName properties: firstName: type: string description: first name of a steward example: John lastName: type: string description: last name of a steward example: Doe flights: type: array description: flights assigned to a steward items: $ref: '#/components/schemas/FlightDto' NewStewardDtoRequest: allOf: - $ref: '#/components/schemas/DomainEntity' type: object title: steward required: - id - firstName - lastName properties: firstName: type: string description: first name of a steward example: John lastName: type: string description: last name of a steward example: Doe description: | object for requesting new steward FlightDto: allOf: - $ref: '#/components/schemas/DomainEntity' type: object title: flight description: represents a flight required: - id - departureTime - arrivalTime - stewards - airplane properties: departureTime: type: string description: time of flight departure format: date-time example: 2022-12-22T12:04:04.493908908+01:00 arrivalTime: type: string description: time of flight arrival format: date-time example: 2022-12-22T12:04:04.493908908+01:00 stewards: type: array description: stewards assigned to a flight items: $ref: '#/components/schemas/StewardDto' airplane: $ref: '#/components/schemas/AirplaneDto' AirplaneTypeDto: allOf: - $ref: '#/components/schemas/DomainEntity' type: object title: airplane type description: represents airplane type required: - id - name properties: name: type: string description: airplane type name example: Boeing 747, Airbus A380, ... AirplaneDto: allOf: - $ref: '#/components/schemas/DomainEntity' type: object title: airplane description: represents airplane required: - id - name - capacity - type properties: name: type: string description: airplane name example: Spitfire, Messerschmidt, ... capacity: type: integer description: airplane seat capacity format: int32 example: 150 type: $ref: '#/components/schemas/AirplaneTypeDto' PageableObject: type: object title: pageable object properties: offset: type: integer format: int64 sort: $ref: '#/components/schemas/SortObject' pageSize: type: integer format: int32 pageNumber: type: integer format: int32 paged: type: boolean unpaged: type: boolean SortObject: type: object title: sort object properties: empty: type: boolean sorted: type: boolean unsorted: type: boolean PageStewardDto: type: object title: paged stewards properties: totalPages: type: integer format: int32 totalElements: type: integer format: int64 first: type: boolean last: type: boolean size: type: integer format: int32 content: type: array items: $ref: '#/components/schemas/StewardDto' number: type: integer format: int32 sort: $ref: '#/components/schemas/SortObject' numberOfElements: type: integer format: int32 pageable: $ref: '#/components/schemas/PageableObject' empty: type: boolean responses: SingleStewardDtoResponse: description: response containing a single steward content: application/json: schema: $ref: '#/components/schemas/StewardDto' links: link_to_getSteward: operationId: getSteward parameters: id: $response.body#/id description: | The `id` value returned in the response can be used as the `id` parameter in `GET /stewards/{id}`.