Schema Explorer
Interactive tree of every entity, field, type, enum, and pattern in the Edoxen JSON Schema. Generated at build time from the canonical schemas bundled in @edoxen/edoxen.
Agenda5 fields
The business-order document of a Meeting. Versioned independently
of the Meeting via the status field (draft, final, amended).
AgendaItem10 fields
One entry on an Agenda. v3.0: per-field Localized.
Attendance8 fields
One attendance record per person at a Meeting.
BodyVocabularyEntry3 fields
One entry in a per-dataset body_vocabulary list. Maps a free-form body_type to a short canonical value. SSOT for body_type -> canonical_type resolution within the declaring collection.
Contact11 fields
VCARD-like abstract contact. v3.0: per-field Localized
(name, title, affiliation, address). Added urn (registry
identity) and ref (reference-by-URN).
URN reference; if set, ignore other fields
^urn:edoxen:contact:[^:]+:[^:]+$ContactIdentifier3 fields
One polymorphic external identifier — ORCID, ISNI, Wikidata QID,
ROR, Ringgold, GitHub handle, etc. Replaces the hard-coded orcid
field. OCP: new identifier schemes are added via the
ContactIdentifierKind enum (or other + extensions).
ContactMethod5 fields
One polymorphic communication channel — phone, email, fax, url,
mail, etc. kind discriminates the channel; value carries the
address/number; label is a free-form display hint ("Office",
"Front desk"). OCP: new channel kinds are added via the
ContactMethodKind enum (or other + extensions).
Deadline2 fields
A time-bound requirement. v3.0: per-field Localized.
EntityRef6 fields
Typed cross-reference between entities (v2.1, TODO.refactor/44).
Exactly one of urn, identifier, or local_ref should be set;
the gem's EntityRef#valid? enforces this in Ruby.
ExtensionAttribute8 fields
One typed key/value pair within a MeetingExtension. Polymorphic on value type so consumers don't re-parse strings back into Int/Float/ Bool/Date (v2.1 tighten, TODO.refactor/47).
HostRef4 fields
Typed reference to a hosting organization.
LocalizedName3 fields
One language-specific value of a translatable Name field. Mirrors LocalizedString but carries a structured Name.
LocalizedString3 fields
One language-specific value of a translatable String field.
spelling is an ISO 24229 spelling/conversion system code.
Always verbose — single-language data uses the same
[{ spelling, value }] shape as multi-language data.
Meeting35 fields
A single Meeting (event). v3.0: per-field Localized.
^[A-Z]{2}[A-Z0-9]{3}$^[A-Z]{2}$MeetingCollection2 fields
Top-level wrapper for many Meetings in one file.
MeetingCollectionMetadata3 fields
Display-level metadata for a MeetingCollection. v3.0: per-field Localized.
MeetingComponent15 fields
Flat sub-event of a Meeting. v3.0: per-field Localized.
MeetingExtension4 fields
Profile-specific extension. Adopters register their namespace via
profile and discriminate via kind. Field semantics tightened
v2.1 (TODO.refactor/47): kind is the in-profile discriminator,
ref is the URN of an external profile document, and the
recursive extensions[] slot was removed (YAGNI — use dotted
keys in attributes[] for nesting).
MeetingRelation3 fields
Directed link between two meetings.
MeetingSeries12 fields
Parent of recurring Meeting instances. v3.0: per-field Localized.
Minutes6 fields
The narrative record of a Meeting. v3.0: per-document language_code
+ script replaced by a single spelling (ISO 24229).
ISO 24229 spelling/conversion system code
MinutesSection6 fields
One section of a Meeting's minutes — typically tied to an agenda item by number. v3.0: per-field Localized.
Name7 fields
Structured personal/organisational name (VCARD RFC 6350
conventions). formatted is the pre-built display string (FN);
the structured components (N) are stored separately for sorting,
indexing, or locale-aware rendering.
Officer5 fields
A person holding a structural role in a Meeting.
Person11 fields
A Contact that is specifically an individual human. Schema
duplicates Contact's properties because JSON-Schema draft-07
doesn't support extends. Same shape; semantically a subclass.
^urn:edoxen:contact:[^:]+:[^:]+$Recurrence15 fields
Structured ISO 8601-2 §13 recurrence.
RecurrenceByDay2 fields
BYDAY part of a recurrence. ordinal is null for 'every', +1 for first, -1 for last.
SourceUrl4 fields
Per-spelling canonical source URL (e.g. one PDF per language).
StructuredIdentifier2 fields
An identifier (prefix + number). A Decision carries 1..* of these.
Topic12 fields
The subject of discussion at a Meeting. v3.0: per-field Localized.
TopicAsset6 fields
Non-text resource about a Topic. v3.0: per-field Localized.
TopicDocument8 fields
Text-bearing document about a Topic. v3.0: per-field Localized.
ISO 24229 spelling/conversion system code
Venue28 fields
Polymorphic place where a Meeting happens. kind discriminates
physical vs virtual; all fields from both subtypes live here as
optional siblings. v3.0: per-field Localized (name, label,
description, address, building, floor, room, access_notes).
Added urn (registry identity) and ref (reference-by-URN).
URN reference; if set, ignore other fields
^urn:edoxen:venue:[^:]+:[^:]+$^[A-Z]{2}[A-Z0-9]{3}$^[A-Z]{3}$^[A-Z]{2}$Action3 fields
A verb + one effective date + human-readable message.
Approval4 fields
Approval record: vote type, consensus degree, date, message.
BodyVocabularyEntry3 fields
One entry in a per-dataset body_vocabulary list. Maps a free-form body_type to a short canonical value. SSOT for body_type -> canonical_type resolution within the declaring collection.
Consideration3 fields
The basis for a Decision: a verb + one effective date + reasoning.
Contact11 fields
VCARD-like abstract contact. v3.0: per-field Localized
(name, title, affiliation, address). Added urn (registry
identity) and ref (reference-by-URN).
URN reference; if set, ignore other fields
^urn:edoxen:contact:[^:]+:[^:]+$ContactCollection4 fields
Registry of Contacts indexed by scoped URN. Members carry
urn: urn:edoxen:contact:{scope}:{local-id}; the collection's
scope MUST match the scope segment in member URNs.
ContactIdentifier3 fields
One polymorphic external identifier — ORCID, ISNI, Wikidata QID,
ROR, Ringgold, GitHub handle, etc. Replaces the hard-coded orcid
field. OCP: new identifier schemes are added via the
ContactIdentifierKind enum (or other + extensions).
ContactMethod5 fields
One polymorphic communication channel — phone, email, fax, url,
mail, etc. kind discriminates the channel; value carries the
address/number; label is a free-form display hint ("Office",
"Front desk"). OCP: new channel kinds are added via the
ContactMethodKind enum (or other + extensions).
Decision23 fields
A formal Decision. v3.0: per-field Localized (every translatable
field carries its own spelling tag). Removed localizations[].
DecisionDate2 fields
Date with semantic kind (adoption / drafted / discussed).
DecisionMetadata9 fields
Collection-level metadata (localized title, meeting date, source, source URLs, host venue).
^[A-Z]{2}[A-Z0-9]{3}$^[A-Z]{2}$DecisionRelation3 fields
Directed relation between two decisions identified by their StructuredIdentifier.
EntityRef6 fields
Typed cross-reference between entities (v2.1, TODO.refactor/44).
Exactly one of urn, identifier, or local_ref should be set;
the gem's EntityRef#valid? enforces this in Ruby.
ExtensionAttribute8 fields
One typed key/value pair within a MeetingExtension. Polymorphic on value type so consumers don't re-parse strings back into Int/Float/ Bool/Date (v2.1 tighten, TODO.refactor/47).
HostRef4 fields
Typed reference to a hosting organization.
LocalizedName3 fields
One language-specific value of a translatable Name field. Mirrors LocalizedString but carries a structured Name.
LocalizedString3 fields
One language-specific value of a translatable String field.
spelling is an ISO 24229 spelling/conversion system code.
Always verbose — single-language data uses the same
[{ spelling, value }] shape as multi-language data.
MeetingComponent15 fields
Flat sub-event of a Meeting. v3.0: per-field Localized.
MeetingExtension4 fields
Profile-specific extension. Adopters register their namespace via
profile and discriminate via kind. Field semantics tightened
v2.1 (TODO.refactor/47): kind is the in-profile discriminator,
ref is the URN of an external profile document, and the
recursive extensions[] slot was removed (YAGNI — use dotted
keys in attributes[] for nesting).
MeetingSeries12 fields
Parent of recurring Meeting instances. v3.0: per-field Localized.
Motion12 fields
A procedural act that brings a Decision.
Name7 fields
Structured personal/organisational name (VCARD RFC 6350
conventions). formatted is the pre-built display string (FN);
the structured components (N) are stored separately for sorting,
indexing, or locale-aware rendering.
Officer5 fields
A person holding a structural role in a Meeting.
Person11 fields
A Contact that is specifically an individual human. Schema
duplicates Contact's properties because JSON-Schema draft-07
doesn't support extends. Same shape; semantically a subclass.
^urn:edoxen:contact:[^:]+:[^:]+$Recurrence15 fields
Structured ISO 8601-2 §13 recurrence.
RecurrenceByDay2 fields
BYDAY part of a recurrence. ordinal is null for 'every', +1 for first, -1 for last.
SourceUrl4 fields
Per-spelling canonical source URL (e.g. one PDF per language).
StructuredIdentifier2 fields
An identifier (prefix + number). A Decision carries 1..* of these.
Topic12 fields
The subject of discussion at a Meeting. v3.0: per-field Localized.
TopicAsset6 fields
Non-text resource about a Topic. v3.0: per-field Localized.
TopicDocument8 fields
Text-bearing document about a Topic. v3.0: per-field Localized.
ISO 24229 spelling/conversion system code
Url3 fields
URL with a kind (access / report) and an optional format hint.
Venue28 fields
Polymorphic place where a Meeting happens. kind discriminates
physical vs virtual; all fields from both subtypes live here as
optional siblings. v3.0: per-field Localized (name, label,
description, address, building, floor, room, access_notes).
Added urn (registry identity) and ref (reference-by-URN).
URN reference; if set, ignore other fields
^urn:edoxen:venue:[^:]+:[^:]+$^[A-Z]{2}[A-Z0-9]{3}$^[A-Z]{3}$^[A-Z]{2}$VenueCollection4 fields
Registry of Venues indexed by scoped URN. Mirrors ContactCollection.
VoteRecord8 fields
One vote by one person on one decision/voting.
Voting13 fields
State machine for a single vote on a Motion.
Download
- meeting.yaml — Meeting / MeetingCollection schema (YAML)
- decision-collection.yaml — Decision Collection schema (YAML)
Usage
CLI
edoxen validate decisions/*.yaml
edoxen validate-meetings meetings/*.yamlJavaScript / TypeScript
import { validateDecisions, validateMeetings } from '@edoxen/edoxen'
const result = await validateMeetings(parsedYaml)
if (!result.valid) {
result.errors.forEach(e => console.error(`${e.path}: ${e.message}`))
}