Knowledge Base Access Control Lists (ACLs)
Last updated: April 6, 2026
This guide provides an overview of Merge's Knowledge Base ACLs. For a more detailed implementation guide, see:
📄 Implementing ACL-aware embeddings using Merge’s Knowledge Base API
Overview
An Access Control List is a security feature used in systems (e.g., networking, file systems, databases) to define rules for what users or systems can access specific resources and what actions they can perform on them.
Key Components of an ACL in Merge's Knowledge Base API
The Object to be Accessed: Articles or Containers
The permissions allowed:
Read,Write,Owner
Integration support for ACLs
Not all Knowledge Base integrations support ACLs. More specifically - Notion does not natively support ACLs via API.
We recommend either user-based authentication approach (non-admin) or managing ACLs on your side for Notion. For more guidance on how to manage ACLs on your side, review our guide:
đź“„ Implementing Customer-Managed Access Control Lists (ACLs) for Knowledge Base
How to determine article or container access
Fetch the articles(s) or containers(s) of interest: GET /articles and GET /containers. View the permissions array: Articles.permissions and Containers.permissions which represents a user's or group's access to a Articles or Container.
Permissions.type = "USER"
Access provisioned individually; the “user” field in the permissions object will be populated with the Merge user UUID.
Permissions.type = "GROUP"
Access provisioned via the group; the “group” field in the permissions object will be populated with the Merge user UUID. For each group in the permissions array, GET /groups/{id}. See the array of users that are members of the group: group.users. Additionally, see the parent group that will also have access to the group: group.parent_groups. GET /groups/{id} to see the members of the parent group. This process must be repeated until parent_groups is empty
Permissions.type = “COMPANY”, or “ANYONE”
A permissions object of “ANYONE” will not have a user or group id, and indicates that the item is publicly accessible internally and externally.
A permissions object of "COMPANY" indicates that anyone within a company can access an article, and similarly will not have a group or user id.
A permissions object of “GROUP” indicates that anyone in the group has access to an article. This object will have a group id.
A permissions object of “USER” indicates that this User has access to an article.
Integration nuances for Permissions.type
Permission.type | Available for |
USER | Confluence |
GROUP | Confluence |
How to determine available user actions
The Merge permissions.roles array indicates the permissions that a group or user has for an article or container: Read, Write , or Owner.
How ACLs are updated
Merge ensures ACLs are updated as quickly as possible using webhooks and polling.
Recurring updates via polling: Merge will poll the third-party API. The exact polling rate depends on your plan, the third-party provider’s rate limits (higher-tier plans often have increased limits) and API latency. To see integration specific sync frequencies, check Merge’s sync frequency documentation.
Real-time updates via webhooks: Merge automatically updates ACLs in near real-time wherever the third-party API supports webhooks. Our webhook notifications typically deliver updates within seconds. While we design our system to be as fast as possible, please note that occasional network or load-related delays may occur. In the event of a webhook delivery failure, Merge will attempt to redeliver multiple times using exponential backoff.
Knowledge Base Permissions sync frequency
The Permissions model is a sub-model on Merge’s Knowledge Base Articles and ar Common Models. Permissions will be updated based on your sync frequency.
Third-party webhook available? | Highest available Permissions polling frequency | |
Confluence | âš Limited support | Every 5 minutes |
Notion | ❌ ACLs not supported | ❌ ACLs not supported |