GCC Build OSv0
/api

StakeholderStakeholder

retention: reference

A person with one or more RACI roles across objects in this tenant. Stakeholder nodes are referenced from every RACI assignment. The idp_subject field bridges the in-graph Stakeholder identity to the SSO/Access identity once federation is wired.

RACI requirements

decision_maker
n/a
approver
n/a
reviewer
n/a
contributor
n/a
informed
n/a

JSON Schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://gcc.bootminds.com/ontology/node-types/stakeholder.json",
  "title": "Stakeholder",
  "description": "A person with one or more RACI roles across objects in this tenant. Stakeholder nodes are referenced from every RACI assignment. The idp_subject field bridges the in-graph Stakeholder identity to the SSO/Access identity once federation is wired.",
  "type": "object",
  "x-node-type": "Stakeholder",
  "x-lifecycle-state-machine": null,
  "x-raci-requirements": {
    "decision_maker": "n/a",
    "approver": "n/a",
    "reviewer": "n/a",
    "contributor": "n/a",
    "informed": "n/a"
  },
  "x-retention-class": "reference",
  "required": [
    "node_id",
    "node_type",
    "tenant_id",
    "attributes",
    "state",
    "created_at",
    "created_by"
  ],
  "properties": {
    "node_id": {
      "type": "string",
      "format": "uuid"
    },
    "node_type": {
      "const": "Stakeholder"
    },
    "tenant_id": {
      "type": "string",
      "format": "uuid"
    },
    "state": {
      "type": "string",
      "enum": [
        "active",
        "invited",
        "inactive"
      ],
      "description": "Stakeholder operational state. 'invited' indicates a magic-link invite is outstanding; 'inactive' covers offboarded or paused stakeholders. No formal lifecycle state machine."
    },
    "attributes": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "name",
        "email",
        "organization_kind",
        "role_in_engagement"
      ],
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "description": "Display name."
        },
        "email": {
          "type": "string",
          "format": "email",
          "description": "Email address. Used for invite delivery and as a fallback identity key prior to IdP federation."
        },
        "organization_kind": {
          "type": "string",
          "enum": [
            "BootmindsStaff",
            "ClientAdmin",
            "ClientStakeholder",
            "ClientExecutive"
          ],
          "description": "Canonical user-type taxonomy from 1A.2.1."
        },
        "role_in_engagement": {
          "type": "string",
          "minLength": 1,
          "description": "Free-text role description scoped to this engagement (e.g., 'CIO, Alghiaz', 'GCC Programme Lead', 'AP Lead'). Distinct from the per-object RACI role; this is the human-readable engagement role."
        },
        "idp_subject": {
          "type": [
            "string",
            "null"
          ],
          "description": "Identity provider subject claim (e.g., SAML NameID, OIDC sub). Null until the stakeholder authenticates through Access; set on first successful SSO."
        },
        "legal_entity_id_ref": {
          "type": [
            "string",
            "null"
          ],
          "format": "uuid",
          "description": "Optional reference to the LegalEntity this stakeholder is primarily affiliated with."
        }
      }
    },
    "created_at": {
      "type": "string",
      "format": "date-time"
    },
    "created_by": {
      "type": "string",
      "format": "uuid"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time"
    }
  }
}