cocina-models 0.33.0 → 0.37.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/.rubocop.yml +115 -2
  3. data/cocina-models.gemspec +3 -2
  4. data/docs/maps/DRO.json +4 -0
  5. data/lib/cocina/generator/generator.rb +3 -0
  6. data/lib/cocina/generator/schema_value.rb +2 -2
  7. data/lib/cocina/models.rb +1 -2
  8. data/lib/cocina/models/admin_policy_administrative.rb +1 -1
  9. data/lib/cocina/models/administrative.rb +1 -1
  10. data/lib/cocina/models/contributor.rb +3 -1
  11. data/lib/cocina/models/description.rb +4 -2
  12. data/lib/cocina/models/descriptive_access_metadata.rb +13 -0
  13. data/lib/cocina/models/descriptive_admin_metadata.rb +3 -1
  14. data/lib/cocina/models/descriptive_basic_value.rb +10 -3
  15. data/lib/cocina/models/descriptive_parallel_value.rb +9 -0
  16. data/lib/cocina/models/descriptive_structured_value.rb +1 -1
  17. data/lib/cocina/models/descriptive_value.rb +10 -4
  18. data/lib/cocina/models/descriptive_value_required.rb +10 -4
  19. data/lib/cocina/models/dro.rb +1 -1
  20. data/lib/cocina/models/dro_access.rb +2 -0
  21. data/lib/cocina/models/event.rb +1 -1
  22. data/lib/cocina/models/file.rb +1 -1
  23. data/lib/cocina/models/file_access.rb +16 -0
  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 +1 -1
  29. data/lib/cocina/models/request_file.rb +1 -1
  30. data/lib/cocina/models/request_identification.rb +2 -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 +342 -95
  35. metadata +18 -12
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cocina
4
+ module Models
5
+ class FileAccess < Struct
6
+ # Access level
7
+ attribute :access, Types::Strict::String.default('dark').enum('world', 'stanford', 'location-based', 'citation-only', 'dark').meta(omittable: true)
8
+ # Available for controlled digital lending.
9
+ attribute :controlledDigitalLending, Types::Strict::Bool.meta(omittable: true)
10
+ # Download access level for a file
11
+ attribute :download, Types::Strict::String.default('none').enum('world', 'stanford', 'location-based', 'none').meta(omittable: true)
12
+ # If access is "location-based", which location should have access.
13
+ attribute :readLocation, Types::Strict::String.enum('spec', 'music', 'ars', 'art', 'hoover', 'm&m').meta(omittable: true)
14
+ end
15
+ end
16
+ end
@@ -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,7 +26,7 @@ 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
31
  attribute(:identification, RequestIdentification.default { RequestIdentification.new })
32
32
  attribute :structural, RequestDROStructural.optional.meta(omittable: true)
@@ -16,7 +16,7 @@ module Cocina
16
16
  attribute :externalIdentifier, Types::Strict::String.meta(omittable: true)
17
17
  attribute :use, Types::Strict::String.meta(omittable: true)
18
18
  attribute :hasMessageDigests, Types::Strict::Array.of(MessageDigest).default([].freeze)
19
- attribute(:access, Access.default { Access.new })
19
+ attribute(:access, FileAccess.default { FileAccess.new })
20
20
  attribute(:administrative, FileAdministrative.default { FileAdministrative.new })
21
21
  attribute :presentation, Presentation.optional.meta(omittable: true)
22
22
  end
@@ -3,6 +3,8 @@
3
3
  module Cocina
4
4
  module Models
5
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
+
6
8
  # example: sul:PC0170_s3_Fiesta_Bowl_2012-01-02_210609_2026
7
9
  attribute :sourceId, Types::Strict::String
8
10
  attribute :catalogLinks, Types::Strict::Array.of(CatalogLink).meta(omittable: true)
@@ -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.33.0'
5
+ VERSION = '0.37.0'
6
6
  end
7
7
  end
@@ -94,7 +94,7 @@ paths:
94
94
  components:
95
95
  schemas:
96
96
  Access:
97
- description: Access metadata
97
+ description: Access metadata for collections
98
98
  type: object
99
99
  additionalProperties: false
100
100
  properties:
@@ -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
@@ -633,7 +725,7 @@ components:
633
725
  items:
634
726
  $ref: '#/components/schemas/MessageDigest'
635
727
  access:
636
- $ref: '#/components/schemas/Access'
728
+ $ref: '#/components/schemas/FileAccess'
637
729
  administrative:
638
730
  $ref: '#/components/schemas/FileAdministrative'
639
731
  presentation:
