cocina-models 0.32.0 → 0.36.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/.github/pull_request_template.md +8 -1
  3. data/.rubocop.yml +115 -2
  4. data/README.md +1 -1
  5. data/cocina-models.gemspec +3 -2
  6. data/lib/cocina/generator/generator.rb +3 -0
  7. data/lib/cocina/generator/schema_value.rb +2 -2
  8. data/lib/cocina/models.rb +1 -2
  9. data/lib/cocina/models/admin_policy_administrative.rb +1 -1
  10. data/lib/cocina/models/administrative.rb +1 -1
  11. data/lib/cocina/models/contributor.rb +3 -1
  12. data/lib/cocina/models/description.rb +4 -2
  13. data/lib/cocina/models/descriptive_access_metadata.rb +13 -0
  14. data/lib/cocina/models/descriptive_admin_metadata.rb +3 -1
  15. data/lib/cocina/models/descriptive_basic_value.rb +10 -3
  16. data/lib/cocina/models/descriptive_parallel_value.rb +9 -0
  17. data/lib/cocina/models/descriptive_structured_value.rb +1 -1
  18. data/lib/cocina/models/descriptive_value.rb +10 -4
  19. data/lib/cocina/models/descriptive_value_required.rb +10 -4
  20. data/lib/cocina/models/dro.rb +1 -1
  21. data/lib/cocina/models/dro_access.rb +2 -0
  22. data/lib/cocina/models/event.rb +1 -1
  23. data/lib/cocina/models/file.rb +1 -1
  24. data/lib/cocina/models/identification.rb +2 -0
  25. data/lib/cocina/models/language.rb +30 -0
  26. data/lib/cocina/models/related_resource.rb +21 -0
  27. data/lib/cocina/models/request_collection.rb +1 -1
  28. data/lib/cocina/models/request_dro.rb +2 -2
  29. data/lib/cocina/models/request_identification.rb +13 -0
  30. data/lib/cocina/models/sequence.rb +1 -0
  31. data/lib/cocina/models/source.rb +1 -0
  32. data/lib/cocina/models/standard.rb +16 -0
  33. data/lib/cocina/models/version.rb +1 -1
  34. data/openapi.yml +322 -93
  35. metadata +18 -12
@@ -14,7 +14,7 @@ module Cocina
14
14
  # Primary processing label (can be same as title) for a File.
15
15
  attribute :label, Types::Strict::String
16
16
  # Filename for a file. Can be same as label.
17
- attribute :filename, Types::Strict::String.meta(omittable: true)
17
+ attribute :filename, Types::Strict::String
18
18
  # Size of the File (binary) in bytes.
19
19
  attribute :size, Types::Strict::Integer.meta(omittable: true)
20
20
  # Version for the File within SDR.
@@ -3,6 +3,8 @@
3
3
  module Cocina
4
4
  module Models
5
5
  class Identification < Struct
6
+ # Unique identifier in some other system. This is because a large proportion of what is deposited in SDR, historically and currently, are representations of objects that are also represented in other systems. For example, digitized paper and A/V collections have physical manifestations, and those physical objects are managed in systems that have their own identifiers. Similarly, books have barcodes, archival materials have collection numbers and physical locations, etc. The sourceId allows determining if an item has been deposited before and where to look for the original item if you're looking at its SDR representation.
7
+
6
8
  # example: sul:PC0170_s3_Fiesta_Bowl_2012-01-02_210609_2026
7
9
  attribute :sourceId, Types::Strict::String.meta(omittable: true)
8
10
  attribute :catalogLinks, Types::Strict::Array.of(CatalogLink).meta(omittable: true)
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cocina
4
+ module Models
5
+ class Language < Struct
6
+ attribute :structuredValue, Types::Strict::Array.of(DescriptiveValue).meta(omittable: true)
7
+ attribute :parallelValue, Types::Strict::Array.of(DescriptiveValue).meta(omittable: true)
8
+ # String value of the descriptive element.
9
+ attribute :value, Types::Strict::String.meta(omittable: true)
10
+ # Type of value provided by the descriptive element.
11
+ attribute :type, Types::Strict::String.meta(omittable: true)
12
+ # Status of the descriptive element value relative to other instances of the element.
13
+ attribute :status, Types::Strict::String.meta(omittable: true)
14
+ # Code value of the descriptive element.
15
+ attribute :code, Types::Strict::String.meta(omittable: true)
16
+ # URI value of the descriptive element.
17
+ attribute :uri, Types::Strict::String.meta(omittable: true)
18
+ attribute :standard, Standard.optional.meta(omittable: true)
19
+ attribute :encoding, Standard.optional.meta(omittable: true)
20
+ attribute :source, Source.optional.meta(omittable: true)
21
+ # The preferred display label to use for the descriptive element in access systems.
22
+ attribute :displayLabel, Types::Strict::String.meta(omittable: true)
23
+ # A term providing information about the circumstances of the statement (e.g., approximate dates).
24
+ attribute :qualifier, Types::Strict::String.meta(omittable: true)
25
+ attribute :note, Types::Strict::Array.of(DescriptiveValue).meta(omittable: true)
26
+ attribute :appliesTo, Types::Strict::Array.of(DescriptiveBasicValue).meta(omittable: true)
27
+ attribute :script, DescriptiveValue.optional.meta(omittable: true)
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cocina
4
+ module Models
5
+ class RelatedResource < Struct
6
+ # The relationship of the related resource to the described resource.
7
+ attribute :type, Types::Strict::String.meta(omittable: true)
8
+ attribute :title, Types::Strict::Array.of(DescriptiveValue).meta(omittable: true)
9
+ attribute :contributor, Types::Strict::Array.of(Contributor).meta(omittable: true)
10
+ attribute :event, Types::Strict::Array.of(Event).meta(omittable: true)
11
+ attribute :form, Types::Strict::Array.of(DescriptiveValue).meta(omittable: true)
12
+ attribute :language, Types::Strict::Array.of(Language).meta(omittable: true)
13
+ attribute :note, Types::Strict::Array.of(DescriptiveValue).meta(omittable: true)
14
+ attribute :identifier, Types::Strict::Array.of(DescriptiveValue).meta(omittable: true)
15
+ attribute :subject, Types::Strict::Array.of(DescriptiveValue).meta(omittable: true)
16
+ # Stanford persistent URL associated with the related resource.
17
+ attribute :purl, Types::Strict::String.meta(omittable: true)
18
+ attribute :access, DescriptiveAccessMetadata.optional.meta(omittable: true)
19
+ end
20
+ end
21
+ end
@@ -16,7 +16,7 @@ module Cocina
16
16
  attribute :label, Types::Strict::String
17
17
  attribute :version, Types::Strict::Integer
18
18
  attribute(:access, Access.default { Access.new })
19
- attribute :administrative, Administrative.optional.meta(omittable: true)
19
+ attribute(:administrative, Administrative.default { Administrative.new })
20
20
  attribute :description, Description.optional.meta(omittable: true)
21
21
  attribute :identification, CollectionIdentification.optional.meta(omittable: true)
22
22
 
@@ -26,9 +26,9 @@ module Cocina
26
26
  attribute :label, Types::Strict::String
27
27
  attribute :version, Types::Strict::Integer
28
28
  attribute :access, DROAccess.optional.meta(omittable: true)
29
- attribute :administrative, Administrative.optional.meta(omittable: true)
29
+ attribute(:administrative, Administrative.default { Administrative.new })
30
30
  attribute :description, Description.optional.meta(omittable: true)
31
- attribute :identification, Identification.optional.meta(omittable: true)
31
+ attribute(:identification, RequestIdentification.default { RequestIdentification.new })
32
32
  attribute :structural, RequestDROStructural.optional.meta(omittable: true)
33
33
  attribute :geographic, Geographic.optional.meta(omittable: true)
