> ## Documentation Index
> Fetch the complete documentation index at: https://netter.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Attributes

> Attributes describe members—their site, region, or department. Assign values per member, then use them to drive group rules and row-level policies.

An **attribute** is a label you attach to members to describe them—`Établissement`, `Region`, `Department`. On its own an attribute does nothing. It becomes powerful when a [group rule](/docs/permissions/groups) or a [row policy](/docs/permissions/row-level-security) reads it: "members of the Paris site," or "each person sees only rows for their own region."

Attributes have two parts: a **definition** (the attribute exists) and **values** (what each member's is).

## Define an attribute

From **Settings → Attributes**, create a definition with:

* A **label**, the human name (`Établissement`).
* A **key**, the machine name used in rules and policies. It's auto-generated from the label as a lowercase slug (`etablissement`) and is unique per company.

Only Owners and Admins can define attributes.

<Warning>
  Deleting an attribute erases every member's values for it. Group rules and row policies that reference the key keep the raw key but stop matching anyone—so a delete can silently widen or narrow access. Check what uses an attribute before removing it.
</Warning>

## Assign values to members

From **Settings → Team**, open a member and edit their attributes. Values are **multi-valued**: enter them comma-separated (`paris, lyon`), and each parsed value shows as a chip.

A member can hold several values for one attribute. That matters for matching:

* A **group rule** with `is one of [paris, lyon]` matches a member whose `etablissement` includes either.
* A **row policy** that filters on a member's attribute uses **all** their values—someone with `paris, lyon` sees rows for both.

## Where attributes are used

| Used in                                                   | How                                                                                                                                                      |
| --------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **[Group rules](/docs/permissions/groups)**                    | A rule condition checks an attribute against `equals` / `is one of` values. Members whose values match join the group automatically.                     |
| **[Row-level security](/docs/permissions/row-level-security)** | A policy can compare a row's column to the member's attribute (`region` IN their `Region` attribute), so the same policy filters differently per person. |

Both are evaluated live—update a member's values and their group membership and row access change on the next request.

## Next

* [Groups](/docs/permissions/groups) — turn attributes into automatic membership.
* [Row-level security](/docs/permissions/row-level-security) — filter rows by a member's attribute.
