cocina-models 0.86.0 → 0.87.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +1 -1
  3. data/.rubocop.yml +52 -2
  4. data/.rubocop_todo.yml +49 -15
  5. data/Gemfile.lock +56 -52
  6. data/lib/cocina/generator/datatype.rb +1 -1
  7. data/lib/cocina/generator/generator.rb +19 -12
  8. data/lib/cocina/generator/schema.rb +4 -2
  9. data/lib/cocina/generator/schema_array.rb +1 -1
  10. data/lib/cocina/generator/schema_base.rb +36 -16
  11. data/lib/cocina/generator/schema_value.rb +2 -2
  12. data/lib/cocina/generator/union_type.rb +24 -0
  13. data/lib/cocina/models/admin_policy.rb +2 -2
  14. data/lib/cocina/models/admin_policy_administrative.rb +2 -2
  15. data/lib/cocina/models/admin_policy_with_metadata.rb +2 -2
  16. data/lib/cocina/models/administrative.rb +1 -1
  17. data/lib/cocina/models/barcode.rb +7 -0
  18. data/lib/cocina/models/business_barcode.rb +1 -1
  19. data/lib/cocina/models/catalog_link.rb +1 -10
  20. data/lib/cocina/models/catkey_barcode.rb +1 -1
  21. data/lib/cocina/models/cocina_version.rb +1 -1
  22. data/lib/cocina/models/collection.rb +2 -2
  23. data/lib/cocina/models/collection_identification.rb +1 -1
  24. data/lib/cocina/models/collection_with_metadata.rb +2 -2
  25. data/lib/cocina/models/created_in_folio_identifier.rb +9 -0
  26. data/lib/cocina/models/description.rb +2 -2
  27. data/lib/cocina/models/doi.rb +7 -0
  28. data/lib/cocina/models/doi_exceptions.rb +1 -1
  29. data/lib/cocina/models/doi_pattern.rb +1 -1
  30. data/lib/cocina/models/dro.rb +2 -2
  31. data/lib/cocina/models/dro_with_metadata.rb +2 -2
  32. data/lib/cocina/models/druid.rb +1 -1
  33. data/lib/cocina/models/folio_catalog_link.rb +16 -0
  34. data/lib/cocina/models/identification.rb +3 -3
  35. data/lib/cocina/models/lane_medical_barcode.rb +1 -1
  36. data/lib/cocina/models/mapping/from_mods/identifier.rb +1 -1
  37. data/lib/cocina/models/mapping/from_mods/identifier_builder.rb +1 -1
  38. data/lib/cocina/models/mapping/normalizers/mods_normalizer.rb +2 -2
  39. data/lib/cocina/models/migrated_from_symphony_identifier.rb +9 -0
  40. data/lib/cocina/models/migrated_from_voyager_identifier.rb +9 -0
  41. data/lib/cocina/models/purl.rb +1 -1
  42. data/lib/cocina/models/related_resource.rb +2 -2
  43. data/lib/cocina/models/request_admin_policy.rb +1 -1
  44. data/lib/cocina/models/request_administrative.rb +1 -1
  45. data/lib/cocina/models/request_collection.rb +1 -1
  46. data/lib/cocina/models/request_dro.rb +1 -1
  47. data/lib/cocina/models/request_identification.rb +2 -2
  48. data/lib/cocina/models/source_id.rb +1 -1
  49. data/lib/cocina/models/standard_barcode.rb +1 -1
  50. data/lib/cocina/models/symphony_catalog_link.rb +17 -0
  51. data/lib/cocina/models/version.rb +1 -1
  52. data/lib/cocina/models.rb +7 -3
  53. data/openapi.yml +366 -317
  54. metadata +14 -6
data/openapi.yml CHANGED
@@ -196,19 +196,6 @@ components:
196
196
  required:
197
197
  - identifier
198
198
  - type
199
- Administrative:
200
- type: object
201
- additionalProperties: false
202
- properties:
203
- hasAdminPolicy:
204
- $ref: '#/components/schemas/Druid'
205
- releaseTags:
206
- description: Tags for release
207
- type: array
208
- items:
209
- $ref: '#/components/schemas/ReleaseTag'
210
- required:
211
- - hasAdminPolicy
212
199
  AdminPolicy:
213
200
  type: object
214
201
  additionalProperties: false
@@ -236,40 +223,19 @@ components:
236
223
  - label
237
224
  - type
238
225
  - version
239
- AdminPolicyAdministrative:
240
- description: Administrative properties for an AdminPolicy
226
+ Administrative:
241
227
  type: object
242
228
  additionalProperties: false
243
229
  properties:
