{ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Fabric Workspace Request", "description": "Fabric Governance manifest. Naming and structure rules defined in docs/governance-rules.md.", "type": "object", "additionalProperties": false, "required": [ "name", "country", "area", "subject", "dataProductType", "environment", "suffix", "domain", "subDomain", "description", "capacity", "owners", "costCenter", "region" ], "properties": { "name": { "type": "string", "pattern": "^[a-z]{2}-[a-z]{2,4}-[a-z]{2,8}-(brz|slv|gld|ndf)-(poc|dev|sit|uat|stg|prd)-[a-z0-9]{1,6}$", "description": "Lowercase. Pattern: -----. Each segment must also be declared explicitly so the validator can cross-check." }, "country": { "type": "string", "pattern": "^[a-z]{2}$", "description": "ISO 3166-1 Alpha-2 country code, lowercase. Must match the first segment of name." }, "area": { "type": "string", "pattern": "^[a-z]{2,4}$", "description": "Area responsible for the data product (2-4 lowercase chars). Must match the second segment of name." }, "subject": { "type": "string", "pattern": "^[a-z]{2,8}$", "description": "Subject describing the aspect of the data product (max 8 lowercase chars). Must match the third segment of name." }, "dataProductType": { "type": "string", "enum": ["brz", "slv", "gld", "ndf"], "description": "Type of data product. brz=bronze, slv=silver, gld=gold, ndf=non-differentiated. Must match the fourth segment of name." }, "environment": { "type": "string", "enum": ["poc", "dev", "sit", "uat", "stg", "prd"], "description": "Environment. Must match the fifth segment of name." }, "suffix": { "type": "string", "pattern": "^[a-z0-9]{1,6}$", "description": "Random ID (1-6 lowercase alphanumeric chars) ensuring uniqueness. Must match the sixth segment of name." }, "domain": { "type": "string", "pattern": "^dom-[a-z]{2,4}-[a-z0-9]{2,6}$", "description": "Fabric domain. Pattern: dom--. Must be in policy.approvedDomains." }, "subDomain": { "type": "string", "pattern": "^sdm-[a-z]{2,4}-[a-z0-9]{2,6}$", "description": "Fabric sub-domain. Pattern: sdm--." }, "description": { "type": "string", "minLength": 30, "maxLength": 4000 }, "capacity": { "type": "string", "description": "Logical capacity name from rules/policy.yaml allow-list" }, "sensitivityLabel": { "type": "string", "enum": ["Public", "General", "Confidential", "Highly Confidential"] }, "owners": { "type": "array", "minItems": 2, "items": { "type": "object", "required": ["principalType", "identifier", "role"], "additionalProperties": false, "properties": { "principalType": { "type": "string", "enum": ["Group", "ServicePrincipal", "User"] }, "identifier": { "type": "string", "description": "Object ID or UPN" }, "role": { "type": "string", "enum": ["Admin", "Member", "Contributor", "Viewer"] }, "groupName": { "type": "string", "pattern": "^grp_(fabric|powerbi)_(dev|sit|uat|prd)_[a-z]{2,5}_(admin|member|contributor|viewer)$", "description": "Optional. If set on a Group owner, must follow grp____." } } } }, "costCenter": { "type": "string", "pattern": "^CC-[0-9]{4,6}$" }, "region": { "type": "string", "enum": ["northeurope", "westeurope", "eastus", "westus", "uksouth"] }, "tags": { "type": "object", "additionalProperties": { "type": "string" } } } }