TenantAtlas/specs/076-permissions-enterprise-ui/contracts/required-permissions.view-model.json

74 lines
2.6 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "RequiredPermissionsPageViewModel",
"type": "object",
"required": ["tenant", "overview", "permissions", "filters"],
"properties": {
"tenant": {
"type": "object",
"required": ["id", "external_id", "name"],
"properties": {
"id": {"type": "integer"},
"external_id": {"type": "string"},
"name": {"type": "string"}
}
},
"overview": {
"type": "object",
"required": ["overall", "counts", "feature_impacts"],
"properties": {
"overall": {"type": "string", "enum": ["ready", "needs_attention", "blocked", "running"]},
"counts": {
"type": "object",
"required": ["missing_application", "missing_delegated", "present", "error"],
"properties": {
"missing_application": {"type": "integer", "minimum": 0},
"missing_delegated": {"type": "integer", "minimum": 0},
"present": {"type": "integer", "minimum": 0},
"error": {"type": "integer", "minimum": 0}
}
},
"feature_impacts": {
"type": "array",
"items": {
"type": "object",
"required": ["feature", "missing", "required_application", "required_delegated", "blocked"],
"properties": {
"feature": {"type": "string"},
"missing": {"type": "integer", "minimum": 0},
"required_application": {"type": "integer", "minimum": 0},
"required_delegated": {"type": "integer", "minimum": 0},
"blocked": {"type": "boolean"}
}
}
}
}
},
"permissions": {
"type": "array",
"items": {
"type": "object",
"required": ["key", "type", "features", "status"],
"properties": {
"key": {"type": "string"},
"type": {"type": "string", "enum": ["application", "delegated"]},
"description": {"type": ["string", "null"]},
"features": {"type": "array", "items": {"type": "string"}},
"status": {"type": "string", "enum": ["granted", "missing", "error"]},
"details": {"type": ["object", "null"], "additionalProperties": true}
}
}
},
"filters": {
"type": "object",
"required": ["status", "type", "features", "search"],
"properties": {
"status": {"type": "string", "enum": ["missing", "present", "all"]},
"type": {"type": "string", "enum": ["application", "delegated", "all"]},
"features": {"type": "array", "items": {"type": "string"}},
"search": {"type": "string"}
}
}
}
}