244
- accessTemplate:
245
- $ref: '#/components/schemas/AdminPolicyAccessTemplate'
246
- registrationWorkflow:
247
- description: When you register an item with this admin policy, these are the workflows that are available.
248
- type: array
249
- items:
250
- type: string
251
- disseminationWorkflow:
252
- description: An additional workflow to start for objects managed by this admin policy once the end-accession workflow step is complete
253
- example: wasCrawlPreassemblyWF
254
- type: string
255
- collectionsForRegistration:
256
- description: When you register an item with this admin policy, these are the collections that are available.
257
- type: array
258
- items:
259
- type: string
260
230
  hasAdminPolicy:
261
231
  $ref: '#/components/schemas/Druid'
262
- hasAgreement:
263
- $ref: '#/components/schemas/Druid'
264
- roles:
265
- description: The access roles conferred by this AdminPolicy (used by Argo)
232
+ releaseTags:
233
+ description: Tags for release
266
234
  type: array
267
235
  items:
268
- $ref: '#/components/schemas/AccessRole'
236
+ $ref: '#/components/schemas/ReleaseTag'
269
237
  required:
270
238
  - hasAdminPolicy
271
- - hasAgreement
272
- - accessTemplate
273
239
  AdminPolicyAccessTemplate:
274
240
  description: 'Provides the template of access settings that is copied to the items goverend by an AdminPolicy. This is almost the same as DROAccess, but it provides no defaults and has no embargo.'
275
241
  type: object
@@ -328,6 +294,40 @@ components:
328
294
  description: The license governing reuse of the Collection. Should be an IRI for known licenses (i.e. CC, RightsStatement.org URI, etc.).
329
295
  type: string
330
296
  nullable: true
297
+ AdminPolicyAdministrative:
298
+ description: Administrative properties for an AdminPolicy
299
+ type: object
300
+ additionalProperties: false
301
+ properties:
302
+ accessTemplate:
303
+ $ref: '#/components/schemas/AdminPolicyAccessTemplate'
304
+ registrationWorkflow:
305
+ description: When you register an item with this admin policy, these are the workflows that are available.
306
+ type: array
307
+ items:
308
+ type: string
309
+ disseminationWorkflow:
310
+ description: An additional workflow to start for objects managed by this admin policy once the end-accession workflow step is complete
311
+ example: wasCrawlPreassemblyWF
312
+ type: string
313
+ collectionsForRegistration:
314
+ description: When you register an item with this admin policy, these are the collections that are available.
315
+ type: array
316
+ items:
317
+ type: string
318
+ hasAdminPolicy:
319
+ $ref: '#/components/schemas/Druid'
320
+ hasAgreement:
321
+ $ref: '#/components/schemas/Druid'
322
+ roles:
323
+ description: The access roles conferred by this AdminPolicy (used by Argo)
324
+ type: array
325
+ items:
326
+ $ref: '#/components/schemas/AccessRole'
327
+ required:
328
+ - hasAdminPolicy
329
+ - hasAgreement
330
+ - accessTemplate
331
331
  # AdminPolicyWithMetadata schema should not be copied to sdr-api and dor-services-app.
332
332
  AdminPolicyWithMetadata:
333
333
  description: Admin Policy with addition object metadata.
@@ -358,37 +358,11 @@ components:
358
358
  type: string
359
359
  pattern: '^2050[0-9]{7}$'
360
360
  example: '20503740296'
361
- LaneMedicalBarcode:
362
- description: The barcode associated with a Lane Medical Library DRO object, prefixed with 245
363
- type: string
364
- pattern: '^245[0-9]{8}$'
365
- example: '24503259768'
366
361
  CatalogLink:
367
- type: object
368
- additionalProperties: false
369
- properties:
370
- catalog:
371
- description: Catalog that is the source of the linked record.
372
- type: string
373
- enum:
374
- - symphony
375
- - previous symphony
376
- example: symphony
377
- refresh:
378
- description: Only one of the catkeys should be designated for refreshing.
379
- This means that this key is the one used to pull metadata from the catalog
380
- if there is more than one key present.
381
- type: boolean
382
- default: false
383
- catalogRecordId:
384
- description: Record identifier that is unique within the context of the linked record's catalog.
385
- type: string
386
- pattern: '^\d+(:\d+)*$'
387
- example: '11403803'
388
- required:
389
- - catalog
390
- - catalogRecordId
391
- - refresh
362
+ description: 'A linkage between an object and a catalog record'
363
+ oneOf:
364
+ - $ref: '#/components/schemas/FolioCatalogLink'
365
+ - $ref: '#/components/schemas/SymphonyCatalogLink'
392
366
  CatkeyBarcode:
393
367
  description: The barcode associated with a DRO object based on catkey, prefixed with a catkey followed by a hyphen
394
368
  type: string
@@ -432,7 +406,7 @@ components:
432
406
  additionalProperties: false
433
407
  properties:
434
408
  cocinaVersion:
435
- $ref: '#/components/schemas/CocinaVersion'
409
+ $ref: '#/components/schemas/CocinaVersion'
436
410
  type:
