briard 2.8.2 → 2.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b82034f66939dab07cc20186304bcdbffdde06c43abc4c614ae2bae68e4d0f72
4
- data.tar.gz: b8f5d74bff45e5f016e7ec094860c632b01b66df5f104501b3c4bae6fc4adc8c
3
+ metadata.gz: 630bdfe771252795f1d396dc2eb3da9fce76c3bf8c0281347be8c8e97e5ae1f4
4
+ data.tar.gz: e80734a4a4163ce8a6ff581aa9d49034ddff4b961953ab8740566d09e2886e73
5
5
  SHA512:
6
- metadata.gz: 4d143feff904aef51b688359e9888d83ac627566febea50fcfd7d5dec001c0634f268a3918aa12c4813e4f2c2a8acbb190c75a9ff7d6bbb580e26925ca292c2f
7
- data.tar.gz: 4185d017bb16a13ee4e10a5e0b9335178e8b8bf36b6d951cc82976814176d0a254818235570c6806812f5e7b01b3026492044ca7923964185221e860abfc3ed5
6
+ metadata.gz: 5dfce207ab441f813d69fb79fb0d354823234a8fced4566703de4cdb67f4522c99b4836e1e7d5abeedb7863ad82f082019d2a2289b019ddf56048b8afe959ecf
7
+ data.tar.gz: 07dfbff46d904dc090d640d8e8d26591d3d88ec6d841e6f781c2804946e679fc03c7d0407943e516af158d34a6e5ec0379d2f5d8f2799efad8c57d7b77ebbba9
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## [v2.8.2](https://github.com/front-matter/briard/tree/v2.8.2) (2022-11-23)
4
+
5
+ [Full Changelog](https://github.com/front-matter/briard/compare/v2.8.0...v2.8.2)
6
+
3
7
  ## [v2.8.0](https://github.com/front-matter/briard/tree/v2.8.0) (2022-11-22)
4
8
 
5
9
  [Full Changelog](https://github.com/front-matter/briard/compare/v2.6.5...v2.8.0)
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- briard (2.8.2)
4
+ briard (2.9.0)
5
5
  activesupport (>= 4.2.5, < 8.0)
6
6
  base32-url (>= 0.5.0, < 1)
7
7
  benchmark_methods (~> 0.7)
@@ -18,6 +18,7 @@ PATH
18
18
  gender_detector (~> 0.1.2)
19
19
  iso8601 (~> 0.9.1)
20
20
  json-ld-preloaded (~> 3.1, >= 3.1.3)
21
+ json_schemer (~> 0.2.23)
21
22
  jsonlint (~> 0.3.0)
22
23
  loofah (~> 2.19)
23
24
  maremma (>= 4.9.7, < 5)
@@ -75,6 +76,8 @@ GEM
75
76
  scanf (~> 1.0)
76
77
  sxp (~> 1.2)
77
78
  unicode-types (~> 1.7)
79
+ ecma-re-validator (0.4.0)
80
+ regexp_parser (~> 2.2)
78
81
  edtf (3.1.0)
79
82
  activesupport (>= 3.0, < 8.0)
80
83
  excon (0.71.1)
@@ -99,6 +102,7 @@ GEM
99
102
  haml (5.2.2)
100
103
  temple (>= 0.8.0)
101
104
  tilt
105
+ hana (1.3.7)
102
106
  hashdiff (1.0.1)
103
107
  htmlentities (4.3.4)
104
108
  i18n (1.12.0)
@@ -116,6 +120,11 @@ GEM
116
120
  json-ld-preloaded (3.2.2)
117
121
  json-ld (~> 3.2)
118
122
  rdf (~> 3.2)
123
+ json_schemer (0.2.23)
124
+ ecma-re-validator (~> 0.3)
125
+ hana (~> 1.3)
126
+ regexp_parser (~> 2.0)
127
+ uri_template (~> 0.7)
119
128
  jsonlint (0.3.0)
120
129
  oj (~> 3)
121
130
  optimist (~> 3)
@@ -245,6 +254,7 @@ GEM
245
254
  unicode-display_width (2.3.0)
246
255
  unicode-types (1.8.0)
247
256
  unicode_utils (1.4.0)
257
+ uri_template (0.7.0)
248
258
  vcr (3.0.3)
249
259
  webmock (3.18.1)
250
260
  addressable (>= 2.8.0)
data/briard.gemspec CHANGED
@@ -35,6 +35,7 @@ Gem::Specification.new do |s|
35
35
  s.add_dependency 'iso8601', '~> 0.9.1'
36
36
  s.add_dependency 'json-ld-preloaded', '~> 3.1', '>= 3.1.3'
37
37
  s.add_dependency 'jsonlint', '~> 0.3.0'
38
+ s.add_dependency 'json_schemer', '~> 0.2.23'
38
39
  s.add_dependency 'loofah', '~> 2.19'
39
40
  s.add_dependency 'maremma', '>= 4.9.7', '< 5'
40
41
  s.add_dependency 'namae', '~> 1.0'
@@ -163,9 +163,11 @@ module Briard
163
163
  exists? && errors.nil?
164
164
  end
165
165
 
166
- # validate against DataCite schema, unless already errors in the reader
166
+ # Catch errors in the reader
167
+ # Then validate against JSON schema for internal metadata format
168
+ # Then validate against DataCite schema, unless already errors in the reader
167
169
  def errors
168
- meta.fetch('errors', nil) || datacite_errors(xml: datacite, schema_version: schema_version)
170
+ meta.fetch('errors', nil) || json_schema_errors || datacite_errors(xml: datacite, schema_version: schema_version)
169
171
  end
170
172
 
171
173
  def descriptions
@@ -4,6 +4,7 @@ require_relative 'doi_utils'
4
4
  require_relative 'author_utils'
5
5
  require_relative 'crossref_utils'
6
6
  require_relative 'datacite_utils'
7
+ require_relative 'schema_utils'
7
8
  require_relative 'utils'
8
9
 
9
10
  require_relative 'readers/bibtex_reader'
@@ -42,6 +43,7 @@ module Briard
42
43
  include Briard::AuthorUtils
43
44
  include Briard::CrossrefUtils
44
45
  include Briard::DataciteUtils
46
+ include Briard::SchemaUtils
45
47
  include Briard::Utils
46
48
 
47
49
  include Briard::Readers::BibtexReader
@@ -310,7 +310,7 @@ module Briard
310
310
  'container' => set_container(meta),
311
311
  'publisher' => parse_attributes(meta.fetch('publisher', nil),
312
312
  first: true).to_s.strip.presence,
313
- 'agency' => 'datacite',
313
+ 'agency' => 'DataCite',
314
314
  'funding_references' => funding_references,
315
315
  'dates' => dates,
316
316
  'publication_year' => parse_attributes(meta.fetch('publicationYear', nil),
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+ require 'json_schemer'
3
+ require 'pathname'
4
+
5
+ module Briard
6
+ module SchemaUtils
7
+ JSON_SCHEMA = schema = File.read(File.expand_path('../../resources/json-schema/briard_schema.json', __dir__))
8
+
9
+ def json_schema_errors
10
+ schemer = JSONSchemer.schema(JSON_SCHEMA)
11
+ errors = schemer.validate(self.meta).to_a
12
+ errors.map {|err| JSONSchemer::Errors.pretty err }.presence
13
+ end
14
+ end
15
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Briard
4
- VERSION = '2.8.2'
4
+ VERSION = '2.9.0'
5
5
  end
@@ -0,0 +1,367 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Briard Schema",
4
+ "definitions": {
5
+ "affiliations": {
6
+ "type": "array",
7
+ "items": {
8
+ "type": "object",
9
+ "properties": {
10
+ "affiliation": {
11
+ "type": "string"
12
+ }
13
+ },
14
+ "required": ["affiliation"]
15
+ },
16
+ "uniqueItems": true
17
+ },
18
+ "contributorType": {
19
+ "type": "string",
20
+ "enum": [
21
+ "ContactPerson",
22
+ "DataCollector",
23
+ "DataCurator",
24
+ "DataManager",
25
+ "Distributor",
26
+ "Editor",
27
+ "HostingInstitution",
28
+ "Producer",
29
+ "ProjectLeader",
30
+ "ProjectManager",
31
+ "ProjectMember",
32
+ "RegistrationAgency",
33
+ "RegistrationAuthority",
34
+ "RelatedPerson",
35
+ "Researcher",
36
+ "ResearchGroup",
37
+ "RightsHolder",
38
+ "Sponsor",
39
+ "Supervisor",
40
+ "WorkPackageLeader",
41
+ "Other"
42
+ ]
43
+ },
44
+ "descriptionType": {
45
+ "type": "string",
46
+ "enum": [
47
+ "Abstract",
48
+ "Methods",
49
+ "SeriesInformation",
50
+ "TableOfContents",
51
+ "TechnicalInfo",
52
+ "Other"
53
+ ]
54
+ },
55
+ "funderIdentifierType": {
56
+ "type": "string",
57
+ "enum": ["ISNI", "GRID", "Crossref Funder ID", "Other"]
58
+ },
59
+ "nameIdentifiers": {
60
+ "type": "array",
61
+ "items": {
62
+ "type": "object",
63
+ "properties": {
64
+ "nameIdentifier": {
65
+ "type": "string"
66
+ },
67
+ "nameIdentifierScheme": {
68
+ "type": "string"
69
+ },
70
+ "schemeURI": {
71
+ "type": "string",
72
+ "format": "uri"
73
+ }
74
+ },
75
+ "required": ["nameIdentifier", "nameIdentifierScheme"]
76
+ },
77
+ "uniqueItems": true
78
+ },
79
+ "nameType": {
80
+ "type": "string",
81
+ "enum": ["Organizational", "Personal"]
82
+ },
83
+ "noEmptyString": {
84
+ "type": "string",
85
+ "minLength": 1
86
+ },
87
+ "resourceTypeGeneral": {
88
+ "type": "string",
89
+ "enum": [
90
+ "Audiovisual",
91
+ "Collection",
92
+ "DataPaper",
93
+ "Dataset",
94
+ "Event",
95
+ "Image",
96
+ "InteractiveResource",
97
+ "Model",
98
+ "PhysicalObject",
99
+ "Service",
100
+ "Software",
101
+ "Sound",
102
+ "Text",
103
+ "Workflow",
104
+ "Other"
105
+ ]
106
+ },
107
+ "titleType": {
108
+ "type": "string",
109
+ "enum": ["AlternativeTitle", "Subtitle", "TranslatedTitle", "Other"]
110
+ }
111
+ },
112
+ "prefixItems": {
113
+ "id": {
114
+ "type": "string",
115
+ "format": "uri"
116
+ },
117
+ "types": {
118
+ "type": "object",
119
+ "properties": {
120
+ "resourceType": {
121
+ "type": "string"
122
+ },
123
+ "resourceTypeGeneral": {
124
+ "$ref": "#/definitions/resourceTypeGeneral"
125
+ },
126
+ "schemaOrg": {
127
+ "type": "string"
128
+ },
129
+ "citeproc": {
130
+ "type": "string"
131
+ },
132
+ "bibtex": {
133
+ "type": "string"
134
+ },
135
+ "ris": {
136
+ "type": "string"
137
+ }
138
+ },
139
+ "required": [
140
+ "resourceType",
141
+ "resourceTypeGeneral",
142
+ "schemaOrg",
143
+ "citeproc",
144
+ "bibtex",
145
+ "ris"
146
+ ]
147
+ },
148
+ "doi": {
149
+ "type": "string",
150
+ "format": "uri"
151
+ },
152
+ "url": {
153
+ "type": "string",
154
+ "format": "uri"
155
+ },
156
+ "titles": {
157
+ "type": "array",
158
+ "items": {
159
+ "type": "object",
160
+ "properties": {
161
+ "title": {
162
+ "type": "string"
163
+ },
164
+ "titleType": {
165
+ "$ref": "#/definitions/titleType"
166
+ },
167
+ "lang": {
168
+ "type": "string"
169
+ }
170
+ },
171
+ "required": ["title"]
172
+ },
173
+ "minItems": 1,
174
+ "uniqueItems": true
175
+ },
176
+ "creators": {
177
+ "type": "array",
178
+ "items": {
179
+ "type": "object",
180
+ "properties": {
181
+ "name": {
182
+ "type": "string"
183
+ },
184
+ "nameType": {
185
+ "$ref": "#/definitions/nameType"
186
+ },
187
+ "givenName": {
188
+ "type": "string"
189
+ },
190
+ "familyName": {
191
+ "type": "string"
192
+ },
193
+ "nameIdentifiers": {
194
+ "$ref": "#/definitions/nameIdentifiers"
195
+ },
196
+ "affiliations": {
197
+ "$ref": "#/definitions/affiliations"
198
+ },
199
+ "lang": {
200
+ "type": "string"
201
+ }
202
+ },
203
+ "required": ["name"]
204
+ },
205
+ "minItems": 1,
206
+ "uniqueItems": true
207
+ },
208
+ "contributors": {
209
+ "type": "array",
210
+ "items": {
211
+ "type": "object",
212
+ "properties": {
213
+ "contributorType": {
214
+ "$ref": "#/definitions/contributorType"
215
+ },
216
+ "name": {
217
+ "type": "string"
218
+ },
219
+ "nameType": {
220
+ "$ref": "#/definitions/nameType"
221
+ },
222
+ "givenName": {
223
+ "type": "string"
224
+ },
225
+ "familyName": {
226
+ "type": "string"
227
+ },
228
+ "nameIdentifiers": {
229
+ "$ref": "#/definitions/nameIdentifiers"
230
+ },
231
+ "affiliations": {
232
+ "$ref": "#/definitions/affiliations"
233
+ },
234
+ "lang": {
235
+ "type": "string"
236
+ }
237
+ },
238
+ "required": ["contributorType", "name"]
239
+ },
240
+ "uniqueItems": true
241
+ },
242
+ "funding_references": {
243
+ "type": "array",
244
+ "items": {
245
+ "type": "object",
246
+ "properties": {
247
+ "funderName": {
248
+ "type": "string"
249
+ },
250
+ "funderIdentifier": {
251
+ "type": "string"
252
+ },
253
+ "funderIdentifierType": {
254
+ "$ref": "#/definitions/funderIdentifierType"
255
+ },
256
+ "awardNumber": {
257
+ "type": "string"
258
+ },
259
+ "awardURI": {
260
+ "type": "string",
261
+ "format": "uri"
262
+ },
263
+ "awardTitle": {
264
+ "type": "string"
265
+ }
266
+ },
267
+ "required": ["funderName"]
268
+ },
269
+ "uniqueItems": true
270
+ },
271
+ "publisher": {
272
+ "$ref": "#/definitions/noEmptyString"
273
+ },
274
+ "publication_year": {
275
+ "$ref": "#/definitions/noEmptyString"
276
+ },
277
+ "language": {
278
+ "type": "string",
279
+ "$comment": "Primary language of the resource. Allowed values are taken from IETF BCP 47, ISO 639-1 language codes."
280
+ },
281
+ "sizes": {
282
+ "type": "array",
283
+ "items": {
284
+ "type": "string"
285
+ },
286
+ "uniqueItems": true
287
+ },
288
+ "formats": {
289
+ "type": "array",
290
+ "items": {
291
+ "type": "string"
292
+ },
293
+ "uniqueItems": true
294
+ },
295
+ "version_info": {
296
+ "type": "string"
297
+ },
298
+ "rights_list": {
299
+ "type": "array",
300
+ "items": {
301
+ "type": "object",
302
+ "properties": {
303
+ "rights": {
304
+ "type": "string"
305
+ },
306
+ "rightsURI": {
307
+ "type": "string",
308
+ "format": "uri"
309
+ },
310
+ "rightsIdentifier": {
311
+ "type": "string"
312
+ },
313
+ "rightsIdentifierScheme": {
314
+ "type": "string"
315
+ },
316
+ "schemeURI": {
317
+ "type": "string",
318
+ "format": "uri"
319
+ },
320
+ "lang": {
321
+ "type": "string"
322
+ }
323
+ }
324
+ },
325
+ "uniqueItems": true
326
+ },
327
+ "descriptions": {
328
+ "type": "array",
329
+ "items": {
330
+ "type": "object",
331
+ "properties": {
332
+ "description": {
333
+ "$ref": "#/definitions/noEmptyString"
334
+ },
335
+ "descriptionType": {
336
+ "$ref": "#/definitions/descriptionType"
337
+ },
338
+ "lang": {
339
+ "type": "string"
340
+ }
341
+ },
342
+ "required": ["description", "descriptionType"]
343
+ },
344
+ "uniqueItems": true
345
+ },
346
+ "agency": {
347
+ "type": "string",
348
+ "enum": [ "Crossref", "DataCite", "JaLC", "KISTI", "mEDRA", "OP"]
349
+ },
350
+ "schema_version": {
351
+ "type": "string",
352
+ "const": "http://datacite.org/schema/kernel-4"
353
+ },
354
+ "state": {
355
+ "type": "string",
356
+ "enum": [ "draft", "findable", "registered", "not_found"]
357
+ }
358
+ },
359
+ "required": [
360
+ "id",
361
+ "creators",
362
+ "titles",
363
+ "publisher",
364
+ "publication_year",
365
+ "types"
366
+ ]
367
+ }
@@ -58,6 +58,6 @@
58
58
  "description": "This tools are used to analyse the data produced by the Crosssover Experiment I designed to test Choice Architecture techniques as UI interventions in a SEEk4Science data catalogue. It contains:\n\n- Data structures for the experimental data.<br>\n- Visualisation functions<br>\n- Analysis functions\n\n## Installation\n\n- R<br>\n- python<br>\n- ipython 4\n\nClone and use.\n\n## Usage\n\n<br>\n```python<br>\nsource('parallel_plot.r')<br>\nwith(z, parallelset(trt,response, freq=count, alpha=0.2))<br>\n```\n\n<br>\n## Contributing\n\n1. Fork it!<br>\n2. Create your feature branch: `git checkout -b my-new-feature`<br>\n3. Commit your changes: `git commit -am 'Add some feature'`<br>\n4. Push to the branch: `git push origin my-new-feature`<br>\n5. Submit a pull request :D\n\n<br>\n## License\n\nThis work supports my PhD Thesis at University of Manchester."
59
59
  }],
