edoxen 0.7.2 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +26 -1
- data/.rubocop_todo.yml +1 -1
- data/CHANGELOG.md +133 -0
- data/README.adoc +414 -182
- data/edoxen.gemspec +10 -10
- data/lib/edoxen/action.rb +5 -4
- data/lib/edoxen/agenda.rb +4 -7
- data/lib/edoxen/agenda_item.rb +18 -5
- data/lib/edoxen/approval.rb +2 -2
- data/lib/edoxen/attendance.rb +16 -10
- data/lib/edoxen/body.rb +26 -0
- data/lib/edoxen/body_register.rb +17 -0
- data/lib/edoxen/body_vocabulary_entry.rb +24 -0
- data/lib/edoxen/body_vocabulary_host.rb +40 -0
- data/lib/edoxen/cli.rb +175 -115
- data/lib/edoxen/consideration.rb +6 -4
- data/lib/edoxen/contact.rb +37 -0
- data/lib/edoxen/contact_identifier.rb +13 -0
- data/lib/edoxen/contact_method.rb +16 -0
- data/lib/edoxen/contact_register.rb +26 -0
- data/lib/edoxen/date_time_range.rb +16 -0
- data/lib/edoxen/deadline.rb +1 -1
- data/lib/edoxen/decision.rb +57 -0
- data/lib/edoxen/decision_collection.rb +10 -0
- data/lib/edoxen/decision_date.rb +9 -0
- data/lib/edoxen/decision_metadata.rb +27 -0
- data/lib/edoxen/decision_relation.rb +11 -0
- data/lib/edoxen/declaration.rb +25 -0
- data/lib/edoxen/entity_ref.rb +74 -0
- data/lib/edoxen/entity_resolver.rb +68 -0
- data/lib/edoxen/enums.rb +123 -9
- data/lib/edoxen/error.rb +1 -1
- data/lib/edoxen/extension_attribute.rb +78 -0
- data/lib/edoxen/host_ref.rb +1 -1
- data/lib/edoxen/link_checker.rb +143 -34
- data/lib/edoxen/localized_name.rb +16 -0
- data/lib/edoxen/localized_string.rb +22 -0
- data/lib/edoxen/meeting.rb +36 -42
- data/lib/edoxen/meeting_collection.rb +1 -2
- data/lib/edoxen/meeting_collection_metadata.rb +4 -2
- data/lib/edoxen/meeting_component.rb +37 -0
- data/lib/edoxen/meeting_extension.rb +25 -0
- data/lib/edoxen/meeting_identifier.rb +1 -1
- data/lib/edoxen/meeting_series.rb +26 -0
- data/lib/edoxen/minutes.rb +3 -4
- data/lib/edoxen/minutes_section.rb +12 -13
- data/lib/edoxen/motion.rb +51 -0
- data/lib/edoxen/name.rb +29 -0
- data/lib/edoxen/officer.rb +19 -0
- data/lib/edoxen/officers_host.rb +19 -0
- data/lib/edoxen/person.rb +5 -9
- data/lib/edoxen/physical_venue.rb +15 -0
- data/lib/edoxen/recurrence.rb +27 -0
- data/lib/edoxen/recurrence_by_day.rb +10 -0
- data/lib/edoxen/reference.rb +1 -1
- data/lib/edoxen/reference_data.rb +34 -44
- data/lib/edoxen/schema_validator.rb +3 -4
- data/lib/edoxen/source_url.rb +4 -4
- data/lib/edoxen/statement.rb +21 -0
- data/lib/edoxen/structured_identifier.rb +2 -2
- data/lib/edoxen/topic.rb +39 -0
- data/lib/edoxen/topic_asset.rb +14 -0
- data/lib/edoxen/topic_document.rb +16 -0
- data/lib/edoxen/urn_for.rb +68 -0
- data/lib/edoxen/venue.rb +81 -0
- data/lib/edoxen/venue_register.rb +18 -0
- data/lib/edoxen/venue_validator.rb +74 -0
- data/lib/edoxen/version.rb +1 -1
- data/lib/edoxen/virtual_venue.rb +15 -0
- data/lib/edoxen/vote_record.rb +17 -13
- data/lib/edoxen/voting.rb +45 -0
- data/lib/edoxen/voting_counts.rb +23 -0
- data/lib/edoxen.rb +51 -15
- data/schema/edoxen.yaml +1427 -246
- data/schema/meeting.yaml +1311 -308
- data/sig/edoxen.rbs +581 -1
- metadata +66 -22
- data/lib/edoxen/_metadata.rb.deprecated +0 -57
- data/lib/edoxen/localization.rb +0 -18
- data/lib/edoxen/location.rb +0 -15
- data/lib/edoxen/meeting_localization.rb +0 -15
- data/lib/edoxen/resolution.rb +0 -43
- data/lib/edoxen/resolution_collection.rb +0 -10
- data/lib/edoxen/resolution_date.rb +0 -11
- data/lib/edoxen/resolution_metadata.rb +0 -30
- data/lib/edoxen/resolution_relation.rb +0 -11
- data/lib/edoxen/resolution_set.rb +0 -17
- data/lib/edoxen/schedule_item.rb +0 -27
- data/lib/edoxen/schedule_item_localization.rb +0 -21
data/schema/edoxen.yaml
CHANGED
|
@@ -1,237 +1,261 @@
|
|
|
1
1
|
---
|
|
2
|
-
$schema:
|
|
3
|
-
$id:
|
|
4
|
-
title:
|
|
2
|
+
"$schema": http://json-schema.org/draft-07/schema#
|
|
3
|
+
"$id": https://github.com/edoxen/edoxen-model/schema/decision-collection.yaml
|
|
4
|
+
title: Edoxen Decision Collection Schema
|
|
5
5
|
description: |
|
|
6
|
-
Schema for validating Edoxen
|
|
6
|
+
Schema for validating Edoxen decision-side YAML files.
|
|
7
|
+
|
|
8
|
+
Accepts three top-level document kinds via `oneOf`:
|
|
9
|
+
|
|
10
|
+
* `DecisionCollection` — the formal outcomes adopted by a Meeting.
|
|
11
|
+
* `ContactRegister` — a scoped-URN registry of Contacts.
|
|
12
|
+
* `VenueRegister` — a scoped-URN registry of Venues.
|
|
7
13
|
|
|
8
14
|
Mirrors the canonical LutaML information model in
|
|
9
15
|
https://github.com/edoxen/edoxen-model/tree/main/models .
|
|
10
16
|
|
|
11
|
-
The enum constants declared under `$defs`
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
asserts each one is character-for-character identical to the
|
|
16
|
-
corresponding `Edoxen::Enums::*` frozen array.
|
|
17
|
+
The enum constants declared under `$defs` are the authoritative wire
|
|
18
|
+
values. `spec/edoxen/schema_enum_sync_spec.rb` asserts each one is
|
|
19
|
+
character-for-character identical to the corresponding `Edoxen::Enums::*`
|
|
20
|
+
frozen array.
|
|
17
21
|
|
|
18
22
|
Trade-off: json_schemer's `valid_values` is not populated when an
|
|
19
23
|
`enum` is reached via `$ref`, so the validator's enum-violation
|
|
20
24
|
message degrades to "value ... is not one of: (see schema)". This
|
|
21
25
|
is documented in `Edoxen::SchemaValidator#format_message`.
|
|
22
26
|
type: object
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
27
|
+
oneOf:
|
|
28
|
+
- "$ref": "#/$defs/DecisionCollection"
|
|
29
|
+
- "$ref": "#/$defs/ContactRegister"
|
|
30
|
+
- "$ref": "#/$defs/VenueRegister"
|
|
31
|
+
- "$ref": "#/$defs/BodyRegister"
|
|
32
|
+
"$defs":
|
|
33
|
+
DecisionCollection:
|
|
34
|
+
type: object
|
|
35
|
+
description: |
|
|
36
|
+
Top-level container for a published decision collection: metadata
|
|
37
|
+
plus the list of decisions.
|
|
38
|
+
additionalProperties: false
|
|
39
|
+
properties:
|
|
40
|
+
metadata:
|
|
41
|
+
"$ref": "#/$defs/DecisionMetadata"
|
|
42
|
+
decisions:
|
|
43
|
+
type: array
|
|
44
|
+
items:
|
|
45
|
+
"$ref": "#/$defs/Decision"
|
|
46
|
+
required:
|
|
47
|
+
- decisions
|
|
42
48
|
StructuredIdentifier:
|
|
43
49
|
type: object
|
|
44
|
-
description:
|
|
50
|
+
description: An identifier (prefix + number). A Decision carries 1..* of these.
|
|
45
51
|
additionalProperties: false
|
|
46
|
-
required:
|
|
52
|
+
required:
|
|
53
|
+
- prefix
|
|
54
|
+
- number
|
|
47
55
|
properties:
|
|
48
56
|
prefix:
|
|
49
57
|
type: string
|
|
50
|
-
description: "Authority prefix, e.g. 'ISO', 'OIML', 'CIML'."
|
|
51
58
|
number:
|
|
52
59
|
type: string
|
|
53
|
-
|
|
54
|
-
|
|
60
|
+
EntityRef:
|
|
61
|
+
type: object
|
|
62
|
+
description: |
|
|
63
|
+
Typed cross-reference between entities (1.0, TODO.refactor/1.0-design).
|
|
64
|
+
Exactly one of `urn`, `identifier`, or `local_ref` should be set;
|
|
65
|
+
the gem's `EntityRef#valid?` enforces this in Ruby.
|
|
66
|
+
additionalProperties: false
|
|
67
|
+
properties:
|
|
68
|
+
urn:
|
|
69
|
+
type: string
|
|
70
|
+
identifier:
|
|
71
|
+
"$ref": "#/$defs/StructuredIdentifier"
|
|
72
|
+
local_ref:
|
|
73
|
+
type: string
|
|
74
|
+
kind:
|
|
75
|
+
type: string
|
|
76
|
+
role:
|
|
77
|
+
type: string
|
|
78
|
+
note:
|
|
79
|
+
type: string
|
|
55
80
|
MeetingIdentifier:
|
|
56
81
|
type: object
|
|
57
|
-
description:
|
|
82
|
+
description: Identifies the meeting a Decision belongs to.
|
|
58
83
|
additionalProperties: false
|
|
59
84
|
properties:
|
|
60
85
|
venue:
|
|
61
86
|
type: string
|
|
62
|
-
description: "Meeting venue name (free text)."
|
|
63
87
|
date:
|
|
64
88
|
type: string
|
|
65
89
|
format: date
|
|
66
|
-
description: "Meeting date."
|
|
67
|
-
|
|
68
90
|
Url:
|
|
69
91
|
type: object
|
|
70
|
-
description:
|
|
92
|
+
description: URL with a kind (access / report) and an optional format hint.
|
|
71
93
|
additionalProperties: false
|
|
72
|
-
required:
|
|
94
|
+
required:
|
|
95
|
+
- kind
|
|
96
|
+
- ref
|
|
73
97
|
properties:
|
|
74
98
|
kind:
|
|
75
|
-
$ref: "#/$defs/UrlKind"
|
|
99
|
+
"$ref": "#/$defs/UrlKind"
|
|
76
100
|
ref:
|
|
77
101
|
type: string
|
|
78
102
|
format:
|
|
79
103
|
type: string
|
|
80
|
-
|
|
81
|
-
ResolutionRelation:
|
|
104
|
+
DecisionRelation:
|
|
82
105
|
type: object
|
|
83
|
-
description:
|
|
106
|
+
description: Directed relation between two decisions identified by their StructuredIdentifier.
|
|
84
107
|
additionalProperties: false
|
|
85
|
-
required:
|
|
108
|
+
required:
|
|
109
|
+
- source
|
|
110
|
+
- destination
|
|
111
|
+
- type
|
|
86
112
|
properties:
|
|
87
113
|
source:
|
|
88
|
-
$ref: "#/$defs/StructuredIdentifier"
|
|
114
|
+
"$ref": "#/$defs/StructuredIdentifier"
|
|
89
115
|
destination:
|
|
90
|
-
$ref: "#/$defs/StructuredIdentifier"
|
|
116
|
+
"$ref": "#/$defs/StructuredIdentifier"
|
|
91
117
|
type:
|
|
92
|
-
$ref: "#/$defs/
|
|
93
|
-
|
|
94
|
-
# ====================================================================
|
|
95
|
-
# Date carriers.
|
|
96
|
-
# ====================================================================
|
|
97
|
-
|
|
98
|
-
ResolutionDate:
|
|
118
|
+
"$ref": "#/$defs/DecisionRelationType"
|
|
119
|
+
DecisionDate:
|
|
99
120
|
type: object
|
|
100
|
-
description:
|
|
121
|
+
description: Date with semantic kind (adoption / drafted / discussed).
|
|
101
122
|
additionalProperties: false
|
|
102
|
-
required:
|
|
123
|
+
required:
|
|
124
|
+
- date
|
|
125
|
+
- type
|
|
103
126
|
properties:
|
|
104
127
|
date:
|
|
105
128
|
type: string
|
|
106
129
|
format: date
|
|
107
|
-
description: "The date itself."
|
|
108
130
|
type:
|
|
109
|
-
$ref: "#/$defs/
|
|
110
|
-
|
|
111
|
-
# ====================================================================
|
|
112
|
-
# Per-localization sub-structures. Each is owned by exactly one
|
|
113
|
-
# Language; the language_code discriminator lives on Localization.
|
|
114
|
-
# ====================================================================
|
|
115
|
-
|
|
131
|
+
"$ref": "#/$defs/DecisionDateType"
|
|
116
132
|
Action:
|
|
117
133
|
type: object
|
|
118
|
-
description:
|
|
134
|
+
description: A verb + one effective date + human-readable message.
|
|
119
135
|
additionalProperties: false
|
|
120
|
-
required:
|
|
136
|
+
required:
|
|
137
|
+
- type
|
|
138
|
+
- message
|
|
139
|
+
- date_effective
|
|
121
140
|
properties:
|
|
122
141
|
type:
|
|
123
|
-
$ref: "#/$defs/ActionType"
|
|
142
|
+
"$ref": "#/$defs/ActionType"
|
|
124
143
|
date_effective:
|
|
125
|
-
$ref: "#/$defs/
|
|
144
|
+
"$ref": "#/$defs/DecisionDate"
|
|
126
145
|
message:
|
|
127
|
-
type:
|
|
128
|
-
|
|
146
|
+
type: array
|
|
147
|
+
items:
|
|
148
|
+
"$ref": "#/$defs/LocalizedString"
|
|
129
149
|
Approval:
|
|
130
150
|
type: object
|
|
131
|
-
description:
|
|
151
|
+
description: 'Approval record: vote type, consensus degree, date, message.'
|
|
132
152
|
additionalProperties: false
|
|
133
|
-
required:
|
|
153
|
+
required:
|
|
154
|
+
- type
|
|
155
|
+
- degree
|
|
156
|
+
- date
|
|
134
157
|
properties:
|
|
135
158
|
type:
|
|
136
|
-
$ref: "#/$defs/ApprovalType"
|
|
159
|
+
"$ref": "#/$defs/ApprovalType"
|
|
137
160
|
degree:
|
|
138
|
-
$ref: "#/$defs/ApprovalDegree"
|
|
161
|
+
"$ref": "#/$defs/ApprovalDegree"
|
|
139
162
|
date:
|
|
140
|
-
$ref: "#/$defs/
|
|
163
|
+
"$ref": "#/$defs/DecisionDate"
|
|
141
164
|
message:
|
|
142
|
-
type:
|
|
143
|
-
|
|
165
|
+
type: array
|
|
166
|
+
items:
|
|
167
|
+
"$ref": "#/$defs/LocalizedString"
|
|
144
168
|
Consideration:
|
|
145
169
|
type: object
|
|
146
|
-
description:
|
|
170
|
+
description: 'The basis for a Decision: a verb + one effective date + reasoning.'
|
|
147
171
|
additionalProperties: false
|
|
148
|
-
required:
|
|
172
|
+
required:
|
|
173
|
+
- type
|
|
174
|
+
- message
|
|
175
|
+
- date_effective
|
|
149
176
|
properties:
|
|
150
177
|
type:
|
|
151
|
-
$ref: "#/$defs/ConsiderationType"
|
|
178
|
+
"$ref": "#/$defs/ConsiderationType"
|
|
152
179
|
date_effective:
|
|
153
|
-
$ref: "#/$defs/
|
|
180
|
+
"$ref": "#/$defs/DecisionDate"
|
|
154
181
|
message:
|
|
155
|
-
type:
|
|
156
|
-
|
|
157
|
-
|
|
182
|
+
type: array
|
|
183
|
+
items:
|
|
184
|
+
"$ref": "#/$defs/LocalizedString"
|
|
185
|
+
LocalizedString:
|
|
158
186
|
type: object
|
|
159
187
|
description: |
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
188
|
+
One language-specific value of a translatable String field.
|
|
189
|
+
`spelling` is an ISO 24229 spelling/conversion system code.
|
|
190
|
+
Always verbose — single-language data uses the same
|
|
191
|
+
`[{ spelling, value }]` shape as multi-language data.
|
|
163
192
|
additionalProperties: false
|
|
164
|
-
required:
|
|
193
|
+
required:
|
|
194
|
+
- spelling
|
|
195
|
+
- value
|
|
165
196
|
properties:
|
|
166
|
-
|
|
167
|
-
type: string
|
|
168
|
-
pattern: "^[a-z]{3}$"
|
|
169
|
-
description: "ISO 639-3 three-letter language code (eng, fra, deu, spa, jpn, ...)."
|
|
170
|
-
script:
|
|
171
|
-
type: string
|
|
172
|
-
pattern: "^[A-Z][a-z]{3}$"
|
|
173
|
-
description: "ISO 15924 four-letter script code (Latn, Cyrl, Hant, Arab)."
|
|
174
|
-
title:
|
|
175
|
-
type: string
|
|
176
|
-
subject:
|
|
177
|
-
type: string
|
|
178
|
-
message:
|
|
197
|
+
spelling:
|
|
179
198
|
type: string
|
|
180
|
-
|
|
199
|
+
value:
|
|
181
200
|
type: string
|
|
182
|
-
|
|
183
|
-
type: array
|
|
184
|
-
items:
|
|
185
|
-
$ref: "#/$defs/Consideration"
|
|
186
|
-
approvals:
|
|
201
|
+
extensions:
|
|
187
202
|
type: array
|
|
188
203
|
items:
|
|
189
|
-
$ref: "#/$defs/
|
|
190
|
-
|
|
204
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
205
|
+
LocalizedName:
|
|
206
|
+
type: object
|
|
207
|
+
description: |
|
|
208
|
+
One language-specific value of a translatable Name field.
|
|
209
|
+
Mirrors LocalizedString but carries a structured Name.
|
|
210
|
+
additionalProperties: false
|
|
211
|
+
required:
|
|
212
|
+
- spelling
|
|
213
|
+
- value
|
|
214
|
+
properties:
|
|
215
|
+
spelling:
|
|
216
|
+
type: string
|
|
217
|
+
value:
|
|
218
|
+
"$ref": "#/$defs/Name"
|
|
219
|
+
extensions:
|
|
191
220
|
type: array
|
|
192
221
|
items:
|
|
193
|
-
$ref: "#/$defs/
|
|
194
|
-
|
|
222
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
195
223
|
SourceUrl:
|
|
196
224
|
type: object
|
|
197
|
-
description:
|
|
225
|
+
description: Per-spelling canonical source URL (e.g. one PDF per language).
|
|
198
226
|
additionalProperties: false
|
|
199
|
-
required:
|
|
227
|
+
required:
|
|
228
|
+
- ref
|
|
200
229
|
properties:
|
|
201
230
|
ref:
|
|
202
231
|
type: string
|
|
203
|
-
description: "The URL string."
|
|
204
232
|
format:
|
|
205
233
|
type: string
|
|
206
|
-
|
|
207
|
-
language_code:
|
|
234
|
+
spelling:
|
|
208
235
|
type: string
|
|
209
|
-
|
|
236
|
+
description: ISO 24229 spelling/conversion system code
|
|
210
237
|
kind:
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
enum: [agenda_pdf, minutes_pdf, resolutions_pdf, report_pdf, register_url, landing_page]
|
|
214
|
-
|
|
215
|
-
# ====================================================================
|
|
216
|
-
# Top-level structures.
|
|
217
|
-
# ====================================================================
|
|
218
|
-
|
|
219
|
-
Resolution:
|
|
238
|
+
"$ref": "#/$defs/SourceUrlKind"
|
|
239
|
+
Decision:
|
|
220
240
|
type: object
|
|
221
241
|
description: |
|
|
222
|
-
A formal
|
|
223
|
-
|
|
224
|
-
(one entry per available language; at least one is required).
|
|
242
|
+
A formal Decision. 1.0: per-field Localized (every translatable
|
|
243
|
+
field carries its own spelling tag). Removed `localizations[]`.
|
|
225
244
|
additionalProperties: false
|
|
226
|
-
required:
|
|
245
|
+
required:
|
|
246
|
+
- identifier
|
|
227
247
|
properties:
|
|
228
248
|
identifier:
|
|
229
249
|
type: array
|
|
230
250
|
minItems: 1
|
|
231
251
|
items:
|
|
232
|
-
$ref: "#/$defs/StructuredIdentifier"
|
|
233
|
-
|
|
234
|
-
$ref: "#/$defs/
|
|
252
|
+
"$ref": "#/$defs/StructuredIdentifier"
|
|
253
|
+
kind:
|
|
254
|
+
"$ref": "#/$defs/DecisionKind"
|
|
255
|
+
status:
|
|
256
|
+
"$ref": "#/$defs/DecisionStatus"
|
|
257
|
+
body_type:
|
|
258
|
+
type: string
|
|
235
259
|
doi:
|
|
236
260
|
type: string
|
|
237
261
|
urn:
|
|
@@ -241,150 +265,1307 @@ $defs:
|
|
|
241
265
|
dates:
|
|
242
266
|
type: array
|
|
243
267
|
items:
|
|
244
|
-
$ref: "#/$defs/
|
|
268
|
+
"$ref": "#/$defs/DecisionDate"
|
|
245
269
|
categories:
|
|
246
270
|
type: array
|
|
247
271
|
items:
|
|
248
272
|
type: string
|
|
249
273
|
meeting:
|
|
250
|
-
$ref: "#/$defs/MeetingIdentifier"
|
|
274
|
+
"$ref": "#/$defs/MeetingIdentifier"
|
|
251
275
|
relations:
|
|
252
276
|
type: array
|
|
253
277
|
items:
|
|
254
|
-
$ref: "#/$defs/
|
|
278
|
+
"$ref": "#/$defs/DecisionRelation"
|
|
255
279
|
urls:
|
|
256
280
|
type: array
|
|
257
281
|
items:
|
|
258
|
-
$ref: "#/$defs/Url"
|
|
259
|
-
|
|
282
|
+
"$ref": "#/$defs/Url"
|
|
283
|
+
brought_by_motions:
|
|
260
284
|
type: array
|
|
261
|
-
minItems: 1
|
|
262
285
|
items:
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
286
|
+
type: string
|
|
287
|
+
about_topics:
|
|
288
|
+
type: array
|
|
289
|
+
items:
|
|
290
|
+
type: string
|
|
291
|
+
made_in_component:
|
|
292
|
+
type: string
|
|
293
|
+
title:
|
|
294
|
+
type: array
|
|
295
|
+
items:
|
|
296
|
+
"$ref": "#/$defs/LocalizedString"
|
|
297
|
+
subject:
|
|
298
|
+
type: array
|
|
299
|
+
items:
|
|
300
|
+
"$ref": "#/$defs/LocalizedString"
|
|
301
|
+
message:
|
|
302
|
+
type: array
|
|
303
|
+
items:
|
|
304
|
+
"$ref": "#/$defs/LocalizedString"
|
|
305
|
+
considering:
|
|
306
|
+
type: array
|
|
307
|
+
items:
|
|
308
|
+
"$ref": "#/$defs/LocalizedString"
|
|
309
|
+
considerations:
|
|
310
|
+
type: array
|
|
311
|
+
items:
|
|
312
|
+
"$ref": "#/$defs/Consideration"
|
|
313
|
+
approvals:
|
|
314
|
+
type: array
|
|
315
|
+
items:
|
|
316
|
+
"$ref": "#/$defs/Approval"
|
|
317
|
+
actions:
|
|
318
|
+
type: array
|
|
319
|
+
items:
|
|
320
|
+
"$ref": "#/$defs/Action"
|
|
321
|
+
extensions:
|
|
322
|
+
type: array
|
|
323
|
+
items:
|
|
324
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
325
|
+
DecisionMetadata:
|
|
266
326
|
type: object
|
|
267
|
-
description:
|
|
327
|
+
description: Collection-level metadata (localized title, meeting date, source, source URLs, host venue).
|
|
268
328
|
additionalProperties: false
|
|
269
329
|
properties:
|
|
270
330
|
title:
|
|
271
|
-
type: string
|
|
272
|
-
description: "Default title (no language). For multilingual, use `title_localized[]`."
|
|
273
|
-
title_localized:
|
|
274
331
|
type: array
|
|
275
332
|
items:
|
|
276
|
-
$ref: "#/$defs/
|
|
277
|
-
description: "Per-language title records (parallel pattern to Resolution#localizations)."
|
|
333
|
+
"$ref": "#/$defs/LocalizedString"
|
|
278
334
|
date:
|
|
279
335
|
type: string
|
|
280
336
|
format: date
|
|
281
|
-
description: "Meeting date."
|
|
282
337
|
source:
|
|
283
338
|
type: string
|
|
284
|
-
description: "Source organization / secretariat that issued the collection."
|
|
285
339
|
source_urls:
|
|
286
340
|
type: array
|
|
287
341
|
items:
|
|
288
|
-
$ref: "#/$defs/SourceUrl"
|
|
289
|
-
description: "Canonical URLs to the source PDFs in each available language."
|
|
342
|
+
"$ref": "#/$defs/SourceUrl"
|
|
290
343
|
city:
|
|
291
344
|
type: string
|
|
292
345
|
pattern: "^[A-Z]{2}[A-Z0-9]{3}$"
|
|
293
|
-
description: "UN/LOCODE of the host city (5-char: 2-letter ISO 3166-1 country + 3-char location, e.g. FRPAR, CNSHA, HKHKG). Supersedes the IATA city code."
|
|
294
346
|
country_code:
|
|
295
347
|
type: string
|
|
296
|
-
|
|
348
|
+
pattern: "^[A-Z]{2}$"
|
|
297
349
|
meeting_urn:
|
|
298
350
|
type: string
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
type:
|
|
309
|
-
description:
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
type:
|
|
374
|
-
description:
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
351
|
+
body_vocabulary:
|
|
352
|
+
type: array
|
|
353
|
+
items:
|
|
354
|
+
"$ref": "#/$defs/BodyVocabularyEntry"
|
|
355
|
+
extensions:
|
|
356
|
+
type: array
|
|
357
|
+
items:
|
|
358
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
359
|
+
BodyVocabularyEntry:
|
|
360
|
+
type: object
|
|
361
|
+
description: |
|
|
362
|
+
One entry in a per-dataset body_vocabulary list. Maps a free-form
|
|
363
|
+
body_type to a short canonical value. SSOT for body_type ->
|
|
364
|
+
canonical_type resolution within the declaring collection.
|
|
365
|
+
additionalProperties: false
|
|
366
|
+
properties:
|
|
367
|
+
body_type:
|
|
368
|
+
type: string
|
|
369
|
+
canonical_type:
|
|
370
|
+
type: string
|
|
371
|
+
definition:
|
|
372
|
+
type: string
|
|
373
|
+
Motion:
|
|
374
|
+
type: object
|
|
375
|
+
description: A procedural act that brings a Decision.
|
|
376
|
+
additionalProperties: false
|
|
377
|
+
properties:
|
|
378
|
+
identifier:
|
|
379
|
+
type: string
|
|
380
|
+
urn:
|
|
381
|
+
type: string
|
|
382
|
+
text:
|
|
383
|
+
type: array
|
|
384
|
+
items:
|
|
385
|
+
"$ref": "#/$defs/LocalizedString"
|
|
386
|
+
mover:
|
|
387
|
+
"$ref": "#/$defs/Person"
|
|
388
|
+
seconders:
|
|
389
|
+
type: array
|
|
390
|
+
items:
|
|
391
|
+
"$ref": "#/$defs/Person"
|
|
392
|
+
status:
|
|
393
|
+
"$ref": "#/$defs/MotionStatus"
|
|
394
|
+
introduced_at:
|
|
395
|
+
type: string
|
|
396
|
+
format: date-time
|
|
397
|
+
proposed_decision:
|
|
398
|
+
type: string
|
|
399
|
+
resulting_decision:
|
|
400
|
+
type: string
|
|
401
|
+
resulting_decision_ref:
|
|
402
|
+
"$ref": "#/$defs/EntityRef"
|
|
403
|
+
votings:
|
|
404
|
+
type: array
|
|
405
|
+
items:
|
|
406
|
+
type: string
|
|
407
|
+
extensions:
|
|
408
|
+
type: array
|
|
409
|
+
items:
|
|
410
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
411
|
+
VotingCounts:
|
|
412
|
+
type: object
|
|
413
|
+
description: Tally for a Voting instance.
|
|
414
|
+
additionalProperties: false
|
|
415
|
+
properties:
|
|
416
|
+
ayes:
|
|
417
|
+
type: integer
|
|
418
|
+
noes:
|
|
419
|
+
type: integer
|
|
420
|
+
abstentions:
|
|
421
|
+
type: integer
|
|
422
|
+
absent:
|
|
423
|
+
type: integer
|
|
424
|
+
Voting:
|
|
425
|
+
type: object
|
|
426
|
+
description: State machine for a single vote on a Motion.
|
|
427
|
+
additionalProperties: false
|
|
428
|
+
properties:
|
|
429
|
+
identifier:
|
|
430
|
+
type: string
|
|
431
|
+
urn:
|
|
432
|
+
type: string
|
|
433
|
+
on_motion:
|
|
434
|
+
type: string
|
|
435
|
+
status:
|
|
436
|
+
"$ref": "#/$defs/VotingStatus"
|
|
437
|
+
voting_method:
|
|
438
|
+
"$ref": "#/$defs/VotingMethod"
|
|
439
|
+
called_by:
|
|
440
|
+
"$ref": "#/$defs/Person"
|
|
441
|
+
called_at:
|
|
442
|
+
type: string
|
|
443
|
+
format: date-time
|
|
444
|
+
result_declared_at:
|
|
445
|
+
type: string
|
|
446
|
+
format: date-time
|
|
447
|
+
result:
|
|
448
|
+
"$ref": "#/$defs/VotingOutcome"
|
|
449
|
+
counts:
|
|
450
|
+
"$ref": "#/$defs/VotingCounts"
|
|
451
|
+
casting_vote:
|
|
452
|
+
"$ref": "#/$defs/VoteRecord"
|
|
453
|
+
vote_records:
|
|
454
|
+
type: array
|
|
455
|
+
items:
|
|
456
|
+
"$ref": "#/$defs/VoteRecord"
|
|
457
|
+
extensions:
|
|
458
|
+
type: array
|
|
459
|
+
items:
|
|
460
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
461
|
+
TopicDocument:
|
|
462
|
+
type: object
|
|
463
|
+
description: 'Text-bearing document about a Topic. 1.0: per-field Localized.'
|
|
464
|
+
additionalProperties: false
|
|
465
|
+
properties:
|
|
466
|
+
identifier:
|
|
467
|
+
type: string
|
|
468
|
+
title:
|
|
469
|
+
type: array
|
|
470
|
+
items:
|
|
471
|
+
"$ref": "#/$defs/LocalizedString"
|
|
472
|
+
version:
|
|
473
|
+
type: string
|
|
474
|
+
status:
|
|
475
|
+
type: string
|
|
476
|
+
url:
|
|
477
|
+
type: string
|
|
478
|
+
format:
|
|
479
|
+
type: string
|
|
480
|
+
spelling:
|
|
481
|
+
type: string
|
|
482
|
+
description: ISO 24229 spelling/conversion system code
|
|
483
|
+
extensions:
|
|
484
|
+
type: array
|
|
485
|
+
items:
|
|
486
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
487
|
+
TopicAsset:
|
|
488
|
+
type: object
|
|
489
|
+
description: 'Non-text resource about a Topic. 1.0: per-field Localized.'
|
|
490
|
+
additionalProperties: false
|
|
491
|
+
properties:
|
|
492
|
+
identifier:
|
|
493
|
+
type: string
|
|
494
|
+
title:
|
|
495
|
+
type: array
|
|
496
|
+
items:
|
|
497
|
+
"$ref": "#/$defs/LocalizedString"
|
|
498
|
+
kind:
|
|
499
|
+
type: string
|
|
500
|
+
url:
|
|
501
|
+
type: string
|
|
502
|
+
format:
|
|
503
|
+
type: string
|
|
504
|
+
extensions:
|
|
505
|
+
type: array
|
|
506
|
+
items:
|
|
507
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
508
|
+
Topic:
|
|
509
|
+
type: object
|
|
510
|
+
description: 'The subject of discussion at a Meeting. 1.0: per-field Localized.'
|
|
511
|
+
additionalProperties: false
|
|
512
|
+
properties:
|
|
513
|
+
identifier:
|
|
514
|
+
type: string
|
|
515
|
+
urn:
|
|
516
|
+
type: string
|
|
517
|
+
title:
|
|
518
|
+
type: array
|
|
519
|
+
items:
|
|
520
|
+
"$ref": "#/$defs/LocalizedString"
|
|
521
|
+
description:
|
|
522
|
+
type: array
|
|
523
|
+
items:
|
|
524
|
+
"$ref": "#/$defs/LocalizedString"
|
|
525
|
+
status:
|
|
526
|
+
"$ref": "#/$defs/TopicStatus"
|
|
527
|
+
resumption_of:
|
|
528
|
+
type: string
|
|
529
|
+
documents:
|
|
530
|
+
type: array
|
|
531
|
+
items:
|
|
532
|
+
"$ref": "#/$defs/TopicDocument"
|
|
533
|
+
assets:
|
|
534
|
+
type: array
|
|
535
|
+
items:
|
|
536
|
+
"$ref": "#/$defs/TopicAsset"
|
|
537
|
+
references:
|
|
538
|
+
type: array
|
|
539
|
+
items:
|
|
540
|
+
"$ref": "#/$defs/Reference"
|
|
541
|
+
motions:
|
|
542
|
+
type: array
|
|
543
|
+
items:
|
|
544
|
+
type: string
|
|
545
|
+
decisions:
|
|
546
|
+
type: array
|
|
547
|
+
items:
|
|
548
|
+
type: string
|
|
549
|
+
statements:
|
|
550
|
+
type: array
|
|
551
|
+
items:
|
|
552
|
+
"$ref": "#/$defs/Statement"
|
|
553
|
+
declarations:
|
|
554
|
+
type: array
|
|
555
|
+
items:
|
|
556
|
+
"$ref": "#/$defs/Declaration"
|
|
557
|
+
extensions:
|
|
558
|
+
type: array
|
|
559
|
+
items:
|
|
560
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
561
|
+
Venue:
|
|
562
|
+
type: object
|
|
563
|
+
description: |
|
|
564
|
+
Polymorphic place where a Meeting happens. `kind` discriminates
|
|
565
|
+
physical vs virtual; all fields from both subtypes live here as
|
|
566
|
+
optional siblings. 1.0: per-field Localized (name, label,
|
|
567
|
+
description, address, building, floor, room, access_notes).
|
|
568
|
+
Added `urn` (registry identity) and `ref` (reference-by-URN).
|
|
569
|
+
additionalProperties: false
|
|
570
|
+
properties:
|
|
571
|
+
ref:
|
|
572
|
+
type: string
|
|
573
|
+
local_ref:
|
|
574
|
+
type: string
|
|
575
|
+
urn:
|
|
576
|
+
type: string
|
|
577
|
+
pattern: "^urn:edoxen:venue:[^:]+:[^:]+$"
|
|
578
|
+
kind:
|
|
579
|
+
"$ref": "#/$defs/VenueKind"
|
|
580
|
+
name:
|
|
581
|
+
type: array
|
|
582
|
+
items:
|
|
583
|
+
"$ref": "#/$defs/LocalizedString"
|
|
584
|
+
label:
|
|
585
|
+
type: array
|
|
586
|
+
items:
|
|
587
|
+
"$ref": "#/$defs/LocalizedString"
|
|
588
|
+
description:
|
|
589
|
+
type: array
|
|
590
|
+
items:
|
|
591
|
+
"$ref": "#/$defs/LocalizedString"
|
|
592
|
+
capacity:
|
|
593
|
+
type: integer
|
|
594
|
+
url:
|
|
595
|
+
type: string
|
|
596
|
+
contact_methods:
|
|
597
|
+
type: array
|
|
598
|
+
items:
|
|
599
|
+
"$ref": "#/$defs/ContactMethod"
|
|
600
|
+
unlocode:
|
|
601
|
+
type: string
|
|
602
|
+
pattern: "^[A-Z]{2}[A-Z0-9]{3}$"
|
|
603
|
+
iata_code:
|
|
604
|
+
type: string
|
|
605
|
+
pattern: "^[A-Z]{3}$"
|
|
606
|
+
address:
|
|
607
|
+
type: array
|
|
608
|
+
items:
|
|
609
|
+
"$ref": "#/$defs/LocalizedString"
|
|
610
|
+
city:
|
|
611
|
+
type: string
|
|
612
|
+
country_code:
|
|
613
|
+
type: string
|
|
614
|
+
pattern: "^[A-Z]{2}$"
|
|
615
|
+
lat:
|
|
616
|
+
type: number
|
|
617
|
+
lon:
|
|
618
|
+
type: number
|
|
619
|
+
building:
|
|
620
|
+
type: array
|
|
621
|
+
items:
|
|
622
|
+
"$ref": "#/$defs/LocalizedString"
|
|
623
|
+
floor:
|
|
624
|
+
type: array
|
|
625
|
+
items:
|
|
626
|
+
"$ref": "#/$defs/LocalizedString"
|
|
627
|
+
room:
|
|
628
|
+
type: array
|
|
629
|
+
items:
|
|
630
|
+
"$ref": "#/$defs/LocalizedString"
|
|
631
|
+
access_notes:
|
|
632
|
+
type: array
|
|
633
|
+
items:
|
|
634
|
+
"$ref": "#/$defs/LocalizedString"
|
|
635
|
+
uri:
|
|
636
|
+
type: string
|
|
637
|
+
features:
|
|
638
|
+
type: array
|
|
639
|
+
items:
|
|
640
|
+
"$ref": "#/$defs/VirtualFeature"
|
|
641
|
+
passcode:
|
|
642
|
+
type: string
|
|
643
|
+
meeting_id:
|
|
644
|
+
type: string
|
|
645
|
+
dial_in_numbers:
|
|
646
|
+
type: array
|
|
647
|
+
items:
|
|
648
|
+
type: string
|
|
649
|
+
waiting_room:
|
|
650
|
+
type: boolean
|
|
651
|
+
registration_required:
|
|
652
|
+
type: boolean
|
|
653
|
+
extensions:
|
|
654
|
+
type: array
|
|
655
|
+
items:
|
|
656
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
657
|
+
PhysicalVenue:
|
|
658
|
+
description: Marker — Venue with kind=physical. Wire shape is identical to Venue.
|
|
659
|
+
allOf:
|
|
660
|
+
- "$ref": "#/$defs/Venue"
|
|
661
|
+
VirtualVenue:
|
|
662
|
+
description: Marker — Venue with kind=virtual. Wire shape is identical to Venue.
|
|
663
|
+
allOf:
|
|
664
|
+
- "$ref": "#/$defs/Venue"
|
|
665
|
+
RecurrenceByDay:
|
|
666
|
+
type: object
|
|
667
|
+
description: BYDAY part of a recurrence. `ordinal` is null for 'every', +1 for first, -1 for last.
|
|
668
|
+
additionalProperties: false
|
|
669
|
+
properties:
|
|
670
|
+
ordinal:
|
|
671
|
+
type: integer
|
|
672
|
+
weekday:
|
|
673
|
+
type: string
|
|
674
|
+
Recurrence:
|
|
675
|
+
type: object
|
|
676
|
+
description: Structured ISO 8601-2 §13 recurrence.
|
|
677
|
+
additionalProperties: false
|
|
678
|
+
properties:
|
|
679
|
+
freq:
|
|
680
|
+
"$ref": "#/$defs/RecurrenceFreq"
|
|
681
|
+
interval:
|
|
682
|
+
type: integer
|
|
683
|
+
count:
|
|
684
|
+
type: integer
|
|
685
|
+
until:
|
|
686
|
+
type: string
|
|
687
|
+
format: date-time
|
|
688
|
+
by_day:
|
|
689
|
+
type: array
|
|
690
|
+
items:
|
|
691
|
+
"$ref": "#/$defs/RecurrenceByDay"
|
|
692
|
+
by_month_day:
|
|
693
|
+
type: array
|
|
694
|
+
items:
|
|
695
|
+
type: integer
|
|
696
|
+
by_month:
|
|
697
|
+
type: array
|
|
698
|
+
items:
|
|
699
|
+
type: integer
|
|
700
|
+
by_week_no:
|
|
701
|
+
type: array
|
|
702
|
+
items:
|
|
703
|
+
type: integer
|
|
704
|
+
by_year_day:
|
|
705
|
+
type: array
|
|
706
|
+
items:
|
|
707
|
+
type: integer
|
|
708
|
+
by_hour:
|
|
709
|
+
type: array
|
|
710
|
+
items:
|
|
711
|
+
type: integer
|
|
712
|
+
by_minute:
|
|
713
|
+
type: array
|
|
714
|
+
items:
|
|
715
|
+
type: integer
|
|
716
|
+
by_second:
|
|
717
|
+
type: array
|
|
718
|
+
items:
|
|
719
|
+
type: integer
|
|
720
|
+
by_set_pos:
|
|
721
|
+
type: array
|
|
722
|
+
items:
|
|
723
|
+
type: integer
|
|
724
|
+
week_start:
|
|
725
|
+
type: string
|
|
726
|
+
extensions:
|
|
727
|
+
type: array
|
|
728
|
+
items:
|
|
729
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
730
|
+
ExtensionAttribute:
|
|
731
|
+
type: object
|
|
732
|
+
description: |
|
|
733
|
+
One typed key/value pair within a MeetingExtension. Polymorphic on
|
|
734
|
+
value type so consumers don't re-parse strings back into Int/Float/
|
|
735
|
+
Bool/Date (1.0 tighten, TODO.refactor/1.0-design).
|
|
736
|
+
additionalProperties: false
|
|
737
|
+
properties:
|
|
738
|
+
key:
|
|
739
|
+
type: string
|
|
740
|
+
type:
|
|
741
|
+
type: string
|
|
742
|
+
enum:
|
|
743
|
+
- string
|
|
744
|
+
- integer
|
|
745
|
+
- float
|
|
746
|
+
- boolean
|
|
747
|
+
- date
|
|
748
|
+
- datetime
|
|
749
|
+
value:
|
|
750
|
+
type: string
|
|
751
|
+
intValue:
|
|
752
|
+
type: integer
|
|
753
|
+
floatValue:
|
|
754
|
+
type: number
|
|
755
|
+
booleanValue:
|
|
756
|
+
type: boolean
|
|
757
|
+
dateValue:
|
|
758
|
+
type: string
|
|
759
|
+
format: date
|
|
760
|
+
dateTimeValue:
|
|
761
|
+
type: string
|
|
762
|
+
format: date-time
|
|
763
|
+
MeetingExtension:
|
|
764
|
+
type: object
|
|
765
|
+
description: |
|
|
766
|
+
Profile-specific extension. Adopters register their namespace via
|
|
767
|
+
`profile` and discriminate via `kind`. Field semantics tightened
|
|
768
|
+
1.0 (TODO.refactor/1.0-design): `kind` is the in-profile discriminator,
|
|
769
|
+
`ref` is the URN of an external profile document, and the
|
|
770
|
+
recursive `extensions[]` slot was removed (YAGNI — use dotted
|
|
771
|
+
keys in `attributes[]` for nesting).
|
|
772
|
+
additionalProperties: false
|
|
773
|
+
properties:
|
|
774
|
+
profile:
|
|
775
|
+
type: string
|
|
776
|
+
kind:
|
|
777
|
+
type: string
|
|
778
|
+
ref:
|
|
779
|
+
type: string
|
|
780
|
+
attributes:
|
|
781
|
+
type: array
|
|
782
|
+
items:
|
|
783
|
+
"$ref": "#/$defs/ExtensionAttribute"
|
|
784
|
+
ContactMethodKind:
|
|
785
|
+
type: string
|
|
786
|
+
description: Polymorphic communication channel kind.
|
|
787
|
+
enum:
|
|
788
|
+
- phone
|
|
789
|
+
- mobile
|
|
790
|
+
- fax
|
|
791
|
+
- email
|
|
792
|
+
- url
|
|
793
|
+
- mail
|
|
794
|
+
- pager
|
|
795
|
+
- message
|
|
796
|
+
- other
|
|
797
|
+
ContactMethod:
|
|
798
|
+
type: object
|
|
799
|
+
description: |
|
|
800
|
+
One polymorphic communication channel — phone, email, fax, url,
|
|
801
|
+
mail, etc. `kind` discriminates the channel; `value` carries the
|
|
802
|
+
address/number; `label` is a free-form display hint ("Office",
|
|
803
|
+
"Front desk"). OCP: new channel kinds are added via the
|
|
804
|
+
ContactMethodKind enum (or `other` + extensions).
|
|
805
|
+
additionalProperties: false
|
|
806
|
+
properties:
|
|
807
|
+
kind:
|
|
808
|
+
"$ref": "#/$defs/ContactMethodKind"
|
|
809
|
+
value:
|
|
810
|
+
type: string
|
|
811
|
+
label:
|
|
812
|
+
type: string
|
|
813
|
+
primary:
|
|
814
|
+
type: boolean
|
|
815
|
+
extensions:
|
|
816
|
+
type: array
|
|
817
|
+
items:
|
|
818
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
819
|
+
ContactIdentifierKind:
|
|
820
|
+
type: string
|
|
821
|
+
description: Polymorphic external identifier scheme for a Contact.
|
|
822
|
+
enum:
|
|
823
|
+
- orcid
|
|
824
|
+
- isni
|
|
825
|
+
- wikidata
|
|
826
|
+
- ror
|
|
827
|
+
- ringgold
|
|
828
|
+
- github
|
|
829
|
+
- other
|
|
830
|
+
ContactIdentifier:
|
|
831
|
+
type: object
|
|
832
|
+
description: |
|
|
833
|
+
One polymorphic external identifier — ORCID, ISNI, Wikidata QID,
|
|
834
|
+
ROR, Ringgold, GitHub handle, etc. Replaces the hard-coded `orcid`
|
|
835
|
+
field. OCP: new identifier schemes are added via the
|
|
836
|
+
ContactIdentifierKind enum (or `other` + extensions).
|
|
837
|
+
additionalProperties: false
|
|
838
|
+
properties:
|
|
839
|
+
kind:
|
|
840
|
+
"$ref": "#/$defs/ContactIdentifierKind"
|
|
841
|
+
value:
|
|
842
|
+
type: string
|
|
843
|
+
extensions:
|
|
844
|
+
type: array
|
|
845
|
+
items:
|
|
846
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
847
|
+
Name:
|
|
848
|
+
type: object
|
|
849
|
+
description: |
|
|
850
|
+
Structured personal/organisational name (VCARD RFC 6350
|
|
851
|
+
conventions). `formatted` is the pre-built display string (FN);
|
|
852
|
+
the structured components (N) are stored separately for sorting,
|
|
853
|
+
indexing, or locale-aware rendering.
|
|
854
|
+
additionalProperties: false
|
|
855
|
+
properties:
|
|
856
|
+
formatted:
|
|
857
|
+
type: string
|
|
858
|
+
family:
|
|
859
|
+
type: string
|
|
860
|
+
given:
|
|
861
|
+
type: string
|
|
862
|
+
additional:
|
|
863
|
+
type: string
|
|
864
|
+
prefix:
|
|
865
|
+
type: string
|
|
866
|
+
suffix:
|
|
867
|
+
type: string
|
|
868
|
+
extensions:
|
|
869
|
+
type: array
|
|
870
|
+
items:
|
|
871
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
872
|
+
Contact:
|
|
873
|
+
type: object
|
|
874
|
+
description: |
|
|
875
|
+
VCARD-like abstract contact. 1.0: per-field Localized
|
|
876
|
+
(name, title, affiliation, address). Added `urn` (registry
|
|
877
|
+
identity) and `ref` (reference-by-URN).
|
|
878
|
+
additionalProperties: false
|
|
879
|
+
properties:
|
|
880
|
+
ref:
|
|
881
|
+
type: string
|
|
882
|
+
local_ref:
|
|
883
|
+
type: string
|
|
884
|
+
urn:
|
|
885
|
+
type: string
|
|
886
|
+
pattern: "^urn:edoxen:contact:[^:]+:[^:]+$"
|
|
887
|
+
name:
|
|
888
|
+
type: array
|
|
889
|
+
items:
|
|
890
|
+
"$ref": "#/$defs/LocalizedName"
|
|
891
|
+
kind:
|
|
892
|
+
type: string
|
|
893
|
+
role:
|
|
894
|
+
type: string
|
|
895
|
+
title:
|
|
896
|
+
type: array
|
|
897
|
+
items:
|
|
898
|
+
"$ref": "#/$defs/LocalizedString"
|
|
899
|
+
affiliation:
|
|
900
|
+
type: array
|
|
901
|
+
items:
|
|
902
|
+
"$ref": "#/$defs/LocalizedString"
|
|
903
|
+
contact_methods:
|
|
904
|
+
type: array
|
|
905
|
+
items:
|
|
906
|
+
"$ref": "#/$defs/ContactMethod"
|
|
907
|
+
identifiers:
|
|
908
|
+
type: array
|
|
909
|
+
items:
|
|
910
|
+
"$ref": "#/$defs/ContactIdentifier"
|
|
911
|
+
address:
|
|
912
|
+
type: array
|
|
913
|
+
items:
|
|
914
|
+
"$ref": "#/$defs/LocalizedString"
|
|
915
|
+
extensions:
|
|
916
|
+
type: array
|
|
917
|
+
items:
|
|
918
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
919
|
+
Person:
|
|
920
|
+
type: object
|
|
921
|
+
description: |
|
|
922
|
+
A Contact that is specifically an individual human. Schema
|
|
923
|
+
duplicates Contact's properties because JSON-Schema draft-07
|
|
924
|
+
doesn't support `extends`. Same shape; semantically a subclass.
|
|
925
|
+
additionalProperties: false
|
|
926
|
+
properties:
|
|
927
|
+
ref:
|
|
928
|
+
type: string
|
|
929
|
+
local_ref:
|
|
930
|
+
type: string
|
|
931
|
+
urn:
|
|
932
|
+
type: string
|
|
933
|
+
pattern: "^urn:edoxen:contact:[^:]+:[^:]+$"
|
|
934
|
+
name:
|
|
935
|
+
type: array
|
|
936
|
+
items:
|
|
937
|
+
"$ref": "#/$defs/LocalizedName"
|
|
938
|
+
kind:
|
|
939
|
+
type: string
|
|
940
|
+
role:
|
|
941
|
+
type: string
|
|
942
|
+
title:
|
|
943
|
+
type: array
|
|
944
|
+
items:
|
|
945
|
+
"$ref": "#/$defs/LocalizedString"
|
|
946
|
+
affiliation:
|
|
947
|
+
type: array
|
|
948
|
+
items:
|
|
949
|
+
"$ref": "#/$defs/LocalizedString"
|
|
950
|
+
contact_methods:
|
|
951
|
+
type: array
|
|
952
|
+
items:
|
|
953
|
+
"$ref": "#/$defs/ContactMethod"
|
|
954
|
+
identifiers:
|
|
955
|
+
type: array
|
|
956
|
+
items:
|
|
957
|
+
"$ref": "#/$defs/ContactIdentifier"
|
|
958
|
+
address:
|
|
959
|
+
type: array
|
|
960
|
+
items:
|
|
961
|
+
"$ref": "#/$defs/LocalizedString"
|
|
962
|
+
extensions:
|
|
963
|
+
type: array
|
|
964
|
+
items:
|
|
965
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
966
|
+
Reference:
|
|
967
|
+
type: object
|
|
968
|
+
description: Generic document reference.
|
|
969
|
+
additionalProperties: false
|
|
970
|
+
properties:
|
|
971
|
+
ref:
|
|
972
|
+
type: string
|
|
973
|
+
kind:
|
|
974
|
+
type: string
|
|
975
|
+
title:
|
|
976
|
+
type: array
|
|
977
|
+
items:
|
|
978
|
+
"$ref": "#/$defs/LocalizedString"
|
|
979
|
+
VoteRecord:
|
|
980
|
+
type: object
|
|
981
|
+
description: One vote by one person on one decision/voting.
|
|
982
|
+
additionalProperties: false
|
|
983
|
+
required:
|
|
984
|
+
- person
|
|
985
|
+
- vote
|
|
986
|
+
properties:
|
|
987
|
+
decision_ref:
|
|
988
|
+
type: string
|
|
989
|
+
voting_ref:
|
|
990
|
+
type: string
|
|
991
|
+
person:
|
|
992
|
+
"$ref": "#/$defs/Person"
|
|
993
|
+
affiliation:
|
|
994
|
+
type: string
|
|
995
|
+
vote:
|
|
996
|
+
"$ref": "#/$defs/VoteType"
|
|
997
|
+
role:
|
|
998
|
+
type: string
|
|
999
|
+
notes:
|
|
1000
|
+
type: string
|
|
1001
|
+
extensions:
|
|
1002
|
+
type: array
|
|
1003
|
+
items:
|
|
1004
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
1005
|
+
Officer:
|
|
1006
|
+
type: object
|
|
1007
|
+
description: A person holding a structural role in a Meeting.
|
|
1008
|
+
additionalProperties: false
|
|
1009
|
+
properties:
|
|
1010
|
+
role:
|
|
1011
|
+
"$ref": "#/$defs/OfficerRole"
|
|
1012
|
+
person:
|
|
1013
|
+
"$ref": "#/$defs/Person"
|
|
1014
|
+
term_start:
|
|
1015
|
+
type: string
|
|
1016
|
+
format: date
|
|
1017
|
+
term_end:
|
|
1018
|
+
type: string
|
|
1019
|
+
format: date
|
|
1020
|
+
extensions:
|
|
1021
|
+
type: array
|
|
1022
|
+
items:
|
|
1023
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
1024
|
+
MeetingComponent:
|
|
1025
|
+
type: object
|
|
1026
|
+
description: 'Flat sub-event of a Meeting. 1.0: per-field Localized.'
|
|
1027
|
+
additionalProperties: false
|
|
1028
|
+
properties:
|
|
1029
|
+
identifier:
|
|
1030
|
+
type: string
|
|
1031
|
+
urn:
|
|
1032
|
+
type: string
|
|
1033
|
+
kind:
|
|
1034
|
+
"$ref": "#/$defs/ComponentKind"
|
|
1035
|
+
body_type:
|
|
1036
|
+
type: string
|
|
1037
|
+
title:
|
|
1038
|
+
type: array
|
|
1039
|
+
items:
|
|
1040
|
+
"$ref": "#/$defs/LocalizedString"
|
|
1041
|
+
description:
|
|
1042
|
+
type: array
|
|
1043
|
+
items:
|
|
1044
|
+
"$ref": "#/$defs/LocalizedString"
|
|
1045
|
+
starts_at:
|
|
1046
|
+
type: string
|
|
1047
|
+
format: date-time
|
|
1048
|
+
ends_at:
|
|
1049
|
+
type: string
|
|
1050
|
+
format: date-time
|
|
1051
|
+
time_label:
|
|
1052
|
+
type: array
|
|
1053
|
+
items:
|
|
1054
|
+
"$ref": "#/$defs/LocalizedString"
|
|
1055
|
+
venue_refs:
|
|
1056
|
+
type: array
|
|
1057
|
+
items:
|
|
1058
|
+
type: string
|
|
1059
|
+
officers:
|
|
1060
|
+
type: array
|
|
1061
|
+
items:
|
|
1062
|
+
"$ref": "#/$defs/Officer"
|
|
1063
|
+
agenda_ref:
|
|
1064
|
+
type: string
|
|
1065
|
+
minutes_ref:
|
|
1066
|
+
type: string
|
|
1067
|
+
attendance_refs:
|
|
1068
|
+
type: array
|
|
1069
|
+
items:
|
|
1070
|
+
type: string
|
|
1071
|
+
extensions:
|
|
1072
|
+
type: array
|
|
1073
|
+
items:
|
|
1074
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
1075
|
+
MeetingSeries:
|
|
1076
|
+
type: object
|
|
1077
|
+
description: 'Parent of recurring Meeting instances. 1.0: per-field Localized.'
|
|
1078
|
+
additionalProperties: false
|
|
1079
|
+
properties:
|
|
1080
|
+
identifier:
|
|
1081
|
+
type: array
|
|
1082
|
+
items:
|
|
1083
|
+
"$ref": "#/$defs/StructuredIdentifier"
|
|
1084
|
+
urn:
|
|
1085
|
+
type: string
|
|
1086
|
+
name:
|
|
1087
|
+
type: array
|
|
1088
|
+
items:
|
|
1089
|
+
"$ref": "#/$defs/LocalizedString"
|
|
1090
|
+
description:
|
|
1091
|
+
type: array
|
|
1092
|
+
items:
|
|
1093
|
+
"$ref": "#/$defs/LocalizedString"
|
|
1094
|
+
recurrence:
|
|
1095
|
+
"$ref": "#/$defs/Recurrence"
|
|
1096
|
+
term:
|
|
1097
|
+
type: string
|
|
1098
|
+
contact:
|
|
1099
|
+
"$ref": "#/$defs/Contact"
|
|
1100
|
+
hosts:
|
|
1101
|
+
type: array
|
|
1102
|
+
items:
|
|
1103
|
+
"$ref": "#/$defs/HostRef"
|
|
1104
|
+
kind:
|
|
1105
|
+
type: string
|
|
1106
|
+
meeting_refs:
|
|
1107
|
+
type: array
|
|
1108
|
+
items:
|
|
1109
|
+
type: string
|
|
1110
|
+
extensions:
|
|
1111
|
+
type: array
|
|
1112
|
+
items:
|
|
1113
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
1114
|
+
body_type:
|
|
1115
|
+
type: string
|
|
1116
|
+
HostRef:
|
|
1117
|
+
type: object
|
|
1118
|
+
description: Typed reference to a hosting organization.
|
|
1119
|
+
additionalProperties: false
|
|
1120
|
+
required:
|
|
1121
|
+
- ref
|
|
1122
|
+
properties:
|
|
1123
|
+
ref:
|
|
1124
|
+
type: string
|
|
1125
|
+
type:
|
|
1126
|
+
"$ref": "#/$defs/HostType"
|
|
1127
|
+
role:
|
|
1128
|
+
type: string
|
|
1129
|
+
contact:
|
|
1130
|
+
"$ref": "#/$defs/Contact"
|
|
1131
|
+
ContactRegister:
|
|
1132
|
+
type: object
|
|
1133
|
+
description: |
|
|
1134
|
+
Registry of Contacts indexed by scoped URN. Members carry
|
|
1135
|
+
`urn: urn:edoxen:contact:{scope}:{local-id}`; the collection's
|
|
1136
|
+
`scope` MUST match the scope segment in member URNs.
|
|
1137
|
+
additionalProperties: false
|
|
1138
|
+
properties:
|
|
1139
|
+
scope:
|
|
1140
|
+
type: string
|
|
1141
|
+
title:
|
|
1142
|
+
type: array
|
|
1143
|
+
items:
|
|
1144
|
+
"$ref": "#/$defs/LocalizedString"
|
|
1145
|
+
contacts:
|
|
1146
|
+
type: array
|
|
1147
|
+
items:
|
|
1148
|
+
"$ref": "#/$defs/Contact"
|
|
1149
|
+
extensions:
|
|
1150
|
+
type: array
|
|
1151
|
+
items:
|
|
1152
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
1153
|
+
VenueRegister:
|
|
1154
|
+
type: object
|
|
1155
|
+
description: 'Registry of Venues indexed by scoped URN. Mirrors ContactRegister.
|
|
1156
|
+
|
|
1157
|
+
'
|
|
1158
|
+
additionalProperties: false
|
|
1159
|
+
properties:
|
|
1160
|
+
scope:
|
|
1161
|
+
type: string
|
|
1162
|
+
title:
|
|
1163
|
+
type: array
|
|
1164
|
+
items:
|
|
1165
|
+
"$ref": "#/$defs/LocalizedString"
|
|
1166
|
+
venues:
|
|
1167
|
+
type: array
|
|
1168
|
+
items:
|
|
1169
|
+
"$ref": "#/$defs/Venue"
|
|
1170
|
+
extensions:
|
|
1171
|
+
type: array
|
|
1172
|
+
items:
|
|
1173
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
1174
|
+
ActionType:
|
|
1175
|
+
type: string
|
|
1176
|
+
description: |
|
|
1177
|
+
Action verb. Edoxen::Enums::ACTION_TYPE lists the canonical set
|
|
1178
|
+
(28 values). The schema is permissive — adopters may use
|
|
1179
|
+
body-specific verbs (e.g. "scopes", "directs", "establishes")
|
|
1180
|
+
outside the canonical set. The canonical set is advisory; the
|
|
1181
|
+
body_vocabulary mechanism (1.0, TODO.refactor/1.0-design) will
|
|
1182
|
+
eventually map body-specific verbs to canonical types.
|
|
1183
|
+
ConsiderationType:
|
|
1184
|
+
type: string
|
|
1185
|
+
description: |
|
|
1186
|
+
Consideration verb. Edoxen::Enums::CONSIDERATION_TYPE lists the
|
|
1187
|
+
canonical set. The schema is permissive — adopters may use
|
|
1188
|
+
body-specific verbs outside the canonical set (same rationale as
|
|
1189
|
+
ActionType).
|
|
1190
|
+
ApprovalType:
|
|
1191
|
+
type: string
|
|
1192
|
+
description: Edoxen::Enums::APPROVAL_TYPE.
|
|
1193
|
+
enum:
|
|
1194
|
+
- affirmative
|
|
1195
|
+
- negative
|
|
1196
|
+
ApprovalDegree:
|
|
1197
|
+
type: string
|
|
1198
|
+
description: Edoxen::Enums::APPROVAL_DEGREE.
|
|
1199
|
+
enum:
|
|
1200
|
+
- unanimous
|
|
1201
|
+
- majority
|
|
1202
|
+
- minority
|
|
1203
|
+
DecisionKind:
|
|
1204
|
+
type: string
|
|
1205
|
+
description: Edoxen::Enums::DECISION_KIND.
|
|
1206
|
+
enum:
|
|
1207
|
+
- resolution
|
|
1208
|
+
- order
|
|
1209
|
+
- ruling
|
|
1210
|
+
- determination
|
|
1211
|
+
- recommendation
|
|
1212
|
+
- statement
|
|
1213
|
+
- finding
|
|
1214
|
+
- opinion
|
|
1215
|
+
- other
|
|
1216
|
+
DecisionKindCanonical:
|
|
1217
|
+
type: string
|
|
1218
|
+
description: |
|
|
1219
|
+
Edoxen::Enums::DECISION_KIND_CANONICAL — short abstract set (1.0,
|
|
1220
|
+
TODO.refactor/1.0-design). Bodies extend via `body_type` + per-dataset
|
|
1221
|
+
`body_vocabulary[]`.
|
|
1222
|
+
enum:
|
|
1223
|
+
- decision
|
|
1224
|
+
- recommendation
|
|
1225
|
+
- statement
|
|
1226
|
+
- finding
|
|
1227
|
+
- other
|
|
1228
|
+
DecisionStatus:
|
|
1229
|
+
type: string
|
|
1230
|
+
description: Edoxen::Enums::DECISION_STATUS.
|
|
1231
|
+
enum:
|
|
1232
|
+
- draft
|
|
1233
|
+
- proposed
|
|
1234
|
+
- under_consideration
|
|
1235
|
+
- decided
|
|
1236
|
+
- negatived
|
|
1237
|
+
- withdrawn
|
|
1238
|
+
- deferred
|
|
1239
|
+
DecisionDateType:
|
|
1240
|
+
type: string
|
|
1241
|
+
description: Edoxen::Enums::DECISION_DATE_TYPE.
|
|
1242
|
+
enum:
|
|
1243
|
+
- adoption
|
|
1244
|
+
- drafted
|
|
1245
|
+
- discussed
|
|
1246
|
+
- proposed
|
|
1247
|
+
- decided
|
|
1248
|
+
- negatived
|
|
1249
|
+
- withdrawn
|
|
1250
|
+
- published
|
|
1251
|
+
- effective
|
|
1252
|
+
DecisionRelationType:
|
|
1253
|
+
type: string
|
|
1254
|
+
description: Edoxen::Enums::DECISION_RELATION_TYPE.
|
|
1255
|
+
enum:
|
|
1256
|
+
- annex_of
|
|
1257
|
+
- has_annex
|
|
1258
|
+
- updates
|
|
1259
|
+
- refines
|
|
1260
|
+
- replaces
|
|
1261
|
+
- considers
|
|
1262
|
+
- cites
|
|
1263
|
+
MotionStatus:
|
|
1264
|
+
type: string
|
|
1265
|
+
description: Edoxen::Enums::MOTION_STATUS.
|
|
1266
|
+
enum:
|
|
1267
|
+
- introduced
|
|
1268
|
+
- seconded
|
|
1269
|
+
- debating
|
|
1270
|
+
- question_put
|
|
1271
|
+
- voting
|
|
1272
|
+
- carried
|
|
1273
|
+
- negatived
|
|
1274
|
+
- withdrawn
|
|
1275
|
+
- lapsed
|
|
1276
|
+
VotingStatus:
|
|
1277
|
+
type: string
|
|
1278
|
+
description: Edoxen::Enums::VOTING_STATUS.
|
|
1279
|
+
enum:
|
|
1280
|
+
- called
|
|
1281
|
+
- in_progress
|
|
1282
|
+
- decided
|
|
1283
|
+
- withdrawn
|
|
1284
|
+
- deferred
|
|
1285
|
+
VotingMethod:
|
|
1286
|
+
type: string
|
|
1287
|
+
description: Edoxen::Enums::VOTING_METHOD.
|
|
1288
|
+
enum:
|
|
1289
|
+
- voice
|
|
1290
|
+
- division
|
|
1291
|
+
- show_of_hands
|
|
1292
|
+
- roll_call
|
|
1293
|
+
- electronic
|
|
1294
|
+
- secret_ballot
|
|
1295
|
+
- unanimous_consent
|
|
1296
|
+
- consensus
|
|
1297
|
+
VotingOutcome:
|
|
1298
|
+
type: string
|
|
1299
|
+
description: Edoxen::Enums::VOTING_OUTCOME.
|
|
1300
|
+
enum:
|
|
1301
|
+
- passed
|
|
1302
|
+
- negatived
|
|
1303
|
+
- tied
|
|
1304
|
+
- withdrawn
|
|
1305
|
+
TopicStatus:
|
|
1306
|
+
type: string
|
|
1307
|
+
description: Edoxen::Enums::TOPIC_STATUS.
|
|
1308
|
+
enum:
|
|
1309
|
+
- open
|
|
1310
|
+
- under_discussion
|
|
1311
|
+
- decided
|
|
1312
|
+
- deferred
|
|
1313
|
+
- withdrawn
|
|
1314
|
+
VenueKind:
|
|
1315
|
+
type: string
|
|
1316
|
+
description: Edoxen::Enums::VENUE_KIND.
|
|
1317
|
+
enum:
|
|
1318
|
+
- physical
|
|
1319
|
+
- virtual
|
|
1320
|
+
VirtualFeature:
|
|
1321
|
+
type: string
|
|
1322
|
+
description: Edoxen::Enums::VIRTUAL_FEATURE.
|
|
1323
|
+
enum:
|
|
1324
|
+
- audio
|
|
1325
|
+
- video
|
|
1326
|
+
- chat
|
|
1327
|
+
- phone
|
|
1328
|
+
- screen
|
|
1329
|
+
- feed
|
|
1330
|
+
Visibility:
|
|
1331
|
+
type: string
|
|
1332
|
+
description: Edoxen::Enums::VISIBILITY.
|
|
1333
|
+
enum:
|
|
1334
|
+
- public
|
|
1335
|
+
- private
|
|
1336
|
+
- confidential
|
|
1337
|
+
AttendanceRole:
|
|
1338
|
+
type: string
|
|
1339
|
+
description: Edoxen::Enums::ATTENDANCE_ROLE.
|
|
1340
|
+
enum:
|
|
1341
|
+
- chair
|
|
1342
|
+
- required
|
|
1343
|
+
- optional
|
|
1344
|
+
- non_participant
|
|
1345
|
+
AttendanceResponse:
|
|
1346
|
+
type: string
|
|
1347
|
+
description: Edoxen::Enums::ATTENDANCE_RESPONSE.
|
|
1348
|
+
enum:
|
|
1349
|
+
- pending
|
|
1350
|
+
- confirmed
|
|
1351
|
+
- declined
|
|
1352
|
+
- tentative
|
|
1353
|
+
- delegated
|
|
1354
|
+
ComponentKind:
|
|
1355
|
+
type: string
|
|
1356
|
+
description: Edoxen::Enums::COMPONENT_KIND.
|
|
1357
|
+
enum:
|
|
1358
|
+
- track
|
|
1359
|
+
- session
|
|
1360
|
+
- debate
|
|
1361
|
+
- breakout
|
|
1362
|
+
- bof
|
|
1363
|
+
- plenary_session
|
|
1364
|
+
- working_group_session
|
|
1365
|
+
- committee_of_the_whole
|
|
1366
|
+
- keynote
|
|
1367
|
+
- address
|
|
1368
|
+
- statement
|
|
1369
|
+
- question_time
|
|
1370
|
+
- opening
|
|
1371
|
+
- closing
|
|
1372
|
+
- break
|
|
1373
|
+
- reception
|
|
1374
|
+
- registration
|
|
1375
|
+
- networking
|
|
1376
|
+
- other
|
|
1377
|
+
ComponentKindCanonical:
|
|
1378
|
+
type: string
|
|
1379
|
+
description: |
|
|
1380
|
+
Edoxen::Enums::COMPONENT_KIND_CANONICAL — short abstract set
|
|
1381
|
+
(1.0, TODO.refactor/1.0-design).
|
|
1382
|
+
enum:
|
|
1383
|
+
- deliberative
|
|
1384
|
+
- working
|
|
1385
|
+
- ceremonial
|
|
1386
|
+
- break
|
|
1387
|
+
- other
|
|
1388
|
+
OfficerRole:
|
|
1389
|
+
type: string
|
|
1390
|
+
description: Edoxen::Enums::OFFICER_ROLE.
|
|
1391
|
+
enum:
|
|
1392
|
+
- chair
|
|
1393
|
+
- vice_chair
|
|
1394
|
+
- deputy_chair
|
|
1395
|
+
- secretary
|
|
1396
|
+
- treasurer
|
|
1397
|
+
- parliamentarian
|
|
1398
|
+
- presiding_officer
|
|
1399
|
+
- sergeant_at_arms
|
|
1400
|
+
- other
|
|
1401
|
+
RecurrenceFreq:
|
|
1402
|
+
type: string
|
|
1403
|
+
description: Edoxen::Enums::RECURRENCE_FREQ.
|
|
1404
|
+
enum:
|
|
1405
|
+
- secondly
|
|
1406
|
+
- minutely
|
|
1407
|
+
- hourly
|
|
1408
|
+
- daily
|
|
1409
|
+
- weekly
|
|
1410
|
+
- monthly
|
|
1411
|
+
- yearly
|
|
1412
|
+
UrlKind:
|
|
1413
|
+
type: string
|
|
1414
|
+
description: Edoxen::Enums::URL_KIND.
|
|
1415
|
+
enum:
|
|
1416
|
+
- access
|
|
1417
|
+
- report
|
|
1418
|
+
SourceUrlKind:
|
|
1419
|
+
type: string
|
|
1420
|
+
description: Edoxen::Enums::SOURCE_URL_KIND.
|
|
1421
|
+
enum:
|
|
1422
|
+
- agenda_pdf
|
|
1423
|
+
- minutes_pdf
|
|
1424
|
+
- decisions_pdf
|
|
1425
|
+
- report_pdf
|
|
1426
|
+
- register_url
|
|
1427
|
+
- landing_page
|
|
1428
|
+
HostType:
|
|
1429
|
+
type: string
|
|
1430
|
+
description: Edoxen::Enums::HOST_TYPE.
|
|
1431
|
+
enum:
|
|
1432
|
+
- national_body
|
|
1433
|
+
- liaison
|
|
1434
|
+
- associate
|
|
1435
|
+
- organizer
|
|
1436
|
+
VoteType:
|
|
1437
|
+
type: string
|
|
1438
|
+
description: Edoxen::Enums::VOTE_TYPE.
|
|
1439
|
+
enum:
|
|
1440
|
+
- affirmative
|
|
1441
|
+
- negative
|
|
1442
|
+
- abstain
|
|
1443
|
+
- absent
|
|
1444
|
+
- not_applicable
|
|
1445
|
+
DateTimeRange:
|
|
1446
|
+
type: object
|
|
1447
|
+
description: |
|
|
1448
|
+
Start + end pair with sub-day precision. Parallel to DateRange;
|
|
1449
|
+
use when day granularity is insufficient (e.g. a meeting that
|
|
1450
|
+
ran 09:00–11:30).
|
|
1451
|
+
additionalProperties: false
|
|
1452
|
+
properties:
|
|
1453
|
+
start:
|
|
1454
|
+
type: string
|
|
1455
|
+
format: date-time
|
|
1456
|
+
end:
|
|
1457
|
+
type: string
|
|
1458
|
+
format: date-time
|
|
1459
|
+
StatementKind:
|
|
1460
|
+
type: string
|
|
1461
|
+
description: |
|
|
1462
|
+
Discriminator for the three BS 0:2006 statement types. Adding a
|
|
1463
|
+
new kind is a one-line enum extension; the Statement model
|
|
1464
|
+
itself never needs to change (OCP).
|
|
1465
|
+
enum:
|
|
1466
|
+
- statement
|
|
1467
|
+
- comment
|
|
1468
|
+
- standpoint
|
|
1469
|
+
DeclarationKind:
|
|
1470
|
+
type: string
|
|
1471
|
+
description: |
|
|
1472
|
+
Discriminator for the two BS 0:2006 declaration types
|
|
1473
|
+
(conflict of interest, IPR).
|
|
1474
|
+
enum:
|
|
1475
|
+
- conflict_of_interest
|
|
1476
|
+
- ipr
|
|
1477
|
+
Statement:
|
|
1478
|
+
type: object
|
|
1479
|
+
description: |
|
|
1480
|
+
One remark made by one or more meeting members on a topic or a
|
|
1481
|
+
minutes section. Per-field Localized description; party is a
|
|
1482
|
+
list of Person references. The `kind` discriminator separates
|
|
1483
|
+
the three BS 0:2006 statement types.
|
|
1484
|
+
additionalProperties: false
|
|
1485
|
+
properties:
|
|
1486
|
+
kind:
|
|
1487
|
+
"$ref": "#/$defs/StatementKind"
|
|
1488
|
+
description:
|
|
1489
|
+
type: array
|
|
1490
|
+
items:
|
|
1491
|
+
"$ref": "#/$defs/LocalizedString"
|
|
1492
|
+
party:
|
|
1493
|
+
type: array
|
|
1494
|
+
items:
|
|
1495
|
+
"$ref": "#/$defs/Person"
|
|
1496
|
+
extensions:
|
|
1497
|
+
type: array
|
|
1498
|
+
items:
|
|
1499
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
1500
|
+
Declaration:
|
|
1501
|
+
type: object
|
|
1502
|
+
description: |
|
|
1503
|
+
A formal declaration (conflict of interest or IPR) made by one
|
|
1504
|
+
or more meeting members. IPR-specific fields (`ipr_subject_ref`,
|
|
1505
|
+
`ipr_target_ref`) are populated only when `kind == "ipr"`.
|
|
1506
|
+
additionalProperties: false
|
|
1507
|
+
properties:
|
|
1508
|
+
kind:
|
|
1509
|
+
"$ref": "#/$defs/DeclarationKind"
|
|
1510
|
+
description:
|
|
1511
|
+
type: array
|
|
1512
|
+
items:
|
|
1513
|
+
"$ref": "#/$defs/LocalizedString"
|
|
1514
|
+
party:
|
|
1515
|
+
type: array
|
|
1516
|
+
items:
|
|
1517
|
+
"$ref": "#/$defs/Person"
|
|
1518
|
+
ipr_subject_ref:
|
|
1519
|
+
"$ref": "#/$defs/EntityRef"
|
|
1520
|
+
ipr_target_ref:
|
|
1521
|
+
"$ref": "#/$defs/EntityRef"
|
|
1522
|
+
extensions:
|
|
1523
|
+
type: array
|
|
1524
|
+
items:
|
|
1525
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
1526
|
+
Body:
|
|
1527
|
+
type: object
|
|
1528
|
+
description: |
|
|
1529
|
+
A committee, subcommittee, working group, or other organised body.
|
|
1530
|
+
Three-tier entity resolution (ref / local_ref / inline).
|
|
1531
|
+
additionalProperties: false
|
|
1532
|
+
properties:
|
|
1533
|
+
ref:
|
|
1534
|
+
type: string
|
|
1535
|
+
local_ref:
|
|
1536
|
+
type: string
|
|
1537
|
+
code:
|
|
1538
|
+
type: string
|
|
1539
|
+
name:
|
|
1540
|
+
type: array
|
|
1541
|
+
items:
|
|
1542
|
+
"$ref": "#/$defs/LocalizedString"
|
|
1543
|
+
kind:
|
|
1544
|
+
type: string
|
|
1545
|
+
parent_ref:
|
|
1546
|
+
"$ref": "#/$defs/EntityRef"
|
|
1547
|
+
extensions:
|
|
1548
|
+
type: array
|
|
1549
|
+
items:
|
|
1550
|
+
"$ref": "#/$defs/MeetingExtension"
|
|
1551
|
+
BodyRegister:
|
|
1552
|
+
type: object
|
|
1553
|
+
description: |
|
|
1554
|
+
Authoritative register of Bodies (committees, subcommittees,
|
|
1555
|
+
working groups).
|
|
1556
|
+
additionalProperties: false
|
|
1557
|
+
properties:
|
|
1558
|
+
scope:
|
|
1559
|
+
type: string
|
|
1560
|
+
title:
|
|
1561
|
+
type: array
|
|
1562
|
+
items:
|
|
1563
|
+
"$ref": "#/$defs/LocalizedString"
|
|
1564
|
+
bodies:
|
|
1565
|
+
type: array
|
|
1566
|
+
items:
|
|
1567
|
+
"$ref": "#/$defs/Body"
|
|
1568
|
+
extensions:
|
|
1569
|
+
type: array
|
|
1570
|
+
items:
|
|
1571
|
+
"$ref": "#/$defs/MeetingExtension"
|