437
411
  description: The content type of the Collection. Selected from an established set of values.
438
412
  type: string
@@ -580,6 +554,155 @@ components:
580
554
  required:
581
555
  - view
582
556
  - download
557
+ CreatedInFolioIdentifier:
558
+ description: A record identifier created in Folio
559
+ type: string
560
+ pattern: '^in\d+$'
561
+ example: 'in11403803'
562
+ DOI:
563
+ description: Digital Object Identifier (https://www.doi.org)
564
+ oneOf:
565
+ - $ref: '#/components/schemas/DoiPattern'
566
+ - $ref: '#/components/schemas/DoiExceptions'
567
+ DRO:
568
+ 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.
569
+ type: object
570
+ additionalProperties: false
571
+ properties:
572
+ cocinaVersion:
573
+ $ref: '#/components/schemas/CocinaVersion'
574
+ type:
575
+ description: The content type of the DRO. Selected from an established set of values.
576
+ type: string
577
+ enum:
578
+ - 'https://cocina.sul.stanford.edu/models/object'
579
+ - 'https://cocina.sul.stanford.edu/models/3d'
580
+ - 'https://cocina.sul.stanford.edu/models/agreement'
581
+ - 'https://cocina.sul.stanford.edu/models/book'
582
+ - 'https://cocina.sul.stanford.edu/models/document'
583
+ - 'https://cocina.sul.stanford.edu/models/geo'
584
+ - 'https://cocina.sul.stanford.edu/models/image'
585
+ - 'https://cocina.sul.stanford.edu/models/page'
586
+ - 'https://cocina.sul.stanford.edu/models/photograph'
587
+ - 'https://cocina.sul.stanford.edu/models/manuscript'
588
+ - 'https://cocina.sul.stanford.edu/models/map'
589
+ - 'https://cocina.sul.stanford.edu/models/media'
590
+ - 'https://cocina.sul.stanford.edu/models/track'
591
+ - 'https://cocina.sul.stanford.edu/models/webarchive-binary'
592
+ - 'https://cocina.sul.stanford.edu/models/webarchive-seed'
593
+ externalIdentifier:
594
+ $ref: '#/components/schemas/Druid'
595
+ label:
596
+ description: Primary processing label (can be same as title) for a DRO.
597
+ type: string
598
+ version:
599
+ description: Version for the DRO within SDR.
600
+ type: integer
601
+ access:
602
+ $ref: '#/components/schemas/DROAccess'
603
+ administrative:
604
+ $ref: '#/components/schemas/Administrative'
605
+ description:
606
+ $ref: '#/components/schemas/Description'
607
+ identification:
608
+ $ref: '#/components/schemas/Identification'
609
+ structural:
610
+ $ref: '#/components/schemas/DROStructural'
611
+ geographic:
612
+ $ref: '#/components/schemas/Geographic'
613
+ required:
614
+ - cocinaVersion
615
+ - access
616
+ - administrative
617
+ - description
618
+ - externalIdentifier
619
+ - label
620
+ - type
621
+ - version
622
+ - identification
623
+ - structural
624
+ DROAccess:
625
+ type: object
626
+ additionalProperties: false
627
+ allOf:
628
+ - $ref: "#/components/schemas/Access"
629
+ - type: object
630
+ properties:
631
+ copyright:
632
+ description: The human readable copyright statement that applies
633
+ example: Copyright World Trade Organization
634
+ type: string
635
+ nullable: true
636
+ embargo:
637
+ $ref: '#/components/schemas/Embargo'
638
+ useAndReproductionStatement:
639
+ description: The human readable use and reproduction statement that applies
640
+ example: Property rights reside with the repository. Literary rights reside with the creators of the documents or their heirs. To obtain permission to publish or reproduce, please contact the Public Services Librarian of the Dept. of Special Collections (http://library.stanford.edu/spc).
641
+ type: string
642
+ nullable: true
643
+ license:
644
+ description: The license governing reuse of the DRO. Should be an IRI for known licenses (i.e. CC, RightsStatement.org URI, etc.).
645
+ type: string
646
+ nullable: true
647
+ enum:
648
+ - 'https://www.gnu.org/licenses/agpl.txt'
649
+ - 'https://www.apache.org/licenses/LICENSE-2.0'
650
+ - 'https://opensource.org/licenses/BSD-2-Clause'
651
+ - 'https://opensource.org/licenses/BSD-3-Clause'
652
+ - 'https://creativecommons.org/licenses/by/4.0/legalcode'
653
+ - 'https://creativecommons.org/licenses/by-nc/4.0/legalcode'
654
+ - 'https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode'
655
+ - 'https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode'
656
+ - 'https://creativecommons.org/licenses/by-nd/4.0/legalcode'
657
+ - 'https://creativecommons.org/licenses/by-sa/4.0/legalcode'
658
+ - 'https://creativecommons.org/publicdomain/zero/1.0/legalcode'
659
+ - 'https://opensource.org/licenses/cddl1'
660
+ - 'https://www.eclipse.org/legal/epl-2.0'
661
+ - 'https://www.gnu.org/licenses/gpl-3.0-standalone.html'
662
+ - 'https://www.isc.org/downloads/software-support-policy/isc-license/'
663
+ - 'https://www.gnu.org/licenses/lgpl-3.0-standalone.html'
664
+ - 'https://opensource.org/licenses/MIT'
665
+ - 'https://www.mozilla.org/MPL/2.0/'
666
+ - 'https://opendatacommons.org/licenses/by/1-0/'
667
+ - 'http://opendatacommons.org/licenses/odbl/1.0/' # Non cannonical, but in some of our data
668
+ - 'https://opendatacommons.org/licenses/odbl/1-0/'
669
+ - 'https://creativecommons.org/publicdomain/mark/1.0/'
670
+ - 'https://opendatacommons.org/licenses/pddl/1-0/'
671
+ - 'https://creativecommons.org/licenses/by/3.0/legalcode'
672
+ - 'https://creativecommons.org/licenses/by-sa/3.0/legalcode'
673
+ - 'https://creativecommons.org/licenses/by-nd/3.0/legalcode'
674
+ - 'https://creativecommons.org/licenses/by-nc/3.0/legalcode'
675
+ - 'https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode'
676
+ - 'https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode'
677
+ - 'https://cocina.sul.stanford.edu/licenses/none' # Only used in some legacy ETDs and not actually permitted per the Project Chimera docs.
678
+ DROStructural:
679
+ description: Structural metadata
680
+ type: object
681
+ additionalProperties: false
682
+ properties:
683
+ contains:
684
+ description: Filesets that contain the digital representations (Files)
685
+ type: array
686
+ items:
687
+ $ref: '#/components/schemas/FileSet'
688
+ hasMemberOrders:
689
+ description: Provided sequences or orderings of members, including some metadata about each sequence (i.e. sequence label, sequence type, if the sequence is primary, etc.).
690
+ type: array
691
+ items:
692
+ $ref: '#/components/schemas/Sequence'
693
+ isMemberOf:
694
+ description: Collections that this DRO is a member of
695
+ type: array
696
+ items:
697
+ $ref: '#/components/schemas/Druid'
698
+ # DROWithMetadata schema should not be copied to sdr-api and dor-services-app.
699
+ DROWithMetadata:
700
+ description: DRO with addition object metadata.
701
+ type: object
702
+ additionalProperties: false
703
+ allOf:
704
+ - $ref: "#/components/schemas/DRO"
705
+ - $ref: "#/components/schemas/ObjectMetadata"
583
706
  DarkAccess:
584
707
  type: object
585
708
  properties:
@@ -895,11 +1018,6 @@ components:
895
1018
  $ref: '#/components/schemas/Standard'
896
1019
  # description: An alphabet or other notation used to represent a
897
1020
  # language or other symbolic system of the descriptive element value.
898
- DOI:
899
- description: Digital Object Identifier (https://www.doi.org)
900
- oneOf:
901
- - $ref: '#/components/schemas/DoiPattern'
902
- - $ref: '#/components/schemas/DoiExceptions'
903
1021
  DoiExceptions:
904
1022
  type: string
905
1023
  description: pre-existing Digital Object Identifiers (https://www.doi.org) not matching the pattern (case insensitive)
@@ -909,147 +1027,8 @@ components:
909
1027
  type: string
910
1028
  description: Digital Object Identifier (https://www.doi.org) regex pattern
911
1029
  # The prod and test prefixes are permitted
912
- pattern: '^10\.(25740|80343)\/[b-df-hjkmnp-tv-z]{2}[0-9]{3}[b-df-hjkmnp-tv-z]{2}[0-9]{4}$'
913
- example: '10.25740/bc123df4567'
914
- DRO:
915
- 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.
916
- type: object
917
- additionalProperties: false
918
- properties:
919
- cocinaVersion:
920
- $ref: '#/components/schemas/CocinaVersion'
921
- type:
922
- description: The content type of the DRO. Selected from an established set of values.
923
- type: string
924
- enum:
925
- - 'https://cocina.sul.stanford.edu/models/object'
926
- - 'https://cocina.sul.stanford.edu/models/3d'
927
- - 'https://cocina.sul.stanford.edu/models/agreement'
928
- - 'https://cocina.sul.stanford.edu/models/book'
929
- - 'https://cocina.sul.stanford.edu/models/document'
930
- - 'https://cocina.sul.stanford.edu/models/geo'
931
- - 'https://cocina.sul.stanford.edu/models/image'
932
- - 'https://cocina.sul.stanford.edu/models/page'
933
- - 'https://cocina.sul.stanford.edu/models/photograph'
934
- - 'https://cocina.sul.stanford.edu/models/manuscript'
935
- - 'https://cocina.sul.stanford.edu/models/map'
936
- - 'https://cocina.sul.stanford.edu/models/media'
937
- - 'https://cocina.sul.stanford.edu/models/track'
938
- - 'https://cocina.sul.stanford.edu/models/webarchive-binary'
939
- - 'https://cocina.sul.stanford.edu/models/webarchive-seed'
940
- externalIdentifier:
941
- $ref: '#/components/schemas/Druid'
942
- label:
943
- description: Primary processing label (can be same as title) for a DRO.
944
- type: string
945
- version:
946
- description: Version for the DRO within SDR.
947
- type: integer
948
- access:
949
- $ref: '#/components/schemas/DROAccess'
950
- administrative:
951
- $ref: '#/components/schemas/Administrative'
952
- description:
953
- $ref: '#/components/schemas/Description'
954
- identification:
955
- $ref: '#/components/schemas/Identification'
956
- structural:
957
- $ref: '#/components/schemas/DROStructural'
958
- geographic:
959
- $ref: '#/components/schemas/Geographic'
960
- required:
961
- - cocinaVersion
962
- - access
963
- - administrative
964
- - description
965
- - externalIdentifier
966
- - label
967
- - type
968
- - version
969
- - identification
970
- - structural
971
- DROAccess:
972
- type: object
973
- additionalProperties: false
974
- allOf:
975
- - $ref: "#/components/schemas/Access"
976
- - type: object
977
- properties:
978
- copyright:
979
- description: The human readable copyright statement that applies
980
- example: Copyright World Trade Organization
981
- type: string
982
- nullable: true
983
- embargo:
984
- $ref: '#/components/schemas/Embargo'
985
- useAndReproductionStatement:
986
- description: The human readable use and reproduction statement that applies
987
- example: Property rights reside with the repository. Literary rights reside with the creators of the documents or their heirs. To obtain permission to publish or reproduce, please contact the Public Services Librarian of the Dept. of Special Collections (http://library.stanford.edu/spc).
988
- type: string
989
- nullable: true
990
- license:
991
- description: The license governing reuse of the DRO. Should be an IRI for known licenses (i.e. CC, RightsStatement.org URI, etc.).
992
- type: string
993
- nullable: true
994
- enum:
995
- - 'https://www.gnu.org/licenses/agpl.txt'
996
- - 'https://www.apache.org/licenses/LICENSE-2.0'
997
- - 'https://opensource.org/licenses/BSD-2-Clause'
998
- - 'https://opensource.org/licenses/BSD-3-Clause'
999
- - 'https://creativecommons.org/licenses/by/4.0/legalcode'
1000
- - 'https://creativecommons.org/licenses/by-nc/4.0/legalcode'
1001
- - 'https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode'
1002
- - 'https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode'
1003
- - 'https://creativecommons.org/licenses/by-nd/4.0/legalcode'
1004
- - 'https://creativecommons.org/licenses/by-sa/4.0/legalcode'
1005
- - 'https://creativecommons.org/publicdomain/zero/1.0/legalcode'
1006
- - 'https://opensource.org/licenses/cddl1'
1007
- - 'https://www.eclipse.org/legal/epl-2.0'
1008
- - 'https://www.gnu.org/licenses/gpl-3.0-standalone.html'
1009
- - 'https://www.isc.org/downloads/software-support-policy/isc-license/'
1010
- - 'https://www.gnu.org/licenses/lgpl-3.0-standalone.html'
1011
- - 'https://opensource.org/licenses/MIT'
1012
- - 'https://www.mozilla.org/MPL/2.0/'
1013
- - 'https://opendatacommons.org/licenses/by/1-0/'
1014
- - 'http://opendatacommons.org/licenses/odbl/1.0/' # Non cannonical, but in some of our data
1015
- - 'https://opendatacommons.org/licenses/odbl/1-0/'
1016
- - 'https://creativecommons.org/publicdomain/mark/1.0/'
1017
- - 'https://opendatacommons.org/licenses/pddl/1-0/'
1018
- - 'https://creativecommons.org/licenses/by/3.0/legalcode'
1019
- - 'https://creativecommons.org/licenses/by-sa/3.0/legalcode'
1020
- - 'https://creativecommons.org/licenses/by-nd/3.0/legalcode'
1021
- - 'https://creativecommons.org/licenses/by-nc/3.0/legalcode'
1022
- - 'https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode'
1023
- - 'https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode'
1024
- - 'https://cocina.sul.stanford.edu/licenses/none' # Only used in some legacy ETDs and not actually permitted per the Project Chimera docs.
1025
- DROStructural:
1026
- description: Structural metadata
1027
- type: object
1028
- additionalProperties: false
1029
- properties:
1030
- contains:
1031
- description: Filesets that contain the digital representations (Files)
1032
- type: array
1033
- items:
1034
- $ref: '#/components/schemas/FileSet'
1035
- hasMemberOrders:
1036
- description: Provided sequences or orderings of members, including some metadata about each sequence (i.e. sequence label, sequence type, if the sequence is primary, etc.).
1037
- type: array
1038
- items:
1039
- $ref: '#/components/schemas/Sequence'
1040
- isMemberOf:
1041
- description: Collections that this DRO is a member of
1042
- type: array
1043
- items:
1044
- $ref: '#/components/schemas/Druid'
1045
- # DROWithMetadata schema should not be copied to sdr-api and dor-services-app.
1046
- DROWithMetadata:
1047
- description: DRO with addition object metadata.
1048
- type: object
1049
- additionalProperties: false
1050
- allOf:
1051
- - $ref: "#/components/schemas/DRO"
1052
- - $ref: "#/components/schemas/ObjectMetadata"
1030
+ pattern: '^10\.(25740|80343)\/[b-df-hjkmnp-tv-z]{2}[0-9]{3}[b-df-hjkmnp-tv-z]{2}[0-9]{4}$'
1031
+ example: '10.25740/bc123df4567'
1053
1032
  Druid:
1054
1033
  type: string
1055
1034
  pattern: '^druid:[b-df-hjkmnp-tv-z]{2}[0-9]{3}[b-df-hjkmnp-tv-z]{2}[0-9]{4}$'
@@ -1250,6 +1229,34 @@ components:
1250
1229
  type: array
1251
1230
  items:
1252
1231
  $ref: '#/components/schemas/File'
1232
+ FolioCatalogLink:
1233
+ description: A linkage between an object and a Folio catalog record
1234
+ type: object
1235
+ additionalProperties: false
1236
+ properties:
1237
+ catalog:
1238
+ description: Catalog that is the source of the linked record.
1239
+ type: string
1240
+ enum:
1241
+ - folio
1242
+ - previous folio
1243
+ example: folio
1244
+ refresh:
1245
+ description: Only one of the catkeys should be designated for refreshing.
1246
+ This means that this key is the one used to pull metadata from the catalog
1247
+ if there is more than one key present.
1248
+ type: boolean
1249
+ default: false
1250
+ catalogRecordId:
1251
+ description: Record identifier that is unique within the context of the linked record's catalog.
1252
+ oneOf:
1253
+ - $ref: '#/components/schemas/MigratedFromSymphonyIdentifier'
1254
+ - $ref: '#/components/schemas/MigratedFromVoyagerIdentifier'
1255
+ - $ref: '#/components/schemas/CreatedInFolioIdentifier'
1256
+ required:
1257
+ - catalog
1258
+ - catalogRecordId
1259
+ - refresh
1253
1260
  Geographic:
1254
1261
  description: Geographic metadata
1255
1262
  type: object
@@ -1276,6 +1283,11 @@ components:
1276
1283
  $ref: '#/components/schemas/SourceId'
1277
1284
  required:
1278
1285
  - sourceId
1286
+ LaneMedicalBarcode:
1287
+ description: The barcode associated with a Lane Medical Library DRO object, prefixed with 245
1288
+ type: string
1289
+ pattern: '^245[0-9]{8}$'
1290
+ example: '24503259768'
1279
1291
  Language:
1280
1292
  description: Languages, scripts, symbolic systems, and notations used in all
1281
1293
  or part of a resource or its descriptive metadata.
@@ -1428,6 +1440,16 @@ components:
1428
1440
  required:
1429
1441
  - type
1430
1442
  - digest
1443
+ MigratedFromSymphonyIdentifier:
1444
+ description: A record identifier migrated from Symphony
1445
+ type: string
1446
+ pattern: '^a\d+$'
1447
+ example: 'a11403803'
1448
+ MigratedFromVoyagerIdentifier:
1449
+ description: A record identifier migrated from Voyager
1450
+ type: string
1451
+ pattern: '^L\d+$'
1452
+ example: 'L11403803'
1431
1453
  # ObjectMetadata schema should not be copied to sdr-api and dor-services-app.
1432
1454
  ObjectMetadata:
1433
1455
  description: Metadata for a cocina object.
@@ -1569,18 +1591,6 @@ components:
1569
1591
  example: Searchworks
1570
1592
  release:
1571
1593
  type: boolean
1572
- RequestAdministrative:
1573
- type: object
1574
- additionalProperties: false
1575
- allOf:
1576
- - $ref: "#/components/schemas/Administrative"
1577
- - type: object
1578
- additionalProperties: false
1579
- properties:
1580
- partOfProject:
1581
- description: Internal project this resource is a part of. This governs routing of messages about this object.
1582
- example: Google Books
1583
- type: string
1584
1594
  RequestAdminPolicy:
1585
1595
  description: Same as an AdminPolicy, but doesn't have an externalIdentifier as one will be created
1586
1596
  type: object
@@ -1609,6 +1619,18 @@ components:
1609
1619
  - label
1610
1620
  - type
1611
1621
  - version
1622
+ RequestAdministrative:
1623
+ type: object
1624
+ additionalProperties: false
1625
+ allOf:
1626
+ - $ref: "#/components/schemas/Administrative"
1627
+ - type: object
1628
+ additionalProperties: false
1629
+ properties:
1630
+ partOfProject:
1631
+ description: Internal project this resource is a part of. This governs routing of messages about this object.
1632
+ example: Google Books
1633
+ type: string
1612
1634
  RequestCollection:
1613
1635
  description: Same as a Collection, but doesn't have an externalIdentifier as one will be created
1614
1636
  type: object
@@ -1646,6 +1668,75 @@ components:
1646
1668
  - label
1647
1669
  - type
1648
1670
  - version
1671
+ RequestDRO:
1672
+ 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.
1673
+ type: object
1674
+ additionalProperties: false
1675
+ properties:
1676
+ cocinaVersion:
1677
+ $ref: '#/components/schemas/CocinaVersion'
1678
+ type:
1679
+ type: string
1680
+ enum:
1681
+ - 'https://cocina.sul.stanford.edu/models/object'
1682
+ - 'https://cocina.sul.stanford.edu/models/3d'
1683
+ - 'https://cocina.sul.stanford.edu/models/agreement'
1684
+ - 'https://cocina.sul.stanford.edu/models/book'
1685
+ - 'https://cocina.sul.stanford.edu/models/document'
1686
+ - 'https://cocina.sul.stanford.edu/models/geo'
1687
+ - 'https://cocina.sul.stanford.edu/models/image'
1688
+ - 'https://cocina.sul.stanford.edu/models/page'
1689
+ - 'https://cocina.sul.stanford.edu/models/photograph'
1690
+ - 'https://cocina.sul.stanford.edu/models/manuscript'
1691
+ - 'https://cocina.sul.stanford.edu/models/map'
1692
+ - 'https://cocina.sul.stanford.edu/models/media'
1693
+ - 'https://cocina.sul.stanford.edu/models/track'
1694
+ - 'https://cocina.sul.stanford.edu/models/webarchive-binary'
1695
+ - 'https://cocina.sul.stanford.edu/models/webarchive-seed'
1696
+ label:
1697
+ type: string
1698
+ version:
1699
+ type: integer
1700
+ default: 1
1701
+ enum:
1702
+ - 1
1703
+ access:
1704
+ $ref: '#/components/schemas/DROAccess'
1705
+ administrative:
1706
+ $ref: '#/components/schemas/RequestAdministrative'
1707
+ description:
1708
+ $ref: '#/components/schemas/RequestDescription'
1709
+ identification:
1710
+ $ref: '#/components/schemas/RequestIdentification'
1711
+ structural:
1712
+ $ref: '#/components/schemas/RequestDROStructural'
1713
+ geographic:
1714
+ $ref: '#/components/schemas/Geographic'
1715
+ required:
1716
+ - cocinaVersion
1717
+ - administrative
1718
+ - identification
1719
+ - label
1720
+ - type
1721
+ - version
1722
+ RequestDROStructural:
1723
+ description: Structural metadata
1724
+ type: object
1725
+ additionalProperties: false
1726
+ properties:
1727
+ contains:
1728
+ type: array
1729
+ items:
1730
+ $ref: '#/components/schemas/RequestFileSet'
1731
+ hasMemberOrders:
1732
+ type: array
1733
+ items:
1734
+ $ref: '#/components/schemas/Sequence'
1735
+ isMemberOf:
1736
+ description: Collections that this DRO is a member of
1737
+ type: array
1738
+ items:
1739
+ $ref: '#/components/schemas/Druid'
1649
1740
  RequestDescription:
1650
1741
  description: Description that is included in a request to create a DRO. This is the same as a Description, except excludes PURL.
1651
1742
  type: object
@@ -1719,75 +1810,6 @@ components:
1719
1810
  type: string
1720
1811
  required:
1721
1812
  - title
1722
- RequestDRO:
1723
- 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.
1724
- type: object
1725
- additionalProperties: false
1726
- properties:
1727
- cocinaVersion:
1728
- $ref: '#/components/schemas/CocinaVersion'
1729
- type:
1730
- type: string
1731
- enum:
1732
- - 'https://cocina.sul.stanford.edu/models/object'
1733
- - 'https://cocina.sul.stanford.edu/models/3d'
1734
- - 'https://cocina.sul.stanford.edu/models/agreement'
1735
- - 'https://cocina.sul.stanford.edu/models/book'
1736
- - 'https://cocina.sul.stanford.edu/models/document'
1737
- - 'https://cocina.sul.stanford.edu/models/geo'
1738
- - 'https://cocina.sul.stanford.edu/models/image'
1739
- - 'https://cocina.sul.stanford.edu/models/page'
1740
- - 'https://cocina.sul.stanford.edu/models/photograph'
1741
- - 'https://cocina.sul.stanford.edu/models/manuscript'
1742
- - 'https://cocina.sul.stanford.edu/models/map'
1743
- - 'https://cocina.sul.stanford.edu/models/media'
1744
- - 'https://cocina.sul.stanford.edu/models/track'
1745
- - 'https://cocina.sul.stanford.edu/models/webarchive-binary'
1746
- - 'https://cocina.sul.stanford.edu/models/webarchive-seed'
1747
- label:
1748
- type: string
1749
- version:
1750
- type: integer
1751
- default: 1
1752
- enum:
1753
- - 1
1754
- access:
1755
- $ref: '#/components/schemas/DROAccess'
1756
- administrative:
1757
- $ref: '#/components/schemas/RequestAdministrative'
1758
- description:
1759
- $ref: '#/components/schemas/RequestDescription'
1760
- identification:
1761
- $ref: '#/components/schemas/RequestIdentification'
1762
- structural:
1763
- $ref: '#/components/schemas/RequestDROStructural'
1764
- geographic:
1765
- $ref: '#/components/schemas/Geographic'
1766
- required:
1767
- - cocinaVersion
1768
- - administrative
1769
- - identification
1770
- - label
1771
- - type
1772
- - version
1773
- RequestDROStructural:
1774
- description: Structural metadata
1775
- type: object
1776
- additionalProperties: false
1777
- properties:
1778
- contains:
1779
- type: array
1780
- items:
1781
- $ref: '#/components/schemas/RequestFileSet'
1782
- hasMemberOrders:
1783
- type: array
1784
- items:
1785
- $ref: '#/components/schemas/Sequence'
1786
- isMemberOf:
1787
- description: Collections that this DRO is a member of
1788
- type: array
1789
- items:
1790
- $ref: '#/components/schemas/Druid'
1791
1813
  RequestFile:
1792
1814
  type: object
1793
1815
  additionalProperties: false
@@ -1971,27 +1993,6 @@ components:
1971
1993
  nullable: true
1972
1994
  pattern: '^36105[0-9]{9}$'
1973
1995
  example: '36105010362304'
1974
- Title:
1975
- type: object
1976
- additionalProperties: false
1977
- allOf:
1978
- - $ref: "#/components/schemas/DescriptiveValue"
1979
- - anyOf:
1980
- - type: object
1981
- required:
1982
- - value
1983
- - type: object
1984
- required:
1985
- - structuredValue
1986
- - type: object
1987
- required:
1988
- - parallelValue
1989
- - type: object
1990
- required:
1991
- - groupedValue
1992
- - type: object
1993
- required:
1994
- - valueAt
1995
1996
  StanfordAccess:
1996
1997
  type: object
1997
1998
  properties:
@@ -2019,6 +2020,54 @@ components:
2019
2020
  required:
2020
2021
  - view
2021
2022
  - download
2023
+ SymphonyCatalogLink:
2024
+ description: A linkage between an object and a Symphony catalog record
2025
+ type: object
2026
+ additionalProperties: false
2027
+ properties:
2028
+ catalog:
2029
+ description: Catalog that is the source of the linked record.
2030
+ type: string
2031
+ enum:
2032
+ - symphony
2033
+ - previous symphony
2034
+ example: symphony
2035
+ refresh:
2036
+ description: Only one of the catkeys should be designated for refreshing.
2037
+ This means that this key is the one used to pull metadata from the catalog
2038
+ if there is more than one key present.
2039
+ type: boolean
2040
+ default: false
2041
+ catalogRecordId:
2042
+ description: Record identifier that is unique within the context of the linked record's catalog.
2043
+ type: string
2044
+ pattern: '^\d+$'
2045
+ example: '11403803'
2046
+ required:
2047
+ - catalog
2048
+ - catalogRecordId
2049
+ - refresh
2050
+ Title:
2051
+ type: object
2052
+ additionalProperties: false
2053
+ allOf:
2054
+ - $ref: "#/components/schemas/DescriptiveValue"
2055
+ - anyOf:
2056
+ - type: object
2057
+ required:
2058
+ - value
2059
+ - type: object
2060
+ required:
2061
+ - structuredValue
2062
+ - type: object
2063
+ required:
2064
+ - parallelValue
2065
+ - type: object
2066
+ required:
2067
+ - groupedValue
2068
+ - type: object
2069
+ required:
2070
+ - valueAt
2022
2071
  WorldAccess:
2023
2072
  type: object
2024
2073
  properties: