Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Json Schema Bundle Laravel Package

bcastellano/json-schema-bundle

View on GitHub
Deep Wiki
Context7

Build Status Coverage Status SensioLabsInsight License

Json-Schema Bundle

Symfony bundle to validate json api requests and responses based on JSON Schema specification.

It auto validates Requests and Responses for an API with json-schema files that can be auto generated from json body.

JSON Schema is described in its specification as:

JSON Schema is a JSON media type for defining the structure of JSON data. JSON Schema provides a contract for what JSON data is required for a given application and how to interact with it. JSON Schema is intended to define validation, documentation, hyperlink navigation, and interaction control of JSON data.

Features

  • Json Schema service for validate jsons
  • Listener to auto validate request and responses
  • Json Schema file generation from json body (request and responses content)

Installation

Composer:

composer require bcastellano/json-schema-bundle

Load the bundle:

<?php
// app/AppKernel.php

use Bcastellano\JsonSchemaBundle\JsonSchemaBundle;

public function registerBundles()
{
    $bundles = array(
        // ...
        new JsonSchemaBundle(),
    );
}

Configuration

This is a complete example of configuration parameters:

json_schema:
    # Validator
    validator:
        # Class to use in validation. Is an enum
        class: Bcastellano\JsonSchemaBundle\Validator\JsonSchemaValidator
        # To auto register request and response events to auto validate jsons 
        use_listener: true
    
    # Locator
    locator:
        # Class to locate schema files
        class: Bcastellano\JsonSchemaBundle\Locator\ControllerSchemaFileLocator
        # Directory for json schema files (also to save new ones)
        resources_dir: '%kernel.root_dir%/Resources/Schemas'
    
    # Configuration for schema generator
    generator:
        enabled: false
        # NOTE: these two configurations are incompatible, you can't configure both
        # this use any external command to generate schema from json
        command: '/path/to/command {{source_file}} --output {{target_file}}'
        # this use any custom service to generate schema from json
        service: 'some.custom.service'

License

This bundle is under the MIT License

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
nexmo/api-specification
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony
develia/geo-bundle
dreamzy/livewire-charts
touchestate-sdk/php-sdk
ecotone/kafka
22h/doctrine-garbage-collection-bundle
agtp/agtp-php
agtp/mod-php
splash/sonata-admin
splash/metadata