Group types
Definitions and instances
Group Definitions follow the Definition and Instance pattern. A Group Definition holds the configuration, including type, rules, and refresh schedule. A Group is an instance of an ownable (favourite) definition that belongs to a specific profile. For static and dynamic groups, the Definition itself is the primary object. Profile membership is read directly from the definition. For favourite groups, each profile that activates the definition gets their own Group instance, and that instance’s members are resolved from the definition’ssource_type.
Static groups
A static group is a manually managed list. Operators or integrations add profiles using the Group Profile endpoints under/v3/groups/definitions/{group}/profiles and remove them via the remove endpoint. Membership can be set to expire after a configurable period using the period and period_type fields (or an absolute date via absolute_expiry) on the definition. Each membership’s expiry is calculated once, when the profile is added.
Dynamic groups
A dynamic group computes its membership. A profile is a member when it satisfies all three of these conditions:- It is returned by the group’s candidate query, the starting set of profiles the group draws from.
- It matches at least one active inclusion rule.
- It matches no active exclusion rule.
Candidate query
Every dynamic group has a candidate query, configured through thequery, query_type, and arguments fields on the definition. The query is the first gate: profiles it does not return are never evaluated against the rules, so they can never be members. A dynamic group must have a candidate query. The query can be changed later but cannot be removed.
The candidate query is drawn from the same set of queries that Automations use to find their subjects, configured identically. A group uses one to bound membership; an Automation uses one to decide who to act on. Only queries that return profiles can back a group.
Rules
The definition holds one or more Group Rules. Each rule is aninclusion or exclusion type and is backed by a Group Rule Definition, a reusable template that holds a JSON Logic expression evaluated against a profile’s data. A rule can override the template’s arguments without changing the shared logic.
Inclusion rules combine with OR: a profile passes when it matches any one of them. Exclusion rules are evaluated in order, and the first one that matches removes the profile. Compose more complex AND or NOT conditions inside a single rule’s JSON Logic rather than spreading them across rules.
Group Rule Definitions can be reused across multiple Group Definitions via the /v3/groups/rule-definitions endpoints.
Refresh and snapshots
Omneo re-evaluates a dynamic group on a schedule set by therefresh_period and refresh_period_type fields, and you can also start a run on demand. Each run produces a Group Snapshot that records the per-profile result. The current membership of a dynamic group is its most recent completed snapshot. Use the Group Explain endpoint to see why a specific profile is or is not a member.
The refresh_status field reflects where a group is in this cycle.
Editing a group’s query or rules marks it
stale and schedules it for the next run.
Owned (favourite) groups
A favourite group definition is ownable by a profile. When a profile activates a favourite definition, Omneo creates a Group instance linked to that profile. Thesource_type on the definition determines how members are resolved. The only source in the current version is connection_definition: the definition’s source_id points at a Connection Definition, and each instance’s members are the profiles connected to the owner through that Connection Definition.
Profile-owned group instances are managed through the profile-scoped endpoints at /v3/profiles/{profile}/groups. Members within a profile-owned group are managed at /v3/profiles/{profile}/groups/{group}/profiles.
Reading membership
List a group’s members withGET /v3/groups/definitions/{group}/profiles. This one endpoint returns members for every group type in a uniform shape, so consumers do not branch on type:
Adding and removing members directly (a
POST to the same path, and the remove endpoint) applies to static groups only. Dynamic membership is computed, and favourite membership is managed per profile through the profile-scoped endpoints.
The current_member_count on a definition counts static members only; it is always 0 for dynamic and favourite groups. Use the member listing, or a dynamic group’s latest snapshot, to size those.