# AppFunctionStringValueConstraint

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

*** ** * ** ***


```
@Retention(value = AnnotationRetention.BINARY)
@Target(allowedTargets = [AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.VALUE_PARAMETER])
public annotation AppFunctionStringValueConstraint
```

<br />

*** ** * ** ***

Specifies constraints applied on the string values for return types, parameters, or properties in app functions.

This annotation can be applied to:

- functions annotated with `@AppFunctionDeclaration` (to constrain the return value),

- parameters of `@AppFunctionDeclaration`,

- or properties within an `@AppFunctionSerializable`.

### Usage Example:

```
// Constraining a function return value:
@AppFunctionDeclaration(isDescribedByKDoc = false)
@AppFunctionStringValueConstraint(enumValues = ["LOW", "MEDIUM", "HIGH"])
fun getPriorityLevel(): String {
    // Function body
}

// Constraining a parameter:
@AppFunctionDeclaration(isDescribedByKDoc = false)
fun setMode(
    @AppFunctionStringValueConstraint(enumValues = ["AUTO", "MANUAL"])
    mode: String
) {
    // Function body
}

// Constraining a property within an AppFunctionSerializable:
@AppFunctionSerializable(isDescribedByKDoc = false)
data class AppConfig(
    @property:AppFunctionStringValueConstraint(enumValues = ["ENABLED", "DISABLED"])
    val featureFlag: String
)
```

## Summary

| ### Public methods |
|---|---|
| `final @https://developer.android.com/reference/androidx/annotation/NonNull String[]` | `https://developer.android.com/reference/androidx/appfunctions/AppFunctionStringValueConstraint#getEnumValues()()` The list of allowed string values for the annotated element. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/appfunctions/AppFunctionStringValueConstraint#getFormat()()` The format description for string values (e.g. `"uri"`). |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull AppFunctionPatternMatcher[]` | `https://developer.android.com/reference/androidx/appfunctions/AppFunctionStringValueConstraint#getPatternMatchers()()` The patterns that string values must match. |

## Public methods

### getEnumValues

```
public final @NonNull String[] getEnumValues()
```

The list of allowed string values for the annotated element.

These values are communicated to the agent or framework that interprets or invokes the `@AppFunctionDeclaration`. If any of the values carry special meaning (e.g., `"AUTO"` means automatic mode), such meanings should be documented clearly in the corresponding property, parameter, or function return KDoc.

### getFormat

```
public final @NonNull String getFormat()
```

The format description for string values (e.g. `"uri"`). An empty string indicates no format description is set.

### getPatternMatchers

```
public final @NonNull AppFunctionPatternMatcher[] getPatternMatchers()
```

The patterns that string values must match. A value is valid if it matches any of the patterns. An empty array indicates no pattern constraint is applied.

Each pattern is translated to a `https://developer.android.com/reference/android/os/PatternMatcher.html` in `https://developer.android.com/reference/androidx/appfunctions/metadata/AppFunctionStringTypeMetadata#patternMatchers()`.

**Important:** Patterns are not validated at compile time. If `https://developer.android.com/reference/android/os/PatternMatcher.html` rejects any pattern (for example, a malformed `https://developer.android.com/reference/android/os/PatternMatcher.html#PATTERN_ADVANCED_GLOB`), the function using it is omitted from agents' search results. If the pattern is on a property of an `https://developer.android.com/reference/androidx/appfunctions/AppFunctionSerializable`, all of the app's functions are omitted.