# Edara API v3: Tags

Read the [guide](../guide.md) first: authentication, paging, errors, rate limits and the shared `PagedResult`, `BatchResult` and `*Reference` shapes.

- `GET /v3/tags`: Lists tags.

## Endpoints

### `GET /v3/tags`: Lists tags.

Operation `GetTags` · permission `read:tag`

> - `updateDate` filters the result set to rows inserted or updated after the supplied timestamp.

**Query string**: `GetTagsQuery`

| field | type | default | validation | description |
|---|---|---|---|---|
| `offset` | `int?` | 0 | >= 0 | Number of items to skip before returning results. Defaults to 0. |
| `limit` | `int?` | 100 | 1..1000 (out of range → 400) | Maximum number of items to return. Defaults to 100, maximum 1000. |
| `updateDate` | `DateTime?` |  |  | Optional updated-after filter. |

**Responses**: OK `PagedResult<TagResponse>`: Paged list of tags.

**Notes**

- There is no filter by name.
- `updateDate` returns tags created or updated strictly after that date and time.
- Results are ordered by `id`. `totalCount` is the number of tags that match.
- When nothing matches you get `200` with an empty `items` list.
- `type` is always null. Do not rely on it.
- Tags are attached to records by name, not by `id`. Each taggable record, for example a sales document, a customer or a supplier, carries its own comma-separated `tags` text.
- This list is a dictionary that Edara maintains automatically. When a record is saved with a tag name that is not in the list yet, the trimmed name is added.
- There is no endpoint to create, rename or delete a tag.
- To find records with a tag, match the tag name against each record's `tags` text, not against a tag `id`.

## Types

### `TagResponse`

Response describing a tag.

| field | type | description |
|---|---|---|
| `id` | `int` | The tag identifier. |
| `name` | `string` | The tag name. |
| `type` | `string` | The tag type. |
