Package: kt.jsonapi
kt.jsonapisupports generation ofJSON:APIresponses using
adaptation from application objects.Input validation forJSON:APIis not currently provided, but is
planned for the future.The current implementation works with theFlaskweb framework.Release history1.7.0 (2022-09-14)Drop support for Python 3.6.Update to support Flask 2.2 and newer without deprecation warnings.
The changes to useapp.jsonorapp.json_provider_classinstead ofapp.json_encoderaffect many applications that drive
their own response generation.1.6.1 (2022-05-12)Add missinglong_descriptionpackage metadata.1.6.0 (2022-05-03)First public release ofkt.jsonapi.Added support for Python 3.10, 3.11.1.5.0 (2021-09-20)Bug fix: The context methodscreated()andresource()could
serialize the primary data intoincludedas well asdataif a
circular relationship including the primary data passed into the call
was included.Fix tests inherited from theresourcetests to actually invoked
thecreatedmethod when run as part of the tests forcreated.Add response methodrelated()to generate a serialized response
for the target of a relationship.  This is useful with regard to
mutable to-one relationships because of the constraint that therelatedresource link not change because of changes to the
referenced resource.Allow a Flask application to provide specialized context
implementations that can provide appropriateJSON:API Objectvalues.Support serialization of aJSON:API Objectwith all responses.Avoid unintended chained exceptions incontext()anderror_context()high-level functions.1.4.0 (2021-05-24)Support JSON:API 1.1 enhancements to the link & error objects.Supportincludeandfieldsas appropriate for responses where
the primary data is a relationship.  This reflects an extension of
the relationship interfaces with thenameattribute, which
remains optional; if not present,includeandfieldscontinue
to generate an error.Include content from relationships which were identified in theincludequery parameter even if the relationships themselves were
excluded by afields[...]parameter.Update to modern PyPA tooling recommendations.1.3.0 (2021-03-26)Serialization of errors via adaptation is supported using a new
context method.  This includes support for multiple error objects in
a single response.  This doesnotcause JSON:API errors to be
returned automatically from response methods on the context, since
switching from a planned response to an error response should invoke
content negotiation; this is left to integration layers.Support relationships that cannot be included in composite documents
using theincludequery string parameter.  A request for
inclusion of resources from a non-includable relationship will cause
an exception indicating a400 Bad Requestresponse will be
raised.  Otherwise, the relationship will be serialized without adataelement; onlylinksandmetawill be included, as
appropriate.1.2.1 (2021-01-12)Support pagination links ofNonefor collections and to-many
relationships.Treat an emptyincludequery parameter as an empty list of
relationship paths.  This was previously silently treated as an empty
relationship path, though invalid.https://github.com/json-api/json-api/issues/15301.2.0 (2021-01-04)Manage query parameters for top-levelselfand pagination links.
This can be a significant change for applications that deal with
query parameters themselves.https://github.com/json-api/json-api/issues/1502Fix generation of links for a relationship to correctly deal with
collection-oriented query parameters (filter,page,sort).Validate relationship paths passed to theincludequery parameter.Change constructor forContextobject to accept both the Flask
application and request objects, and update call sites to de-proxy
those before passing them in.  This (slightly) improves the
resilience of the constructed context to be less dependent on the
source thread.Change constructor signature forLinkobject to accept ametaparameter instead of assembling keyword parameters into the
dictionary for arbitrary metadata.  This will allow additional future
flexibility for parameters with more specific interpretation.1.1.0 (2020-10-27)Addedcreated()method on the context object, for use in
returning a response containing a newly created resource.  Similar toresource(), it returns a 201 status code and a serialization of
the created resource.1.0.1 (2020-09-18)Support explicit request to receive no fields by resource type.  This
reflects a recent clarification added to the JSON:API specification.Provideincludedin response if request includes anincludequery parameter, even if the value is an empty list.  Improves
conformance with JSON:API 1.1.
https://github.com/json-api/json-api/issues/1230Adapt source object to IResource in relationship implementations.1.0.0 (2020-07-09)First release, internal to Keeper Technology, LLC.