lockss-pyclient 0.1.0.dev2__py3-none-any.whl → 0.1.0.dev3__py3-none-any.whl

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.
Files changed (93) hide show
  1. lockss/pyclient/__init__.py +8 -29
  2. lockss/pyclient/__main__.py +37 -0
  3. lockss/pyclient/_internal_common.py +395 -0
  4. lockss/pyclient/_internal_config.py +207 -0
  5. lockss/pyclient/_internal_crawler.py +251 -0
  6. lockss/pyclient/_internal_md.py +111 -0
  7. lockss/pyclient/_internal_poller.py +174 -0
  8. lockss/pyclient/_internal_rs.py +232 -0
  9. lockss/pyclient/cli.py +839 -0
  10. lockss/pyclient/config/__init__.py +15 -0
  11. lockss/pyclient/config/api/aus_api.py +14 -6
  12. lockss/pyclient/config/api/config_api.py +12 -12
  13. lockss/pyclient/config/api/utils_api.py +2 -2
  14. lockss/pyclient/config/configuration.py +1 -1
  15. lockss/pyclient/config/models/__init__.py +15 -0
  16. lockss/pyclient/config/models/access_type.py +90 -0
  17. lockss/pyclient/config/models/au_agreements.py +136 -0
  18. lockss/pyclient/config/models/au_config_page_info.py +140 -0
  19. lockss/pyclient/config/models/au_state_bean.py +942 -0
  20. lockss/pyclient/config/models/au_status.py +837 -8
  21. lockss/pyclient/config/models/au_suspect_url_versions.py +136 -0
  22. lockss/pyclient/config/models/check_substance_result.py +6 -22
  23. lockss/pyclient/config/models/dated_peer_id_set_impl.py +162 -0
  24. lockss/pyclient/config/models/hash_result.py +136 -0
  25. lockss/pyclient/config/models/page_info.py +226 -0
  26. lockss/pyclient/config/models/peer_agreement.py +188 -0
  27. lockss/pyclient/config/models/peer_agreements.py +136 -0
  28. lockss/pyclient/config/models/platform_configuration_ws_result.py +421 -8
  29. lockss/pyclient/config/models/platform_configuration_ws_result_daemon_version.py +188 -0
  30. lockss/pyclient/config/models/platform_configuration_ws_result_java_version.py +188 -0
  31. lockss/pyclient/config/models/platform_configuration_ws_result_platform.py +162 -0
  32. lockss/pyclient/config/models/substance_checker_state.py +91 -0
  33. lockss/pyclient/config/models/suspect_url_version.py +214 -0
  34. lockss/pyclient/config/swagger.yaml +2031 -0
  35. lockss/pyclient/crawler/__init__.py +1 -0
  36. lockss/pyclient/crawler/api/crawls_api.py +2 -2
  37. lockss/pyclient/crawler/configuration.py +1 -1
  38. lockss/pyclient/crawler/models/__init__.py +1 -0
  39. lockss/pyclient/crawler/models/crawl_desc.py +4 -12
  40. lockss/pyclient/crawler/models/crawl_kind_enum.py +90 -0
  41. lockss/pyclient/crawler/models/page_info.py +22 -24
  42. lockss/pyclient/crawler/swagger.yaml +1197 -0
  43. lockss/pyclient/md/configuration.py +1 -1
  44. lockss/pyclient/md/models/page_info.py +22 -24
  45. lockss/pyclient/md/swagger.yaml +583 -0
  46. lockss/pyclient/output.py +131 -0
  47. lockss/pyclient/poller/__init__.py +11 -5
  48. lockss/pyclient/poller/api/export_api.py +5 -5
  49. lockss/pyclient/poller/api/hash_api.py +3 -3
  50. lockss/pyclient/poller/api/poll_detail_api.py +42 -42
  51. lockss/pyclient/poller/api/poller_polls_api.py +18 -18
  52. lockss/pyclient/poller/api/service_api.py +2 -2
  53. lockss/pyclient/poller/api/voter_polls_api.py +18 -18
  54. lockss/pyclient/poller/configuration.py +1 -1
  55. lockss/pyclient/poller/models/__init__.py +11 -5
  56. lockss/pyclient/poller/models/export_file_type_enum.py +93 -0
  57. lockss/pyclient/poller/models/export_filename_translation_enum.py +91 -0
  58. lockss/pyclient/poller/models/page_info.py +226 -0
  59. lockss/pyclient/poller/models/poll_desc.py +3 -11
  60. lockss/pyclient/poller/models/poll_variant_enum.py +92 -0
  61. lockss/pyclient/poller/models/poller_page_info.py +140 -0
  62. lockss/pyclient/poller/models/repair_page_info.py +140 -0
  63. lockss/pyclient/poller/models/repair_type_enum.py +91 -0
  64. lockss/pyclient/poller/models/tally_type_enum.py +93 -0
  65. lockss/pyclient/poller/models/url_page_info.py +140 -0
  66. lockss/pyclient/poller/models/voter_page_info.py +140 -0
  67. lockss/pyclient/poller/models/voter_urls_enum.py +92 -0
  68. lockss/pyclient/poller/swagger.yaml +1658 -0
  69. lockss/pyclient/rs/__init__.py +6 -0
  70. lockss/pyclient/rs/api/artifacts_api.py +20 -20
  71. lockss/pyclient/rs/api/aus_api.py +5 -5
  72. lockss/pyclient/rs/api/repo_api.py +4 -4
  73. lockss/pyclient/rs/api/status_api.py +1 -1
  74. lockss/pyclient/rs/api/wayback_api.py +12 -12
  75. lockss/pyclient/rs/configuration.py +8 -1
  76. lockss/pyclient/rs/models/__init__.py +6 -0
  77. lockss/pyclient/rs/models/artifact.py +111 -81
  78. lockss/pyclient/rs/models/au_size.py +6 -0
  79. lockss/pyclient/rs/models/auid_page_info.py +2 -2
  80. lockss/pyclient/rs/models/bulk_au_op_enum.py +90 -0
  81. lockss/pyclient/rs/models/include_content_enum.py +91 -0
  82. lockss/pyclient/rs/models/page_info.py +26 -29
  83. lockss/pyclient/rs/models/pywb_match_enum.py +93 -0
  84. lockss/pyclient/rs/models/pywb_output_enum.py +90 -0
  85. lockss/pyclient/rs/models/pywb_sort_enum.py +91 -0
  86. lockss/pyclient/rs/models/storage_info.py +131 -80
  87. lockss/pyclient/rs/models/versions_enum.py +90 -0
  88. lockss/pyclient/rs/swagger.yaml +1306 -0
  89. {lockss_pyclient-0.1.0.dev2.dist-info → lockss_pyclient-0.1.0.dev3.dist-info}/METADATA +10 -3
  90. {lockss_pyclient-0.1.0.dev2.dist-info → lockss_pyclient-0.1.0.dev3.dist-info}/RECORD +93 -45
  91. {lockss_pyclient-0.1.0.dev2.dist-info → lockss_pyclient-0.1.0.dev3.dist-info}/WHEEL +1 -1
  92. lockss_pyclient-0.1.0.dev3.dist-info/entry_points.txt +3 -0
  93. {lockss_pyclient-0.1.0.dev2.dist-info → lockss_pyclient-0.1.0.dev3.dist-info/licenses}/LICENSE +0 -0
@@ -0,0 +1,1306 @@
1
+ # Copyright (c) 2000-2026, Board of Trustees of Leland Stanford Jr. University
2
+ #
3
+ # Redistribution and use in source and binary forms, with or without
4
+ # modification, are permitted provided that the following conditions are met:
5
+ #
6
+ # 1. Redistributions of source code must retain the above copyright notice,
7
+ # this list of conditions and the following disclaimer.
8
+ #
9
+ # 2. Redistributions in binary form must reproduce the above copyright notice,
10
+ # this list of conditions and the following disclaimer in the documentation
11
+ # and/or other materials provided with the distribution.
12
+ #
13
+ # 3. Neither the name of the copyright holder nor the names of its contributors
14
+ # may be used to endorse or promote products derived from this software without
15
+ # specific prior written permission.
16
+ #
17
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
+ # POSSIBILITY OF SUCH DAMAGE.
28
+
29
+ openapi: 3.0.3
30
+ info:
31
+ title: LOCKSS Repository Service REST API
32
+ description: REST API of the LOCKSS Repository Service
33
+ version: 2.0.0
34
+ contact:
35
+ name: LOCKSS Support
36
+ url: https://www.lockss.org/
37
+ email: lockss-support@lockss.org
38
+ license:
39
+ name: BSD-3-Clause
40
+ url: https://opensource.org/licenses/BSD-3-Clause
41
+ servers:
42
+ - url: "{proto}://{hostname}:{port}/"
43
+ description: LOCKSS Respository Service
44
+ variables:
45
+ proto:
46
+ description: "The protocol (default: http)."
47
+ enum:
48
+ - http
49
+ - https
50
+ default: http
51
+ hostname:
52
+ description: The service host name (or IP address).
53
+ default: localhost
54
+ port:
55
+ description: "The service port (default: 24611)."
56
+ default: 24611
57
+ security:
58
+ - basicAuth: []
59
+ tags:
60
+ - name: artifacts
61
+ description: Artifact operations
62
+ - name: aus
63
+ description: Archival unit (AU) operations
64
+ - name: repo
65
+ description: Repository operations
66
+ - name: status
67
+ description: Status operations
68
+ - name: wayback
69
+ description: Replay operations
70
+ paths:
71
+ /namespaces:
72
+ get:
73
+ tags:
74
+ - repo
75
+ summary: Get namespaces of the committed artifacts in the repository
76
+ operationId: getNamespaces
77
+ # new roles: ROLE_CONTENT_ACCESS, ROLE_AU_ADMIN
78
+ responses:
79
+ '200':
80
+ description: Status 200
81
+ content:
82
+ application/json:
83
+ schema:
84
+ type: array
85
+ items:
86
+ type: string
87
+ default:
88
+ description: The resulting error payload.
89
+ content:
90
+ application/json:
91
+ schema:
92
+ type: object
93
+ /archives:
94
+ post:
95
+ tags:
96
+ - artifacts
97
+ summary: Imports artifacts from an archive
98
+ operationId: addArtifacts
99
+ # new roles: ROLE_AU_ADMIN
100
+ parameters:
101
+ - name: namespace
102
+ in: query
103
+ description: Namespace of the artifacts
104
+ schema:
105
+ type: string
106
+ default: lockss
107
+ - name: storeDuplicate
108
+ in: query
109
+ description: 'If true, artifacts with duplicate content will be stored, otherwise suppressed'
110
+ schema:
111
+ type: boolean
112
+ default: false
113
+ - name: excludeStatusPattern
114
+ in: query
115
+ description: 'If supplied, WARC records whose HTTP response status code matches the regular expression will not be imported'
116
+ schema:
117
+ type: string
118
+ requestBody:
119
+ required: true
120
+ content:
121
+ multipart/form-data:
122
+ schema:
123
+ required:
124
+ - archive
125
+ - auid
126
+ type: object
127
+ properties:
128
+ auid:
129
+ description: Archival Unit ID (AUID) of new artifact
130
+ type: string
131
+ archive:
132
+ description: Archive data containing artifacts
133
+ type: string
134
+ format: binary
135
+ responses:
136
+ '200':
137
+ description: 'Status of artifacts imported from the archive, maybe partially. Return body is a sequence of JSON ImportStatus objects.'
138
+ content:
139
+ application/json:
140
+ schema:
141
+ type: string
142
+ format: binary
143
+ default:
144
+ description: The resulting error payload.
145
+ content:
146
+ application/json:
147
+ schema:
148
+ type: object
149
+ /artifacts:
150
+ get:
151
+ tags:
152
+ - artifacts
153
+ summary: Returns all artifacts that match a given a URL or URL prefix and/or version.
154
+ operationId: getArtifactsFromAllAus
155
+ # new roles: ROLE_CONTENT_ACCESS, ROLE_AU_ADMIN
156
+ parameters:
157
+ - name: namespace
158
+ in: query
159
+ description: Namespace of the artifacts
160
+ schema:
161
+ type: string
162
+ default: lockss
163
+ - name: url
164
+ in: query
165
+ description: The URL contained by the artifacts
166
+ schema:
167
+ type: string
168
+ - name: urlPrefix
169
+ in: query
170
+ description: The prefix to be matched by the artifact URLs
171
+ schema:
172
+ type: string
173
+ - name: versions
174
+ in: query
175
+ description: Versions of the artifacts to return
176
+ schema:
177
+ $ref: '#/components/schemas/versionsEnum'
178
+ - name: limit
179
+ in: query
180
+ description: The requested maximum number of artifacts per response
181
+ schema:
182
+ type: integer
183
+ - name: continuationToken
184
+ in: query
185
+ description: The continuation token of the next page of artifacts to be returned
186
+ schema:
187
+ type: string
188
+ responses:
189
+ '200':
190
+ description: The requested artifacts
191
+ content:
192
+ application/json:
193
+ schema:
194
+ $ref: '#/components/schemas/artifactPageInfo'
195
+ default:
196
+ description: The resulting error payload.
197
+ content:
198
+ application/json:
199
+ schema:
200
+ type: object
201
+ post:
202
+ tags:
203
+ - artifacts
204
+ summary: Create an artifact
205
+ operationId: createArtifact
206
+ # new roles: ROLE_AU_ADMIN
207
+ requestBody:
208
+ content:
209
+ multipart/form-data:
210
+ schema:
211
+ required:
212
+ - artifactProps
213
+ - payload
214
+ type: object
215
+ properties:
216
+ artifactProps:
217
+ description: Artifact properties (JSON)
218
+ type: string
219
+ payload:
220
+ description: Artifact payload data
221
+ type: string
222
+ format: binary
223
+ httpResponseHeader:
224
+ type: string
225
+ description: HTTP response status and headers (optional)
226
+ responses:
227
+ '201':
228
+ description: Artifact created
229
+ content:
230
+ application/json:
231
+ schema:
232
+ $ref: '#/components/schemas/artifact'
233
+ '302':
234
+ description: Duplicate content; artifact not created
235
+ headers:
236
+ Location:
237
+ description: Repository query URL to duplicate artifacts
238
+ schema:
239
+ type: string
240
+ content: { }
241
+ default:
242
+ description: The resulting error payload.
243
+ content:
244
+ application/json:
245
+ schema:
246
+ type: object
247
+ '/artifacts/{uuid}':
248
+ get:
249
+ tags:
250
+ - artifacts
251
+ summary: Get artifact and metadata
252
+ operationId: getArtifactDataByMultipart
253
+ # new roles: ROLE_CONTENT_ACCESS, ROLE_AU_ADMIN
254
+ parameters:
255
+ - name: namespace
256
+ in: query
257
+ description: Namespace of the artifacts
258
+ schema:
259
+ type: string
260
+ default: lockss
261
+ - name: uuid
262
+ in: path
263
+ description: Identifier of the artifact
264
+ required: true
265
+ schema:
266
+ type: string
267
+ - name: includeContent
268
+ in: query
269
+ description: Controls whether to include the artifact content part in the multipart response
270
+ schema:
271
+ $ref: '#/components/schemas/includeContentEnum'
272
+ responses:
273
+ '200':
274
+ description: "Multipart/form-data containing the following parts:
275
+ The artifact properties, HTTP status and headers if present, and the artifact's payload if requested.
276
+ See POST /artifacts for more information."
277
+ content:
278
+ multipart/form-data:
279
+ schema:
280
+ type: string
281
+ format: binary
282
+ default:
283
+ description: The resulting error payload.
284
+ content:
285
+ application/json:
286
+ schema:
287
+ type: object
288
+ put:
289
+ tags:
290
+ - artifacts
291
+ summary: Update the property of an artifact
292
+ operationId: updateArtifact
293
+ # new roles: ROLE_AU_ADMIN
294
+ parameters:
295
+ - name: namespace
296
+ in: query
297
+ description: Namespace of the artifacts
298
+ schema:
299
+ type: string
300
+ default: lockss
301
+ - name: committed
302
+ in: query
303
+ description: Committed status of the artifact
304
+ required: true
305
+ schema:
306
+ type: boolean
307
+ - name: uuid
308
+ in: path
309
+ description: Identifier of the artifact
310
+ required: true
311
+ schema:
312
+ type: string
313
+ responses:
314
+ '200':
315
+ description: Artifact updated
316
+ content:
317
+ application/json:
318
+ schema:
319
+ $ref: '#/components/schemas/artifact'
320
+ default:
321
+ description: The resulting error payload.
322
+ content:
323
+ application/json:
324
+ schema:
325
+ type: object
326
+ delete:
327
+ tags:
328
+ - artifacts
329
+ summary: Remove an artifact from the repository
330
+ operationId: deleteArtifact
331
+ # new roles: ROLE_AU_ADMIN
332
+ parameters:
333
+ - name: namespace
334
+ in: query
335
+ description: Namespace of the artifacts
336
+ schema:
337
+ type: string
338
+ default: lockss
339
+ - name: uuid
340
+ in: path
341
+ description: Identifier of the artifact
342
+ required: true
343
+ schema:
344
+ type: string
345
+ responses:
346
+ '200':
347
+ description: Successfully removed artifact
348
+ content: { }
349
+ default:
350
+ description: The resulting error payload.
351
+ content:
352
+ application/json:
353
+ schema:
354
+ type: object
355
+ /artifacts/{uuid}/payload:
356
+ get:
357
+ tags:
358
+ - artifacts
359
+ summary: Get artifact payload
360
+ operationId: getArtifactDataByPayload
361
+ # new roles: ROLE_CONTENT_ACCESS, ROLE_AU_ADMIN
362
+ parameters:
363
+ - name: namespace
364
+ in: query
365
+ description: Namespace of the artifacts
366
+ schema:
367
+ type: string
368
+ default: lockss
369
+ - name: uuid
370
+ in: path
371
+ description: Identifier of the artifact
372
+ required: true
373
+ schema:
374
+ type: string
375
+ - name: includeContent
376
+ in: query
377
+ description: Controls whether to include the artifact content part in the multipart response
378
+ schema:
379
+ $ref: '#/components/schemas/includeContentEnum'
380
+ responses:
381
+ '200':
382
+ description: Artifact's payload
383
+ content:
384
+ application/octet-stream:
385
+ schema:
386
+ type: string
387
+ format: binary
388
+ default:
389
+ description: The resulting error payload.
390
+ content:
391
+ application/json:
392
+ schema:
393
+ type: object
394
+ /artifacts/{uuid}/response:
395
+ get:
396
+ tags:
397
+ - artifacts
398
+ summary: Get artifact data as HTTP response
399
+ operationId: getArtifactDataByResponse
400
+ # new roles: ROLE_CONTENT_ACCESS, ROLE_AU_ADMIN
401
+ parameters:
402
+ - name: namespace
403
+ in: query
404
+ description: Namespace of the artifacts
405
+ schema:
406
+ type: string
407
+ default: lockss
408
+ - name: uuid
409
+ in: path
410
+ description: Identifier of the artifact
411
+ required: true
412
+ schema:
413
+ type: string
414
+ - name: includeContent
415
+ in: query
416
+ description: Controls whether to include the artifact content part in the multipart response
417
+ schema:
418
+ $ref: '#/components/schemas/includeContentEnum'
419
+ responses:
420
+ '200':
421
+ description: Artifact's payload
422
+ content:
423
+ application/http;msgtype=response:
424
+ schema:
425
+ type: string
426
+ format: binary
427
+ default:
428
+ description: The resulting error payload.
429
+ content:
430
+ application/json:
431
+ schema:
432
+ type: object
433
+ /aus:
434
+ get:
435
+ tags:
436
+ - aus
437
+ summary: Get Archival Unit IDs (AUIDs) in a namespace
438
+ description: Get a list of all Archival Unit identifiers in a namespace or a
439
+ pageful of the list defined by the continuation token and size
440
+ operationId: getAus
441
+ # new roles: ROLE_CONTENT_ACCESS, ROLE_AU_ADMIN
442
+ parameters:
443
+ - name: namespace
444
+ in: query
445
+ description: Namespace of the artifacts
446
+ schema:
447
+ type: string
448
+ default: lockss
449
+ - name: limit
450
+ in: query
451
+ description: The requested maximum number of Archival Unit identifiers per
452
+ response
453
+ schema:
454
+ type: integer
455
+ - name: continuationToken
456
+ in: query
457
+ description: The continuation token of the next page of Archival Unit identifiers
458
+ to be returned
459
+ schema:
460
+ type: string
461
+ responses:
462
+ '200':
463
+ description: The requested Archival Unit identifiers
464
+ content:
465
+ application/json:
466
+ schema:
467
+ $ref: '#/components/schemas/auidPageInfo'
468
+ default:
469
+ description: The resulting error payload.
470
+ content:
471
+ application/json:
472
+ schema:
473
+ type: object
474
+ /aus/{auid}/bulk:
475
+ post:
476
+ tags:
477
+ - aus
478
+ summary: Marks the AUID for bulk artifact transfer
479
+ operationId: handleBulkAuOp
480
+ # new roles: ROLE_AU_ADMIN
481
+ parameters:
482
+ - name: namespace
483
+ in: query
484
+ description: Namespace of the artifacts
485
+ schema:
486
+ type: string
487
+ default: lockss
488
+ - name: auid
489
+ in: path
490
+ description: Archival Unit ID
491
+ required: true
492
+ schema:
493
+ type: string
494
+ - name: op
495
+ in: query
496
+ description: Bulk AU operation
497
+ required: true
498
+ schema:
499
+ $ref: '#/components/schemas/bulkAuOpEnum'
500
+ responses:
501
+ '200':
502
+ description: Bulk operation succeeded
503
+ content: { }
504
+ default:
505
+ description: The resulting error payload.
506
+ content:
507
+ application/json:
508
+ schema:
509
+ type: object
510
+ /aus/{auid}/artifacts:
511
+ get:
512
+ tags:
513
+ - artifacts
514
+ summary: Get artifacts in an Archival Unit
515
+ description: Get a list of all artifacts in a namespace and Archival Unit or
516
+ a pageful of the list defined by the continuation token and size
517
+ operationId: getArtifacts
518
+ # new roles: ROLE_CONTENT_ACCESS, ROLE_AU_ADMIN
519
+ parameters:
520
+ - name: namespace
521
+ in: query
522
+ description: Namespace of the artifacts
523
+ schema:
524
+ type: string
525
+ default: lockss
526
+ - name: auid
527
+ in: path
528
+ description: Identifier of the Archival Unit containing the artifacts
529
+ required: true
530
+ schema:
531
+ type: string
532
+ - name: url
533
+ in: query
534
+ description: The URL contained by the artifacts
535
+ schema:
536
+ type: string
537
+ - name: urlPrefix
538
+ in: query
539
+ description: The prefix to be matched by the artifact URLs
540
+ schema:
541
+ type: string
542
+ - name: version
543
+ in: query
544
+ description: The version of the artifact
545
+ schema:
546
+ type: string
547
+ - name: includeUncommitted
548
+ in: query
549
+ description: Indication of whether uncommitted artifacts should be returned
550
+ schema:
551
+ type: boolean
552
+ - name: limit
553
+ in: query
554
+ description: The requested maximum number of artifacts per response
555
+ schema:
556
+ type: integer
557
+ - name: continuationToken
558
+ in: query
559
+ description: The continuation token of the next page of artifacts to be returned
560
+ schema:
561
+ type: string
562
+ responses:
563
+ '200':
564
+ description: The requested artifacts
565
+ content:
566
+ application/json:
567
+ schema:
568
+ $ref: '#/components/schemas/artifactPageInfo'
569
+ default:
570
+ description: The resulting error payload.
571
+ content:
572
+ application/json:
573
+ schema:
574
+ type: object
575
+ /aus/{auid}/size:
576
+ get:
577
+ tags:
578
+ - aus
579
+ summary: Get the size of Archival Unit artifacts in a namespace
580
+ operationId: getArtifactsSize
581
+ # new roles: ROLE_CONTENT_ACCESS, ROLE_AU_ADMIN
582
+ parameters:
583
+ - name: namespace
584
+ in: query
585
+ description: Namespace of the artifacts
586
+ schema:
587
+ type: string
588
+ default: lockss
589
+ - name: auid
590
+ in: path
591
+ description: Identifier of the Archival Unit containing the artifacts
592
+ required: true
593
+ schema:
594
+ type: string
595
+ responses:
596
+ '200':
597
+ description: Returns an AuSize containing the sizes of all the artifacts,
598
+ only the latest artifact version of all URLs, and the sum of the size
599
+ of all the underlying WARC files, of an AU.
600
+ content:
601
+ application/json:
602
+ schema:
603
+ $ref: '#/components/schemas/auSize'
604
+ default:
605
+ description: The resulting error payload.
606
+ content:
607
+ application/json:
608
+ schema:
609
+ type: object
610
+ /status:
611
+ get:
612
+ tags:
613
+ - status
614
+ summary: Get the status of the service
615
+ description: Get the status of the service
616
+ operationId: getStatus
617
+ # no credentials required
618
+ responses:
619
+ '200':
620
+ description: The status of the service
621
+ content:
622
+ application/json:
623
+ schema:
624
+ $ref: '#/components/schemas/apiStatus'
625
+ default:
626
+ description: The resulting error payload.
627
+ content:
628
+ application/json:
629
+ schema:
630
+ type: object
631
+ /wayback/cdx/owb/{namespace}:
632
+ get:
633
+ tags:
634
+ - wayback
635
+ summary: Get OpenWayback CDX records
636
+ description: Get the OpenWayback CDX records of a URL in a namespace
637
+ operationId: getCdxOwb
638
+ # new roles: ROLE_CONTENT_ACCESS, ROLE_AU_ADMIN
639
+ parameters:
640
+ - name: namespace
641
+ in: path
642
+ description: Namespace of the artifacts
643
+ required: true
644
+ schema:
645
+ type: string
646
+ default: lockss
647
+ - name: q
648
+ in: query
649
+ description: 'Query string. Supported fields are url, type (urlqueryprefixquery), offset and limit.'
650
+ schema:
651
+ type: string
652
+ - name: count
653
+ in: query
654
+ description: "."
655
+ schema:
656
+ type: integer
657
+ - name: start_page
658
+ in: query
659
+ description: "."
660
+ schema:
661
+ type: integer
662
+ - name: Accept
663
+ in: header
664
+ description: The Accept header
665
+ schema:
666
+ type: string
667
+ - name: Accept-Encoding
668
+ in: header
669
+ description: The Accept-Encoding header
670
+ schema:
671
+ type: string
672
+ responses:
673
+ '200':
674
+ description: The OpenWayback CDX records of the URL in the namespace
675
+ content:
676
+ application/xml:
677
+ schema:
678
+ type: string
679
+ default:
680
+ description: The resulting error payload.
681
+ content:
682
+ application/json:
683
+ schema:
684
+ type: object
685
+ /wayback/cdx/pywb/{namespace}:
686
+ get:
687
+ tags:
688
+ - wayback
689
+ summary: Get PyWayback CDX records
690
+ description: Get the PyWayback CDX records of a URL in a namespace
691
+ operationId: getCdxPywb
692
+ # new roles: ROLE_CONTENT_ACCESS, ROLE_AU_ADMIN
693
+ parameters:
694
+ - name: namespace
695
+ in: path
696
+ description: Namespace of the artifacts
697
+ required: true
698
+ schema:
699
+ type: string
700
+ default: lockss
701
+ - name: url
702
+ in: query
703
+ description: The URL for which the CDX records are requested
704
+ schema:
705
+ type: string
706
+ - name: limit
707
+ in: query
708
+ description: "."
709
+ schema:
710
+ type: integer
711
+ - name: matchType
712
+ in: query
713
+ description: Match type
714
+ schema:
715
+ $ref: '#/components/schemas/pywbMatchEnum'
716
+ - name: sort
717
+ in: query
718
+ description: Sorting behavior
719
+ schema:
720
+ $ref: '#/components/schemas/pywbSortEnum'
721
+ - name: closest
722
+ in: query
723
+ description: Timestamp for sort=closest mode
724
+ schema:
725
+ type: string
726
+ - name: output
727
+ in: query
728
+ description: Output format
729
+ schema:
730
+ $ref: '#/components/schemas/pywbOutputEnum'
731
+ - name: fl
732
+ in: query
733
+ description: Comma-separated list of fields to include in output
734
+ schema:
735
+ type: string
736
+ - name: Accept
737
+ in: header
738
+ description: The Accept header
739
+ schema:
740
+ type: string
741
+ - name: Accept-Encoding
742
+ in: header
743
+ description: The Accept-Encoding header
744
+ schema:
745
+ type: string
746
+ responses:
747
+ '200':
748
+ description: The PyWayback CDX records of the URL in the namespace
749
+ content:
750
+ text/plain:
751
+ schema:
752
+ type: string
753
+ default:
754
+ description: The resulting error payload.
755
+ content:
756
+ application/json:
757
+ schema:
758
+ type: object
759
+ /wayback/warcs/{fileName}:
760
+ get:
761
+ tags:
762
+ - wayback
763
+ summary: Get a WARC archive
764
+ description: Get the contents of a single WARC record as a WARC archive
765
+ operationId: getWarcArchive
766
+ # new roles: ROLE_CONTENT_ACCESS, ROLE_AU_ADMIN
767
+ parameters:
768
+ - name: fileName
769
+ in: path
770
+ description: Name of the WARC archive
771
+ required: true
772
+ schema:
773
+ type: string
774
+ - name: Accept
775
+ in: header
776
+ description: The Accept header
777
+ schema:
778
+ type: string
779
+ - name: Accept-Encoding
780
+ in: header
781
+ description: The Accept-Encoding header
782
+ schema:
783
+ type: string
784
+ - name: Range
785
+ in: header
786
+ description: The Range header
787
+ schema:
788
+ type: string
789
+ responses:
790
+ '200':
791
+ description: The contents of the requested WARC archive
792
+ content:
793
+ application/warc:
794
+ schema:
795
+ type: string
796
+ format: binary
797
+ default:
798
+ description: The resulting error payload.
799
+ content:
800
+ application/json:
801
+ schema:
802
+ type: object
803
+ /checksumalgorithms:
804
+ get:
805
+ tags:
806
+ - repo
807
+ summary: Get the supported checksum algorithms
808
+ description: Get a list of the names of the supported checksum algorithms
809
+ operationId: getSupportedChecksumAlgorithms
810
+ # new roles: ROLE_CAUTIOUS
811
+ responses:
812
+ '200':
813
+ description: The names of the supported checksum algorithms
814
+ content:
815
+ application/json:
816
+ schema:
817
+ type: array
818
+ items:
819
+ type: string
820
+ default:
821
+ description: The resulting error payload.
822
+ content:
823
+ application/json:
824
+ schema:
825
+ type: object
826
+ /repoinfo:
827
+ get:
828
+ tags:
829
+ - repo
830
+ summary: Get repository information
831
+ description: Get properties of the repository
832
+ operationId: getRepositoryInformation
833
+ # new roles: ROLE_AU_ADMIN
834
+ responses:
835
+ '200':
836
+ description: The repository information
837
+ content:
838
+ application/json:
839
+ schema:
840
+ $ref: '#/components/schemas/repositoryInfo'
841
+ default:
842
+ description: The resulting error payload.
843
+ content:
844
+ application/json:
845
+ schema:
846
+ type: object
847
+ /repoinfo/storage:
848
+ get:
849
+ tags:
850
+ - repo
851
+ summary: Get repository storage information
852
+ description: Get properties of the repository storage
853
+ operationId: getStorageInfo
854
+ # new roles: ROLE_AU_ADMIN
855
+ responses:
856
+ '200':
857
+ description: The repository storage information
858
+ content:
859
+ application/json:
860
+ schema:
861
+ $ref: '#/components/schemas/storageInfo'
862
+ default:
863
+ description: The resulting error payload.
864
+ content:
865
+ application/json:
866
+ schema:
867
+ type: object
868
+ components:
869
+ schemas:
870
+ apiStatus:
871
+ title: Repository API Status
872
+ description: The status information of the service
873
+ required:
874
+ - apiVersion
875
+ - ready
876
+ type: object
877
+ properties:
878
+ apiVersion:
879
+ title: API Version
880
+ description: The version of the API
881
+ type: string
882
+ componentName:
883
+ title: Component Name
884
+ description: The name of the component
885
+ type: string
886
+ componentVersion:
887
+ title: Component Version
888
+ description: The version of the component software
889
+ type: string
890
+ lockssVersion:
891
+ title: LOCKSS Version
892
+ description: The version of the LOCKSS system
893
+ type: string
894
+ ready:
895
+ title: Ready
896
+ description: The indication of whether the service is available
897
+ type: boolean
898
+ serviceName:
899
+ title: Service Name
900
+ description: The name of the service
901
+ type: string
902
+ readyTime:
903
+ title: Ready Time
904
+ description: The time the service last became ready.
905
+ type: integer
906
+ format: int64
907
+ reason:
908
+ title: Reason
909
+ description: The reason the service isn't ready.
910
+ type: string
911
+ startupStatus:
912
+ title: Startup Status
913
+ description: Enum indicating progress of plugin/AU processing at startup.
914
+ type: string
915
+ enum:
916
+ - NONE
917
+ - PLUGINS_CRAWLING
918
+ - PLUGINS_COLLECTED
919
+ - PLUGINS_LOADING
920
+ - PLUGINS_LOADED
921
+ - AUS_STARTING
922
+ - AUS_STARTED
923
+ artifact:
924
+ type: object
925
+ required:
926
+ - uuid
927
+ - namespace
928
+ - auid
929
+ - uri
930
+ - version
931
+ - committed
932
+ - storageUrl
933
+ - contentLength
934
+ - contentDigest
935
+ - collectionDate
936
+ properties:
937
+ uuid:
938
+ title: UUID
939
+ description: The artifact's UUID
940
+ type: string
941
+ nullable: false
942
+ namespace:
943
+ title: Namespace
944
+ description: The artifact's namespace
945
+ type: string
946
+ nullable: false
947
+ default: lockss
948
+ auid:
949
+ title: AUID
950
+ description: The artifact's AUID
951
+ type: string
952
+ nullable: false
953
+ uri:
954
+ title: URI
955
+ description: The artifact's URI
956
+ type: string
957
+ nullable: false
958
+ version:
959
+ title: Version
960
+ description: The artifact's version number
961
+ type: integer
962
+ nullable: false
963
+ committed:
964
+ title: Committed
965
+ description: The artifact's committed flag
966
+ type: boolean
967
+ nullable: false
968
+ storageUrl:
969
+ title: Storage URL
970
+ description: The artifact's storage URL
971
+ type: string
972
+ nullable: false
973
+ contentLength:
974
+ title: Content Length
975
+ description: The length of the artifact's content
976
+ type: integer
977
+ format: int64
978
+ nullable: false
979
+ contentDigest:
980
+ title: Content Digest
981
+ description: The digest of the artifact's content
982
+ type: string
983
+ nullable: false
984
+ collectionDate:
985
+ title: Collection Date
986
+ description: The artifact's collection date
987
+ type: integer
988
+ format: int64
989
+ nullable: false
990
+ artifactPageInfo:
991
+ required:
992
+ - artifacts
993
+ - pageInfo
994
+ type: object
995
+ properties:
996
+ artifacts:
997
+ title: Artifacts
998
+ description: The artifacts included in the page
999
+ type: array
1000
+ items:
1001
+ $ref: '#/components/schemas/artifact'
1002
+ nullable: false
1003
+ pageInfo:
1004
+ title: Page Information
1005
+ description: Information about the page
1006
+ $ref: '#/components/schemas/pageInfo'
1007
+ nullable: false
1008
+ artifactProperties:
1009
+ type: object
1010
+ properties:
1011
+ namespace:
1012
+ type: string
1013
+ default: lockss
1014
+ uuid:
1015
+ type: string
1016
+ auid:
1017
+ type: string
1018
+ uri:
1019
+ type: string
1020
+ version:
1021
+ type: integer
1022
+ contentLength:
1023
+ type: integer
1024
+ format: int64
1025
+ contentDigest:
1026
+ type: string
1027
+ collectionDate:
1028
+ type: integer
1029
+ format: int64
1030
+ storeDate:
1031
+ type: integer
1032
+ format: int64
1033
+ state:
1034
+ type: string
1035
+ auSize:
1036
+ type: object
1037
+ required:
1038
+ - totalLatestVersions
1039
+ - totalAllVersions
1040
+ - totalWarcSize
1041
+ properties:
1042
+ totalLatestVersions:
1043
+ title: Latest Versions
1044
+ description: Total content size of all latest versions
1045
+ type: integer
1046
+ format: int64
1047
+ nullable: true
1048
+ totalAllVersions:
1049
+ title: All Versions
1050
+ description: Total content size of all versions
1051
+ type: integer
1052
+ format: int64
1053
+ nullable: true
1054
+ totalWarcSize:
1055
+ title: WARC Size
1056
+ description: Total WARC file size
1057
+ type: integer
1058
+ format: int64
1059
+ nullable: true
1060
+ auidPageInfo:
1061
+ type: object
1062
+ required:
1063
+ - auids
1064
+ - pageInfo
1065
+ properties:
1066
+ auids:
1067
+ title: AUIDs
1068
+ description: The AUIDs included in the page
1069
+ type: array
1070
+ items:
1071
+ type: string
1072
+ nullable: false
1073
+ pageInfo:
1074
+ title: Page Information
1075
+ description: Information about the page
1076
+ $ref: '#/components/schemas/pageInfo'
1077
+ nullable: false
1078
+ bulkAuOpEnum:
1079
+ title: Bulk AU Operation
1080
+ description: Versions of the artifacts to return
1081
+ type: string
1082
+ enum:
1083
+ - start
1084
+ - finish
1085
+ errorResult:
1086
+ type: object
1087
+ required:
1088
+ - message
1089
+ - code
1090
+ properties:
1091
+ message:
1092
+ type: string
1093
+ code:
1094
+ type: integer
1095
+ rootCause:
1096
+ type: string
1097
+ importStatus:
1098
+ type: object
1099
+ properties:
1100
+ warcId:
1101
+ type: string
1102
+ offset:
1103
+ type: integer
1104
+ format: int64
1105
+ url:
1106
+ type: string
1107
+ artifactUuid:
1108
+ type: string
1109
+ digest:
1110
+ type: string
1111
+ version:
1112
+ type: integer
1113
+ status:
1114
+ type: string
1115
+ enum:
1116
+ - OK
1117
+ - ERROR
1118
+ - DUPLICATE
1119
+ - EXCLUDED
1120
+ statusMessage:
1121
+ type: string
1122
+ includeContentEnum:
1123
+ title: Include Content
1124
+ description: Whether to include the artifact content part in a multipart response
1125
+ type: string
1126
+ default: ALWAYS
1127
+ enum:
1128
+ - NEVER
1129
+ - IF_SMALL
1130
+ - ALWAYS
1131
+ pageInfo:
1132
+ title: Page Information
1133
+ description: The information related to pagination of content
1134
+ type: object
1135
+ required:
1136
+ - totalCount
1137
+ - itemsInPage
1138
+ - continuationToken
1139
+ - curLink
1140
+ - nextLink
1141
+ properties:
1142
+ totalCount:
1143
+ title: Total Count
1144
+ description: The total number of items
1145
+ type: integer
1146
+ format: int32
1147
+ nullable: true
1148
+ itemsInPage:
1149
+ title: Items in Page
1150
+ description: The number of items in the page
1151
+ type: integer
1152
+ format: int32
1153
+ nullable: false
1154
+ continuationToken:
1155
+ title: Continuation Token
1156
+ description: The continuation token
1157
+ type: string
1158
+ nullable: true
1159
+ curLink:
1160
+ title: Current Request
1161
+ description: The link of the current request
1162
+ type: string
1163
+ nullable: false
1164
+ nextLink:
1165
+ title: Next Request
1166
+ description: The link of the next request
1167
+ type: string
1168
+ nullable: true
1169
+ pywbMatchEnum:
1170
+ title: Match Type
1171
+ description: Match type in Pywb CDX queries
1172
+ type: string
1173
+ enum:
1174
+ - exact
1175
+ - prefix
1176
+ - host
1177
+ - domain
1178
+ - range
1179
+ pywbOutputEnum:
1180
+ title: Output Format
1181
+ description: Output format in Pywb CDX queries
1182
+ type: string
1183
+ default: cdx
1184
+ enum:
1185
+ - cdx
1186
+ - json
1187
+ pywbSortEnum:
1188
+ title: Sort
1189
+ description: Sorting behavior in Pywb CDX queries
1190
+ type: string
1191
+ enum:
1192
+ - default
1193
+ - closest
1194
+ - reverse
1195
+ streamingResponseBody:
1196
+ type: object
1197
+ repositoryInfo:
1198
+ title: Repository Information
1199
+ description: Information about the repository
1200
+ type: object
1201
+ required:
1202
+ - storeInfo
1203
+ - indexInfo
1204
+ properties:
1205
+ storeInfo:
1206
+ title: Storage Area Information
1207
+ description: Information about the repository's storage areas
1208
+ $ref: '#/components/schemas/storageInfo'
1209
+ nullable: false
1210
+ indexInfo:
1211
+ title: Artifact Index Information
1212
+ description: Information about the repository's artifact index
1213
+ $ref: '#/components/schemas/storageInfo'
1214
+ nullable: false
1215
+ repositoryStatistics:
1216
+ title: Repository Statistics
1217
+ description: Miscellaneous statistics about the repository
1218
+ $ref: '#/components/schemas/repositoryStatistics'
1219
+ nullable: true
1220
+ repositoryStatistics:
1221
+ description: "Various statistics about the repository's internal operation."
1222
+ type: object
1223
+ properties:
1224
+ timeSpentReiteratingIterators:
1225
+ description: "Time spent reiterating a new artifact iterator during continuation."
1226
+ type: integer
1227
+ format: int64
1228
+ nullable: true
1229
+ storageInfo:
1230
+ required:
1231
+ - type
1232
+ - name
1233
+ - path
1234
+ - components
1235
+ - sizeKB
1236
+ - usedKB
1237
+ - availKB
1238
+ - percentUsed
1239
+ - percentUsedString
1240
+ description: Information about a repository storage area
1241
+ type: object
1242
+ properties:
1243
+ type:
1244
+ title: Type
1245
+ description: Type of the storage area
1246
+ type: string
1247
+ nullable: false
1248
+ name:
1249
+ title: Name
1250
+ description: Name of the storage area
1251
+ type: string
1252
+ nullable: false
1253
+ path:
1254
+ title: Path
1255
+ description: Path, if applicable
1256
+ type: string
1257
+ nullable: true
1258
+ components:
1259
+ title: Components
1260
+ description: Storage areas that comprise this one
1261
+ type: array
1262
+ items:
1263
+ $ref: '#/components/schemas/storageInfo'
1264
+ nullable: true
1265
+ sizeKB:
1266
+ title: Size (KB)
1267
+ description: Size of the storage area (in KB)
1268
+ type: integer
1269
+ format: int64
1270
+ nullable: true
1271
+ usedKB:
1272
+ title: Used (KB)
1273
+ description: Size of the used storage area (in KB)
1274
+ type: integer
1275
+ format: int64
1276
+ nullable: true
1277
+ availKB:
1278
+ title: Available (KB)
1279
+ description: Size of the available storage area (in KB)
1280
+ type: integer
1281
+ format: int64
1282
+ nullable: true
1283
+ percentUsed:
1284
+ title: Percentage Used
1285
+ description: Percentage of the storage area used
1286
+ type: number
1287
+ format: double
1288
+ nullable: true
1289
+ percentUsedString:
1290
+ title: Used (%)
1291
+ description: Percentage of the storage area used, formatted as a string
1292
+ type: string
1293
+ nullable: true
1294
+ versionsEnum:
1295
+ title: Versions
1296
+ description: Versions of the artifacts to return
1297
+ type: string
1298
+ default: latest
1299
+ enum:
1300
+ - all
1301
+ - latest
1302
+ securitySchemes:
1303
+ basicAuth:
1304
+ type: http
1305
+ description: HTTP Basic Authentication. Works over HTTP and HTTPS.
1306
+ scheme: basic