KARE data objects (Project, User, etc) modelled based on SCIM, originating CRD and external data model representations (e.g. Dundee's JIRA) of research user/project context information.
- schemas/ dir contains base SCIM specs
- defintions/ CRDs AI-generated from SCIMs
- examples/ Example CRs of CRDs
The KARE User SCIM defines an initial subset of standard (i.e. RFC7643 ) and extended/custom attributes.
| Attribute | Type | Multi-Valued | Required | Description | Notes | SCIM Compliant |
|---|---|---|---|---|---|---|
| id | string | false | yes | Unique identifier for the user, typically a UUID. | readOnly; returned: always; server-generated. |
Standard |
| userName | string | false | yes | Unique ID for kare user | Must be unique; caseExact: false; mutability: readWrite. |
Standard |
| name | complex | false | no | Components of the user's name. | Contains formatted, familyName, givenName. |
Standard |
| ├─ formatted | string | false | no | User full name | Display-friendly version of the name. | Standard |
| ├─ familyName | string | false | no | Family name (last name). | Standard | |
| └─ givenName | string | false | no | Given name (first name). | Standard | |
| emails | complex | true | no | Email addresses for the user. | Each entry may include value and primary. |
Standard |
| ├─ value | string | false | no | Email address. | Standard | |
| └─ primary | boolean | false | no | Primary indicator. | At most one email should be marked as primary. | Standard |
| active | boolean | false | no | A Boolean value to indicate the account state i.e., enabled / suspended | true = active/enabled, false = suspended; mutability: readWrite. |
Standard |
| groups | complex | true | no | A list of KARE groups the user is affiliated | Read-only attribute; system-managed. | Standard |
| ├─ value | string | false | no | The identifier of the User's group. | Typically the group ID; mutability: readOnly. |
Standard |
| ├─ $ref | reference | false | no | The URI of the corresponding Group resource. | Reference type: Group; mutability: readOnly. |
Standard |
| ├─ display | string | false | no | A human-readable display name for the group. | mutability: readOnly. |
Standard |
| └─ type | string | false | no | A label to convey the type of KARE group membership (e.g., manual, automatic, rule-based) | mutability: readOnly; extensible values. |
Standard |
| startDate | dateTime | false | yes | Date when the user's account is active. | mutability: readWrite. |
Custom |
| expiryDate | dateTime | false | yes | Date when the user's account expires. | mutability: readWrite. |
Custom |
KARE's originating User CRD defined here contains application specific attributes that do not have a natural mapping to SCIM User attributes and may need to be represented in a separate object. The following are therefore not included in this initial User model:
- keycloak
- email_verified
- jupyterhub
- workspace
- compute_quota
- karectl
- user_id
A KARE Group entity that includes associated entitlements/permissions to KARE projects and lists associated KARE User and KARE Group subgroup relationships.
| Attribute | Type | Multi-Valued | Required | Description | Notes | SCIM Compliant |
|---|---|---|---|---|---|---|
| displayName | string | false | yes | The name of the group, suitable for display. | Must be unique; mutability: readWrite. |
Standard |
| description | string | false | no | A textual description of the group. | Optional; mutability: readWrite. |
Standard |
| members | complex | true | no | A list of members of the group. | Contains sub-attributes: value, $ref, display, type. |
Standard |
| ├─ value | string | false | no | Identifier of the member (User ID or Group ID). | mutability: readWrite. |
Standard |
| ├─ $ref | reference | false | no | The URI of the corresponding member resource. | Reference type: User or Group; mutability: readWrite. |
Standard |
| ├─ display | string | false | no | A human-readable name for the member. | mutability: readWrite. |
Standard |
| └─ type | string | false | no | Type of member relationship (e.g., direct, indirect, manual, automatic). | mutability: readWrite. |
Standard |
| active | boolean | false | no | Indicates whether the group is active. | Optional; mutability: readWrite. |
Standard |
| projects | complex | true | no | A list of projects the group has access to, including role information for each project. | Custom extension for project-based permissions. | Custom |
| ├─ value | string | false | yes | The unique identifier of the project. | mutability: readWrite. |
Custom |
| ├─ role | string | false | yes | The role the group has for this project (e.g., viewer, editor, admin). | mutability: readWrite. |
Custom |
| └─ display | string | false | no | A human-readable name of the project. | Optional; mutability: readWrite. |
Custom |
The originating KARE Group CRD has properties for both subgroups and members. This model following SCIM, defines just the members attribute and models both KARE User or Group entities so that subgroups.
A KARE research project entity. This initial model begins to reconcile requirements from the existing cr8tor project TOML, KARE CRD for project and the JIRA model from Dundee. For consistency, KARE Project is also modelled in SCIM but is not a base entity defined in SCIM2.0.
| Attribute | Type | Multi-Valued | Required | Description | Notes | SCIM Compliant |
|---|---|---|---|---|---|---|
| id | string | false | yes | Unique identifier for the project. | SCIM standard id; readOnly |
Standard |
| reference | string | false | yes | Internal reference for the project within the organization. | Custom attribute | Custom |
| displayName | string | false | yes | The name of the project. | Must be unique; mutability: readWrite |
Standard |
| description | string | false | no | A textual description of the project. | Optional; mutability: readWrite |
Standard |
| startDate | dateTime | false | no | The date when the project becomes active. | Optional; mutability: readWrite |
Custom |
| endDate | dateTime | false | no | The date when the project ends. | Optional; mutability: readWrite |
Custom |
| status | string | false | no | Current status of the project. | canonicalValues: active, expired, inactive, suspended |
Custom |
| apps | complex | true | no | Applications associated with the project. | Multi-valued complex attribute | Custom |
| ├─ name | string | false | yes | App name. | mutability: readWrite |
Custom |
| ├─ type | string | false | no | App type. | Optional | Custom |
| ├─ url | string | false | no | App URL. | Optional | Custom |
| ├─ osType | string | false | no | Operating system type. | canonicalValues: linux, windows |
Custom |
| └─ config | complex | false | no | Application-specific configuration. | Arbitrary key/value object | Custom |
| profiles | complex | true | no | Profiles associated with the project. | Multi-valued complex attribute | Custom |
| ├─ display_name | string | false | yes | Profile display name. | Required | Custom |
| ├─ description | string | false | no | Profile description. | Optional | Custom |
| ├─ slug | string | false | yes | Profile slug/identifier. | Required | Custom |
| └─ kubespawner_override | complex | false | no | Overrides for KubeSpawner settings. | Nested complex attribute | Custom |
| ├─ image | string | false | no | Container image override. | Optional | Custom |
| └─ env | complex | false | no | Environment variables for the profile. | Arbitrary key/value object | Custom |
Up for discussion but the initial attributes apps and profiles CRD in KARECTL for Project are modelled the same here. Although, profiles is jupyter application-specific so we'd likely need to nest app specific metadata within its relevant 'apps' object.
