> For the complete documentation index, see [llms.txt](https://developer.collibra.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.collibra.com/api/guides/output-module/the-output-module-query-language/add-related-entities-to-the-tree.md).

# Add related entities to the tree

Use this query example to add the users that have been assigned a role at the community level. To reach those entities, you must retrieve the `Responsibility` entities that represent the assignments between a user, a role and one of the following resources:

* **Asset**
* **Domain**
* **Community**

{% tabs %}
{% tab title="JSON" %}

```json
{
  "ViewConfig": {
    "Resources": {
      "Community": {
        "Id": { "name": "community id" },
        "Name": { "name": "community name" },
        "Responsibility": {
          "User": {
            "Id": { "name": "user id" },
            "FirstName": { "name": "first name" },
            "LastName": { "name": "last name" }
          },
          "Role": {
            "Signifier": { "name": "role name" }
          }
        }
      }
    }
  }
}
```

{% endtab %}

{% tab title="YAML" %}

```yaml
---
ViewConfig:
  Resources:
    Community:
      Id:
        name: "community id"
      Name:
        name: "community name"
      Responsibility:
        User:
          Id:
            name: "user id"
          FirstName:
            name: "first name"
          LastName:
            name: "last name"
        Role:
          Signifier:
            name: "role name"
```

{% endtab %}
{% endtabs %}

Navigating from one entity to another requires nesting the entities. For a complete list of properties and relations for each entity, see [Entities, properties and relations](/api/guides/output-module/entities-properties-and-relations.md).

The following is an example of how the results is formatted.

```json
{
  "view": {
    "Community0": [
      {
        "communityId": "c87f166e-041f-4bea-8ff7-c1ffbab2ceeb",
        "communityName": "First Community"
      },
      {
        "communityId": "12345678-0020-0000-0000-000000000000",
        "communityName": "Second Community",
        "Responsibility1": [
          {
            "User2": [
              {
                "userId": "00000000-0000-0000-0000-000000900002",
                "firstName": "Admin",
                "lastName": "Istrator"
              }
            ],
            "Role3": [
              {
                "roleName": "Admin"
              }
            ]
          },
          {
            "User2": [
              {
                "userId": "00000000-0000-0000-0000-000000900002",
                "firstName": "Admin",
                "lastName": "Istrator"
              }
            ],
            "Role3": [
              {
                "roleName": "Steward"
              }
            ]
          }
        ]
      }
    ]
  }
}
```

{% hint style="info" %}

* The `ViewConfig` result tree always uses arrays for related entities, even when relations have a max cardinality of 1.
* Each responsibility has a maximum of one user and one role , even when arrays return.
* The results tree uses a generated entity alias in the response. For example, `Community0`, `Responsibility1` or `User2`.
* To prevent duplicate names in the JSON keys, an index number is concatenated to the entity name.
* The relationship from community to responsibility is optional. The query engine recognizes optional and required relations between entities, which is why `First Community` appears even when no users have roles.
  {% endhint %}
