Since Swagger is not a specific tool, you’d need to specify which tools you 
actually use with which you experience the problems.

 

 

 

From: <[email protected]> on behalf of Ahamed 
<[email protected]>
Reply-To: "[email protected]" 
<[email protected]>
Date: Monday, 1 August 2016 at 04:54
To: Swagger <[email protected]>
Subject: Swagger not validating additionalProperties: false, required fields 
when using discriminator field

 

I am having a base definitions and multiple concrete implementation using 
'discriminator' field. When i set the fields mandatory in concrete 
implementation and additionalProperties = false, swagger not validating this 
condition and allowing user to skip mandatory field and allow specifying 
additional fields which are not part of definitions. Below is the sample 
definitions i have given for reference. To say, when using Polymorphism , non 
of the validation is being done for concrete implementation. Only base product 
gets validation because i have specified the base 'product' in my Api body 
specification  

 

Is the above condition bug in swagger validation or it's not supported? 

 

api layer

---------

 

/companies/{companyId}/products:
post:
  x-swagger-router-controller: product
  operationId: create
  description: |
    xxxxxx.
  parameters:
    - name: companyId
      in: path
      description: ID of the `Company`
      type: integer
      required: true
    - name: order
      in: body
      description: Payload
      schema:
        $ref: '#/definitions/Product'
  tags:
    - product
  responses:
    '200':
      description: Successful response.
      schema:
        $ref: '#/definitions/Product'
    default:
      description: Error response.
      schema:
        $ref: '#/definitions/Error'
 

definitions:
Product:
  type: object
  required:
  - type
  discriminator: type
  properties:
    id:
      type: string
      description: Unique URI identifying this resource. 
    parent:
      type: string
      description: A reference to a Resource of which this Product is a 
component. 
      readOnly: true
    type:
      description: The type of item being ordered.
      type: string
      enum:
      - Create_X
      - Create_Y
      - Create_Z
Create_X:
  allOf:
  - $ref: '#/definitions/Product'
  - type: object
    required:
    - resourceURI
    - quantity
    properties:
      resourceURI:
        type: string
        description: Unique URI that is associated with the type of API 
resource.
        enum:
        - http://xxxx.com/api/1/Product-Create-X
      quantity:
        description: The number of product instances ordered with the same 
configuration
        type: integer
        format: int32
        minimum: 1
    additionalProperties: false
Create_Y:
  allOf:
  - $ref: '#/definitions/Product'
  - type: object
    required:
    - resourceURI
    - quantity
    properties:
      resourceURI:
        type: string
        description: Unique URI that is associated with the type of API 
resource.
        enum:
        - http://xxxx.com/api/1/Product-Create-Y
      quantity:
        description: The number of product instances ordered with the same 
configuration
        type: integer
        format: int32
        minimum: 1
    additionalProperties: false
Create_Z:
  allOf:
  - $ref: '#/definitions/Product'
  - type: object
    required:
    - resourceURI
    - quantity
    properties:
      resourceURI:
        type: string
        description: Unique URI that is associated with the type of API 
resource.
        enum:
        - http://xxxx.com/api/1/Product-Create-Z
      quantity:
        description: The number of product instances ordered with the same 
configuration
        type: integer
        format: int32
        minimum: 1
    additionalProperties: false
-- 
You received this message because you are subscribed to the Google Groups 
"Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to