Common group properties#

Some properties are common and may be used across all groups.

Data types#

The basic types are inherited from SCIM

The data types that are currently used are:

In Feide, multivalued attributes are listed as JSON arrays ["one", "two", "three"].

An additional data type, translatable string is defined in VOOT

Translatable String The content may be an untranslated basic string, in an undefined language. Alternatively, the content is an object with the property keys being ISO 639-1 Language Codes. The values are the translated values into that language. Example of a translatable string:

{
    "en": "Group",
    "nb": "Gruppe"
}

Group#

Required properties#

id

  • A unique string identifier representing this group. This identifier should not be used by humans, only systems.

  • Datatype: SCIM String

  • Example: "fc:org:uninett.no"

displayName

  • A translatable string giving the group a human friendly name. The name is supposed to give a clear meaning for users setting up access control.

  • Datatype: Translatable String

  • Example: "Trondheim Kommune"

The simplest example of a group containing only required parameters:

{
    "id": "8878ae43-965a-412a-87b5-38c398a76569",
    "displayName": "Project on group APIs"
}

Optional properties#

description

  • A textual description of the group. It may be translated as well.

  • Datatype: SCIM String

  • Example: "Kunnskapssektorens tjenesteleverand\u0058r"

type

  • A pointer to a group type. Default is voot:default.

  • Datatype: SCIM String

  • Example: "fc:org"

parent

  • A pointer to another group. The linking does not imply any specific semantics on the relationship between the two groups, but it allows for building up hierarchical visual representation of the list of groups a user is a member of.

  • Datatype: SCIM String

  • Example: "fc:org:oslo-kommune.no"

notBefore

  • The group did not exist before this date.

  • Datatype: SCIM DateTime

  • Example: "2021-07-31T22:00:00Z"

notAfter

  • The group is deleted or not valid after this date.

  • Datatype: SCIM DateTime

  • Example: "2022-07-31T22:00:00Z"

public

  • A boolean flag indicating whether the existence of this group and the basic group information is publicly available.

  • Datatype: SCIM Boolean

  • Example: false

active

  • A boolean flag indicating whether the group is currently active. When set to false it will cause the group to not show up on compact group lists.

  • Datatype: SCIM Boolean

  • Example: false

membership

The user’s relationship to the group is expressed in an embedded membership object. See below for more details about the membership object.

Membership#

The simplest representation of a group membership is an empty object, which tells that the user is a member of the group, but does not give any more details than that:

{}

An optional property basic is recommended to indicate the most basic level of roles. For each group type, it should be described how the more complex role model within that group type is projected into basic.

There are three legal values of basic:

  • member is for regular members. This is the default role if no explicit value is provided.

  • admin is an abstract role of super members, having some kind of additional permissions. For example, the admin may invite or add other members, moderate content in a group or anything else.

  • owner is given a special meaning in the ad hoc scenario, where groups are created by a person, who then is the owner of the group.

The following properties are optional:

basic

  • The basic membership role of the current user (optional). Default value is member.

  • Datatype: SCIM String

  • Example: "admin"

displayName

  • A human readable description of the membership role.

  • Example: "L\u00e6rer"

active

  • May be set to false to indicate that the user is a passive member of the group.

  • Datatype: SCIM Boolean

  • Example: false

notBefore

  • The group did not exist before this date.

  • Datatype: SCIM DateTime

  • Example: "2021-07-31T22:00:00Z"

notAfter

  • The group is deleted or not valid after this date.

  • Datatype: SCIM DateTime

  • Example: "2022-07-31T22:00:00Z"

may

  • An object of permissions that a user may or may not have related to the group. For example, a user may be allowed to edit, manage, invite or delete a group. No group types in Feide currently implement this

  • Example: {"listMembers": true}

groupID

  • If the membership object is used stand alone, and there is no implicit relation to a given group, the group may be referred to by using this property.

  • Datatype: SCIM String

  • Example: "fc:org:uninett.no"

Specific group types may define additional properties on the membership object.

An example of a membership may look like this:

{
    "basic": "admin",
    "affiliation": [
        "member",
        "faculty",
        "employee"
    ],
    "primaryAffiliation": "faculty",
    "displayName": "L\u00e6rer"
}