# Key Concepts

Understand the following key concepts from which to better understand what the [entity object](#entity-object) is prior to preparing your REST API requests:

* [Entity type](#entity-type)
* [Entity](#entity)
* [Attributes](#attributes)

### Entity Type

An entity type describes a class of objects and their attributes. For example: a **Person** can be an entity type.

### Entity

An entity is an instance of an entity type / a single object. For example: **John Doe** is an instance of Person.

### Attributes

Attributes are characteristics that pertain to an entity type. An attribute represents a small piece of information about an entity. For example, the Person entity type could have an attribute called **date of birth**.

## Entity Object

The ProcessMaker REST API represents an entity object as the following endpoints based on these [key concepts](#key-concepts):

* [Type](#type)
* [Attributes](#attributes-1)
* [Relations](#relations)

Below is an example of an entity object of an entity of type file you may reference in the representations that follow.

```json
{
  "type": "file",
  "attributes": {
    "createdAt": "2019-11-19T13:37:46.824+0000",
    "createdBy": null,
    "documentType": "NONE",
    "modifiedAt": "2019-11-19T13:37:46.824+0000",
    "name": "Welcome to IDP.docx",
    "modifiedBy": null,
    "checkedOutBy": null,
    "id": "bd37f241-7b05-4ba8-ae0b-ab844daafd36",
    "content": null
  },
  "relations": {
    "parent": "/api/rest/folder/5f97858b-26e3-4180-80c4-25b176cbc35f"
  }
}
```

### Type

Type is a string that represents the type of an entity.

### Attributes

Attributes are JSON key-value pairs store data that pertain to an entity.

### Relations

Relations is a JSON object that represents references to and from a specified entity object. For example, a parent entity is defined by its child JSON objects. Inversely, the child JSON objects are collectively defined by its parent. Below is an example of a relation.

```json
"relations": {
            "parent": "/api/rest/folder/b9072a85-2214-4f55-9ca6-e29ad59167a1",
            "files": "/api/rest/folder/97869a7d-946a-4f7c-b612-34f5e5ab02ce/files"
        },
```
