edoxen 0.1.2 → 0.3.0
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/CLAUDE.md +220 -0
- data/README.adoc +153 -498
- data/lib/edoxen/_metadata.rb.deprecated +57 -0
- data/lib/edoxen/action.rb +5 -20
- data/lib/edoxen/approval.rb +6 -10
- data/lib/edoxen/cli.rb +70 -87
- data/lib/edoxen/consideration.rb +5 -13
- data/lib/edoxen/enums.rb +43 -0
- data/lib/edoxen/error.rb +7 -0
- data/lib/edoxen/localization.rb +30 -0
- data/lib/edoxen/meeting_identifier.rb +2 -6
- data/lib/edoxen/resolution.rb +19 -32
- data/lib/edoxen/resolution_collection.rb +15 -0
- data/lib/edoxen/resolution_date.rb +7 -8
- data/lib/edoxen/resolution_metadata.rb +26 -0
- data/lib/edoxen/resolution_relation.rb +5 -39
- data/lib/edoxen/schema_validator.rb +160 -248
- data/lib/edoxen/source_url.rb +18 -0
- data/lib/edoxen/structured_identifier.rb +17 -0
- data/lib/edoxen/url.rb +2 -3
- data/lib/edoxen/version.rb +1 -1
- data/lib/edoxen.rb +36 -14
- data/schema/edoxen.yaml +300 -339
- metadata +11 -3
- data/lib/edoxen/metadata.rb +0 -27
data/schema/edoxen.yaml
CHANGED
|
@@ -1,57 +1,32 @@
|
|
|
1
|
-
# yaml-language-server: $schema=http://json-schema.org/draft-07/schema
|
|
2
1
|
---
|
|
3
2
|
$schema: "http://json-schema.org/draft-07/schema#"
|
|
4
3
|
$id: "https://github.com/metanorma/edoxen/schema/edoxen.yaml"
|
|
5
|
-
title: "Edoxen Resolution
|
|
6
|
-
description:
|
|
4
|
+
title: "Edoxen Resolution Collection Schema"
|
|
5
|
+
description: |
|
|
6
|
+
Schema for validating Edoxen ResolutionCollection YAML files.
|
|
7
|
+
|
|
8
|
+
Mirrors the canonical LutaML information model in
|
|
9
|
+
https://github.com/metanorma/edoxen-model/tree/main/models .
|
|
10
|
+
|
|
11
|
+
The enum constants declared under `$defs` (ActionType,
|
|
12
|
+
ConsiderationType, ApprovalType, ApprovalDegree, ResolutionType,
|
|
13
|
+
ResolutionDateType, ResolutionRelationType, UrlKind) are the
|
|
14
|
+
authoritative wire values. `spec/edoxen/schema_enum_sync_spec.rb`
|
|
15
|
+
asserts each one is character-for-character identical to the
|
|
16
|
+
corresponding `Edoxen::Enums::*` frozen array.
|
|
17
|
+
|
|
18
|
+
Trade-off: json_schemer's `valid_values` is not populated when an
|
|
19
|
+
`enum` is reached via `$ref`, so the validator's enum-violation
|
|
20
|
+
message degrades to "value ... is not one of: (see schema)". This
|
|
21
|
+
is documented in `Edoxen::SchemaValidator#format_message`.
|
|
7
22
|
type: object
|
|
23
|
+
additionalProperties: false
|
|
8
24
|
|
|
9
25
|
properties:
|
|
10
26
|
metadata:
|
|
11
|
-
|
|
12
|
-
description: "Metadata about the resolution set"
|
|
13
|
-
properties:
|
|
14
|
-
title:
|
|
15
|
-
type: string
|
|
16
|
-
description: "Title of the resolution set"
|
|
17
|
-
identifier:
|
|
18
|
-
type: string
|
|
19
|
-
description: "Identifier for the resolution set (e.g., '2019-01')"
|
|
20
|
-
dates:
|
|
21
|
-
type: array
|
|
22
|
-
description: "Array of dates related to the set"
|
|
23
|
-
items:
|
|
24
|
-
$ref: "#/$defs/ComplexDate"
|
|
25
|
-
source:
|
|
26
|
-
type: string
|
|
27
|
-
description: "Source organization or secretariat"
|
|
28
|
-
venue:
|
|
29
|
-
type: string
|
|
30
|
-
description: "Meeting venue"
|
|
31
|
-
chair:
|
|
32
|
-
type: string
|
|
33
|
-
description: "Meeting chair"
|
|
34
|
-
attendees:
|
|
35
|
-
type: array
|
|
36
|
-
items:
|
|
37
|
-
type: string
|
|
38
|
-
description: "List of attendees"
|
|
39
|
-
apologies:
|
|
40
|
-
type: array
|
|
41
|
-
items:
|
|
42
|
-
type: string
|
|
43
|
-
description: "List of apologies"
|
|
44
|
-
urls:
|
|
45
|
-
type: array
|
|
46
|
-
items:
|
|
47
|
-
$ref: "#/$defs/Url"
|
|
48
|
-
description: "Array of URLs related to the resolution set"
|
|
49
|
-
|
|
50
|
-
additionalProperties: false
|
|
51
|
-
|
|
27
|
+
$ref: "#/$defs/ResolutionMetadata"
|
|
52
28
|
resolutions:
|
|
53
29
|
type: array
|
|
54
|
-
description: "Array of resolutions"
|
|
55
30
|
items:
|
|
56
31
|
$ref: "#/$defs/Resolution"
|
|
57
32
|
|
|
@@ -59,363 +34,349 @@ required:
|
|
|
59
34
|
- resolutions
|
|
60
35
|
|
|
61
36
|
$defs:
|
|
62
|
-
Resolution:
|
|
63
|
-
type: object
|
|
64
|
-
description: "A single resolution"
|
|
65
|
-
properties:
|
|
66
|
-
identifier:
|
|
67
|
-
oneOf:
|
|
68
|
-
- type: string
|
|
69
|
-
- type: integer
|
|
70
|
-
description: "Resolution identifier (e.g., '2019-01' or 1)"
|
|
71
|
-
|
|
72
|
-
title:
|
|
73
|
-
type: string
|
|
74
|
-
description: "Resolution title"
|
|
75
|
-
|
|
76
|
-
type:
|
|
77
|
-
type: string
|
|
78
|
-
enum:
|
|
79
|
-
- "resolution"
|
|
80
|
-
- "recommendation"
|
|
81
|
-
- "decision"
|
|
82
|
-
- "declaration"
|
|
83
|
-
description: "Type of resolution"
|
|
84
|
-
|
|
85
|
-
categories:
|
|
86
|
-
type: array
|
|
87
|
-
items:
|
|
88
|
-
type: string
|
|
89
|
-
description: "Resolution categories"
|
|
90
|
-
|
|
91
|
-
subject:
|
|
92
|
-
type: string
|
|
93
|
-
description: "Subject or scope of the resolution"
|
|
94
37
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
$ref: "#/$defs/ComplexDate"
|
|
99
|
-
description: "Array of relevant dates with start/end structure"
|
|
38
|
+
# ====================================================================
|
|
39
|
+
# Identifiers and references.
|
|
40
|
+
# ====================================================================
|
|
100
41
|
|
|
101
|
-
|
|
42
|
+
StructuredIdentifier:
|
|
43
|
+
type: object
|
|
44
|
+
description: "A resolution identifier (prefix + number). A Resolution may carry 1..* of these."
|
|
45
|
+
additionalProperties: false
|
|
46
|
+
required: [prefix, number]
|
|
47
|
+
properties:
|
|
48
|
+
prefix:
|
|
102
49
|
type: string
|
|
103
|
-
description: "
|
|
104
|
-
|
|
105
|
-
considering:
|
|
50
|
+
description: "Authority prefix, e.g. 'ISO', 'OIML', 'CIML'."
|
|
51
|
+
number:
|
|
106
52
|
type: string
|
|
107
|
-
description: "
|
|
108
|
-
|
|
109
|
-
considerations:
|
|
110
|
-
type: array
|
|
111
|
-
items:
|
|
112
|
-
$ref: "#/$defs/Consideration"
|
|
113
|
-
description: "Array of considerations leading to the resolution"
|
|
114
|
-
|
|
115
|
-
approvals:
|
|
116
|
-
type: array
|
|
117
|
-
items:
|
|
118
|
-
$ref: "#/$defs/Approval"
|
|
119
|
-
description: "Approval information"
|
|
120
|
-
|
|
121
|
-
actions:
|
|
122
|
-
type: array
|
|
123
|
-
items:
|
|
124
|
-
$ref: "#/$defs/Action"
|
|
125
|
-
description: "Actions taken in the resolution"
|
|
126
|
-
|
|
127
|
-
urls:
|
|
128
|
-
type: array
|
|
129
|
-
items:
|
|
130
|
-
$ref: "#/$defs/Url"
|
|
131
|
-
description: "Array of URLs related to the resolution"
|
|
132
|
-
|
|
133
|
-
meeting:
|
|
134
|
-
$ref: "#/$defs/MeetingIdentifier"
|
|
135
|
-
description: "Meeting information"
|
|
53
|
+
description: "Resolution number issued under that prefix."
|
|
136
54
|
|
|
137
|
-
|
|
138
|
-
type: array
|
|
139
|
-
items:
|
|
140
|
-
$ref: "#/$defs/ResolutionRelations"
|
|
141
|
-
description: "Relations to other resolutions"
|
|
142
|
-
|
|
143
|
-
additionalProperties: false
|
|
144
|
-
required:
|
|
145
|
-
- subject
|
|
146
|
-
- identifier
|
|
147
|
-
- actions
|
|
148
|
-
|
|
149
|
-
ComplexDate:
|
|
55
|
+
MeetingIdentifier:
|
|
150
56
|
type: object
|
|
151
|
-
description: "
|
|
57
|
+
description: "Identifies the meeting a Resolution belongs to."
|
|
58
|
+
additionalProperties: false
|
|
152
59
|
properties:
|
|
153
|
-
|
|
60
|
+
venue:
|
|
154
61
|
type: string
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
end:
|
|
62
|
+
description: "Meeting venue name (free text)."
|
|
63
|
+
date:
|
|
158
64
|
type: string
|
|
159
65
|
format: date
|
|
160
|
-
description: "
|
|
161
|
-
kind:
|
|
162
|
-
type: string
|
|
163
|
-
enum:
|
|
164
|
-
- "enactment"
|
|
165
|
-
- "ballot"
|
|
166
|
-
- "effective"
|
|
167
|
-
- "decision"
|
|
168
|
-
- "meeting"
|
|
169
|
-
description: "Kind of date (e.g., enactment, ballot, effective)"
|
|
170
|
-
required:
|
|
171
|
-
- kind
|
|
172
|
-
additionalProperties: false
|
|
66
|
+
description: "Meeting date."
|
|
173
67
|
|
|
174
68
|
Url:
|
|
175
69
|
type: object
|
|
176
|
-
description: "URL with kind and
|
|
70
|
+
description: "URL with a kind (access / report) and an optional format hint."
|
|
71
|
+
additionalProperties: false
|
|
72
|
+
required: [kind, ref]
|
|
177
73
|
properties:
|
|
178
74
|
kind:
|
|
179
|
-
|
|
180
|
-
enum:
|
|
181
|
-
- "access"
|
|
182
|
-
- "report"
|
|
183
|
-
description: "Kind of URL (e.g., access, report)"
|
|
75
|
+
$ref: "#/$defs/UrlKind"
|
|
184
76
|
ref:
|
|
185
77
|
type: string
|
|
186
|
-
description: "Reference URL"
|
|
187
78
|
format:
|
|
188
79
|
type: string
|
|
189
|
-
description: "Format of the URL (e.g., 'html', 'pdf')"
|
|
190
|
-
additionalProperties: false
|
|
191
80
|
|
|
192
|
-
|
|
81
|
+
ResolutionRelation:
|
|
193
82
|
type: object
|
|
194
|
-
description: "
|
|
83
|
+
description: "Directed relation between two resolutions identified by their StructuredIdentifier."
|
|
84
|
+
additionalProperties: false
|
|
85
|
+
required: [source, destination, type]
|
|
195
86
|
properties:
|
|
87
|
+
source:
|
|
88
|
+
$ref: "#/$defs/StructuredIdentifier"
|
|
89
|
+
destination:
|
|
90
|
+
$ref: "#/$defs/StructuredIdentifier"
|
|
196
91
|
type:
|
|
197
|
-
|
|
198
|
-
enum:
|
|
199
|
-
- "acknowledging"
|
|
200
|
-
- "following"
|
|
201
|
-
- "basing"
|
|
202
|
-
- "considering"
|
|
203
|
-
- "identifying"
|
|
204
|
-
- "according"
|
|
205
|
-
- "noting"
|
|
206
|
-
- "recalling"
|
|
207
|
-
- "recognises"
|
|
208
|
-
- "recognising"
|
|
209
|
-
- "recognizing"
|
|
210
|
-
description: "Type of consideration"
|
|
92
|
+
$ref: "#/$defs/ResolutionRelationType"
|
|
211
93
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
$ref: "#/$defs/ComplexDate"
|
|
94
|
+
# ====================================================================
|
|
95
|
+
# Date carriers.
|
|
96
|
+
# ====================================================================
|
|
216
97
|
|
|
217
|
-
|
|
98
|
+
ResolutionDate:
|
|
99
|
+
type: object
|
|
100
|
+
description: "Date with semantic kind (adoption / drafted / discussed)."
|
|
101
|
+
additionalProperties: false
|
|
102
|
+
required: [date, type]
|
|
103
|
+
properties:
|
|
104
|
+
date:
|
|
218
105
|
type: string
|
|
219
|
-
|
|
106
|
+
format: date
|
|
107
|
+
description: "The date itself."
|
|
108
|
+
type:
|
|
109
|
+
$ref: "#/$defs/ResolutionDateType"
|
|
220
110
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
111
|
+
# ====================================================================
|
|
112
|
+
# Per-localization sub-structures. Each is owned by exactly one
|
|
113
|
+
# Language; the language_code discriminator lives on Localization.
|
|
114
|
+
# ====================================================================
|
|
224
115
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
- message
|
|
116
|
+
Action:
|
|
117
|
+
type: object
|
|
118
|
+
description: "A verb + one effective date + human-readable message."
|
|
228
119
|
additionalProperties: false
|
|
120
|
+
required: [type, message, date_effective]
|
|
121
|
+
properties:
|
|
122
|
+
type:
|
|
123
|
+
$ref: "#/$defs/ActionType"
|
|
124
|
+
date_effective:
|
|
125
|
+
$ref: "#/$defs/ResolutionDate"
|
|
126
|
+
message:
|
|
127
|
+
type: string
|
|
229
128
|
|
|
230
129
|
Approval:
|
|
231
130
|
type: object
|
|
232
|
-
description: "Approval
|
|
131
|
+
description: "Approval record: vote type, consensus degree, date, message."
|
|
132
|
+
additionalProperties: false
|
|
133
|
+
required: [type, degree, date]
|
|
233
134
|
properties:
|
|
234
135
|
type:
|
|
235
|
-
|
|
236
|
-
enum:
|
|
237
|
-
- "affirmative"
|
|
238
|
-
- "negative"
|
|
239
|
-
description: "Type of approval"
|
|
240
|
-
|
|
136
|
+
$ref: "#/$defs/ApprovalType"
|
|
241
137
|
degree:
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
- "majority"
|
|
246
|
-
- "minority"
|
|
247
|
-
description: "Degree of approval"
|
|
248
|
-
|
|
138
|
+
$ref: "#/$defs/ApprovalDegree"
|
|
139
|
+
date:
|
|
140
|
+
$ref: "#/$defs/ResolutionDate"
|
|
249
141
|
message:
|
|
250
142
|
type: string
|
|
251
|
-
description: "Approval details"
|
|
252
|
-
|
|
253
|
-
additionalProperties: false
|
|
254
143
|
|
|
255
|
-
|
|
144
|
+
Consideration:
|
|
256
145
|
type: object
|
|
257
|
-
description: "
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
- message
|
|
146
|
+
description: "The basis for a Resolution: a verb + one effective date + reasoning."
|
|
147
|
+
additionalProperties: false
|
|
148
|
+
required: [type, message, date_effective]
|
|
261
149
|
properties:
|
|
262
150
|
type:
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
- "acknowledges"
|
|
267
|
-
- "adoption"
|
|
268
|
-
- "adopts"
|
|
269
|
-
- "agrees"
|
|
270
|
-
- "allocates"
|
|
271
|
-
- "appoints"
|
|
272
|
-
- "appreciates"
|
|
273
|
-
- "appreciation"
|
|
274
|
-
- "approves"
|
|
275
|
-
- "asks"
|
|
276
|
-
- "assigns"
|
|
277
|
-
- "chairs"
|
|
278
|
-
- "communicating"
|
|
279
|
-
- "confirms"
|
|
280
|
-
- "considers"
|
|
281
|
-
- "consults"
|
|
282
|
-
- "creates"
|
|
283
|
-
- "decides"
|
|
284
|
-
- "defines"
|
|
285
|
-
- "delegates"
|
|
286
|
-
- "delivering"
|
|
287
|
-
- "directs"
|
|
288
|
-
- "disbands"
|
|
289
|
-
- "drafting"
|
|
290
|
-
- "elects"
|
|
291
|
-
- "empowers"
|
|
292
|
-
- "encourages"
|
|
293
|
-
- "endorses"
|
|
294
|
-
- "estabilishes"
|
|
295
|
-
- "establishes"
|
|
296
|
-
- "gathering"
|
|
297
|
-
- "identifies"
|
|
298
|
-
- "instructs"
|
|
299
|
-
- "investigates"
|
|
300
|
-
- "nominates"
|
|
301
|
-
- "notes"
|
|
302
|
-
- "notifies"
|
|
303
|
-
- "recognises"
|
|
304
|
-
- "recognizes"
|
|
305
|
-
- "reminds"
|
|
306
|
-
- "recommends"
|
|
307
|
-
- "registers"
|
|
308
|
-
- "regrets"
|
|
309
|
-
- "request"
|
|
310
|
-
- "replaces"
|
|
311
|
-
- "requests"
|
|
312
|
-
- "resolves"
|
|
313
|
-
- "restates"
|
|
314
|
-
- "scopes"
|
|
315
|
-
- "secures"
|
|
316
|
-
- "sends"
|
|
317
|
-
- "supports"
|
|
318
|
-
- "thanks"
|
|
319
|
-
- "welcomes"
|
|
320
|
-
- "withdraws"
|
|
321
|
-
description: "Type of action"
|
|
322
|
-
|
|
323
|
-
dates:
|
|
324
|
-
type: array
|
|
325
|
-
items:
|
|
326
|
-
$ref: "#/$defs/ComplexDate"
|
|
327
|
-
description: "Dates of the action"
|
|
328
|
-
|
|
151
|
+
$ref: "#/$defs/ConsiderationType"
|
|
152
|
+
date_effective:
|
|
153
|
+
$ref: "#/$defs/ResolutionDate"
|
|
329
154
|
message:
|
|
330
155
|
type: string
|
|
331
|
-
description: "Action text"
|
|
332
156
|
|
|
157
|
+
Localization:
|
|
158
|
+
type: object
|
|
159
|
+
description: |
|
|
160
|
+
A monolingual rendering of a Resolution. Mirrors the glossarist
|
|
161
|
+
LocalizedConcept pattern: language-agnostic fields live on the
|
|
162
|
+
parent Resolution; per-language content lives here.
|
|
163
|
+
additionalProperties: false
|
|
164
|
+
required: [language_code]
|
|
165
|
+
properties:
|
|
166
|
+
language_code:
|
|
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
|
|
333
176
|
subject:
|
|
334
177
|
type: string
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
degree:
|
|
178
|
+
message:
|
|
338
179
|
type: string
|
|
339
|
-
|
|
340
|
-
enum:
|
|
341
|
-
- "unanimous"
|
|
342
|
-
- "majority"
|
|
343
|
-
- "minority"
|
|
344
|
-
|
|
345
|
-
additionalProperties: false
|
|
346
|
-
|
|
347
|
-
MeetingIdentifier:
|
|
348
|
-
type: object
|
|
349
|
-
description: "Meeting identification information"
|
|
350
|
-
properties:
|
|
351
|
-
venue:
|
|
180
|
+
considering:
|
|
352
181
|
type: string
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
dates:
|
|
182
|
+
considerations:
|
|
356
183
|
type: array
|
|
357
|
-
description: "Meeting dates"
|
|
358
184
|
items:
|
|
359
|
-
$ref: "#/$defs/
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
185
|
+
$ref: "#/$defs/Consideration"
|
|
186
|
+
approvals:
|
|
187
|
+
type: array
|
|
188
|
+
items:
|
|
189
|
+
$ref: "#/$defs/Approval"
|
|
190
|
+
actions:
|
|
191
|
+
type: array
|
|
192
|
+
items:
|
|
193
|
+
$ref: "#/$defs/Action"
|
|
366
194
|
|
|
367
|
-
|
|
195
|
+
SourceUrl:
|
|
368
196
|
type: object
|
|
369
|
-
description: "
|
|
197
|
+
description: "Per-language canonical source URL (e.g. one PDF per language)."
|
|
198
|
+
additionalProperties: false
|
|
199
|
+
required: [ref, format, language_code]
|
|
370
200
|
properties:
|
|
371
|
-
|
|
201
|
+
ref:
|
|
372
202
|
type: string
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
- "amends"
|
|
376
|
-
- "references"
|
|
377
|
-
- "replaces"
|
|
378
|
-
- "updates"
|
|
379
|
-
description: "Type of relation"
|
|
380
|
-
|
|
381
|
-
target:
|
|
203
|
+
description: "The URL string."
|
|
204
|
+
format:
|
|
382
205
|
type: string
|
|
383
|
-
description: "
|
|
384
|
-
|
|
385
|
-
description:
|
|
206
|
+
description: "Document format, e.g. 'pdf', 'html'."
|
|
207
|
+
language_code:
|
|
386
208
|
type: string
|
|
387
|
-
|
|
209
|
+
pattern: "^[a-z]{3}$"
|
|
388
210
|
|
|
389
|
-
|
|
211
|
+
# ====================================================================
|
|
212
|
+
# Top-level structures.
|
|
213
|
+
# ====================================================================
|
|
390
214
|
|
|
391
|
-
|
|
215
|
+
Resolution:
|
|
392
216
|
type: object
|
|
393
|
-
description:
|
|
217
|
+
description: |
|
|
218
|
+
A formal Resolution. Language-agnostic admin fields live here;
|
|
219
|
+
every translatable field is wrapped inside `localizations[]`
|
|
220
|
+
(one entry per available language; at least one is required).
|
|
221
|
+
additionalProperties: false
|
|
222
|
+
required: [identifier, localizations]
|
|
394
223
|
properties:
|
|
395
|
-
|
|
224
|
+
identifier:
|
|
225
|
+
type: array
|
|
226
|
+
minItems: 1
|
|
227
|
+
items:
|
|
228
|
+
$ref: "#/$defs/StructuredIdentifier"
|
|
229
|
+
type:
|
|
230
|
+
$ref: "#/$defs/ResolutionType"
|
|
231
|
+
doi:
|
|
396
232
|
type: string
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
233
|
+
urn:
|
|
234
|
+
type: string
|
|
235
|
+
agenda_item:
|
|
236
|
+
type: string
|
|
237
|
+
dates:
|
|
238
|
+
type: array
|
|
239
|
+
items:
|
|
240
|
+
$ref: "#/$defs/ResolutionDate"
|
|
241
|
+
categories:
|
|
242
|
+
type: array
|
|
243
|
+
items:
|
|
244
|
+
type: string
|
|
245
|
+
meeting:
|
|
246
|
+
$ref: "#/$defs/MeetingIdentifier"
|
|
247
|
+
relations:
|
|
248
|
+
type: array
|
|
249
|
+
items:
|
|
250
|
+
$ref: "#/$defs/ResolutionRelation"
|
|
251
|
+
urls:
|
|
252
|
+
type: array
|
|
253
|
+
items:
|
|
254
|
+
$ref: "#/$defs/Url"
|
|
255
|
+
localizations:
|
|
256
|
+
type: array
|
|
257
|
+
minItems: 1
|
|
258
|
+
items:
|
|
259
|
+
$ref: "#/$defs/Localization"
|
|
406
260
|
|
|
407
|
-
|
|
261
|
+
ResolutionMetadata:
|
|
408
262
|
type: object
|
|
409
|
-
description: "
|
|
263
|
+
description: "Collection-level metadata (title, meeting date, source, source URLs, host venue)."
|
|
264
|
+
additionalProperties: false
|
|
410
265
|
properties:
|
|
411
|
-
|
|
266
|
+
title:
|
|
412
267
|
type: string
|
|
413
|
-
description: "
|
|
414
|
-
|
|
415
|
-
|
|
268
|
+
description: "Default title (no language). For multilingual, use `title_localized[]`."
|
|
269
|
+
title_localized:
|
|
270
|
+
type: array
|
|
271
|
+
items:
|
|
272
|
+
$ref: "#/$defs/Localization"
|
|
273
|
+
description: "Per-language title records (parallel pattern to Resolution#localizations)."
|
|
274
|
+
date:
|
|
416
275
|
type: string
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
276
|
+
format: date
|
|
277
|
+
description: "Meeting date."
|
|
278
|
+
source:
|
|
279
|
+
type: string
|
|
280
|
+
description: "Source organization / secretariat that issued the collection."
|
|
281
|
+
source_urls:
|
|
282
|
+
type: array
|
|
283
|
+
items:
|
|
284
|
+
$ref: "#/$defs/SourceUrl"
|
|
285
|
+
description: "Canonical URLs to the source PDFs in each available language."
|
|
286
|
+
city:
|
|
287
|
+
type: string
|
|
288
|
+
description: "IATA city code (3-letter, e.g. BER, CPT, PAR) of the host city."
|
|
289
|
+
country_code:
|
|
290
|
+
type: string
|
|
291
|
+
description: "ISO 3166-1 alpha-2 country code (2-letter, e.g. DE, FR, JP) of the host country."
|
|
292
|
+
|
|
293
|
+
# ====================================================================
|
|
294
|
+
# Enums. Each is referenced by its $ref name above. The schema
|
|
295
|
+
# <-> Ruby enum sync spec asserts each value-list matches the
|
|
296
|
+
# corresponding Edoxen::Enums::* frozen array.
|
|
297
|
+
# ====================================================================
|
|
298
|
+
|
|
299
|
+
ActionType:
|
|
300
|
+
type: string
|
|
301
|
+
description: "Edoxen::Enums::ACTION_TYPE — LUTAML action.lutaml (deduped)."
|
|
302
|
+
enum:
|
|
303
|
+
- adopts
|
|
304
|
+
- thanks
|
|
305
|
+
- approves
|
|
306
|
+
- decides
|
|
307
|
+
- declares
|
|
308
|
+
- asks
|
|
309
|
+
- invites
|
|
310
|
+
- resolves
|
|
311
|
+
- confirms
|
|
312
|
+
- welcomes
|
|
313
|
+
- recommends
|
|
314
|
+
- requests
|
|
315
|
+
- congratulates
|
|
316
|
+
- instructs
|
|
317
|
+
- urges
|
|
318
|
+
- appoints
|
|
319
|
+
- calls-upon
|
|
320
|
+
- encourages
|
|
321
|
+
- affirms
|
|
322
|
+
- elects
|
|
323
|
+
- authorizes
|
|
324
|
+
- charges
|
|
325
|
+
- states
|
|
326
|
+
- remarks
|
|
327
|
+
- judges
|
|
328
|
+
- sanctions
|
|
329
|
+
- abrogates
|
|
330
|
+
- empowers
|
|
331
|
+
|
|
332
|
+
ConsiderationType:
|
|
333
|
+
type: string
|
|
334
|
+
description: "Edoxen::Enums::CONSIDERATION_TYPE — LUTAML consideration.lutaml (deduped)."
|
|
335
|
+
enum:
|
|
336
|
+
- having
|
|
337
|
+
- noting
|
|
338
|
+
- recognizing
|
|
339
|
+
- acknowledging
|
|
340
|
+
- recalling
|
|
341
|
+
- reaffirming
|
|
342
|
+
- considering
|
|
343
|
+
- taking-into-account
|
|
344
|
+
- pursuant-to
|
|
345
|
+
- bearing-in-mind
|
|
346
|
+
- emphasizing
|
|
347
|
+
- concerned
|
|
348
|
+
- accepts
|
|
349
|
+
- observing
|
|
350
|
+
- referring
|
|
351
|
+
- acting
|
|
352
|
+
- empowers
|
|
353
|
+
|
|
354
|
+
ApprovalType:
|
|
355
|
+
type: string
|
|
356
|
+
description: "Edoxen::Enums::APPROVAL_TYPE — LUTAML approval_type.lutaml."
|
|
357
|
+
enum: [affirmative, negative]
|
|
358
|
+
|
|
359
|
+
ApprovalDegree:
|
|
360
|
+
type: string
|
|
361
|
+
description: "Edoxen::Enums::APPROVAL_DEGREE — LUTAML approval_degree.lutaml."
|
|
362
|
+
enum: [unanimous, majority, minority]
|
|
363
|
+
|
|
364
|
+
ResolutionType:
|
|
365
|
+
type: string
|
|
366
|
+
description: "Edoxen::Enums::RESOLUTION_TYPE — LUTAML resolution_type.lutaml."
|
|
367
|
+
enum: [resolution, recommendation, decision, declaration]
|
|
368
|
+
|
|
369
|
+
ResolutionDateType:
|
|
370
|
+
type: string
|
|
371
|
+
description: "Edoxen::Enums::RESOLUTION_DATE_TYPE — LUTAML resolution_date_type.lutaml."
|
|
372
|
+
enum: [adoption, drafted, discussed]
|
|
373
|
+
|
|
374
|
+
ResolutionRelationType:
|
|
375
|
+
type: string
|
|
376
|
+
description: "Edoxen::Enums::RESOLUTION_RELATION_TYPE — LUTAML resolution_relation_type.lutaml."
|
|
377
|
+
enum: [annexOf, hasAnnex, updates, refines, replaces, considers]
|
|
378
|
+
|
|
379
|
+
UrlKind:
|
|
380
|
+
type: string
|
|
381
|
+
description: "Edoxen::Enums::URL_KIND."
|
|
382
|
+
enum: [access, report]
|