# AirData App Objects

AirData App Objects are a way to group sets of variables together to create a more complex object. Each object in an AirData App Object is addressed by a text string and can contain any [Airkit Variable Type](../../variable-data-types/data-types-overview) including other AirData App Objects.

## Defining AirData App Objects

Defining AirData App Objects happens in [Data Builder](../../studio/builder-bar/data-builder). Creating an App Object is as simple as clicking the + button at the top of the _Tree_. Select _App Object_. Rename an App Object by double-clicking the name in the _Tree_ and editing it.

Here is an example of a simple app object with four properties.

![AirData.png](https://1191388742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhOn9CLWoV9VfJeM5EDAa%2Fuploads%2Fgit-blob-138baf8dd4d5ccf3bb1a417b686c5230f2bb5cba%2Fairdata-app-objects-v1715-0.png?alt=media)

By clicking plus icon on an App Object, additional properties can be added to any app object. Any supported [Data Type](../../variable-data-types/data-types-overview) can be added. Rename a property by double-clicking on it in the _Tree_.

In addition to to the properties explicitly defined as part of an App Object, each App Object is also given a another property: **\_\_id**, which serves as a unique identifier for each App Object instance. A unique **\_\_id** value is automatically assigned whenever an App Object instance is added to AirData. To display this property more explicitly, add a text property and call it "\_\_id":&#x20;

![](https://1191388742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhOn9CLWoV9VfJeM5EDAa%2Fuploads%2Fgit-blob-0e09bf2e89b6c672a6f044db368b8473eadea1b5%2Fairdata-app-objects-v1715-1.gif?alt=media)

Note that even though the three displayed App Object instances in the above example are largely blank, they have still been assigned unique **\_\_id** values, and were assigned these values even before the **\_\_id** property was explicitly displayed.

Calling an App Object instance based on its **\_\_id** is valuable when the instance needs to be specific and unique, such as, for example, when declaring which instance will be deleted as part of an [AirData Request](../../data-operations/airdata-request-data-operation). Under most other circumstances, it is safe for this unique identifier to be abstracted away, which is why it is not displayed in AirData by default. However, regardless of whether it is explicitly displayed in AirData, it can be used in practice the same way as any other object property.

## Using a Defined App Object

Once defined, an App Object can be used as a type anywhere a variable can be declared, such as on a Web Flow, Web Page, or in a Data Flow as an input or variable type.

![organizing info](https://1191388742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhOn9CLWoV9VfJeM5EDAa%2Fuploads%2Fgit-blob-45185ac2dc37b95ca28349291b4866929cca4a5d%2Fairdata-app-objects-v1715-2.png?alt=media)

Expression Editors in Card and Card Views also have the added benefit of including some type inference allowing for autocomplete with properties of strongly typed _App Objects_.

![organizing info](https://1191388742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhOn9CLWoV9VfJeM5EDAa%2Fuploads%2Fgit-blob-1f397e37401357c7af45ffcccde7ff3c1884360c%2Fairdata-app-objects-v1715-3.png?alt=media)

Hitting tab in this instance would complete the teacher property of **firstName**.
