391 lines
8.2 KiB
JSON
391 lines
8.2 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://local.anonymisation/admin-rules.schema.json",
|
|
"title": "Admin rules configuration",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"version",
|
|
"rules"
|
|
],
|
|
"properties": {
|
|
"version": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"defaults": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"review_required_for_activation": {
|
|
"type": "boolean"
|
|
},
|
|
"environments": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"test",
|
|
"staging",
|
|
"prod"
|
|
]
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"sections": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"narrative",
|
|
"structured",
|
|
"table",
|
|
"header",
|
|
"footer"
|
|
]
|
|
},
|
|
"uniqueItems": true
|
|
}
|
|
}
|
|
},
|
|
"rules": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/rule"
|
|
}
|
|
}
|
|
},
|
|
"$defs": {
|
|
"scope": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"document_families",
|
|
"environments",
|
|
"sections"
|
|
],
|
|
"properties": {
|
|
"document_families": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"minItems": 1,
|
|
"uniqueItems": true
|
|
},
|
|
"environments": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"test",
|
|
"staging",
|
|
"prod"
|
|
]
|
|
},
|
|
"minItems": 1,
|
|
"uniqueItems": true
|
|
},
|
|
"sections": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"narrative",
|
|
"structured",
|
|
"table",
|
|
"header",
|
|
"footer"
|
|
]
|
|
},
|
|
"minItems": 1,
|
|
"uniqueItems": true
|
|
}
|
|
}
|
|
},
|
|
"tests": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"required_case_ids"
|
|
],
|
|
"properties": {
|
|
"required_case_ids": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"minItems": 1,
|
|
"uniqueItems": true
|
|
}
|
|
}
|
|
},
|
|
"governance": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"owner",
|
|
"justification",
|
|
"created_at",
|
|
"review_required_for_activation",
|
|
"tests"
|
|
],
|
|
"properties": {
|
|
"owner": {
|
|
"type": "string",
|
|
"minLength": 2
|
|
},
|
|
"justification": {
|
|
"type": "string",
|
|
"minLength": 8
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
|
|
},
|
|
"review_required_for_activation": {
|
|
"type": "boolean"
|
|
},
|
|
"approved_by": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"ticket": {
|
|
"type": "string"
|
|
},
|
|
"tests": {
|
|
"$ref": "#/$defs/tests"
|
|
}
|
|
}
|
|
},
|
|
"normalization": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"case_insensitive": {
|
|
"type": "boolean"
|
|
},
|
|
"whole_word": {
|
|
"type": "boolean"
|
|
},
|
|
"multiline": {
|
|
"type": "boolean"
|
|
},
|
|
"allow_bare_value": {
|
|
"type": "boolean"
|
|
},
|
|
"accepted_prefixes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"prefix_value_separators": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"uniqueItems": true
|
|
}
|
|
}
|
|
},
|
|
"match": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"exact_value": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"canonical_value": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"context_prefixes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"context_separators": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"uniqueItems": true
|
|
}
|
|
}
|
|
},
|
|
"rule": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"id",
|
|
"label",
|
|
"type",
|
|
"action",
|
|
"status",
|
|
"match",
|
|
"scope",
|
|
"governance"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"pattern": "^[a-z0-9_][a-z0-9_-]{2,63}$"
|
|
},
|
|
"label": {
|
|
"type": "string",
|
|
"minLength": 3
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"exact_term",
|
|
"normalized_identifier",
|
|
"contextual_identifier",
|
|
"preserve_phrase"
|
|
]
|
|
},
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"mask",
|
|
"preserve"
|
|
]
|
|
},
|
|
"placeholder": {
|
|
"type": "string",
|
|
"pattern": "^\\[[A-Z_]+\\]$"
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"draft",
|
|
"candidate",
|
|
"approved",
|
|
"active",
|
|
"disabled",
|
|
"retired"
|
|
]
|
|
},
|
|
"match": {
|
|
"$ref": "#/$defs/match"
|
|
},
|
|
"normalization": {
|
|
"$ref": "#/$defs/normalization"
|
|
},
|
|
"scope": {
|
|
"$ref": "#/$defs/scope"
|
|
},
|
|
"governance": {
|
|
"$ref": "#/$defs/governance"
|
|
}
|
|
},
|
|
"allOf": [
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"action": {
|
|
"const": "mask"
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"placeholder"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"type": {
|
|
"const": "exact_term"
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"match": {
|
|
"required": [
|
|
"exact_value"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"type": {
|
|
"const": "preserve_phrase"
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"action": {
|
|
"const": "preserve"
|
|
},
|
|
"match": {
|
|
"required": [
|
|
"exact_value"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"type": {
|
|
"const": "normalized_identifier"
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"match": {
|
|
"required": [
|
|
"canonical_value"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"type": {
|
|
"const": "contextual_identifier"
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"match": {
|
|
"required": [
|
|
"canonical_value",
|
|
"context_prefixes"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|