Skip to content

feat(jsonapi): opt-in strict resource type check on write - #8739

Merged
soyuka merged 3 commits into
api-platform:mainfrom
soyuka:feat/jsonapi-strict-request-type-8703
Oct 19, 2026
Merged

soyuka merged 3 commits into
api-platform:mainfrom
soyuka:feat/jsonapi-strict-request-type-8703

Conversation

@soyuka

@soyuka soyuka commented Oct 19, 2026

Copy link
Copy Markdown
Member
Q A
Branch? main
Tickets Part of #8703
License MIT
Doc PR todo

Draft to see how this looks. Adds api_platform.jsonapi.strict_resource_type (Laravel: api-platform.jsonapi.strict_resource_type, also usable per operation through denormalizationContext), default false so nothing changes. When enabled:

  • a resource object without a string type is a 400
  • on POST, a type that is neither the operation shortName nor the type the serializer emits for the class is a 409 Conflict (https://jsonapi.org/format/#crud-creating-responses-409), using a new ApiPlatform\Metadata\Exception\ConflictException

Accepting the emitted type matters for classes declared as several resources, where the serializer always emits the first resource's shortName.

Includes the commit from #8736 (5.0), to rebase once it's merged up. A 6.0 default flip would go through a deprecation when the option is not set.

A request body that is not a JSON:API document, has no data object,
or has non-object attributes/relationships was accepted with 201 or
crashed in array_merge() with a 500. Return 400 instead. A missing
type is still accepted.

Refs api-platform#8703
Add `jsonapi.strict_resource_type` (default false). When enabled, a
request resource object without a string type is a 400, and on POST a
type that is neither the operation shortName nor the type the
serializer emits for the class is a 409 Conflict.

Refs api-platform#8703
@soyuka
soyuka marked this pull request as ready for review October 19, 2026 13:03
@soyuka
soyuka merged commit bcb592a into api-platform:main Oct 19, 2026
109 of 117 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant