Comments (5)
sounds good and fortunately I was actually able to do it for tuple typed arrays as well, which is all in the PR!
from prism.
Hi! I am working on this issue and I have a quick question. I have what I think is a working solution for non-tuple typed arrays (i.e., arrays where every elements conforms to a single schema, like:
objectsArray: {
type: 'array',
items: {
type: 'object',
required: ['id', 'name'],
properties: {
id: {
readOnly: true,
type: 'string'
},
name: {
type: 'string'
}
}
}
},
However, as I continue trying to implement the fix for tuple-typing, it has proven to be much more difficult (i.e. multiple schema corresponding to individual array items, like:
objectsArray: {
type: 'array',
items: [
{
type: 'object',
required: ['id1, 'name'],
properties: { id: { readOnly: true, type: 'string' }, name: { type: 'string' } }
},
{
type: 'object',
required: ['address', 'title'2],
properties: { address: { readOnly: true, type: 'string' }, title: { type: 'string' } }
}
]
},
@rattrayalex I can submit the solution for the non-tuple typed arrays in the next day or so -- would you like me to continue working on the tuple typed cases after this? Thanks!
(edit: happy to continue working on it, just want to make sure you can get at least a partial solution more quickly)
from prism.
Could also be an issue if Dog is a property of another object. Need to check this case as well.
from prism.
@chohmann tested with Dog as a property of another Object the bug looks not there !
see below spec
- /dogSingle + { "name" = "happy" } => no issue
- /dogInABox => no issue { "inside" : { "name" : "alsoHappy" } } => no issue
- /dogs => Bug + { "dogs" : [{"name" = "sad" }] =>bug report id as mandatory
if i send wrong payload such as a dog like this "nane" : "typo"
- both dogSingle and dogInABox return name is mandatory
- dogs return that name AND id is mandatory
openapi: 3.1.0
paths:
/dogs:
post:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Dogs'
responses:
'200':
description: nice Dog
/dogSingle:
post:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Dog'
responses:
'200':
description: nice Dog
/dogInABox:
post:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BoxDog'
responses:
'200':
description: nice Dog
components:
schemas:
Dogs:
type: object
properties:
dogs:
type: array
items:
$ref : "#/components/schemas/Dog"
Dog:
type: object
required:
- id
- name
properties:
id:
readOnly: true
type: string
name:
type: string
BoxDog:
type: object
required: inside
properties:
inside :
$ref : "#/components/schemas/Dog"
from prism.
Sure, a follow-on PR with the other fixes sounds like something we'd be happy to sponsor!
from prism.
Related Issues (20)
- Serving Multiple OpenAPI Documents - Without any/differing prefixes? HOT 1
- Spike: Slow dns lookups from api-design to hasura
- An invalid schema will cause the validation proxy to always pass HOT 1
- query parameter name with "[]" not work on prism proxy
- Same URLs with differently typed path variables does not route correctly HOT 2
- Prism misvalidate boolean query params HOT 1
- [NOT A BUG -> QUESTION] how to set fix path variables HOT 2
- Add dynamic mocking to proxy
- Unable to build binary on node.js 20 HOT 2
- Enable Multi arch Build in DockerHub HOT 1
- Prism Proxy Request Violation for Valid oneOf Schemas HOT 2
- Accept array parameters in request body regardless of name convention HOT 2
- Prism Proxy is not working as expected for binary content types image/jpeg and application/pdf HOT 3
- Refactor Pino Logger usage to allow any logger
- Proxy is not validating against the correct response schema when using accept header for versioning HOT 3
- Docker images fail on startup when api specification.yml is specified HOT 1
- Prism docker image vulnerabilities HOT 1
- AdditionalItems never returned in response HOT 2
- Prism proxy returns 401 when the actual response from the server is 403 HOT 3
- Facilitate fully dynamic response generation by default in "prism proxy" scenario HOT 2
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 prism.