60
60
  "schema_version": "http://datacite.org/schema/kernel-4",
61
- "agency": "datacite",
61
+ "agency": "DataCite",
62
62
  "state": "findable"
63
63
  }
@@ -79,5 +79,5 @@
79
79
  "description": "Eating your own dog food is a slang term to describe that an organization should itself use the products and services it provides. For DataCite this means that we should use DOIs with appropriate metadata and strategies for long-term preservation for..."
80
80
  }],
81
81
  "schemaVersion": "http://datacite.org/schema/kernel-4",
82
- "agency": "datacite"
82
+ "agency": "DataCite"
83
83
  }
@@ -17,5 +17,5 @@
17
17
  "publisher": "KNB Data Repository",
18
18
  "publication-year": "2016",
19
19
  "schema-version": "http://datacite.org/schema/kernel-3",
20
- "agency": "datacite"
20
+ "agency": "DataCite"
21
21
  }
@@ -68,7 +68,7 @@
68
68
  "schemaVersion": "http://datacite.org/schema/kernel-4",
69
69
  "providerId": "cern",
70
70
  "clientId": "cern.zenodo",
71
- "agency": "datacite",
71
+ "agency": "DataCite",
72
72
  "state": "findable"
73
73
  }
74
74
 
@@ -0,0 +1,105 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://doi.org/ra/10.1371
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Mozilla/5.0 (compatible; Maremma/4.9.9; mailto:info@front-matter.io)
12
+ Accept:
13
+ - text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
14
+ Accept-Encoding:
15
+ - gzip,deflate
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Wed, 23 Nov 2022 15:36:55 GMT
23
+ Content-Type:
24
+ - application/json;charset=UTF-8
25
+ Connection:
26
+ - keep-alive
27
+ Permissions-Policy:
28
+ - interest-cohort=(),browsing-topics=()
29
+ Content-Encoding:
30
+ - gzip
31
+ Cf-Cache-Status:
32
+ - DYNAMIC
33
+ Report-To:
34
+ - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=pW2Rci9kcFvLvpKnUQNEYCx%2Fa%2Bd%2B3xaolNj89vj9WL3%2FEpnSbPfnDwsL716zPkDpJ2b6gbTuj%2BjPahlSuzsQtj%2FWktyqlLO1KW84Ols70l3zSI%2FsusAEyB%2BBQ7OdCK4Sibm7%2BvY%3D"}],"group":"cf-nel","max_age":604800}'
35
+ Nel:
36
+ - '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
37
+ Strict-Transport-Security:
38
+ - max-age=31536000; includeSubDomains; preload
39
+ Server:
40
+ - cloudflare
41
+ Cf-Ray:
42
+ - 76eafbb279b2fa30-AMS
43
+ Alt-Svc:
44
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
45
+ body:
46
+ encoding: ASCII-8BIT
47
+ string: !binary |-
48
+ H4sIAAAAAAAAA4vmUlCoBmIFBSUXf08lKwUlQwM9Q2NzQyUdiGiQI0jQuSi/uLgoNU0JKFjLFQsAfpIZsjYAAAA=
49
+ http_version:
50
+ recorded_at: Wed, 23 Nov 2022 15:36:55 GMT
51
+ - request:
52
+ method: get
53
+ uri: https://api.crossref.org/works/10.1371/xxx/transform/application/vnd.crossref.unixsd+xml
54
+ body:
55
+ encoding: US-ASCII
56
+ string: ''
57
+ headers:
58
+ User-Agent:
59
+ - Mozilla/5.0 (compatible; Maremma/4.9.9; mailto:info@front-matter.io)
60
+ Accept:
61
+ - text/xml;charset=utf-8
62
+ Accept-Encoding:
63
+ - gzip,deflate
64
+ response:
65
+ status:
66
+ code: 404
67
+ message: Not Found
68
+ headers:
69
+ Date:
70
+ - Wed, 23 Nov 2022 15:36:56 GMT
71
+ Content-Type:
72
+ - text/plain;charset=utf-8
73
+ Set-Cookie:
74
+ - AWSALB=fgolOntpvptfUSWwgVtdcZuqoAXyqywffb3/prJUNszVTqIEZzP8H5Px3Pw8FqVU86WtTyvC54B6PUTSnD45xuicq+jAN8SwbaAhlhFqshxOtTjCdz4drG6U7jzo;
75
+ Expires=Wed, 30 Nov 2022 15:36:56 GMT; Path=/, AWSALBCORS=fgolOntpvptfUSWwgVtdcZuqoAXyqywffb3/prJUNszVTqIEZzP8H5Px3Pw8FqVU86WtTyvC54B6PUTSnD45xuicq+jAN8SwbaAhlhFqshxOtTjCdz4drG6U7jzo;
76
+ Expires=Wed, 30 Nov 2022 15:36:56 GMT; Path=/; SameSite=None
77
+ Access-Control-Expose-Headers:
78
+ - Link
79
+ Access-Control-Allow-Headers:
80
+ - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language,
81
+ Accept-Ranges, Cache-Control
82
+ Access-Control-Allow-Origin:
83
+ - "*"
84
+ Server:
85
+ - Jetty(9.4.40.v20210413)
86
+ X-Ratelimit-Limit:
87
+ - '50'
88
+ X-Ratelimit-Interval:
89
+ - 1s
90
+ X-Api-Pool:
91
+ - polite
92
+ X-Rate-Limit-Limit:
93
+ - '50'
94
+ X-Rate-Limit-Interval:
95
+ - 1s
96
+ Permissions-Policy:
97
+ - interest-cohort=()
98
+ Connection:
99
+ - close
100
+ body:
101
+ encoding: ASCII-8BIT
102
+ string: Resource not found.
103
+ http_version:
104
+ recorded_at: Wed, 23 Nov 2022 15:36:56 GMT
105
+ recorded_with: VCR 3.0.3