34
34
 
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cocina
4
+ module Models
5
+ class RequestIdentification < Struct
6
+ # Unique identifier in some other system. This is because a large proportion of what is deposited in SDR, historically and currently, are representations of objects that are also represented in other systems. For example, digitized paper and A/V collections have physical manifestations, and those physical objects are managed in systems that have their own identifiers. Similarly, books have barcodes, archival materials have collection numbers and physical locations, etc. The sourceId allows determining if an item has been deposited before and where to look for the original item if you're looking at its SDR representation.
7
+
8
+ # example: sul:PC0170_s3_Fiesta_Bowl_2012-01-02_210609_2026
9
+ attribute :sourceId, Types::Strict::String
10
+ attribute :catalogLinks, Types::Strict::Array.of(CatalogLink).meta(omittable: true)
11
+ end
12
+ end
13
+ end
@@ -3,6 +3,7 @@
3
3
  module Cocina
4
4
  module Models
5
5
  class Sequence < Struct
6
+ attribute :members, Types::Strict::Array.of(Types::Strict::String).meta(omittable: true)
6
7
  # The direction that a sequence of canvases should be displayed to the user
7
8
  attribute :viewingDirection, Types::Strict::String.enum('right-to-left', 'left-to-right').meta(omittable: true)
8
9
  end
@@ -9,6 +9,7 @@ module Cocina
9
9
  attribute :uri, Types::Strict::String.meta(omittable: true)
10
10
  # String describing the value source.
11
11
  attribute :value, Types::Strict::String.meta(omittable: true)
12
+ attribute :note, Types::Strict::Array.of(DescriptiveValue).meta(omittable: true)
12
13
  end
13
14
  end
14
15
  end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cocina
4
+ module Models
5
+ class Standard < Struct
6
+ # Code representing the standard or encoding.
7
+ attribute :code, Types::Strict::String.meta(omittable: true)
8
+ # URI for the standard or encoding.
9
+ attribute :uri, Types::Strict::String.meta(omittable: true)
10
+ # String describing the standard or encoding.
11
+ attribute :value, Types::Strict::String.meta(omittable: true)
12
+ attribute :note, Types::Strict::Array.of(DescriptiveValue).meta(omittable: true)
13
+ attribute :source, Source.optional.meta(omittable: true)
14
+ end
15
+ end
16
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Cocina
4
4
  module Models
5
- VERSION = '0.32.0'
5
+ VERSION = '0.36.0'
6
6
  end
7
7
  end
@@ -142,6 +142,8 @@ components:
142
142
  description: Administrative or Internal project this resource is a part of
143
143
  example: Google Books
144
144
  type: string
145
+ required:
146
+ - hasAdminPolicy
145
147
  AdminPolicy:
146
148
  type: object
147
149
  additionalProperties: false
@@ -162,11 +164,11 @@ components:
162
164
  description:
163
165
  $ref: '#/components/schemas/Description'
164
166
  required:
167
+ - administrative
165
168
  - externalIdentifier
166
169
  - label
167
170
  - type
168
171
  - version
169
- - administrative
170
172
  AdminPolicyAdministrative:
171
173
  type: object
172
174
  additionalProperties: false
@@ -178,6 +180,8 @@ components:
178
180
  type: string
179
181
  hasAdminPolicy:
180
182
  type: string
183
+ required:
184
+ - hasAdminPolicy
181
185
  AppliesTo:
182
186
  description: Property model for indicating the parts, aspects, or versions of the resource to which a
183
187
  descriptive element is applicable.
@@ -250,7 +254,7 @@ components:
250
254
  $ref: '#/components/schemas/CatalogLink'
251
255
  Contributor:
252
256
  description: Property model for describing agents contributing in some way to
253
- the creation and history of the resource
257
+ the creation and history of the resource.
254
258
  type: object
255
259
  additionalProperties: false
256
260
  properties:
@@ -263,7 +267,8 @@ components:
263
267
  description: Entity type of the contributor (person, organization, etc.).
264
268
  type: string
265
269
  status:
266
- description: Status of the contributor relative to other parallel contributors.
270
+ description: Status of the contributor relative to other parallel contributors
271
+ (e.g. the primary author among a group of contributors).
267
272
  type: string
268
273
  role:
269
274
  description: Relationships of the contributor to the resource or to an event
