2017 © Pedro Peláez
 

library json-api

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

image

nilportugues/json-api

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  • Thursday, July 19, 2018
  • by nilportugues
  • Repository
  • 8 Watchers
  • 63 Stars
  • 40,516 Installations
  • PHP
  • 4 Dependents
  • 0 Suggesters
  • 37 Forks
  • 11 Open issues
  • 78 Versions
  • 4 % Grown

The README.md

JSON API Transformer & Server Helpers

Build Status Scrutinizer Code Quality SensioLabsInsight Latest Stable Version Total Downloads License Donate, (*1)

Installation

Use Composer to install the package:, (*2)

$ composer require nilportugues/json-api

Transfomer Classes

Given a PHP Object, and a series of mappings, the JSON API Transformer will represent the given data following the http://jsonapi.org specification., (*3)

For instance, given the following piece of code, defining a Blog Post and some comments:, (*4)

$post = new Post(
  new PostId(9),
  'Hello World',
  'Your first post',
  new User(
      new UserId(1),
      'Post Author'
  ),
  [
      new Comment(
          new CommentId(1000),
          'Have no fear, sers, your king is safe.',
          new User(new UserId(2), 'Barristan Selmy'),
          [
              'created_at' => (new DateTime('2015/07/18 12:13:00'))->format('c'),
              'accepted_at' => (new DateTime('2015/07/19 00:00:00'))->format('c'),
          ]
      ),
  ]
);

And a Mapping series of classes implementing JsonApiMapping interface., (*5)

<?php
namespace AcmeProject\Infrastructure\Api\Mappings;

use NilPortugues\Api\Mappings\JsonApiMapping;