@@ -647,6 +739,44 @@ components:
647
739
  - access
648
740
  - administrative
649
741
  - hasMessageDigests
742
+ FileAccess:
743
+ description: Access metadata for files
744
+ type: object
745
+ additionalProperties: false
746
+ properties:
747
+ access:
748
+ description: Access level
749
+ type: string
750
+ enum:
751
+ - 'world'
752
+ - 'stanford'
753
+ - 'location-based'
754
+ - 'citation-only'
755
+ - 'dark'
756
+ default: 'dark'
757
+ controlledDigitalLending:
758
+ description: Available for controlled digital lending.
759
+ type: boolean
760
+ default: false
761
+ download:
762
+ description: Download access level for a file
763
+ type: string
764
+ enum:
765
+ - 'world'
766
+ - 'stanford'
767
+ - 'location-based'
768
+ - 'none'
769
+ default: 'none'
770
+ readLocation:
771
+ description: If access is "location-based", which location should have access.
772
+ type: string
773
+ enum:
774
+ - 'spec'
775
+ - 'music'
776
+ - 'ars'
777
+ - 'art'
778
+ - 'hoover'
779
+ - 'm&m'
650
780
  FileAdministrative:
651
781
  type: object
652
782
  additionalProperties: false
@@ -710,11 +840,34 @@ components:
710
840
  properties:
711
841
  sourceId:
712
842
  type: string
843
+ description: >
844
+ Unique identifier in some other system. This is because a large proportion of what is deposited in SDR,
845
+ historically and currently, are representations of objects that are also represented in other systems.
846
+ For example, digitized paper and A/V collections have physical manifestations, and those physical objects are managed
847
+ in systems that have their own identifiers. Similarly, books have barcodes, archival materials have collection numbers
848
+ and physical locations, etc. The sourceId allows determining if an item has been deposited before and where to
849
+ look for the original item if you're looking at its SDR representation.
713
850
  example: 'sul:PC0170_s3_Fiesta_Bowl_2012-01-02_210609_2026'
714
851
  catalogLinks:
715
852
  type: array
716
853
  items:
717
854
  $ref: '#/components/schemas/CatalogLink'
855
+ Language:
856
+ description: Languages, scripts, symbolic systems, and notations used in all
857
+ or part of a resource.
858
+ type: object
859
+ additionalProperties: false
860
+ allOf:
861
+ - $ref: '#/components/schemas/DescriptiveValue'
862
+ - type: object
863
+ # additionalProperties breaks the validator, presumably because it can't
864
+ # conform to other schemas (allOf) and not have additionalProperties
865
+ # additionalProperties: false
866
+ properties:
867
+ script:
868
+ $ref: '#/components/schemas/DescriptiveValue'
869
+ # description: An alphabet or other notation used to represent a
870
+ # language or other symbolic system associated with the resource.
718
871
  MessageDigest:
719
872
  description: The output of the message digest algorithm.
720
873
  type: object
@@ -743,6 +896,63 @@ components:
743
896
  width:
744
897
  description: Width in pixels
745
898
  type: integer
899
+ RelatedResource:
900
+ description: Other resource associated with the described resource.
901
+ type: object
902
+ additionalProperties: false
903
+ properties:
904
+ type:
905
+ description: The relationship of the related resource to the described resource.
906
+ type: string
907
+ title:
908
+ description: Titles of the related resource.
909
+ type: array
910
+ items:
911
+ $ref: "#/components/schemas/DescriptiveValue"
912
+ contributor:
913
+ description: Agents contributing in some way to the creation and history of the
914
+ related resource.
915
+ type: array
916
+ items:
917
+ $ref: "#/components/schemas/Contributor"
918
+ event:
919
+ description: Events in the history of the related resource.
920
+ type: array
921
+ items:
922
+ $ref: "#/components/schemas/Event"
923
+ form:
924
+ description: Characteristics of the related resource's physical, digital, and intellectual
925
+ form and genre.
926
+ type: array
927
+ items:
928
+ $ref: "#/components/schemas/DescriptiveValue"
929
+ language:
930
+ description: Languages, scripts, symbolic systems, and notations used in all or
931
+ part of a related resource.
932
+ type: array
933
+ items:
934
+ $ref: "#/components/schemas/Language"
935
+ note:
936
+ description: Additional information relevant to a related resource.
937
+ type: array
938
+ items:
939
+ $ref: "#/components/schemas/DescriptiveValue"
940
+ identifier:
941
+ description: Identifiers and URIs associated with the related resource.
942
+ type: array
943
+ items:
944
+ $ref: "#/components/schemas/DescriptiveValue"
945
+ subject:
946
+ description: Terms associated with the intellectual content of the related resource.
947
+ type: array
948
+ items:
949
+ $ref: "#/components/schemas/DescriptiveValue"
950
+ purl:
951
+ description: Stanford persistent URL associated with the related resource.
952
+ type: string
953
+ format: uri
954
+ access:
955
+ $ref: "#/components/schemas/DescriptiveAccessMetadata"
746
956
  ReleaseTag:
