# Feature flag
- [Feature Flag Attributes](#feature-flag-attributes)
- [Deprecated Feature Flag Attributes](#deprecated-feature-flag-attributes)
## Feature Flag Attributes
This document defines attributes for Feature Flags.
| Attribute | Type | Description | Examples | Stability |
|---|---|---|---|---|
| `feature_flag.context.id` | string | The unique identifier for the flag evaluation context. For example, the targeting key. | `5157782b-2203-4c80-a857-dbbd5e7761db` |  |
| `feature_flag.key` | string | The lookup key of the feature flag. | `logo-color` |  |
| `feature_flag.provider.name` | string | Identifies the feature flag provider. | `Flag Manager` |  |
| `feature_flag.result.reason` | string | The reason code which shows how a feature flag value was determined. | `static`; `targeting_match`; `error`; `default` |  |
| `feature_flag.result.variant` | string | A semantic identifier for an evaluated flag value. [1] | `red`; `true`; `on` |  |
| `feature_flag.set.id` | string | The identifier of the [flag set](https://openfeature.dev/specification/glossary/#flag-set) to which the feature flag belongs. | `proj-1`; `ab98sgs`; `service1/dev` |  |
| `feature_flag.version` | string | The version of the ruleset used during the evaluation. This may be any stable value which uniquely identifies the ruleset. | `1`; `01ABCDEF` |  |
**[1] `feature_flag.result.variant`:** A semantic identifier, commonly referred to as a variant, provides a means
for referring to a value without including the value itself. This can
provide additional context for understanding the meaning behind a value.
For example, the variant `red` maybe be used for the value `#c05543`.
---
`feature_flag.result.reason` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
| Value | Description | Stability |
|---|---|---|
| `cached` | The resolved value was retrieved from cache. |  |
| `default` | The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result). |  |
| `disabled` | The resolved value was the result of the flag being disabled in the management system. |  |
| `error` | The resolved value was the result of an error. |  |
| `split` | The resolved value was the result of pseudorandom assignment. |  |
| `stale` | The resolved value is non-authoritative or possibly out of date |  |
| `static` | The resolved value is static (no dynamic evaluation). |  |
| `targeting_match` | The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting. |  |
| `unknown` | The reason for the resolved value could not be determined. |  |
## Deprecated Feature Flag Attributes
Describes deprecated feature flag attributes.
| Attribute | Type | Description | Examples | Stability |
|---|---|---|---|---|
| `feature_flag.evaluation.error.message` | string | Deprecated, use `error.message` instead. | `Flag `header-color` expected type `string` but found type `number`` | 
Replaced by `error.message`. |
| `feature_flag.evaluation.reason` | string | Deprecated, use `feature_flag.result.reason` instead. | `static`; `targeting_match`; `error`; `default` | 
Replaced by `feature_flag.result.reason`. |
| `feature_flag.provider_name` | string | Deprecated, use `feature_flag.provider.name` instead. | `Flag Manager` | 
Replaced by `feature_flag.provider.name`. |
| `feature_flag.variant` | string | Deprecated, use `feature_flag.result.variant` instead. | `red`; `true`; `on` | 
Replaced by `feature_flag.result.variant`. |
---
`feature_flag.evaluation.reason` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
| Value | Description | Stability |
|---|---|---|
| `cached` | The resolved value was retrieved from cache. |  |
| `default` | The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result). |  |
| `disabled` | The resolved value was the result of the flag being disabled in the management system. |  |
| `error` | The resolved value was the result of an error. |  |
| `split` | The resolved value was the result of pseudorandom assignment. |  |
| `stale` | The resolved value is non-authoritative or possibly out of date |  |
| `static` | The resolved value is static (no dynamic evaluation). |  |
| `targeting_match` | The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting. |  |
| `unknown` | The reason for the resolved value could not be determined. |  |