Skip to content

Releases: tobyzerner/json-api-server

v1.0.0-beta.3

08 Dec 23:23
d56f32e
Compare
Choose a tag to compare
v1.0.0-beta.3 Pre-release
Pre-release

⚠️ Breaking Changes

  • Drop Interface suffix from various interfaces:
    • Resource class renamed to AbstractResource
    • ResourceInterface renamed to Resource
    • CollectionInterface renamed to Collection
    • ErrorProviderInterface renamed to ErrorProvider
    • PaginationInterface renamed to Pagination
    • EndpointInterface renamed to Endpoint
    • TypeInterface renamed to Type

Fixed

  • Call user-defined serializer before type serializer (#91)
  • Fix finding resource when creating polymorphic relationship (#93)
  • Prevent relationship value from being retrieved if it won't be used (not included and no linkage)

v1.0.0-beta.2

02 Dec 08:06
a7396ff
Compare
Choose a tag to compare
v1.0.0-beta.2 Pre-release
Pre-release

⚠️ Breaking Changes

  • Types are now their own construct instead of being subclasses of Attribute. See the Attributes documentation for more information.
  • Removed support for defining polymorphic relationships by passing a map of model classes to resource types. You should use heterogeneous collections instead. See the Relationships documentation for more information.

Added

Fixed

  • When creating a resource, set the context model prior to field validation
  • Fix error when updating a resource with a conflicting ID (#85)
  • Laravel: Fix Has filter not working without a scope
  • Laravel: Don't apply relationship loading constraints if there aren't any

v1.0.0-beta.1

24 Sep 07:20
a1be357
Compare
Choose a tag to compare
v1.0.0-beta.1 Pre-release
Pre-release

Added

Fixed

  • Fix Number properties not being initialized
  • Fix validators not being run for null values
  • Fix DateTime values containing milliseconds not being accepted
  • Fix nested filters not receiving correct resource in context
  • Laravel: Fix EloquentResource sometimes using incorrect relation name when setting value
  • Laravel: Convert DateTime values to Laravel app's storage timezone
  • Laravel: Validate that WhereBelongsTo filter input is a list

v1.0.0-alpha.2

19 Aug 12:43
d9f9b9b
Compare
Choose a tag to compare
v1.0.0-alpha.2 Pre-release
Pre-release

Added

  • Finish Laravel integration
  • Add basic field schema configuration in preparation for OpenAPI generation
  • Add Context::$query to access the query used in the Index endpoint
  • Add Context::fieldRequested() and Context::sortRequested() methods
  • Add BooleanDateTime attribute for exposing internal date-time values as booleans
  • Improve error sources in Bad Request errors
  • Add a performance benchmark

Changed

  • Add void return type to Filter::apply() signature

Fixed

  • Fix typed attribute values being deserialized and always passing validation
  • Fix visibility callback result not being cast to a boolean
  • Fix Integer incorrectly not extending Number
  • Fix empty to-many relationships not being present in the response at all
  • Fix TypeError when removing non-nullable to-one relationship
    (#74)

v1.0.0-alpha.1

21 Jun 07:43
7524a2c
Compare
Choose a tag to compare
v1.0.0-alpha.1 Pre-release
Pre-release

Read the new docs

  • New class-based API. More ergonomic for managing large resource definitions and
    inheriting/overriding behavior. Complex fields can be extracted into their own classes and
    reused across resources.

  • Typed attributes. Implementations of typed attributes are provided to match the data types
    in the OpenAPI specification. Attributes can be marked as required and nullable.

  • Customizable endpoints. Each endpoint is now opt-in for each resource and can be configured
    and implemented separately. Also adds the ability for custom endpoints to be added.

  • Restructured internals. The codebase is cleaner and easier to reason about, especially the
    serialization process.

Still to come:

  • Implementation of Laravel stuff (currently it is documented but not implemented)
  • Ability to generate OpenAPI definitions
  • Additional attribute types (array, object)
  • Benchmarks (it should probably be a bit faster)

v0.2.0-beta.2

01 Sep 08:32
Compare
Choose a tag to compare
v0.2.0-beta.2 Pre-release
Pre-release

Added

  • Content-Type validation and Accept negotation
  • Include jsonapi object with version member in response
  • Validate implementation-specific query parameters according to specification
  • Added Location header to 201 Created responses
  • Improved error repsonses when creating and updating resources
  • Context::filter() method to get the value of a filter
  • ResourceType::applyScope(), applyFilter() and applySort() methods
  • ResourceType::url() method to get the URL for a model
  • Forbidden error details for CRUD actions, useful when running Atomic Operations
  • JsonApi::getExtensions() method to get all registered extensions
  • ConflictException class

Changed

  • Renamed $linkage parameter in AdapterInterface methods to $linkageOnly
  • Renamed Type::newModel() to model() to be consistent with Adapter

Fixed

  • Properly respond with meta information added to Context instance

v0.2.0-beta.1

27 Aug 00:01
Compare
Choose a tag to compare
v0.2.0-beta.1 Pre-release
Pre-release

Added

  • Preliminary support for Extensions
  • Support filtering by nested relationships/attributes (eg. filter[relationship.attribute]=value)
  • Add new methods to Context object: getApi, getPath, fieldRequested, meta
  • Eloquent adapter: apply scopes when including polymorphic relationships
  • Laravel validation helper: support nested validation messages
  • Allow configuration of sort and filter visibility
  • Add new setId method to AdapterInterface

Changed

  • Change paradigm for eager loading relationships; allow fields to return Deferred values to be evaluated after all other fields, so that resource loading can be buffered.
  • Remove on prefix from field event methods

Removed

  • Removed load and dontLoad field methods

Fixed

  • Fix pagination next link appearing when it shouldn't

v0.1.0-beta.1

17 Jan 07:07
71d5114
Compare
Choose a tag to compare
v0.1.0-beta.1 Pre-release
Pre-release
Run on ubuntu-18.04 to preserve PHP 7.3