Objects /objects

/objects base endpoint provides a set of methods dedicated to abstract objects management. objects is an abstract model for BEdita. Every object created through data modelling are instances of objects. You can use GET /objects when you want to retrieve data for objects whose types extend objects.

This endpoint provides:

  • get a list of objects (multiple types at the same time), using filters
  • retrieve data of a single object by unique identifier (allowed, but you can also use GET /{objectTypeName}/{objectId})
  • remove an object (allowed, but discouraged: use DELETE /{objectTypeName}/{objectId} instead)

To create, modify or delete data for objects whose types extend objects, you use dedicated endpoint /{objectTypeName}, created through modelling (for more details, see Model /model), ({objectTypeName} is a placeholder for a non-abstract object type):

  • POST /{objectTypeName}: create data
  • PATCH /{objectTypeName}/{objectId}: update data
  • DELETE /{objectTypeName}/{objectId}: move to trashcan
  • DELETE /trash/{objectId}: remove from trashcan

Note: in the following sections, {objectId} and (object_id) are sample placeholders for the unique identifier of the object, typically an integer number. Other placeholders used in this page are {objectTypeName}, {status}, {uname}, {title}, {createdDate}, {modifiedDate}, {createdBy}, {modifiedBy}, {status}, {revisionNumber} etc. In the examples, response data contains a reduced number of fields, for better readability.

Get a collection of objects

GET /objects

The /objects endpoint can be used to retrieve a collection of objects of different types. Available filters are Type filter, Field filter and Search Query filter.

Example request (get all objects):

GET /objects HTTP/1.1
Host: example.com
Accept: application/vnd.api+json

Example response:

HTTP/1.1 200 OK
Content-Type: application/vnd.api+json

{
    "data": [
        {
            "id": "{objectId1}",
            "type": "{objectTypeName1}",
            "attributes": {
                "status": "{status1}",
                "uname": "{uname1}",
                "title": "{title1}"
            },
            "meta": {
                "created": "{createdDate1}",
                "modified": "{modifiedDate1}",
                "created_by": "{createdBy1}",
                "modified_by": "{modifiedBy1}"
            },
            "links": {
                "self": "https://example.com/{objectTypeName1}/{objectId1}"
            },
            "relationships": {
                "{relationName1}": {
                    "links": {
                        "related": "https://example.com/{objectTypeName1}/{objectId1}/{relationName1}",
                        "self": "https://example.com/{objectTypeName1}/{objectId1}/relationships/{relationName1}"
                    }
                },
                "{relationName2}": {
                    "links": {
                        "related": "https://example.com/{objectTypeName1}/{objectId1}/{relationName2}",
                        "self": "https://example.com/{objectTypeName1}/{objectId1}/relationships/{relationName2}"
                    }
                },
            }
        },
        {
            "id": "{objectId2}",
            "type": "{objectTypeName2}",
            "attributes": {
                "status": "{status2}",
                "uname": "{uname2}",
                "title": "{title2}"
            },
            "meta": {
                "created": "{createdDate2}",
                "modified": "{modifiedDate2}",
                "created_by": "{createdBy2}",
                "modified_by": "{modifiedBy2}"
            },
            "links": {
                "self": "https://example.com/{objectTypeName2}/{objectId2}"
            },
            "relationships": {
                "{relationName1}": {
                    "links": {
                        "related": "https://example.com/{objectTypeName2}/{objectId2}/{relationName1}",
                        "self": "https://example.com/{objectTypeName2}/{objectId2}/relationships/{relationName1}"
                    }
                },
                "{relationName2}": {
                    "links": {
                        "related": "https://example.com/{objectTypeName2}/{objectId2}/{relationName2}",
                        "self": "https://example.com/{objectTypeName2}/{objectId2}/relationships/{relationName2}"
                    }
                },
            }
        },
    ],
    "links": {
        "self": "https://example.com/objects",
        "home": "https://example.com/home",
        "first": "https://example.com/objects",
        "last": "https://example.com/objects?page=1",
        "prev": null,
        "next": "https://example.com/objects?page=1"
    },
    "meta": {
        "pagination": {
            "count": 2,
            "page": 1,
            "page_count": 2,
            "page_items": 20,
            "page_size": 20
        },
        "schema": {
            "{objectTypeName1}": {
                "$id": "https://example.com/model/schema/{objectTypeName1}",
                "revision": "{revisionNumber1}"
            },
            "{objectTypeName2}": {
                "$id": "https://example.com/model/schema/{objectTypeName2}",
                "revision": "{revisionNumber2}"
            }
        }
    }
}

In the example above, api returns 2 objects ({objectId1} and {objectId2}), of different types ({objectTypeName1} and {objectTypeName2}). {relationName1} and {relationName2}} are the relationships defined in the example. For more details, see Response

Get single object

GET /objects/(object_id)

Get details for a single object by its unique identifier.

Example request (get a single object by id):

GET /objects/{objectId} HTTP/1.1
Host: example.com
Accept: application/vnd.api+json

Example response:

HTTP/1.1 200 OK
Content-Type: application/vnd.api+json

{
    "data": {
        "id": "{objectId}",
        "type": "{objectTypeName}",
        "attributes": {
            "status": "{status}",
            "uname": "this-is-a-test-object",
            "title": "this is a test object"
        },
        "meta": {
            "created": "{createdDate}",
            "modified": "{modifiedDate}",
            "created_by": "{createdBy}",
            "modified_by": "{modifiedBy}"
        },
        "relationships": {
            "parents": {
                "links": {
                    "related": "https://example.com/{objectTypeName}/{objectId}/parents",
                    "self": "https://example.com/{objectTypeName}/{objectId}/relationships/parents"
                }
            }
        }
    },
    "links": {
        "self": "https://example.com/objects/{objectId}",
        "home": "https://example.com/home"
    },
    "meta": {
        "schema": {
            "documents": {
                "$id": "https://example.com/model/schema/{objectTypeName}",
                "revision": "{revisionNumber}"
            }
        }
    }
}

Remove objects

DELETE /objects/(object_id)

You can move object to trashcan (soft delete) using DELETE /objects/{objectId}, with empty body. You can either do the same task using DELETE /{objectTypeName}/{objectId}, with empty body.

When delete succeeds, 204 No Content response is returned.

Example request (delete an object):

DELETE /objects/{objectId} HTTP/1.1
Host: example.com
Accept: application/vnd.api+json

Example response:

HTTP/1.1 204 No Content