747
957
  description: A tag that indicates the item or collection should be released.
748
958
  type: object
@@ -790,10 +1000,10 @@ components:
790
1000
  description:
791
1001
  $ref: '#/components/schemas/Description'
792
1002
  required:
1003
+ - administrative
793
1004
  - label
794
1005
  - type
795
1006
  - version
796
- - administrative
797
1007
  RequestCollection:
798
1008
  description: Same as a Collection, but doesn't have an externalIdentifier as one will be created
799
1009
  type: object
@@ -821,10 +1031,11 @@ components:
821
1031
  identification:
822
1032
  $ref: '#/components/schemas/CollectionIdentification'
823
1033
  required:
1034
+ - access
1035
+ - administrative
824
1036
  - label
825
1037
  - type
826
1038
  - version
827
- - access
828
1039
  RequestDRO:
829
1040
  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
1041
  type: object
@@ -866,10 +1077,11 @@ components:
866
1077
  geographic:
867
1078
  $ref: '#/components/schemas/Geographic'
868
1079
  required:
1080
+ - administrative
1081
+ - identification
869
1082
  - label
870
1083
  - type
871
1084
  - version
872
- - identification
873
1085
  RequestDROStructural:
874
1086
  description: Structural metadata
875
1087
  type: object
@@ -914,7 +1126,7 @@ components:
914
1126
  items:
915
1127
  $ref: '#/components/schemas/MessageDigest'
916
1128
  access:
917
- $ref: '#/components/schemas/Access'
1129
+ $ref: '#/components/schemas/FileAccess'
918
1130
  administrative:
919
1131
  $ref: '#/components/schemas/FileAdministrative'
920
1132
  presentation:
@@ -962,6 +1174,13 @@ components:
962
1174
  properties:
963
1175
  sourceId:
964
1176
  type: string
1177
+ description: >
1178
+ Unique identifier in some other system. This is because a large proportion of what is deposited in SDR,
1179
+ historically and currently, are representations of objects that are also represented in other systems.
1180
+ For example, digitized paper and A/V collections have physical manifestations, and those physical objects are managed
1181
+ in systems that have their own identifiers. Similarly, books have barcodes, archival materials have collection numbers
1182
+ and physical locations, etc. The sourceId allows determining if an item has been deposited before and where to
1183
+ look for the original item if you're looking at its SDR representation.
965
1184
  example: 'sul:PC0170_s3_Fiesta_Bowl_2012-01-02_210609_2026'
966
1185
  catalogLinks:
967
1186
  type: array
@@ -986,8 +1205,8 @@ components:
986
1205
  - right-to-left
987
1206
  - left-to-right
988
1207
  Source:
989
- description: Property model for indicating the vocabulary, authority, or other
990
- origin for a term, code, or identifier.
1208
+ description: Property model for indicating the vocabulary, authority, or
1209
+ other origin for a term, code, or identifier.
991
1210
  type: object
992
1211
  additionalProperties: false
993
1212
  properties:
@@ -1001,3 +1220,31 @@ components:
1001
1220
  value:
1002
1221
  description: String describing the value source.
1003
1222
  type: string
1223
+ note:
1224
+ description: Other information related to the value source.
1225
+ type: array
1226
+ items:
1227
+ $ref: "#/components/schemas/DescriptiveValue"
1228
+ Standard:
1229
+ description: Property model for indicating the encoding, standard, or syntax
1230
+ to which a value conforms.
1231
+ type: object
1232
+ additionalProperties: false
1233
+ properties:
1234
+ code:
1235
+ description: Code representing the standard or encoding.
1236
+ type: string
1237
+ uri:
1238
+ description: URI for the standard or encoding.
1239
+ type: string
1240
+ format: uri
1241
+ value:
1242
+ description: String describing the standard or encoding.
1243
+ type: string
1244
+ note:
1245
+ description: Other information related to the standard or encoding.
1246
+ type: array
1247
+ items:
1248
+ $ref: "#/components/schemas/DescriptiveValue"
1249
+ source:
1250
+ $ref: "#/components/schemas/Source"