TenantTenant
retention: reference
A client engagement. Top-level isolation boundary for all per-tenant data (I1).
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/tenant.json",
"title": "Tenant",
"description": "A client engagement. Top-level isolation boundary for all per-tenant data (I1).",
"type": "object",
"x-node-type": "Tenant",
"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": "Tenant"
},
"tenant_id": {
"type": "string",
"format": "uuid",
"description": "For a Tenant node, tenant_id equals node_id (self-reference). Enforced by I1 multi-tenant isolation."
},
"state": {
"type": "string",
"enum": [
"active",
"suspended",
"archived"
],
"description": "Coarse operational state of the tenant engagement. Not a formal lifecycle state machine."
},
"attributes": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"industry",
"primary_region",
"engagement_stage",
"opted_in_to_cross_tenant_patterns",
"data_classification_scheme_version"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Display name of the client engagement (e.g., 'Alghiaz Group')."
},
"industry": {
"type": "string",
"minLength": 1,
"description": "Industry tag used for anonymised cross-tenant pattern aggregation (Phase 3). Free-text in Phase 0; expected canonical values include 'construction_and_engineering', 'financial_services', 'retail', 'manufacturing', 'healthcare'."
},
"primary_region": {
"type": "string",
"minLength": 2,
"description": "Primary geographic region of operations (e.g., 'KSA', 'UAE', 'IN'). Free-text ISO-style codes for now; canonical enum to be promoted post-Phase-0."
},
"engagement_stage": {
"type": "string",
"enum": [
"prospect",
"discovery",
"design",
"build",
"transition",
"in_service",
"concluded"
],
"description": "Coarse engagement-lifecycle phase. Independent of the per-object state machines."
},
"opted_in_to_cross_tenant_patterns": {
"type": "boolean",
"description": "Q9: whether this tenant has opted into anonymised cross-tenant pattern detection (Phase 3, k-anonymity >= 5)."
},
"data_classification_scheme_version": {
"type": "string",
"minLength": 1,
"description": "Q1: version of the 4-tier classification scheme in force for this tenant (e.g., 'v1-4tier'). Will bump when PDPL alignment lands in Phase 1B."
},
"primary_pdpl_region": {
"type": [
"string",
"null"
],
"description": "PDPL/regulatory region key relevant to this tenant (e.g., 'KSA-PDPL'). Nullable in Phase 1A; populated when PDPL alignment lands in Phase 1B."
}
}
},
"created_at": {
"type": "string",
"format": "date-time"
},
"created_by": {
"type": "string",
"format": "uuid"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
}