# AppFunctionAllOfTypeMetadata

Artifact: [androidx.appfunctions:appfunctions](https://developer.android.com/jetpack/androidx/releases/appfunctions) [View Source](https://cs.android.com/search?q=file:androidx/appfunctions/metadata/AppFunctionDataTypeMetadata.kt+class:androidx.appfunctions.metadata.AppFunctionAllOfTypeMetadata) Added in [1.0.0-rc01](https://developer.android.com/jetpack/androidx/releases/appfunctions#1.0.0-rc01)

*** ** * ** ***


```
class AppFunctionAllOfTypeMetadata : AppFunctionDataTypeMetadata
```

<br />

|---|---|---|
| [kotlin.Any](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html) |||
| ↳ | [androidx.appfunctions.metadata.AppFunctionDataTypeMetadata](https://developer.android.com/reference/kotlin/androidx/appfunctions/metadata/AppFunctionDataTypeMetadata) ||
|   | ↳ | [androidx.appfunctions.metadata.AppFunctionAllOfTypeMetadata](https://developer.android.com/reference/kotlin/androidx/appfunctions/metadata/AppFunctionAllOfTypeMetadata) |

*** ** * ** ***

Defines the schema of a single object data type that is a composition of all of the other types in the `https://developer.android.com/reference/kotlin/androidx/appfunctions/metadata/AppFunctionAllOfTypeMetadata#matchAll()` list.

An object of this type must match all of the `https://developer.android.com/reference/kotlin/androidx/appfunctions/metadata/AppFunctionDataTypeMetadata` in the `https://developer.android.com/reference/kotlin/androidx/appfunctions/metadata/AppFunctionAllOfTypeMetadata#matchAll()` list. `https://developer.android.com/reference/kotlin/androidx/appfunctions/metadata/AppFunctionAllOfTypeMetadata#matchAll()` takes an array of object definitions that are composed together to a single object to form this type. Note that while this composition offers object type extensibility, it does not imply a hierarchy between the objects matched in `https://developer.android.com/reference/kotlin/androidx/appfunctions/metadata/AppFunctionAllOfTypeMetadata#matchAll()` i.e. the resulting single object is a flattened representation of all the other matched objects.

For example, consider the following objects:

```kotlin
package com.example.myapp

open class Address (
    open val street: String,
    open val city: String,
    open val state: String,
    open val zipCode: String,
)

class PersonWithAddress (
    override val street: String,
    override val city: String,
    override val state: String,
    override val zipCode: String,
    val name: String,
    val age: Int,
) : Address(street, city, state, zipCode)
```

The following `https://developer.android.com/reference/kotlin/androidx/appfunctions/metadata/AppFunctionAllOfTypeMetadata` can be used to define a data type that matches PersonWithAddress.

```kotlin
val personWithAddressType = AppFunctionAllOfTypeMetadata(
    qualifiedName = "com.example.myapp.PersonWithAddress",
    matchAll = listOf(
        AppFunctionObjectTypeMetadata(
            properties = mapOf(
                "street" to AppFunctionStringTypeMetadata(...),
                "city" to AppFunctionStringTypeMetadata(...),
                "state" to AppFunctionStringTypeMetadata(...),
                "zipCode" to AppFunctionStringTypeMetadata(...),
            ),
            required = listOf("street", "city", "state", "zipCode"),
            qualifiedName = "com.example.myapp.Address",
            isNullable = false,
        ),
        AppFunctionObjectTypeMetadata(
            properties = mapOf(
                "name" to AppFunctionStringTypeMetadata(...),
                "age" to AppFunctionIntTypeMetadata(...),
            ),
            required = listOf("name", "age"),
            qualifiedName = "com.example.myapp.PersonWithAddress",
            isNullable = false,
        ),
    ),
    isNullable = false,
)
```

This data type can be used to define the schema of an input or output type.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/appfunctions/metadata/AppFunctionAllOfTypeMetadata#AppFunctionAllOfTypeMetadata(kotlin.collections.List,kotlin.String,kotlin.Boolean,kotlin.String)( matchAll: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/appfunctions/metadata/AppFunctionDataTypeMetadata>, qualifiedName: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html?, isNullable: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html, description: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html )` |

| ### Public functions |
|---|---|
| `open operator https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/appfunctions/metadata/AppFunctionAllOfTypeMetadata#equals(kotlin.Any)(other: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?)` |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/appfunctions/metadata/AppFunctionAllOfTypeMetadata#hashCode()()` |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | `https://developer.android.com/reference/kotlin/androidx/appfunctions/metadata/AppFunctionAllOfTypeMetadata#toString()()` |

| ### Public properties |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/appfunctions/metadata/AppFunctionDataTypeMetadata>` | `https://developer.android.com/reference/kotlin/androidx/appfunctions/metadata/AppFunctionAllOfTypeMetadata#matchAll()` The list of data types that are composed. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html?` | `https://developer.android.com/reference/kotlin/androidx/appfunctions/metadata/AppFunctionAllOfTypeMetadata#qualifiedName()` The composed object's qualified name if available. |

### Inherited properties

From [androidx.appfunctions.metadata.AppFunctionDataTypeMetadata](https://developer.android.com/reference/kotlin/androidx/appfunctions/metadata/AppFunctionDataTypeMetadata) `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` `https://developer.android.com/reference/kotlin/androidx/appfunctions/metadata/AppFunctionDataTypeMetadata#description()`

A description of the data type and its intended use.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `https://developer.android.com/reference/kotlin/androidx/appfunctions/metadata/AppFunctionDataTypeMetadata#isNullable()`

Whether the data type is nullable.

## Public constructors

### AppFunctionAllOfTypeMetadata

```
AppFunctionAllOfTypeMetadata(
    matchAll: List<AppFunctionDataTypeMetadata>,
    qualifiedName: String?,
    isNullable: Boolean,
    description: String = ""
)
```

## Public functions

### equals

```
open operator fun equals(other: Any?): Boolean
```

### hashCode

```
open fun hashCode(): Int
```

### toString

```
open fun toString(): String
```

## Public properties

### matchAll

Added in [1.0.0-rc01](https://developer.android.com/jetpack/androidx/releases/appfunctions#1.0.0-rc01)

```
val matchAll: List<AppFunctionDataTypeMetadata>
```

The list of data types that are composed.

### qualifiedName

Added in [1.0.0-rc01](https://developer.android.com/jetpack/androidx/releases/appfunctions#1.0.0-rc01)

```
val qualifiedName: String?
```

The composed object's qualified name if available. For example, "androidx.appfunctions.metadata.PersonWithAddress".

Use this value to set `https://developer.android.com/reference/kotlin/androidx/appfunctions/AppFunctionData#qualifiedName()` when trying to build the parameters for `https://developer.android.com/reference/kotlin/androidx/appfunctions/ExecuteAppFunctionRequest`.