I know. I’m embarrassed to say that that’s my mistake too ☹

Regardless, it’s not going to change in the Swagger-provided tools.

 

 

 

From: <[email protected]> on behalf of Ben Sayers 
<[email protected]>
Reply-To: "[email protected]" 
<[email protected]>
Date: Thursday, September 28, 2017 at 19:35
To: Swagger <[email protected]>
Subject: Re: How do I use swagger api to generate swagger with 
additionalProperties as false for object

 

Fair enough. 

 

But perhaps the ship has sailed? A number of Swagger tools I have used allow 
booleans in additional properties and validate them correctly. For example the 
official json schema for Swagger 2 allows booleans in additional properties:

https://github.com/OAI/OpenAPI-Specification/blame/master/schemas/v2.0/schema.json#L1004


On Friday, 29 September 2017 12:22:00 UTC+10, Ron wrote: 

Ben,

 

I realize this is might sound a bit arrogant, but that’s not the intent. 

Being the person who wrote the Swagger 2 specification, and spent hours 
specifically on the Schema Object itself, I can assure you that the intent was 
as I stated before. This is a mistake in the wording of the spec which was 
never clarified properly – and it’s also the reason why the wording in the 
3.0.0 spec around additionalProperties is much more explicit.

 

 

 

From: <[email protected]> on behalf of Ben Sayers 
<[email protected]>
Reply-To: "[email protected]" <[email protected]>
Date: Thursday, September 28, 2017 at 18:46
To: Swagger <[email protected]>
Subject: Re: How do I use swagger api to generate swagger with 
additionalProperties as false for object

 

I believe the Swagger 2 specification does indeed allow additional properties 
and that the default value is an empty schema. Here is my reasoning:

 

This is the Swagger 2 definition for additional properties.

 

The following properties are taken from the JSON Schema definition but their 
definitions were adjusted to the Swagger Specification. Their definition is the 
same as the one from JSON Schema, only where the original definition references 
the JSON Schema definition, the Schema Object definition is used instead.
items
allOf
properties
additionalProperties

 

And this is the JSON Schema draft 4 specification's definition of additional 
properties

 

5.4.4.  additionalProperties, properties and patternProperties
5.4.4.1.  Valid values
   The value of "additionalProperties" MUST be a boolean or an object.
   If it is an object, it MUST also be a valid JSON Schema.

 

Swagger 2 uses the same definition from the JSON Schema specification unless 
the value is a JSON Schema. Since the value false is a Boolean we take the 
definition from the JSON Schema specification which says it is allowed.

 

In regards to the default value again we take the definition from the JSON 
Schema draft 4 specification:

 

5.4.4.3.  Default values
   If either "properties" or "patternProperties" are absent, they can be
   considered present with an empty object as a value.
   If "additionalProperties" is absent, it may be considered present
   with an empty schema as a value.

 

Sources:

Swagger 2 specification:  
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md

JSON Schema draft 4 specification: 
http://json-schema.org/specification-links.html#draft-4


On Friday, 29 September 2017 06:22:35 UTC+10, Ron wrote: 

The 2.0 specification doesn’t allow setting additionalProperties: false. It was 
intended to be the default definition but was never clarified in the spec.

 

 

 

From: <[email protected]> on behalf of Yuting <[email protected]>
Reply-To: "[email protected]" <[email protected]>
Date: Thursday, September 28, 2017 at 00:15
To: Swagger <[email protected]>
Subject: How do I use swagger api to generate swagger with additionalProperties 
as false for object

 

I somehow have to generate a swagger doc with addtionalProperties as false to 
not allow additional properties.  I looked at 
https://github.com/swagger-api/swagger-core/blob/master/modules/swagger-models/src/main/java/io/swagger/models/ModelImpl.java

but setAdditionalProperties accept a Property only, how do I set it with a 
boolean value?
public void setAdditionalProperties(Property additionalProperties) {
 

type(OBJECT);
 

this.additionalProperties = additionalProperties;
}

"TestDTO" : {
      "type" : "object",
      "additionalProperties":false
      "properties" : {
        "property1" : {
          "description" : "This is a test object.",
          "$ref" : "#/definitions/TestDTO"
        },
        "perperty2" : {
          "type" : "string",
          "description" : "this is a property."
        }
      }
    },

-- 
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.

-- 
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