python-openapi / openapi-spec-validator

OpenAPI Spec Validator is a CLI, pre-commit hook and python package that validates OpenAPI Specs against the OpenAPI 2.0 (aka Swagger), OpenAPI 3.0 and OpenAPI 3.1 specification.
Apache License 2.0
337 stars 62 forks source link

Validator doesn't report properties that are in the required list but not defined #266

Open energister opened 1 year ago

energister commented 1 year ago

Following specification causes validator to report only the event-photo property

Required list has not defined properties: ['event-photo']

whereas I would expect similar messages for the problem-type, order-trees and site-location properties.

openapi: 3.0.3
info:
  title: Protect Earth API
  version: 0.3.0
paths:
  /events:
    get:
      operationId: get-events
      summary: Get Events
      description: Get a list of all the events
      tags:
        - Event
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Generic_Problem'

  /orders:
    post:
      operationId: post-orders
      summary: Create Order
      tags:
        - Order
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Order'
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'

components:
  schemas:
    Generic_Problem:
      title: Problem
      type: object
      required:
        - problem-type
        - title
      properties:
        title:
          type: string
        status:
          type: integer

    Event:
      title: Event
      type: object
      required:
        - description
        - event-photo
      properties:
        id:
          type: string
        summary:
          type: string
        description:
          type: string

    Order:
      title: Order
      type: object
      required:
        - site
        - order-trees
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        site:
          $ref: '#/components/schemas/Site'

    Site:
      title: Site
      type: object
      required:
        - url
        - site-location
      properties:
        id:
          type: string
          format: uuid
        url:
          type: string
          format: url