Comments (4)
I just learned recently that using nullable in OpenAPI 3.0 schemas does not disable other object constraints like "enum" or the like. From the spec:
[…] A true value adds "null" to the allowed type specified by the type keyword, only if type is explicitly defined within the same Schema Object. Other Schema Object constraints retain their defined behavior, and therefore may disallow the use of null as a value. A false value leaves the specified or default type unmodified. The default value is false.
So for example { type: 'string', enum: ['a', 'b'], nullable: true } does not allow null as a value.
from openapi_first.
are you using 3.0 or 3.1? because in 3.1 you have new syntax (per migration guide https://www.openapis.org/blog/2021/02/16/migrating-from-openapi-3-0-to-3-1-0):
sign:
type: [string, "null"]
format: byte
nullable: true
description: data-URI of the employee signature
from openapi_first.
are you using 3.0 or 3.1? because in 3.1 you have new syntax (per migration guide https://www.openapis.org/blog/2021/02/16/migrating-from-openapi-3-0-to-3-1-0):
sign: type: [string, "null"] format: byte nullable: true description: data-URI of the employee signature
Still 3.0 and there it's just terrible. Going to remove the format and go with plain string then.
from openapi_first.
interestingly i previously used format: base64
which doesn't exist. Yet no validator complains and spectral lint
not even gives a warning.
I just learned recently that using nullable in OpenAPI 3.0 schemas does not disable other object constraints like "enum" or the like. From the spec:
[…] A true value adds "null" to the allowed type specified by the type keyword, only if type is explicitly defined within the same Schema Object. Other Schema Object constraints retain their defined behavior, and therefore may disallow the use of null as a value. A false value leaves the specified or default type unmodified. The default value is false.
So for example { type: 'string', enum: ['a', 'b'], nullable: true } does not allow null as a value.
I know about the enum restriction, which at least allows in 3.1 the means to add null to the enum though 3.0 does not.
Then if making up a format that doubles as being more descriptive goes around this. Then fine for now.
Got to work with the restricted stuff i can generate with rswag until i can replace that with something better.
from openapi_first.
Related Issues (20)
- Capture names affects finding definitions for nested routes HOT 4
- Is anybody using the standalong mode (OpenapiFirst.app) HOT 1
- Access operation level or top-level `security` object HOT 1
- Request header validation
- Cookie request parameter validation HOT 1
- Response header validation
- The purpose of hanami in this gem? HOT 10
- Manual request/response validation HOT 6
- v1.0.0.beta5 release not available via rubygems.org HOT 7
- Manual response validation breaking change in 1.0.0->1.1.0 upgrade HOT 2
- Spec has a binary field - openapi-first failing with exception trying to get the :tempfile HOT 13
- Don't read uploaded files to validate "binary" fields
- validation of string format uri wrongly fails with relative pathes HOT 5
- Parse error for kebab-case URL parameters HOT 4
- rails 6 - error when parsing non-array response body HOT 11
- Builtin middlewares trigger deprecation warnings. HOT 4
- Getting the full response with the ResponseInvalidError HOT 3
- Validate OpenAPI file
- Assertion methods
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from openapi_first.