title: API: Encoding of Zettel Access Rights
role: manual
tags: #api #manual #reference #zettelstore
syntax: zmk
back: 00001012051200 00001012051400 00001012053200 00001012053300 00001012053400 00001012054200 00001012920528
backward: 00001012051200 00001012051400 00001012053200 00001012053300 00001012053400 00001012054200 00001012920528
box-name: manual
copyright: (c) 2020-present by Detlef Stern <ds@zettelstore.de>
created: 20220201173115
forward: 00001003000000 00001006020400 00001010040100 00001010040200 00001010070200 00001010070300
lang: en
license: EUPL-1.2-or-later
modified: 20260714200809
published: 20260714200809
visibility: public

Various API calls return a symbolic expression `(rights ...)`, where `...` is a sequence of zero or more symbols.
These symbols encode the access rights the user currently has.

Valid symbols are: `create`, `read`, `update`, and `delete`.

| Symbol | Meaning for user |
| --- | --- |
| `create` | May create a new zettel |
| `read` | May read the zettel |
| `update` | May update the zettel |
| `delete` | May delete the zettel |

In practice, not all combinations of rights occur.
A Zettelstore in [read-only mode](00001010000000#read-only) always returns the symbol `read`.
A Zettelstore started by [double-clicking](00001003000000) returns either the expression `(rights read update)` or the expression `(rights create read update delete)` (all operations are allowed).

If you have added an additional [user](00001010040200) to your Zettelstore, the returned rights may differ.
The access rights are determined by the [enabled authentication](00001010040100) settings, the [user role](00001010070300) of the current user, the [visibility rules](00001010070200) for a given zettel, and the [read-only status](00001006020400) for the zettel.