Bug 16699: Support multiple types in primitive definitions
authorLari Taskula <larit@student.uef.fi>
Tue, 14 Jun 2016 09:53:58 +0000 (12:53 +0300)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 26 Aug 2016 12:08:51 +0000 (12:08 +0000)
commit55a8389bb3ad28151b0eaeaa3d0d2ff32ad09c24
tree7167a7a16b1af1007dd20a9bb66927296ecb1661
parent2aa333fb5fefe3f5fb2eca7bdb435b12cb6ab4cc
Bug 16699: Support multiple types in primitive definitions

Currently it is not possible to define multiple types for primitive definitions
in /definitions/*. If you try to use the following
"firstname": {
  "type": ["string", "null"],
  "description": "patron's first name"
}
in definitions.json, online.swagger.io validator will not validate it:
{"messages":["attribute definitions.firstname.type is not of type `string`"]}

One way to get around this issue is to extend definitions with custom
"x-primitives" object, where we will define all reusable primitive definitions.

To test:
1. Add the "firstname" example above to definitions.json
2. Run minifySwagger.pl
3. Validate your specification
4. Observe that error with description mentioned above is given
5. Apply patch
6. Repeat step 2 and 3
7. Observe that validation passes

Signed-off-by: Olli-Antti Kivilahti <olli-antti.kivilahti@jns.fi>
My name is Olli-Antti Kivilahti and I approve this commit.
We have been using the Swagger2.0-driven REST API on Mojolicious for 1 year now
in production and I am certain we have a pretty good idea on how to work with
the limitations of Swagger2.0
We participated in the development of the Mojolicious::Plugin::Swagger and know
it well. We have made an extension to the plugin to provide full CORS support
and have been building all our in-house features on the new REST API.

Signed-off-by: Johanna Raisa <johanna.raisa@gmail.com>
My name is Johanna Räisä and I approve this commit.
We have been using Swagger2.0-driven REST API in production successfully.

Signed-off-by: Benjamin Rokseth <benjamin.rokseth@kul.oslo.kommune.no>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
api/v1/swagger.json
api/v1/x-primitives.json [new file with mode: 0644]