---
title: Data model
slug: tvemea-app-builder-template/data-model
docTags: 
createdAt: 2025-12-04T10:10:56.838Z
---



All tables use a configurable prefix so multiple projects can share the same database without interfering with one another’s data.



### permissionResources

The **permissionResources** table stores sets of permissions that can be assigned to roles. Its behavior is similar to what you may know from Adobe Experience Platform, with one key difference: in AEP these permission resources are hard‑coded, whereas the App Builder Template is designed for full customization. This allows you to define new permissions for any custom functionality you add to your application.

| **Table name**     | \[prefix]\_permissionResources             |
| ------------------ | ------------------------------------------ |
| **Partition Key**  | permissionResourceID (string)              |
| **Time to Live**   | Off                                        |
| **User Interface** | Administration > Permissions > Permissions |

:::hint{type="info"}
There's an Out-of-the-box permissionResource called "App". This holds required permissions to manage your project. This permissionResource cannot be edited and will be automatically granted to Organization Administrators (adminconsole admins) in your org. This safeguard prevents administrators from unintentionally removing essential access.
:::

:::hint{type="warning"}
New permissions should only be added by developers as they should be referenced in your code. See [Using permissions](docId\:Nij5SuHs54YTyFLr3bFPQ) for how to use permissions.
:::

::::ExpandableHeading
**View example payload**

****

****

:::CodeblockTabs
Example payload

```json
{
  "permissionResourceID": "1e4de893-2cdf-4755-a56f-98bb67f8d738",
  "appNamespace": "8AB51935659C10E40A495FA2@AdobeOrg__1883744-aeptoolboxtvemea-development1",
  "audit": {
    "createdAt": "2025-11-12T13:25:58.742Z",
    "createdBy": {
      "email": "trum@adobe.com",
      "name": "Jaap Trum",
      "userId": "E59D1D6E65B138B50A495FA0@8b531068659c12a1495c76.e"
    },
    "updatedAt": "2025-11-26T14:44:07.629Z",
    "updatedBy": {
      "email": "trum@adobe.com",
      "name": "Jaap Trum",
      "userId": "E59D1D6E65B138B50A495FA0@8b531068659c12a1495c76.e"
    }
  },
  "description": "Permissions for sandbox cleaning",
  "label": "Sandbox Tooling ",
  "name": "SandboxTooling",
  "options": [
    {
      "id": "2f2344f1-acd3-4e93-b19f-32fa6e43cc19",
      "label": "View Cleanup Sandbox",
      "name": "cleanup-sandbox-view"
    },
    {
      "id": "3f3455f2-bdc4-5g82-c2af-43gb7f54dd2a",
      "label": "Execute Cleanup Sandbox",
      "name": "cleanup-sandbox-execute"
    },
    {
      "id": "4g4566g3-cdg5-6h71-d3bg-54hc8g65ee3b",
      "label": "Manage Configurations",
      "name": "cleanup-sandbox-manage-configurations"
    }
  ],
  "org": "8AB51935659C10E40A495FA2@AdobeOrg"
}
```
:::
::::

## roles

The roles table stores the different roles that can be assigned to users and/or user groups. It's behavior is similar to what you may know from Adobe Experience Platform.

| **Table name**     | \[prefix]\_roles                     |
| ------------------ | ------------------------------------ |
| **Partition Key**  | roleID (string)                      |
| **Time to Live**   | Off                                  |
| **User Interface** | Administration > Permissions > Roles |

::::ExpandableHeading
**View example payload**

:::CodeblockTabs
Example payload

```json
{
  "roleID": "05ba4c2b-e778-4148-84ea-241e52df3f3a",
  "appNamespace": "8AB51935659C10E40A495FA2@AdobeOrg__1883744-aeptoolboxtvemea-development1",
  "audit": {
    "createdAt": "2025-11-12T13:25:58.742Z",
    "createdBy": {
      "email": "trum@adobe.com",
      "name": "Jaap Trum",
      "userId": "E59D1D6E65B138B50A495FA0@8b531068659c12a1495c76.e"
    },
    "updatedAt": "2025-11-20T12:10:03.837Z",
    "updatedBy": {
      "email": "trum@adobe.com",
      "name": "Jaap Trum",
      "userId": "E59D1D6E65B138B50A495FA0@8b531068659c12a1495c76.e"
    }
  },
  "description": "Users with this role manage the entire app.",
  "label": "App Administrator",
  "org": "8AB51935659C10E40A495FA2@AdobeOrg",
  "permissions": {
    "1e4de893-2cdf-4755-a56f-98bb67f8d738": [
      "2f2344f1-acd3-4e93-b19f-32fa6e43cc19",
      "3f3455f2-bdc4-5g82-c2af-43gb7f54dd2a",
      "4g4566g3-cdg5-6h71-d3bg-54hc8g65ee3b"
    ],
    "978cc4a4-36b0-4a20-abf3-07cbd9aea4d8": [
      "a3740cae-e3ce-4962-8232-9037e89943a3",
      "165bb19e-e9b3-42d0-8a10-02b74d6c8736",
      "2f2344f1-acd3-4e93-b19f-32fa6e43cc19",
      "dc098233-dbba-4fa0-a7e6-de3172f2bb41",
      "f3109c4e-8c95-49b6-bd91-63176f989857",
      "9e8644ac-e122-43ae-a0ef-ebc15fbd91f0",
      "3be668fb-0b27-4491-bc19-94dd54672ee9"
    ]
  },
  "userGroups": [
    {
      "id": "645004924",
      "name": "TV Core Team",
      "userCount": 12
    }
  ],
  "users": [
    {
      "email": "angeli@adobe.com",
      "id": "E5071D7765B138B50A495FE8@8b531068659c12a1495c76.e",
      "name": "Alberto Angeli"
    },
    {
      "email": "trum@adobe.com",
      "id": "E59D1D6E65B138B50A495FA0@8b531068659c12a1495c76.e",
      "name": "Jaap Trum"
    }
  ]
}
```
:::
::::

::::ExpandableHeading{isOpen="true"}
### configurations

:::CodeblockTabs
Example payload

```json
```
:::


::::

::::ExpandableHeading{isOpen="true"}
### dashboards

:::CodeblockTabs
Example payload

```json
```
:::


::::

## Other tables&#x20;

::::ExpandableHeading{isOpen="true"}
### auditLogs

:::CodeblockTabs
Example payload

```json
```
:::


::::

::::ExpandableHeading{isOpen="true"}
### imsCache

:::CodeblockTabs
Example payload

```json
```
:::


::::

/expa







