cocina-models 0.72.0 → 0.73.0

Sign up to get free protection for your applications and to get access to all the features.
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: []