Skip to content
EntryLayer Operational data entry for Snowflake

Permission Model

EntryLayer evaluates permissions in layers. This keeps organization administration separate from actual record visibility.

Use this page when configuring project access, explaining why a user can open an admin surface but not read records, or composing SQL API calls such as UPSERT_ACCESS and SET_USER_SEAT.

LayerPurposeSource of truthTypical SQL API
Organization membershipConfirms the user belongs to the app organizationEntryLayer membershipLIST_USERS, SET_USER_SEAT, REVOKE_USER_SEAT
Seat typeGates feature classes such as act, build, and adminEntryLayer seat assignmentSET_USER_SEAT, LIST_USERS
Project permissionsGrants project data actionsProject access grantsLIST_ACCESS, UPSERT_ACCESS, UPDATE_ACCESS, DELETE_ACCESS
Field-group permissionsLimits field visibility/editability inside an allowed submissionForm/project configurationForm editor and project access configuration
Snowflake caller rightsControls source metadata and source-backed access through SnowflakeConsumer account grantsVALIDATE_SOURCE, DESCRIBE_SOURCE

seat_type is organization-level. Project permissions are data-level.

Seat behaviorWhat it enablesWhat it does not imply
viewBasic read-oriented product access when project permissions allow itBuild/admin tools or blanket project data visibility
actSubmission-oriented work when project permissions allow itProject design or org administration
buildProject-building and form-design surfacesReading records without project can_read or can_read_all
adminOrganization settings, licensing, and admin SQL API usageAutomatic submission visibility

This separation is intentional: admin power should not collapse into broad data access.

PermissionMeaningScope note
can_submitCreate new submissionsProject-level create action
can_readRead own submissionsOwn records only unless can_read_all is also true
can_read_allRead all submissions in the projectQueue and manager-style visibility
can_editEdit own submissionsOwn records only unless can_edit_all is also true
can_edit_allEdit any submissionAlso requires state/workflow to allow editing
can_deleteDelete own submissionsOwn records only unless can_delete_all is also true
can_delete_allDelete any submissionGoverned by project policy
can_manageManage project permissions and related settingsDoes not automatically grant can_read

The _all flags widen scope from “my records” to “all records”.

Example grantResult
can_read=true, can_read_all=falseUser sees only their own eligible submissions.
can_edit=true, can_edit_all=falseUser can edit their own editable submissions.
can_read_all=trueUser can read all project submissions allowed by field restrictions.
can_manage=true, can_read=falseUser can manage access/settings but cannot read records.

Field groups optionally restrict visible/editable fields after project-level access is granted.

Field-group grantEffect
No grantField is hidden from regular readers/editors.
readField is visible but read-only.
editField is editable if submission-level permissions and workflow state also allow editing.

Org admins and project managers may bypass field-group restrictions for management tasks, but regular data access still follows project and field grants.

Grant a role read and submit access:

CALL ENTRYLAYER.API.UPSERT_ACCESS(
'proj_123',
'role',
'FINANCE_TEAM_ROLE',
PARSE_JSON('{"can_read":true,"can_submit":true}')
);

List access for review:

CALL ENTRYLAYER.API.LIST_ACCESS('proj_123');
SELECT *
FROM ENTRYLAYER.APP_PUBLIC.PROJECT_ACCESS
WHERE project_id = 'proj_123';

Set an admin seat without granting data visibility:

CALL ENTRYLAYER.API.SET_USER_SEAT('JDOE', 'admin');
SymptomLikely causeWhat to check
Admin sees project shell but grid/drawer says missing can_readAdmin seat exists without project read grantLIST_ACCESS, APP_PUBLIC.PROJECT_ACCESS
User can read but cannot editMissing can_edit or workflow state is read-onlyProject permissions and Workflow States
Field is missing from a visible recordField-group permission hides itField group grants and project configuration
Cortex can call SQL API but source validation failsMissing Snowflake caller-rights grantsSource Objects & Semantic Views