Skip to content

6.13.2.3 OrganizationRoleCapabilityEnum

6.13.2.3.1 Purpose

The catalog of permissions that organization roles grant. Values are defined in code; each one allows an action of a system inside an Organization.

6.13.2.3.2 Values

Value Risk Description
moochat.moochat.access read Use Moochat, which draws only on data the user's other capabilities let them read.
farm.animals.read read See animals: identifiers, type, sex, breed, ownership (see Animal).
farm.animals.update write Register animals and edit that data.
farm.animal_groups.read read See groups and their members (see AnimalGroup, AnimalGroupMembership).
farm.animal_groups.manage_members write Add animals to groups and remove them (see AnimalGroupMembership).
access.organization_delegations.manage admin Create, change and revoke delegations from this Organization to another, renounce those it received (see OrganizationDelegationMembership), and create the share codes that name it.
access.organization.update admin Edit the Organization's profile: name, fiscal identifier, telephone (see Organization). The transfer of ownership also checks it and is the owner's only (Organization.owner); the cooperative link and erasure requests have their own capabilities, access.cooperative_links.manage and farm.erasure_requests.request.
access.members.read read See the Organization's members, their roles and its delegations.
access.members.manage admin Add and remove members, assign and revoke their roles, direct or delegated (see OrganizationAccessControlMembership).
farm.ownerships.transfer admin Transfer an animal or a group to another Organization (see Ownership); it changes who can access it.
farm.animal_records.read read See the observations, events and periods of animals and groups (see CanonicalObservation, CanonicalEvent, CanonicalPeriod).
farm.animal_events.record write Record events as an operator: entry, exit, service, pregnancy check, parturition, abortion, dry-off, heat, breeding status (see CanonicalEvent).
farm.animal_diagnoses.record write Record diagnosis, health check and treatment events (see CanonicalEvent: DiagnosisEvent, HealthCheckEvent, TreatmentEvent).
farm.official_submissions.submit write Validate and send data to official bodies, e.g. milk recording (see OfficialSubmission).
The functional control is not a concept of the model, only one export format.
farm.animal_groups.manage write Create, edit and archive groups (see AnimalGroup).
farm.sources.manage admin Connect and disconnect the Organization's channels and devices (see SourceChannel, Device, DeviceAssignment), and set up the integrations of its sync clients (see SourceFeed).
farm.ingestion.read read See what the Organization's sources sent and what failed to process (see SourceProducerEntity, RawMetadata, IngestionSkip).
access.cooperative_constraints.read read See the constraints of a cooperative (see CooperativeConstraint): its own in a Cooperative, those imposed on it in a Farm.
access.cooperative_constraints.manage admin Create, edit and delete the constraints a Cooperative imposes on its farms; it has no effect in a Farm.
farm.animal_records.edit_own write Edit or cancel observations and events that entered through the Organization's own feeds (our app, uploaded files), and remove uploaded files. Never data from labs, sensors, management software or registries (see SourceFeed).
farm.data_issues.read read See the DataIssues of the Organization's feeds (see DataIssue).
farm.sync_clients.read read See the Organization's sync clients, their version and last sync (see SyncClient, ReleaseInstallation).
farm.sync_clients.manage admin Connect a computer to the Organization as a sync client, manage its clients (register, issue enrolment codes, retire) and set their sync schedules (see SyncClient, SyncSchedule); the sync client offers to connect a computer only to the farms where the person holds it. Every enrolment creates a ServiceAccount in the Organization.
farm.models.use read Call the model APIs and see their outputs, for the models the Organization is entitled to (see Entitlement).
farm.sync_runs.write write Act as a farm sync client: open, commit and fail sync runs, upload raw files, report digests and the installation (see SyncRun, SyncDigest, SyncClient).
Held, together with farm.sync_clients.read, only by the system role Sync Client (sync_client), given to the ServiceAccount a farm sync client becomes at enrolment: priority below every other role, never delegated, never assigned to a Person, and no role of a Person holds it.
access.webhooks.manage admin Register, change and delete the Organization's webhook subscriptions, rotate their secrets and redeliver events.
farm.farm_configurations.manage write Record the farm's configuration over time, such as its milking system (see FarmConfiguration).
grant.checks.run read Ask whether the Organization meets the criteria of a funding call, with the feature grant.checks (see Entitlement).
grant.documents.manage write Upload, read and delete the Organization's documents for funding applications.
moochat.connectors.manage admin Connect and revoke the Organization's external systems for agent tools (see AgentConnectorInstance); future work, with the connectors.
access.groups.read read See the Organization's user groups, their members and their roles (see UserGroup).
access.groups.manage admin Create and archive user groups, change their members and give or revoke their roles, within the priority rule (OrganizationRoleAccessControl.priority).
access.organization.close admin Ask for the closure of the Organization and cancel it during the grace period (see OrganizationClosure); held by the owner's role only.
access.cooperative_links.manage admin Ask a cooperative to link the farm, accept or reject the requests of farms in a Cooperative, and end the link (see Farm.cooperative); was part of access.organization.update.
farm.erasure_requests.request admin Ask for the erasure of the Organization's data and see its requests (see ErasureRequest); was part of access.organization.update.
grant.call_actions.manage write Save and dismiss funding calls for the Organization, and see the calls it saved or dismissed.
access.cooperative_members.read read See the farms linked to a Cooperative and the membership data they share with it without a delegation (see Farm.cooperative): name, owner contact, member since, link status, number of animals, when data last arrived and whether the farm meets the cooperative's constraints (confirmed 2026-10-31). It has no effect in a Farm. Held by the predefined Owner and Manager, so a cooperative sees its member farms.

6.13.2.3.3 Relationships

Used by

6.13.2.3.4 Rules & constraints

  • Capability catalog, defined in code: each value is a granular permission for an action of a system.
  • Names are <system>.<resource>.<action>: the prefix is the system that owns the resource, e.g. access for Organizations, their members and delegations, farm for the farm data, its sources and its sync (ingestion merged into farm). A new system adds its own prefix; a role may bundle capabilities of several systems.
  • Roles grant capabilities within an Organization; AnimalGroup is a resource.
  • Each system publishes its capability catalog from its code; access validates a role's capabilities against the union of the catalogs and rejects a name no system publishes. The prefix follows the system that owns the resource, whichever interface shows the screen.
  • Every capability declares its risk: read only reads, write changes the Organization's data, admin changes who can act in the Organization, where its data goes or whether it exists. A role that holds an admin capability is never delegated (OrganizationDelegationMembership.role), never given by a join link (OrganizationJoinLink.role) and never held by a ServiceAccount (ServiceAccount.organization), and every write that needs one asks for a fresh sign-in (User); a read never does.

Open questions

Resource scopes, e.g. milk quality only for a Quality reader role, and cooperative delegation.