Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test and fix willow_sword functionality #1014

Open
10 tasks done
kirkkwang opened this issue Apr 17, 2024 · 34 comments
Open
10 tasks done

Test and fix willow_sword functionality #1014

kirkkwang opened this issue Apr 17, 2024 · 34 comments

Comments

@kirkkwang
Copy link
Contributor

kirkkwang commented Apr 17, 2024

Story

files_for_testing_willow_sword.zip

The willow_sword gem should offer CRU (no D) functionalities for works and file_sets. Here is a list of verbs and routes

                            willow_sword          /sword                                                                                            WillowSword::Engine
                     root GET   /                                                                  willow_sword/service_documents#show {:format=>:xml}
         service_document GET   /service_document(.:format)                                        willow_sword/service_documents#show {:format=>:xml}
collection_work_file_sets POST  /collections/:collection_id/works/:work_id/file_sets(.:format)     willow_sword/file_sets#create {:format=>:xml}
 collection_work_file_set GET   /collections/:collection_id/works/:work_id/file_sets/:id(.:format) willow_sword/file_sets#show {:format=>:xml}
                          PATCH /collections/:collection_id/works/:work_id/file_sets/:id(.:format) willow_sword/file_sets#update {:format=>:xml}
                          PUT   /collections/:collection_id/works/:work_id/file_sets/:id(.:format) willow_sword/file_sets#update {:format=>:xml}
         collection_works POST  /collections/:collection_id/works(.:format)                        willow_sword/works#create {:format=>:xml}
          collection_work GET   /collections/:collection_id/works/:id(.:format)                    willow_sword/works#show {:format=>:xml}
                          PATCH /collections/:collection_id/works/:id(.:format)                    willow_sword/works#update {:format=>:xml}
                          PUT   /collections/:collection_id/works/:id(.:format)                    willow_sword/works#update {:format=>:xml}
               collection GET   /collections/:id(.:format)                                         willow_sword/collections#show {:format=>:xml}

Acceptance Criteria

Make sure all requests succeed:

  • GET /service_document(.:format)

Collections

  • GET /collections/:id(.:format)

Works

  • GET /collections/:collection_id/works/:id(.:format)
  • PATCH /collections/:collection_id/works/:id(.:format)
  • PUT /collections/:collection_id/works/:id(.:format)
  • POST /collections/:collection_id/works(.:format)

File Sets

  • GET /collections/:collection_id/works/:work_id/file_sets/:id(.:format)
  • PATCH /collections/:collection_id/works/:work_id/file_sets/:id(.:format)
  • PUT /collections/:collection_id/works/:work_id/file_sets/:id(.:format)
  • POST /collections/:collection_id/works/:work_id/file_sets(.:format)

Testing Instructions

Ref testing instruction section for HYKU but update the urls in the requests. Pals staging base url is: palni-palci-staging.notch8.cloud

DOCS:

Notes

I think using either a cURL command or something like Postman to hit these end points would work. The response should all be in xml format.

@ShanaLMoore
Copy link
Contributor

ShanaLMoore commented Apr 30, 2024

QA Results: PASS ✅

https://demo.hyku-demo.notch8.cloud/sword/

image

1. Get service document ✅

curl --request GET \
  --url https://demo.hyku-demo.notch8.cloud/sword/service_document \
  --header 'Content-Type: application/xml'
<service xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:sword="http://purl.org/net/sword/terms/" xmlns="http://www.w3.org/2007/app">
  <sword:version>2.0</sword:version>
  <workspace collections="2">
    <atom:title>Hyrax Sword V2 server</atom:title>
    <collection href="https://demo.hyku-demo.notch8.cloud/sword/collections/87d777f1-1081-43ff-96b6-3f61499531ee">
      <atom:title>Collections Test</atom:title>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract></dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
    <collection href="https://demo.hyku-demo.notch8.cloud/sword/collections/91c86738-5b1e-44aa-b739-4234606b6aac">
      <atom:title>Subcollection test</atom:title>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract></dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
  </workspace>
</service>

Get a WORK

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <title>Shana's dogs</title>
    <content rel="src" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/a4b6eb39-3530-4a76-a35a-2e7415d2b91e"/>
    <link rel="edit" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/a4b6eb39-3530-4a76-a35a-2e7415d2b91e/file_sets"/>
    <entry>
        <content rel="src" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/a4b6eb39-3530-4a76-a35a-2e7415d2b91e/file_sets/a83376c6-9178-4aae-b434-2ee6aafe3784"/>
        <link rel="edit" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/a4b6eb39-3530-4a76-a35a-2e7415d2b91e/file_sets/a83376c6-9178-4aae-b434-2ee6aafe3784"/>
    </entry>
    <entry>
        <content rel="src" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/a4b6eb39-3530-4a76-a35a-2e7415d2b91e/file_sets/85a6d42f-1a14-430a-8976-e536c1f35e1f"/>
        <link rel="edit" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/a4b6eb39-3530-4a76-a35a-2e7415d2b91e/file_sets/85a6d42f-1a14-430a-8976-e536c1f35e1f"/>
    </entry>
    <dc:title>Shana's dogs</dc:title>
    <dc:creator>0~shana</dc:creator>
