Skip to content
Snippets Groups Projects
openapi.yaml 10.8 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
      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
      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
        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
        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
  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}`.