@@ -271,90 +276,16 @@ components:
271
276
  type: array
272
277
  items:
273
278
  $ref: "#/components/schemas/DescriptiveValue"
274
- DescriptiveAdminMetadata:
275
- description: Information about this description of the resource.
276
- type: object
277
- additionalProperties: false
278
- properties:
279
- contributor:
280
- type: array
281
- items:
282
- $ref: "#/components/schemas/Contributor"
283
- event:
284
- type: array
285
- items:
286
- $ref: "#/components/schemas/Event"
287
- language:
279
+ identifier:
280
+ description: Identifiers and URIs associated with the contributor entity.
288
281
  type: array
289
282
  items:
290
283
  $ref: "#/components/schemas/DescriptiveValue"
291
284
  note:
285
+ description: Other information associated with the contributor.
292
286
  type: array
293
287
  items:
294
288
  $ref: "#/components/schemas/DescriptiveValue"
295
- DescriptiveBasicValue:
296
- description: Value model for descriptive elements without recursive properties.
297
- type: object
298
- additionalProperties: false
299
- properties:
300
- value:
301
- description: String value of the descriptive element.
302
- type: string
303
- type:
304
- description: Type of value provided by the descriptive element.
305
- type: string
306
- status:
307
- description: Status of the descriptive element relative to other instances
308
- of the element.
309
- type: string
310
- code:
311
- description: Code value of the descriptive element.
312
- type: string
313
- uri:
314
- description: URI value of the descriptive element.
315
- type: string
316
- format: uri
317
- standard:
318
- description: Descriptive or content standard to which the value conforms.
319
- type: array
320
- items:
321
- type: string
322
- encoding:
323
- description: Encoding schema, standard, or syntax to which the value conforms.
324
- type: array
325
- items:
326
- type: string
327
- source:
328
- $ref: "#/components/schemas/Source"
329
- DescriptiveStructuredValue:
330
- description: Value model for descriptive elements structured as typed values.
331
- type: object
332
- additionalProperties: false
333
- properties:
334
- structuredValue:
335
- type: array
336
- items:
337
- $ref: "#/components/schemas/DescriptiveBasicValue"
338
- DescriptiveValue:
339
- description: Default value model for descriptive elements.
340
- type: object
341
- additionalProperties: false
342
- allOf:
343
- - $ref: "#/components/schemas/DescriptiveBasicValue"
344
- - $ref: "#/components/schemas/DescriptiveStructuredValue"
345
- - $ref: "#/components/schemas/AppliesTo"
346
- DescriptiveValueRequired:
347
- type: object
348
- additionalProperties: false
349
- allOf:
350
- - $ref: "#/components/schemas/DescriptiveValue"
351
- - anyOf:
352
- - type: object
353
- required:
354
- - value
355
- - type: object
356
- required:
357
- - structuredValue
358
289
  Description:
359
290
  type: object
360
291
  additionalProperties: false
@@ -383,17 +314,23 @@ components:
383
314
  items:
384
315
  $ref: "#/components/schemas/DescriptiveValue"
385
316
  language:
386
- description: Languages, scripts, and notations used in all or part of a resource.
317
+ description: Languages, scripts, symbolic systems, and notations used in all or
318
+ part of a resource.
387
319
  type: array
388
320
  items:
389
- $ref: "#/components/schemas/DescriptiveValue"
321
+ $ref: "#/components/schemas/Language"
390
322
  note:
391
323
  description: Additional information relevant to a resource.
392
324
  type: array
393
325
  items:
394
326
  $ref: "#/components/schemas/DescriptiveValue"
395
327
  identifier:
396
- description: Unique strings associated with the resource.
328
+ description: Identifiers and URIs associated with the resource.
329
+ type: array
330
+ items:
331
+ $ref: "#/components/schemas/DescriptiveValue"
332
+ subject:
333
+ description: Terms associated with the intellectual content of the resource.
397
334
  type: array
398
335
  items:
399
336
  $ref: "#/components/schemas/DescriptiveValue"
@@ -401,11 +338,13 @@ components:
401
338
  description: Stanford persistent URL associated with the resource.
