JSON:API: resource schemas (`*.jsonapi`) have `properties` but no `type: object`
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- Meno di un'ora
- Idoneità per principianti
- 80/100
Direzione di ricerca
Il problema è indicato nell'issue: JsonApi\JsonSchema\SchemaFactory::buildSchema(), dove alle definizioni degli item viene assegnato il loro properties. Leggi quel metodo, poi aggiungi type con valore object accanto a quell'assegnazione, ma solo per gli schemi degli item. È completato quando la specifica esportata con bin/console api:openapi:export mostra "type": "object" su Book.jsonapi, Order.jsonapi, Order.OrderInput.jsonapi e OrderLine.jsonapi, e i test esistenti sugli schemi JSON:API continuano a passare.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
API Platform version(s) affected
4.4.4
Description
The JSON:API resource document schemas, such as Book.jsonapi and the input schemas like Order.OrderInput.jsonapi, have only a properties key at the top level. They have no type: object.
A schema without type also accepts a string, number, array or null, because properties applies only to objects. Validators and fuzzers that generate requests from the spec (for example Schemathesis) then send bodies like "foo" or 42, which the API never accepts. The nested data objects already declare "type": "object". Only the top level is missing it.
How to reproduce
Any resource with the jsonapi format shows it, for example the Book resource from #8699. Generated schema:
"Book.jsonapi": {
"properties": {
"data": { "type": "object", "properties": { "...": "..." } }
}
}
In a minimal app with the resources from #8698 and #8699, these four schemas have no type: Book.jsonapi, Order.jsonapi, Order.OrderInput.jsonapi, OrderLine.jsonapi.
Expected: every *.jsonapi document schema declares "type": "object".
Possible Solution
In JsonApi\JsonSchema\SchemaFactory::buildSchema(), set $definitions[$definitionName]['type'] = 'object' next to the properties assignment for item schemas.
Additional Context
Checked on api-platform/core v4.4.4, Symfony 7.4, PHP 8.5, in an empty Symfony app. The code of JsonApi\JsonSchema\SchemaFactory on main is the same as in v4.4.4.
The app has only FrameworkBundle, TwigBundle and ApiPlatformBundle, with this config:
$c->extension('api_platform', [
'mapping' => ['paths' => ['%kernel.project_dir%/src/ApiResource']],
'formats' => ['jsonapi' => ['application/vnd.api+json']],
'docs_formats' => ['jsonopenapi' => ['application/vnd.openapi+json']],
'doctrine' => ['enabled' => false],
]);
The spec comes from bin/console api:openapi:export.
- Lingua principale
- PHP
- Stelle
- 2.6k
- Fork
- 989
- Merge medio
- 1g 23h
- PR unite (30g)
- 102
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di api-platform/core
-
JSON:API: `JsonApiCollectionBaseSchemaNoPagination` declares `data` as `type: array` without `items`Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
api-platform/core#8699 ·
I maintainer di solito rispondono entro 1 giorno
-
api:openapi:export --spec-version=3.0.0 outputs `webhooks`, which is invalid in OpenAPI 3.0Forse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
api-platform/core#8690 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
api-platform/core#8680 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
api-platform/core#8725 ·
I maintainer di solito rispondono entro 1 giorno
-
[Json-Schema] Nested resources lost externalDoc and description dataForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
api-platform/core#8721 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di api-platform/core
Issue simili
-
InvoiceSettled is answered 200 when the invoice cannot be re-fetched, so BTCPay never redelivers itAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
btcpayserver/woocommerce-greenfield-plugin#93 ·
I maintainer di solito rispondono entro 1 giorno
-
kind/bug status/triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
🐛 [Bug] Bulk CSV import stores hide_from_combined_view=FALSE as a string, which hides every account from Sent, Junk, Trash and DraftsForse già presa @exSnake l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
opnsense/core#11052 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100