</feed>

2. Get collection

curl --request GET \
  --url https://demo.hyku-demo.notch8.cloud/sword/collections/32c331c3-862a-407a-b56a-17d02c315f95 \
  --header 'Content-Type: application/xml
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Collections Test</title>
  <link rel="edit" href="https://demo.hyku-demo.notch8.cloud/sword/collections/87d777f1-1081-43ff-96b6-3f61499531ee/works"/>
  <entry>
    <content rel="src" href="https://demo.hyku-demo.notch8.cloud/sword/collections/87d777f1-1081-43ff-96b6-3f61499531ee/works/91c86738-5b1e-44aa-b739-4234606b6aac"/>
    <link rel="edit" href="https://demo.hyku-demo.notch8.cloud/sword/collections/87d777f1-1081-43ff-96b6-3f61499531ee/works/91c86738-5b1e-44aa-b739-4234606b6aac/file_sets"/>
  </entry>
</feed>

3. Add New work: metadata only (i. Add new work: Metadata only (binary)) created THIS RECORD

Sample file:dc.xml file

curl --request POST \
  --url https://demo.hyku-demo.notch8.cloud/sword/collections/default/works \
  --header 'Content-Disposition: attachment; filename=metadata.xml' \
  --header 'Content-Type: application/xml' \
  --header 'In-Progress: false' \
  --header 'On-Behalf-Of: [email protected]' \
  --header 'Packaging: application/atom+xml;type=entry' \
  --data-binary @dc.xml
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Test record</title>
  <content rel="src" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/"/>
  <link rel="edit" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works//file_sets"/>
</feed>

3. Add New work: metadata only (ii. Add new work: Metadata only (form-data)) created THIS RECORD

curl --request POST \
  --url https://demo.hyku-demo.notch8.cloud/sword/collections/default/works \
  --header 'In-Progress: false' \
  --header 'On-Behalf-Of: [email protected]' \
  -F metadata=@dc.xml
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Test record</title>
  <content rel="src" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/"/>
  <link rel="edit" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works//file_sets"/>
</feed>

4. Add new work: Zip file with metadata and file (i. Add new work: Zip file with metadata and file (binary)) created THIS WORK

Sample file: testPackage.zip

curl --request POST \
  --url https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/ \
  --header 'Content-Disposition: attachment; filename=testPackage.zip' \
  --header 'Content-Type: application/zip' \
  --header 'In-Progress: false' \
  --header 'On-Behalf-Of: [email protected]' \
  --header 'Packaging: http://purl.org/net/sword/package/BagIt' \
  --data-binary @testPackage.zip
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Test record</title>
  <content rel="src" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/"/>
  <link rel="edit" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works//file_sets"/>
</feed>

4. Add new work: Zip file with metadata and file (ii. Add new work: metadata and zip payload (form-data)) created THIS WORK THIS RECORD

curl --request POST \
  --url https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/ \
  --header 'In-Progress: false' \
  --header 'On-Behalf-Of: [email protected]' \
  -F payload=@testPackage2b.zip
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Test record</title>
  <content rel="src" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/"/>
  <link rel="edit" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works//file_sets"/>
</feed>

4. Add new work: Zip file with metadata and file (iii. Add new work: zip payload with file and metadata (form-data)) created THIS RECORD

curl --request POST \
  --url https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/ \
  --header 'In-Progress: false' \
  --header 'On-Behalf-Of: [email protected]' \
  -F payload=@testPackage2b.zip
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Test record</title>
  <content rel="src" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/"/>
  <link rel="edit" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works//file_sets"/>
</feed>

5. Add new work: Metadata and file in bagit zip file (i. Add new work: Metadata and file in bagit zip file (binary)) created THIS RECORD

sample file: testPackageInBagit.zip

curl --request POST \
  --url https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/ \
  --header 'Content-Disposition: attachment; filename=testPackage1InBagit.zip' \
  --header 'Content-MD5: 71b5839b60c2ab183ecf522771f48023' \
  --header 'Content-Type: application/zip' \
  --header 'Packaging: http://purl.org/net/sword/package/BagIt' \
  --data-binary @testPackageInBagit.zip
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Test record 1</title>
  <content rel="src" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/"/>
  <link rel="edit" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works//file_sets"/>