402
339
  type: string
403
340
  format: uri
404
- url:
405
- description: URLs where the resource may be accessed in full or part.
341
+ access:
342
+ $ref: "#/components/schemas/DescriptiveAccessMetadata"
343
+ relatedResource:
344
+ description: Other resources associated with the described resource.
406
345
  type: array
407
346
  items:
408
- $ref: "#/components/schemas/DescriptiveValue"
347
+ $ref: "#/components/schemas/RelatedResource"
409
348
  marcEncodedData:
410
349
  description: Data about the resource represented in MARC fixed fields and codes.
411
350
  type: array
@@ -415,6 +354,154 @@ components:
415
354
  $ref: "#/components/schemas/DescriptiveAdminMetadata"
416
355
  required:
417
356
  - title
357
+ DescriptiveAccessMetadata:
358
+ description: Information about how to access digital and physical versions of the object.
359
+ type: object
360
+ additionalProperties: false
361
+ properties:
362
+ url:
363
+ description: URLs where the resource may be accessed in full or part.
364
+ type: array
365
+ items:
366
+ $ref: "#/components/schemas/DescriptiveValue"
367
+ physicalLocation:
368
+ description: Location of a physical version of the resource.
369
+ type: array
370
+ items:
371
+ $ref: "#/components/schemas/DescriptiveValue"
372
+ accessContact:
373
+ description: The library, organization, or person responsible for access to the resource.
374
+ type: array
375
+ items:
376
+ $ref: "#/components/schemas/DescriptiveValue"
377
+ digitalRepository:
378
+ description: The digital repositories that hold the resource.
379
+ type: array
380
+ items:
381
+ $ref: "#/components/schemas/DescriptiveValue"
382
+ note:
383
+ description: Other information related to accessing the resource.
384
+ type: array
385
+ items:
386
+ $ref: "#/components/schemas/DescriptiveValue"
387
+ DescriptiveAdminMetadata:
388
+ description: Information about this resource description.
389
+ type: object
390
+ additionalProperties: false
391
+ properties:
392
+ contributor:
393
+ description: Contributors to this resource description.
394
+ type: array
395
+ items:
396
+ $ref: "#/components/schemas/Contributor"
397
+ event:
398
+ description: Events in the history of this resource description.
399
+ type: array
400
+ items:
401
+ $ref: "#/components/schemas/Event"
402
+ language:
403
+ description: Languages, scripts, symbolic systems, and notations used
404
+ in this resource description.
405
+ type: array
406
+ items:
407
+ $ref: "#/components/schemas/Language"
408
+ note:
409
+ description: Other information related to this resource description.
410
+ type: array
411
+ items:
412
+ $ref: "#/components/schemas/DescriptiveValue"
413
+ standard:
414
+ # description: Descriptive or content standard to which this resource description conforms.
415
+ $ref: "#/components/schemas/Standard"
416
+ identifier:
417
+ description: Identifiers associated with this resource description.
418
+ type: array
419
+ items:
420
+ $ref: "#/components/schemas/DescriptiveValue"
421
+ DescriptiveBasicValue:
422
+ description: Basic value model for descriptive elements.
423
+ type: object
424
+ # additionalProperties breaks the validator, unclear as to why.
425
+ # additionalProperties: false
426
+ allOf:
427
+ - $ref: "#/components/schemas/DescriptiveStructuredValue"
428
+ - $ref: "#/components/schemas/DescriptiveParallelValue"
429
+ - type: object
430
+ additionalProperties: false
431
+ properties:
432
+ value:
433
+ description: String value of the descriptive element.
434
+ type: string
435
+ type:
436
+ description: Type of value provided by the descriptive element.
437
+ type: string
438
+ status:
439
+ description: Status of the descriptive element value relative to other instances
440
+ of the element.
441
+ type: string
442
+ code:
443
+ description: Code value of the descriptive element.
444
+ type: string
445
+ uri:
446
+ description: URI value of the descriptive element.
447
+ type: string
448
+ format: uri
449
+ standard:
450
+ # description: Descriptive or content standard to which the value conforms.
451
+ $ref: "#/components/schemas/Standard"
452
+ encoding:
453
+ # description: Encoding schema, standard, or syntax to which the value conforms.
454
+ $ref: "#/components/schemas/Standard"
455
+ source:
456
+ $ref: "#/components/schemas/Source"
457
+ displayLabel:
458
+ description: The preferred display label to use for the descriptive element in access systems.
459
+ type: string
460
+ qualifier:
461
+ description: A term providing information about the circumstances of the statement (e.g., approximate dates).
462
+ type: string
463
+ note:
464
+ description: Other information related to the descriptive element.
465
+ type: array
466
+ items:
467
+ $ref: "#/components/schemas/DescriptiveValue"
468
+ DescriptiveParallelValue:
469
+ description: Value model for multiple representations of the same information (e.g. in different languages).
470
+ type: object
471
+ additionalProperties: false
472
+ properties:
473
+ parallelValue:
474
+ type: array
475
+ items:
476
+ $ref: "#/components/schemas/DescriptiveValue"
477
+ DescriptiveStructuredValue:
478
+ description: Value model for descriptive elements structured as typed, ordered values.
479
+ type: object
480
+ additionalProperties: false
481
+ properties:
482
+ structuredValue:
483
+ type: array
484
+ items:
485
+ $ref: "#/components/schemas/DescriptiveValue"
486
+ DescriptiveValue:
487
+ description: Default value model for descriptive elements.
488
+ type: object
489
+ additionalProperties: false
490
+ allOf:
491
+ - $ref: "#/components/schemas/DescriptiveBasicValue"
492
+ - $ref: "#/components/schemas/AppliesTo"
493
+ DescriptiveValueRequired:
494
+ type: object
495
+ additionalProperties: false
496
+ allOf:
497
+ - $ref: "#/components/schemas/DescriptiveValue"
498
+ - anyOf:
499
+ - type: object
500
+ required:
501
+ - value
502
+ - type: object
503
+ required:
504
+ - structuredValue
418
505
  DRO:
419
506
  description: Domain-defined abstraction of a 'work'. Digital Repository Objects' abstraction is describable for our domain’s purposes, i.e. for management needs within our system.
420
507
  type: object
@@ -461,11 +548,12 @@ components:
461
548
  geographic:
462
549
  $ref: '#/components/schemas/Geographic'
463
550
  required:
551
+ - access
552
+ - administrative
464
553
  - externalIdentifier
465
554
  - label
466
555
  - type
467
556
  - version
468
- - access
469
557
  DROAccess:
470
558
  type: object
471
559
  additionalProperties: false
@@ -479,6 +567,10 @@ components:
479
567
  - 'citation-only'
480
568
  - 'dark'
481
569
  default: 'dark'
570
+ controlledDigitalLending:
571
+ description: Available for controlled digital lending.
572
+ type: boolean
573
+ default: false
482
574
  copyright:
483
575
  description: The human readable copyright statement that applies
484
576
  example: Copyright World Trade Organization
@@ -597,7 +689,6 @@ components:
597
689
  type: array
598
690
  items:
599
691
  $ref: "#/components/schemas/DescriptiveValue"
600
-
601
692
  File:
602
693
  description: Binaries that are the basis of what our domain manages. Binaries here do not include metadata files generated for the domain's own management purposes.
603
694
  type: object
@@ -642,6 +733,7 @@ components:
642
733
  required:
643
734
  - externalIdentifier
644
735
  - label
736
+ - filename
645
737
  - type
646
738
  - version
647
739
  - access
@@ -710,11 +802,34 @@ components:
710
802
  properties:
711
803
  sourceId:
712
804
  type: string
805
+ description: >
806
+ Unique identifier in some other system. This is because a large proportion of what is deposited in SDR,
807
+ historically and currently, are representations of objects that are also represented in other systems.
808
+ For example, digitized paper and A/V collections have physical manifestations, and those physical objects are managed
809
+ in systems that have their own identifiers. Similarly, books have barcodes, archival materials have collection numbers
810
+ and physical locations, etc. The sourceId allows determining if an item has been deposited before and where to
811
+ look for the original item if you're looking at its SDR representation.
713
812
  example: 'sul:PC0170_s3_Fiesta_Bowl_2012-01-02_210609_2026'
