cocina-models 0.72.0 → 0.73.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b5516cbeff2267e688f6a09b34e4a0c715a1aea91ddae03d10060bed3d364c5a
4
- data.tar.gz: f47bd2a4ca35c95d3566883707d39a2480c0b7e18ee28bc49042aa90b24e104c
3
+ metadata.gz: b929b4e87bdb86010e2915c19628cb96dcafd101805e3c2dcee7ce56554d492f
4
+ data.tar.gz: 7aa988aa05b14e1e0521369ae1124acb0e4433195d7cd0011b239d63fa01b97b
5
5
  SHA512:
6
- metadata.gz: 262cdfa4049c7325751645a578b2129f0f5cc4737198b82bea5728a6d693398bf2ab589dea2ae912de2de09e6abd1e3a581b84828f3ebf85ed64ba4c3a71dc25
7
- data.tar.gz: 977677a8f5de44340117f3d2fb6ba8553e21c3c61c1770b18d44652008de6e26a6ada747de9546e993a0e4231e2263ad531d97491c5467d8aa8e18f2a303f340
6
+ metadata.gz: a3ab493e7a4f41d48a1d583b695a6689bb5dac3117fd03d343c75ab7407a25df58755899b28a171fcdc3425a6a204582a4f112f31e51d70ef3ac766bd27d4107
7
+ data.tar.gz: 45f9b2c0d9fd7b9e9d542f12d20e90ef0aacf536fa6477f691888e8a60dfcef96efce4a5c62793f8cd7eb7e27c30286360e036413bc975ff5bf316b271adf40f
@@ -0,0 +1,550 @@
1
+ # Description type validation
2
+
3
+ access.accessContact:
4
+ - value: email
5
+ description: Email address for a contact person or institution concerning the resource.
6
+ - value: repository
7
+ description: Institution providing access to the resource.
8
+ access.digitalLocation:
9
+ - value: discovery
10
+ description: Online location for the purpose of discovering the resource.
11
+ access.note:
12
+ - value: access restriction
13
+ description: Restrictions on or conditions for gaining access to the resource.
14
+ - value: display label
15
+ description: Display label for the purl.
16
+ - value: license
17
+ description: License describing allowed uses of the resource.
18
+ - value: use and reproduction
19
+ description: Information related to allowed uses of the resource in other contexts.
20
+ access.physicalLocation:
21
+ - value: discovery
22
+ description: Location where a user may find the resource.
23
+ - value: location
24
+ description: Physical location of the resource, or path to the resource on a hard drive or disk.
25
+ - value: repository
26
+ description: The institution holding the resource.
27
+ - value: series
28
+ description: Archival series of the resource.
29
+ status: deprecated
30
+ - value: shelf locator
31
+ description: Identifier or shelfmark indicating the location of the resource.
32
+ adminMetadata.note:
33
+ - value: record information
34
+ description: General information about the metadata record.
35
+ - value: record origin
36
+ description: The source of the record, such as another record transformed to generate the current record.
37
+ contributor:
38
+ - value: conference
39
+ description: An event focusing on a particular topic or discipline.
40
+ - value: event
41
+ description: A time-bound occurrence.
42
+ - value: family
43
+ description: A group of individuals related by blood or personal alliance.
44
+ - value: organization
45
+ description: An institution or other corporate or collective body.
46
+ - value: person
47
+ description: An individual identity.
48
+ - value: unspecified others
49
+ description: Designator for one or more additional contributors not named individually.
50
+ contributor.identifier:
51
+ - value: ORCID
52
+ description: Identifier from orcid.org.
53
+ - value: Wikidata
54
+ description: Identifier from wikidata.org.
55
+ contributor.name:
56
+ - value: alternative
57
+ description: Additional nonpreferred form of name.
58
+ - value: display
59
+ description: Preferred form of the name for display.
60
+ - value: forename
61
+ description: First or given name or names.
62
+ - value: inverted full name
63
+ description: Name given in last name, first name order.
64
+ - value: pseudonym
65
+ description: Name used that differs from legal or primary form of name.
66
+ - value: surname
67
+ description: Last or family name.
68
+ - value: transliteration
69
+ description: Name originally in non-Latin script presented phonetically using Latin characters.
70
+ contributor.name.structuredValue:
71
+ - value: activity dates
72
+ description: The date or dates when someone was producing work.
73
+ - value: forename
74
+ description: First or given name or names.
75
+ - value: life dates
76
+ description: Birth and death dates, or dates when an entity was in existence.
77
+ - value: name
78
+ description: Name provided alongside additional information.
79
+ - value: ordinal
80
+ description: Indicator that the name is one in a series (e.g. Elizabeth I, Martin Luther King, Jr.).
81
+ - value: surname
82
+ description: Last or family name.
83
+ - value: term of address
84
+ description: Title or other signifier associated with name.
85
+ contributor.name.groupedValue:
86
+ - value: alternative
87
+ description: Additional nonpreferred form of name.
88
+ - value: name
89
+ description: Primary form of name within group of values.
90
+ - value: pseudonym
91
+ description: Name used that differs from legal or primary form of name.
92
+ contributor.note:
93
+ - value: affiliation
94
+ description: Institution with which the contributor is associated.
95
+ - value: citation status
96
+ description: Indicator of whether the contributor should be included in the citation.
97
+ - value: description
98
+ description: Biographical information about the contributor.
99
+ event:
100
+ - value: acquisition
101
+ description: The transferral of ownership of a resource to a repository.
102
+ - value: capture
103
+ description: A record of the resource in a fixed form at a specific time.
104
+ - value: collection
105
+ description: The addition of a resource to a set of other resources.
106
+ - value: copyright
107
+ description: The activity by which a resource may be considered subject to copyright law.
108
+ - value: copyright notice
109
+ description: An explicit statement that a resource is under copyright.
110
+ - value: creation
111
+ description: The coming into being of a resource.
112
+ - value: degree conferral
113
+ description: The institutional approval of a thesis or other resource leading to an academic degree.
114
+ - value: development
115
+ description: The creation of a print from a photographic negative or other source medium.
116
+ - value: distribution
117
+ description: The delivery of the resource to an external audience.
118
+ - value: generation
119
+ description: The creation of a resource by an automatic or natural process.
120
+ - value: manufacture
121
+ description: The physical assembly of a resource, often in multiple copies, for publication or other distribution.
122
+ - value: modification
123
+ description: A change to an existing resource.
124
+ - value: performance
125
+ description: The enactment of an artistic or cultural work for an audience, such as a play.
126
+ - value: presentation
127
+ description: The discussion of an academic or intellectual work for an audience, such as a seminar.
128
+ - value: production
129
+ description: The physical assembly of a resource not considered published, such as page proofs for a book.
130
+ - value: publication
131
+ description: The publishing or issuing of a resource.
132
+ - value: recording
133
+ description: The initial fixation to a medium of live audio and/or visual activity.
134
+ - value: release
135
+ description: Making a resource available to a broader audience.
136
+ - value: submission
137
+ description: The provision of a resource for review or evaluation.
138
+ - value: validity
139
+ description: When a resource takes effect, such as a revised train schedule.
140
+ - value: withdrawal
141
+ description: The removal of previous access to a resource, often due to its obsolescence.
142
+ event.date:
143
+ - value: acquisition
144
+ description: The transferral of ownership of a resource to a repository.
145
+ - value: capture
146
+ description: A record of the resource in a fixed form at a specific time.
147
+ - value: collection
148
+ description: The addition of a resource to a set of other resources.
149
+ - value: copyright
150
+ description: The activity by which a resource may be considered subject to copyright law.
151
+ - value: creation
152
+ description: The coming into being of a resource.
153
+ - value: degree conferral
154
+ description: The institutional approval of a thesis or other resource leading to an academic degree.
155
+ - value: developed
156
+ description: The creation of a print from a photographic negative or other source medium.
157
+ status: deprecated
158
+ use: development
159
+ - value: development
160
+ description: The creation of a print from a photographic negative or other source medium.
161
+ - value: distribution
162
+ description: The delivery of the resource to an external audience.
163
+ - value: generation
164
+ description: The creation of a resource by an automatic or natural process.
165
+ - value: manufacture
166
+ description: The physical assembly of a resource, often in multiple copies, for publication or other distribution.
167
+ - value: modification
168
+ description: A change to an existing resource.
169
+ - value: performance
170
+ description: The enactment of an artistic or cultural work for an audience, such as a play.
171
+ - value: presentation
172
+ description: The discussion of an academic or intellectual work for an audience, such as a seminar.
173
+ - value: production
174
+ description: The physical assembly of a resource not considered published, such as page proofs for a book.
175
+ - value: publication
176
+ description: The publishing or issuing of a resource.
177
+ - value: recording
178
+ description: The initial fixation to a medium of live audio and/or visual activity.
179
+ - value: release
180
+ description: Making a resource available to a broader audience.
181
+ - value: submission
182
+ description: The provision of a resource for review or evaluation.
183
+ - value: validity
184
+ description: When a resource takes effect, such as a revised train schedule.
185
+ - value: withdrawal
186
+ description: The removal of previous access to a resource, often due to its obsolescence.
187
+ event.date.structuredValue:
188
+ - value: start
189
+ description: The start date in a range.
190
+ - value: end
191
+ description: The end date in a range.
192
+ event.note:
193
+ - value: copyright statement
194
+ description: A formal declaration of copyright on a resource.
195
+ - value: edition
196
+ - value: frequency
197
+ description: How often a resource is issued, such as monthly.
198
+ - value: issuance
199
+ description: How the resource is issued, such as serially.
200
+ form:
201
+ - value: carrier
202
+ - value: data format
203
+ - value: digital original
204
+ - value: extent
205
+ - value: form
206
+ - value: genre
207
+ - value: map projection
208
+ - value: map scale
209
+ - value: material
210
+ - value: media
211
+ - value: media type
212
+ - value: reformatting quality
213
+ - value: resource type
214
+ - value: technique
215
+ - value: type
216
+ form.note:
217
+ - value: additions
218
+ - value: arrangement
219
+ - value: binding
220
+ - value: codicology
221
+ - value: collation
222
+ - value: colophon
223
+ - value: condition
224
+ - value: decoNote
225
+ status: deprecated
226
+ use: decoration
227
+ - value: decoration
228
+ - value: dimensions
229
+ - value: explicit
230
+ - value: foliation
231
+ - value: genre type
232
+ - value: hand note
233
+ - value: handNote
234
+ status: deprecated
235
+ use: hand note
236
+ - value: incipit
237
+ - value: instrumentation
238
+ - value: layout
239
+ - value: material
240
+ - value: medium of performance
241
+ - value: provenance
242
+ - value: reassembly
243
+ - value: reproduction
244
+ - value: research
245
+ - value: rubric
246
+ - value: secfol
247
+ status: deprecated
248
+ use: second folio
249
+ - value: second folio
250
+ - value: secondFolio
251
+ status: deprecated
252
+ use: second folio
253
+ - value: unit
254
+ - value: writing
255
+ form.structuredValue:
256
+ - value: type
257
+ - value: subtype
258
+ geographic.form:
259
+ - value: data format
260
+ - value: media type
261
+ - value: type
262
+ geographic.subject:
263
+ - value: bounding box coordinates
264
+ - value: coverage
265
+ - value: point coordinates
266
+ geographic.subject.structuredValue:
267
+ - value: east
268
+ - value: latitude
269
+ - value: longitude
270
+ - value: north
271
+ - value: south
272
+ - value: west
273
+ identifier:
274
+ - value: accession number
275
+ - value: alternate case number
276
+ - value: Apis ID
277
+ code: apis
278
+ - value: ARK
279
+ code: ark
280
+ - value: arXiv
281
+ code: arxiv
282
+ - value: case identifier
283
+ - value: case number
284
+ - value: document number
285
+ - value: DOI
286
+ code: doi
287
+ - value: druid
288
+ - value: GTIN-14 ID
289
+ code: gtin-14
290
+ - value: Handle
291
+ code: hdl
292
+ - value: inventory number
293
+ - value: ISBN
294
+ code: isbn
295
+ - value: ISMN
296
+ code: ismn
297
+ - value: ISRC
298
+ code: isrc
299
+ - value: ISSN
300
+ code: issn
301
+ - value: ISSN-L
302
+ code: issn-l
303
+ - value: issue number
304
+ code: issue-number
305
+ - value: LCCN
306
+ code: lccn
307
+ - value: local
308
+ code: local
309
+ - value: Local ID
310
+ - value: matrix number
311
+ code: matrix-number
312
+ - value: music plate
313
+ code: music-plate
314
+ - value: music publisher
315
+ code: music-publisher
316
+ - value: OCLC
317
+ - value: PMCID
318
+ - value: PMID
319
+ - value: record id
320
+ - value: Senate Number
321
+ - value: Series
322
+ - value: SIRSI
323
+ - value: Source ID
324
+ - value: sourceID
325
+ status: deprecated
326
+ use: Source ID
327
+ - value: stock number
328
+ code: stock-number
329
+ - value: Swets (Netherlands) ID
330
+ code: swets
331
+ - value: UPC
332
+ code: upc
333
+ - value: URI
334
+ code: uri
335
+ - value: URN
336
+ code: urn
337
+ - value: videorecording identifier
338
+ code: videorecording-identifier
339
+ - value: West Mat \#
340
+ - value: Wikidata
341
+ code: wikidata
342
+ note:
343
+ - value: abstract
344
+ - value: access
345
+ - value: access note
346
+ status: deprecated
347
+ use: access
348
+ - value: acquisition
349
+ - value: action
350
+ - value: additional physical form
351
+ - value: additions
352
+ - value: admin
353
+ - value: affiliation
354
+ - value: bibliographic
355
+ - value: bibliography
356
+ - value: biographical/historical
357
+ - value: biographical/historical note
358
+ status: deprecated
359
+ use: biographical/historical
360
+ - value: biography
361
+ - value: boat note
362
+ - value: citation/reference
363
+ - value: contact
364
+ - value: content
365
+ - value: content note
366
+ status: deprecated
367
+ use: content
368
+ - value: content warning
369
+ - value: contents
370
+ status: deprecated
371
+ use: content
372
+ - value: copyright
373
+ - value: creation/production credits
374
+ - value: date
375
+ - value: date/sequential designation
376
+ - value: description
377
+ - value: digitization
378
+ - value: duration
379
+ - value: event
380
+ - value: exhibitions
381
+ - value: funding
382
+ - value: general
383
+ - value: genre type
384
+ - value: geography
385
+ - value: host
386
+ - value: language
387
+ - value: local
388
+ - value: location
389
+ - value: medium of performance
390
+ - value: names
391
+ - value: numbering
392
+ - value: original location
393
+ - value: other relation type
394
+ - value: ownership
395
+ - value: part
396
+ - value: performer
397
+ - value: performers
398
+ - value: preferred citation
399
+ - value: provenance
400
+ - value: publications
401
+ - value: qualifications
402
+ - value: quote
403
+ - value: reassembly
404
+ - value: reference
405
+ - value: references
406
+ - value: related publication
407
+ - value: reproduction
408
+ - value: research
409
+ - value: restriction
410
+ - value: scope and content
411
+ - value: source characteristics
412
+ - value: source identifier
413
+ - value: statement of responsibility
414
+ - value: summary
415
+ - value: system details
416
+ - value: system requirements
417
+ - value: table of contents
418
+ - value: target audience
419
+ - value: technical note
420
+ - value: thesis
421
+ - value: transcript
422
+ - value: translation
423
+ - value: update
424
+ - value: use and reproduction
425
+ - value: venue
426
+ - value: version
427
+ - value: version identification
428
+ - value: writing
429
+ note.groupedValue:
430
+ - value: caption
431
+ - value: date
432
+ - value: detail type
433
+ - value: extent unit
434
+ - value: list
435
+ - value: marker
436
+ - value: number
437
+ - value: title
438
+ - value: text
439
+ relatedResource:
440
+ - value: has original version
441
+ description: An initial form of the resource.
442
+ - value: has other format
443
+ description: A version of the resource in a different physical or digital format.
444
+ - value: has part
445
+ description: A constituent unit of the resource.
446
+ - value: has version
447
+ description: A version of the resource with different intellectual content.
448
+ - value: in series
449
+ description: The name of a series of publications to which the resource belongs.
450
+ - value: other relation type
451
+ description: Resource type not otherwise described.
452
+ - value: part of
453
+ description: A larger resource to which the resource belongs, such as a collection.
454
+ - value: preceded by
455
+ description: A predecessor to the resource, such as a preceding journal title.
456
+ - value: referenced by
457
+ description: Other resources that cite the resource, such as a catalog.
458
+ - value: references
459
+ description: A resource which the resource references or cites.
460
+ - value: related to
461
+ description: A generically related resource.
462
+ - value: reviewed by
463
+ description: A review of the resource.
464
+ - value: succeeded by
465
+ description: A successor to the resource, such as a subsequent journal title.
466
+ subject:
467
+ - value: classification
468
+ - value: conference
469
+ - value: display
470
+ - value: event
471
+ - value: family
472
+ - value: genre
473
+ - value: map coordinates
474
+ - value: name
475
+ - value: occupation
476
+ - value: organization
477
+ - value: person
478
+ - value: place
479
+ - value: point coordinates
480
+ - value: time
481
+ - value: title
482
+ - value: topic
483
+ subject.note:
484
+ - value: role
485
+ subject.structuredValue:
486
+ - value: activity dates
487
+ - value: city
488
+ - value: continent
489
+ - value: country
490
+ - value: end
491
+ - value: east
492
+ - value: display
493
+ - value: forename
494
+ - value: genre
495
+ - value: latitude
496
+ - value: life dates
497
+ - value: longitude
498
+ - value: main title
499
+ - value: name
500
+ - value: north
501
+ - value: occupation
502
+ - value: ordinal
503
+ - value: part name
504
+ - value: person
505
+ - value: place
506
+ - value: south
507
+ - value: start
508
+ - value: surname
509
+ - value: term of address
510
+ - value: time
511
+ - value: title
512
+ - value: topic
513
+ - value: west
514
+ subject.structuredValue.note:
515
+ - value: role
516
+ description: The relation of the subject entity to the resource.
517
+ subject.groupedValue:
518
+ - value: uniform
519
+ description: Form of title in Library of Congress title authority.
520
+ title:
521
+ - value: abbreviated
522
+ description: Abbreviated form of title for indexing or identification.
523
+ - value: alternative
524
+ description: Variant title.
525
+ - value: parallel
526
+ description: Title transcribed from the resource in multiple languages or scripts.
527
+ - value: supplied
528
+ description: Title provided by metadata creator rather than transcribed from the resource.
529
+ - value: translated
530
+ description: Title translated into another language.
531
+ - value: transliterated
532
+ description: Title transliterated from non-Latin script to Latin script.
533
+ - value: uniform
534
+ description: Form of title in Library of Congress title authority.
535
+ title.note:
536
+ - value: associated name
537
+ description: A name linked to the title, such as for a name-title heading.
538
+ - value: nonsorting character count
539
+ description: The number of characters at the beginning of the string to be disregarded when sorting.
540
+ title.structuredValue:
541
+ - value: main title
542
+ description: The primary part of a multipart title.
543
+ - value: nonsorting characters
544
+ description: A string at the beginning of the title to be disregarded when sorting.
545
+ - value: part name
546
+ description: The distinct name of a resource as part of a series or multivolume set.
547
+ - value: part number
548
+ description: The distinct number of a resource as part of a series or multivolume set.
549
+ - value: subtitle
550
+ description: The secondary part of a title.
@@ -4,7 +4,7 @@ module Cocina
4
4
  module Models
5
5
  class AccessRole < Struct
6
6
  # Name of role
7
- attribute :name, Types::Strict::String.enum('dor-apo-creator', 'dor-apo-depositor', 'dor-apo-manager', 'dor-apo-metadata', 'dor-apo-reviewer', 'dor-apo-viewer', 'sdr-administrator', 'sdr-viewer', 'hydrus-collection-creator', 'hydrus-collection-manager', 'hydrus-collection-depositor', 'hydrus-collection-item-depositor', 'hydrus-collection-reviewer', 'hydrus-collection-viewer')
7
+ attribute :name, Types::Strict::String.enum('dor-apo-depositor', 'dor-apo-manager', 'dor-apo-viewer', 'sdr-administrator', 'sdr-viewer', 'hydrus-collection-creator', 'hydrus-collection-manager', 'hydrus-collection-depositor', 'hydrus-collection-item-depositor', 'hydrus-collection-reviewer', 'hydrus-collection-viewer')
8
8
  attribute :members, Types::Strict::Array.of(AccessRoleMember).default([].freeze)
9
9
  end
10
10
  end
@@ -0,0 +1,119 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cocina
4
+ module Models
5
+ module Validators
6
+ # Validates types for description against description_types.yml.
7
+ class DescriptionTypesValidator
8
+ def self.validate(clazz, attributes)
9
+ new(clazz, attributes).validate
10
+ end
11
+
12
+ def initialize(clazz, attributes)
13
+ @clazz = clazz
14
+ @attributes = attributes
15
+ @error_paths = []
16
+ end
17
+
18
+ def validate
19
+ return unless meets_preconditions?
20
+
21
+ validate_obj(attributes, [])
22
+
23
+ return if error_paths.empty?
24
+
25
+ raise ValidationError, "Unrecognized types in description: #{error_paths.join(', ')}"
26
+ end
27
+
28
+ private
29
+
30
+ attr_reader :clazz, :attributes, :error_paths
31
+
32
+ def meets_preconditions?
33
+ attributes.key?(:description) || [Cocina::Models::Description,
34
+ Cocina::Models::RequestDescription].include?(clazz)
35
+ end
36
+
37
+ def validate_hash(hash, path)
38
+ hash.each do |key, obj|
39
+ if key == :type
40
+ validate_type(obj, path)
41
+ else
42
+ validate_obj(obj, path + [key])
43
+ end
44
+ end
45
+ end
46
+
47
+ def validate_array(array, path)
48
+ array.each_with_index do |obj, index|
49
+ validate_obj(obj, path + [index])
50
+ end
51
+ end
52
+
53
+ def validate_obj(obj, path)
54
+ validate_hash(obj, path) if obj.is_a?(Hash)
55
+ validate_array(obj, path) if obj.is_a?(Array)
56
+ end
57
+
58
+ def validate_type(type, path)
59
+ valid_types.each do |type_signature, types|
60
+ next unless match?(path, type_signature)
61
+ break if types.include?(type.downcase)
62
+
63
+ error_paths << path_to_s(path)
64
+ break
65
+ end
66
+ end
67
+
68
+ def match?(path, type_signature)
69
+ clean_path(path).last(type_signature.length) == type_signature
70
+ end
71
+
72
+ # Some part of the path are ignored for the purpose of matching.
73
+ def clean_path(path)
74
+ new_path = path.reject do |part|
75
+ part.is_a?(Integer) || part == :parallelValue
76
+ end
77
+ # This needs to happen after parallelValue is removed
78
+ # to handle structuredValue > parallelValue > structuredValue
79
+ new_path.reject.with_index do |part, index|
80
+ part == :structuredValue && new_path[index - 1] == :structuredValue
81
+ end
82
+ end
83
+
84
+ # rubocop:disable Style/ClassVars
85
+ def valid_types
86
+ # Class var to minimize loading from disk.
87
+ @@valid_types ||= begin
88
+ types = types_yaml.map do |type_signature_str, type_objs|
89
+ type_signature = type_signature_str.split('.').map(&:to_sym)
90
+ types = type_objs.map { |type_obj| type_obj['value'].downcase }
91
+ [type_signature, types]
92
+ end
93
+ # Sorting so that longer signatures match first.
94
+ types.sort { |a, b| b.first.length <=> a.first.length }
95
+ end
96
+ end
97
+ # rubocop:enable Style/ClassVars
98
+
99
+ def types_yaml
100
+ YAML.load_file(::File.expand_path('../../../../description_types.yml', __dir__))
101
+ end
102
+
103
+ def path_to_s(path)
104
+ # This matches the format used by descriptive spreadsheets
105
+ path_str = ''
106
+ path.each_with_index do |part, index|
107
+ if part.is_a?(Integer)
108
+ path_str += (part + 1).to_s
109
+ else
110
+ path_str += '.' if index.positive?
111
+ path_str += part.to_s
112
+ end
113
+ end
114
+ path_str
115
+ end
116
+ end
117
+ end
118
+ end
119
+ end
@@ -5,7 +5,12 @@ module Cocina
5
5
  module Validators