</feed>

5. Add new work: Metadata and file in bagit zip file (ii. Add new work: payload containing metadata and file in bagit zip (form-data)) created THIS WORK

curl --request POST \
  --url https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/ \
  --header 'Content-MD5: 71b5839b60c2ab183ecf522771f48023' \
  --header 'Packaging: http://purl.org/net/sword/package/BagIt' \
  -F payload=@testPackage2InBagit.zip
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Test record 1</title>
  <content rel="src" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/"/>
  <link rel="edit" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works//file_sets"/>
</feed>

6. Get work with only metadata ✅

curl --request POST \
  --url https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/ \
  --header 'Content-MD5: 71b5839b60c2ab183ecf522771f48023' \
  --header 'Packaging: http://purl.org/net/sword/package/BagIt' \
  -F payload=@testPackage2InBagit.zip
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Test record 1</title>
  <content rel="src" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/"/>
  <link rel="edit" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works//file_sets"/>
</feed>

7. Get work with file and metadata ✅

curl --request GET \
  --url https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/4e815cb6-9076-4bac-a048-4c9f89aa10a8
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>eddie baby</title>
  <content rel="src" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/4e815cb6-9076-4bac-a048-4c9f89aa10a8"/>
  <link rel="edit" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/4e815cb6-9076-4bac-a048-4c9f89aa10a8/file_sets"/>
  <entry>
    <content rel="src" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/4e815cb6-9076-4bac-a048-4c9f89aa10a8/file_sets/a9d4507b-f528-4c9c-a275-b604e4ff844a"/>
    <link rel="edit" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/4e815cb6-9076-4bac-a048-4c9f89aa10a8/file_sets/a9d4507b-f528-4c9c-a275-b604e4ff844a"/>
  </entry>
  <entry>
    <content rel="src" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/4e815cb6-9076-4bac-a048-4c9f89aa10a8/file_sets/f7658dce-ddf0-4147-84ca-9f0c3464ad51"/>
    <link rel="edit" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/4e815cb6-9076-4bac-a048-4c9f89aa10a8/file_sets/f7658dce-ddf0-4147-84ca-9f0c3464ad51"/>
  </entry>
  <dc:title>eddie baby</dc:title>
  <dc:creator>0~asd</dc:creator>
</feed>

8. Get work that doesn't exist ✅

curl --request GET \
  --url https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/5a8b69c3-0a5c-4dd8-a4ad-d0c6c7b54d1c
<sword:error xmlns:sword="http://purl.org/net/sword/" xmlns:arxiv="http://arxiv.org/schemas/atom" xmlns="http://www.w3.org/2005/Atom" href="http://purl.org/net/sword/error/ErrorBadRequest">
  <author>
    <name>Sword v2 server</name>
  </author>
  <title>ERROR</title>
  <updated>2024-05-07T15:52:47Z</updated>
  <generator uri="https://example.org/sword-app/" version="0.1">
sword@example.org  </generator>
  <summary>Server cannot find work with id 5a8b69c3-0a5c-4dd8-a4ad-d0c6c7b54d1c</summary>
  <sword:treatment>processing failed</sword:treatment>
</sword:error>

9. Get file metadata