714
813
  catalogLinks:
715
814
  type: array
716
815
  items:
717
816
  $ref: '#/components/schemas/CatalogLink'
817
+ Language:
818
+ description: Languages, scripts, symbolic systems, and notations used in all
819
+ or part of a resource.
820
+ type: object
821
+ additionalProperties: false
822
+ allOf:
823
+ - $ref: '#/components/schemas/DescriptiveValue'
824
+ - type: object
825
+ # additionalProperties breaks the validator, presumably because it can't
826
+ # conform to other schemas (allOf) and not have additionalProperties
827
+ # additionalProperties: false
828
+ properties:
829
+ script:
830
+ $ref: '#/components/schemas/DescriptiveValue'
831
+ # description: An alphabet or other notation used to represent a
832
+ # language or other symbolic system associated with the resource.
718
833
  MessageDigest:
719
834
  description: The output of the message digest algorithm.
720
835
  type: object
@@ -743,6 +858,63 @@ components:
743
858
  width:
744
859
  description: Width in pixels
745
860
  type: integer
861
+ RelatedResource:
862
+ description: Other resource associated with the described resource.
863
+ type: object
864
+ additionalProperties: false
865
+ properties:
866
+ type:
867
+ description: The relationship of the related resource to the described resource.
868
+ type: string
869
+ title:
870
+ description: Titles of the related resource.
871
+ type: array
872
+ items:
873
+ $ref: "#/components/schemas/DescriptiveValue"
874
+ contributor:
875
+ description: Agents contributing in some way to the creation and history of the
876
+ related resource.
877
+ type: array
878
+ items:
879
+ $ref: "#/components/schemas/Contributor"
880
+ event:
881
+ description: Events in the history of the related resource.
882
+ type: array
883
+ items:
884
+ $ref: "#/components/schemas/Event"
885
+ form:
886
+ description: Characteristics of the related resource's physical, digital, and intellectual
887
+ form and genre.
888
+ type: array
889
+ items:
890
+ $ref: "#/components/schemas/DescriptiveValue"
891
+ language:
892
+ description: Languages, scripts, symbolic systems, and notations used in all or
893
+ part of a related resource.
894
+ type: array
895
+ items:
896
+ $ref: "#/components/schemas/Language"
897
+ note:
898
+ description: Additional information relevant to a related resource.
899
+ type: array
900
+ items:
901
+ $ref: "#/components/schemas/DescriptiveValue"
902
+ identifier:
903
+ description: Identifiers and URIs associated with the related resource.
904
+ type: array
905
+ items:
906
+ $ref: "#/components/schemas/DescriptiveValue"
907
+ subject:
908
+ description: Terms associated with the intellectual content of the related resource.
909
+ type: array
910
+ items:
911
+ $ref: "#/components/schemas/DescriptiveValue"
912
+ purl:
913
+ description: Stanford persistent URL associated with the related resource.
914
+ type: string
915
+ format: uri
916
+ access:
917
+ $ref: "#/components/schemas/DescriptiveAccessMetadata"
746
918
  ReleaseTag:
747
919
  description: A tag that indicates the item or collection should be released.
748
920
  type: object
@@ -790,10 +962,10 @@ components:
790
962
  description:
791
963
  $ref: '#/components/schemas/Description'
792
964
  required:
965
+ - administrative
793
966
  - label
794
967
  - type
795
968
  - version
796
- - administrative
797
969
  RequestCollection:
798
970
  description: Same as a Collection, but doesn't have an externalIdentifier as one will be created
799
971
  type: object
@@ -821,10 +993,11 @@ components:
821
993
  identification:
822
994
  $ref: '#/components/schemas/CollectionIdentification'
823
995
  required:
996
+ - access
997
+ - administrative
824
998
  - label
825
999
  - type
826
1000
  - version
827
- - access
828
1001
  RequestDRO:
829
1002
  description: A request to create a DRO. This has the same general structure as a DRO but doesn't have externalIdentifier and doesn't require the access subschema. If no access subschema is provided, these values will be inherited from the AdminPolicy.
830
1003
  type: object
@@ -860,12 +1033,14 @@ components:
860
1033
  description:
861
1034
  $ref: '#/components/schemas/Description'
862
1035
  identification:
863
- $ref: '#/components/schemas/Identification'
1036
+ $ref: '#/components/schemas/RequestIdentification'
864
1037
  structural:
865
1038
  $ref: '#/components/schemas/RequestDROStructural'
866
1039
  geographic:
867
1040
  $ref: '#/components/schemas/Geographic'
868
1041
  required:
1042
+ - administrative
1043
+ - identification
869
1044
  - label
870
1045
  - type
871
1046
  - version
@@ -954,11 +1129,37 @@ components:
954
1129
  type: array
955
1130
  items:
956
1131
  $ref: '#/components/schemas/RequestFile'
1132
+ RequestIdentification:
1133
+ description: Same as a Identification, but requires a sourceId.
1134
+ type: object
1135
+ additionalProperties: false
1136
+ properties:
1137
+ sourceId:
1138
+ type: string
1139
+ description: >
1140
+ Unique identifier in some other system. This is because a large proportion of what is deposited in SDR,
1141
+ historically and currently, are representations of objects that are also represented in other systems.
1142
+ For example, digitized paper and A/V collections have physical manifestations, and those physical objects are managed
1143
+ in systems that have their own identifiers. Similarly, books have barcodes, archival materials have collection numbers
1144
+ and physical locations, etc. The sourceId allows determining if an item has been deposited before and where to
1145
+ look for the original item if you're looking at its SDR representation.
1146
+ example: 'sul:PC0170_s3_Fiesta_Bowl_2012-01-02_210609_2026'
1147
+ catalogLinks:
1148
+ type: array
1149
+ items:
1150
+ $ref: '#/components/schemas/CatalogLink'
1151
+ required:
1152
+ - sourceId
957
1153
  Sequence:
958
1154
  description: A sequence or ordering of resources within a Collection or Object.
959
1155
  type: object
960
1156
  additionalProperties: false
961
1157
  properties:
1158
+ members:
1159
+ description: "Identifiers for Members in their stated Order for the Sequence."
1160
+ type: array
1161
+ items:
1162
+ type: string
962
1163
  viewingDirection:
963
1164
  description: The direction that a sequence of canvases should be displayed to the user
964
1165
  type: string
@@ -966,8 +1167,8 @@ components:
966
1167
  - right-to-left
967
1168
  - left-to-right
968
1169
  Source:
969
- description: Property model for indicating the vocabulary, authority, or other
970
- origin for a term, code, or identifier.
1170
+ description: Property model for indicating the vocabulary, authority, or
1171
+ other origin for a term, code, or identifier.
971
1172
  type: object
972
1173
  additionalProperties: false
973
1174
  properties:
@@ -981,3 +1182,31 @@ components:
981
1182
  value:
982
1183
  description: String describing the value source.
983
1184
  type: string
1185
+ note:
1186
+ description: Other information related to the value source.
1187
+ type: array
1188
+ items:
1189
+ $ref: "#/components/schemas/DescriptiveValue"
1190
+ Standard:
1191
+ description: Property model for indicating the encoding, standard, or syntax
1192
+ to which a value conforms.
1193
+ type: object
1194
+ additionalProperties: false
1195
+ properties:
1196
+ code:
1197
+ description: Code representing the standard or encoding.
1198
+ type: string
1199
+ uri:
1200
+ description: URI for the standard or encoding.
1201
+ type: string
1202
+ format: uri
1203
+ value:
1204
+ description: String describing the standard or encoding.
1205
+ type: string
1206
+ note:
1207
+ description: Other information related to the standard or encoding.
1208
+ type: array
1209
+ items:
1210
+ $ref: "#/components/schemas/DescriptiveValue"
1211
+ source:
1212
+ $ref: "#/components/schemas/Source"