6
6
  # Perform validation against all other Validators
7
7
  class Validator
8
- VALIDATORS = [OpenApiValidator, DarkValidator, CatalogLinksValidator].freeze
8
+ VALIDATORS = [
9
+ OpenApiValidator,
10
+ DarkValidator,
11
+ CatalogLinksValidator,
12
+ DescriptionTypesValidator
13
+ ].freeze
9
14
 
10
15
  def self.validate(clazz, attributes)
11
16
  VALIDATORS.each { |validator| validator.validate(clazz, attributes) }
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Cocina
4
4
  module Models
5
- VERSION = '0.72.0'
5
+ VERSION = '0.73.0'
6
6
  end
7
7
  end
data/openapi.yml CHANGED
@@ -161,11 +161,8 @@ components:
161
161
  description: Name of role
162
162
  type: string
163
163
  enum:
164
- - 'dor-apo-creator'
165
164
  - 'dor-apo-depositor'
166
165
  - 'dor-apo-manager'
167
- - 'dor-apo-metadata'
168
- - 'dor-apo-reviewer'
169
166
  - 'dor-apo-viewer'
170
167
  - 'sdr-administrator'
171
168
  - 'sdr-viewer'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocina-models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.72.0
4
+ version: 0.73.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-11 00:00:00.000000000 Z
11
+ date: 2022-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -274,6 +274,7 @@ files:
274
274
  - bin/console
