# Interface: PropertyWithOptions<T>

Defined in: [schema.ts:236](https://github.com/coda/packs-sdk/blob/b2b4c9dba5ca748bdbb94481cc13b5ca3c328ef6/schema.ts#L236)

A property with a list of valid options for its value.

## Extended by

- [`ObjectSchemaDefinition`](../ObjectSchemaDefinition/)

## Type Parameters

| Type Parameter | | --- | | `T` *extends* [`PackFormulaResult`](../../type-aliases/PackFormulaResult/) |

## Properties

### options?

> `optional` **options**: [`PropertySchemaOptions`](../../type-aliases/PropertySchemaOptions/)\<`T`>

Defined in: [schema.ts:264](https://github.com/coda/packs-sdk/blob/b2b4c9dba5ca748bdbb94481cc13b5ca3c328ef6/schema.ts#L264)

A list of values or a formula that returns a list of values to suggest when someone edits this property.

#### Example

```
properties: {
  color: {
     type: sdk.ValueType.String,
     codaType: sdk.ValueHintType.SelectList,
     mutable: true,
     options: ['red', 'green', 'blue'],
  },
  user: {
     type: sdk.ValueType.String,
     codaType: sdk.ValueHintType.SelectList,
     mutable: true,
     options: async function (context) {
       let url = sdk.withQueryParams("https://example.com/userSearch", { name: context.search });
       let response = await context.fetcher.fetch({ method: "GET", url: url });
       let results = response.body.users;
       return results.map(user => {display: user.name, value: user.id})
     },
  },
}
```

______________________________________________________________________

### requireForUpdates?

> `optional` **requireForUpdates**: `boolean`

Defined in: [schema.ts:271](https://github.com/coda/packs-sdk/blob/b2b4c9dba5ca748bdbb94481cc13b5ca3c328ef6/schema.ts#L271)

Blocks updates from being sent with a blank value.
