mail-address-semantics/mas_core/schema/mas-statute-v0.1.schema.json
tegwick a2465643ba MAS-WP-0005-T02: SCP-3 intake_for (statute-declared type intake)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 252470@bnt-lap001
Assistant-Session: ad628c8f-4be2-4979-94c9-76c7ed6f8241
2026-10-18 18:18:35 +02:00

161 lines
3.7 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.invalid/mas/schema/mas-statute-v0.1.schema.json",
"title": "Mail Address Semantics v0.1 Statute",
"type": "object",
"additionalProperties": false,
"required": [
"mas_version",
"namespace",
"profiles",
"equivalence"
],
"properties": {
"mas_version": {
"const": "0.1"
},
"namespace": {
"type": "string",
"minLength": 1,
"maxLength": 253,
"description": "Exact host governed by this statute, in its canonical DNS/IDNA presentation form."
},
"inherits": {
"type": "string",
"format": "uri",
"pattern": "^https://",
"description": "Optional explicit defaults-only parent statute URI. No DNS parent walking is implied."
},
"profiles": {
"type": "object",
"additionalProperties": false,
"required": [
"p1",
"p2"
],
"properties": {
"p1": {
"const": true
},
"p2": {
"type": "boolean"
}
}
},
"resource_types": {
"type": "object",
"default": {},
"propertyNames": {
"pattern": "^[a-z0-9]+([_-][a-z0-9]+)*$"
},
"additionalProperties": {
"type": "object",
"additionalProperties": false,
"required": [
"enabled"
],
"properties": {
"enabled": {
"type": "boolean"
},
"description": {
"type": "string",
"maxLength": 500
},
"identifier_policy": {
"type": "string",
"enum": [
"opaque",
"non-guessable-preferred",
"sequential-allowed"
]
}
}
}
},
"interaction_modes": {
"type": "object",
"default": {},
"propertyNames": {
"pattern": "^[A-Za-z0-9_-]+$"
},
"additionalProperties": {
"type": "object",
"additionalProperties": false,
"required": [
"enabled"
],
"properties": {
"enabled": {
"type": "boolean"
},
"description": {
"type": "string",
"maxLength": 500
}
}
}
},
"equivalence": {
"type": "object",
"additionalProperties": false,
"required": [
"local_part_case",
"dot_folding"
],
"properties": {
"local_part_case": {
"type": "string",
"enum": [
"exact",
"ascii-insensitive"
]
},
"dot_folding": {
"type": "boolean"
}
}
},
"unicode_local_part": {
"type": "boolean",
"default": false,
"description": "Experimental/private extension only; not canonical v0.1 machine syntax."
},
"addresses": {
"type": "object",
"default": {},
"propertyNames": {
"pattern": "^[A-Za-z0-9#%&'*\\-/=?_`{|}~.]+$"
},
"additionalProperties": {
"type": "object",
"additionalProperties": false,
"required": [
"kind"
],
"properties": {
"kind": {
"type": "string",
"enum": [
"person",
"actor",
"function",
"group",
"system",
"opaque"
]
},
"description": {
"type": "string",
"maxLength": 500
},
"intake_for": {
"type": "string",
"pattern": "^[a-z0-9]+([_-][a-z0-9]+)*$",
"description": "v0.1.1 (SCP-3): this function is the intake for the named resource type"
}
}
}
}
}
}