275
275
  - bin/setup
276
276
  - cocina-models.gemspec
277
+ - description_types.yml
277
278
  - docs/cocina-base.jsonld
278
279
  - docs/index.html
279
280
  - docs/maps/Agent.json
@@ -386,6 +387,7 @@ files:
386
387
  - lib/cocina/models/validatable.rb
387
388
  - lib/cocina/models/validators/catalog_links_validator.rb
388
389
  - lib/cocina/models/validators/dark_validator.rb
390
+ - lib/cocina/models/validators/description_types_validator.rb
389
391
  - lib/cocina/models/validators/open_api_validator.rb
390
392
  - lib/cocina/models/validators/validator.rb
391
393
  - lib/cocina/models/version.rb
@@ -398,7 +400,7 @@ homepage: https://github.com/sul-dlss/cocina-models
398
400
  licenses: []
399
401
  metadata:
400
402
  rubygems_mfa_required: 'true'
401
- post_install_message:
403
+ post_install_message:
402
404
  rdoc_options: []
403
405
  require_paths:
404
406
  - lib
@@ -413,8 +415,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
413
415
  - !ruby/object:Gem::Version
414
416
  version: '0'
415
417
  requirements: []
416
- rubygems_version: 3.2.32
417
- signing_key:
418
+ rubygems_version: 3.3.9
419
+ signing_key:
418
420
  specification_version: 4
419
421
  summary: Data models for the SDR
420
422
  test_files: []