Skip to content

Latest commit

 

History

History
84 lines (71 loc) · 1.83 KB

json_format.md

File metadata and controls

84 lines (71 loc) · 1.83 KB

Default JSON Response Structure

The JSON response from an API is expected to be a JSON document containing either a single object, or a JSON document that contains a data element that is an array of objects.

For example a single object could be:

{
    "id": "52530121-cc5c-4f56-9c39-734db94c0607",
    "name": "bob"
}

Or a collection or objects:

{
    "data": [
        {
            "id": "52530121-cc5c-4f56-9c39-734db94c0607",
            "name": "bob"
        },
        {
            "id": "05dbf6d3-2042-4363-bfb8-00153417e812",
            "name": "foo"
        }
    ]
}

For nested related data; it is expected to be keyed on a property name without any other element names:

{
    "id": "52530121-cc5c-4f56-9c39-734db94c0607",
    "name": "bob",
    "groups": [
        {
            "id": "31ea5893-809a-4512-b44d-43cad1da35cf",
            "name": "user"
        }
    ]
}

Note: collections must be arrays of objects. Collections defined as objects will not be correctly decoded by default. A custom response decoder will be required in those instances.

Paginated Response Format

A paginated result set is expected to have the following structure:

{
    "data": [
        {
            "id": "52530121-cc5c-4f56-9c39-734db94c0607",
            "name": "bob"
        },
        {
            "id": "05dbf6d3-2042-4363-bfb8-00153417e812",
            "name": "foo"
        }
    ],
    "meta": {
        "pagination": {
            "total": 200,
            "count": 30,
            "per_page": 30,
            "current_page": 1,
            "total_pages": 7,
            "links": {
                "next": "http:\\/\\/api.example.dev\\/v1\\/users?page=2"
            }
        }
    }
}

This behaviour can be changed by overriding the ModelBuilder and re-implementing the logic in fetch().