# 3.5.4.Swagger/OAI Specifications, Part 2 of 3

* 以下範例參考自[https://github.com/acloudfan/REST-API-course-swagger](https://github.com/acloudfan/REST-API-course-swagger) (branch: definitions)
  *   Swagger 2.0 Part 2包含:

      * 1.defining schema for request/response
        * JSON schema
        *   examples

            ```
            definitions:
            # A general message schema in case of an error
            GeneralError:
              required:
                - message
              properties:
                message:
                  type: string
            # A Not found error that is sent back in case no results are found for the 
            # requested resource
            NotFoundError:
              required:
                - message
                - hint
              properties:
                message:
                  type: string
                hint:
                  type: string

            Vacation:
              required:
                - name
                - description
                - type
                - numOfNights
              properties:
                # Name of the package
                name:
                  type: string
                # Description of the package
                description:
                  type: string

                # Type of the vacation package - shows how to use enumerations 
                  type:
                    type: string
                    enum:
                      - resort
                      - cruise
                # All the destinations included in the vacation package  
                # Shows how to use array of complex objects
                  destinations:
                    type: array
                    # There should be at least 1 destination in the package
                    minItems: 1
                    maxItems: 6
                    items:
                      $ref: "#/definitions/Location"

                # Number of nights
                  numOfNights:
                    type: number
                    minimum: 1
                    maximum: 31

            # Definition for the location schema    
            # Refered from the destinations in Vacation schema
            Location:
              required:
                - city
                - country
              properties:
                city:
                  type: string
                country:
                  type: string
            ```
      * 2.parameters
        *   request: head, body, query string

            ```
            # Parameter Definitions
            # Common parameters used in the operations
            parameters:
            IdInPath:
              name: id
              in: path
              type: string
              required: true
            ```
      * 3.security schema

      ```
      # Security Definitions
      securityDefinitions:
        KeySecurity:
          type: apiKey
            in: query
            name: api_key
      ```
