Skip to main content

kt.jsonapi supports generation of JSON:API responses using adaptation from application objects.

Input validation for JSON:API is not currently provided, but is planned for the future.

The current implementation works with the Flask web framework.

Release history

1.7.0 (2022-09-14)

  1. Drop support for Python 3.6.

  2. Update to support Flask 2.2 and newer without deprecation warnings. The changes to use app.json or app.json_provider_class instead of app.json_encoder affect many applications that drive their own response generation.

1.6.1 (2022-05-12)

  1. Add missing long_description package metadata.

1.6.0 (2022-05-03)

  1. First public release of kt.jsonapi.

  2. Added support for Python 3.10, 3.11.

1.5.0 (2021-09-20)

  1. Bug fix: The context methods created() and resource() could serialize the primary data into included as well as data if a circular relationship including the primary data passed into the call was included.

  2. Fix tests inherited from the resource tests to actually invoked the created method when run as part of the tests for created.

  3. Add response method related() 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 the related resource link not change because of changes to the referenced resource.

  4. Allow a Flask application to provide specialized context implementations that can provide appropriate JSON:API Object values.

  5. Support serialization of a JSON:API Object with all responses.

  6. Avoid unintended chained exceptions in context() and error_context() high-level functions.

1.4.0 (2021-05-24)

  1. Support JSON:API 1.1 enhancements to the link & error objects.

  2. Support include and fields as appropriate for responses where the primary data is a relationship. This reflects an extension of the relationship interfaces with the name attribute, which remains optional; if not present, include and fields continue to generate an error.

  3. Include content from relationships which were identified in the include query parameter even if the relationships themselves were excluded by a fields[...] parameter.

  4. Update to modern PyPA tooling recommendations.

1.3.0 (2021-03-26)

  1. Serialization of errors via adaptation is supported using a new context method. This includes support for multiple error objects in a single response. This does not cause 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.

  2. Support relationships that cannot be included in composite documents using the include query string parameter. A request for inclusion of resources from a non-includable relationship will cause an exception indicating a 400 Bad Request response will be raised. Otherwise, the relationship will be serialized without a data element; only links and meta will be included, as appropriate.

1.2.1 (2021-01-12)

  1. Support pagination links of None for collections and to-many relationships.

  2. Treat an empty include query 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/1530

1.2.0 (2021-01-04)

  1. Manage query parameters for top-level self and pagination links. This can be a significant change for applications that deal with query parameters themselves. https://github.com/json-api/json-api/issues/1502

  2. Fix generation of links for a relationship to correctly deal with collection-oriented query parameters (filter, page, sort).

  3. Validate relationship paths passed to the include query parameter.

  4. Change constructor for Context object 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.

  5. Change constructor signature for Link object to accept a meta parameter 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)

  1. Added created() method on the context object, for use in returning a response containing a newly created resource. Similar to resource(), it returns a 201 status code and a serialization of the created resource.

1.0.1 (2020-09-18)

  1. Support explicit request to receive no fields by resource type. This reflects a recent clarification added to the JSON:API specification.

  2. Provide included in response if request includes an include query parameter, even if the value is an empty list. Improves conformance with JSON:API 1.1. https://github.com/json-api/json-api/issues/1230

  3. Adapt source object to IResource in relationship implementations.

1.0.0 (2020-07-09)

First release, internal to Keeper Technology, LLC.

Release files for kt.jsonapi 1.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kt.jsonapi 1.7.0
File Size Uploaded
kt.jsonapi-1.7.0.tar.gz 21.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for kt.jsonapi 1.7.0
File Interpreter ABI Platform
kt.jsonapi-1.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 44.7 kB

Release files / kt.jsonapi-1.7.0.tar.gz

Download URL kt.jsonapi-1.7.0.tar.gz
Size 21.7 kB
Tags Source
SHA-256 checksum
How to use checksums
718af192f3fc446c4936c0c649838b5c05f4da792e8b0e7cef2057493c3444f2
BLAKE2b-256 checksum
How to use checksums
7a741958cb7592580ffcce1a87fbd15c6fedb4b80a45c5d4abd58504001c91c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.4.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.14

Release files / kt.jsonapi-1.7.0-py3-none-any.whl

Download URL kt.jsonapi-1.7.0-py3-none-any.whl
Size 23.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
30c4d33823ef5d58d6c923c59702741411066140a26e9ad6a191ef598252e464
BLAKE2b-256 checksum
How to use checksums
b38dd99642f11112b8e4ac932198ad04af855d5ace54f86c0e4a2fa44f1225a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.4.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.14

Release history Release notifications | RSS feed

This release

1.7.0 This release

2 release files

1.6.1

2 release files

1.6.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page