Skip to content
Snippets Groups Projects
openapi.yaml 27.7 KiB
Newer Older
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
        Returns an array of objects representing stewards.
      operationId: getAllStewards
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/StewardDto'
      summary: Create a new steward.
        Creates a new steward and returns it as a response.
      operationId: createSteward
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewStewardDtoRequest'
        required: true
      responses:
        "201":
          $ref: '#/components/responses/SingleStewardDtoResponse'
        "400":
          description: Input data not correct
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
  /api/stewards/{id}:
    get:
      tags:
        - Steward
      description: Returns a steward by id.
      operationId: getSteward
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StewardDto'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      summary: Delete steward by id.
      operationId: deleteSteward
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        "204":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      summary: Update steward by id.
      operationId: updateSteward
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
      description: |
        Updates a steward by id and returns it as a response.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewStewardDtoRequest'
      responses:
        "200":
          $ref: '#/components/responses/SingleStewardDtoResponse'
        "400":
          description: Input data not correct
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
  /api/stewards/{stewardId}/flights/{flightId}:
    post:
      tags:
        - Steward
      summary: Assign steward to a flight.
      operationId: createStewardFlights
      parameters:
        - name: stewardId
          in: path
          required: true
          schema:
            type: integer
            format: int64
        - name: flightId
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        "201":
          $ref: '#/components/responses/SingleStewardDtoResponse'
        "400":
          description: Input data not correct
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
    put:
      tags:
        - Steward
      summary: Update assignment of steward to a flight.
      operationId: updateStewardFlights
      parameters:
        - name: stewardId
          in: path
          required: true
          schema:
            type: integer
            format: int64
        - name: flightId
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        "200":
          $ref: '#/components/responses/SingleStewardDtoResponse'
        "400":
          description: Input data not correct
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
    delete:
      tags:
        - Steward
      summary: Delete assignment of steward to a flight.
      operationId: deleteStewardFlights
      parameters:
        - name: stewardId
          in: path
          required: true
          schema:
            type: integer
            format: int64
        - name: flightId
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        "204":
          description: Deleted
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
  /api/stewards/paged:
    get:
      tags:
        - Steward
      summary: Paged stewards
      description: |
        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
        Returns an array of objects representing flights.
      operationId: getAllFlights
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FlightDto'
    post:
      tags:
        - Flight
      summary: Create a new flight.
      description: |
        Creates a new flight and returns it as a response.
      operationId: createFlight
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewFlightDtoRequest'
        required: true
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlightDto'
        "400":
          description: Input data not correct
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
  /api/flights/{id}:
    get:
      tags:
        - Flight
      summary: Get flight by id.
      description: |
        Returns an object representing a flight.
      operationId: getFlightById
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlightDto'
    delete:
      tags:
        - Flight
      summary: Delete flight by id.
      operationId: deleteFlight
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        "204":
          description: Deleted
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
    put:
      tags:
        - Flight
      summary: Update flight by id.
      operationId: updateFlight
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
      description: Updates a flight by id and returns it as a response.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewFlightDtoRequest'
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlightDto'
        "400":
          description: Input data not correct
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
  /api/airplaneTypes:
    get:
      tags:
        - AirplaneType
      summary: Get all airplane types.
      description: |
        Returns an array of objects representing airplane types.
      operationId: getAllAirplaneTypes
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AirplaneTypeDto'
    post:
      tags:
        - AirplaneType
      summary: Create a new airplane type.
      description: Creates a new airplane type and returns it as a response.
      operationId: createAirplaneType
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewAirplaneTypeDtoRequest'
        required: true
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirplaneTypeDto'
        "400":
          description: Input data not correct
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
  /api/airplaneTypes/{id}:
    get:
      tags:
        - AirplaneType
      summary: Get airplane type by id.
      description: Returns an object representing an airplane type.
      operationId: getAirplaneTypeById
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirplaneTypeDto'
    delete:
      tags:
        - AirplaneType
      summary: Delete airplane type by id.
      operationId: deleteAirplaneType
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        "204":
          description: Deleted
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
    put:
      tags:
        - AirplaneType
      summary: Update airplane type by id.
      operationId: updateAirplaneType
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
      description: Updates a airplane type by id and returns it as a response.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AirplaneTypeDto'
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirplaneTypeDto'
        "400":
          description: Input data not correct
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
  /api/airplanes:
    get:
      tags:
        - Airplane
      summary: Get all airplanes.
      description: Returns an array of objects representing airplanes.
      operationId: getAllAirplanes
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AirplaneDto'
    post:
      tags:
        - Airplane
      summary: Create a new airplane.
      description: Creates a new airplane and returns it as a response.
      operationId: createAirplane
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewAirplaneDtoRequest'
        required: true
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirplaneDto'
        "400":
          description: Input data not correct
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
  /api/airplanes/{id}:
    get:
      tags:
        - Airplane
      summary: Get airplane by id.
      description: Returns an object representing an airplane.
      operationId: getAirplaneById
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirplaneDto'
    delete:
      tags:
        - Airplane
      summary: Delete airplane by id.
      operationId: deleteAirplane
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        "204":
          description: Deleted
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
    put:
      tags:
        - Airplane
      summary: Update airplane by id.
      operationId: updateAirplane
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
      description: Updates a airplane by id and returns it as a response.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AirplaneDto'
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirplaneDto'
        "400":
          description: Input data not correct
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
  /api/airplanes/{airplaneId}/airplaneTypes/{airplaneTypeId}:
    post:
      tags:
        - Airplane
      summary: Assign airplane type to a airplane.
      operationId: assignAirplaneType
      parameters:
        - name: airplaneId
          in: path
          required: true
          schema:
            type: integer
            format: int64
        - name: airplaneTypeId
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        "201":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirplaneDto'
        "400":
          description: Input data not correct
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
    put:
      tags:
        - Airplane
      summary: Update assignment of airplane type to an airplane.
      operationId: updateAirplaneTypeAssignment
      parameters:
        - name: airplaneId
          in: path
          required: true
          schema:
            type: integer
            format: int64
        - name: airplaneTypeId
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirplaneDto'
        "400":
          description: Input data not correct
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
    delete:
      tags:
        - Airplane
      summary: Delete assignment of airplane type to an airplane.
      operationId: deleteAirplaneTypeAssignment
      parameters:
        - name: airplaneId
          in: path
          required: true
          schema:
            type: integer
            format: int64
        - name: airplaneTypeId
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        "204":
          description: Deleted
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
components:
  schemas:
    DomainEntity:
      title: Domain Entity
      description: Represents a Domain Entity
      type: object
      required:
        - id
      properties:
        id:
          type: integer
          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:
      type: object
      title: New Steward Request
      description: Object for requesting a new Steward.
      required:
        - 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
    FlightDto:
      allOf:
        - $ref: '#/components/schemas/DomainEntity'
      type: object
      title: Flight
      description: Represents a flight.
        - 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'
    NewFlightDtoRequest:
      type: object
      title: New Flight Request
      description: Object for requesting a new Flight.
      required:
        - departureTime
        - arrivalTime
      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
    AirplaneTypeDto:
      allOf:
        - $ref: '#/components/schemas/DomainEntity'
      type: object
      title: Airplane Type
      description: Represents an Airplane Type.
      required:
        - id
        - name
      properties:
        name:
          type: string
          description: airplane type name
    NewAirplaneTypeDtoRequest:
      type: object
      title: New Airplane Type Request
      description: Object for requesting a new Airplane Type.
      required:
        - name
      properties:
        name:
          type: string
          description: airplane type name
          example: Boeing 747
    AirplaneDto:
      allOf:
        - $ref: '#/components/schemas/DomainEntity'
      type: object
      title: Airplane
      description: Represents an Airplane.
      required:
        - id
        - name
        - capacity
        - type
      properties:
        name:
          type: string
          description: airplane name
        capacity:
          type: integer
          description: airplane seat capacity
          format: int32
          example: 150
        type:
          $ref: '#/components/schemas/AirplaneTypeDto'
    NewAirplaneDtoRequest:
      type: object
      title: New Airplane Request
      description: Object for requesting a new Airplane.
      required:
        - name
        - capacity
      properties:
        name:
          type: string
          description: airplane name
          example: Spitfire
        capacity:
          type: integer
          description: airplane seat capacity
          format: int32
          example: 150
      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
      type: object
      title: Sort Object
      properties:
        empty:
          type: boolean
        sorted:
          type: boolean
        unsorted:
          type: boolean
    PageStewardDto:
      type: object
      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
    CountryDto:
      allOf:
        - $ref: '#/components/schemas/DomainEntity'
      type: object
      title: Country
      description: Represents a country.
      required:
        - id
        - name
      properties:
        name:
          type: string
          description: country name
    CityDto:
      allOf:
        - $ref: '#/components/schemas/DomainEntity'
      type: object
      title: City
      description: Represents a City in a Country containing Airports.
      required:
        - id
        - name
      properties:
        name:
          type: string
          description: city name
          example: New York, London
        country:
          $ref: '#/components/schemas/CountryDto'