cocina-models 0.63.1 → 0.64.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a6d9b7c11061f4e03dc5d8f8b7ed61dce99e05467f229fb9678792abdd7ae00e
4
- data.tar.gz: de835512797d500cda81ca8c17155fd7a518ba47629c0be9519488ae86d6ed34
3
+ metadata.gz: 9539fc314563e23d96f0f90cf2a97eca07ebbc2a63e9678581530a2cd7843396
4
+ data.tar.gz: 2a8d73a4d425dd4ad399431108e987590cc9aea97515aeb77edc7c49758fb4d5
5
5
  SHA512:
6
- metadata.gz: 6db0d195fc2f8a610b0ed9f2f94b7fe7473f49c00e7a6f92ccef010dc6ee428e614a276d98ba80ad673f5720299d7b7a6ac0d4dedabce165035d3a8c6bc1614b
7
- data.tar.gz: b43aa74787005ed59b5aec644f582cb2412cc1b4cc2ebb6422f28faba4939e86751d108716a40928872bb76f1c72c78aa5368ca66f338ec5c59cc22830808366
6
+ metadata.gz: 447c58bbc28217dabd2664a23527eeedfa5588684700316b5507735d9d832e8905fbf9177f1918a1abb30d2cc4ce693e4d111cb47631d0f579a3fe7a780275cf
7
+ data.tar.gz: 61d83471e7b68292b2c945bbfb07d47d3bf179b40552b03e190eda1cf5915d7569606e6873275fdd327542e7c1d0767903797cd1c73d2c08241c8aa9ed0af33a
@@ -215,12 +215,7 @@
215
215
  "structural": {
216
216
  "description": "Structural metadata for the Collection.",
217
217
  "type": "object",
218
- "required": ["hasAgreement"],
219
218
  "properties": {
220
- "hasAgreement": {
221
- "description": "Agreement that covers the deposit of the Collection into SDR.",
222
- "type": "string"
223
- },
224
219
  "hasMember": {
225
220
  "description": "Component digital repository objects or collections that are a part of this collection.",
226
221
  "type": "array",
data/docs/maps/DRO.json CHANGED
@@ -277,7 +277,6 @@
277
277
  "structural": {
278
278
  "description": "Structural metadata for the DRO.",
279
279
  "type": "object",
280
- "required": ["hasAgreement"],
281
280
  "properties": {
282
281
  "contains": {
283
282
  "description": "Filesets that contain the digital representations (Files) of the DRO.",
@@ -286,10 +285,6 @@
286
285
  "$ref": "/Fileset"
287
286
  }
288
287
  },
289
- "hasAgreement": {
290
- "description": "Agreement that covers the deposit of the DRO into SDR.",
291
- "type": "string"
292
- },
293
288
  "hasMember": {
294
289
  "description": "Component or 'children' digital repository objects that are a part or portion of this 'parent' or aggregate DRO.",
295
290
  "type": "array",
@@ -26,10 +26,14 @@ module Cocina
26
26
  end
27
27
 
28
28
  def default
29
+ # Provide version as default for cocinaVersion
30
+ return '.default(Cocina::Models::VERSION)' if name == 'cocinaVersion'
31
+
29
32
  # If type is boolean and default is false, erroneously getting a nil.
30
33
  # Assuming that if required, then default is false.
31
34
  default = schema_doc.default
32
35
  default = false if default.nil? && schema_doc.type == 'boolean' && required
36
+
33
37
  return '' if default.nil?
34
38
 
35
39
  ".default(#{quote(default)})"
@@ -7,6 +7,9 @@ module Cocina
7
7
 
8
8
  TYPES = ['http://cocina.sul.stanford.edu/models/admin_policy.jsonld'].freeze
9
9
 
10
+ # The version of Cocina with which this object conforms.
11
+ # example: 1.2.3
12
+ attribute :cocinaVersion, Types::Strict::String.default(Cocina::Models::VERSION)
10
13
  attribute :type, Types::Strict::String.enum(*AdminPolicy::TYPES)
11
14
  # example: druid:bc123df4567
12
15
  attribute :externalIdentifier, Types::Strict::String
@@ -14,6 +14,8 @@ module Cocina
14
14
  # example: druid:bc123df4567
15
15
  attribute :hasAdminPolicy, Types::Strict::String
16
16
  # example: druid:bc123df4567
17
+ attribute :hasAgreement, Types::Strict::String
18
+ # example: druid:bc123df4567
17
19
  attribute :referencesAgreement, Types::Strict::String.meta(omittable: true)
18
20
  attribute :roles, Types::Strict::Array.of(AccessRole).default([].freeze)
19
21
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cocina
4
+ module Models
5
+ CocinaVersion = Types::String.constrained(
6
+ format: /^\d+\.\d+\.\d+$/i
7
+ )
8
+ end
9
+ end
@@ -11,6 +11,9 @@ module Cocina
11
11
  'http://cocina.sul.stanford.edu/models/exhibit.jsonld',
12
12
  'http://cocina.sul.stanford.edu/models/series.jsonld'].freeze
13
13
 
14
+ # The version of Cocina with which this object conforms.
15
+ # example: 1.2.3
16
+ attribute :cocinaVersion, Types::Strict::String.default(Cocina::Models::VERSION)
14
17
  # The content type of the Collection. Selected from an established set of values.
15
18
  attribute :type, Types::Strict::String.enum(*Collection::TYPES)
16
19
  # example: druid:bc123df4567
@@ -12,14 +12,14 @@ module Cocina
12
12
  attribute :note, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
13
13
  attribute :identifier, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
14
14
  attribute :subject, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
15
- # Stanford persistent URL associated with the related resource. Note this is http, not https.
16
- attribute :purl, Types::Strict::String.meta(omittable: true)
17
15
  attribute :access, DescriptiveAccessMetadata.optional.meta(omittable: true)
18
16
  attribute :relatedResource, Types::Strict::Array.of(RelatedResource).default([].freeze)
19
17
  attribute :marcEncodedData, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
20
18
  attribute :adminMetadata, DescriptiveAdminMetadata.optional.meta(omittable: true)
21
19
  # URL or other pointer to the location of the resource description.
22
20
  attribute :valueAt, Types::Strict::String.meta(omittable: true)
21
+ # Stanford persistent URL associated with the related resource. Note this is http, not https.
22
+ attribute :purl, Types::Strict::String
23
23
 
24
24
  def self.new(attributes = default_attributes, safe = false, validate = true, &block)
25
25
  Validator.validate(self, attributes.with_indifferent_access) if validate && name
@@ -21,6 +21,9 @@ module Cocina
21
21
  'http://cocina.sul.stanford.edu/models/webarchive-binary.jsonld',
22
22
  'http://cocina.sul.stanford.edu/models/webarchive-seed.jsonld'].freeze
23
23
 
24
+ # The version of Cocina with which this object conforms.
25
+ # example: 1.2.3
26
+ attribute :cocinaVersion, Types::Strict::String.default(Cocina::Models::VERSION)
24
27
  # The content type of the DRO. Selected from an established set of values.
25
28
  attribute :type, Types::Strict::String.enum(*DRO::TYPES)
26
29
  # example: druid:bc123df4567
@@ -6,8 +6,6 @@ module Cocina
6
6
  attribute :contains, Types::Strict::Array.of(FileSet).default([].freeze)
7
7
  attribute :hasMemberOrders, Types::Strict::Array.of(Sequence).default([].freeze)
8
8
  attribute :isMemberOf, Types::Strict::Array.of(Druid).default([].freeze)
9
- # Agreement that covers the deposit of the DRO into SDR.
10
- attribute :hasAgreement, Types::Strict::String.meta(omittable: true)
11
9
  end
12
10
  end
13
11
  end
@@ -7,11 +7,14 @@ module Cocina
7
7
 
8
8
  TYPES = ['http://cocina.sul.stanford.edu/models/admin_policy.jsonld'].freeze
9
9
 
10
+ # The version of Cocina with which this object conforms.
11
+ # example: 1.2.3
12
+ attribute :cocinaVersion, Types::Strict::String.default(Cocina::Models::VERSION)
10
13
  attribute :type, Types::Strict::String.enum(*RequestAdminPolicy::TYPES)
11
14
  attribute :label, Types::Strict::String
12
15
  attribute :version, Types::Strict::Integer
13
16
  attribute(:administrative, AdminPolicyAdministrative.default { AdminPolicyAdministrative.new })
14
- attribute :description, Description.optional.meta(omittable: true)
17
+ attribute :description, RequestDescription.optional.meta(omittable: true)
15
18
 
16
19
  def self.new(attributes = default_attributes, safe = false, validate = true, &block)
17
20
  Validator.validate(self, attributes.with_indifferent_access) if validate && name
@@ -11,12 +11,15 @@ module Cocina
11
11
  'http://cocina.sul.stanford.edu/models/exhibit.jsonld',
12
12
  'http://cocina.sul.stanford.edu/models/series.jsonld'].freeze
13
13
 
14
+ # The version of Cocina with which this object conforms.
15
+ # example: 1.2.3
16
+ attribute :cocinaVersion, Types::Strict::String.default(Cocina::Models::VERSION)
14
17
  attribute :type, Types::Strict::String.enum(*RequestCollection::TYPES)
15
18
  attribute :label, Types::Strict::String
16
19
  attribute :version, Types::Strict::Integer
17
20
  attribute(:access, CollectionAccess.default { CollectionAccess.new })
18
21
  attribute(:administrative, Administrative.default { Administrative.new })
19
- attribute :description, Description.optional.meta(omittable: true)
22
+ attribute :description, RequestDescription.optional.meta(omittable: true)
20
23
  attribute :identification, CollectionIdentification.optional.meta(omittable: true)
21
24
 
22
25
  def self.new(attributes = default_attributes, safe = false, validate = true, &block)
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cocina
4
+ module Models
5
+ class RequestDescription < Struct
6
+ attribute :title, Types::Strict::Array.of(Title).default([].freeze)
7
+ attribute :contributor, Types::Strict::Array.of(Contributor).default([].freeze)
8
+ attribute :event, Types::Strict::Array.of(Event).default([].freeze)
9
+ attribute :form, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
10
+ attribute :geographic, Types::Strict::Array.of(DescriptiveGeographicMetadata).default([].freeze)
11
+ attribute :language, Types::Strict::Array.of(Language).default([].freeze)
12
+ attribute :note, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
13
+ attribute :identifier, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
14
+ attribute :subject, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
15
+ attribute :access, DescriptiveAccessMetadata.optional.meta(omittable: true)
16
+ attribute :relatedResource, Types::Strict::Array.of(RelatedResource).default([].freeze)
17
+ attribute :marcEncodedData, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
18
+ attribute :adminMetadata, DescriptiveAdminMetadata.optional.meta(omittable: true)
19
+ # URL or other pointer to the location of the resource description.
20
+ attribute :valueAt, Types::Strict::String.meta(omittable: true)
21
+
22
+ def self.new(attributes = default_attributes, safe = false, validate = true, &block)
23
+ Validator.validate(self, attributes.with_indifferent_access) if validate && name
24
+ super(attributes, safe, &block)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -21,12 +21,15 @@ module Cocina
21
21
  'http://cocina.sul.stanford.edu/models/webarchive-binary.jsonld',
22
22
  'http://cocina.sul.stanford.edu/models/webarchive-seed.jsonld'].freeze
23
23
 
24
+ # The version of Cocina with which this object conforms.
25
+ # example: 1.2.3
26
+ attribute :cocinaVersion, Types::Strict::String.default(Cocina::Models::VERSION)
24
27
  attribute :type, Types::Strict::String.enum(*RequestDRO::TYPES)
25
28
  attribute :label, Types::Strict::String
26
29
  attribute :version, Types::Strict::Integer
27
30
  attribute :access, DROAccess.optional.meta(omittable: true)
28
31
  attribute(:administrative, Administrative.default { Administrative.new })
29
- attribute :description, Description.optional.meta(omittable: true)
32
+ attribute :description, RequestDescription.optional.meta(omittable: true)
30
33
  attribute(:identification, RequestIdentification.default { RequestIdentification.new })
31
34
  attribute :structural, RequestDROStructural.optional.meta(omittable: true)
32
35
  attribute :geographic, Geographic.optional.meta(omittable: true)
@@ -6,7 +6,6 @@ module Cocina
6
6
  attribute :contains, Types::Strict::Array.of(RequestFileSet).default([].freeze)
7
7
  attribute :hasMemberOrders, Types::Strict::Array.of(Sequence).default([].freeze)
8
8
  attribute :isMemberOf, Types::Strict::Array.of(Druid).default([].freeze)
9
- attribute :hasAgreement, Types::Strict::String.meta(omittable: true)
10
9
  end
11
10
  end
12
11
  end
@@ -7,12 +7,32 @@ module Cocina
7
7
  def self.validate(clazz, attributes)
8
8
  method_name = clazz.name.split('::').last
9
9
  request_operation = root.request_operation(:post, "/validate/#{method_name}")
10
+
10
11
  # JSON.parse forces serialization of objects like DateTime.
11
- request_operation.validate_request_body('application/json', JSON.parse(attributes.to_json))
12
+ json_attributes = JSON.parse(attributes.to_json)
13
+ # Inject cocinaVersion if needed and not present.
14
+ if operation_has_cocina_version?(request_operation) && !json_attributes.include?('cocinaVersion')
15
+ json_attributes['cocinaVersion'] = Cocina::Models::VERSION
16
+ end
17
+
18
+ request_operation.validate_request_body('application/json', json_attributes)
12
19
  rescue OpenAPIParser::OpenAPIError => e
13
20
  raise ValidationError, e.message
14
21
  end
15
22
 
23
+ # rubocop:disable Metrics/AbcSize
24
+ # rubocop:disable Metrics/CyclomaticComplexity
25
+ def self.operation_has_cocina_version?(request_operation)
26
+ schema = request_operation.operation_object.request_body.content['application/json'].schema
27
+ all_of_properties = Array(schema.all_of&.flat_map { |all_of| all_of.properties&.keys }).compact
28
+ one_of_properties = Array(schema.one_of&.flat_map { |one_of| one_of.properties&.keys }).compact
29
+ properties = Array(schema.properties&.keys)
30
+ (properties + all_of_properties + one_of_properties).include?('cocinaVersion')
31
+ end
32
+ # rubocop:enable Metrics/AbcSize
33
+ # rubocop:enable Metrics/CyclomaticComplexity
34
+ private_class_method :operation_has_cocina_version?
35
+
16
36
  # rubocop:disable Style/ClassVars
17
37
  def self.root
18
38
  @@root ||= OpenAPIParser.parse(YAML.load_file(openapi_path))
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Cocina
4
4
  module Models
5
- VERSION = '0.63.1'
5
+ VERSION = '0.64.0'
6
6
  end
7
7
  end
data/openapi.yml CHANGED
@@ -91,6 +91,18 @@ paths:
91
91
  responses:
92
92
  '200':
93
93
  description: noop
94
+ /validate/RequestDescription:
95
+ post:
96
+ summary: Validate a Request Description
97
+ requestBody:
98
+ required: true
99
+ content:
100
+ application/json:
101
+ schema:
102
+ $ref: '#/components/schemas/RequestDescription'
103
+ responses:
104
+ '200':
105
+ description: noop
94
106
  components:
95
107
  schemas:
96
108
  Access:
@@ -172,6 +184,8 @@ components:
172
184
  type: object
173
185
  additionalProperties: false
174
186
  properties:
187
+ cocinaVersion:
188
+ $ref: '#/components/schemas/CocinaVersion'
175
189
  type:
176
190
  type: string
177
191
  enum:
@@ -187,6 +201,7 @@ components:
187
201
  description:
188
202
  $ref: '#/components/schemas/Description'
189
203
  required:
204
+ - cocinaVersion
190
205
  - administrative
191
206
  - externalIdentifier
192
207
  - label
@@ -220,6 +235,8 @@ components:
220
235
  type: string
221
236
  hasAdminPolicy:
222
237
  $ref: '#/components/schemas/Druid'
238
+ hasAgreement:
239
+ $ref: '#/components/schemas/Druid'
223
240
  referencesAgreement:
224
241
  $ref: '#/components/schemas/Druid'
225
242
  roles:
@@ -229,6 +246,7 @@ components:
229
246
  $ref: '#/components/schemas/AccessRole'
230
247
  required:
231
248
  - hasAdminPolicy
249
+ - hasAgreement
232
250
  AdminPolicyDefaultAccess:
233
251
  description: 'Provides the default access settings for an AdminPolicy. This is almost the same as DROAccess, but it provides no defaults and has no embargo.'
234
252
  type: object
@@ -360,11 +378,18 @@ components:
360
378
  required:
361
379
  - access
362
380
  - download
381
+ CocinaVersion:
382
+ description: The version of Cocina with which this object conforms.
383
+ type: string
384
+ pattern: '^\d+\.\d+\.\d+$'
385
+ example: '1.2.3'
363
386
  Collection:
364
387
  description: A group of Digital Repository Objects that indicate some type of conceptual grouping within the domain that is worth reusing across the system.
365
388
  type: object
366
389
  additionalProperties: false
367
390
  properties:
391
+ cocinaVersion:
392
+ $ref: '#/components/schemas/CocinaVersion'
368
393
  type:
369
394
  description: The content type of the Collection. Selected from an established set of values.
370
395
  type: string
@@ -391,6 +416,7 @@ components:
391
416
  identification:
392
417
  $ref: '#/components/schemas/CollectionIdentification'
393
418
  required:
419
+ - cocinaVersion
394
420
  - externalIdentifier
395
421
  - label
396
422
  - type
@@ -529,77 +555,15 @@ components:
529
555
  Description:
530
556
  type: object
531
557
  additionalProperties: false
532
- properties:
533
- title:
534
- description: Titles of the resource.
535
- type: array
536
- minItems: 1
537
- items:
538
- $ref: "#/components/schemas/Title"
539
- contributor:
540
- description: Agents contributing in some way to the creation and history of the
541
- resource.
542
- type: array
543
- items:
544
- $ref: "#/components/schemas/Contributor"
545
- event:
546
- description: Events in the history of the resource.
547
- type: array
548
- items:
549
- $ref: "#/components/schemas/Event"
550
- form:
551
- description: Characteristics of the resource's physical, digital, and intellectual
552
- form and genre, and of its process of creation.
553
- type: array
554
- items:
555
- $ref: "#/components/schemas/DescriptiveValue"
556
- geographic:
557
- description: Geographic description for items with coordinates or bounding boxes.
558
- type: array
559
- items:
560
- $ref: "#/components/schemas/DescriptiveGeographicMetadata"
561
- language:
562
- description: Languages, scripts, symbolic systems, and notations used in all or
563
- part of a resource.
564
- type: array
565
- items:
566
- $ref: "#/components/schemas/Language"
567
- note:
568
- description: Additional information relevant to a resource.
569
- type: array
570
- items:
571
- $ref: "#/components/schemas/DescriptiveValue"
572
- identifier:
573
- description: Identifiers and URIs associated with the resource.
574
- type: array
575
- items:
576
- $ref: "#/components/schemas/DescriptiveValue"
577
- subject:
578
- description: Terms associated with the intellectual content of the resource.
579
- type: array
580
- items:
581
- $ref: "#/components/schemas/DescriptiveValue"
582
- purl:
583
- $ref: "#/components/schemas/Purl"
584
- access:
585
- $ref: "#/components/schemas/DescriptiveAccessMetadata"
586
- relatedResource:
587
- description: Other resources associated with the described resource.
588
- type: array
589
- items:
590
- $ref: "#/components/schemas/RelatedResource"
591
- marcEncodedData:
592
- description: Data about the resource represented in MARC fixed fields and codes.
593
- type: array
594
- items:
595
- $ref: "#/components/schemas/DescriptiveValue"
596
- adminMetadata:
597
- $ref: "#/components/schemas/DescriptiveAdminMetadata"
598
- valueAt:
599
- description: URL or other pointer to the location of the resource description.
600
- type: string
601
- required:
602
- - title
558
+ allOf:
559
+ - $ref: "#/components/schemas/RequestDescription"
560
+ - type: object
561
+ additionalProperties: false
562
+ properties:
563
+ purl:
564
+ $ref: "#/components/schemas/Purl"
565
+ required:
566
+ - purl
603
567
  DescriptiveAccessMetadata:
604
568
  description: Information about how to access digital and physical versions of the object.
605
569
  type: object
@@ -886,6 +850,8 @@ components:
886
850
  type: object
887
851
  additionalProperties: false
888
852
  properties:
853
+ cocinaVersion:
854
+ $ref: '#/components/schemas/CocinaVersion'
889
855
  type:
890
856
  description: The content type of the DRO. Selected from an established set of values.
891
857
  type: string
@@ -926,6 +892,7 @@ components:
926
892
  geographic:
927
893
  $ref: '#/components/schemas/Geographic'
928
894
  required:
895
+ - cocinaVersion
929
896
  - access
930
897
  - administrative
931
898
  - externalIdentifier
@@ -1004,9 +971,6 @@ components:
1004
971
  type: array
1005
972
  items:
1006
973
  $ref: '#/components/schemas/Druid'
1007
- hasAgreement:
1008
- description: Agreement that covers the deposit of the DRO into SDR.
1009
- type: string
1010
974
  Druid:
1011
975
  type: string
1012
976
  pattern: '^druid:[b-df-hjkmnp-tv-z]{2}[0-9]{3}[b-df-hjkmnp-tv-z]{2}[0-9]{4}$'
@@ -1508,6 +1472,8 @@ components:
1508
1472
  type: object
1509
1473
  additionalProperties: false
1510
1474
  properties:
1475
+ cocinaVersion:
1476
+ $ref: '#/components/schemas/CocinaVersion'
1511
1477
  type:
1512
1478
  type: string
1513
1479
  enum:
@@ -1519,8 +1485,9 @@ components:
1519
1485
  administrative:
1520
1486
  $ref: '#/components/schemas/AdminPolicyAdministrative'
1521
1487
  description:
1522
- $ref: '#/components/schemas/Description'
1488
+ $ref: '#/components/schemas/RequestDescription'
1523
1489
  required:
1490
+ - cocinaVersion
1524
1491
  - administrative
1525
1492
  - label
1526
1493
  - type
@@ -1530,6 +1497,8 @@ components:
1530
1497
  type: object
1531
1498
  additionalProperties: false
1532
1499
  properties:
1500
+ cocinaVersion:
1501
+ $ref: '#/components/schemas/CocinaVersion'
1533
1502
  type:
1534
1503
  type: string
1535
1504
  enum:
@@ -1547,20 +1516,96 @@ components:
1547
1516
  administrative:
1548
1517
  $ref: '#/components/schemas/Administrative'
1549
1518
  description:
1550
- $ref: '#/components/schemas/Description'
1519
+ $ref: '#/components/schemas/RequestDescription'
1551
1520
  identification:
1552
1521
  $ref: '#/components/schemas/CollectionIdentification'
1553
1522
  required:
1523
+ - cocinaVersion
1554
1524
  - access
1555
1525
  - administrative
1556
1526
  - label
1557
1527
  - type
1558
1528
  - version
1529
+ RequestDescription:
1530
+ description: Description that is included in a request to create a DRO. This is the same as a Description, except excludes PURL.
1531
+ type: object
1532
+ additionalProperties: false
1533
+ properties:
1534
+ title:
1535
+ description: Titles of the resource.
1536
+ type: array
1537
+ minItems: 1
1538
+ items:
1539
+ $ref: "#/components/schemas/Title"
1540
+ contributor:
1541
+ description: Agents contributing in some way to the creation and history of the
1542
+ resource.
1543
+ type: array
1544
+ items:
1545
+ $ref: "#/components/schemas/Contributor"
1546
+ event:
1547
+ description: Events in the history of the resource.
1548
+ type: array
1549
+ items:
1550
+ $ref: "#/components/schemas/Event"
1551
+ form:
1552
+ description: Characteristics of the resource's physical, digital, and intellectual
1553
+ form and genre, and of its process of creation.
1554
+ type: array
1555
+ items:
1556
+ $ref: "#/components/schemas/DescriptiveValue"
1557
+ geographic:
1558
+ description: Geographic description for items with coordinates or bounding boxes.
1559
+ type: array
1560
+ items:
1561
+ $ref: "#/components/schemas/DescriptiveGeographicMetadata"
1562
+ language:
1563
+ description: Languages, scripts, symbolic systems, and notations used in all or
1564
+ part of a resource.
1565
+ type: array
1566
+ items:
1567
+ $ref: "#/components/schemas/Language"
1568
+ note:
1569
+ description: Additional information relevant to a resource.
1570
+ type: array
1571
+ items:
1572
+ $ref: "#/components/schemas/DescriptiveValue"
1573
+ identifier:
1574
+ description: Identifiers and URIs associated with the resource.
1575
+ type: array
1576
+ items:
1577
+ $ref: "#/components/schemas/DescriptiveValue"
1578
+ subject:
1579
+ description: Terms associated with the intellectual content of the resource.
1580
+ type: array
1581
+ items:
1582
+ $ref: "#/components/schemas/DescriptiveValue"
1583
+ access:
1584
+ $ref: "#/components/schemas/DescriptiveAccessMetadata"
1585
+ relatedResource:
1586
+ description: Other resources associated with the described resource.
1587
+ type: array
1588
+ items:
1589
+ $ref: "#/components/schemas/RelatedResource"
1590
+ marcEncodedData:
1591
+ description: Data about the resource represented in MARC fixed fields and codes.
1592
+ type: array
1593
+ items:
1594
+ $ref: "#/components/schemas/DescriptiveValue"
1595
+ adminMetadata:
1596
+ $ref: "#/components/schemas/DescriptiveAdminMetadata"
1597
+ valueAt:
1598
+ description: URL or other pointer to the location of the resource description.
1599
+ type: string
1600
+ required:
1601
+ - title
1559
1602
  RequestDRO:
1560
1603
  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.
1561
1604
  type: object
1562
1605
  additionalProperties: false
1563
1606
  properties:
1607
+ cocinaVersion:
1608
+ $ref: '#/components/schemas/CocinaVersion'
1564
1609
  type:
1565
1610
  type: string
1566
1611
  enum:
@@ -1588,7 +1633,7 @@ components:
1588
1633
  administrative:
1589
1634
  $ref: '#/components/schemas/Administrative'
1590
1635
  description:
1591
- $ref: '#/components/schemas/Description'
1636
+ $ref: '#/components/schemas/RequestDescription'
1592
1637
  identification:
1593
1638
  $ref: '#/components/schemas/RequestIdentification'
1594
1639
  structural:
@@ -1596,6 +1641,7 @@ components:
1596
1641
  geographic:
1597
1642
  $ref: '#/components/schemas/Geographic'
1598
1643
  required:
1644
+ - cocinaVersion
1599
1645
  - administrative
1600
1646
  - identification
1601
1647
  - label
@@ -1619,8 +1665,6 @@ components:
1619
1665
  type: array
1620
1666
  items:
1621
1667
  $ref: '#/components/schemas/Druid'
1622
- hasAgreement:
1623
- type: string
1624
1668
  RequestFile:
1625
1669
  type: object
1626
1670
  additionalProperties: false
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocina-models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.63.1
4
+ version: 0.64.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-20 00:00:00.000000000 Z
11
+ date: 2022-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -280,6 +280,7 @@ files:
280
280
  - lib/cocina/models/catkey_barcode.rb
281
281
  - lib/cocina/models/checkable.rb
282
282
  - lib/cocina/models/citation_only_access.rb
283
+ - lib/cocina/models/cocina_version.rb
283
284
  - lib/cocina/models/collection.rb
284
285
  - lib/cocina/models/collection_access.rb
285
286
  - lib/cocina/models/collection_identification.rb
@@ -323,6 +324,7 @@ files:
323
324
  - lib/cocina/models/release_tag.rb
324
325
  - lib/cocina/models/request_admin_policy.rb
325
326
  - lib/cocina/models/request_collection.rb
327
+ - lib/cocina/models/request_description.rb
326
328
  - lib/cocina/models/request_dro.rb
327
329
  - lib/cocina/models/request_dro_structural.rb
328
330
  - lib/cocina/models/request_file.rb