class PostMapping  implements JsonApiMapping
{
    /**
     * {@inhertidoc}
     */
    public function getClass() 
    {
        return \Post::class;
    }
    /**
     * {@inheritdoc}
     */
    public function getAlias()
    {
        return 'Message';
    }
    /**
     * {@inheritdoc}
     */
    public function getAliasedProperties() {
        return [
            'author' => 'author',
            'title' => 'headline',
            'content' => 'body',
        ];
    }
    /**
     * {@inheritdoc}
     */
    public function getHideProperties(){
        return [];
    }
    /**
     * {@inheritdoc}
     */
    public function getIdProperties() {
        return [ 
            'postId',
        ];
    }
    /**
     * {@inheritdoc}
     */
    public function getUrls()
    {
        return [
            'self' => 'http://example.com/posts/{postId}',
            'comments' => 'http://example.com/posts/{postId}/comments'
        ];
    }
    /**
     * {@inheritdoc}
     */
    public function getRelationships()
    {
        return [
            'author' => [ //this key must match with the property or alias of the same name in Post class.
                'related' => 'http://example.com/posts/{postId}/author',
                'self' => 'http://example.com/posts/{postId}/relationships/author',
            ]
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function getRequiredProperties()
    {
        return ['author', 'title', 'body'];
    }
}
<?php
namespace AcmeProject\Infrastructure\Api\Mappings;

use NilPortugues\Api\Mappings\JsonApiMapping;

class PostIdMapping implements JsonApiMapping
{
    /**
     * {@inhertidoc}
     */
    public function getClass() 
    {
        return \PostId::class;
    }
    /**
     * {@inheritdoc}
     */
    public function getAlias()
    {
        return '';
    }
    /**
     * {@inheritdoc}
     */
    public function getAliasedProperties() {
        return [],    
    }
    /**
     * {@inheritdoc}
     */    
    public function getHideProperties(){
        return [];
    }
    /**
     * {@inheritdoc}
     */
    public function getIdProperties()
        return [
            'postId',
        ];
    }
    /**
     * {@inheritdoc}
     */
    public function getUrls()
    {
        return [
            'self' => 'http://example.com/posts/{postId}',
        ];
    }
    /**
     * {@inheritdoc}
     */
    public function getRelationships()
    {
        return [
            'comment' => [ //this key must match with the property or alias of the same name in PostId class.
                'self' => 'http://example.com/posts/{postId}/relationships/comments',
                ],
            ],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function getRequiredProperties()
    {
        return [];
    }
}
<?php
namespace AcmeProject\Infrastructure\Api\Mappings;

use NilPortugues\Api\Mappings\JsonApiMapping;

class UserMapping implements JsonApiMapping
{
    /**
     * {@inhertidoc}
     */
    public function getClass() 
    {
        return \User::class;
    }
    /**
     * {@inheritdoc}
     */
    public function getAlias()
    {
        return '';
    }
    /**
     * {@inheritdoc}
     */
    public function getAliasedProperties() {
        return [];
    }
    /**
     * {@inheritdoc}
     */
    public function getHideProperties(){
        return [];
    }
    /**
     * {@inheritdoc}
     */
    public function getIdProperties()
        return [
            'userId',
        ];
    }
    /**
     * {@inheritdoc}
     */
    public function getUrls()
    {
        return [
            'self' => 'http://example.com/users/{userId}',
            'friends' => 'http://example.com/users/{userId}/friends',
            'comments' => 'http://example.com/users/{userId}/comments',
        ];
    }    

    /**
     * {@inheritdoc}
     */
    public function getRequiredProperties()
    {
        return [];
    }    
}
<?php
namespace AcmeProject\Infrastructure\Api\Mappings;

use NilPortugues\Api\Mappings\JsonApiMapping;

class UserIdMapping implements JsonApiMapping
{
    /**
     * {@inhertidoc}
     */
    public function getClass() 
    {
        return \UserId::class;
    }
    /**
     * {@inheritdoc}
     */
    public function getAlias()
    {
        return '';
    }
    /**
     * {@inheritdoc}
     */
    public function getAliasedProperties() {
        return [];
    }
    /**
     * {@inheritdoc}
     */
    public function getHideProperties(){
        return [];
    }
    /**
     * {@inheritdoc}
     */
    public function getIdProperties()
        return ['userId'];
    }
    /**
     * {@inheritdoc}
     */
    public function getUrls()
    {
        return [
            'self' => 'http://example.com/users/{userId}',
            'friends' => 'http://example.com/users/{userId}/friends',
            'comments' => 'http://example.com/users/{userId}/comments',
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function getRequiredProperties()
    {
        return [];
    }        
}
<?php
namespace AcmeProject\Infrastructure\Api\Mappings;

use NilPortugues\Api\Mappings\JsonApiMapping;

class CommentMapping implements JsonApiMapping
{
    /**
     * {@inhertidoc}
     */
    public function getClass() 
    {
        return \Comment::class;
    }
    /**
     * {@inheritdoc}
     */
    public function getAlias()
    {
        return '';
    }
    /**
     * {@inheritdoc}
     */
    public function getAliasedProperties() {
        return [];
    }
    /**
     * {@inheritdoc}
     */
    public function getHideProperties(){
        return [];
    }
    /**
     * {@inheritdoc}
     */
    public function getIdProperties()
        return [ 'commentId',];
    }
    /**
     * {@inheritdoc}
     */
    public function getUrls()
    {
        return [
            'self' => 'http://example.com/comments/{commentId}',
        ];
    }
    /**
     * {@inheritdoc}
     */
    public function getRelationships()
    {
        return [
            'post' => [ //this key must match with the property or alias of the same name in Comment class.
                'self' => 'http://example.com/posts/{postId}/relationships/comments',
            ]
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function getRequiredProperties()
    {
        return [];
    }        
}
<?php
namespace AcmeProject\Infrastructure\Api\Mappings;

use NilPortugues\Api\Mappings\JsonApiMapping;

class CommentId implements JsonApiMapping
{
    /**
     * {@inhertidoc}
     */
    public function getClass() 
    {
        return \CommentId::class;
    }
    /**
     * {@inheritdoc}
     */
    public function getAlias()
    {
        return '';
    }
    /**
     * {@inheritdoc}
     */
    public function getAliasedProperties() {
        return [];
    }
    /**
     * {@inheritdoc}
     */
    public function getHideProperties(){
        return [];
    }
    /**
     * {@inheritdoc}
     */
    public function getIdProperties() {
        return [ 'commentId', ];
    }
    /**
     * {@inheritdoc}
     */
    public function getUrls()
    {
        return [
            'self' => 'http://example.com/comments/{commentId}',
        ];
    }
    /**
     * {@inheritdoc}
     */
    public function getRelationships()
    {
        return [
            'post' => [ //this key must match with the property or alias of the same name in CommentId class.
                'self' => 'http://example.com/posts/{postId}/relationships/comments',
            ]
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function getRequiredProperties()
    {
        return [];
    }        
}

Calling the transformer will output a valid JSON API response using the correct formatting:, (*6)

<?php

use NilPortugues\Api\JsonApi\JsonApiSerializer;
use NilPortugues\Api\JsonApi\JsonApiTransformer;
use NilPortugues\Api\JsonApi\Http\Message\Response;
use NilPortugues\Api\Mapping\Mapper;

$mappings = [
    \AcmeProject\Infrastructure\Api\Mappings\PostMapping::class,
    \AcmeProject\Infrastructure\Api\Mappings\PostIdMapping::class,
    \AcmeProject\Infrastructure\Api\Mappings\UserMapping::class,
    \AcmeProject\Infrastructure\Api\Mappings\UserIdMapping::class,
    \AcmeProject\Infrastructure\Api\Mappings\CommentMapping::class,
    \AcmeProject\Infrastructure\Api\Mappings\CommentId::class,
];

$mapper = new Mapper($mappings);

$transformer = new JsonApiTransformer($mapper);
$serializer = new JsonApiSerializer($transformer);

echo $serializer->serialize($post);

Output (formatted):, (*7)

{
    "data": {
        "type": "message",
        "id": "9",
        "attributes": {
            "headline": "Hello World",
            "body": "Your first post"
        },
        "links": {
            "self": {
                "href": "http://example.com/posts/9"
            },
            "comments": {
                "href": "http://example.com/posts/9/comments"
            }
        },
        "relationships": {
            "author": {
                "links": {
                    "self": {
                        "href": "http://example.com/posts/9/relationships/author"
                    },
                    "related": {
                        "href": "http://example.com/posts/9/author"
                    }
                },
                "data": {
                    "type": "user",
                    "id": "1"
                }
            }
        }
    },
    "included": [
        {
            "type": "user",
            "id": "1",
            "attributes": {
                "name": "Post Author"
            },
            "links": {
                "self": {
                    "href": "http://example.com/users/1"
                },
                "friends": {
                    "href": "http://example.com/users/1/friends"
                },
                "comments": {
                    "href": "http://example.com/users/1/comments"
                }
            }
        },
        {
            "type": "user",
            "id": "2",
            "attributes": {
                "name": "Barristan Selmy"
            },
            "links": {
                "self": {
                    "href": "http://example.com/users/2"
                },
                "friends": {
                    "href": "http://example.com/users/2/friends"
                },
                "comments": {
                    "href": "http://example.com/users/2/comments"
                }
            }
        },
        {
            "type": "comment",
            "id": "1000",
            "attributes": {
                "dates": {
                    "created_at": "2015-08-13T21:11:07+02:00",
                    "accepted_at": "2015-08-13T21:46:07+02:00"
                },
                "comment": "Have no fear, sers, your king is safe."
            },
            "relationships": {
                "user": {
                    "data": {
                        "type": "user",
                        "id": "2"
                    }
                }
            },
            "links": {
                "self": {
                    "href": "http://example.com/comments/1000"
                }
            }
        }
    ],
    "jsonapi": {
        "version": "1.0"
    }
}

Server Classes

JSON API Request object

JSON API comes with its Request class, framework agnostic, implementing the PSR-7 Request Interface., (*8)

Using this request object will provide you access to all the interactions expected in a JSON API:, (*9)

Defined Query Parameters:

  • &fields[resource]=field1,field2 will only show the specified fields for a given resource.
  • &include=resource show the relationship for a given resource.
  • &include=resource.resource2 show the relationship field for those depending on resource2.
  • &sort=field1,-field2 sort by field2 as DESC and field1 as ASC.
  • &sort=-field1,field2 sort by field1 as DESC and field2 as ASC.
  • &page[number] will return the current page elements in a page-based pagination strategy.
  • &page[size] will return the total amout of elements in a page-based pagination strategy.
  • &page[limit] will return the limit in a offset-based pagination strategy.
  • &page[offset] will return the offset value in a offset-based pagination strategy.
  • &page[cursor] will return the cursor value in a cursor-based pagination strategy.
  • &filter will return data passed in the filter param.

Request Object

Given the query parameters listed above, Request implements helper methods that parse and return data already prepared., (*10)

namespace \NilPortugues\Api\JsonApi\Http\Request;

class Request
{
  public function __construct(ServerRequestInterface $request = null) { ... }
  public function getIncludedRelationships() { ... }
  public function getSort() { ... }
  public function getPage() { ... }
  public function getFilters() { ... }
  public function getFields() { ... }
}

JSON API Response objects

Because the JSON API specification lists a set of behaviours, specific Response objects are provided for successful and error cases., (*11)

Success, (*12)

  • NilPortugues\Api\JsonApi\Http\Response\Response
  • NilPortugues\Api\JsonApi\Http\Response\ResourceUpdated
  • NilPortugues\Api\JsonApi\Http\Response\ResourceAccepted
  • NilPortugues\Api\JsonApi\Http\Response\ResourceCreated
  • NilPortugues\Api\JsonApi\Http\Response\ResourceDeleted
  • NilPortugues\Api\JsonApi\Http\Response\ResourceProcessing

Error, (*13)

  • NilPortugues\Api\JsonApi\Http\Response\BadRequest
  • NilPortugues\Api\JsonApi\Http\Response\ResourceConflicted
  • NilPortugues\Api\JsonApi\Http\Response\ResourceNotFound
  • NilPortugues\Api\JsonApi\Http\Response\TooManyRequests
  • NilPortugues\Api\JsonApi\Http\Response\UnprocessableEntity
  • NilPortugues\Api\JsonApi\Http\Response\UnsupportedAction

Forbidden Access, (*14)

It is also possible to fire a Forbidden response by throwing the following Exception in your code:, (*15)

  • NilPortugues\Api\JsonApi\Server\Actions\Exceptions\ForbiddenException

Access control logic is not provided., (*16)

Action Objects

Having Request and Response objects and Transformers, it just makes sense to have a set of classes that tie them all together into something more powerful: Actions., (*17)

Provided actions are:, (*18)

  • NilPortugues\Api\JsonApi\Server\Actions\CreateResource
  • NilPortugues\Api\JsonApi\Server\Actions\DeleteResource
  • NilPortugues\Api\JsonApi\Server\Actions\GetResource
  • NilPortugues\Api\JsonApi\Server\Actions\ListResource
  • NilPortugues\Api\JsonApi\Server\Actions\PatchResource
  • NilPortugues\Api\JsonApi\Server\Actions\PutResource

All actions share a get method to run the Resource., (*19)

These get methods will expect in all cases one or more callables. This has been done to avoid coupling with any library or interface and being able to extend it., (*20)


Quality

To run the PHPUnit tests at the command line, go to the tests directory and issue phpunit., (*21)

This library attempts to comply with PSR-1, PSR-2, PSR-4 and PSR-7., (*22)

If you notice compliance oversights, please send a patch via Pull Request., (*23)

Contribute

Contributions to the package are always welcome!, (*24)

Support

Get in touch with me using one of the following means:, (*25)

Authors

License

The code base is licensed under the MIT license., (*26)

The Versions

19/07 2018

dev-master

9999999-dev http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

19/07 2018

2.7.1

2.7.1.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

25/10 2017

2.7.0

2.7.0.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

03/05 2017

2.6.0

2.6.0.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

06/04 2017

2.5.4

2.5.4.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

06/04 2017

2.5.3

2.5.3.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

04/04 2017

2.5.2

2.5.2.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

04/04 2017

2.5.1

2.5.1.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

13/03 2017

2.5.0

2.5.0.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

02/09 2016

2.4.4

2.4.4.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

12/08 2016

dev-getRequiredFields

dev-getRequiredFields http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

20/07 2016

2.4.3

2.4.3.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

18/07 2016

2.4.2

2.4.2.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

12/07 2016

2.4.1

2.4.1.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

11/07 2016

2.4.0

2.4.0.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

04/07 2016

2.3.1

2.3.1.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

01/07 2016

2.3.0

2.3.0.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

29/06 2016

2.2.3

2.2.3.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

23/06 2016

2.2.2

2.2.2.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

22/06 2016

2.2.1

2.2.1.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

22/06 2016

2.2.0

2.2.0.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

02/06 2016

2.1.14

2.1.14.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

11/05 2016

2.1.13

2.1.13.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

09/05 2016

2.1.12

2.1.12.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

09/05 2016

2.1.11

2.1.11.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

26/04 2016

2.1.10

2.1.10.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

26/04 2016

2.1.9

2.1.9.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

18/04 2016

2.1.8

2.1.8.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

21/03 2016

2.1.7

2.1.7.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

13/02 2016

dev-repository

dev-repository http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

01/02 2016

2.1.6

2.1.6.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

19/01 2016

2.1.5

2.1.5.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

19/01 2016

3.0.x-dev

3.0.9999999.9999999-dev http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

18/01 2016

2.1.4

2.1.4.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

13/01 2016

2.1.3

2.1.3.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

17/12 2015

2.1.2

2.1.2.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

17/12 2015

2.1.0.x-dev

2.1.0.9999999-dev http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

16/12 2015

2.1.1

2.1.1.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

16/12 2015

2.1.0

2.1.0.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

16/12 2015

2.0.x-dev

2.0.9999999.9999999-dev http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

14/12 2015

2.0.1

2.0.1.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

08/12 2015

2.0.0

2.0.0.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

08/12 2015

2.0.0-rc3

2.0.0.0-RC3 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

07/12 2015

2.0.0-rc2

2.0.0.0-RC2 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

06/12 2015

2.0.0-rc1

2.0.0.0-RC1 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

27/11 2015

1.0.x-dev

1.0.9999999.9999999-dev http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

27/11 2015

1.0.31

1.0.31.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

24/11 2015

1.0.29

1.0.29.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

24/11 2015

1.0.30

1.0.30.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

22/11 2015

1.0.28

1.0.28.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

22/11 2015

1.0.27

1.0.27.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

20/11 2015

1.0.26

1.0.26.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

19/11 2015

1.0.25

1.0.25.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

19/11 2015

1.0.24

1.0.24.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

17/11 2015

1.0.22

1.0.22.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

17/11 2015

1.0.23

1.0.23.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

14/11 2015

1.0.21

1.0.21.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

14/11 2015

1.0.20

1.0.20.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

14/11 2015

1.0.19

1.0.19.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

02/11 2015

1.0.18

1.0.18.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

23/10 2015

1.0.17

1.0.17.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

22/10 2015

1.0.16

1.0.16.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

20/10 2015

1.0.15

1.0.15.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

16/10 2015

1.0.14

1.0.14.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

13/10 2015

1.0.13

1.0.13.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

10/10 2015

1.0.12

1.0.12.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

10/10 2015

1.0.11

1.0.11.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

09/10 2015

1.0.10

1.0.10.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

29/08 2015

1.0.9

1.0.9.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

28/08 2015

1.0.8

1.0.8.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

28/08 2015

1.0.7

1.0.7.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

28/08 2015

1.0.6

1.0.6.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

27/08 2015

1.0.5

1.0.5.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

18/08 2015

1.0.4

1.0.4.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

16/08 2015

1.0.3

1.0.3.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

16/08 2015

1.0.2

1.0.2.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

15/08 2015

1.0.1

1.0.1.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer

15/08 2015

1.0.0

1.0.0.0 http://nilportugues.com

Serializer transformers outputting valid API responses in JSON, JSON API and HAL+JSON API formats.

  Sources   Download

MIT

The Requires

 

The Development Requires

api json serializer psr7 response jsonapi transformer