types:
  SmallInteger:
    type: integer
    validation:
      exclusiveMin: true
      exclusiveMax: true
      min: 0
      max: 10
      multipleOf: 1

  LargeInteger:
    type: integer
    validation:
      min: 10000
      max: 100000

  Double:
    type: double
    validation:
      min: 256.42
      max: 512.84

  Word:
    type: string
    validation:
      minLength: 2
      maxLength: 26

  Sentence:
    type: string
    validation:
      minLength: 4
      maxLength: 256

  Shape:
    default: CIRCLE
    enum:
      - SQUARE
      - CIRCLE
      - TRIANGLE 

  Type:
    docs: |
      Defines properties with default values and validation rules.
    properties:
      decimal:
        type: double
        default: 1.1
        validation:
          exclusiveMin: true
          exclusiveMax: false
          min: 1.1
          max: 2.2
          multipleOf: 1.1
      even:
        type: integer
        default: 42
        validation:
          exclusiveMin: false
          exclusiveMax: true
          min: 0
          max: 100
          multipleOf: 2
      name:
        type: string
        default: fern
        validation:
          minLength: 3
          maxLength: 10
          pattern: "^[a-z]+$"
          format: custom
      shape:
        type: Shape
        default: TRIANGLE
    examples:
      - name: First
        value:
          decimal: 1.1
          even: 2
          name: rules
          shape: SQUARE

service:
  auth: false
  base-path: /
  endpoints:
    create:
      path: /create
      method: POST
      request:
        name: CreateRequest
        body:
          properties:
            decimal:
              type: double
              default: 1.1
              validation:
                exclusiveMin: true
                exclusiveMax: false
                min: 1.1
                max: 2.2
                multipleOf: 1.1
            even:
              type: integer
              default: 42
              validation:
                exclusiveMin: false
                exclusiveMax: true
                min: 0
                max: 100
                multipleOf: 2
            name:
              type: string
              default: fern
              validation:
                minLength: 3
                maxLength: 10
                pattern: "^[a-z]+$"
                format: custom
            shape:
              type: Shape
              default: SQUARE
      response: Type

    get:
      path: ""
      method: GET
      request:
        name: GetRequest
        query-parameters:
          decimal:
            type: double
            default: 1.1
            validation:
              exclusiveMin: true
              exclusiveMax: false
              min: 1.1
              max: 2.2
              multipleOf: 1.1
          even:
            type: integer
            default: 42
            validation:
              exclusiveMin: false
              exclusiveMax: true
              min: 0
              max: 100
              multipleOf: 2
          name:
            type: string
            default: fern
            validation:
              minLength: 3
              maxLength: 10
              pattern: "^[a-z]+$"
              format: custom
      response: Type
