TenantAtlas/specs/127-rbac-inventory-backup/contracts/inventory-coverage-rbac.schema.json
ahmido c6e7591d19 feat: add Intune RBAC inventory and backup support (#155)
## Summary
- add Intune RBAC role definitions and role assignments as foundation-backed inventory, backup, and versioned snapshot types
- add RBAC-specific normalization, coverage, permission-warning handling, and preview-only restore safety behavior across existing Filament and service surfaces
- add spec 127 artifacts, contracts, audits, and focused regression coverage for inventory, backup, versioning, verification, and authorization behavior

## Testing
- `vendor/bin/sail bin pint --dirty --format agent`
- `vendor/bin/sail artisan test --compact tests/Feature/Inventory/InventorySyncServiceTest.php tests/Feature/Filament/InventoryCoverageTableTest.php tests/Feature/FoundationBackupTest.php tests/Feature/Filament/RestoreExecutionTest.php tests/Feature/RestoreUnknownPolicyTypeSafetyTest.php tests/Unit/GraphContractRegistryTest.php tests/Unit/FoundationSnapshotServiceTest.php tests/Feature/Verification/IntuneRbacPermissionCoverageTest.php tests/Unit/IntuneRoleDefinitionNormalizerTest.php tests/Unit/IntuneRoleAssignmentNormalizerTest.php`

## Notes
- tasks in `specs/127-rbac-inventory-backup/tasks.md` are complete except `T041`, which is the documented manual QA validation step

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #155
2026-03-09 10:40:51 +00:00

43 lines
1.1 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://tenantpilot.local/contracts/inventory-coverage-rbac.schema.json",
"title": "Inventory Coverage RBAC Foundation Extension",
"type": "object",
"additionalProperties": false,
"required": ["foundation_types"],
"properties": {
"foundation_types": {
"type": "object",
"additionalProperties": false,
"required": ["intuneRoleDefinition", "intuneRoleAssignment"],
"properties": {
"intuneRoleDefinition": {
"$ref": "#/$defs/coverageRow"
},
"intuneRoleAssignment": {
"$ref": "#/$defs/coverageRow"
}
}
}
},
"$defs": {
"coverageRow": {
"type": "object",
"additionalProperties": false,
"required": ["status"],
"properties": {
"status": {
"type": "string",
"enum": ["succeeded", "failed", "skipped"]
},
"item_count": {
"type": "integer",
"minimum": 0
},
"error_code": {
"type": ["string", "null"]
}
}
}
}
}