Skip to content

Commit 8a63207

Browse files
Add key definitions for seats and collections (#800)
* add key definitions for seats and collections * Apply suggestions from code review Co-authored-by: judda <44623501+ComfortablyCoding@users.noreply.github.com> --------- Co-authored-by: judda <44623501+ComfortablyCoding@users.noreply.github.com>
1 parent 4353c28 commit 8a63207

2 files changed

Lines changed: 45 additions & 1 deletion

File tree

content/guides/03.auth/2.access-control.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,13 @@ Specifying both the IPv4 and IPv6 addresses ensures uninterrupted access to your
117117

118118
## Studio Users
119119

120-
Studio Users in Directus are used in the context of licensing and billing for Directus Cloud. A studio user meets at least one of the following criteria:
120+
Studio Users are the users counted against the seat limit on your plan, whether you are self-hosted or on Directus Cloud. A Studio user meets at least one of the following criteria:
121121

122122
1. At least one policy with 'Admin Access' enabled.
123123
2. At least one policy with 'App Access' enabled, allowing access to the Data Studio.
124124

125+
Users with neither are considered API-only users and do not consume a seat, regardless of how many of them may exist. See [Key Definitions](/licensing/overview#key-definitions) in the licensing overview for the full seat and collection counting rules.
126+
125127
## Combining Multiple Policies
126128

127129
When multiple policies are assigned to a role or user, the system evaluates and combines these policies depending on the type of restriction or permission being applied. Understanding how these rules combine is essential for designing effective access control strategies.

content/licensing/1.overview.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,51 @@ Free commercial use is available through the **[Open Innovation Grant](https://d
1313

1414
Quick links:
1515

16+
- [What counts as a user seat or a collection?](#key-definitions)
1617
- [Enquire about a commercial license](https://directus.com/contact)
1718
- [Upgrading to Directus 12 (existing customer)](#upgrading-to-directus-12)
1819

20+
## Key Definitions
21+
22+
Plan limits are counted in units that are easy to misread. This section defines what counts toward **user seats** and **collections**. For the limits that apply to each tier, see the [pricing page](https://directus.com/pricing).
23+
24+
### User Seats
25+
26+
A seat is consumed by each **active Studio user**. A user is a Studio user if they have at least one policy with **App Access** or **Admin Access** enabled. See [Studio Users](/guides/auth/access-control#studio-users) for the full criteria.
27+
28+
**API-only users do not count toward your seat limit.** These are users created and managed in Directus who never access the Data Studio and reach your data only through the REST, GraphQL, WebSockets, or SDK APIs. Common examples:
29+
30+
- End users of your application, whether they register themselves through your frontend or you create their accounts for them.
31+
- Service accounts and integrations that authenticate with a static token.
32+
33+
These users do not consume a seat, regardless of how many exist, provided no policy grants them app access. Conversely, any user whose policy grants app access consumes a seat, whether or not they ever log in.
34+
35+
::callout{icon="i-lucide-info"}
36+
**Seats measure Studio access, not the size of your user base.**
37+
<br>
38+
A project with 2 content editors and 50,000 registered application users consumes 2 seats. Only accounts that can access the Data Studio are counted.
39+
::
40+
41+
You can send invitations even after reaching your seat limit. However, you cannot **activate** a user beyond the limit. To activate a pending user, either increase your seat count or free a seat by removing app access from an existing user.
42+
43+
### Collections
44+
45+
A collection counts toward your limit if it is a user collection registered in Directus, meaning it has Directus metadata and appears in the Data Studio. See [Collections](/guides/data-model/collections) for the difference between user and system collections.
46+
47+
Counted:
48+
49+
- User collections, whether created through the Data Studio, the API, or created in your database and then registered in Directus.
50+
- Translation collections, such as `articles_translations`.
51+
- Junction tables created for many-to-many and many-to-any relationships.
52+
53+
Not counted:
54+
55+
- System collections, which are prefixed with `directus_`.
56+
- Folders, which group collections in the Data Model settings and are not tables.
57+
- Database-only tables, which exist in your database but have no associated Directus metadata because they are not registered in Directus.
58+
59+
Translation collections and junction tables receive no special treatment: they are standard user-created tables, so each one counts as a collection. Account for them when you estimate your total.
60+
1961
## `PUBLIC_URL` and Licensing
2062

2163
Before applying a license, `PUBLIC_URL` must be set to a valid absolute URL (e.g. `https://directus.example.com`). The default value (`/`) and any relative path are rejected by the licensing service during [activation](#activations-and-project-bindings).

0 commit comments

Comments
 (0)