curl --request GET \
  --url https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/a4b6eb39-3530-4a76-a35a-2e7415d2b91e/file_sets/85a6d42f-1a14-430a-8976-e536c1f35e1f`
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <title>eddie-baby.jpg</title>
    <content rel="src" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/a4b6eb39-3530-4a76-a35a-2e7415d2b91e/file_sets/85a6d42f-1a14-430a-8976-e536c1f35e1f"/>
    <link rel="edit" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/a4b6eb39-3530-4a76-a35a-2e7415d2b91e/file_sets/85a6d42f-1a14-430a-8976-e536c1f35e1f"/>
    <dc:title>eddie-baby.jpg</dc:title>
    <dc:creator>[email protected]</dc:creator>
</feed>

10. Add file to existing work (binary) updated THIS RECORD by attaching the cat_scan file ✅

curl --request POST \
  --url https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/c994b933-821e-47b5-8cb9-9fc6e3468cab/file_sets/ \
  --header 'Content-Disposition: attachment; filename=cat_scan.pdf' \
  --header 'Content-MD5: b89d04a5afefdfe3ee11a9de8b230320' \
  --header 'Content-Type: application/pdf' \
  --header 'In-Progress: false' \
  --header 'On-Behalf-Of: [email protected]' \
  --header 'Packaging: http://purl.org/net/sword/package/Binary' \
  --data-binary @cat_scan.pdf
<feed xmlns="http://www.w3.org/2005/Atom">
  <title></title>
  <content rel="src" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/c994b933-821e-47b5-8cb9-9fc6e3468cab/file_sets/b6a4235f-69d0-4ac8-a0b6-a3ba5fad295b"/>
  <link rel="edit" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/c994b933-821e-47b5-8cb9-9fc6e3468cab/file_sets/b6a4235f-69d0-4ac8-a0b6-a3ba5fad295b"/>
</feed>

11. Update file metadata (binary) updated file metadata of THIS RECORD

curl --request PUT \
  --url https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/c994b933-821e-47b5-8cb9-9fc6e3468cab/file_sets/b0ddf340-8147-41f9-985d-e8121fb3b45d \
  --header 'Content-Disposition: attachment; filename=metadata.xml' \
  --header 'Content-Type: application/xml' \
  --header 'Packaging: application/atom+xml;type=entry' \
  --data-binary @dc.xml

12. Authorizing sword requests (Currently not implemented) SKIP

13. Update work ✅

curl --request PUT \
  --url https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/c994b933-821e-47b5-8cb9-9fc6e3468cab/ \
  --header 'Content-Disposition: attachment; filename=metadata.xml' \
  --header 'Content-Type: application/xml' \
  --header 'Packaging: application/atom+xml;type=entry' \
  --data-binary @dc.xml
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Update Success</title>
  <updated>2024-05-07T15:59:14+00:00</updated>
  <atom:title>Hyrax Sword V2 server</atom:title>
  <link rel="self" href="https://demo.hyku-demo.notch8.cloud/sword/collections/default/works/c994b933-821e-47b5-8cb9-9fc6e3468cab"/>
  <entry>
    <id>c994b933-821e-47b5-8cb9-9fc6e3468cab</id>
    <title>Test record</title>
    <content type="text">
      <text>The work has been successfully updated.</text>
    </content>
    <updated>2024-05-07T15:55:19Z</updated>
  </entry>
</feed>

@ShanaLMoore
Copy link
Contributor

BLOCKED until pals has been knapsacked.

This code currently lives and was tested in Hyku.

@ShanaLMoore
Copy link
Contributor

ShanaLMoore commented May 29, 2024

Compatibility issues were discovered when tested against pals knapsack valkyrie.

scientist-softserv/palni_palci_knapsack#30

@ShanaLMoore
Copy link
Contributor

ShanaLMoore commented Jun 7, 2024

QA round 2 RESULTS: Pending

Test against Pals Knapsack Staging with an emphasis on POST requests, as that seems to be the primary focus of implementing SWORD.
Note: API key is required per #1037

POST requests

@kirkkwang should this request work? apologies in advance if I'm doing something silly again 🙇‍♀

Image

@kirkkwang
Copy link
Contributor Author

@ShanaLMoore oh i think that's my fault, i forgot about this particular ticket, i posted my findings on the Hyku ticket, but i've brought over the test files now. I'm curious if that'll work for you. I added it at the top of the issue.

@ShanaLMoore
Copy link
Contributor

ShanaLMoore commented Jun 13, 2024

cc @ShanaLMoore To continue QA. use the files from the top of the description

@ShanaLMoore
Copy link
Contributor

ShanaLMoore commented Jun 13, 2024

QA testing Round 2, Continued: PA

POST REQUESTS

works ✅

curl --request POST \
  --url https://kirk.palni-palci-staging.notch8.cloud/sword/collections/default/works/ \
  --header 'Content-Disposition: attachment; filename=metadata.xml' \
  --header 'Content-Type: application/xml' \
  --header 'In-Progress: false' \
  --header 'On-Behalf-Of: [email protected]' \
  --header 'Packaging: application/atom+xml;type=entry' \
  --header 'Api-key: 9db76aff-e5da-4f9b-890a-dfaf078801cd' \
  --data-binary @dc.xml
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Test record</title>
  <content rel="src" href="https://kirk.palni-palci-staging.notch8.cloud/sword/collections/default/works/"/>
  <link rel="edit" href="https://kirk.palni-palci-staging.notch8.cloud/sword/collections/default/works//file_sets"/>
</feed>

The above post request created this record

file sets ✅

curl --request POST \
  --url https://kirk.palni-palci-staging.notch8.cloud/sword/collections/default/works/b8a1380f-6f53-42b6-a89f-0e6ef3b07828/file_sets/ \
  --header 'Content-Disposition: attachment; filename=cat_scan.pdf' \
  --header 'Content-MD5: b89d04a5afefdfe3ee11a9de8b230320' \
  --header 'Content-Type: application/pdf' \
  --header 'In-Progress: false' \
  --header 'On-Behalf-Of: [email protected]' \
  --header 'Packaging: http://purl.org/net/sword/package/Binary' \
  --header 'Api-key: 9db76aff-e5da-4f9b-890a-dfaf078801cd' \
  --data-binary @cat_scan.pdf
<feed xmlns="http://www.w3.org/2005/Atom">
  <title></title>
  <content rel="src" href="https://kirk.palni-palci-staging.notch8.cloud/sword/collections/default/works/b8a1380f-6f53-42b6-a89f-0e6ef3b07828/file_sets/5d4946e0-8420-4691-9c16-d3a5a9a1d8df"/>
  <link rel="edit" href="https://kirk.palni-palci-staging.notch8.cloud/sword/collections/default/works/b8a1380f-6f53-42b6-a89f-0e6ef3b07828/file_sets/5d4946e0-8420-4691-9c16-d3a5a9a1d8df"/>
</feed>

The above post request attached this filesetSS ✅

@ctgraham
Copy link
Collaborator

Fetch of a malformed endpoint with the Content-Type: application/xml returns and HTML 404 rather than an XML response.

GET https://demo.palni-palci-staging.notch8.cloud/sword/collections/default/works

Returns:

<!DOCTYPE html>
<html>
...
<body>
	<!-- This file lives in public/404.html -->
	<div class="dialog">
		<div>
			<h1>The page you were looking for doesn't exist.</h1>
...

This should return a SWORD sword:error :
http://swordapp.github.io/SWORDv2-Profile/SWORDProfile.html#errordocuments

@ctgraham
Copy link
Collaborator

Question: how do the collections named in the service document relate to collections in Hyku?

The service document at https://demo.palni-palci-staging.notch8.cloud/sword/service_document describes:

        <collection href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/default">
            <atom:title>Default collection</atom:title>
            <accept>*/*</accept>
            <accept alternate="multipart-related">
*/*      </accept>
            <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
            <dcterms:abstract></dcterms:abstract>
            <sword:mediation>true</sword:mediation>
            <sword:treatment>TODO: Treatment description</sword:treatment>
            <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
            <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
            <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
        </collection>

In Hyku I see three collections, one of which I own:
image
What is the a relationship between SWORD collections and Hyku collections?

@kirkkwang
Copy link
Contributor Author

From what i see in the willow sword gem wiki, to get a collection you would need to reference the id of that collection
https://github.com/CottageLabs/willow_sword/wiki/Usage#get-collection

I don't think there's a way to get all the collections

@ctgraham
Copy link
Collaborator

ctgraham commented Jun 27, 2024

Symplectic Elements will use OAI-PMH for discovery, so OAI-PMH would be responsible to describe the works and collections.

Currently on https://demo.palni-palci-staging.notch8.cloud/catalog/oai?verb=ListSets only collection 5ff17259-9147-43dd-a0b1-ee7aebd0a2fc (Default Admin Set) is listed.

Requesting https://demo.palni-palci-staging.notch8.cloud/sword/collections/5ff17259-9147-43dd-a0b1-ee7aebd0a2fc returns a 500 internal server error.

Requesting my own admin set (Thesis and Dissertation) also returns 500: https://demo.palni-palci-staging.notch8.cloud/sword/collections/ce5dae64-ee91-4a01-81d6-7613151e5371

Requesting 51 QA (https://demo.palni-palci-staging.notch8.cloud/sword/collections/0dac7019-ef6e-4d70-bf37-7aef2f4af3ec) or SWORD Test Collection (https://demo.palni-palci-staging.notch8.cloud/sword/collections/5f220e03-069a-4fe2-ac8e-fd0d212b6883) are successful.

Requesting https://demo.palni-palci-staging.notch8.cloud/sword/collections/default returns a "Default collection" which does not appear in the H4C UI (to me).

Specific questions:

  • Are Admin Sets and Collections expected to be exposed via OAI-PMH?
  • Is SWORD restricted to Collections as opposed to Admin Sets?
  • Where is the "default" collection coming from?

@ctgraham
Copy link
Collaborator

Amending my comment above.

Elements will depend on OAI-PMH, but the SWORD v2 spec states:

The server responds with a Service Document enumerating the IRIs of a group of Collections and the capabilities of those Collections supported by the server. The content of this document can vary based on aspects of the client request, including, but not limited to, authentication credentials.

http://swordapp.github.io/SWORDv2-Profile/SWORDProfile.html#protocoloperations_retreivingservicedocument

So, the available collections must be listed with their capabilities in the service document response.

@kirkkwang
Copy link
Contributor Author

@ctgraham Thanks for the context, I'll take a look at that. Just so I'm understanding, the expected behavior is that when you hit the service document endpoint, you should get back all the collections of that tenant, is that correct?

@ctgraham
Copy link
Collaborator

The expected behavior is that when you hit the service document endpoint, you should get back all the collections of that tenant to which you have permission to deposit content.

@kirkkwang
Copy link
Contributor Author

@jillpe just the service document needs to get retested here, let's pair on that since it's been a while

@laritakr
Copy link
Contributor

laritakr commented Sep 4, 2024

QA Results: Partially Failed ❌

Should have returned 2 collections but returned the one collection twice. This is because the query service picks up collections from both Valkyrie Resources table and ActiveFedora. Collections which have been migrated appear in both places.

@collections.reject { |coll| coll.singleton_class.to_s.nil? } will remove the ActiveFedora collections from the results.

curl --request GET \
  --url https://demo.palni-palci-staging.notch8.cloud/sword/service_document \
  --header 'Content-Type: application/xml' \
  --header "Api-key: <api key>"
<service xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:sword="http://purl.org/net/sword/terms/" xmlns="http://www.w3.org/2007/app">
  <sword:version>2.0</sword:version>
  <workspace collections="3">
    <atom:title>Hyrax Sword V2 server</atom:title>
    <collection href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/a6c69859-842f-47a5-a567-ec71b235dda2">
      <atom:title>New OER Collection [creator A]</atom:title>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract></dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
    <collection href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/a474966b-f025-494d-a7a3-d1df1393f6c6">
      <atom:title>My collection</atom:title>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract></dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
    <collection href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/a6c69859-842f-47a5-a567-ec71b235dda2">
      <atom:title>New OER Collection [creator A]</atom:title>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract></dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
  </workspace>
</service>

@laritakr
Copy link
Contributor

laritakr commented Sep 5, 2024

QA Results: Passed ✅

➜ curl --request GET \GET \
  --url https://demo.palni-palci-staging.notch8.cloud/sword/service_document \
  --header 'Content-Type: application/xml' \
  --header "Api-key: <api key for user>"
<service xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:sword="http://purl.org/net/sword/terms/" xmlns="http://www.w3.org/2007/app">
  <sword:version>2.0</sword:version>
  <workspace collections="2">
    <atom:title>Hyrax Sword V2 server</atom:title>
    <collection href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/a6c69859-842f-47a5-a567-ec71b235dda2">
      <atom:title>New OER Collection [creator A]</atom:title>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract></dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
    <collection href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/a474966b-f025-494d-a7a3-d1df1393f6c6">
      <atom:title>My collection</atom:title>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract></dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
  </workspace>
</service>

@ctgraham
Copy link
Collaborator

My API key for demo.palni-palci-staging.notch8.cloud returns "Not authorized. API key not found." How do I find or generate a new one?

@ShanaLMoore
Copy link
Contributor

cc @kirkkwang ^^

@kirkkwang
Copy link
Contributor Author

kirkkwang commented Sep 23, 2024

@ctgraham I've set your api key back to the one I messaged you about ********-****-****-****-********c26c. If it is still not working please message me on Slack.

@ctgraham
Copy link
Collaborator

Is the API key bound to my user, or to some other permissions? When I fetch https://demo.palni-palci-staging.notch8.cloud/sword/collections/bc25337b-5cbe-43ac-8c27-a37224cbe288 via SWORD, I see three works:

<feed xmlns="http://www.w3.org/2005/Atom">
    <title>#77 QA</title>
    <link rel="edit" href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/bc25337b-5cbe-43ac-8c27-a37224cbe288/works"/>
    <entry>
        <content rel="src" href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/bc25337b-5cbe-43ac-8c27-a37224cbe288/works/fbc61a82-af20-4b29-bcef-aa13b8514e04"/>
        <link rel="edit" href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/bc25337b-5cbe-43ac-8c27-a37224cbe288/works/fbc61a82-af20-4b29-bcef-aa13b8514e04/file_sets"/>
    </entry>
    <entry>
        <content rel="src" href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/bc25337b-5cbe-43ac-8c27-a37224cbe288/works/70c102a1-156d-45b2-a328-f3810637c11d"/>
        <link rel="edit" href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/bc25337b-5cbe-43ac-8c27-a37224cbe288/works/70c102a1-156d-45b2-a328-f3810637c11d/file_sets"/>
    </entry>
    <entry>
        <content rel="src" href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/bc25337b-5cbe-43ac-8c27-a37224cbe288/works/a0e1a795-a41a-40e8-81e0-6565634ad174"/>
        <link rel="edit" href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/bc25337b-5cbe-43ac-8c27-a37224cbe288/works/a0e1a795-a41a-40e8-81e0-6565634ad174/file_sets"/>
    </entry>
</feed>

But if I browse through the UI to that same collection:
https://demo.palni-palci-staging.notch8.cloud/dashboard/collections/bc25337b-5cbe-43ac-8c27-a37224cbe288?locale=en
I see only one work:
https://demo.palni-palci-staging.notch8.cloud/concern/generic_works/a0e1a795-a41a-40e8-81e0-6565634ad174?locale=en
The other two works are still pending review.

@ctgraham
Copy link
Collaborator

ctgraham commented Sep 24, 2024

Admin sets appear to be excluded from consideration as collections (e.g. they are not presented in the service document). This seems odd, as the work must be submitted against a single admin set, and may optionally be a member of multiple user collections. I would have expected that the SWORD collections would present admin sets (since specification is required for deposit), and user collections would be represented by DC metadata (e.g. dc.relation or similar).

Was this an assumption inherited by the original Cottage Labs implementation, or is this a new assumption?

Also, does this mean that all deposits are forced through the Default Admin Set in the current implementation?

@kirkkwang
Copy link
Contributor Author

@ctgraham i did not see anything about admin sets in the original Cottage Labs implementation. In fact the original implementation of the Collection was to get all the collections instead of checking if the user has access. This leads me to think the default admin set is indeed the one all deposits are going to.

@ctgraham
Copy link
Collaborator

@kirkkwang , are "Admin Sets" a Hyrax thing, or a Hyku thing? That is, does Hyrax have the same concept of Admin Sets vs. User Collections, or is that a Hyku-specific implementation?

Also can you clarify the permissions expected for the API key, per #1014 (comment) ?

@kirkkwang
Copy link
Contributor Author

@ctgraham admin set in Hyku and Hyrax are the same thing. Hyku is a fully functioning application running the Hyrax gem. Hyku is basically a fully built car while Hyrax is just the engine of the car.

To your second question, it seems that the API is getting all works regardless of pending status. This seems like another new concept that was not in the original WillowSword implementation. I don't think it was checking for the workflow status of an ingested object.

@ctgraham
Copy link
Collaborator

Thanks. For the base level of with willow_sword implementation around admin sets and collections, I'll need to check with internal and external stakeholders about the impact of this.

For the API key, is the API key tied to me as a user in any way, or is the API key independent of my user?

@kirkkwang
Copy link
Contributor Author

@ctgraham oh yes, the API key is tied to your specific user account

@ctgraham
Copy link
Collaborator

@kirkkwang , within the current plugin, how is metadata mapping performed? The original documentation references DC and MODS crosswalks, with instructions to copy to override.
https://github.com/CottageLabs/willow_sword/wiki/Crosswalk-customizations

With H4C, is there facility to perform this mapping per tenant, or only at the install level?

We are particularly interested in the flexibility of this mapping, e.g.: are all core Hyku fields eligible targets? can multiple Collections be assigned? can embargos be assigned?

@kirkkwang
Copy link
Contributor Author

@ctgraham I believe we made it pretty flexible in that you just need to specify the property in the xml and it should work. That includes lease and embargo. The following is from the example file:

<?xml version="1.0" encoding="UTF-8"?>
<metadata>
  <title>Updated Test record</title>
  <creator>User, Some</creator>
  <subject>Sword</subject>
  <subject>Crosswalk</subject>
  <description>This is a test to create a test record for Hyku Commons</description>
  <publisher>Digital Nest</publisher>
  <contributor>The dublin core generator</contributor>
  <date_created>05/29/2024</date_created>
  <audience>Student</audience>
  <education_level>Community college / Lower division</education_level>
  <learning_resource_type>Activity/lab</learning_resource_type>
  <discipline>Languages - Spanish</discipline>
  <source>http://sword.digitalnest.com</source>
  <language>English</language>
  <rights_statement>http://rightsstatements.org/vocab/InC/1.0/</rights_statement>
  <resource_type>Article</resource_type>
  <keyword>Test</keyword>
  <keyword>Another</keyword>
  <visibility>lease</visibility>
  <visibility_during_lease>authenticated</visibility_during_lease>
  <lease_expiration_date>2025-05-31</lease_expiration_date>
  <visibility_after_lease>restricted</visibility_after_lease>
</metadata>

@ctgraham
Copy link
Collaborator

ctgraham commented Sep 27, 2024

@kirkkwang , to reference additional collections within the metadata, am I using the parents field name (per bulkrax), and what should be value be? For example, would I reference https://demo.palni-palci-staging.notch8.cloud/dashboard/collections/2ae0d227-d53d-4957-b72f-18ee5e55e64b?locale=en as "2ae0d227-d53d-4957-b72f-18ee5e55e64b" or "8.28 A Collection" or something else?

@kirkkwang
Copy link
Contributor Author

@ctgraham hmm that's a good question and I honestly don't remember testing that so it'll be good to check if that works. If anything it will be the id.

Just to be clear are you trying to deposit a work into a collection by using something like <parent>some-id</parent> ?

@ctgraham
Copy link
Collaborator

ctgraham commented Sep 29, 2024

Hi, @kirkkwang . Yes, a goal would be to deposit a work with multiple collection associations, e,g.:

<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<source_identifier>http://d-scholarship.pitt.edu/id/eprint/41816</source_identifier>
<model>Etd</model>
<parent>2ae0d227-d53d-4957-b72f-18ee5e55e64b</parent>
<parent>4ae02f73-8ce0-4226-8f46-2996881f7e05</parent>
<title>Kinetic Study and Development of Ligand-Accelerated Clip Reactions and Synthesis of a Tetrahydrofuran Analog of FR901464</title>
<creator>Pohorilets, Ivanna</creator>
...

@kirkkwang
Copy link
Contributor Author

@ctgraham hmm, i see what you mean, i'm not sure that the gem can do something like that actually

@kirkkwang
Copy link
Contributor Author

@ctgraham i pushed the new service document code to staging, i did this:

curl --request GET
--url https://demo.palni-palci-staging.notch8.cloud/sword/service_document
--header 'Content-Type: application/xml'
--header "Api-key: "

and was able to get back

response:
<service xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:sword="http://purl.org/net/sword/terms/" xmlns="http://www.w3.org/2007/app">
  <sword:version>2.0</sword:version>
  <workspace collections="13">
    <atom:title>Hyrax Sword V2 server</atom:title>
    <collection href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/2aae3490-c7b2-4edf-a8c6-455d30e3700e">
      <atom:title>Not mediated</atom:title>
      <type>AdminSet</type>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract></dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
    <collection href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/161320aa-144c-476c-878e-8e244cad57bc">
      <atom:title>Test Admin Set</atom:title>
      <type>AdminSet</type>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract></dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
    <collection href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/f72c0f0f-b669-408a-aa55-9ad1c15807cf">
      <atom:title>Pitt Notifications Testing</atom:title>
      <type>AdminSet</type>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract>This Admin Set will be used to test email notifications via One Step Mediated Deposit.</dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
    <collection href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/admin_set%2Fdefault">
      <atom:title>Default Admin Set</atom:title>
      <type>AdminSet</type>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract></dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
    <collection href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/32c331c3-862a-407a-b56a-17d02c315f95">
      <atom:title>cats</atom:title>
      <type>Collection</type>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract>A collection of cats</dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
    <collection href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/a6c69859-842f-47a5-a567-ec71b235dda2">
      <atom:title>New OER Collection [creator A]</atom:title>
      <type>Collection</type>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract></dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
    <collection href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/bc25337b-5cbe-43ac-8c27-a37224cbe288">
      <atom:title>#77 QA</atom:title>
      <type>Collection</type>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract></dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
    <collection href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/2ae0d227-d53d-4957-b72f-18ee5e55e64b">
      <atom:title>8.28 A Collection</atom:title>
      <type>Collection</type>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract></dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
    <collection href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/3fd79f82-ace7-498a-b214-fca1bf102dd8">
      <atom:title>Collection only</atom:title>
      <type>Collection</type>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract></dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
    <collection href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/c2316846-ffa2-4706-a78c-e10ed57d5efe">
      <atom:title>Subcollection</atom:title>
      <type>Collection</type>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract></dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
    <collection href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/4ae02f73-8ce0-4226-8f46-2996881f7e05">
      <atom:title>QA-i77</atom:title>
      <type>Collection</type>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract></dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
    <collection href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/a474966b-f025-494d-a7a3-d1df1393f6c6">
      <atom:title>My collection</atom:title>
      <type>Collection</type>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract></dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
    <collection href="https://demo.palni-palci-staging.notch8.cloud/sword/collections/237b0bf6-fd78-4d63-949d-0903ce036095">
      <atom:title>OER Collection [creator B]</atom:title>
      <type>Collection</type>
      <accept>*/*</accept>
      <accept alternate="multipart-related">
*/*      </accept>
      <sword:collectionPolicy>TODO: Collection Policy</sword:collectionPolicy>
      <dcterms:abstract></dcterms:abstract>
      <sword:mediation>true</sword:mediation>
      <sword:treatment>TODO: Treatment description</sword:treatment>
      <sword:acceptPackaging>http://purl.org/net/sword/package/SimpleZip</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/BagIt</sword:acceptPackaging>
      <sword:acceptPackaging>http://purl.org/net/sword/package/Binary</sword:acceptPackaging>
    </collection>
  </workspace>
</service>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Pitt QA
Development

No branches or pull requests

5 participants