Skip to main content

JSON:API implementation with pydantic.

Project description

jsonapi-pydantic

JSON:API implementation with Pydantic.

PyPI License

Description

jsonapi-pydantic provides a suite of Pydantic models matching the JSON:API specification.

Install

$ pip install jsonapi-pydantic

Or use your python package manager.

Usage

Object with primary data:

from jsonapi_pydantic.v1_0 import TopLevel

external_data = {
    "data": [
        {
            "type": "articles",
            "id": "1",
            "attributes": {
                "title": "JSON:API paints my bikeshed!",
                "body": "The shortest article. Ever.",
                "created": "2015-05-22T14:56:29.000Z",
                "updated": "2015-05-22T14:56:28.000Z",
            },
            "relationships": {"author": {"data": {"id": "42", "type": "people"}}},
        }
    ],
    "included": [
        {"type": "people", "id": "42", "attributes": {"name": "John", "age": 80, "gender": "male"}}
    ],
}

top_level = TopLevel(**external_data)

print(top_level.model_dump(exclude_unset=True))
"""
{
    "data": [
        {
            "type": "articles",
            "id": "1",
            "attributes": {
                "title": "JSON:API paints my bikeshed!",
                "body": "The shortest article. Ever.",
                "created": "2015-05-22T14:56:29.000Z",
                "updated": "2015-05-22T14:56:28.000Z",
            },
            "relationships": {"author": {"data": {"id": "42", "type": "people"}}},
        }
    ],
    "included": [
        {"type": "people", "id": "42", "attributes": {"name": "John", "age": 80, "gender": "male"}}
    ],
}
"""
print(top_level.data)
"""
[
    Resource(
        type="articles",
        id="1",
        attributes={
            "title": "JSON:API paints my bikeshed!",
            "body": "The shortest article. Ever.",
            "created": "2015-05-22T14:56:29.000Z",
            "updated": "2015-05-22T14:56:28.000Z",
        },
        relationships={
            "author": Relationship(
                links=None, data=ResourceIdentifier(id="42", type="people", meta=None), meta=None
            )
        },
        links=None,
        meta=None,
    )
]
"""

Examples

More examples can be found here.

License

See license.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jsonapi_pydantic-0.2.5.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

jsonapi_pydantic-0.2.5-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file jsonapi_pydantic-0.2.5.tar.gz.

File metadata

  • Download URL: jsonapi_pydantic-0.2.5.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.3 Linux/6.6.32_1

File hashes

Hashes for jsonapi_pydantic-0.2.5.tar.gz
Algorithm Hash digest
SHA256 54310cabd3f65fa6bcfaaa003d173ed71aed2022e863922c66b57d93b751f4c4
MD5 d23d926fd5b99723927b0f766ccd2696
BLAKE2b-256 71c85ac5af58a7b181c701cdbed9bca5d8845ea6e72e6dad0d3a74b422071a78

See more details on using hashes here.

File details

Details for the file jsonapi_pydantic-0.2.5-py3-none-any.whl.

File metadata

File hashes

Hashes for jsonapi_pydantic-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 15100aa616b190edbb6d1a7dca2437d6023d45887c34f3f08ff40b6d0b092cea
MD5 34256df01ffa999096965f53fa0eef65
BLAKE2b-256 4da9e894b27f7d07bf01518f1282060f860a90b6801d922f62cb0a053fb20656

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page