TIL: OpenAPI — nullable property in deepObject
If you want to have optional parameters in a schema with the deepObject style, you probably run into problems — at least with the league/openapi-psr7-validator. The easy fix or workaround for this, is to add nullable: true to the parent schema.
deepObject notation.If you want to have optional parameters in a schema with the deepObject style, you probably run into problems — at least with the league/openapi-psr7-validator.
If your deepObject looks like this:
schema: new Schema(ref: ListFilter::class),
style: 'deepObject'But some properties of ListFilter are nullable…
#[OA\Property(nullable: true)]
?string $excludeMediaIds = ''Then, this will result in an error:
League\\OpenAPIValidation\\PSR7\\Validators\\SerializedParameter::castToSchemaType():
Argument #2 ($type) must be of type ?string, array given,
called in /var/www/html/vendor/league/openapi-psr7-validator/src/PSR7/Validators/SerializedParameter.php on line 290The easy fix or workaround for this, is to add nullable: true to the parent schema:
schema: new Schema(ref: ListFilter::class, nullable: true),
style: 'deepObject'… happy validating 🛡️
Comments ()