{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://scient.ing/ns/schemas/roster.schema.json", "title": "Roster", "description": "scienting-roster/1: the keys that may sign; spec/08-fidelity.md.", "type": "object", "properties": { "format": { "const": "scienting-roster/1" }, "store": { "$ref": "common.schema.json#/$defs/key" }, "keys": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "common.schema.json#/$defs/key" }, "person": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "orcid": { "type": "string", "pattern": "^[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{3}[0-9X]$" }, "email": { "type": "string", "minLength": 1 } }, "required": [ "name" ], "additionalProperties": false }, "role": { "description": "The holder's role in the team that keeps the roster; a key with the role owner may revoke any receipt (spec/08 ยง8.7).", "enum": [ "owner", "editor", "reader", "guest" ] }, "scheme": { "enum": [ "ed25519", "ssh", "gpg", "sigstore" ] }, "public": { "type": "string", "minLength": 1 }, "purposes": { "type": "array", "items": { "enum": [ "sign", "spot-check", "export" ] }, "minItems": 1, "uniqueItems": true }, "registered_at": { "$ref": "common.schema.json#/$defs/time" }, "revoked_at": { "anyOf": [ { "$ref": "common.schema.json#/$defs/time" }, { "type": "null" } ] } }, "required": [ "id", "person", "role", "scheme", "public", "purposes", "registered_at", "revoked_at" ], "additionalProperties": false } } }, "required": [ "format", "store", "keys" ], "additionalProperties": false }