diff --git a/.coveragerc b/.coveragerc
new file mode 100644
index 0000000..b03dbfc
--- /dev/null
+++ b/.coveragerc
@@ -0,0 +1,6 @@
+[report]
+show_missing = True
+omit =
+ */settings.py
+ */config.py
+ */__init__.py
diff --git a/.gitignore b/.gitignore
index 44b77a7..c5888d3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,9 @@
*.DS_Store
.archivessnake.yml
*.pickle
-*/config.py
+*.env*
+.coverage
+
### Django ###
*.log
@@ -11,3 +13,4 @@ __pycache__/
local_settings.py
db.sqlite3
media
+static/
diff --git a/.travis.yml b/.travis.yml
index 0ba142b..db92b8c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -10,19 +10,12 @@ before_install:
- curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose
- chmod +x docker-compose
- sudo mv docker-compose /usr/local/bin
- - cp request_broker/config.py.example request_broker/config.py
+ - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
- docker-compose up -d
- sleep 20s
- - docker-compose exec request-broker-web pip install coverage pre-commit
+ - docker-compose exec request-broker-web pip install pre-commit
- docker-compose exec request-broker-web pre-commit install
install: true
-before_script:
- - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
- - chmod +x ./cc-test-reporter
- - ./cc-test-reporter before-build
script:
- docker-compose exec request-broker-web pre-commit run --all-files --show-diff-on-failure
- - docker-compose exec request-broker-web coverage run manage.py test
-after_script:
- - docker-compose exec request-broker-web coverage xml
- - ./cc-test-reporter after-build --debug --exit-code $TRAVIS_TEST_RESULT
+ - docker-compose exec request-broker-web python manage.py test
diff --git a/Dockerfile b/Dockerfile
index a0d685a..9ff0337 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,8 +1,26 @@
-FROM python:3.6
+FROM python:3.7-buster
ENV PYTHONUNBUFFERED 1
-RUN mkdir /code
+RUN apt-get update \
+ && apt-get install -y \
+ postgresql \
+ netcat \
+ apache2 \
+ apache2-dev \
+ libapache2-mod-wsgi-py3 \
+ && rm -rf /var/lib/apt/lists/*
+
+RUN a2dissite 000-default
+
+COPY apache/django.conf /etc/apache2/sites-available/request-broker.conf
+RUN a2ensite request-broker.conf
+
WORKDIR /code
ADD requirements.txt /code/
-RUN pip install --upgrade pip && pip install -r requirements.txt
+RUN pip install --upgrade pip && pip install --no-cache-dir -r requirements.txt
+
+EXPOSE 8000
+
ADD . /code/
+
+ENTRYPOINT ["/code/entrypoint.sh"]
diff --git a/README.md b/README.md
index 23e2462..810db37 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,8 @@
# Request Broker
-An application to process retrieval and duplication requests from our discovery system, and route relevant item data to our retrieval management system and back to researchers.
+An application that accepts requests with lists of ArchivesSpace URIs from users of our discovery system. For each item, the application fetches data from ArchivesSpace, formats that data for delivery to our retrieval management system (Aeon) to enable reading room or duplication requests, or formats the data for email delivery or CSV download. It routes formatted data to the retrieval system or to an email for researcher use. This is a passthrough service; users cannot create requests directly in the application.
+
+The request broker is part of [Project Electron](https://github.com/RockefellerArchiveCenter/project_electron), an initiative to build sustainable, open and user-centered infrastructure for the archival management of digital records at the [Rockefeller Archive Center](http://rockarch.org/).
## Setup
@@ -26,13 +28,36 @@ Or, if you want to remove all data
## Services
+* Request Pre-Processing: Iterates over a list of request URIs, fetches corresponding data from ArchivesSpace, parses the data and marks it as submittable or unsubmittable.
+* Mailer: correctly formats the body of an email message and sends an email to an address or list of addresses.
+* Aeon Request Submission: creates retrieval and duplication transactions in Aeon by sending data to the Aeon API.
+* CSV Download: formats parsed ArchivesSpace data into rows and columns for CSV download.
+
### Routes
+| Method | URL | Parameters | Response | Behavior |
+|--------|-----|---|---|---|
+|POST|/api/deliver-request/email| |200|Delivers email messages containing data|
+|POST|/api/process-request/parse| |200|Parses requests into a submittable and unsubmittable list|
+|POST|/api/process-request/email| |200|Processes data in preparation for sending an email|
+|POST|/api/download-csv/| |200|Downloads a CSV file of items|
+
+### Authorization
+
+This application uses the [Django REST Framework API Key](https://florimondmanca.github.io/djangorestframework-api-key/) library to limit which external applications are able to use its endpoints. All requests must include a `X-Request-Broker-Key` header key with the value of a valid API Key.
+
+API Keys can be be generated in the Django shell:
+```
+>>> from rest_framework_api_key.models import APIKey
+>>> api_key, key = APIKey.objects.create_key(name="remote-service")
+```
+
+For further details on usage, look at Request Broker's tests or [Django REST Framework API Key documentation](https://florimondmanca.github.io/djangorestframework-api-key/).
+
## Requirements
Using this repo requires having [Docker](https://store.docker.com/search?type=edition&offering=community) installed.
-
## License
Code is released under an MIT License, as all your code should be. See [LICENSE](LICENSE) for details.
diff --git a/apache/django.conf b/apache/django.conf
new file mode 100644
index 0000000..b8b3c76
--- /dev/null
+++ b/apache/django.conf
@@ -0,0 +1,23 @@
+Listen 8000
+ServerName localhost
+
+
+
+ WSGIScriptAlias / /code/request_broker/wsgi.py process-group=request-broker
+ WSGIDaemonProcess request-broker home=/code
+
+ Alias /static /code/static
+
+
+ Options Includes FollowSymLinks MultiViews
+ Require all granted
+
+
+
+ WSGIProcessGroup request-broker
+ WSGIApplicationGroup %{GLOBAL}
+ WSGIScriptReloading On
+ Require all granted
+
+
+
diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml
new file mode 100644
index 0000000..cfdc644
--- /dev/null
+++ b/docker-compose.dev.yml
@@ -0,0 +1,10 @@
+version: '2.4'
+
+services:
+ request-broker-web:
+ image: rockarch/request_broker:development
+ command: apachectl -D FOREGROUND
+ ports:
+ - "8001:8000"
+ env_file:
+ - ./.env.dev
diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml
new file mode 100644
index 0000000..d2226bc
--- /dev/null
+++ b/docker-compose.prod.yml
@@ -0,0 +1,10 @@
+version: '2.4'
+
+services:
+ request-broker-web:
+ image: rockarch/request_broker:0.1
+ command: apachectl -D FOREGROUND
+ ports:
+ - "8001:8000"
+ env_file:
+ - ./.env.prod
diff --git a/docker-compose.yml b/docker-compose.yml
index 0d60029..373b9d2 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -5,15 +5,33 @@ services:
image: postgres:10.4
volumes:
- request_broker_dbvolume:/var/lib/postgresql/data/
+ environment:
+ - POSTGRES_USER=postgres
+ - POSTGRES_PASSWORD=postgres
+ - POSTGRES_DB=request_broker_dev
request-broker-web:
build: .
- entrypoint: /code/entrypoint.sh
+ command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- request-broker-db
+ environment:
+ - DEBUG=1
+ - SECRET_KEY=obop2gifqn6wncaha^dt!w3an-%vkj_&1a@(w-2ci0))^o%#f4
+ - DJANGO_ALLOWED_HOSTS=request-broker-web localhost 192.168.1.5
+ - SQL_ENGINE=django.db.backends.postgresql
+ - SQL_DATABASE=postgres
+ - SQL_USER=postgres
+ - SQL_PASSWORD=postgres
+ - SQL_HOST=request-broker-db
+ - SQL_PORT=5432
+ - AS_BASEURL=http://as.rockarch.org:8089/
+ - AS_USERNAME=admin
+ - AS_PASSWORD=admin
+ - AS_REPO_ID=2
volumes:
request_broker_dbvolume:
diff --git a/entrypoint.sh b/entrypoint.sh
index c08cc13..3b2ab38 100755
--- a/entrypoint.sh
+++ b/entrypoint.sh
@@ -1,9 +1,17 @@
#!/bin/bash
-# Apply database migrations
-./wait-for-it.sh db:5432 -- echo "Apply database migrations"
+echo "Waiting for PostgreSQL..."
+
+while ! nc -z $SQL_HOST $SQL_PORT; do
+ sleep 0.1
+done
+
+echo "Connected to PostgreSQL"
+
+# apply database migrations
python manage.py migrate
-#Start server
-echo "Starting server"
-python manage.py runserver 0.0.0.0:8000
+# collect static files
+python manage.py collectstatic --no-input --clear
+
+exec "$@"
diff --git a/fixtures/as_data.json b/fixtures/as_data.json
new file mode 100644
index 0000000..e91d63e
--- /dev/null
+++ b/fixtures/as_data.json
@@ -0,0 +1,19 @@
+{
+ "creators": "Ford Foundation",
+ "collection_name": "Ford Foundation records, General Correspondence",
+ "parent": "General Correspondence",
+ "dates": "1951-1960",
+ "resource_id": "FA735",
+ "containers": "Reel C-1138",
+ "preferred_instance": {
+ "barcode": "A0000000037985",
+ "container": "Reel C-1138",
+ "format": "microfilm",
+ "location": "Rockefeller Archive Center, Blue Level, Vault 106 [Cabinet: 11a, Drawer: 2]",
+ "uri": "/top_containers/3314"
+ },
+ "title": "Adler, Mortimer J.",
+ "restrictions": "closed",
+ "restrictions_text": "Closed until further notice due to personally identifying information.",
+ "uri": "/repositories/2/archival_objects/986296"
+}
diff --git a/fixtures/cassettes/aspace_request.json b/fixtures/cassettes/aspace_request.json
new file mode 100644
index 0000000..cce763d
--- /dev/null
+++ b/fixtures/cassettes/aspace_request.json
@@ -0,0 +1,164 @@
+{
+ "version": 1,
+ "interactions": [
+ {
+ "request": {
+ "method": "POST",
+ "uri": "http://as.dev.rockarch.org:8089/users/admin/login?expiring=False",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ],
+ "Content-Length": [
+ "0"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "3936"
+ ],
+ "Date": [
+ "Thu, 30 Jul 2020 21:49:34 GMT"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
+ ],
+ "Content-Type": [
+ "application/json"
+ ]
+ },
+ "body": {
+ "string": "{\"session\":\"5878dfb00428700a14937032b8adc943e3b8c9788755cf8861ba7a5d3976c5c8\",\"user\":{\"lock_version\":361713,\"username\":\"admin\",\"name\":\"Administrator\",\"is_system_user\":true,\"create_time\":\"2014-12-05T20:32:17Z\",\"system_mtime\":\"2020-07-30T21:49:35Z\",\"user_mtime\":\"2020-07-30T21:49:35Z\",\"jsonmodel_type\":\"user\",\"groups\":[],\"is_admin\":true,\"uri\":\"/users/1\",\"agent_record\":{\"ref\":\"/agents/people/1\"},\"permissions\":{\"/repositories/2\":[\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\",\"view_repository\",\"transfer_repository\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"update_classification_record\",\"delete_classification_record\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"cancel_job\",\"create_job\"],\"/repositories/1\":[\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\",\"administer_system\",\"manage_users\",\"become_user\",\"view_all_records\",\"create_repository\",\"delete_repository\",\"transfer_repository\",\"index_system\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"view_repository\",\"update_classification_record\",\"delete_classification_record\",\"mediate_edits\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"create_job\",\"cancel_job\",\"update_assessment_record\",\"delete_assessment_record\",\"manage_assessment_attributes\",\"manage_enumeration_record\"],\"_archivesspace\":[\"administer_system\",\"manage_users\",\"become_user\",\"view_all_records\",\"create_repository\",\"delete_repository\",\"transfer_repository\",\"index_system\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"view_repository\",\"update_classification_record\",\"delete_classification_record\",\"mediate_edits\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"create_job\",\"cancel_job\",\"update_assessment_record\",\"delete_assessment_record\",\"manage_assessment_attributes\",\"manage_enumeration_record\",\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\"]}}}\n"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "GET",
+ "uri": "http://as.dev.rockarch.org:8089/version",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "22"
+ ],
+ "Date": [
+ "Thu, 30 Jul 2020 21:49:35 GMT"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
+ ],
+ "X-XSS-Protection": [
+ "1; mode=block"
+ ],
+ "X-Frame-Options": [
+ "SAMEORIGIN"
+ ],
+ "Content-Type": [
+ "text/html;charset=UTF-8"
+ ]
+ },
+ "body": {
+ "string": "ArchivesSpace (v2.6.0)"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "GET",
+ "uri": "http://as.dev.rockarch.org:8089/repositories/2/archival_objects/1134638?resolve%5B%5D=ancestors&resolve%5B%5D=instances%3A%3Adigital_object&resolve%5B%5D=resource%3A%3Alinked_agents&resolve%5B%5D=top_container&resolve%5B%5D=top_container%3A%3Acontainer_locations",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "37076"
+ ],
+ "Date": [
+ "Thu, 30 Jul 2020 21:49:35 GMT"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
+ ],
+ "Content-Type": [
+ "application/json"
+ ]
+ },
+ "body": {
+ "string": "{\"lock_version\":3,\"position\":58,\"publish\":true,\"ref_id\":\"0030176739ac42ce8065c2c171bacfb5\",\"title\":\"CHUL-1a Ellis, Aller G. \\\"Siam-Medical Education: A Review of Cooperation Between the RF and the Siamese Government\\\"\",\"display_string\":\"CHUL-1a Ellis, Aller G. \\\"Siam-Medical Education: A Review of Cooperation Between the RF and the Siamese Government\\\", 1931\",\"restrictions_apply\":false,\"created_by\":\"admin\",\"last_modified_by\":\"archivematica\",\"create_time\":\"2019-01-31T18:36:21Z\",\"system_mtime\":\"2019-11-08T19:02:33Z\",\"user_mtime\":\"2019-10-09T14:57:41Z\",\"suppressed\":false,\"is_slug_auto\":false,\"level\":\"file\",\"jsonmodel_type\":\"archival_object\",\"external_ids\":[{\"external_id\":\"1205444\",\"source\":\"Archivists Toolkit Database::RESOURCE_COMPONENT\",\"created_by\":\"archivematica\",\"last_modified_by\":\"archivematica\",\"create_time\":\"2019-10-09T14:57:41Z\",\"system_mtime\":\"2019-10-09T14:57:41Z\",\"user_mtime\":\"2019-10-09T14:57:41Z\",\"jsonmodel_type\":\"external_id\"}],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[{\"lock_version\":0,\"expression\":\"1931\",\"begin\":\"1931\",\"end\":\"1931\",\"created_by\":\"archivematica\",\"last_modified_by\":\"archivematica\",\"create_time\":\"2019-10-09T14:57:41Z\",\"system_mtime\":\"2019-10-09T14:57:41Z\",\"user_mtime\":\"2019-10-09T14:57:41Z\",\"date_type\":\"inclusive\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"ancestors\":[{\"ref\":\"/repositories/2/archival_objects/1130318\",\"level\":\"subseries\",\"_resolved\":{\"lock_version\":0,\"position\":0,\"publish\":true,\"ref_id\":\"906979a1362544b29170dbc4d66cde17\",\"component_id\":\"617.A\",\"title\":\"Thailand - Medical Sciences\",\"display_string\":\"Thailand - Medical Sciences\",\"restrictions_apply\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2019-01-31T18:28:18Z\",\"system_mtime\":\"2019-11-08T19:02:33Z\",\"user_mtime\":\"2019-01-31T18:28:18Z\",\"suppressed\":false,\"is_slug_auto\":false,\"level\":\"subseries\",\"jsonmodel_type\":\"archival_object\",\"external_ids\":[{\"external_id\":\"1205437\",\"source\":\"Archivists Toolkit Database::RESOURCE_COMPONENT\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2019-01-31T18:28:18Z\",\"system_mtime\":\"2019-01-31T18:28:18Z\",\"user_mtime\":\"2019-01-31T18:28:18Z\",\"jsonmodel_type\":\"external_id\"}],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"ancestors\":[{\"ref\":\"/repositories/2/archival_objects/1129355\",\"level\":\"series\"},{\"ref\":\"/repositories/2/resources/12846\",\"level\":\"subgrp\"}],\"instances\":[],\"notes\":[{\"jsonmodel_type\":\"note_multipart\",\"subnotes\":[{\"publish\":true,\"jsonmodel_type\":\"note_text\",\"content\":\"The earliest material in this series (1915) is a survey of medical education in Siam, part of the Rockefeller Foundation's world-wide survey of medical education. Most of the series consists of grants for visiting professors to Chulanlongkorn University and the development of nursing education at Siriraj Hospital.\"}],\"type\":\"scopecontent\",\"persistent_id\":\"feaa669851fa9842020824f310bd8eec\",\"label\":\"Scope and Contents note\",\"publish\":true}],\"uri\":\"/repositories/2/archival_objects/1130318\",\"repository\":{\"ref\":\"/repositories/2\"},\"resource\":{\"ref\":\"/repositories/2/resources/12846\"},\"parent\":{\"ref\":\"/repositories/2/archival_objects/1129355\"},\"has_unpublished_ancestor\":false}},{\"ref\":\"/repositories/2/archival_objects/1129355\",\"level\":\"series\",\"_resolved\":{\"lock_version\":0,\"position\":60,\"publish\":true,\"ref_id\":\"f4674e566ac04a6ea5ba6301c3fa5b29\",\"component_id\":\"617\",\"title\":\"Thailand\",\"display_string\":\"Thailand, 1915-1952\",\"restrictions_apply\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2019-01-31T18:26:22Z\",\"system_mtime\":\"2019-11-08T19:02:33Z\",\"user_mtime\":\"2019-01-31T18:26:22Z\",\"suppressed\":false,\"is_slug_auto\":false,\"level\":\"series\",\"jsonmodel_type\":\"archival_object\",\"external_ids\":[{\"external_id\":\"1205503\",\"source\":\"Archivists Toolkit Database::RESOURCE_COMPONENT\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2019-01-31T18:26:22Z\",\"system_mtime\":\"2019-01-31T18:26:22Z\",\"user_mtime\":\"2019-01-31T18:26:22Z\",\"jsonmodel_type\":\"external_id\"}],\"subjects\":[],\"linked_events\":[],\"extents\":[{\"lock_version\":0,\"number\":\"4.8\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2019-01-31T18:26:22Z\",\"system_mtime\":\"2019-01-31T18:26:22Z\",\"user_mtime\":\"2019-01-31T18:26:22Z\",\"portion\":\"whole\",\"extent_type\":\"Cubic Feet\",\"jsonmodel_type\":\"extent\"},{\"lock_version\":0,\"number\":\"12\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2019-01-31T18:26:22Z\",\"system_mtime\":\"2019-01-31T18:26:22Z\",\"user_mtime\":\"2019-01-31T18:26:22Z\",\"portion\":\"whole\",\"extent_type\":\"__Boxes __4.8 cubic feet\",\"jsonmodel_type\":\"extent\"}],\"dates\":[{\"lock_version\":0,\"expression\":\"1915-1952\",\"begin\":\"1915\",\"end\":\"1952\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2019-01-31T18:26:22Z\",\"system_mtime\":\"2019-01-31T18:26:22Z\",\"user_mtime\":\"2019-01-31T18:26:22Z\",\"date_type\":\"inclusive\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"ancestors\":[{\"ref\":\"/repositories/2/resources/12846\",\"level\":\"subgrp\"}],\"instances\":[],\"notes\":[{\"jsonmodel_type\":\"note_multipart\",\"subnotes\":[{\"publish\":true,\"jsonmodel_type\":\"note_text\",\"content\":\"The earliest material in this series (1915) is a survey of medical education in Siam, part of the Rockefeller Foundation's world-wide survey of medical education. Most of the series consists of grants for visiting professors to Chulanlongkorn University and the development of nursing education at Siriraj Hospital.\"}],\"type\":\"scopecontent\",\"persistent_id\":\"2fa4a093ebfcb324e27fc737ea681e87\",\"label\":\"Scope and Contents note\",\"publish\":true},{\"jsonmodel_type\":\"note_multipart\",\"subnotes\":[{\"publish\":true,\"jsonmodel_type\":\"note_text\",\"content\":\"Five subseries as follows:\\n\\n 617 (no program letter; general material which does not fit into a particular program area)\\n\\n 617 A Medical sciences (research conducted in medical schools or medical research institutes, research directly applicable to the mental and physical health of human beings)\\n\\n 617 C Nursing (nursing education, public health nursing)\\n\\n 617 E Fellowships, scholarships, training awards\\n\\n 617 R Humanities and arts\"}],\"type\":\"arrangement\",\"persistent_id\":\"08cdfb8cc0a2bd0daf9d6e774a496631\",\"label\":\"Arrangement note\",\"publish\":true}],\"uri\":\"/repositories/2/archival_objects/1129355\",\"repository\":{\"ref\":\"/repositories/2\"},\"resource\":{\"ref\":\"/repositories/2/resources/12846\"},\"has_unpublished_ancestor\":false}},{\"ref\":\"/repositories/2/resources/12846\",\"level\":\"subgrp\",\"_resolved\":{\"lock_version\":9,\"title\":\"Rockefeller Foundation records, projects, SG 1.1, Series 300 Latin America - Series 833 Lebanon\",\"publish\":true,\"restrictions\":false,\"ead_id\":\"FA386b.xml\",\"finding_aid_title\":\"A Guide to the Rockefeller Foundation records, projects, SG 1.1, Series 300 Latin America - Series 833 Lebanon\",\"finding_aid_filing_title\":\"Rockefeller Foundation records, projects, SG 1.1, Series 300 Latin America - Series 833 Lebanon\",\"created_by\":\"admin\",\"last_modified_by\":\"battalb\",\"create_time\":\"2019-01-31T18:26:06Z\",\"system_mtime\":\"2019-11-08T19:02:32Z\",\"user_mtime\":\"2019-11-08T19:02:32Z\",\"suppressed\":false,\"is_slug_auto\":false,\"id_0\":\"FA386b\",\"language\":\"eng\",\"level\":\"subgrp\",\"finding_aid_description_rules\":\"Describing Archives: A Content Standard\",\"finding_aid_status\":\"under_revision\",\"jsonmodel_type\":\"resource\",\"external_ids\":[{\"external_id\":\"2217\",\"source\":\"Archivists Toolkit Database::RESOURCE\",\"created_by\":\"battalb\",\"last_modified_by\":\"battalb\",\"create_time\":\"2019-11-08T19:02:32Z\",\"system_mtime\":\"2019-11-08T19:02:32Z\",\"user_mtime\":\"2019-11-08T19:02:32Z\",\"jsonmodel_type\":\"external_id\"}],\"subjects\":[{\"ref\":\"/subjects/46178\"},{\"ref\":\"/subjects/76\"},{\"ref\":\"/subjects/331\"},{\"ref\":\"/subjects/148\"},{\"ref\":\"/subjects/75\"},{\"ref\":\"/subjects/23\"},{\"ref\":\"/subjects/101\"},{\"ref\":\"/subjects/78\"},{\"ref\":\"/subjects/160\"},{\"ref\":\"/subjects/22\"},{\"ref\":\"/subjects/275\"},{\"ref\":\"/subjects/53\"},{\"ref\":\"/subjects/134\"},{\"ref\":\"/subjects/77\"},{\"ref\":\"/subjects/42\"},{\"ref\":\"/subjects/103\"},{\"ref\":\"/subjects/95\"},{\"ref\":\"/subjects/282\"},{\"ref\":\"/subjects/607\"},{\"ref\":\"/subjects/258\"},{\"ref\":\"/subjects/17009\"},{\"ref\":\"/subjects/121\"},{\"ref\":\"/subjects/30507\"},{\"ref\":\"/subjects/600\"},{\"ref\":\"/subjects/48237\"},{\"ref\":\"/subjects/48236\"},{\"ref\":\"/subjects/48238\"}],\"linked_events\":[],\"extents\":[{\"lock_version\":0,\"number\":\"262.13\",\"created_by\":\"battalb\",\"last_modified_by\":\"battalb\",\"create_time\":\"2019-11-08T19:02:32Z\",\"system_mtime\":\"2019-11-08T19:02:32Z\",\"user_mtime\":\"2019-11-08T19:02:32Z\",\"portion\":\"whole\",\"extent_type\":\"Cubic Feet\",\"jsonmodel_type\":\"extent\"}],\"dates\":[{\"lock_version\":0,\"expression\":\"1910-2000\",\"begin\":\"1913\",\"end\":\"1942\",\"created_by\":\"battalb\",\"last_modified_by\":\"battalb\",\"create_time\":\"2019-11-08T19:02:32Z\",\"system_mtime\":\"2019-11-08T19:02:32Z\",\"user_mtime\":\"2019-11-08T19:02:32Z\",\"date_type\":\"inclusive\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[{\"role\":\"creator\",\"relator\":\"aut\",\"terms\":[],\"ref\":\"/agents/corporate_entities/4884\",\"_resolved\":{\"lock_version\":471,\"publish\":true,\"created_by\":\"battalb\",\"last_modified_by\":\"battalb\",\"create_time\":\"2015-01-14T19:15:12Z\",\"system_mtime\":\"2020-04-24T17:39:12Z\",\"user_mtime\":\"2015-01-14T19:15:12Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_corporate_entity\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\",\"source\",\"subject\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Rockefeller Foundation\",\"sort_name\":\"Rockefeller Foundation\",\"sort_name_auto_generate\":true,\"created_by\":\"battalb\",\"last_modified_by\":\"battalb\",\"create_time\":\"2015-01-14T19:15:12Z\",\"system_mtime\":\"2017-08-22T15:44:40Z\",\"user_mtime\":\"2015-01-14T19:15:12Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"naf\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/corporate_entities/4884\",\"agent_type\":\"agent_corporate_entity\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Rockefeller Foundation\",\"sort_name\":\"Rockefeller Foundation\",\"sort_name_auto_generate\":true,\"created_by\":\"battalb\",\"last_modified_by\":\"battalb\",\"create_time\":\"2015-01-14T19:15:12Z\",\"system_mtime\":\"2017-08-22T15:44:40Z\",\"user_mtime\":\"2015-01-14T19:15:12Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"naf\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]},\"title\":\"Rockefeller Foundation\"}}],\"revision_statements\":[],\"instances\":[],\"deaccessions\":[],\"related_accessions\":[],\"classifications\":[],\"notes\":[{\"jsonmodel_type\":\"note_singlepart\",\"persistent_id\":\"2d270d740d1312c35e92cd89e3fc6439\",\"type\":\"langmaterial\",\"content\":[\"English\"],\"publish\":true},{\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"89e9b015da3d02b1f70c204fd622b648\",\"label\":\"Biographical/Historical note\",\"type\":\"bioghist\",\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"The Rockefeller Foundation was established by act of the New York State Legislature approved by the Governor on May 14, 1913, \\\"to promote the well-being of mankind throughout the world.\\\" Between 1913 and 1928 the China Medical Board, the International Health Board, and the Division of Medical Education functioned as divisions of the Foundation, concentrating on the administration of programs in public health and medical education. A Division of Studies was created in 1923 to handle projects outside the medical field. These early years were experimental as the new foundation studied the methods of philanthropy and explored its relationships with other Rockefeller boards.\\n\\n Although the Rockefeller Foundation is the largest and best known philanthropy founded by the Rockefeller family, it was neither the first nor the last to be established. The Rockefeller Institute for Medical Research (1901), the General Education Board (1902), the Rockefeller Sanitary Commission for the Eradication of Hookworm Disease (1909), and the Bureau of Social Hygiene (1911) all existed earlier. When the Foundation was created, the Sanitary Commission was disbanded. After the establishment of the Foundation, the Laura Spelman Rockefeller Memorial (1918) and the International Education Board (1923) were created.\\n\\n The Rockefeller boards and their programs were reconsidered and reorganized in 1927-1928 in order to avoid overlapping programs. The International Health Board of the Foundation was disbanded and an International Health Division was organized. The China Medical Board, Inc., was established as a separately incorporated institution, and the China Medical Board of the Foundation ceased to exist. The Division of Studies was dropped and the Division of Medical Education was phased out. The Laura Spelman Rockefeller Memorial was combined with the Foundation and the Spelman Fund of New York was chartered to continue activities of the LSRM that were not absorbed by the Foundation. The International Education Board was disbanded.\\n\\n As a result of this reorganization, the Foundation adopted a program which included public health work (administered by the IHD), the advancement of knowledge in the medical and natural sciences (in part taken over from the IEB), the social sciences (formerly the field of the LSRM), and the humanities and arts (shared with the GEB). The Rockefeller Institute and the Bureau of Social Hygiene were not affected by the reorganization. The program adopted by the Foundation at this time remained basically the same for the next twenty years.\\n\\n As its files accumulated, the Foundation maintained a card index recording the names of institutional and individual grantees and correspondents. A microfilm copy of this index is available at the Archive Center.\",\"publish\":true}],\"publish\":true},{\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"bedf1e63c238677099651f6cc10ede67\",\"label\":\"Arrangement note\",\"type\":\"arrangement\",\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"The project files are arranged in series according to country. Each country or geographical area was assigned a three-digit number by RF staff. In addition, letters signifying program areas are used: for example, \\\"A\\\" indicates a grant in the Medical Sciences, and \\\"C\\\" Nursing. Material is organized within these letter/program subdivisions alphabetically by grant title. A grant title usually consists of a heading that includes the name of the institution or individual that received the grant. Thus each grant, or project, is filed individually in one or more folders.\",\"publish\":true}],\"publish\":true},{\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"688aee841558890703615f77d06a01f1\",\"label\":\"Processing Information note\",\"type\":\"processinfo\",\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"Migrated from Re:discovery to the Archivists' Toolkit by Becky Robbins in May 2010 except for Sub RG 1.3, Series 103, which was processed by Monica Blank in January, 2011.\",\"publish\":true}],\"publish\":true},{\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"8879ad144c27e5f7ac31de3bd90380ea\",\"label\":\"Preferred Citation note\",\"type\":\"prefercite\",\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"Information regarding the Rockefeller Archive Center's preferred elements and forms of citation can be found at http://www.rockarch.org/research/citations.php\",\"publish\":true}],\"publish\":true},{\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"710926656e9dd4c392de9e9eeb1a585c\",\"label\":\"File Plan note\",\"type\":\"fileplan\",\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"RG 1.1, 1.2, and part of 1.3\\n\\n Organization of the Rockefeller Foundation's archives:\\n\\n RG 1 Projects\\n\\n RG 2 General Correspondence\\n\\n RG 3 Administration, Program and Policy\\n\\n RG 4 China Medical Board\\n\\n RG 5 International Health Board/Division\\n\\n RG 6 Field Offices\\n\\n RG 7 Treasurer's Office\\n\\n RG 8 Comptroller\\n\\n RG 9 Personnel\\n\\n RG 10 Fellowships\\n\\n RG 11 Information Services\\n\\n RG 12 Diaries\\n\\n RG 13 Oral Histories\\n\\n RG 14 Counsel\\n\\n RG 15 Secretary\\n\\n RG 16 Minutes and Officers Actions\\n\\n RG 17 Dockets\\n\\n RG 18 Declinations (100F)\\n\\n RG 19 Non-textual Materials\\n\\n RG 20 Communications Office\",\"publish\":true}],\"publish\":true},{\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"2a926868ba9cf20b34f87d7cb7a3e877\",\"label\":\"Conditions Governing Access note\",\"type\":\"accessrestrict\",\"rights_restriction\":{\"local_access_restriction_type\":[]},\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"Open for research with select materials restricted as noted. Brittle or damaged items are available at the discretion of RAC. Confidential material in this record group has been segregated and is inaccessible. Each pertinent file is open to research, and physical removal of the segregated material within each file is not necessary. Researchers interested in accessing digital media (floppy disks, CDs, DVDs, etc.) or audiovisual material (audio cassettes, VHS, etc.) in this collection must use an access surrogate. The original items may not be accessed because of preservation concerns. To request an access surrogate be made, or if you are unsure if there is an access surrogate, please contact a RAC archivist.\",\"publish\":true}],\"publish\":true},{\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"170cfc7819c026738eebeebf4a8be746\",\"label\":\"Other Finding Aids note\",\"type\":\"otherfindaid\",\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"Other available finding aids describing Rockefeller Foundation records, projects include:\\n\\n FA387 Rockefeller Foundation records, projects, RG 1.2\\n\\n FA388 Rockefeller Foundation records, projects, RG 1.3\",\"publish\":true}],\"publish\":true},{\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"490c53973819206fdfb65de8636ef183\",\"label\":\"File Plan note\",\"type\":\"fileplan\",\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"RG 1.1\",\"publish\":false}],\"publish\":false},{\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"e1305511a8be266b49363cd1d8b32e2c\",\"label\":\"Scope and Contents\",\"type\":\"scopecontent\",\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"Types of records include: project files.\",\"publish\":true}],\"publish\":true}],\"uri\":\"/repositories/2/resources/12846\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/resources/12846/tree\"}}}],\"instances\":[{\"lock_version\":0,\"created_by\":\"archivematica\",\"last_modified_by\":\"archivematica\",\"create_time\":\"2019-10-09T14:57:41Z\",\"system_mtime\":\"2019-10-09T14:57:41Z\",\"user_mtime\":\"2019-10-09T14:57:41Z\",\"instance_type\":\"mixed materials\",\"jsonmodel_type\":\"instance\",\"is_representative\":false,\"sub_container\":{\"lock_version\":0,\"indicator_2\":\"60\",\"created_by\":\"archivematica\",\"last_modified_by\":\"archivematica\",\"create_time\":\"2019-10-09T14:57:41Z\",\"system_mtime\":\"2019-10-09T14:57:41Z\",\"user_mtime\":\"2019-10-09T14:57:41Z\",\"type_2\":\"folder\",\"jsonmodel_type\":\"sub_container\",\"top_container\":{\"ref\":\"/repositories/2/top_containers/53980\",\"_resolved\":{\"lock_version\":44,\"barcode\":\"A0000000024241\",\"indicator\":\"9\",\"created_by\":\"admin\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-08-13T06:11:44Z\",\"system_mtime\":\"2019-11-08T19:02:34Z\",\"user_mtime\":\"2017-12-02T05:34:34Z\",\"type\":\"box\",\"jsonmodel_type\":\"top_container\",\"active_restrictions\":[],\"container_locations\":[{\"jsonmodel_type\":\"container_location\",\"status\":\"current\",\"start_date\":\"2016-09-09\",\"system_mtime\":\"2017-12-02 05:34:34 UTC\",\"user_mtime\":\"2017-12-02 05:34:34 UTC\",\"ref\":\"/locations/9885\",\"_resolved\":{\"lock_version\":0,\"building\":\"Rockefeller Archive Center\",\"title\":\"Rockefeller Archive Center, Blue Level, Vault 102 [Unit: 13, Shelf: 4]\",\"floor\":\"Blue Level\",\"room\":\"Vault 102\",\"coordinate_1_label\":\"Unit\",\"coordinate_1_indicator\":\"13\",\"coordinate_2_label\":\"Shelf\",\"coordinate_2_indicator\":\"4\",\"created_by\":\"irvings\",\"last_modified_by\":\"irvings\",\"create_time\":\"2017-10-11T15:43:40Z\",\"system_mtime\":\"2017-12-15T22:26:27Z\",\"user_mtime\":\"2017-10-11T15:43:40Z\",\"jsonmodel_type\":\"location\",\"external_ids\":[],\"functions\":[],\"uri\":\"/locations/9885\"}}],\"series\":[{\"ref\":\"/repositories/2/archival_objects/1129355\",\"identifier\":\"617\",\"display_string\":\"Thailand, 1915-1952\",\"level_display_string\":\"Series\",\"publish\":true}],\"collection\":[{\"ref\":\"/repositories/2/resources/12846\",\"identifier\":\"FA386b\",\"display_string\":\"Rockefeller Foundation records, projects, SG 1.1, Series 300 Latin America - Series 833 Lebanon\"}],\"uri\":\"/repositories/2/top_containers/53980\",\"repository\":{\"ref\":\"/repositories/2\"},\"container_profile\":{\"ref\":\"/container_profiles/3\"},\"restricted\":false,\"is_linked_to_published_record\":true,\"display_string\":\"Box 9: Series 617 [A0000000024241]\",\"long_display_string\":\"FA386b, Series 617, Box 9 [A0000000024241], Legal Document Box\"}}}},{\"lock_version\":0,\"created_by\":\"archivematica\",\"last_modified_by\":\"archivematica\",\"create_time\":\"2019-10-09T14:57:41Z\",\"system_mtime\":\"2019-10-09T14:57:41Z\",\"user_mtime\":\"2019-10-09T14:57:41Z\",\"instance_type\":\"digital_object\",\"jsonmodel_type\":\"instance\",\"is_representative\":false,\"digital_object\":{\"ref\":\"/repositories/2/digital_objects/3210\",\"_resolved\":{\"lock_version\":2,\"digital_object_id\":\"dd940b12-8293-496e-9eca-a4f66a037edd\",\"title\":\"0030176739ac42ce8065c2c171bacfb5.pdf\",\"publish\":true,\"restrictions\":false,\"created_by\":\"archivematica\",\"last_modified_by\":\"archivematica\",\"create_time\":\"2019-10-07T18:12:10Z\",\"system_mtime\":\"2019-10-09T14:57:41Z\",\"user_mtime\":\"2019-10-07T18:12:10Z\",\"suppressed\":false,\"is_slug_auto\":false,\"jsonmodel_type\":\"digital_object\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"file_versions\":[{\"lock_version\":0,\"file_uri\":\"https://storage.rockarch.org/dd940b12-8293-496e-9eca-a4f66a037edd-0030176739ac42ce8065c2c171bacfb5.pdf\",\"publish\":true,\"file_format_version\":\"Generic PDF\",\"file_size_bytes\":20181893,\"created_by\":\"archivematica\",\"last_modified_by\":\"archivematica\",\"create_time\":\"2019-10-07T18:12:10Z\",\"system_mtime\":\"2019-10-07T18:12:10Z\",\"user_mtime\":\"2019-10-07T18:12:10Z\",\"xlink_actuate_attribute\":\"onRequest\",\"xlink_show_attribute\":\"new\",\"file_format_name\":\"pdf\",\"jsonmodel_type\":\"file_version\",\"is_representative\":false,\"identifier\":\"8319\"}],\"notes\":[{\"content\":[\"5f3bfece-aa6d-4b2c-879c-16c8fbbb7ff2\"],\"type\":\"originalsloc\",\"jsonmodel_type\":\"note_digital_object\",\"persistent_id\":\"2d02c1b30817c9b004723ae174af59d9\",\"publish\":false}],\"linked_instances\":[{\"ref\":\"/repositories/2/archival_objects/1134638\"}],\"uri\":\"/repositories/2/digital_objects/3210\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/digital_objects/3210/tree\"}}}},{\"lock_version\":0,\"created_by\":\"archivematica\",\"last_modified_by\":\"archivematica\",\"create_time\":\"2019-10-09T14:57:41Z\",\"system_mtime\":\"2019-10-09T14:57:41Z\",\"user_mtime\":\"2019-10-09T14:57:41Z\",\"instance_type\":\"digital_object\",\"jsonmodel_type\":\"instance\",\"is_representative\":false,\"digital_object\":{\"ref\":\"/repositories/2/digital_objects/3213\",\"_resolved\":{\"lock_version\":1,\"digital_object_id\":\"8650dc49-c936-4aef-b2bb-6ee8b870f566\",\"title\":\"0030176739ac42ce8065c2c171bacfb5.pdf\",\"publish\":true,\"restrictions\":false,\"created_by\":\"archivematica\",\"last_modified_by\":\"archivematica\",\"create_time\":\"2019-10-09T14:57:40Z\",\"system_mtime\":\"2019-10-09T14:57:41Z\",\"user_mtime\":\"2019-10-09T14:57:40Z\",\"suppressed\":false,\"is_slug_auto\":false,\"jsonmodel_type\":\"digital_object\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"file_versions\":[{\"lock_version\":0,\"file_uri\":\"https://storage.rockarch.org/8650dc49-c936-4aef-b2bb-6ee8b870f566-0030176739ac42ce8065c2c171bacfb5.pdf\",\"publish\":true,\"file_format_version\":\"Generic PDF\",\"file_size_bytes\":20181893,\"created_by\":\"archivematica\",\"last_modified_by\":\"archivematica\",\"create_time\":\"2019-10-09T14:57:40Z\",\"system_mtime\":\"2019-10-09T14:57:40Z\",\"user_mtime\":\"2019-10-09T14:57:40Z\",\"xlink_actuate_attribute\":\"onRequest\",\"xlink_show_attribute\":\"new\",\"file_format_name\":\"pdf\",\"jsonmodel_type\":\"file_version\",\"is_representative\":false,\"identifier\":\"8322\"}],\"notes\":[{\"content\":[\"7e273673-0814-4a17-8747-12f322e62a34\"],\"type\":\"originalsloc\",\"jsonmodel_type\":\"note_digital_object\",\"persistent_id\":\"02eda80aab65540c02af2c7ab3463de4\",\"publish\":false}],\"linked_instances\":[{\"ref\":\"/repositories/2/archival_objects/1134638\"}],\"uri\":\"/repositories/2/digital_objects/3213\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/digital_objects/3213/tree\"}}}}],\"notes\":[],\"uri\":\"/repositories/2/archival_objects/1134638\",\"repository\":{\"ref\":\"/repositories/2\"},\"resource\":{\"ref\":\"/repositories/2/resources/12846\",\"_resolved\":{\"lock_version\":9,\"title\":\"Rockefeller Foundation records, projects, SG 1.1, Series 300 Latin America - Series 833 Lebanon\",\"publish\":true,\"restrictions\":false,\"ead_id\":\"FA386b.xml\",\"finding_aid_title\":\"A Guide to the Rockefeller Foundation records, projects, SG 1.1, Series 300 Latin America - Series 833 Lebanon\",\"finding_aid_filing_title\":\"Rockefeller Foundation records, projects, SG 1.1, Series 300 Latin America - Series 833 Lebanon\",\"created_by\":\"admin\",\"last_modified_by\":\"battalb\",\"create_time\":\"2019-01-31T18:26:06Z\",\"system_mtime\":\"2019-11-08T19:02:32Z\",\"user_mtime\":\"2019-11-08T19:02:32Z\",\"suppressed\":false,\"is_slug_auto\":false,\"id_0\":\"FA386b\",\"language\":\"eng\",\"level\":\"subgrp\",\"finding_aid_description_rules\":\"Describing Archives: A Content Standard\",\"finding_aid_status\":\"under_revision\",\"jsonmodel_type\":\"resource\",\"external_ids\":[{\"external_id\":\"2217\",\"source\":\"Archivists Toolkit Database::RESOURCE\",\"created_by\":\"battalb\",\"last_modified_by\":\"battalb\",\"create_time\":\"2019-11-08T19:02:32Z\",\"system_mtime\":\"2019-11-08T19:02:32Z\",\"user_mtime\":\"2019-11-08T19:02:32Z\",\"jsonmodel_type\":\"external_id\"}],\"subjects\":[{\"ref\":\"/subjects/46178\"},{\"ref\":\"/subjects/76\"},{\"ref\":\"/subjects/331\"},{\"ref\":\"/subjects/148\"},{\"ref\":\"/subjects/75\"},{\"ref\":\"/subjects/23\"},{\"ref\":\"/subjects/101\"},{\"ref\":\"/subjects/78\"},{\"ref\":\"/subjects/160\"},{\"ref\":\"/subjects/22\"},{\"ref\":\"/subjects/275\"},{\"ref\":\"/subjects/53\"},{\"ref\":\"/subjects/134\"},{\"ref\":\"/subjects/77\"},{\"ref\":\"/subjects/42\"},{\"ref\":\"/subjects/103\"},{\"ref\":\"/subjects/95\"},{\"ref\":\"/subjects/282\"},{\"ref\":\"/subjects/607\"},{\"ref\":\"/subjects/258\"},{\"ref\":\"/subjects/17009\"},{\"ref\":\"/subjects/121\"},{\"ref\":\"/subjects/30507\"},{\"ref\":\"/subjects/600\"},{\"ref\":\"/subjects/48237\"},{\"ref\":\"/subjects/48236\"},{\"ref\":\"/subjects/48238\"}],\"linked_events\":[],\"extents\":[{\"lock_version\":0,\"number\":\"262.13\",\"created_by\":\"battalb\",\"last_modified_by\":\"battalb\",\"create_time\":\"2019-11-08T19:02:32Z\",\"system_mtime\":\"2019-11-08T19:02:32Z\",\"user_mtime\":\"2019-11-08T19:02:32Z\",\"portion\":\"whole\",\"extent_type\":\"Cubic Feet\",\"jsonmodel_type\":\"extent\"}],\"dates\":[{\"lock_version\":0,\"expression\":\"1910-2000\",\"begin\":\"1913\",\"end\":\"1942\",\"created_by\":\"battalb\",\"last_modified_by\":\"battalb\",\"create_time\":\"2019-11-08T19:02:32Z\",\"system_mtime\":\"2019-11-08T19:02:32Z\",\"user_mtime\":\"2019-11-08T19:02:32Z\",\"date_type\":\"inclusive\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[{\"role\":\"creator\",\"relator\":\"aut\",\"terms\":[],\"ref\":\"/agents/corporate_entities/4884\",\"_resolved\":{\"lock_version\":471,\"publish\":true,\"created_by\":\"battalb\",\"last_modified_by\":\"battalb\",\"create_time\":\"2015-01-14T19:15:12Z\",\"system_mtime\":\"2020-04-24T17:39:12Z\",\"user_mtime\":\"2015-01-14T19:15:12Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_corporate_entity\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\",\"source\",\"subject\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Rockefeller Foundation\",\"sort_name\":\"Rockefeller Foundation\",\"sort_name_auto_generate\":true,\"created_by\":\"battalb\",\"last_modified_by\":\"battalb\",\"create_time\":\"2015-01-14T19:15:12Z\",\"system_mtime\":\"2017-08-22T15:44:40Z\",\"user_mtime\":\"2015-01-14T19:15:12Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"naf\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/corporate_entities/4884\",\"agent_type\":\"agent_corporate_entity\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Rockefeller Foundation\",\"sort_name\":\"Rockefeller Foundation\",\"sort_name_auto_generate\":true,\"created_by\":\"battalb\",\"last_modified_by\":\"battalb\",\"create_time\":\"2015-01-14T19:15:12Z\",\"system_mtime\":\"2017-08-22T15:44:40Z\",\"user_mtime\":\"2015-01-14T19:15:12Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"naf\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]},\"title\":\"Rockefeller Foundation\"}}],\"revision_statements\":[],\"instances\":[],\"deaccessions\":[],\"related_accessions\":[],\"classifications\":[],\"notes\":[{\"jsonmodel_type\":\"note_singlepart\",\"persistent_id\":\"2d270d740d1312c35e92cd89e3fc6439\",\"type\":\"langmaterial\",\"content\":[\"English\"],\"publish\":true},{\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"89e9b015da3d02b1f70c204fd622b648\",\"label\":\"Biographical/Historical note\",\"type\":\"bioghist\",\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"The Rockefeller Foundation was established by act of the New York State Legislature approved by the Governor on May 14, 1913, \\\"to promote the well-being of mankind throughout the world.\\\" Between 1913 and 1928 the China Medical Board, the International Health Board, and the Division of Medical Education functioned as divisions of the Foundation, concentrating on the administration of programs in public health and medical education. A Division of Studies was created in 1923 to handle projects outside the medical field. These early years were experimental as the new foundation studied the methods of philanthropy and explored its relationships with other Rockefeller boards.\\n\\n Although the Rockefeller Foundation is the largest and best known philanthropy founded by the Rockefeller family, it was neither the first nor the last to be established. The Rockefeller Institute for Medical Research (1901), the General Education Board (1902), the Rockefeller Sanitary Commission for the Eradication of Hookworm Disease (1909), and the Bureau of Social Hygiene (1911) all existed earlier. When the Foundation was created, the Sanitary Commission was disbanded. After the establishment of the Foundation, the Laura Spelman Rockefeller Memorial (1918) and the International Education Board (1923) were created.\\n\\n The Rockefeller boards and their programs were reconsidered and reorganized in 1927-1928 in order to avoid overlapping programs. The International Health Board of the Foundation was disbanded and an International Health Division was organized. The China Medical Board, Inc., was established as a separately incorporated institution, and the China Medical Board of the Foundation ceased to exist. The Division of Studies was dropped and the Division of Medical Education was phased out. The Laura Spelman Rockefeller Memorial was combined with the Foundation and the Spelman Fund of New York was chartered to continue activities of the LSRM that were not absorbed by the Foundation. The International Education Board was disbanded.\\n\\n As a result of this reorganization, the Foundation adopted a program which included public health work (administered by the IHD), the advancement of knowledge in the medical and natural sciences (in part taken over from the IEB), the social sciences (formerly the field of the LSRM), and the humanities and arts (shared with the GEB). The Rockefeller Institute and the Bureau of Social Hygiene were not affected by the reorganization. The program adopted by the Foundation at this time remained basically the same for the next twenty years.\\n\\n As its files accumulated, the Foundation maintained a card index recording the names of institutional and individual grantees and correspondents. A microfilm copy of this index is available at the Archive Center.\",\"publish\":true}],\"publish\":true},{\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"bedf1e63c238677099651f6cc10ede67\",\"label\":\"Arrangement note\",\"type\":\"arrangement\",\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"The project files are arranged in series according to country. Each country or geographical area was assigned a three-digit number by RF staff. In addition, letters signifying program areas are used: for example, \\\"A\\\" indicates a grant in the Medical Sciences, and \\\"C\\\" Nursing. Material is organized within these letter/program subdivisions alphabetically by grant title. A grant title usually consists of a heading that includes the name of the institution or individual that received the grant. Thus each grant, or project, is filed individually in one or more folders.\",\"publish\":true}],\"publish\":true},{\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"688aee841558890703615f77d06a01f1\",\"label\":\"Processing Information note\",\"type\":\"processinfo\",\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"Migrated from Re:discovery to the Archivists' Toolkit by Becky Robbins in May 2010 except for Sub RG 1.3, Series 103, which was processed by Monica Blank in January, 2011.\",\"publish\":true}],\"publish\":true},{\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"8879ad144c27e5f7ac31de3bd90380ea\",\"label\":\"Preferred Citation note\",\"type\":\"prefercite\",\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"Information regarding the Rockefeller Archive Center's preferred elements and forms of citation can be found at http://www.rockarch.org/research/citations.php\",\"publish\":true}],\"publish\":true},{\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"710926656e9dd4c392de9e9eeb1a585c\",\"label\":\"File Plan note\",\"type\":\"fileplan\",\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"RG 1.1, 1.2, and part of 1.3\\n\\n Organization of the Rockefeller Foundation's archives:\\n\\n RG 1 Projects\\n\\n RG 2 General Correspondence\\n\\n RG 3 Administration, Program and Policy\\n\\n RG 4 China Medical Board\\n\\n RG 5 International Health Board/Division\\n\\n RG 6 Field Offices\\n\\n RG 7 Treasurer's Office\\n\\n RG 8 Comptroller\\n\\n RG 9 Personnel\\n\\n RG 10 Fellowships\\n\\n RG 11 Information Services\\n\\n RG 12 Diaries\\n\\n RG 13 Oral Histories\\n\\n RG 14 Counsel\\n\\n RG 15 Secretary\\n\\n RG 16 Minutes and Officers Actions\\n\\n RG 17 Dockets\\n\\n RG 18 Declinations (100F)\\n\\n RG 19 Non-textual Materials\\n\\n RG 20 Communications Office\",\"publish\":true}],\"publish\":true},{\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"2a926868ba9cf20b34f87d7cb7a3e877\",\"label\":\"Conditions Governing Access note\",\"type\":\"accessrestrict\",\"rights_restriction\":{\"local_access_restriction_type\":[]},\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"Open for research with select materials restricted as noted. Brittle or damaged items are available at the discretion of RAC. Confidential material in this record group has been segregated and is inaccessible. Each pertinent file is open to research, and physical removal of the segregated material within each file is not necessary. Researchers interested in accessing digital media (floppy disks, CDs, DVDs, etc.) or audiovisual material (audio cassettes, VHS, etc.) in this collection must use an access surrogate. The original items may not be accessed because of preservation concerns. To request an access surrogate be made, or if you are unsure if there is an access surrogate, please contact a RAC archivist.\",\"publish\":true}],\"publish\":true},{\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"170cfc7819c026738eebeebf4a8be746\",\"label\":\"Other Finding Aids note\",\"type\":\"otherfindaid\",\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"Other available finding aids describing Rockefeller Foundation records, projects include:\\n\\n FA387 Rockefeller Foundation records, projects, RG 1.2\\n\\n FA388 Rockefeller Foundation records, projects, RG 1.3\",\"publish\":true}],\"publish\":true},{\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"490c53973819206fdfb65de8636ef183\",\"label\":\"File Plan note\",\"type\":\"fileplan\",\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"RG 1.1\",\"publish\":false}],\"publish\":false},{\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"e1305511a8be266b49363cd1d8b32e2c\",\"label\":\"Scope and Contents\",\"type\":\"scopecontent\",\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"Types of records include: project files.\",\"publish\":true}],\"publish\":true}],\"uri\":\"/repositories/2/resources/12846\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/resources/12846/tree\"}}},\"parent\":{\"ref\":\"/repositories/2/archival_objects/1130318\"},\"has_unpublished_ancestor\":false}\n"
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/fixtures/cassettes/process_request.json b/fixtures/cassettes/process_request.json
index c88e9d1..0f9d24d 100644
--- a/fixtures/cassettes/process_request.json
+++ b/fixtures/cassettes/process_request.json
@@ -4,7 +4,7 @@
{
"request": {
"method": "POST",
- "uri": "http://192.168.50.7:8089/users/admin/login?expiring=False",
+ "uri": "http://as.dev.rockarch.org:8089/users/admin/login?expiring=False",
"body": null,
"headers": {
"User-Agent": [
@@ -33,11 +33,806 @@
"Content-Length": [
"3936"
],
+ "Date": [
+ "Wed, 29 Jul 2020 18:20:50 GMT"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
+ ],
+ "Content-Type": [
+ "application/json"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ]
+ },
+ "body": {
+ "string": "{\"session\":\"1505917d5aeb9332a5311f5ae38e0245e5ca36f9296f38bd3162e0d353a8aaf2\",\"user\":{\"lock_version\":359838,\"username\":\"admin\",\"name\":\"Administrator\",\"is_system_user\":true,\"create_time\":\"2014-12-05T20:32:17Z\",\"system_mtime\":\"2020-07-29T18:20:50Z\",\"user_mtime\":\"2020-07-29T18:20:50Z\",\"jsonmodel_type\":\"user\",\"groups\":[],\"is_admin\":true,\"uri\":\"/users/1\",\"agent_record\":{\"ref\":\"/agents/people/1\"},\"permissions\":{\"/repositories/2\":[\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\",\"view_repository\",\"transfer_repository\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"update_classification_record\",\"delete_classification_record\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"cancel_job\",\"create_job\"],\"/repositories/1\":[\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\",\"administer_system\",\"manage_users\",\"become_user\",\"view_all_records\",\"create_repository\",\"delete_repository\",\"transfer_repository\",\"index_system\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"view_repository\",\"update_classification_record\",\"delete_classification_record\",\"mediate_edits\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"create_job\",\"cancel_job\",\"update_assessment_record\",\"delete_assessment_record\",\"manage_assessment_attributes\",\"manage_enumeration_record\"],\"_archivesspace\":[\"administer_system\",\"manage_users\",\"become_user\",\"view_all_records\",\"create_repository\",\"delete_repository\",\"transfer_repository\",\"index_system\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"view_repository\",\"update_classification_record\",\"delete_classification_record\",\"mediate_edits\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"create_job\",\"cancel_job\",\"update_assessment_record\",\"delete_assessment_record\",\"manage_assessment_attributes\",\"manage_enumeration_record\",\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\"]}}}\n"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "GET",
+ "uri": "http://as.dev.rockarch.org:8089/version",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "22"
+ ],
+ "Date": [
+ "Wed, 29 Jul 2020 18:20:51 GMT"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
+ ],
+ "Content-Type": [
+ "text/html;charset=UTF-8"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "X-XSS-Protection": [
+ "1; mode=block"
+ ],
+ "X-Frame-Options": [
+ "SAMEORIGIN"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ]
+ },
+ "body": {
+ "string": "ArchivesSpace (v2.6.0)"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "GET",
+ "uri": "http://as.dev.rockarch.org:8089/repositories/2/archival_objects/1154382?resolve%5B%5D=ancestors&resolve%5B%5D=instances%3A%3Adigital_object&resolve%5B%5D=resource%3A%3Alinked_agents&resolve%5B%5D=top_container&resolve%5B%5D=top_container%3A%3Acontainer_locations",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "13543"
+ ],
+ "Date": [
+ "Wed, 29 Jul 2020 18:20:51 GMT"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
+ ],
+ "Content-Type": [
+ "application/json"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ]
+ },
+ "body": {
+ "string": "{\"lock_version\":0,\"position\":0,\"publish\":false,\"ref_id\":\"defc6e87d62c305094d7b60296f64ef5\",\"title\":\"restricted box inherit rights\",\"display_string\":\"restricted box inherit rights, 1995\",\"restrictions_apply\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:13:45Z\",\"system_mtime\":\"2020-07-28T16:02:56Z\",\"user_mtime\":\"2020-07-28T14:13:45Z\",\"suppressed\":false,\"is_slug_auto\":false,\"level\":\"item\",\"jsonmodel_type\":\"archival_object\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[{\"lock_version\":0,\"expression\":\"1995\",\"begin\":\"1995\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:13:45Z\",\"system_mtime\":\"2020-07-28T14:13:45Z\",\"user_mtime\":\"2020-07-28T14:13:45Z\",\"date_type\":\"single\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"ancestors\":[{\"ref\":\"/repositories/2/archival_objects/1154381\",\"level\":\"series\",\"_resolved\":{\"lock_version\":1,\"position\":0,\"publish\":false,\"ref_id\":\"05de6df0368c2eefcd2e6c7c41377f4f\",\"title\":\"Series 1\",\"display_string\":\"Series 1\",\"restrictions_apply\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:11:47Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:14:16Z\",\"suppressed\":false,\"is_slug_auto\":false,\"level\":\"series\",\"jsonmodel_type\":\"archival_object\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"ancestors\":[{\"ref\":\"/repositories/2/resources/13067\",\"level\":\"collection\"}],\"instances\":[],\"notes\":[{\"jsonmodel_type\":\"note_multipart\",\"type\":\"accessrestrict\",\"rights_restriction\":{\"local_access_restriction_type\":[]},\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"Closed for research\",\"publish\":false}],\"persistent_id\":\"75bf2d45b4f902aa48c0beb77163a709\",\"publish\":false}],\"uri\":\"/repositories/2/archival_objects/1154381\",\"repository\":{\"ref\":\"/repositories/2\"},\"resource\":{\"ref\":\"/repositories/2/resources/13067\"},\"has_unpublished_ancestor\":false}},{\"ref\":\"/repositories/2/resources/13067\",\"level\":\"collection\",\"_resolved\":{\"lock_version\":2,\"title\":\"request broker testing\",\"publish\":true,\"restrictions\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:10:58Z\",\"system_mtime\":\"2020-07-29T18:20:22Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"suppressed\":false,\"is_slug_auto\":false,\"id_0\":\"rqt\",\"language\":\"eng\",\"level\":\"collection\",\"resource_type\":\"collection\",\"jsonmodel_type\":\"resource\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[{\"lock_version\":0,\"number\":\"1\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"portion\":\"whole\",\"extent_type\":\"Cubic Feet\",\"jsonmodel_type\":\"extent\"}],\"dates\":[{\"lock_version\":0,\"expression\":\"1900-2000\",\"begin\":\"1900\",\"end\":\"2000\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"date_type\":\"inclusive\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/corporate_entities/21125\",\"_resolved\":{\"lock_version\":11,\"publish\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_corporate_entity\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\",\"subject\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/corporate_entities/21125\",\"agent_type\":\"agent_corporate_entity\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]},\"title\":\"Ford Foundation Staff\"}},{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/people/39\",\"_resolved\":{\"lock_version\":1,\"publish\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_person\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/people/39\",\"agent_type\":\"agent_person\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]},\"title\":\" Patrick Galligan\",\"is_user\":\"pgalligan\"}}],\"revision_statements\":[],\"instances\":[],\"deaccessions\":[],\"related_accessions\":[],\"classifications\":[],\"notes\":[],\"uri\":\"/repositories/2/resources/13067\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/resources/13067/tree\"}}}],\"instances\":[{\"lock_version\":0,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:13:45Z\",\"system_mtime\":\"2020-07-28T14:13:45Z\",\"user_mtime\":\"2020-07-28T14:13:45Z\",\"instance_type\":\"mixed materials\",\"jsonmodel_type\":\"instance\",\"is_representative\":false,\"sub_container\":{\"lock_version\":0,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:13:45Z\",\"system_mtime\":\"2020-07-28T14:13:45Z\",\"user_mtime\":\"2020-07-28T14:13:45Z\",\"jsonmodel_type\":\"sub_container\",\"top_container\":{\"ref\":\"/repositories/2/top_containers/191160\",\"_resolved\":{\"lock_version\":2,\"barcode\":\"A00028943760\",\"indicator\":\"1\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:12:59Z\",\"system_mtime\":\"2020-07-28T16:02:56Z\",\"user_mtime\":\"2020-07-28T16:02:56Z\",\"created_for_collection\":\"/repositories/2/resources/13067\",\"type\":\"box\",\"jsonmodel_type\":\"top_container\",\"active_restrictions\":[],\"container_locations\":[{\"jsonmodel_type\":\"container_location\",\"status\":\"current\",\"start_date\":\"2020-07-28\",\"system_mtime\":\"2020-07-28 16:02:56 UTC\",\"user_mtime\":\"2020-07-28 16:02:56 UTC\",\"ref\":\"/locations/1357\",\"_resolved\":{\"lock_version\":0,\"building\":\"Rockefeller Archive Center\",\"title\":\"Rockefeller Archive Center, Blue Level, Vault 103 [Unit: 8, Shelf: 4]\",\"floor\":\"Blue Level\",\"room\":\"Vault 103\",\"coordinate_1_label\":\"Unit\",\"coordinate_1_indicator\":\" 8\",\"coordinate_2_label\":\"Shelf\",\"coordinate_2_indicator\":\" 4\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:21:59Z\",\"system_mtime\":\"2017-12-15T22:26:27Z\",\"user_mtime\":\"2014-12-06T02:21:59Z\",\"jsonmodel_type\":\"location\",\"external_ids\":[{\"external_id\":\"1357\",\"source\":\"Archivists Toolkit Database::LOCATION\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:21:59Z\",\"system_mtime\":\"2014-12-06T02:21:59Z\",\"user_mtime\":\"2014-12-06T02:21:59Z\",\"jsonmodel_type\":\"external_id\"}],\"functions\":[],\"uri\":\"/locations/1357\"}}],\"series\":[],\"collection\":[{\"ref\":\"/repositories/2/resources/13067\",\"identifier\":\"rqt\",\"display_string\":\"request broker testing\"}],\"uri\":\"/repositories/2/top_containers/191160\",\"repository\":{\"ref\":\"/repositories/2\"},\"restricted\":false,\"is_linked_to_published_record\":false,\"display_string\":\"Box 1: [A00028943760]\",\"long_display_string\":\"rqt, Box 1 [A00028943760]\"}}}}],\"notes\":[],\"uri\":\"/repositories/2/archival_objects/1154382\",\"repository\":{\"ref\":\"/repositories/2\"},\"resource\":{\"ref\":\"/repositories/2/resources/13067\",\"_resolved\":{\"lock_version\":2,\"title\":\"request broker testing\",\"publish\":true,\"restrictions\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:10:58Z\",\"system_mtime\":\"2020-07-29T18:20:22Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"suppressed\":false,\"is_slug_auto\":false,\"id_0\":\"rqt\",\"language\":\"eng\",\"level\":\"collection\",\"resource_type\":\"collection\",\"jsonmodel_type\":\"resource\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[{\"lock_version\":0,\"number\":\"1\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"portion\":\"whole\",\"extent_type\":\"Cubic Feet\",\"jsonmodel_type\":\"extent\"}],\"dates\":[{\"lock_version\":0,\"expression\":\"1900-2000\",\"begin\":\"1900\",\"end\":\"2000\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"date_type\":\"inclusive\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/corporate_entities/21125\",\"_resolved\":{\"lock_version\":11,\"publish\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_corporate_entity\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\",\"subject\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/corporate_entities/21125\",\"agent_type\":\"agent_corporate_entity\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]},\"title\":\"Ford Foundation Staff\"}},{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/people/39\",\"_resolved\":{\"lock_version\":1,\"publish\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_person\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/people/39\",\"agent_type\":\"agent_person\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]},\"title\":\" Patrick Galligan\",\"is_user\":\"pgalligan\"}}],\"revision_statements\":[],\"instances\":[],\"deaccessions\":[],\"related_accessions\":[],\"classifications\":[],\"notes\":[],\"uri\":\"/repositories/2/resources/13067\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/resources/13067/tree\"}}},\"parent\":{\"ref\":\"/repositories/2/archival_objects/1154381\"},\"has_unpublished_ancestor\":true}\n"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "POST",
+ "uri": "http://as.dev.rockarch.org:8089/users/admin/login?expiring=False",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ],
+ "Content-Length": [
+ "0"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "3936"
+ ],
+ "Date": [
+ "Wed, 29 Jul 2020 18:20:51 GMT"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
+ ],
+ "Content-Type": [
+ "application/json"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ]
+ },
+ "body": {
+ "string": "{\"session\":\"9219abb11ee0a8431af2427daff300087e7c5d2ccbe0d0eeab1168d40ee29ee4\",\"user\":{\"lock_version\":359839,\"username\":\"admin\",\"name\":\"Administrator\",\"is_system_user\":true,\"create_time\":\"2014-12-05T20:32:17Z\",\"system_mtime\":\"2020-07-29T18:20:51Z\",\"user_mtime\":\"2020-07-29T18:20:51Z\",\"jsonmodel_type\":\"user\",\"groups\":[],\"is_admin\":true,\"uri\":\"/users/1\",\"agent_record\":{\"ref\":\"/agents/people/1\"},\"permissions\":{\"/repositories/2\":[\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\",\"view_repository\",\"transfer_repository\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"update_classification_record\",\"delete_classification_record\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"cancel_job\",\"create_job\"],\"/repositories/1\":[\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\",\"administer_system\",\"manage_users\",\"become_user\",\"view_all_records\",\"create_repository\",\"delete_repository\",\"transfer_repository\",\"index_system\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"view_repository\",\"update_classification_record\",\"delete_classification_record\",\"mediate_edits\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"create_job\",\"cancel_job\",\"update_assessment_record\",\"delete_assessment_record\",\"manage_assessment_attributes\",\"manage_enumeration_record\"],\"_archivesspace\":[\"administer_system\",\"manage_users\",\"become_user\",\"view_all_records\",\"create_repository\",\"delete_repository\",\"transfer_repository\",\"index_system\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"view_repository\",\"update_classification_record\",\"delete_classification_record\",\"mediate_edits\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"create_job\",\"cancel_job\",\"update_assessment_record\",\"delete_assessment_record\",\"manage_assessment_attributes\",\"manage_enumeration_record\",\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\"]}}}\n"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "GET",
+ "uri": "http://as.dev.rockarch.org:8089/version",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "22"
+ ],
+ "Date": [
+ "Wed, 29 Jul 2020 18:20:52 GMT"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
+ ],
+ "Content-Type": [
+ "text/html;charset=UTF-8"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "X-XSS-Protection": [
+ "1; mode=block"
+ ],
+ "X-Frame-Options": [
+ "SAMEORIGIN"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ]
+ },
+ "body": {
+ "string": "ArchivesSpace (v2.6.0)"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "GET",
+ "uri": "http://as.dev.rockarch.org:8089/repositories/2/archival_objects/1154384?resolve%5B%5D=ancestors&resolve%5B%5D=instances%3A%3Adigital_object&resolve%5B%5D=resource%3A%3Alinked_agents&resolve%5B%5D=top_container&resolve%5B%5D=top_container%3A%3Acontainer_locations",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "13345"
+ ],
+ "Date": [
+ "Wed, 29 Jul 2020 18:20:52 GMT"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
+ ],
+ "Content-Type": [
+ "application/json"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ]
+ },
+ "body": {
+ "string": "{\"lock_version\":0,\"position\":0,\"publish\":false,\"ref_id\":\"1478d41bb2c5b4783c695f654a8b910f\",\"title\":\"digital object open inherit dates\",\"display_string\":\"digital object open inherit dates\",\"restrictions_apply\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:16:54Z\",\"system_mtime\":\"2020-07-28T19:44:17Z\",\"user_mtime\":\"2020-07-28T14:16:54Z\",\"suppressed\":false,\"is_slug_auto\":false,\"level\":\"item\",\"jsonmodel_type\":\"archival_object\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"ancestors\":[{\"ref\":\"/repositories/2/archival_objects/1154383\",\"level\":\"series\",\"_resolved\":{\"lock_version\":0,\"position\":1,\"publish\":false,\"ref_id\":\"c1f0f7168c7eefa4935f0712eca5b99f\",\"title\":\"Series 2\",\"display_string\":\"Series 2\",\"restrictions_apply\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:15:04Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:15:04Z\",\"suppressed\":false,\"is_slug_auto\":false,\"level\":\"series\",\"jsonmodel_type\":\"archival_object\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"ancestors\":[{\"ref\":\"/repositories/2/resources/13067\",\"level\":\"collection\"}],\"instances\":[],\"notes\":[],\"uri\":\"/repositories/2/archival_objects/1154383\",\"repository\":{\"ref\":\"/repositories/2\"},\"resource\":{\"ref\":\"/repositories/2/resources/13067\"},\"has_unpublished_ancestor\":false}},{\"ref\":\"/repositories/2/resources/13067\",\"level\":\"collection\",\"_resolved\":{\"lock_version\":2,\"title\":\"request broker testing\",\"publish\":true,\"restrictions\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:10:58Z\",\"system_mtime\":\"2020-07-29T18:20:22Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"suppressed\":false,\"is_slug_auto\":false,\"id_0\":\"rqt\",\"language\":\"eng\",\"level\":\"collection\",\"resource_type\":\"collection\",\"jsonmodel_type\":\"resource\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[{\"lock_version\":0,\"number\":\"1\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"portion\":\"whole\",\"extent_type\":\"Cubic Feet\",\"jsonmodel_type\":\"extent\"}],\"dates\":[{\"lock_version\":0,\"expression\":\"1900-2000\",\"begin\":\"1900\",\"end\":\"2000\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"date_type\":\"inclusive\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/corporate_entities/21125\",\"_resolved\":{\"lock_version\":11,\"publish\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_corporate_entity\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\",\"subject\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/corporate_entities/21125\",\"agent_type\":\"agent_corporate_entity\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]},\"title\":\"Ford Foundation Staff\"}},{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/people/39\",\"_resolved\":{\"lock_version\":1,\"publish\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_person\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/people/39\",\"agent_type\":\"agent_person\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]},\"title\":\" Patrick Galligan\",\"is_user\":\"pgalligan\"}}],\"revision_statements\":[],\"instances\":[],\"deaccessions\":[],\"related_accessions\":[],\"classifications\":[],\"notes\":[],\"uri\":\"/repositories/2/resources/13067\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/resources/13067/tree\"}}}],\"instances\":[{\"lock_version\":0,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:16:54Z\",\"system_mtime\":\"2020-07-28T14:16:54Z\",\"user_mtime\":\"2020-07-28T14:16:54Z\",\"instance_type\":\"digital_object\",\"jsonmodel_type\":\"instance\",\"is_representative\":false,\"digital_object\":{\"ref\":\"/repositories/2/digital_objects/3367\",\"_resolved\":{\"lock_version\":2,\"digital_object_id\":\"238475\",\"title\":\"digital object\",\"publish\":true,\"restrictions\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:16:30Z\",\"system_mtime\":\"2020-07-28T19:44:16Z\",\"user_mtime\":\"2020-07-28T19:44:16Z\",\"suppressed\":false,\"is_slug_auto\":false,\"jsonmodel_type\":\"digital_object\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"file_versions\":[{\"lock_version\":0,\"file_uri\":\"http://google.com\",\"publish\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T19:44:16Z\",\"system_mtime\":\"2020-07-28T19:44:16Z\",\"user_mtime\":\"2020-07-28T19:44:16Z\",\"jsonmodel_type\":\"file_version\",\"is_representative\":false,\"identifier\":\"8475\"}],\"notes\":[],\"linked_instances\":[{\"ref\":\"/repositories/2/archival_objects/1154384\"}],\"uri\":\"/repositories/2/digital_objects/3367\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/digital_objects/3367/tree\"}}}},{\"lock_version\":0,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:16:54Z\",\"system_mtime\":\"2020-07-28T14:16:54Z\",\"user_mtime\":\"2020-07-28T14:16:54Z\",\"instance_type\":\"mixed materials\",\"jsonmodel_type\":\"instance\",\"is_representative\":false,\"sub_container\":{\"lock_version\":0,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:16:54Z\",\"system_mtime\":\"2020-07-28T14:16:54Z\",\"user_mtime\":\"2020-07-28T14:16:54Z\",\"jsonmodel_type\":\"sub_container\",\"top_container\":{\"ref\":\"/repositories/2/top_containers/191161\",\"_resolved\":{\"lock_version\":1,\"barcode\":\"A304896\",\"indicator\":\"2\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:16:50Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:16:50Z\",\"created_for_collection\":\"/repositories/2/resources/13067\",\"type\":\"box\",\"jsonmodel_type\":\"top_container\",\"active_restrictions\":[],\"container_locations\":[],\"series\":[],\"collection\":[{\"ref\":\"/repositories/2/resources/13067\",\"identifier\":\"rqt\",\"display_string\":\"request broker testing\"}],\"uri\":\"/repositories/2/top_containers/191161\",\"repository\":{\"ref\":\"/repositories/2\"},\"restricted\":false,\"is_linked_to_published_record\":false,\"display_string\":\"Box 2: [A304896]\",\"long_display_string\":\"rqt, Box 2 [A304896]\"}}}}],\"notes\":[],\"uri\":\"/repositories/2/archival_objects/1154384\",\"repository\":{\"ref\":\"/repositories/2\"},\"resource\":{\"ref\":\"/repositories/2/resources/13067\",\"_resolved\":{\"lock_version\":2,\"title\":\"request broker testing\",\"publish\":true,\"restrictions\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:10:58Z\",\"system_mtime\":\"2020-07-29T18:20:22Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"suppressed\":false,\"is_slug_auto\":false,\"id_0\":\"rqt\",\"language\":\"eng\",\"level\":\"collection\",\"resource_type\":\"collection\",\"jsonmodel_type\":\"resource\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[{\"lock_version\":0,\"number\":\"1\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"portion\":\"whole\",\"extent_type\":\"Cubic Feet\",\"jsonmodel_type\":\"extent\"}],\"dates\":[{\"lock_version\":0,\"expression\":\"1900-2000\",\"begin\":\"1900\",\"end\":\"2000\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"date_type\":\"inclusive\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/corporate_entities/21125\",\"_resolved\":{\"lock_version\":11,\"publish\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_corporate_entity\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\",\"subject\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/corporate_entities/21125\",\"agent_type\":\"agent_corporate_entity\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]},\"title\":\"Ford Foundation Staff\"}},{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/people/39\",\"_resolved\":{\"lock_version\":1,\"publish\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_person\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/people/39\",\"agent_type\":\"agent_person\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]},\"title\":\" Patrick Galligan\",\"is_user\":\"pgalligan\"}}],\"revision_statements\":[],\"instances\":[],\"deaccessions\":[],\"related_accessions\":[],\"classifications\":[],\"notes\":[],\"uri\":\"/repositories/2/resources/13067\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/resources/13067/tree\"}}},\"parent\":{\"ref\":\"/repositories/2/archival_objects/1154383\"},\"has_unpublished_ancestor\":true}\n"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "POST",
+ "uri": "http://as.dev.rockarch.org:8089/users/admin/login?expiring=False",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ],
+ "Content-Length": [
+ "0"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "3936"
+ ],
+ "Date": [
+ "Wed, 29 Jul 2020 18:20:52 GMT"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
+ ],
+ "Content-Type": [
+ "application/json"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ]
+ },
+ "body": {
+ "string": "{\"session\":\"c4bfbb14f7928dece98a58c9ff13321c87241b0a081acc74643bdfac1f9a7ea8\",\"user\":{\"lock_version\":359840,\"username\":\"admin\",\"name\":\"Administrator\",\"is_system_user\":true,\"create_time\":\"2014-12-05T20:32:17Z\",\"system_mtime\":\"2020-07-29T18:20:53Z\",\"user_mtime\":\"2020-07-29T18:20:53Z\",\"jsonmodel_type\":\"user\",\"groups\":[],\"is_admin\":true,\"uri\":\"/users/1\",\"agent_record\":{\"ref\":\"/agents/people/1\"},\"permissions\":{\"/repositories/2\":[\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\",\"view_repository\",\"transfer_repository\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"update_classification_record\",\"delete_classification_record\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"cancel_job\",\"create_job\"],\"/repositories/1\":[\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\",\"administer_system\",\"manage_users\",\"become_user\",\"view_all_records\",\"create_repository\",\"delete_repository\",\"transfer_repository\",\"index_system\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"view_repository\",\"update_classification_record\",\"delete_classification_record\",\"mediate_edits\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"create_job\",\"cancel_job\",\"update_assessment_record\",\"delete_assessment_record\",\"manage_assessment_attributes\",\"manage_enumeration_record\"],\"_archivesspace\":[\"administer_system\",\"manage_users\",\"become_user\",\"view_all_records\",\"create_repository\",\"delete_repository\",\"transfer_repository\",\"index_system\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"view_repository\",\"update_classification_record\",\"delete_classification_record\",\"mediate_edits\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"create_job\",\"cancel_job\",\"update_assessment_record\",\"delete_assessment_record\",\"manage_assessment_attributes\",\"manage_enumeration_record\",\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\"]}}}\n"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "GET",
+ "uri": "http://as.dev.rockarch.org:8089/version",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "22"
+ ],
+ "Date": [
+ "Wed, 29 Jul 2020 18:20:53 GMT"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
+ ],
+ "Content-Type": [
+ "text/html;charset=UTF-8"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "X-XSS-Protection": [
+ "1; mode=block"
+ ],
+ "X-Frame-Options": [
+ "SAMEORIGIN"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ]
+ },
+ "body": {
+ "string": "ArchivesSpace (v2.6.0)"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "GET",
+ "uri": "http://as.dev.rockarch.org:8089/repositories/2/archival_objects/1154385?resolve%5B%5D=ancestors&resolve%5B%5D=instances%3A%3Adigital_object&resolve%5B%5D=resource%3A%3Alinked_agents&resolve%5B%5D=top_container&resolve%5B%5D=top_container%3A%3Acontainer_locations",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "14037"
+ ],
+ "Date": [
+ "Wed, 29 Jul 2020 18:20:53 GMT"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
+ ],
+ "Content-Type": [
+ "application/json"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ]
+ },
+ "body": {
+ "string": "{\"lock_version\":0,\"position\":1,\"publish\":false,\"ref_id\":\"90086749d8c96114ea4c1caef1174cbc\",\"title\":\"box restricted rights statement\",\"display_string\":\"box restricted rights statement, 1999\",\"restrictions_apply\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:19:31Z\",\"system_mtime\":\"2020-07-28T16:01:46Z\",\"user_mtime\":\"2020-07-28T14:19:31Z\",\"suppressed\":false,\"is_slug_auto\":false,\"level\":\"item\",\"jsonmodel_type\":\"archival_object\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[{\"lock_version\":0,\"expression\":\"1999\",\"begin\":\"1999\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:19:31Z\",\"system_mtime\":\"2020-07-28T14:19:31Z\",\"user_mtime\":\"2020-07-28T14:19:31Z\",\"date_type\":\"single\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[{\"lock_version\":0,\"identifier\":\"926e436f1610e464debfe8088ec3adef\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:19:32Z\",\"system_mtime\":\"2020-07-28T14:19:32Z\",\"user_mtime\":\"2020-07-28T14:19:32Z\",\"start_date\":\"1950-01-01\",\"end_date\":\"2050-01-01\",\"determination_date\":\"2020-01-01\",\"rights_type\":\"copyright\",\"status\":\"copyrighted\",\"jurisdiction\":\"US\",\"jsonmodel_type\":\"rights_statement\",\"external_documents\":[],\"acts\":[{\"start_date\":\"1950-01-01\",\"end_date\":\"2050-01-01\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:19:32Z\",\"system_mtime\":\"2020-07-28T14:19:32Z\",\"user_mtime\":\"2020-07-28T14:19:32Z\",\"act_type\":\"use\",\"restriction\":\"disallow\",\"jsonmodel_type\":\"rights_statement_act\",\"notes\":[]}],\"linked_agents\":[],\"notes\":[]}],\"linked_agents\":[],\"ancestors\":[{\"ref\":\"/repositories/2/archival_objects/1154383\",\"level\":\"series\",\"_resolved\":{\"lock_version\":0,\"position\":1,\"publish\":false,\"ref_id\":\"c1f0f7168c7eefa4935f0712eca5b99f\",\"title\":\"Series 2\",\"display_string\":\"Series 2\",\"restrictions_apply\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:15:04Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:15:04Z\",\"suppressed\":false,\"is_slug_auto\":false,\"level\":\"series\",\"jsonmodel_type\":\"archival_object\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"ancestors\":[{\"ref\":\"/repositories/2/resources/13067\",\"level\":\"collection\"}],\"instances\":[],\"notes\":[],\"uri\":\"/repositories/2/archival_objects/1154383\",\"repository\":{\"ref\":\"/repositories/2\"},\"resource\":{\"ref\":\"/repositories/2/resources/13067\"},\"has_unpublished_ancestor\":false}},{\"ref\":\"/repositories/2/resources/13067\",\"level\":\"collection\",\"_resolved\":{\"lock_version\":2,\"title\":\"request broker testing\",\"publish\":true,\"restrictions\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:10:58Z\",\"system_mtime\":\"2020-07-29T18:20:22Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"suppressed\":false,\"is_slug_auto\":false,\"id_0\":\"rqt\",\"language\":\"eng\",\"level\":\"collection\",\"resource_type\":\"collection\",\"jsonmodel_type\":\"resource\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[{\"lock_version\":0,\"number\":\"1\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"portion\":\"whole\",\"extent_type\":\"Cubic Feet\",\"jsonmodel_type\":\"extent\"}],\"dates\":[{\"lock_version\":0,\"expression\":\"1900-2000\",\"begin\":\"1900\",\"end\":\"2000\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"date_type\":\"inclusive\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/corporate_entities/21125\",\"_resolved\":{\"lock_version\":11,\"publish\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_corporate_entity\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\",\"subject\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/corporate_entities/21125\",\"agent_type\":\"agent_corporate_entity\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]},\"title\":\"Ford Foundation Staff\"}},{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/people/39\",\"_resolved\":{\"lock_version\":1,\"publish\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_person\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/people/39\",\"agent_type\":\"agent_person\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]},\"title\":\" Patrick Galligan\",\"is_user\":\"pgalligan\"}}],\"revision_statements\":[],\"instances\":[],\"deaccessions\":[],\"related_accessions\":[],\"classifications\":[],\"notes\":[],\"uri\":\"/repositories/2/resources/13067\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/resources/13067/tree\"}}}],\"instances\":[{\"lock_version\":0,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:19:32Z\",\"system_mtime\":\"2020-07-28T14:19:32Z\",\"user_mtime\":\"2020-07-28T14:19:32Z\",\"instance_type\":\"mixed materials\",\"jsonmodel_type\":\"instance\",\"is_representative\":false,\"sub_container\":{\"lock_version\":0,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:19:32Z\",\"system_mtime\":\"2020-07-28T14:19:32Z\",\"user_mtime\":\"2020-07-28T14:19:32Z\",\"jsonmodel_type\":\"sub_container\",\"top_container\":{\"ref\":\"/repositories/2/top_containers/191162\",\"_resolved\":{\"lock_version\":2,\"barcode\":\"A934876\",\"indicator\":\"3\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:18:48Z\",\"system_mtime\":\"2020-07-28T16:01:46Z\",\"user_mtime\":\"2020-07-28T16:01:46Z\",\"created_for_collection\":\"/repositories/2/resources/13067\",\"type\":\"box\",\"jsonmodel_type\":\"top_container\",\"active_restrictions\":[],\"container_locations\":[{\"jsonmodel_type\":\"container_location\",\"status\":\"current\",\"start_date\":\"2020-07-28\",\"system_mtime\":\"2020-07-28 16:01:46 UTC\",\"user_mtime\":\"2020-07-28 16:01:46 UTC\",\"ref\":\"/locations/1354\",\"_resolved\":{\"lock_version\":0,\"building\":\"Rockefeller Archive Center\",\"title\":\"Rockefeller Archive Center, Blue Level, Vault 103 [Unit: 8, Shelf: 1]\",\"floor\":\"Blue Level\",\"room\":\"Vault 103\",\"coordinate_1_label\":\"Unit\",\"coordinate_1_indicator\":\" 8\",\"coordinate_2_label\":\"Shelf\",\"coordinate_2_indicator\":\" 1\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:21:58Z\",\"system_mtime\":\"2017-12-15T22:26:27Z\",\"user_mtime\":\"2014-12-06T02:21:58Z\",\"jsonmodel_type\":\"location\",\"external_ids\":[{\"external_id\":\"1354\",\"source\":\"Archivists Toolkit Database::LOCATION\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:21:59Z\",\"system_mtime\":\"2014-12-06T02:21:59Z\",\"user_mtime\":\"2014-12-06T02:21:59Z\",\"jsonmodel_type\":\"external_id\"}],\"functions\":[],\"uri\":\"/locations/1354\"}}],\"series\":[],\"collection\":[{\"ref\":\"/repositories/2/resources/13067\",\"identifier\":\"rqt\",\"display_string\":\"request broker testing\"}],\"uri\":\"/repositories/2/top_containers/191162\",\"repository\":{\"ref\":\"/repositories/2\"},\"restricted\":false,\"is_linked_to_published_record\":false,\"display_string\":\"Box 3: [A934876]\",\"long_display_string\":\"rqt, Box 3 [A934876]\"}}}}],\"notes\":[],\"uri\":\"/repositories/2/archival_objects/1154385\",\"repository\":{\"ref\":\"/repositories/2\"},\"resource\":{\"ref\":\"/repositories/2/resources/13067\",\"_resolved\":{\"lock_version\":2,\"title\":\"request broker testing\",\"publish\":true,\"restrictions\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:10:58Z\",\"system_mtime\":\"2020-07-29T18:20:22Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"suppressed\":false,\"is_slug_auto\":false,\"id_0\":\"rqt\",\"language\":\"eng\",\"level\":\"collection\",\"resource_type\":\"collection\",\"jsonmodel_type\":\"resource\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[{\"lock_version\":0,\"number\":\"1\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"portion\":\"whole\",\"extent_type\":\"Cubic Feet\",\"jsonmodel_type\":\"extent\"}],\"dates\":[{\"lock_version\":0,\"expression\":\"1900-2000\",\"begin\":\"1900\",\"end\":\"2000\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"date_type\":\"inclusive\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/corporate_entities/21125\",\"_resolved\":{\"lock_version\":11,\"publish\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_corporate_entity\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\",\"subject\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/corporate_entities/21125\",\"agent_type\":\"agent_corporate_entity\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]},\"title\":\"Ford Foundation Staff\"}},{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/people/39\",\"_resolved\":{\"lock_version\":1,\"publish\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_person\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/people/39\",\"agent_type\":\"agent_person\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]},\"title\":\" Patrick Galligan\",\"is_user\":\"pgalligan\"}}],\"revision_statements\":[],\"instances\":[],\"deaccessions\":[],\"related_accessions\":[],\"classifications\":[],\"notes\":[],\"uri\":\"/repositories/2/resources/13067\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/resources/13067/tree\"}}},\"parent\":{\"ref\":\"/repositories/2/archival_objects/1154383\"},\"has_unpublished_ancestor\":true}\n"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "POST",
+ "uri": "http://as.dev.rockarch.org:8089/users/admin/login?expiring=False",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ],
+ "Content-Length": [
+ "0"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "3936"
+ ],
+ "Date": [
+ "Wed, 29 Jul 2020 18:20:54 GMT"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
+ ],
+ "Content-Type": [
+ "application/json"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ]
+ },
+ "body": {
+ "string": "{\"session\":\"158d2771796b5dbb258ae557851db47283aed91d401ae4247c3ce382f4cbcc07\",\"user\":{\"lock_version\":359841,\"username\":\"admin\",\"name\":\"Administrator\",\"is_system_user\":true,\"create_time\":\"2014-12-05T20:32:17Z\",\"system_mtime\":\"2020-07-29T18:20:54Z\",\"user_mtime\":\"2020-07-29T18:20:54Z\",\"jsonmodel_type\":\"user\",\"groups\":[],\"is_admin\":true,\"uri\":\"/users/1\",\"agent_record\":{\"ref\":\"/agents/people/1\"},\"permissions\":{\"/repositories/2\":[\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\",\"view_repository\",\"transfer_repository\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"update_classification_record\",\"delete_classification_record\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"cancel_job\",\"create_job\"],\"/repositories/1\":[\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\",\"administer_system\",\"manage_users\",\"become_user\",\"view_all_records\",\"create_repository\",\"delete_repository\",\"transfer_repository\",\"index_system\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"view_repository\",\"update_classification_record\",\"delete_classification_record\",\"mediate_edits\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"create_job\",\"cancel_job\",\"update_assessment_record\",\"delete_assessment_record\",\"manage_assessment_attributes\",\"manage_enumeration_record\"],\"_archivesspace\":[\"administer_system\",\"manage_users\",\"become_user\",\"view_all_records\",\"create_repository\",\"delete_repository\",\"transfer_repository\",\"index_system\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"view_repository\",\"update_classification_record\",\"delete_classification_record\",\"mediate_edits\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"create_job\",\"cancel_job\",\"update_assessment_record\",\"delete_assessment_record\",\"manage_assessment_attributes\",\"manage_enumeration_record\",\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\"]}}}\n"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "GET",
+ "uri": "http://as.dev.rockarch.org:8089/version",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "22"
+ ],
+ "Date": [
+ "Wed, 29 Jul 2020 18:20:54 GMT"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
+ ],
+ "Content-Type": [
+ "text/html;charset=UTF-8"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "X-XSS-Protection": [
+ "1; mode=block"
+ ],
+ "X-Frame-Options": [
+ "SAMEORIGIN"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ]
+ },
+ "body": {
+ "string": "ArchivesSpace (v2.6.0)"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "GET",
+ "uri": "http://as.dev.rockarch.org:8089/repositories/2/archival_objects/1154386?resolve%5B%5D=ancestors&resolve%5B%5D=instances%3A%3Adigital_object&resolve%5B%5D=resource%3A%3Alinked_agents&resolve%5B%5D=top_container&resolve%5B%5D=top_container%3A%3Acontainer_locations",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "15478"
+ ],
+ "Date": [
+ "Wed, 29 Jul 2020 18:20:54 GMT"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
+ ],
+ "Content-Type": [
+ "application/json"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ]
+ },
+ "body": {
+ "string": "{\"lock_version\":0,\"position\":2,\"publish\":false,\"ref_id\":\"e5733850b62fcef798a8ef73593e15bb\",\"title\":\"open multiple formats\",\"display_string\":\"open multiple formats, 1998\",\"restrictions_apply\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:21:46Z\",\"system_mtime\":\"2020-07-28T16:01:15Z\",\"user_mtime\":\"2020-07-28T14:21:46Z\",\"suppressed\":false,\"is_slug_auto\":false,\"level\":\"item\",\"jsonmodel_type\":\"archival_object\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[{\"lock_version\":0,\"begin\":\"1998\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:21:46Z\",\"system_mtime\":\"2020-07-28T14:21:46Z\",\"user_mtime\":\"2020-07-28T14:21:46Z\",\"date_type\":\"single\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"ancestors\":[{\"ref\":\"/repositories/2/archival_objects/1154383\",\"level\":\"series\",\"_resolved\":{\"lock_version\":0,\"position\":1,\"publish\":false,\"ref_id\":\"c1f0f7168c7eefa4935f0712eca5b99f\",\"title\":\"Series 2\",\"display_string\":\"Series 2\",\"restrictions_apply\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:15:04Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:15:04Z\",\"suppressed\":false,\"is_slug_auto\":false,\"level\":\"series\",\"jsonmodel_type\":\"archival_object\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"ancestors\":[{\"ref\":\"/repositories/2/resources/13067\",\"level\":\"collection\"}],\"instances\":[],\"notes\":[],\"uri\":\"/repositories/2/archival_objects/1154383\",\"repository\":{\"ref\":\"/repositories/2\"},\"resource\":{\"ref\":\"/repositories/2/resources/13067\"},\"has_unpublished_ancestor\":false}},{\"ref\":\"/repositories/2/resources/13067\",\"level\":\"collection\",\"_resolved\":{\"lock_version\":2,\"title\":\"request broker testing\",\"publish\":true,\"restrictions\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:10:58Z\",\"system_mtime\":\"2020-07-29T18:20:22Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"suppressed\":false,\"is_slug_auto\":false,\"id_0\":\"rqt\",\"language\":\"eng\",\"level\":\"collection\",\"resource_type\":\"collection\",\"jsonmodel_type\":\"resource\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[{\"lock_version\":0,\"number\":\"1\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"portion\":\"whole\",\"extent_type\":\"Cubic Feet\",\"jsonmodel_type\":\"extent\"}],\"dates\":[{\"lock_version\":0,\"expression\":\"1900-2000\",\"begin\":\"1900\",\"end\":\"2000\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"date_type\":\"inclusive\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/corporate_entities/21125\",\"_resolved\":{\"lock_version\":11,\"publish\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_corporate_entity\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\",\"subject\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/corporate_entities/21125\",\"agent_type\":\"agent_corporate_entity\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]},\"title\":\"Ford Foundation Staff\"}},{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/people/39\",\"_resolved\":{\"lock_version\":1,\"publish\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_person\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/people/39\",\"agent_type\":\"agent_person\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]},\"title\":\" Patrick Galligan\",\"is_user\":\"pgalligan\"}}],\"revision_statements\":[],\"instances\":[],\"deaccessions\":[],\"related_accessions\":[],\"classifications\":[],\"notes\":[],\"uri\":\"/repositories/2/resources/13067\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/resources/13067/tree\"}}}],\"instances\":[{\"lock_version\":0,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:21:46Z\",\"system_mtime\":\"2020-07-28T14:21:46Z\",\"user_mtime\":\"2020-07-28T14:21:46Z\",\"instance_type\":\"mixed materials\",\"jsonmodel_type\":\"instance\",\"is_representative\":false,\"sub_container\":{\"lock_version\":0,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:21:46Z\",\"system_mtime\":\"2020-07-28T14:21:46Z\",\"user_mtime\":\"2020-07-28T14:21:46Z\",\"jsonmodel_type\":\"sub_container\",\"top_container\":{\"ref\":\"/repositories/2/top_containers/191163\",\"_resolved\":{\"lock_version\":2,\"barcode\":\"A983476\",\"indicator\":\"4\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:21:02Z\",\"system_mtime\":\"2020-07-28T16:01:15Z\",\"user_mtime\":\"2020-07-28T16:01:15Z\",\"created_for_collection\":\"/repositories/2/resources/13067\",\"type\":\"box\",\"jsonmodel_type\":\"top_container\",\"active_restrictions\":[],\"container_locations\":[{\"jsonmodel_type\":\"container_location\",\"status\":\"current\",\"start_date\":\"2020-07-28\",\"system_mtime\":\"2020-07-28 16:01:15 UTC\",\"user_mtime\":\"2020-07-28 16:01:15 UTC\",\"ref\":\"/locations/1305\",\"_resolved\":{\"lock_version\":1,\"building\":\"Rockefeller Archive Center\",\"title\":\"Rockefeller Archive Center, Blue Level, Vault 103 [Unit: 1, Shelf: 1]\",\"floor\":\"Blue Level\",\"room\":\"Vault 103\",\"coordinate_1_label\":\"Unit\",\"coordinate_1_indicator\":\" 1\",\"coordinate_2_label\":\"Shelf\",\"coordinate_2_indicator\":\" 1\",\"created_by\":\"admin\",\"last_modified_by\":\"irvings\",\"create_time\":\"2014-12-06T02:21:56Z\",\"system_mtime\":\"2017-12-15T22:26:27Z\",\"user_mtime\":\"2017-12-15T13:59:24Z\",\"jsonmodel_type\":\"location\",\"external_ids\":[{\"external_id\":\"1305\",\"source\":\"Archivists Toolkit Database::LOCATION\",\"created_by\":\"irvings\",\"last_modified_by\":\"irvings\",\"create_time\":\"2017-12-15T13:59:24Z\",\"system_mtime\":\"2017-12-15T13:59:24Z\",\"user_mtime\":\"2017-12-15T13:59:24Z\",\"jsonmodel_type\":\"external_id\"}],\"functions\":[],\"uri\":\"/locations/1305\"}}],\"series\":[],\"collection\":[{\"ref\":\"/repositories/2/resources/13067\",\"identifier\":\"rqt\",\"display_string\":\"request broker testing\"}],\"uri\":\"/repositories/2/top_containers/191163\",\"repository\":{\"ref\":\"/repositories/2\"},\"restricted\":false,\"is_linked_to_published_record\":false,\"display_string\":\"Box 4: [A983476]\",\"long_display_string\":\"rqt, Box 4 [A983476]\"}}}},{\"lock_version\":0,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:21:46Z\",\"system_mtime\":\"2020-07-28T14:21:46Z\",\"user_mtime\":\"2020-07-28T14:21:46Z\",\"instance_type\":\"microform\",\"jsonmodel_type\":\"instance\",\"is_representative\":false,\"sub_container\":{\"lock_version\":0,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:21:46Z\",\"system_mtime\":\"2020-07-28T14:21:46Z\",\"user_mtime\":\"2020-07-28T14:21:46Z\",\"jsonmodel_type\":\"sub_container\",\"top_container\":{\"ref\":\"/repositories/2/top_containers/191164\",\"_resolved\":{\"lock_version\":2,\"indicator\":\"1\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:21:28Z\",\"system_mtime\":\"2020-07-28T16:01:00Z\",\"user_mtime\":\"2020-07-28T16:00:59Z\",\"created_for_collection\":\"/repositories/2/resources/13067\",\"type\":\"reel\",\"jsonmodel_type\":\"top_container\",\"active_restrictions\":[],\"container_locations\":[{\"jsonmodel_type\":\"container_location\",\"status\":\"current\",\"start_date\":\"2020-07-28\",\"system_mtime\":\"2020-07-28 16:01:00 UTC\",\"user_mtime\":\"2020-07-28 16:01:00 UTC\",\"ref\":\"/locations/1314\",\"_resolved\":{\"lock_version\":1,\"building\":\"Rockefeller Archive Center\",\"title\":\"Rockefeller Archive Center, Blue Level, Vault 103 [Unit: 2, Shelf: 3]\",\"floor\":\"Blue Level\",\"room\":\"Vault 103\",\"coordinate_1_label\":\"Unit\",\"coordinate_1_indicator\":\" 2\",\"coordinate_2_label\":\"Shelf\",\"coordinate_2_indicator\":\" 3\",\"created_by\":\"admin\",\"last_modified_by\":\"irvings\",\"create_time\":\"2014-12-06T02:21:56Z\",\"system_mtime\":\"2017-12-15T22:26:27Z\",\"user_mtime\":\"2017-12-15T14:02:50Z\",\"jsonmodel_type\":\"location\",\"external_ids\":[{\"external_id\":\"1314\",\"source\":\"Archivists Toolkit Database::LOCATION\",\"created_by\":\"irvings\",\"last_modified_by\":\"irvings\",\"create_time\":\"2017-12-15T14:02:50Z\",\"system_mtime\":\"2017-12-15T14:02:50Z\",\"user_mtime\":\"2017-12-15T14:02:50Z\",\"jsonmodel_type\":\"external_id\"}],\"functions\":[],\"uri\":\"/locations/1314\"}}],\"series\":[],\"collection\":[{\"ref\":\"/repositories/2/resources/13067\",\"identifier\":\"rqt\",\"display_string\":\"request broker testing\"}],\"uri\":\"/repositories/2/top_containers/191164\",\"repository\":{\"ref\":\"/repositories/2\"},\"restricted\":false,\"is_linked_to_published_record\":false,\"display_string\":\"Reel 1\",\"long_display_string\":\"rqt, Reel 1\"}}}}],\"notes\":[],\"uri\":\"/repositories/2/archival_objects/1154386\",\"repository\":{\"ref\":\"/repositories/2\"},\"resource\":{\"ref\":\"/repositories/2/resources/13067\",\"_resolved\":{\"lock_version\":2,\"title\":\"request broker testing\",\"publish\":true,\"restrictions\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:10:58Z\",\"system_mtime\":\"2020-07-29T18:20:22Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"suppressed\":false,\"is_slug_auto\":false,\"id_0\":\"rqt\",\"language\":\"eng\",\"level\":\"collection\",\"resource_type\":\"collection\",\"jsonmodel_type\":\"resource\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[{\"lock_version\":0,\"number\":\"1\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"portion\":\"whole\",\"extent_type\":\"Cubic Feet\",\"jsonmodel_type\":\"extent\"}],\"dates\":[{\"lock_version\":0,\"expression\":\"1900-2000\",\"begin\":\"1900\",\"end\":\"2000\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"date_type\":\"inclusive\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/corporate_entities/21125\",\"_resolved\":{\"lock_version\":11,\"publish\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_corporate_entity\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\",\"subject\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/corporate_entities/21125\",\"agent_type\":\"agent_corporate_entity\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]},\"title\":\"Ford Foundation Staff\"}},{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/people/39\",\"_resolved\":{\"lock_version\":1,\"publish\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_person\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/people/39\",\"agent_type\":\"agent_person\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]},\"title\":\" Patrick Galligan\",\"is_user\":\"pgalligan\"}}],\"revision_statements\":[],\"instances\":[],\"deaccessions\":[],\"related_accessions\":[],\"classifications\":[],\"notes\":[],\"uri\":\"/repositories/2/resources/13067\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/resources/13067/tree\"}}},\"parent\":{\"ref\":\"/repositories/2/archival_objects/1154383\"},\"has_unpublished_ancestor\":true}\n"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "POST",
+ "uri": "http://as.dev.rockarch.org:8089/users/admin/login?expiring=False",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ],
+ "Content-Length": [
+ "0"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "3936"
+ ],
+ "Date": [
+ "Wed, 29 Jul 2020 18:20:55 GMT"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
+ ],
+ "Content-Type": [
+ "application/json"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ]
+ },
+ "body": {
+ "string": "{\"session\":\"a41a4062a7fafd6e4168ab7ae9329532592cfbf3d14e5e225ecbd970a04eeff9\",\"user\":{\"lock_version\":359842,\"username\":\"admin\",\"name\":\"Administrator\",\"is_system_user\":true,\"create_time\":\"2014-12-05T20:32:17Z\",\"system_mtime\":\"2020-07-29T18:20:55Z\",\"user_mtime\":\"2020-07-29T18:20:55Z\",\"jsonmodel_type\":\"user\",\"groups\":[],\"is_admin\":true,\"uri\":\"/users/1\",\"agent_record\":{\"ref\":\"/agents/people/1\"},\"permissions\":{\"/repositories/2\":[\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\",\"view_repository\",\"transfer_repository\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"update_classification_record\",\"delete_classification_record\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"cancel_job\",\"create_job\"],\"/repositories/1\":[\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\",\"administer_system\",\"manage_users\",\"become_user\",\"view_all_records\",\"create_repository\",\"delete_repository\",\"transfer_repository\",\"index_system\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"view_repository\",\"update_classification_record\",\"delete_classification_record\",\"mediate_edits\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"create_job\",\"cancel_job\",\"update_assessment_record\",\"delete_assessment_record\",\"manage_assessment_attributes\",\"manage_enumeration_record\"],\"_archivesspace\":[\"administer_system\",\"manage_users\",\"become_user\",\"view_all_records\",\"create_repository\",\"delete_repository\",\"transfer_repository\",\"index_system\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"view_repository\",\"update_classification_record\",\"delete_classification_record\",\"mediate_edits\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"create_job\",\"cancel_job\",\"update_assessment_record\",\"delete_assessment_record\",\"manage_assessment_attributes\",\"manage_enumeration_record\",\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\"]}}}\n"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "GET",
+ "uri": "http://as.dev.rockarch.org:8089/version",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "22"
+ ],
+ "Date": [
+ "Wed, 29 Jul 2020 18:20:55 GMT"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
+ ],
+ "Content-Type": [
+ "text/html;charset=UTF-8"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "X-XSS-Protection": [
+ "1; mode=block"
+ ],
+ "X-Frame-Options": [
+ "SAMEORIGIN"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ]
+ },
+ "body": {
+ "string": "ArchivesSpace (v2.6.0)"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "GET",
+ "uri": "http://as.dev.rockarch.org:8089/repositories/2/archival_objects/1154387?resolve%5B%5D=ancestors&resolve%5B%5D=instances%3A%3Adigital_object&resolve%5B%5D=resource%3A%3Alinked_agents&resolve%5B%5D=top_container&resolve%5B%5D=top_container%3A%3Acontainer_locations",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "16552"
+ ],
+ "Date": [
+ "Wed, 29 Jul 2020 18:20:55 GMT"
+ ],
"Cache-Control": [
"private, must-revalidate, max-age=0"
],
+ "Content-Type": [
+ "application/json"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ]
+ },
+ "body": {
+ "string": "{\"lock_version\":0,\"position\":3,\"publish\":false,\"ref_id\":\"3aa96ef385d7ca1b0d279056e78dce01\",\"title\":\"open all formats\",\"display_string\":\"open all formats, 1992\",\"restrictions_apply\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T16:00:16Z\",\"system_mtime\":\"2020-07-28T16:00:16Z\",\"user_mtime\":\"2020-07-28T16:00:16Z\",\"suppressed\":false,\"is_slug_auto\":false,\"level\":\"item\",\"jsonmodel_type\":\"archival_object\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[{\"lock_version\":0,\"expression\":\"1992\",\"begin\":\"1992\",\"end\":\"1992\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T16:00:19Z\",\"system_mtime\":\"2020-07-28T16:00:19Z\",\"user_mtime\":\"2020-07-28T16:00:19Z\",\"date_type\":\"single\",\"label\":\"creation\",\"era\":\"ce\",\"calendar\":\"gregorian\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"ancestors\":[{\"ref\":\"/repositories/2/archival_objects/1154383\",\"level\":\"series\",\"_resolved\":{\"lock_version\":0,\"position\":1,\"publish\":false,\"ref_id\":\"c1f0f7168c7eefa4935f0712eca5b99f\",\"title\":\"Series 2\",\"display_string\":\"Series 2\",\"restrictions_apply\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:15:04Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:15:04Z\",\"suppressed\":false,\"is_slug_auto\":false,\"level\":\"series\",\"jsonmodel_type\":\"archival_object\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"ancestors\":[{\"ref\":\"/repositories/2/resources/13067\",\"level\":\"collection\"}],\"instances\":[],\"notes\":[],\"uri\":\"/repositories/2/archival_objects/1154383\",\"repository\":{\"ref\":\"/repositories/2\"},\"resource\":{\"ref\":\"/repositories/2/resources/13067\"},\"has_unpublished_ancestor\":false}},{\"ref\":\"/repositories/2/resources/13067\",\"level\":\"collection\",\"_resolved\":{\"lock_version\":2,\"title\":\"request broker testing\",\"publish\":true,\"restrictions\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:10:58Z\",\"system_mtime\":\"2020-07-29T18:20:22Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"suppressed\":false,\"is_slug_auto\":false,\"id_0\":\"rqt\",\"language\":\"eng\",\"level\":\"collection\",\"resource_type\":\"collection\",\"jsonmodel_type\":\"resource\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[{\"lock_version\":0,\"number\":\"1\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"portion\":\"whole\",\"extent_type\":\"Cubic Feet\",\"jsonmodel_type\":\"extent\"}],\"dates\":[{\"lock_version\":0,\"expression\":\"1900-2000\",\"begin\":\"1900\",\"end\":\"2000\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"date_type\":\"inclusive\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/corporate_entities/21125\",\"_resolved\":{\"lock_version\":11,\"publish\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_corporate_entity\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\",\"subject\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/corporate_entities/21125\",\"agent_type\":\"agent_corporate_entity\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]},\"title\":\"Ford Foundation Staff\"}},{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/people/39\",\"_resolved\":{\"lock_version\":1,\"publish\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_person\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/people/39\",\"agent_type\":\"agent_person\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]},\"title\":\" Patrick Galligan\",\"is_user\":\"pgalligan\"}}],\"revision_statements\":[],\"instances\":[],\"deaccessions\":[],\"related_accessions\":[],\"classifications\":[],\"notes\":[],\"uri\":\"/repositories/2/resources/13067\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/resources/13067/tree\"}}}],\"instances\":[{\"lock_version\":0,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T16:00:19Z\",\"system_mtime\":\"2020-07-28T16:00:19Z\",\"user_mtime\":\"2020-07-28T16:00:19Z\",\"instance_type\":\"digital_object\",\"jsonmodel_type\":\"instance\",\"is_representative\":false,\"digital_object\":{\"ref\":\"/repositories/2/digital_objects/3368\",\"_resolved\":{\"lock_version\":1,\"digital_object_id\":\"do2\",\"title\":\"digital object 2\",\"publish\":false,\"restrictions\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T15:54:49Z\",\"system_mtime\":\"2020-07-28T16:00:20Z\",\"user_mtime\":\"2020-07-28T15:54:49Z\",\"suppressed\":false,\"is_slug_auto\":false,\"jsonmodel_type\":\"digital_object\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"file_versions\":[],\"notes\":[],\"linked_instances\":[{\"ref\":\"/repositories/2/archival_objects/1154387\"}],\"uri\":\"/repositories/2/digital_objects/3368\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/digital_objects/3368/tree\"}}}},{\"lock_version\":0,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T16:00:20Z\",\"system_mtime\":\"2020-07-28T16:00:20Z\",\"user_mtime\":\"2020-07-28T16:00:20Z\",\"instance_type\":\"mixed materials\",\"jsonmodel_type\":\"instance\",\"is_representative\":false,\"sub_container\":{\"lock_version\":0,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T16:00:21Z\",\"system_mtime\":\"2020-07-28T16:00:21Z\",\"user_mtime\":\"2020-07-28T16:00:21Z\",\"jsonmodel_type\":\"sub_container\",\"top_container\":{\"ref\":\"/repositories/2/top_containers/191165\",\"_resolved\":{\"lock_version\":2,\"barcode\":\"A9347865987\",\"indicator\":\"5\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T15:55:18Z\",\"system_mtime\":\"2020-07-28T16:00:25Z\",\"user_mtime\":\"2020-07-28T15:56:20Z\",\"created_for_collection\":\"/repositories/2/resources/13067\",\"type\":\"box\",\"jsonmodel_type\":\"top_container\",\"active_restrictions\":[],\"container_locations\":[{\"jsonmodel_type\":\"container_location\",\"status\":\"current\",\"start_date\":\"2020-07-28\",\"system_mtime\":\"2020-07-28 15:56:20 UTC\",\"user_mtime\":\"2020-07-28 15:56:20 UTC\",\"ref\":\"/locations/7799\",\"_resolved\":{\"lock_version\":0,\"building\":\"Main House\",\"title\":\"Main House, 3rd Floor, Digital Lab [DLAB]\",\"floor\":\"3rd Floor\",\"room\":\"Digital Lab\",\"classification\":\"DLAB\",\"coordinate_1_indicator\":\"unspecified\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:28:20Z\",\"system_mtime\":\"2017-12-15T22:26:27Z\",\"user_mtime\":\"2014-12-06T02:28:20Z\",\"jsonmodel_type\":\"location\",\"external_ids\":[{\"external_id\":\"7804\",\"source\":\"Archivists Toolkit Database::LOCATION\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:28:20Z\",\"system_mtime\":\"2014-12-06T02:28:20Z\",\"user_mtime\":\"2014-12-06T02:28:20Z\",\"jsonmodel_type\":\"external_id\"}],\"functions\":[],\"uri\":\"/locations/7799\"}}],\"series\":[],\"collection\":[{\"ref\":\"/repositories/2/resources/13067\",\"identifier\":\"rqt\",\"display_string\":\"request broker testing\"}],\"uri\":\"/repositories/2/top_containers/191165\",\"repository\":{\"ref\":\"/repositories/2\"},\"restricted\":false,\"is_linked_to_published_record\":false,\"display_string\":\"Box 5: [A9347865987]\",\"long_display_string\":\"rqt, Box 5 [A9347865987]\"}}}},{\"lock_version\":0,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T16:00:25Z\",\"system_mtime\":\"2020-07-28T16:00:25Z\",\"user_mtime\":\"2020-07-28T16:00:25Z\",\"instance_type\":\"microform\",\"jsonmodel_type\":\"instance\",\"is_representative\":false,\"sub_container\":{\"lock_version\":0,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T16:00:25Z\",\"system_mtime\":\"2020-07-28T16:00:25Z\",\"user_mtime\":\"2020-07-28T16:00:25Z\",\"jsonmodel_type\":\"sub_container\",\"top_container\":{\"ref\":\"/repositories/2/top_containers/191166\",\"_resolved\":{\"lock_version\":1,\"barcode\":\"A983475\",\"indicator\":\"2\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T15:56:04Z\",\"system_mtime\":\"2020-07-28T16:00:25Z\",\"user_mtime\":\"2020-07-28T15:56:04Z\",\"created_for_collection\":\"/repositories/2/resources/13067\",\"type\":\"reel\",\"jsonmodel_type\":\"top_container\",\"active_restrictions\":[],\"container_locations\":[{\"jsonmodel_type\":\"container_location\",\"status\":\"current\",\"start_date\":\"2020-07-28\",\"system_mtime\":\"2020-07-28 15:56:04 UTC\",\"user_mtime\":\"2020-07-28 15:56:04 UTC\",\"ref\":\"/locations/1313\",\"_resolved\":{\"lock_version\":1,\"building\":\"Rockefeller Archive Center\",\"title\":\"Rockefeller Archive Center, Blue Level, Vault 103 [Unit: 2, Shelf: 2]\",\"floor\":\"Blue Level\",\"room\":\"Vault 103\",\"coordinate_1_label\":\"Unit\",\"coordinate_1_indicator\":\" 2\",\"coordinate_2_label\":\"Shelf\",\"coordinate_2_indicator\":\" 2\",\"created_by\":\"admin\",\"last_modified_by\":\"irvings\",\"create_time\":\"2014-12-06T02:21:56Z\",\"system_mtime\":\"2017-12-15T22:26:27Z\",\"user_mtime\":\"2017-12-15T14:02:40Z\",\"jsonmodel_type\":\"location\",\"external_ids\":[{\"external_id\":\"1313\",\"source\":\"Archivists Toolkit Database::LOCATION\",\"created_by\":\"irvings\",\"last_modified_by\":\"irvings\",\"create_time\":\"2017-12-15T14:02:40Z\",\"system_mtime\":\"2017-12-15T14:02:40Z\",\"user_mtime\":\"2017-12-15T14:02:40Z\",\"jsonmodel_type\":\"external_id\"}],\"functions\":[],\"uri\":\"/locations/1313\"}}],\"series\":[],\"collection\":[{\"ref\":\"/repositories/2/resources/13067\",\"identifier\":\"rqt\",\"display_string\":\"request broker testing\"}],\"uri\":\"/repositories/2/top_containers/191166\",\"repository\":{\"ref\":\"/repositories/2\"},\"restricted\":false,\"is_linked_to_published_record\":false,\"display_string\":\"Reel 2: [A983475]\",\"long_display_string\":\"rqt, Reel 2 [A983475]\"}}}}],\"notes\":[],\"uri\":\"/repositories/2/archival_objects/1154387\",\"repository\":{\"ref\":\"/repositories/2\"},\"resource\":{\"ref\":\"/repositories/2/resources/13067\",\"_resolved\":{\"lock_version\":2,\"title\":\"request broker testing\",\"publish\":true,\"restrictions\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:10:58Z\",\"system_mtime\":\"2020-07-29T18:20:22Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"suppressed\":false,\"is_slug_auto\":false,\"id_0\":\"rqt\",\"language\":\"eng\",\"level\":\"collection\",\"resource_type\":\"collection\",\"jsonmodel_type\":\"resource\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[{\"lock_version\":0,\"number\":\"1\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"portion\":\"whole\",\"extent_type\":\"Cubic Feet\",\"jsonmodel_type\":\"extent\"}],\"dates\":[{\"lock_version\":0,\"expression\":\"1900-2000\",\"begin\":\"1900\",\"end\":\"2000\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"date_type\":\"inclusive\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/corporate_entities/21125\",\"_resolved\":{\"lock_version\":11,\"publish\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_corporate_entity\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\",\"subject\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/corporate_entities/21125\",\"agent_type\":\"agent_corporate_entity\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]},\"title\":\"Ford Foundation Staff\"}},{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/people/39\",\"_resolved\":{\"lock_version\":1,\"publish\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_person\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/people/39\",\"agent_type\":\"agent_person\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]},\"title\":\" Patrick Galligan\",\"is_user\":\"pgalligan\"}}],\"revision_statements\":[],\"instances\":[],\"deaccessions\":[],\"related_accessions\":[],\"classifications\":[],\"notes\":[],\"uri\":\"/repositories/2/resources/13067\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/resources/13067/tree\"}}},\"parent\":{\"ref\":\"/repositories/2/archival_objects/1154383\"},\"has_unpublished_ancestor\":true}\n"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "POST",
+ "uri": "http://as.dev.rockarch.org:8089/users/admin/login?expiring=False",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ],
+ "Content-Length": [
+ "0"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "3936"
+ ],
"Date": [
- "Tue, 14 Jul 2020 13:12:05 GMT"
+ "Wed, 29 Jul 2020 18:20:56 GMT"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
],
"Content-Type": [
"application/json"
@@ -50,14 +845,14 @@
]
},
"body": {
- "string": "{\"session\":\"902720f406e30b645a9b0c5857fea31d1e6424380788f862e07228f5533aae27\",\"user\":{\"lock_version\":336883,\"username\":\"admin\",\"name\":\"Administrator\",\"is_system_user\":true,\"create_time\":\"2014-12-05T20:32:17Z\",\"system_mtime\":\"2020-07-14T13:12:05Z\",\"user_mtime\":\"2020-07-14T13:12:05Z\",\"jsonmodel_type\":\"user\",\"groups\":[],\"is_admin\":true,\"uri\":\"/users/1\",\"agent_record\":{\"ref\":\"/agents/people/1\"},\"permissions\":{\"/repositories/2\":[\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\",\"view_repository\",\"transfer_repository\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"update_classification_record\",\"delete_classification_record\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"cancel_job\",\"create_job\"],\"/repositories/1\":[\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\",\"administer_system\",\"manage_users\",\"become_user\",\"view_all_records\",\"create_repository\",\"delete_repository\",\"transfer_repository\",\"index_system\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"view_repository\",\"update_classification_record\",\"delete_classification_record\",\"mediate_edits\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"create_job\",\"cancel_job\",\"update_assessment_record\",\"delete_assessment_record\",\"manage_assessment_attributes\",\"manage_enumeration_record\"],\"_archivesspace\":[\"administer_system\",\"manage_users\",\"become_user\",\"view_all_records\",\"create_repository\",\"delete_repository\",\"transfer_repository\",\"index_system\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"view_repository\",\"update_classification_record\",\"delete_classification_record\",\"mediate_edits\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"create_job\",\"cancel_job\",\"update_assessment_record\",\"delete_assessment_record\",\"manage_assessment_attributes\",\"manage_enumeration_record\",\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\"]}}}\n"
+ "string": "{\"session\":\"d7dd145bd31ad8fb23e19cd5f7b7e9caf880bc738fc429568bfd5d4061f504ab\",\"user\":{\"lock_version\":359843,\"username\":\"admin\",\"name\":\"Administrator\",\"is_system_user\":true,\"create_time\":\"2014-12-05T20:32:17Z\",\"system_mtime\":\"2020-07-29T18:20:56Z\",\"user_mtime\":\"2020-07-29T18:20:56Z\",\"jsonmodel_type\":\"user\",\"groups\":[],\"is_admin\":true,\"uri\":\"/users/1\",\"agent_record\":{\"ref\":\"/agents/people/1\"},\"permissions\":{\"/repositories/2\":[\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\",\"view_repository\",\"transfer_repository\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"update_classification_record\",\"delete_classification_record\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"cancel_job\",\"create_job\"],\"/repositories/1\":[\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\",\"administer_system\",\"manage_users\",\"become_user\",\"view_all_records\",\"create_repository\",\"delete_repository\",\"transfer_repository\",\"index_system\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"view_repository\",\"update_classification_record\",\"delete_classification_record\",\"mediate_edits\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"create_job\",\"cancel_job\",\"update_assessment_record\",\"delete_assessment_record\",\"manage_assessment_attributes\",\"manage_enumeration_record\"],\"_archivesspace\":[\"administer_system\",\"manage_users\",\"become_user\",\"view_all_records\",\"create_repository\",\"delete_repository\",\"transfer_repository\",\"index_system\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"view_repository\",\"update_classification_record\",\"delete_classification_record\",\"mediate_edits\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"create_job\",\"cancel_job\",\"update_assessment_record\",\"delete_assessment_record\",\"manage_assessment_attributes\",\"manage_enumeration_record\",\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\"]}}}\n"
}
}
},
{
"request": {
"method": "GET",
- "uri": "http://192.168.50.7:8089/version",
+ "uri": "http://as.dev.rockarch.org:8089/version",
"body": null,
"headers": {
"User-Agent": [
@@ -80,17 +875,173 @@
"message": "OK"
},
"headers": {
+ "Content-Length": [
+ "22"
+ ],
+ "Date": [
+ "Wed, 29 Jul 2020 18:20:57 GMT"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
+ ],
+ "Content-Type": [
+ "text/html;charset=UTF-8"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "X-XSS-Protection": [
+ "1; mode=block"
+ ],
"X-Frame-Options": [
"SAMEORIGIN"
],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ]
+ },
+ "body": {
+ "string": "ArchivesSpace (v2.6.0)"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "GET",
+ "uri": "http://as.dev.rockarch.org:8089/repositories/2/archival_objects/1154388?resolve%5B%5D=ancestors&resolve%5B%5D=instances%3A%3Adigital_object&resolve%5B%5D=resource%3A%3Alinked_agents&resolve%5B%5D=top_container&resolve%5B%5D=top_container%3A%3Acontainer_locations",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
"Content-Length": [
- "22"
+ "10921"
+ ],
+ "Date": [
+ "Wed, 29 Jul 2020 18:20:57 GMT"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
+ ],
+ "Content-Type": [
+ "application/json"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ]
+ },
+ "body": {
+ "string": "{\"lock_version\":0,\"position\":1,\"publish\":false,\"ref_id\":\"d0ff956bc4ea56bc7f2b826412d44d3c\",\"title\":\"no containers\",\"display_string\":\"no containers\",\"restrictions_apply\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T17:24:33Z\",\"system_mtime\":\"2020-07-28T17:24:33Z\",\"user_mtime\":\"2020-07-28T17:24:33Z\",\"suppressed\":false,\"is_slug_auto\":false,\"level\":\"item\",\"jsonmodel_type\":\"archival_object\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"ancestors\":[{\"ref\":\"/repositories/2/archival_objects/1154381\",\"level\":\"series\",\"_resolved\":{\"lock_version\":1,\"position\":0,\"publish\":false,\"ref_id\":\"05de6df0368c2eefcd2e6c7c41377f4f\",\"title\":\"Series 1\",\"display_string\":\"Series 1\",\"restrictions_apply\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:11:47Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:14:16Z\",\"suppressed\":false,\"is_slug_auto\":false,\"level\":\"series\",\"jsonmodel_type\":\"archival_object\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"ancestors\":[{\"ref\":\"/repositories/2/resources/13067\",\"level\":\"collection\"}],\"instances\":[],\"notes\":[{\"jsonmodel_type\":\"note_multipart\",\"type\":\"accessrestrict\",\"rights_restriction\":{\"local_access_restriction_type\":[]},\"subnotes\":[{\"jsonmodel_type\":\"note_text\",\"content\":\"Closed for research\",\"publish\":false}],\"persistent_id\":\"75bf2d45b4f902aa48c0beb77163a709\",\"publish\":false}],\"uri\":\"/repositories/2/archival_objects/1154381\",\"repository\":{\"ref\":\"/repositories/2\"},\"resource\":{\"ref\":\"/repositories/2/resources/13067\"},\"has_unpublished_ancestor\":false}},{\"ref\":\"/repositories/2/resources/13067\",\"level\":\"collection\",\"_resolved\":{\"lock_version\":2,\"title\":\"request broker testing\",\"publish\":true,\"restrictions\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:10:58Z\",\"system_mtime\":\"2020-07-29T18:20:22Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"suppressed\":false,\"is_slug_auto\":false,\"id_0\":\"rqt\",\"language\":\"eng\",\"level\":\"collection\",\"resource_type\":\"collection\",\"jsonmodel_type\":\"resource\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[{\"lock_version\":0,\"number\":\"1\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"portion\":\"whole\",\"extent_type\":\"Cubic Feet\",\"jsonmodel_type\":\"extent\"}],\"dates\":[{\"lock_version\":0,\"expression\":\"1900-2000\",\"begin\":\"1900\",\"end\":\"2000\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"date_type\":\"inclusive\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/corporate_entities/21125\",\"_resolved\":{\"lock_version\":11,\"publish\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_corporate_entity\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\",\"subject\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/corporate_entities/21125\",\"agent_type\":\"agent_corporate_entity\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]},\"title\":\"Ford Foundation Staff\"}},{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/people/39\",\"_resolved\":{\"lock_version\":1,\"publish\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_person\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/people/39\",\"agent_type\":\"agent_person\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]},\"title\":\" Patrick Galligan\",\"is_user\":\"pgalligan\"}}],\"revision_statements\":[],\"instances\":[],\"deaccessions\":[],\"related_accessions\":[],\"classifications\":[],\"notes\":[],\"uri\":\"/repositories/2/resources/13067\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/resources/13067/tree\"}}}],\"instances\":[],\"notes\":[],\"uri\":\"/repositories/2/archival_objects/1154388\",\"repository\":{\"ref\":\"/repositories/2\"},\"resource\":{\"ref\":\"/repositories/2/resources/13067\",\"_resolved\":{\"lock_version\":2,\"title\":\"request broker testing\",\"publish\":true,\"restrictions\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:10:58Z\",\"system_mtime\":\"2020-07-29T18:20:22Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"suppressed\":false,\"is_slug_auto\":false,\"id_0\":\"rqt\",\"language\":\"eng\",\"level\":\"collection\",\"resource_type\":\"collection\",\"jsonmodel_type\":\"resource\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[{\"lock_version\":0,\"number\":\"1\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"portion\":\"whole\",\"extent_type\":\"Cubic Feet\",\"jsonmodel_type\":\"extent\"}],\"dates\":[{\"lock_version\":0,\"expression\":\"1900-2000\",\"begin\":\"1900\",\"end\":\"2000\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"date_type\":\"inclusive\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/corporate_entities/21125\",\"_resolved\":{\"lock_version\":11,\"publish\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_corporate_entity\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\",\"subject\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/corporate_entities/21125\",\"agent_type\":\"agent_corporate_entity\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]},\"title\":\"Ford Foundation Staff\"}},{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/people/39\",\"_resolved\":{\"lock_version\":1,\"publish\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_person\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/people/39\",\"agent_type\":\"agent_person\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]},\"title\":\" Patrick Galligan\",\"is_user\":\"pgalligan\"}}],\"revision_statements\":[],\"instances\":[],\"deaccessions\":[],\"related_accessions\":[],\"classifications\":[],\"notes\":[],\"uri\":\"/repositories/2/resources/13067\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/resources/13067/tree\"}}},\"parent\":{\"ref\":\"/repositories/2/archival_objects/1154381\"},\"has_unpublished_ancestor\":true}\n"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "POST",
+ "uri": "http://as.dev.rockarch.org:8089/users/admin/login?expiring=False",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ],
+ "Content-Length": [
+ "0"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "3936"
+ ],
+ "Date": [
+ "Wed, 29 Jul 2020 18:20:58 GMT"
],
"Cache-Control": [
"private, must-revalidate, max-age=0"
],
+ "Content-Type": [
+ "application/json"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "Server": [
+ "Jetty(8.1.5.v20120716)"
+ ]
+ },
+ "body": {
+ "string": "{\"session\":\"534ca3efdaf643a829b8df2cde4b52affd132badf9709d320baceaa203fe057d\",\"user\":{\"lock_version\":359844,\"username\":\"admin\",\"name\":\"Administrator\",\"is_system_user\":true,\"create_time\":\"2014-12-05T20:32:17Z\",\"system_mtime\":\"2020-07-29T18:20:58Z\",\"user_mtime\":\"2020-07-29T18:20:58Z\",\"jsonmodel_type\":\"user\",\"groups\":[],\"is_admin\":true,\"uri\":\"/users/1\",\"agent_record\":{\"ref\":\"/agents/people/1\"},\"permissions\":{\"/repositories/2\":[\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\",\"view_repository\",\"transfer_repository\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"update_classification_record\",\"delete_classification_record\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"cancel_job\",\"create_job\"],\"/repositories/1\":[\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\",\"administer_system\",\"manage_users\",\"become_user\",\"view_all_records\",\"create_repository\",\"delete_repository\",\"transfer_repository\",\"index_system\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"view_repository\",\"update_classification_record\",\"delete_classification_record\",\"mediate_edits\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"create_job\",\"cancel_job\",\"update_assessment_record\",\"delete_assessment_record\",\"manage_assessment_attributes\",\"manage_enumeration_record\"],\"_archivesspace\":[\"administer_system\",\"manage_users\",\"become_user\",\"view_all_records\",\"create_repository\",\"delete_repository\",\"transfer_repository\",\"index_system\",\"manage_repository\",\"update_accession_record\",\"update_resource_record\",\"update_digital_object_record\",\"update_event_record\",\"delete_event_record\",\"suppress_archival_record\",\"transfer_archival_record\",\"delete_archival_record\",\"view_suppressed\",\"view_repository\",\"update_classification_record\",\"delete_classification_record\",\"mediate_edits\",\"import_records\",\"cancel_importer_job\",\"manage_subject_record\",\"manage_agent_record\",\"manage_vocabulary_record\",\"merge_agents_and_subjects\",\"merge_archival_record\",\"manage_rde_templates\",\"update_container_record\",\"manage_container_record\",\"manage_container_profile_record\",\"manage_location_profile_record\",\"create_job\",\"cancel_job\",\"update_assessment_record\",\"delete_assessment_record\",\"manage_assessment_attributes\",\"manage_enumeration_record\",\"update_location_record\",\"delete_vocabulary_record\",\"update_subject_record\",\"delete_subject_record\",\"update_agent_record\",\"delete_agent_record\",\"update_vocabulary_record\",\"merge_subject_record\",\"merge_agent_record\",\"update_container_profile_record\",\"update_location_profile_record\",\"update_enumeration_record\"]}}}\n"
+ }
+ }
+ },
+ {
+ "request": {
+ "method": "GET",
+ "uri": "http://as.dev.rockarch.org:8089/version",
+ "body": null,
+ "headers": {
+ "User-Agent": [
+ "ArchivesSnake/0.1"
+ ],
+ "Accept-Encoding": [
+ "gzip, deflate"
+ ],
+ "Accept": [
+ "application/json"
+ ],
+ "Connection": [
+ "keep-alive"
+ ]
+ }
+ },
+ "response": {
+ "status": {
+ "code": 200,
+ "message": "OK"
+ },
+ "headers": {
+ "Content-Length": [
+ "22"
+ ],
"Date": [
- "Tue, 14 Jul 2020 13:12:05 GMT"
+ "Wed, 29 Jul 2020 18:20:58 GMT"
+ ],
+ "Cache-Control": [
+ "private, must-revalidate, max-age=0"
],
"Content-Type": [
"text/html;charset=UTF-8"
@@ -101,6 +1052,9 @@
"X-XSS-Protection": [
"1; mode=block"
],
+ "X-Frame-Options": [
+ "SAMEORIGIN"
+ ],
"Server": [
"Jetty(8.1.5.v20120716)"
]
@@ -113,7 +1067,7 @@
{
"request": {
"method": "GET",
- "uri": "http://192.168.50.7:8089/repositories/2/archival_objects/8457",
+ "uri": "http://as.dev.rockarch.org:8089/repositories/2/archival_objects/1154389?resolve%5B%5D=ancestors&resolve%5B%5D=instances%3A%3Adigital_object&resolve%5B%5D=resource%3A%3Alinked_agents&resolve%5B%5D=top_container&resolve%5B%5D=top_container%3A%3Acontainer_locations",
"body": null,
"headers": {
"User-Agent": [
@@ -137,14 +1091,14 @@
},
"headers": {
"Content-Length": [
- "3697"
+ "12987"
+ ],
+ "Date": [
+ "Wed, 29 Jul 2020 18:20:58 GMT"
],
"Cache-Control": [
"private, must-revalidate, max-age=0"
],
- "Date": [
- "Tue, 14 Jul 2020 13:12:05 GMT"
- ],
"Content-Type": [
"application/json"
],
@@ -156,7 +1110,7 @@
]
},
"body": {
- "string": "{\"lock_version\":1,\"position\":0,\"publish\":true,\"ref_id\":\"a0ba120af0bb44ba8088ddc61c4a7280\",\"component_id\":\"1\",\"title\":\"Personal\",\"display_string\":\"Personal, 1886\u20131961 (bulk 1933\u20131946)\",\"restrictions_apply\":false,\"created_by\":\"admin\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2014-12-06T03:37:13Z\",\"system_mtime\":\"2019-10-10T12:37:58Z\",\"user_mtime\":\"2017-02-16T22:46:50Z\",\"suppressed\":false,\"is_slug_auto\":false,\"language\":\"eng\",\"level\":\"series\",\"jsonmodel_type\":\"archival_object\",\"external_ids\":[{\"external_id\":\"216\",\"source\":\"Archivists Toolkit Database::RESOURCE_COMPONENT\",\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2017-02-16T22:46:50Z\",\"system_mtime\":\"2017-02-16T22:46:50Z\",\"user_mtime\":\"2017-02-16T22:46:50Z\",\"jsonmodel_type\":\"external_id\"}],\"subjects\":[],\"linked_events\":[],\"extents\":[{\"lock_version\":0,\"number\":\"0.2\",\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2017-02-16T22:46:50Z\",\"system_mtime\":\"2017-02-16T22:46:50Z\",\"user_mtime\":\"2017-02-16T22:46:50Z\",\"portion\":\"whole\",\"extent_type\":\"cubic_feet\",\"jsonmodel_type\":\"extent\"}],\"dates\":[{\"lock_version\":0,\"expression\":\"1886\u20131961 (bulk 1933\u20131946)\",\"begin\":\"1886\",\"end\":\"1961\",\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2017-02-16T22:46:50Z\",\"system_mtime\":\"2017-02-16T22:46:50Z\",\"user_mtime\":\"2017-02-16T22:46:50Z\",\"date_type\":\"inclusive\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"},{\"lock_version\":0,\"begin\":\"1933\",\"end\":\"1946\",\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2017-02-16T22:46:50Z\",\"system_mtime\":\"2017-02-16T22:46:50Z\",\"user_mtime\":\"2017-02-16T22:46:50Z\",\"date_type\":\"bulk\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"ancestors\":[{\"ref\":\"/repositories/2/resources/91\",\"level\":\"collection\"}],\"instances\":[],\"notes\":[{\"subnotes\":[{\"content\":\"Alphabetical by subject or format.\\n\\n\",\"publish\":true,\"jsonmodel_type\":\"note_text\"}],\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"a37f8c3285188bc06dbd5f5a1cccf876\",\"label\":\"Arrangement:\",\"type\":\"arrangement\",\"publish\":true},{\"subnotes\":[{\"content\":\"This series consists primarily of Bergmann's correspondence from 1934\u20131944 documenting his appointment to the Rockefeller Institute of Medical Research (RIMR), arrangements for his arrival in the U.S., efforts to gain immigrant status, retiring allowances, and RIMR administrative matters. Correspondents include Simon Flexner, H. T. Clarke, and J. B. Conant. The series also documents Bergmann's death and his funeral service held at RIMR, including a biographical memoir written by Joseph S. Fruton that was used in the Memorial Minute adopted by the Board of Scientific Directors and a short address delivered by Fruton at the funeral service. Other biographical records consist of copies of documents submitted for naturalization, including Bergmann's birth certificate, prison record, and marriage certificate, all of which are in German. Also included are several photographs of Bergmann, a listing of periodicals and books from Bergmann's library that were made available for purchase by Joseph Fruton following Bergmann's death, and a copy of the collection description and inventory for the Max Bergmann papers housed at the American Philosophical Society Library.\\n\\n\",\"publish\":true,\"jsonmodel_type\":\"note_text\"}],\"jsonmodel_type\":\"note_multipart\",\"persistent_id\":\"b032fef2831cdc94b9bbd83c2588eb43\",\"label\":\"Summary:\",\"type\":\"scopecontent\",\"publish\":true}],\"uri\":\"/repositories/2/archival_objects/8457\",\"repository\":{\"ref\":\"/repositories/2\"},\"resource\":{\"ref\":\"/repositories/2/resources/91\"},\"has_unpublished_ancestor\":false}\n"
+ "string": "{\"lock_version\":0,\"position\":4,\"publish\":true,\"ref_id\":\"5489d292ae717c811bbc620245a6f1f1\",\"title\":\"no preferred format\",\"display_string\":\"no preferred format\",\"restrictions_apply\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-29T18:20:22Z\",\"system_mtime\":\"2020-07-29T18:20:22Z\",\"user_mtime\":\"2020-07-29T18:20:22Z\",\"suppressed\":false,\"is_slug_auto\":false,\"language\":\"eng\",\"level\":\"item\",\"jsonmodel_type\":\"archival_object\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"ancestors\":[{\"ref\":\"/repositories/2/archival_objects/1154383\",\"level\":\"series\",\"_resolved\":{\"lock_version\":0,\"position\":1,\"publish\":false,\"ref_id\":\"c1f0f7168c7eefa4935f0712eca5b99f\",\"title\":\"Series 2\",\"display_string\":\"Series 2\",\"restrictions_apply\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:15:04Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:15:04Z\",\"suppressed\":false,\"is_slug_auto\":false,\"level\":\"series\",\"jsonmodel_type\":\"archival_object\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[],\"dates\":[],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[],\"ancestors\":[{\"ref\":\"/repositories/2/resources/13067\",\"level\":\"collection\"}],\"instances\":[],\"notes\":[],\"uri\":\"/repositories/2/archival_objects/1154383\",\"repository\":{\"ref\":\"/repositories/2\"},\"resource\":{\"ref\":\"/repositories/2/resources/13067\"},\"has_unpublished_ancestor\":false}},{\"ref\":\"/repositories/2/resources/13067\",\"level\":\"collection\",\"_resolved\":{\"lock_version\":2,\"title\":\"request broker testing\",\"publish\":true,\"restrictions\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:10:58Z\",\"system_mtime\":\"2020-07-29T18:20:22Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"suppressed\":false,\"is_slug_auto\":false,\"id_0\":\"rqt\",\"language\":\"eng\",\"level\":\"collection\",\"resource_type\":\"collection\",\"jsonmodel_type\":\"resource\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[{\"lock_version\":0,\"number\":\"1\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"portion\":\"whole\",\"extent_type\":\"Cubic Feet\",\"jsonmodel_type\":\"extent\"}],\"dates\":[{\"lock_version\":0,\"expression\":\"1900-2000\",\"begin\":\"1900\",\"end\":\"2000\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"date_type\":\"inclusive\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/corporate_entities/21125\",\"_resolved\":{\"lock_version\":11,\"publish\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_corporate_entity\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\",\"subject\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/corporate_entities/21125\",\"agent_type\":\"agent_corporate_entity\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]},\"title\":\"Ford Foundation Staff\"}},{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/people/39\",\"_resolved\":{\"lock_version\":1,\"publish\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_person\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/people/39\",\"agent_type\":\"agent_person\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]},\"title\":\" Patrick Galligan\",\"is_user\":\"pgalligan\"}}],\"revision_statements\":[],\"instances\":[],\"deaccessions\":[],\"related_accessions\":[],\"classifications\":[],\"notes\":[],\"uri\":\"/repositories/2/resources/13067\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/resources/13067/tree\"}}}],\"instances\":[{\"lock_version\":0,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-29T18:20:22Z\",\"system_mtime\":\"2020-07-29T18:20:22Z\",\"user_mtime\":\"2020-07-29T18:20:22Z\",\"instance_type\":\"bound volume\",\"jsonmodel_type\":\"instance\",\"is_representative\":false,\"sub_container\":{\"lock_version\":0,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-29T18:20:22Z\",\"system_mtime\":\"2020-07-29T18:20:22Z\",\"user_mtime\":\"2020-07-29T18:20:22Z\",\"jsonmodel_type\":\"sub_container\",\"top_container\":{\"ref\":\"/repositories/2/top_containers/191167\",\"_resolved\":{\"lock_version\":1,\"barcode\":\"A947386987\",\"indicator\":\"1\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-29T18:20:19Z\",\"system_mtime\":\"2020-07-29T18:20:22Z\",\"user_mtime\":\"2020-07-29T18:20:19Z\",\"created_for_collection\":\"/repositories/2/resources/13067\",\"type\":\"object\",\"jsonmodel_type\":\"top_container\",\"active_restrictions\":[],\"container_locations\":[{\"jsonmodel_type\":\"container_location\",\"status\":\"current\",\"start_date\":\"2020-07-29\",\"system_mtime\":\"2020-07-29 18:20:19 UTC\",\"user_mtime\":\"2020-07-29 18:20:19 UTC\",\"ref\":\"/locations/1313\",\"_resolved\":{\"lock_version\":1,\"building\":\"Rockefeller Archive Center\",\"title\":\"Rockefeller Archive Center, Blue Level, Vault 103 [Unit: 2, Shelf: 2]\",\"floor\":\"Blue Level\",\"room\":\"Vault 103\",\"coordinate_1_label\":\"Unit\",\"coordinate_1_indicator\":\" 2\",\"coordinate_2_label\":\"Shelf\",\"coordinate_2_indicator\":\" 2\",\"created_by\":\"admin\",\"last_modified_by\":\"irvings\",\"create_time\":\"2014-12-06T02:21:56Z\",\"system_mtime\":\"2017-12-15T22:26:27Z\",\"user_mtime\":\"2017-12-15T14:02:40Z\",\"jsonmodel_type\":\"location\",\"external_ids\":[{\"external_id\":\"1313\",\"source\":\"Archivists Toolkit Database::LOCATION\",\"created_by\":\"irvings\",\"last_modified_by\":\"irvings\",\"create_time\":\"2017-12-15T14:02:40Z\",\"system_mtime\":\"2017-12-15T14:02:40Z\",\"user_mtime\":\"2017-12-15T14:02:40Z\",\"jsonmodel_type\":\"external_id\"}],\"functions\":[],\"uri\":\"/locations/1313\"}}],\"series\":[],\"collection\":[{\"ref\":\"/repositories/2/resources/13067\",\"identifier\":\"rqt\",\"display_string\":\"request broker testing\"}],\"uri\":\"/repositories/2/top_containers/191167\",\"repository\":{\"ref\":\"/repositories/2\"},\"restricted\":false,\"is_linked_to_published_record\":false,\"display_string\":\"Object 1: [A947386987]\",\"long_display_string\":\"rqt, Object 1 [A947386987]\"}}}}],\"notes\":[],\"uri\":\"/repositories/2/archival_objects/1154389\",\"repository\":{\"ref\":\"/repositories/2\"},\"resource\":{\"ref\":\"/repositories/2/resources/13067\",\"_resolved\":{\"lock_version\":2,\"title\":\"request broker testing\",\"publish\":true,\"restrictions\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:10:58Z\",\"system_mtime\":\"2020-07-29T18:20:22Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"suppressed\":false,\"is_slug_auto\":false,\"id_0\":\"rqt\",\"language\":\"eng\",\"level\":\"collection\",\"resource_type\":\"collection\",\"jsonmodel_type\":\"resource\",\"external_ids\":[],\"subjects\":[],\"linked_events\":[],\"extents\":[{\"lock_version\":0,\"number\":\"1\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"portion\":\"whole\",\"extent_type\":\"Cubic Feet\",\"jsonmodel_type\":\"extent\"}],\"dates\":[{\"lock_version\":0,\"expression\":\"1900-2000\",\"begin\":\"1900\",\"end\":\"2000\",\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2020-07-28T14:27:23Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2020-07-28T14:27:23Z\",\"date_type\":\"inclusive\",\"label\":\"creation\",\"jsonmodel_type\":\"date\"}],\"external_documents\":[],\"rights_statements\":[],\"linked_agents\":[{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/corporate_entities/21125\",\"_resolved\":{\"lock_version\":11,\"publish\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_corporate_entity\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\",\"subject\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/corporate_entities/21125\",\"agent_type\":\"agent_corporate_entity\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Ford Foundation Staff\",\"sort_name\":\"Ford Foundation Staff\",\"sort_name_auto_generate\":true,\"created_by\":\"pgalligan\",\"last_modified_by\":\"pgalligan\",\"create_time\":\"2016-01-05T19:15:14Z\",\"system_mtime\":\"2016-01-05T19:15:14Z\",\"user_mtime\":\"2016-01-05T19:15:14Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"jsonmodel_type\":\"name_corporate_entity\",\"use_dates\":[]},\"title\":\"Ford Foundation Staff\"}},{\"role\":\"creator\",\"terms\":[],\"ref\":\"/agents/people/39\",\"_resolved\":{\"lock_version\":1,\"publish\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2020-07-28T14:27:23Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"is_slug_auto\":false,\"jsonmodel_type\":\"agent_person\",\"agent_contacts\":[],\"linked_agent_roles\":[\"creator\"],\"external_documents\":[],\"notes\":[],\"used_within_repositories\":[],\"used_within_published_repositories\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/people/39\",\"agent_type\":\"agent_person\",\"is_linked_to_published_record\":true,\"display_name\":{\"lock_version\":0,\"primary_name\":\"Patrick Galligan\",\"sort_name\":\" Patrick Galligan\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2014-12-06T02:29:40Z\",\"system_mtime\":\"2014-12-06T02:29:40Z\",\"user_mtime\":\"2014-12-06T02:29:40Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"rules\":\"local\",\"name_order\":\"direct\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]},\"title\":\" Patrick Galligan\",\"is_user\":\"pgalligan\"}}],\"revision_statements\":[],\"instances\":[],\"deaccessions\":[],\"related_accessions\":[],\"classifications\":[],\"notes\":[],\"uri\":\"/repositories/2/resources/13067\",\"repository\":{\"ref\":\"/repositories/2\"},\"tree\":{\"ref\":\"/repositories/2/resources/13067/tree\"}}},\"parent\":{\"ref\":\"/repositories/2/archival_objects/1154383\"},\"has_unpublished_ancestor\":true}\n"
}
}
}
diff --git a/fixtures/digital_object_instance.json b/fixtures/digital_object_instance.json
new file mode 100644
index 0000000..16c6f1e
--- /dev/null
+++ b/fixtures/digital_object_instance.json
@@ -0,0 +1,33 @@
+{
+ "lock_version": 0,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-07-28T14:16:54Z",
+ "system_mtime": "2020-07-28T14:16:54Z",
+ "user_mtime": "2020-07-28T14:16:54Z",
+ "instance_type": "digital_object",
+ "jsonmodel_type": "instance",
+ "is_representative": false,
+ "digital_object": {
+ "ref": "/repositories/2/digital_objects/3367",
+ "_resolved": {
+ "digital_object_id": "238475",
+ "title": "digital object",
+ "file_versions": [
+ {
+ "lock_version": 0,
+ "file_uri": "http://google.com",
+ "publish": true,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-07-28T19:44:16Z",
+ "system_mtime": "2020-07-28T19:44:16Z",
+ "user_mtime": "2020-07-28T19:44:16Z",
+ "jsonmodel_type": "file_version",
+ "is_representative": false,
+ "identifier": "8475"
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/fixtures/locations.json b/fixtures/locations.json
new file mode 100644
index 0000000..ec4ffdb
--- /dev/null
+++ b/fixtures/locations.json
@@ -0,0 +1,12 @@
+{
+ "type": "box",
+ "indicator": "2",
+ "barcode": "A12345",
+ "container_locations": [
+ {
+ "_resolved": {
+ "title": "Rockefeller Archive Center, Blue Level, Vault 106 [Unit: 66, Shelf: 7]"
+ }
+ }
+ ]
+}
diff --git a/fixtures/mixed_materials_instance.json b/fixtures/mixed_materials_instance.json
new file mode 100644
index 0000000..0f51d48
--- /dev/null
+++ b/fixtures/mixed_materials_instance.json
@@ -0,0 +1,35 @@
+{
+ "lock_version": 0,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-07-28T14:16:54Z",
+ "system_mtime": "2020-07-28T14:16:54Z",
+ "user_mtime": "2020-07-28T14:16:54Z",
+ "instance_type": "mixed materials",
+ "jsonmodel_type": "instance",
+ "is_representative": false,
+ "sub_container": {
+ "lock_version": 0,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-07-28T14:16:54Z",
+ "system_mtime": "2020-07-28T14:16:54Z",
+ "user_mtime": "2020-07-28T14:16:54Z",
+ "jsonmodel_type": "sub_container",
+ "top_container": {
+ "ref": "/repositories/2/top_containers/191161",
+ "_resolved": {
+ "type": "box",
+ "indicator": "2",
+ "barcode": "A12345",
+ "container_locations": [
+ {
+ "_resolved": {
+ "title": "Rockefeller Archive Center, Blue Level, Vault 106 [Unit: 66, Shelf: 7]"
+ }
+ }
+ ]
+ }
+ }
+ }
+}
diff --git a/fixtures/object_all.json b/fixtures/object_all.json
index 6d488be..f597294 100644
--- a/fixtures/object_all.json
+++ b/fixtures/object_all.json
@@ -26,11 +26,241 @@
"ancestors": [
{
"ref": "/repositories/2/archival_objects/1154299",
- "level": "series"
+ "level": "series",
+ "_resolved": {
+ "lock_version": 2,
+ "position": 0,
+ "publish": true,
+ "ref_id": "6cb23e1fc11f953ea3b6f45d393e763e",
+ "title": "series",
+ "display_string": "series",
+ "restrictions_apply": false,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-01-28T14:24:22Z",
+ "system_mtime": "2020-02-10T18:34:17Z",
+ "user_mtime": "2020-02-10T18:34:17Z",
+ "suppressed": false,
+ "is_slug_auto": false,
+ "level": "series",
+ "jsonmodel_type": "archival_object",
+ "external_ids": [],
+ "subjects": [],
+ "linked_events": [],
+ "extents": [],
+ "dates": [],
+ "external_documents": [],
+ "rights_statements": [
+ {
+ "lock_version": 0,
+ "identifier": "aa1d36b57fbb9c05202e6b84921ef156",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-02-10T18:34:17Z",
+ "system_mtime": "2020-02-10T18:34:17Z",
+ "user_mtime": "2020-02-10T18:34:17Z",
+ "start_date": "2020-02-07",
+ "end_date": "2020-02-15",
+ "determination_date": "2020-02-06",
+ "rights_type": "copyright",
+ "status": "copyrighted",
+ "jurisdiction": "US",
+ "jsonmodel_type": "rights_statement",
+ "external_documents": [],
+ "acts": [
+ {
+ "start_date": "2020-02-07",
+ "end_date": "2020-02-15",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-02-10T18:34:17Z",
+ "system_mtime": "2020-02-10T18:34:17Z",
+ "user_mtime": "2020-02-10T18:34:17Z",
+ "act_type": "disseminate",
+ "restriction": "disallow",
+ "jsonmodel_type": "rights_statement_act",
+ "notes": [
+ {
+ "jsonmodel_type": "note_rights_statement_act",
+ "type": "additional_information",
+ "content": [
+ "act note"
+ ],
+ "persistent_id": "0b2de25be1bb35d44a9bab8ae5a8f96f",
+ "publish": true
+ }
+ ]
+ }
+ ],
+ "linked_agents": [],
+ "notes": [
+ {
+ "jsonmodel_type": "note_rights_statement",
+ "type": "type_note",
+ "content": [
+ "type note"
+ ],
+ "persistent_id": "3a82187efe0573b134c722d2e3821ed0",
+ "publish": true
+ }
+ ]
+ }
+ ],
+ "linked_agents": [],
+ "ancestors": [
+ {
+ "ref": "/repositories/2/resources/13063",
+ "level": "collection"
+ }
+ ],
+ "instances": [],
+ "notes": [],
+ "uri": "/repositories/2/archival_objects/1154299",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "resource": {
+ "ref": "/repositories/2/resources/13063"
+ },
+ "has_unpublished_ancestor": false
+ }
},
{
"ref": "/repositories/2/resources/13063",
- "level": "collection"
+ "level": "collection",
+ "_resolved": {
+ "lock_version": 15,
+ "title": "KMTests",
+ "publish": true,
+ "restrictions": false,
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2019-12-12T15:51:53Z",
+ "system_mtime": "2020-04-14T15:36:26Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "suppressed": false,
+ "is_slug_auto": false,
+ "id_0": "121212",
+ "language": "eng",
+ "level": "collection",
+ "jsonmodel_type": "resource",
+ "external_ids": [],
+ "subjects": [],
+ "linked_events": [],
+ "extents": [
+ {
+ "lock_version": 0,
+ "number": "1",
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2020-02-03T13:35:31Z",
+ "system_mtime": "2020-02-03T13:35:31Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "portion": "whole",
+ "extent_type": "Cubic Feet",
+ "jsonmodel_type": "extent"
+ }
+ ],
+ "dates": [
+ {
+ "lock_version": 0,
+ "expression": "1991",
+ "begin": "1991",
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2020-02-03T13:35:31Z",
+ "system_mtime": "2020-02-03T13:35:31Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "date_type": "single",
+ "label": "creation",
+ "jsonmodel_type": "date"
+ }
+ ],
+ "external_documents": [],
+ "rights_statements": [],
+ "linked_agents": [
+ {
+ "role": "creator",
+ "relator": "aut",
+ "terms": [],
+ "ref": "/agents/corporate_entities/123",
+ "_resolved": {
+ "lock_version": 471,
+ "publish": true,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2015-01-14T19:15:12Z",
+ "system_mtime": "2020-04-24T17:39:12Z",
+ "user_mtime": "2015-01-14T19:15:12Z",
+ "is_slug_auto": false,
+ "jsonmodel_type": "agent_corporate_entity",
+ "agent_contacts": [],
+ "linked_agent_roles": [
+ "creator",
+ "source",
+ "subject"
+ ],
+ "external_documents": [],
+ "notes": [],
+ "used_within_repositories": [],
+ "used_within_published_repositories": [],
+ "dates_of_existence": [],
+ "names": [
+ {
+ "lock_version": 0,
+ "primary_name": "Philanthropy Foundation",
+ "sort_name": "Philanthropy Foundation",
+ "sort_name_auto_generate": true,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2015-01-14T19:15:12Z",
+ "system_mtime": "2017-08-22T15:44:40Z",
+ "user_mtime": "2015-01-14T19:15:12Z",
+ "authorized": true,
+ "is_display_name": true,
+ "source": "naf",
+ "jsonmodel_type": "name_corporate_entity",
+ "use_dates": []
+ }
+ ],
+ "related_agents": [],
+ "uri": "/agents/corporate_entities/123",
+ "agent_type": "agent_corporate_entity",
+ "is_linked_to_published_record": true,
+ "display_name": {
+ "lock_version": 0,
+ "primary_name": "Philanthropy Foundation",
+ "sort_name": "Philanthropy Foundation",
+ "sort_name_auto_generate": true,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2015-01-14T19:15:12Z",
+ "system_mtime": "2017-08-22T15:44:40Z",
+ "user_mtime": "2015-01-14T19:15:12Z",
+ "authorized": true,
+ "is_display_name": true,
+ "source": "naf",
+ "jsonmodel_type": "name_corporate_entity",
+ "use_dates": []
+ },
+ "title": "Philanthropy Foundation"
+ }
+ }
+ ],
+ "revision_statements": [],
+ "instances": [],
+ "deaccessions": [],
+ "related_accessions": [],
+ "classifications": [],
+ "notes": [],
+ "uri": "/repositories/2/resources/13063",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "tree": {
+ "ref": "/repositories/2/resources/13063/tree"
+ }
+ }
}
],
"instances": [
@@ -38,22 +268,94 @@
"lock_version": 0,
"created_by": "admin",
"last_modified_by": "admin",
- "create_time": "2020-04-14T15:36:25Z",
- "system_mtime": "2020-04-14T15:36:25Z",
- "user_mtime": "2020-04-14T15:36:25Z",
+ "create_time": "2017-02-21T16:34:34Z",
+ "system_mtime": "2017-02-21T16:34:34Z",
+ "user_mtime": "2017-02-21T16:34:34Z",
"instance_type": "mixed materials",
"jsonmodel_type": "instance",
"is_representative": false,
"sub_container": {
"lock_version": 0,
+ "indicator_2": "1699",
"created_by": "admin",
"last_modified_by": "admin",
- "create_time": "2020-04-14T15:36:25Z",
- "system_mtime": "2020-04-14T15:36:25Z",
- "user_mtime": "2020-04-14T15:36:25Z",
+ "create_time": "2017-02-21T16:34:34Z",
+ "system_mtime": "2017-02-21T16:34:34Z",
+ "user_mtime": "2017-02-21T16:34:34Z",
+ "type_2": "folder",
"jsonmodel_type": "sub_container",
"top_container": {
- "ref": "/repositories/2/top_containers/191156"
+ "ref": "/repositories/2/top_containers/31406",
+ "_resolved": {
+ "lock_version": 45,
+ "barcode": "A0000000000321",
+ "indicator": "144",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2016-08-13T04:45:02Z",
+ "system_mtime": "2019-12-06T19:05:09Z",
+ "user_mtime": "2017-12-02T06:08:33Z",
+ "type": "box",
+ "jsonmodel_type": "top_container",
+ "active_restrictions": [],
+ "container_locations": [
+ {
+ "jsonmodel_type": "container_location",
+ "status": "current",
+ "start_date": "2016-09-19",
+ "system_mtime": "2017-12-02 06:08:33 UTC",
+ "user_mtime": "2017-12-02 06:08:33 UTC",
+ "ref": "/locations/10355",
+ "_resolved": {
+ "lock_version": 0,
+ "building": "Main Building",
+ "title": "Main Building, Floor 2, Vault 200 [Unit: 1, Shelf: 2]",
+ "floor": "Floor 2",
+ "room": "Vault 200",
+ "coordinate_1_label": "Unit",
+ "coordinate_1_indicator": "1",
+ "coordinate_2_label": "Shelf",
+ "coordinate_2_indicator": "2",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2017-10-11T15:51:05Z",
+ "system_mtime": "2017-12-15T22:26:27Z",
+ "user_mtime": "2017-10-11T15:51:05Z",
+ "jsonmodel_type": "location",
+ "external_ids": [],
+ "functions": [],
+ "uri": "/locations/10355"
+ }
+ }
+ ],
+ "series": [
+ {
+ "ref": "/repositories/2/archival_objects/1154299",
+ "identifier": "3",
+ "display_string": "series",
+ "level_display_string": "Series",
+ "publish": true
+ }
+ ],
+ "collection": [
+ {
+ "ref": "/repositories/2/resources/11468",
+ "identifier": "121212",
+ "display_string": "test1"
+ }
+ ],
+ "uri": "/repositories/2/top_containers/31406",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "container_profile": {
+ "ref": "/container_profiles/3"
+ },
+ "restricted": false,
+ "is_linked_to_published_record": true,
+ "display_string": "Box 1: Series 1 [A0000000000321]",
+ "long_display_string": "121212, Series 1, Box 1 [A0000000000321], Legal Document Box"
+ }
}
}
},
@@ -90,7 +392,37 @@
"user_mtime": "2020-04-14T15:36:25Z",
"jsonmodel_type": "sub_container",
"top_container": {
- "ref": "/repositories/2/top_containers/191157"
+ "ref": "/repositories/2/top_containers/191157",
+ "_resolved": {
+ "lock_version": 1,
+ "indicator": "1",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-04-14T15:35:55Z",
+ "system_mtime": "2020-04-14T15:36:26Z",
+ "user_mtime": "2020-04-14T15:35:55Z",
+ "created_for_collection": "/repositories/2/resources/13063",
+ "type": "reel",
+ "jsonmodel_type": "top_container",
+ "active_restrictions": [],
+ "container_locations": [],
+ "series": [],
+ "collection": [
+ {
+ "ref": "/repositories/2/resources/13063",
+ "identifier": "121212",
+ "display_string": "KMTests"
+ }
+ ],
+ "uri": "/repositories/2/top_containers/191157",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "restricted": false,
+ "is_linked_to_published_record": true,
+ "display_string": "Reel 1",
+ "long_display_string": "121212, Reel 1"
+ }
}
}
},
@@ -113,7 +445,37 @@
"user_mtime": "2020-04-14T15:36:25Z",
"jsonmodel_type": "sub_container",
"top_container": {
- "ref": "/repositories/2/top_containers/191158"
+ "ref": "/repositories/2/top_containers/191158",
+ "_resolved": {
+ "lock_version": 1,
+ "indicator": "1",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-04-14T15:36:22Z",
+ "system_mtime": "2020-04-14T15:36:26Z",
+ "user_mtime": "2020-04-14T15:36:22Z",
+ "created_for_collection": "/repositories/2/resources/13063",
+ "type": "reel",
+ "jsonmodel_type": "top_container",
+ "active_restrictions": [],
+ "container_locations": [],
+ "series": [],
+ "collection": [
+ {
+ "ref": "/repositories/2/resources/13063",
+ "identifier": "121212",
+ "display_string": "KMTests"
+ }
+ ],
+ "uri": "/repositories/2/top_containers/191158",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "restricted": false,
+ "is_linked_to_published_record": true,
+ "display_string": "Reel 1",
+ "long_display_string": "121212, Reel 1"
+ }
}
}
}
@@ -138,7 +500,72 @@
"ref": "/repositories/2"
},
"resource": {
- "ref": "/repositories/2/resources/13063"
+ "ref": "/repositories/2/resources/13063",
+ "_resolved": {
+ "lock_version": 15,
+ "title": "KMTests",
+ "publish": true,
+ "restrictions": false,
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2019-12-12T15:51:53Z",
+ "system_mtime": "2020-04-14T15:36:26Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "suppressed": false,
+ "is_slug_auto": false,
+ "id_0": "121212",
+ "language": "eng",
+ "level": "collection",
+ "jsonmodel_type": "resource",
+ "external_ids": [],
+ "subjects": [],
+ "linked_events": [],
+ "extents": [
+ {
+ "lock_version": 0,
+ "number": "1",
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2020-02-03T13:35:31Z",
+ "system_mtime": "2020-02-03T13:35:31Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "portion": "whole",
+ "extent_type": "Cubic Feet",
+ "jsonmodel_type": "extent"
+ }
+ ],
+ "dates": [
+ {
+ "lock_version": 0,
+ "expression": "1991",
+ "begin": "1991",
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2020-02-03T13:35:31Z",
+ "system_mtime": "2020-02-03T13:35:31Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "date_type": "single",
+ "label": "creation",
+ "jsonmodel_type": "date"
+ }
+ ],
+ "external_documents": [],
+ "rights_statements": [],
+ "linked_agents": [],
+ "revision_statements": [],
+ "instances": [],
+ "deaccessions": [],
+ "related_accessions": [],
+ "classifications": [],
+ "notes": [],
+ "uri": "/repositories/2/resources/13063",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "tree": {
+ "ref": "/repositories/2/resources/13063/tree"
+ }
+ }
},
"parent": {
"ref": "/repositories/2/archival_objects/1154299"
diff --git a/fixtures/object_av.json b/fixtures/object_av.json
deleted file mode 100644
index 90b1cf6..0000000
--- a/fixtures/object_av.json
+++ /dev/null
@@ -1,87 +0,0 @@
-{
- "lock_version": 144,
- "position": 0,
- "publish": true,
- "ref_id": "421d180c96c333c196091b797617208c",
- "title": "test1",
- "display_string": "test1",
- "restrictions_apply": false,
- "created_by": "k.martin",
- "last_modified_by": "admin",
- "create_time": "2019-12-12T15:52:52Z",
- "system_mtime": "2020-04-14T15:36:25Z",
- "user_mtime": "2020-04-14T15:36:25Z",
- "suppressed": false,
- "is_slug_auto": false,
- "level": "subseries",
- "jsonmodel_type": "archival_object",
- "external_ids": [],
- "subjects": [],
- "linked_events": [],
- "extents": [],
- "dates": [],
- "external_documents": [],
- "rights_statements": [],
- "linked_agents": [],
- "ancestors": [
- {
- "ref": "/repositories/2/archival_objects/1154299",
- "level": "series"
- },
- {
- "ref": "/repositories/2/resources/13063",
- "level": "collection"
- }
- ],
- "instances": [
- {
- "lock_version": 0,
- "created_by": "admin",
- "last_modified_by": "admin",
- "create_time": "2020-04-14T15:36:25Z",
- "system_mtime": "2020-04-14T15:36:25Z",
- "user_mtime": "2020-04-14T15:36:25Z",
- "instance_type": "audiovisual materials",
- "jsonmodel_type": "instance",
- "is_representative": false,
- "sub_container": {
- "lock_version": 0,
- "created_by": "admin",
- "last_modified_by": "admin",
- "create_time": "2020-04-14T15:36:25Z",
- "system_mtime": "2020-04-14T15:36:25Z",
- "user_mtime": "2020-04-14T15:36:25Z",
- "jsonmodel_type": "sub_container",
- "top_container": {
- "ref": "/repositories/2/top_containers/191158"
- }
- }
- }
- ],
- "notes": [
- {
- "jsonmodel_type": "note_multipart",
- "persistent_id": "0322d44b863ca218398f207f55a074cc",
- "type": "bioghist",
- "subnotes": [
- {
- "jsonmodel_type": "note_text",
- "content": "change",
- "publish": true
- }
- ],
- "publish": true
- }
- ],
- "uri": "/repositories/2/archival_objects/1154293",
- "repository": {
- "ref": "/repositories/2"
- },
- "resource": {
- "ref": "/repositories/2/resources/13063"
- },
- "parent": {
- "ref": "/repositories/2/archival_objects/1154299"
- },
- "has_unpublished_ancestor": false
-}
diff --git a/fixtures/object_digital.json b/fixtures/object_digital.json
index a95d8e7..0c300ca 100644
--- a/fixtures/object_digital.json
+++ b/fixtures/object_digital.json
@@ -23,56 +23,113 @@
"external_documents": [],
"rights_statements": [],
"linked_agents": [],
- "ancestors": [
+ "ancestors": [],
+ "instances": [
{
- "ref": "/repositories/2/archival_objects/1154299",
- "level": "series"
+ "lock_version": 0,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-07-28T14:16:54Z",
+ "system_mtime": "2020-07-28T14:16:54Z",
+ "user_mtime": "2020-07-28T14:16:54Z",
+ "instance_type": "digital_object",
+ "jsonmodel_type": "instance",
+ "is_representative": false,
+ "digital_object": {
+ "ref": "/repositories/2/digital_objects/3367",
+ "_resolved": {
+ "digital_object_id": "238475",
+ "title": "digital object",
+ "file_versions": [
+ {
+ "lock_version": 0,
+ "file_uri": "http://google.com",
+ "publish": true,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-07-28T19:44:16Z",
+ "system_mtime": "2020-07-28T19:44:16Z",
+ "user_mtime": "2020-07-28T19:44:16Z",
+ "jsonmodel_type": "file_version",
+ "is_representative": false,
+ "identifier": "8475"
+ }
+ ]
+ }
+ }
},
- {
- "ref": "/repositories/2/resources/13063",
- "level": "collection"
- }
- ],
- "instances": [
{
"lock_version": 0,
"created_by": "admin",
"last_modified_by": "admin",
- "create_time": "2020-04-14T15:36:25Z",
- "system_mtime": "2020-04-14T15:36:25Z",
- "user_mtime": "2020-04-14T15:36:25Z",
+ "create_time": "2020-07-28T14:16:54Z",
+ "system_mtime": "2020-07-28T14:16:54Z",
+ "user_mtime": "2020-07-28T14:16:54Z",
"instance_type": "digital_object",
"jsonmodel_type": "instance",
"is_representative": false,
"digital_object": {
- "ref": "/repositories/2/digital_objects/3348"
+ "ref": "/repositories/2/digital_objects/3368",
+ "_resolved": {
+ "digital_object_id": "238476",
+ "title": "digital object 2",
+ "file_versions": [
+ {
+ "lock_version": 0,
+ "file_uri": "http://google2.com",
+ "publish": true,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-07-28T19:44:16Z",
+ "system_mtime": "2020-07-28T19:44:16Z",
+ "user_mtime": "2020-07-28T19:44:16Z",
+ "jsonmodel_type": "file_version",
+ "is_representative": false,
+ "identifier": "8475"
+ }
+ ]
+ }
}
- }
- ],
- "notes": [
+ },
{
- "jsonmodel_type": "note_multipart",
- "persistent_id": "0322d44b863ca218398f207f55a074cc",
- "type": "bioghist",
- "subnotes": [
- {
- "jsonmodel_type": "note_text",
- "content": "change",
- "publish": true
+ "lock_version": 0,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-07-28T14:16:54Z",
+ "system_mtime": "2020-07-28T14:16:54Z",
+ "user_mtime": "2020-07-28T14:16:54Z",
+ "instance_type": "mixed materials",
+ "jsonmodel_type": "instance",
+ "is_representative": false,
+ "sub_container": {
+ "lock_version": 0,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-07-28T14:16:54Z",
+ "system_mtime": "2020-07-28T14:16:54Z",
+ "user_mtime": "2020-07-28T14:16:54Z",
+ "jsonmodel_type": "sub_container",
+ "top_container": {
+ "ref": "/repositories/2/top_containers/191161",
+ "_resolved": {
+ "type": "box",
+ "indicator": "2",
+ "barcode": "A12345",
+ "container_locations": [
+ {
+ "_resolved": {
+ "title": "Rockefeller Archive Center, Blue Level, Vault 106 [Unit: 66, Shelf: 7]"
+ }
+ }
+ ]
+ }
}
- ],
- "publish": true
+ }
}
],
+ "notes": [],
"uri": "/repositories/2/archival_objects/1154293",
"repository": {
"ref": "/repositories/2"
- },
- "resource": {
- "ref": "/repositories/2/resources/13063"
- },
- "parent": {
- "ref": "/repositories/2/archival_objects/1154299"
- },
- "has_unpublished_ancestor": false
+ }
}
diff --git a/fixtures/object_microform.json b/fixtures/object_microform.json
index 9dea324..185fa42 100644
--- a/fixtures/object_microform.json
+++ b/fixtures/object_microform.json
@@ -1,87 +1,60 @@
{
- "lock_version": 144,
- "position": 0,
- "publish": true,
"ref_id": "421d180c96c333c196091b797617208c",
"title": "test1",
"display_string": "test1",
- "restrictions_apply": false,
"created_by": "k.martin",
"last_modified_by": "admin",
"create_time": "2019-12-12T15:52:52Z",
"system_mtime": "2020-04-14T15:36:25Z",
"user_mtime": "2020-04-14T15:36:25Z",
- "suppressed": false,
- "is_slug_auto": false,
"level": "subseries",
"jsonmodel_type": "archival_object",
- "external_ids": [],
- "subjects": [],
- "linked_events": [],
- "extents": [],
- "dates": [],
- "external_documents": [],
- "rights_statements": [],
- "linked_agents": [],
- "ancestors": [
- {
- "ref": "/repositories/2/archival_objects/1154299",
- "level": "series"
- },
- {
- "ref": "/repositories/2/resources/13063",
- "level": "collection"
- }
- ],
"instances": [
{
- "lock_version": 0,
- "created_by": "admin",
- "last_modified_by": "admin",
- "create_time": "2020-04-14T15:36:25Z",
- "system_mtime": "2020-04-14T15:36:25Z",
- "user_mtime": "2020-04-14T15:36:25Z",
"instance_type": "microform",
- "jsonmodel_type": "instance",
- "is_representative": false,
"sub_container": {
- "lock_version": 0,
- "created_by": "admin",
- "last_modified_by": "admin",
- "create_time": "2020-04-14T15:36:25Z",
- "system_mtime": "2020-04-14T15:36:25Z",
- "user_mtime": "2020-04-14T15:36:25Z",
"jsonmodel_type": "sub_container",
"top_container": {
- "ref": "/repositories/2/top_containers/191157"
+ "ref": "/repositories/2/top_containers/191157",
+ "_resolved": {
+ "barcode": "A12345",
+ "indicator": "1",
+ "created_for_collection": "/repositories/2/resources/13063",
+ "type": "reel",
+ "jsonmodel_type": "top_container",
+ "container_locations": [
+ {
+ "_resolved": {
+ "title": "Rockefeller Archive Center, Blue Level, Vault 106 [Unit: 66, Shelf: 7]"
+ }
+ }
+ ]
+ }
}
}
- }
- ],
- "notes": [
+ },
{
- "jsonmodel_type": "note_multipart",
- "persistent_id": "0322d44b863ca218398f207f55a074cc",
- "type": "bioghist",
- "subnotes": [
- {
- "jsonmodel_type": "note_text",
- "content": "change",
- "publish": true
+ "instance_type": "microform",
+ "sub_container": {
+ "jsonmodel_type": "sub_container",
+ "top_container": {
+ "ref": "/repositories/2/top_containers/191158",
+ "_resolved": {
+ "barcode": "A123456",
+ "indicator": "2",
+ "created_for_collection": "/repositories/2/resources/13063",
+ "type": "reel",
+ "jsonmodel_type": "top_container",
+ "container_locations": [
+ {
+ "_resolved": {
+ "title": "Rockefeller Archive Center, Blue Level, Vault 106 [Unit: 66, Shelf: 8]"
+ }
+ }
+ ]
+ }
}
- ],
- "publish": true
+ }
}
- ],
- "uri": "/repositories/2/archival_objects/1154293",
- "repository": {
- "ref": "/repositories/2"
- },
- "resource": {
- "ref": "/repositories/2/resources/13063"
- },
- "parent": {
- "ref": "/repositories/2/archival_objects/1154299"
- },
- "has_unpublished_ancestor": false
+ ]
}
diff --git a/fixtures/object_mixed.json b/fixtures/object_mixed.json
index 6a2a2ca..9043d1d 100644
--- a/fixtures/object_mixed.json
+++ b/fixtures/object_mixed.json
@@ -1,87 +1,60 @@
{
- "lock_version": 144,
- "position": 0,
- "publish": true,
"ref_id": "421d180c96c333c196091b797617208c",
"title": "test1",
"display_string": "test1",
- "restrictions_apply": false,
"created_by": "k.martin",
"last_modified_by": "admin",
"create_time": "2019-12-12T15:52:52Z",
"system_mtime": "2020-04-14T15:36:25Z",
"user_mtime": "2020-04-14T15:36:25Z",
- "suppressed": false,
- "is_slug_auto": false,
"level": "subseries",
"jsonmodel_type": "archival_object",
- "external_ids": [],
- "subjects": [],
- "linked_events": [],
- "extents": [],
- "dates": [],
- "external_documents": [],
- "rights_statements": [],
- "linked_agents": [],
- "ancestors": [
- {
- "ref": "/repositories/2/archival_objects/1154299",
- "level": "series"
- },
- {
- "ref": "/repositories/2/resources/13063",
- "level": "collection"
- }
- ],
"instances": [
{
- "lock_version": 0,
- "created_by": "admin",
- "last_modified_by": "admin",
- "create_time": "2020-04-14T15:36:25Z",
- "system_mtime": "2020-04-14T15:36:25Z",
- "user_mtime": "2020-04-14T15:36:25Z",
"instance_type": "mixed materials",
- "jsonmodel_type": "instance",
- "is_representative": false,
"sub_container": {
- "lock_version": 0,
- "created_by": "admin",
- "last_modified_by": "admin",
- "create_time": "2020-04-14T15:36:25Z",
- "system_mtime": "2020-04-14T15:36:25Z",
- "user_mtime": "2020-04-14T15:36:25Z",
"jsonmodel_type": "sub_container",
"top_container": {
- "ref": "/repositories/2/top_containers/191156"
+ "ref": "/repositories/2/top_containers/191157",
+ "_resolved": {
+ "barcode": "A12345",
+ "indicator": "1",
+ "created_for_collection": "/repositories/2/resources/13063",
+ "type": "box",
+ "jsonmodel_type": "top_container",
+ "container_locations": [
+ {
+ "_resolved": {
+ "title": "Rockefeller Archive Center, Blue Level, Vault 106 [Unit: 66, Shelf: 7]"
+ }
+ }
+ ]
+ }
}
}
- }
- ],
- "notes": [
+ },
{
- "jsonmodel_type": "note_multipart",
- "persistent_id": "0322d44b863ca218398f207f55a074cc",
- "type": "bioghist",
- "subnotes": [
- {
- "jsonmodel_type": "note_text",
- "content": "change",
- "publish": true
+ "instance_type": "mixed materials",
+ "sub_container": {
+ "jsonmodel_type": "sub_container",
+ "top_container": {
+ "ref": "/repositories/2/top_containers/191158",
+ "_resolved": {
+ "barcode": "A123456",
+ "indicator": "2",
+ "created_for_collection": "/repositories/2/resources/13063",
+ "type": "box",
+ "jsonmodel_type": "top_container",
+ "container_locations": [
+ {
+ "_resolved": {
+ "title": "Rockefeller Archive Center, Blue Level, Vault 106 [Unit: 66, Shelf: 8]"
+ }
+ }
+ ]
+ }
}
- ],
- "publish": true
+ }
}
- ],
- "uri": "/repositories/2/archival_objects/1154293",
- "repository": {
- "ref": "/repositories/2"
- },
- "resource": {
- "ref": "/repositories/2/resources/13063"
- },
- "parent": {
- "ref": "/repositories/2/archival_objects/1154299"
- },
- "has_unpublished_ancestor": false
+ ]
}
diff --git a/fixtures/object_no_expression.json b/fixtures/object_no_expression.json
new file mode 100644
index 0000000..416579f
--- /dev/null
+++ b/fixtures/object_no_expression.json
@@ -0,0 +1,574 @@
+{
+ "lock_version": 144,
+ "position": 0,
+ "publish": true,
+ "ref_id": "421d180c96c333c196091b797617208c",
+ "title": "test1",
+ "display_string": "test1",
+ "restrictions_apply": false,
+ "created_by": "k.martin",
+ "last_modified_by": "admin",
+ "create_time": "2019-12-12T15:52:52Z",
+ "system_mtime": "2020-04-14T15:36:25Z",
+ "user_mtime": "2020-04-14T15:36:25Z",
+ "suppressed": false,
+ "is_slug_auto": false,
+ "level": "subseries",
+ "jsonmodel_type": "archival_object",
+ "external_ids": [],
+ "subjects": [],
+ "linked_events": [],
+ "extents": [],
+ "dates": [],
+ "external_documents": [],
+ "rights_statements": [],
+ "linked_agents": [],
+ "ancestors": [
+ {
+ "ref": "/repositories/2/archival_objects/1154299",
+ "level": "series",
+ "_resolved": {
+ "lock_version": 2,
+ "position": 0,
+ "publish": true,
+ "ref_id": "6cb23e1fc11f953ea3b6f45d393e763e",
+ "title": "series",
+ "display_string": "series",
+ "restrictions_apply": false,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-01-28T14:24:22Z",
+ "system_mtime": "2020-02-10T18:34:17Z",
+ "user_mtime": "2020-02-10T18:34:17Z",
+ "suppressed": false,
+ "is_slug_auto": false,
+ "level": "series",
+ "jsonmodel_type": "archival_object",
+ "external_ids": [],
+ "subjects": [],
+ "linked_events": [],
+ "extents": [],
+ "dates": [],
+ "external_documents": [],
+ "rights_statements": [
+ {
+ "lock_version": 0,
+ "identifier": "aa1d36b57fbb9c05202e6b84921ef156",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-02-10T18:34:17Z",
+ "system_mtime": "2020-02-10T18:34:17Z",
+ "user_mtime": "2020-02-10T18:34:17Z",
+ "start_date": "2020-02-07",
+ "end_date": "2020-02-15",
+ "determination_date": "2020-02-06",
+ "rights_type": "copyright",
+ "status": "copyrighted",
+ "jurisdiction": "US",
+ "jsonmodel_type": "rights_statement",
+ "external_documents": [],
+ "acts": [
+ {
+ "start_date": "2020-02-07",
+ "end_date": "2020-02-15",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-02-10T18:34:17Z",
+ "system_mtime": "2020-02-10T18:34:17Z",
+ "user_mtime": "2020-02-10T18:34:17Z",
+ "act_type": "disseminate",
+ "restriction": "disallow",
+ "jsonmodel_type": "rights_statement_act",
+ "notes": [
+ {
+ "jsonmodel_type": "note_rights_statement_act",
+ "type": "additional_information",
+ "content": [
+ "act note"
+ ],
+ "persistent_id": "0b2de25be1bb35d44a9bab8ae5a8f96f",
+ "publish": true
+ }
+ ]
+ }
+ ],
+ "linked_agents": [],
+ "notes": [
+ {
+ "jsonmodel_type": "note_rights_statement",
+ "type": "type_note",
+ "content": [
+ "type note"
+ ],
+ "persistent_id": "3a82187efe0573b134c722d2e3821ed0",
+ "publish": true
+ }
+ ]
+ }
+ ],
+ "linked_agents": [],
+ "ancestors": [
+ {
+ "ref": "/repositories/2/resources/13063",
+ "level": "collection"
+ }
+ ],
+ "instances": [],
+ "notes": [],
+ "uri": "/repositories/2/archival_objects/1154299",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "resource": {
+ "ref": "/repositories/2/resources/13063"
+ },
+ "has_unpublished_ancestor": false
+ }
+ },
+ {
+ "ref": "/repositories/2/resources/13063",
+ "level": "collection",
+ "_resolved": {
+ "lock_version": 15,
+ "title": "KMTests",
+ "publish": true,
+ "restrictions": false,
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2019-12-12T15:51:53Z",
+ "system_mtime": "2020-04-14T15:36:26Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "suppressed": false,
+ "is_slug_auto": false,
+ "id_0": "121212",
+ "language": "eng",
+ "level": "collection",
+ "jsonmodel_type": "resource",
+ "external_ids": [],
+ "subjects": [],
+ "linked_events": [],
+ "extents": [
+ {
+ "lock_version": 0,
+ "number": "1",
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2020-02-03T13:35:31Z",
+ "system_mtime": "2020-02-03T13:35:31Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "portion": "whole",
+ "extent_type": "Cubic Feet",
+ "jsonmodel_type": "extent"
+ }
+ ],
+ "dates": [
+ {
+ "lock_version": 0,
+ "begin": "1991",
+ "end": "1992",
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2020-02-03T13:35:31Z",
+ "system_mtime": "2020-02-03T13:35:31Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "date_type": "single",
+ "label": "creation",
+ "jsonmodel_type": "date"
+ }
+ ],
+ "external_documents": [],
+ "rights_statements": [],
+ "linked_agents": [
+ {
+ "role": "creator",
+ "relator": "aut",
+ "terms": [],
+ "ref": "/agents/corporate_entities/123",
+ "_resolved": {
+ "lock_version": 471,
+ "publish": true,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2015-01-14T19:15:12Z",
+ "system_mtime": "2020-04-24T17:39:12Z",
+ "user_mtime": "2015-01-14T19:15:12Z",
+ "is_slug_auto": false,
+ "jsonmodel_type": "agent_corporate_entity",
+ "agent_contacts": [],
+ "linked_agent_roles": [
+ "creator",
+ "source",
+ "subject"
+ ],
+ "external_documents": [],
+ "notes": [],
+ "used_within_repositories": [],
+ "used_within_published_repositories": [],
+ "dates_of_existence": [],
+ "names": [
+ {
+ "lock_version": 0,
+ "primary_name": "Philanthropy Foundation",
+ "sort_name": "Philanthropy Foundation",
+ "sort_name_auto_generate": true,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2015-01-14T19:15:12Z",
+ "system_mtime": "2017-08-22T15:44:40Z",
+ "user_mtime": "2015-01-14T19:15:12Z",
+ "authorized": true,
+ "is_display_name": true,
+ "source": "naf",
+ "jsonmodel_type": "name_corporate_entity",
+ "use_dates": []
+ }
+ ],
+ "related_agents": [],
+ "uri": "/agents/corporate_entities/123",
+ "agent_type": "agent_corporate_entity",
+ "is_linked_to_published_record": true,
+ "display_name": {
+ "lock_version": 0,
+ "primary_name": "Philanthropy Foundation",
+ "sort_name": "Philanthropy Foundation",
+ "sort_name_auto_generate": true,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2015-01-14T19:15:12Z",
+ "system_mtime": "2017-08-22T15:44:40Z",
+ "user_mtime": "2015-01-14T19:15:12Z",
+ "authorized": true,
+ "is_display_name": true,
+ "source": "naf",
+ "jsonmodel_type": "name_corporate_entity",
+ "use_dates": []
+ },
+ "title": "Philanthropy Foundation"
+ }
+ }
+ ],
+ "revision_statements": [],
+ "instances": [],
+ "deaccessions": [],
+ "related_accessions": [],
+ "classifications": [],
+ "notes": [],
+ "uri": "/repositories/2/resources/13063",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "tree": {
+ "ref": "/repositories/2/resources/13063/tree"
+ }
+ }
+ }
+ ],
+ "instances": [
+ {
+ "lock_version": 0,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2017-02-21T16:34:34Z",
+ "system_mtime": "2017-02-21T16:34:34Z",
+ "user_mtime": "2017-02-21T16:34:34Z",
+ "instance_type": "mixed materials",
+ "jsonmodel_type": "instance",
+ "is_representative": false,
+ "sub_container": {
+ "lock_version": 0,
+ "indicator_2": "1699",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2017-02-21T16:34:34Z",
+ "system_mtime": "2017-02-21T16:34:34Z",
+ "user_mtime": "2017-02-21T16:34:34Z",
+ "type_2": "folder",
+ "jsonmodel_type": "sub_container",
+ "top_container": {
+ "ref": "/repositories/2/top_containers/31406",
+ "_resolved": {
+ "lock_version": 45,
+ "barcode": "A0000000000321",
+ "indicator": "144",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2016-08-13T04:45:02Z",
+ "system_mtime": "2019-12-06T19:05:09Z",
+ "user_mtime": "2017-12-02T06:08:33Z",
+ "type": "box",
+ "jsonmodel_type": "top_container",
+ "active_restrictions": [],
+ "container_locations": [
+ {
+ "jsonmodel_type": "container_location",
+ "status": "current",
+ "start_date": "2016-09-19",
+ "system_mtime": "2017-12-02 06:08:33 UTC",
+ "user_mtime": "2017-12-02 06:08:33 UTC",
+ "ref": "/locations/10355",
+ "_resolved": {
+ "lock_version": 0,
+ "building": "Main Building",
+ "title": "Main Building, Floor 2, Vault 200 [Unit: 1, Shelf: 2]",
+ "floor": "Floor 2",
+ "room": "Vault 200",
+ "coordinate_1_label": "Unit",
+ "coordinate_1_indicator": "1",
+ "coordinate_2_label": "Shelf",
+ "coordinate_2_indicator": "2",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2017-10-11T15:51:05Z",
+ "system_mtime": "2017-12-15T22:26:27Z",
+ "user_mtime": "2017-10-11T15:51:05Z",
+ "jsonmodel_type": "location",
+ "external_ids": [],
+ "functions": [],
+ "uri": "/locations/10355"
+ }
+ }
+ ],
+ "series": [
+ {
+ "ref": "/repositories/2/archival_objects/1154299",
+ "identifier": "3",
+ "display_string": "series",
+ "level_display_string": "Series",
+ "publish": true
+ }
+ ],
+ "collection": [
+ {
+ "ref": "/repositories/2/resources/11468",
+ "identifier": "121212",
+ "display_string": "test1"
+ }
+ ],
+ "uri": "/repositories/2/top_containers/31406",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "container_profile": {
+ "ref": "/container_profiles/3"
+ },
+ "restricted": false,
+ "is_linked_to_published_record": true,
+ "display_string": "Box 1: Series 1 [A0000000000321]",
+ "long_display_string": "121212, Series 1, Box 1 [A0000000000321], Legal Document Box"
+ }
+ }
+ }
+ },
+ {
+ "lock_version": 0,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-04-14T15:36:25Z",
+ "system_mtime": "2020-04-14T15:36:25Z",
+ "user_mtime": "2020-04-14T15:36:25Z",
+ "instance_type": "digital_object",
+ "jsonmodel_type": "instance",
+ "is_representative": false,
+ "digital_object": {
+ "ref": "/repositories/2/digital_objects/3348"
+ }
+ },
+ {
+ "lock_version": 0,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-04-14T15:36:25Z",
+ "system_mtime": "2020-04-14T15:36:25Z",
+ "user_mtime": "2020-04-14T15:36:25Z",
+ "instance_type": "microform",
+ "jsonmodel_type": "instance",
+ "is_representative": false,
+ "sub_container": {
+ "lock_version": 0,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-04-14T15:36:25Z",
+ "system_mtime": "2020-04-14T15:36:25Z",
+ "user_mtime": "2020-04-14T15:36:25Z",
+ "jsonmodel_type": "sub_container",
+ "top_container": {
+ "ref": "/repositories/2/top_containers/191157",
+ "_resolved": {
+ "lock_version": 1,
+ "indicator": "1",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-04-14T15:35:55Z",
+ "system_mtime": "2020-04-14T15:36:26Z",
+ "user_mtime": "2020-04-14T15:35:55Z",
+ "created_for_collection": "/repositories/2/resources/13063",
+ "type": "reel",
+ "jsonmodel_type": "top_container",
+ "active_restrictions": [],
+ "container_locations": [],
+ "series": [],
+ "collection": [
+ {
+ "ref": "/repositories/2/resources/13063",
+ "identifier": "121212",
+ "display_string": "KMTests"
+ }
+ ],
+ "uri": "/repositories/2/top_containers/191157",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "restricted": false,
+ "is_linked_to_published_record": true,
+ "display_string": "Reel 1",
+ "long_display_string": "121212, Reel 1"
+ }
+ }
+ }
+ },
+ {
+ "lock_version": 0,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-04-14T15:36:25Z",
+ "system_mtime": "2020-04-14T15:36:25Z",
+ "user_mtime": "2020-04-14T15:36:25Z",
+ "instance_type": "audiovisual materials",
+ "jsonmodel_type": "instance",
+ "is_representative": false,
+ "sub_container": {
+ "lock_version": 0,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-04-14T15:36:25Z",
+ "system_mtime": "2020-04-14T15:36:25Z",
+ "user_mtime": "2020-04-14T15:36:25Z",
+ "jsonmodel_type": "sub_container",
+ "top_container": {
+ "ref": "/repositories/2/top_containers/191158",
+ "_resolved": {
+ "lock_version": 1,
+ "indicator": "1",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-04-14T15:36:22Z",
+ "system_mtime": "2020-04-14T15:36:26Z",
+ "user_mtime": "2020-04-14T15:36:22Z",
+ "created_for_collection": "/repositories/2/resources/13063",
+ "type": "reel",
+ "jsonmodel_type": "top_container",
+ "active_restrictions": [],
+ "container_locations": [],
+ "series": [],
+ "collection": [
+ {
+ "ref": "/repositories/2/resources/13063",
+ "identifier": "121212",
+ "display_string": "KMTests"
+ }
+ ],
+ "uri": "/repositories/2/top_containers/191158",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "restricted": false,
+ "is_linked_to_published_record": true,
+ "display_string": "Reel 1",
+ "long_display_string": "121212, Reel 1"
+ }
+ }
+ }
+ }
+ ],
+ "notes": [
+ {
+ "jsonmodel_type": "note_multipart",
+ "persistent_id": "0322d44b863ca218398f207f55a074cc",
+ "type": "bioghist",
+ "subnotes": [
+ {
+ "jsonmodel_type": "note_text",
+ "content": "change",
+ "publish": true
+ }
+ ],
+ "publish": true
+ }
+ ],
+ "uri": "/repositories/2/archival_objects/1154293",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "resource": {
+ "ref": "/repositories/2/resources/13063",
+ "_resolved": {
+ "lock_version": 15,
+ "title": "KMTests",
+ "publish": true,
+ "restrictions": false,
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2019-12-12T15:51:53Z",
+ "system_mtime": "2020-04-14T15:36:26Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "suppressed": false,
+ "is_slug_auto": false,
+ "id_0": "121212",
+ "language": "eng",
+ "level": "collection",
+ "jsonmodel_type": "resource",
+ "external_ids": [],
+ "subjects": [],
+ "linked_events": [],
+ "extents": [
+ {
+ "lock_version": 0,
+ "number": "1",
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2020-02-03T13:35:31Z",
+ "system_mtime": "2020-02-03T13:35:31Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "portion": "whole",
+ "extent_type": "Cubic Feet",
+ "jsonmodel_type": "extent"
+ }
+ ],
+ "dates": [
+ {
+ "lock_version": 0,
+ "expression": "1991",
+ "begin": "1991",
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2020-02-03T13:35:31Z",
+ "system_mtime": "2020-02-03T13:35:31Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "date_type": "single",
+ "label": "creation",
+ "jsonmodel_type": "date"
+ }
+ ],
+ "external_documents": [],
+ "rights_statements": [],
+ "linked_agents": [],
+ "revision_statements": [],
+ "instances": [],
+ "deaccessions": [],
+ "related_accessions": [],
+ "classifications": [],
+ "notes": [],
+ "uri": "/repositories/2/resources/13063",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "tree": {
+ "ref": "/repositories/2/resources/13063/tree"
+ }
+ }
+ },
+ "parent": {
+ "ref": "/repositories/2/archival_objects/1154299"
+ },
+ "has_unpublished_ancestor": false
+}
\ No newline at end of file
diff --git a/fixtures/object_no_expression_no_end.json b/fixtures/object_no_expression_no_end.json
new file mode 100644
index 0000000..ceffcb8
--- /dev/null
+++ b/fixtures/object_no_expression_no_end.json
@@ -0,0 +1,573 @@
+{
+ "lock_version": 144,
+ "position": 0,
+ "publish": true,
+ "ref_id": "421d180c96c333c196091b797617208c",
+ "title": "test1",
+ "display_string": "test1",
+ "restrictions_apply": false,
+ "created_by": "k.martin",
+ "last_modified_by": "admin",
+ "create_time": "2019-12-12T15:52:52Z",
+ "system_mtime": "2020-04-14T15:36:25Z",
+ "user_mtime": "2020-04-14T15:36:25Z",
+ "suppressed": false,
+ "is_slug_auto": false,
+ "level": "subseries",
+ "jsonmodel_type": "archival_object",
+ "external_ids": [],
+ "subjects": [],
+ "linked_events": [],
+ "extents": [],
+ "dates": [],
+ "external_documents": [],
+ "rights_statements": [],
+ "linked_agents": [],
+ "ancestors": [
+ {
+ "ref": "/repositories/2/archival_objects/1154299",
+ "level": "series",
+ "_resolved": {
+ "lock_version": 2,
+ "position": 0,
+ "publish": true,
+ "ref_id": "6cb23e1fc11f953ea3b6f45d393e763e",
+ "title": "series",
+ "display_string": "series",
+ "restrictions_apply": false,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-01-28T14:24:22Z",
+ "system_mtime": "2020-02-10T18:34:17Z",
+ "user_mtime": "2020-02-10T18:34:17Z",
+ "suppressed": false,
+ "is_slug_auto": false,
+ "level": "series",
+ "jsonmodel_type": "archival_object",
+ "external_ids": [],
+ "subjects": [],
+ "linked_events": [],
+ "extents": [],
+ "dates": [],
+ "external_documents": [],
+ "rights_statements": [
+ {
+ "lock_version": 0,
+ "identifier": "aa1d36b57fbb9c05202e6b84921ef156",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-02-10T18:34:17Z",
+ "system_mtime": "2020-02-10T18:34:17Z",
+ "user_mtime": "2020-02-10T18:34:17Z",
+ "start_date": "2020-02-07",
+ "end_date": "2020-02-15",
+ "determination_date": "2020-02-06",
+ "rights_type": "copyright",
+ "status": "copyrighted",
+ "jurisdiction": "US",
+ "jsonmodel_type": "rights_statement",
+ "external_documents": [],
+ "acts": [
+ {
+ "start_date": "2020-02-07",
+ "end_date": "2020-02-15",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-02-10T18:34:17Z",
+ "system_mtime": "2020-02-10T18:34:17Z",
+ "user_mtime": "2020-02-10T18:34:17Z",
+ "act_type": "disseminate",
+ "restriction": "disallow",
+ "jsonmodel_type": "rights_statement_act",
+ "notes": [
+ {
+ "jsonmodel_type": "note_rights_statement_act",
+ "type": "additional_information",
+ "content": [
+ "act note"
+ ],
+ "persistent_id": "0b2de25be1bb35d44a9bab8ae5a8f96f",
+ "publish": true
+ }
+ ]
+ }
+ ],
+ "linked_agents": [],
+ "notes": [
+ {
+ "jsonmodel_type": "note_rights_statement",
+ "type": "type_note",
+ "content": [
+ "type note"
+ ],
+ "persistent_id": "3a82187efe0573b134c722d2e3821ed0",
+ "publish": true
+ }
+ ]
+ }
+ ],
+ "linked_agents": [],
+ "ancestors": [
+ {
+ "ref": "/repositories/2/resources/13063",
+ "level": "collection"
+ }
+ ],
+ "instances": [],
+ "notes": [],
+ "uri": "/repositories/2/archival_objects/1154299",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "resource": {
+ "ref": "/repositories/2/resources/13063"
+ },
+ "has_unpublished_ancestor": false
+ }
+ },
+ {
+ "ref": "/repositories/2/resources/13063",
+ "level": "collection",
+ "_resolved": {
+ "lock_version": 15,
+ "title": "KMTests",
+ "publish": true,
+ "restrictions": false,
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2019-12-12T15:51:53Z",
+ "system_mtime": "2020-04-14T15:36:26Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "suppressed": false,
+ "is_slug_auto": false,
+ "id_0": "121212",
+ "language": "eng",
+ "level": "collection",
+ "jsonmodel_type": "resource",
+ "external_ids": [],
+ "subjects": [],
+ "linked_events": [],
+ "extents": [
+ {
+ "lock_version": 0,
+ "number": "1",
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2020-02-03T13:35:31Z",
+ "system_mtime": "2020-02-03T13:35:31Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "portion": "whole",
+ "extent_type": "Cubic Feet",
+ "jsonmodel_type": "extent"
+ }
+ ],
+ "dates": [
+ {
+ "lock_version": 0,
+ "begin": "1993",
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2020-02-03T13:35:31Z",
+ "system_mtime": "2020-02-03T13:35:31Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "date_type": "single",
+ "label": "creation",
+ "jsonmodel_type": "date"
+ }
+ ],
+ "external_documents": [],
+ "rights_statements": [],
+ "linked_agents": [
+ {
+ "role": "creator",
+ "relator": "aut",
+ "terms": [],
+ "ref": "/agents/corporate_entities/123",
+ "_resolved": {
+ "lock_version": 471,
+ "publish": true,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2015-01-14T19:15:12Z",
+ "system_mtime": "2020-04-24T17:39:12Z",
+ "user_mtime": "2015-01-14T19:15:12Z",
+ "is_slug_auto": false,
+ "jsonmodel_type": "agent_corporate_entity",
+ "agent_contacts": [],
+ "linked_agent_roles": [
+ "creator",
+ "source",
+ "subject"
+ ],
+ "external_documents": [],
+ "notes": [],
+ "used_within_repositories": [],
+ "used_within_published_repositories": [],
+ "dates_of_existence": [],
+ "names": [
+ {
+ "lock_version": 0,
+ "primary_name": "Philanthropy Foundation",
+ "sort_name": "Philanthropy Foundation",
+ "sort_name_auto_generate": true,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2015-01-14T19:15:12Z",
+ "system_mtime": "2017-08-22T15:44:40Z",
+ "user_mtime": "2015-01-14T19:15:12Z",
+ "authorized": true,
+ "is_display_name": true,
+ "source": "naf",
+ "jsonmodel_type": "name_corporate_entity",
+ "use_dates": []
+ }
+ ],
+ "related_agents": [],
+ "uri": "/agents/corporate_entities/123",
+ "agent_type": "agent_corporate_entity",
+ "is_linked_to_published_record": true,
+ "display_name": {
+ "lock_version": 0,
+ "primary_name": "Philanthropy Foundation",
+ "sort_name": "Philanthropy Foundation",
+ "sort_name_auto_generate": true,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2015-01-14T19:15:12Z",
+ "system_mtime": "2017-08-22T15:44:40Z",
+ "user_mtime": "2015-01-14T19:15:12Z",
+ "authorized": true,
+ "is_display_name": true,
+ "source": "naf",
+ "jsonmodel_type": "name_corporate_entity",
+ "use_dates": []
+ },
+ "title": "Philanthropy Foundation"
+ }
+ }
+ ],
+ "revision_statements": [],
+ "instances": [],
+ "deaccessions": [],
+ "related_accessions": [],
+ "classifications": [],
+ "notes": [],
+ "uri": "/repositories/2/resources/13063",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "tree": {
+ "ref": "/repositories/2/resources/13063/tree"
+ }
+ }
+ }
+ ],
+ "instances": [
+ {
+ "lock_version": 0,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2017-02-21T16:34:34Z",
+ "system_mtime": "2017-02-21T16:34:34Z",
+ "user_mtime": "2017-02-21T16:34:34Z",
+ "instance_type": "mixed materials",
+ "jsonmodel_type": "instance",
+ "is_representative": false,
+ "sub_container": {
+ "lock_version": 0,
+ "indicator_2": "1699",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2017-02-21T16:34:34Z",
+ "system_mtime": "2017-02-21T16:34:34Z",
+ "user_mtime": "2017-02-21T16:34:34Z",
+ "type_2": "folder",
+ "jsonmodel_type": "sub_container",
+ "top_container": {
+ "ref": "/repositories/2/top_containers/31406",
+ "_resolved": {
+ "lock_version": 45,
+ "barcode": "A0000000000321",
+ "indicator": "144",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2016-08-13T04:45:02Z",
+ "system_mtime": "2019-12-06T19:05:09Z",
+ "user_mtime": "2017-12-02T06:08:33Z",
+ "type": "box",
+ "jsonmodel_type": "top_container",
+ "active_restrictions": [],
+ "container_locations": [
+ {
+ "jsonmodel_type": "container_location",
+ "status": "current",
+ "start_date": "2016-09-19",
+ "system_mtime": "2017-12-02 06:08:33 UTC",
+ "user_mtime": "2017-12-02 06:08:33 UTC",
+ "ref": "/locations/10355",
+ "_resolved": {
+ "lock_version": 0,
+ "building": "Main Building",
+ "title": "Main Building, Floor 2, Vault 200 [Unit: 1, Shelf: 2]",
+ "floor": "Floor 2",
+ "room": "Vault 200",
+ "coordinate_1_label": "Unit",
+ "coordinate_1_indicator": "1",
+ "coordinate_2_label": "Shelf",
+ "coordinate_2_indicator": "2",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2017-10-11T15:51:05Z",
+ "system_mtime": "2017-12-15T22:26:27Z",
+ "user_mtime": "2017-10-11T15:51:05Z",
+ "jsonmodel_type": "location",
+ "external_ids": [],
+ "functions": [],
+ "uri": "/locations/10355"
+ }
+ }
+ ],
+ "series": [
+ {
+ "ref": "/repositories/2/archival_objects/1154299",
+ "identifier": "3",
+ "display_string": "series",
+ "level_display_string": "Series",
+ "publish": true
+ }
+ ],
+ "collection": [
+ {
+ "ref": "/repositories/2/resources/11468",
+ "identifier": "121212",
+ "display_string": "test1"
+ }
+ ],
+ "uri": "/repositories/2/top_containers/31406",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "container_profile": {
+ "ref": "/container_profiles/3"
+ },
+ "restricted": false,
+ "is_linked_to_published_record": true,
+ "display_string": "Box 1: Series 1 [A0000000000321]",
+ "long_display_string": "121212, Series 1, Box 1 [A0000000000321], Legal Document Box"
+ }
+ }
+ }
+ },
+ {
+ "lock_version": 0,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-04-14T15:36:25Z",
+ "system_mtime": "2020-04-14T15:36:25Z",
+ "user_mtime": "2020-04-14T15:36:25Z",
+ "instance_type": "digital_object",
+ "jsonmodel_type": "instance",
+ "is_representative": false,
+ "digital_object": {
+ "ref": "/repositories/2/digital_objects/3348"
+ }
+ },
+ {
+ "lock_version": 0,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-04-14T15:36:25Z",
+ "system_mtime": "2020-04-14T15:36:25Z",
+ "user_mtime": "2020-04-14T15:36:25Z",
+ "instance_type": "microform",
+ "jsonmodel_type": "instance",
+ "is_representative": false,
+ "sub_container": {
+ "lock_version": 0,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-04-14T15:36:25Z",
+ "system_mtime": "2020-04-14T15:36:25Z",
+ "user_mtime": "2020-04-14T15:36:25Z",
+ "jsonmodel_type": "sub_container",
+ "top_container": {
+ "ref": "/repositories/2/top_containers/191157",
+ "_resolved": {
+ "lock_version": 1,
+ "indicator": "1",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-04-14T15:35:55Z",
+ "system_mtime": "2020-04-14T15:36:26Z",
+ "user_mtime": "2020-04-14T15:35:55Z",
+ "created_for_collection": "/repositories/2/resources/13063",
+ "type": "reel",
+ "jsonmodel_type": "top_container",
+ "active_restrictions": [],
+ "container_locations": [],
+ "series": [],
+ "collection": [
+ {
+ "ref": "/repositories/2/resources/13063",
+ "identifier": "121212",
+ "display_string": "KMTests"
+ }
+ ],
+ "uri": "/repositories/2/top_containers/191157",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "restricted": false,
+ "is_linked_to_published_record": true,
+ "display_string": "Reel 1",
+ "long_display_string": "121212, Reel 1"
+ }
+ }
+ }
+ },
+ {
+ "lock_version": 0,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-04-14T15:36:25Z",
+ "system_mtime": "2020-04-14T15:36:25Z",
+ "user_mtime": "2020-04-14T15:36:25Z",
+ "instance_type": "audiovisual materials",
+ "jsonmodel_type": "instance",
+ "is_representative": false,
+ "sub_container": {
+ "lock_version": 0,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-04-14T15:36:25Z",
+ "system_mtime": "2020-04-14T15:36:25Z",
+ "user_mtime": "2020-04-14T15:36:25Z",
+ "jsonmodel_type": "sub_container",
+ "top_container": {
+ "ref": "/repositories/2/top_containers/191158",
+ "_resolved": {
+ "lock_version": 1,
+ "indicator": "1",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-04-14T15:36:22Z",
+ "system_mtime": "2020-04-14T15:36:26Z",
+ "user_mtime": "2020-04-14T15:36:22Z",
+ "created_for_collection": "/repositories/2/resources/13063",
+ "type": "reel",
+ "jsonmodel_type": "top_container",
+ "active_restrictions": [],
+ "container_locations": [],
+ "series": [],
+ "collection": [
+ {
+ "ref": "/repositories/2/resources/13063",
+ "identifier": "121212",
+ "display_string": "KMTests"
+ }
+ ],
+ "uri": "/repositories/2/top_containers/191158",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "restricted": false,
+ "is_linked_to_published_record": true,
+ "display_string": "Reel 1",
+ "long_display_string": "121212, Reel 1"
+ }
+ }
+ }
+ }
+ ],
+ "notes": [
+ {
+ "jsonmodel_type": "note_multipart",
+ "persistent_id": "0322d44b863ca218398f207f55a074cc",
+ "type": "bioghist",
+ "subnotes": [
+ {
+ "jsonmodel_type": "note_text",
+ "content": "change",
+ "publish": true
+ }
+ ],
+ "publish": true
+ }
+ ],
+ "uri": "/repositories/2/archival_objects/1154293",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "resource": {
+ "ref": "/repositories/2/resources/13063",
+ "_resolved": {
+ "lock_version": 15,
+ "title": "KMTests",
+ "publish": true,
+ "restrictions": false,
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2019-12-12T15:51:53Z",
+ "system_mtime": "2020-04-14T15:36:26Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "suppressed": false,
+ "is_slug_auto": false,
+ "id_0": "121212",
+ "language": "eng",
+ "level": "collection",
+ "jsonmodel_type": "resource",
+ "external_ids": [],
+ "subjects": [],
+ "linked_events": [],
+ "extents": [
+ {
+ "lock_version": 0,
+ "number": "1",
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2020-02-03T13:35:31Z",
+ "system_mtime": "2020-02-03T13:35:31Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "portion": "whole",
+ "extent_type": "Cubic Feet",
+ "jsonmodel_type": "extent"
+ }
+ ],
+ "dates": [
+ {
+ "lock_version": 0,
+ "expression": "1991",
+ "begin": "1991",
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2020-02-03T13:35:31Z",
+ "system_mtime": "2020-02-03T13:35:31Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "date_type": "single",
+ "label": "creation",
+ "jsonmodel_type": "date"
+ }
+ ],
+ "external_documents": [],
+ "rights_statements": [],
+ "linked_agents": [],
+ "revision_statements": [],
+ "instances": [],
+ "deaccessions": [],
+ "related_accessions": [],
+ "classifications": [],
+ "notes": [],
+ "uri": "/repositories/2/resources/13063",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "tree": {
+ "ref": "/repositories/2/resources/13063/tree"
+ }
+ }
+ },
+ "parent": {
+ "ref": "/repositories/2/archival_objects/1154299"
+ },
+ "has_unpublished_ancestor": false
+}
\ No newline at end of file
diff --git a/fixtures/object_no_instance.json b/fixtures/object_no_instance.json
index 4c74ee9..6bb024f 100644
--- a/fixtures/object_no_instance.json
+++ b/fixtures/object_no_instance.json
@@ -1,63 +1,13 @@
{
- "lock_version": 144,
- "position": 0,
- "publish": true,
"ref_id": "421d180c96c333c196091b797617208c",
"title": "test1",
"display_string": "test1",
- "restrictions_apply": false,
"created_by": "k.martin",
"last_modified_by": "admin",
"create_time": "2019-12-12T15:52:52Z",
"system_mtime": "2020-04-14T15:36:25Z",
"user_mtime": "2020-04-14T15:36:25Z",
- "suppressed": false,
- "is_slug_auto": false,
"level": "subseries",
"jsonmodel_type": "archival_object",
- "external_ids": [],
- "subjects": [],
- "linked_events": [],
- "extents": [],
- "dates": [],
- "external_documents": [],
- "rights_statements": [],
- "linked_agents": [],
- "ancestors": [
- {
- "ref": "/repositories/2/archival_objects/1154299",
- "level": "series"
- },
- {
- "ref": "/repositories/2/resources/13063",
- "level": "collection"
- }
- ],
- "instances": [],
- "notes": [
- {
- "jsonmodel_type": "note_multipart",
- "persistent_id": "0322d44b863ca218398f207f55a074cc",
- "type": "bioghist",
- "subnotes": [
- {
- "jsonmodel_type": "note_text",
- "content": "change",
- "publish": true
- }
- ],
- "publish": true
- }
- ],
- "uri": "/repositories/2/archival_objects/1154293",
- "repository": {
- "ref": "/repositories/2"
- },
- "resource": {
- "ref": "/repositories/2/resources/13063"
- },
- "parent": {
- "ref": "/repositories/2/archival_objects/1154299"
- },
- "has_unpublished_ancestor": false
-}
+ "instances": []
+}
\ No newline at end of file
diff --git a/fixtures/object_restricted_ancestor.json b/fixtures/object_restricted_ancestor.json
new file mode 100644
index 0000000..ce2f44f
--- /dev/null
+++ b/fixtures/object_restricted_ancestor.json
@@ -0,0 +1,223 @@
+{
+ "ancestors": [{
+ "ref": "/repositories/2/archival_objects/1154299",
+ "level": "series",
+ "_resolved": {
+ "lock_version": 2,
+ "position": 0,
+ "publish": true,
+ "ref_id": "6cb23e1fc11f953ea3b6f45d393e763e",
+ "title": "series",
+ "display_string": "series",
+ "restrictions_apply": false,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-01-28T14:24:22Z",
+ "system_mtime": "2020-02-10T18:34:17Z",
+ "user_mtime": "2020-02-10T18:34:17Z",
+ "suppressed": false,
+ "is_slug_auto": false,
+ "level": "series",
+ "jsonmodel_type": "archival_object",
+ "external_ids": [],
+ "subjects": [],
+ "linked_events": [],
+ "extents": [],
+ "dates": [],
+ "external_documents": [],
+ "rights_statements": [{
+ "lock_version": 0,
+ "identifier": "aa1d36b57fbb9c05202e6b84921ef156",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-02-10T18:34:17Z",
+ "system_mtime": "2020-02-10T18:34:17Z",
+ "user_mtime": "2020-02-10T18:34:17Z",
+ "start_date": "2020-02-07",
+ "end_date": "2020-02-15",
+ "determination_date": "2020-02-06",
+ "rights_type": "copyright",
+ "status": "copyrighted",
+ "jurisdiction": "US",
+ "jsonmodel_type": "rights_statement",
+ "external_documents": [],
+ "acts": [{
+ "start_date": "2020-02-07",
+ "end_date": "2020-02-15",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-02-10T18:34:17Z",
+ "system_mtime": "2020-02-10T18:34:17Z",
+ "user_mtime": "2020-02-10T18:34:17Z",
+ "act_type": "disseminate",
+ "restriction": "disallow",
+ "jsonmodel_type": "rights_statement_act",
+ "notes": [{
+ "jsonmodel_type": "note_rights_statement_act",
+ "type": "additional_information",
+ "content": [
+ "act note"
+ ],
+ "persistent_id": "0b2de25be1bb35d44a9bab8ae5a8f96f",
+ "publish": true
+ }]
+ }],
+ "linked_agents": [],
+ "notes": [{
+ "jsonmodel_type": "note_rights_statement",
+ "type": "type_note",
+ "content": [
+ "Ancestor Note"
+ ],
+ "persistent_id": "3a82187efe0573b134c722d2e3821ed0",
+ "publish": true
+ }]
+ }],
+ "linked_agents": [],
+ "ancestors": [{
+ "ref": "/repositories/2/resources/13063",
+ "level": "collection"
+ }],
+ "instances": [],
+ "notes": [],
+ "uri": "/repositories/2/archival_objects/1154299",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "resource": {
+ "ref": "/repositories/2/resources/13063"
+ },
+ "has_unpublished_ancestor": false
+ }
+ },
+ {
+ "ref": "/repositories/2/resources/13063",
+ "level": "collection",
+ "_resolved": {
+ "lock_version": 15,
+ "title": "KMTests",
+ "publish": true,
+ "restrictions": false,
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2019-12-12T15:51:53Z",
+ "system_mtime": "2020-04-14T15:36:26Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "suppressed": false,
+ "is_slug_auto": false,
+ "id_0": "121212",
+ "language": "eng",
+ "level": "collection",
+ "jsonmodel_type": "resource",
+ "external_ids": [],
+ "subjects": [],
+ "linked_events": [],
+ "extents": [{
+ "lock_version": 0,
+ "number": "1",
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2020-02-03T13:35:31Z",
+ "system_mtime": "2020-02-03T13:35:31Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "portion": "whole",
+ "extent_type": "Cubic Feet",
+ "jsonmodel_type": "extent"
+ }],
+ "dates": [{
+ "lock_version": 0,
+ "expression": "1991",
+ "begin": "1991",
+ "created_by": "k.martin",
+ "last_modified_by": "k.martin",
+ "create_time": "2020-02-03T13:35:31Z",
+ "system_mtime": "2020-02-03T13:35:31Z",
+ "user_mtime": "2020-02-03T13:35:31Z",
+ "date_type": "single",
+ "label": "creation",
+ "jsonmodel_type": "date"
+ }],
+ "external_documents": [],
+ "rights_statements": [],
+ "linked_agents": [{
+ "role": "creator",
+ "relator": "aut",
+ "terms": [],
+ "ref": "/agents/corporate_entities/123",
+ "_resolved": {
+ "lock_version": 471,
+ "publish": true,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2015-01-14T19:15:12Z",
+ "system_mtime": "2020-04-24T17:39:12Z",
+ "user_mtime": "2015-01-14T19:15:12Z",
+ "is_slug_auto": false,
+ "jsonmodel_type": "agent_corporate_entity",
+ "agent_contacts": [],
+ "linked_agent_roles": [
+ "creator",
+ "source",
+ "subject"
+ ],
+ "external_documents": [],
+ "notes": [],
+ "used_within_repositories": [],
+ "used_within_published_repositories": [],
+ "dates_of_existence": [],
+ "names": [{
+ "lock_version": 0,
+ "primary_name": "Philanthropy Foundation",
+ "sort_name": "Philanthropy Foundation",
+ "sort_name_auto_generate": true,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2015-01-14T19:15:12Z",
+ "system_mtime": "2017-08-22T15:44:40Z",
+ "user_mtime": "2015-01-14T19:15:12Z",
+ "authorized": true,
+ "is_display_name": true,
+ "source": "naf",
+ "jsonmodel_type": "name_corporate_entity",
+ "use_dates": []
+ }],
+ "related_agents": [],
+ "uri": "/agents/corporate_entities/123",
+ "agent_type": "agent_corporate_entity",
+ "is_linked_to_published_record": true,
+ "display_name": {
+ "lock_version": 0,
+ "primary_name": "Philanthropy Foundation",
+ "sort_name": "Philanthropy Foundation",
+ "sort_name_auto_generate": true,
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2015-01-14T19:15:12Z",
+ "system_mtime": "2017-08-22T15:44:40Z",
+ "user_mtime": "2015-01-14T19:15:12Z",
+ "authorized": true,
+ "is_display_name": true,
+ "source": "naf",
+ "jsonmodel_type": "name_corporate_entity",
+ "use_dates": []
+ },
+ "title": "Philanthropy Foundation"
+ }
+ }],
+ "revision_statements": [],
+ "instances": [],
+ "deaccessions": [],
+ "related_accessions": [],
+ "classifications": [],
+ "notes": [],
+ "uri": "/repositories/2/resources/13063",
+ "repository": {
+ "ref": "/repositories/2"
+ },
+ "tree": {
+ "ref": "/repositories/2/resources/13063/tree"
+ }
+ }
+ }
+ ]
+}
diff --git a/fixtures/object_restricted_boolean.json b/fixtures/object_restricted_boolean.json
new file mode 100644
index 0000000..5562c4d
--- /dev/null
+++ b/fixtures/object_restricted_boolean.json
@@ -0,0 +1,3 @@
+{
+ "restrictions_apply": true
+}
diff --git a/fixtures/object_restricted_note.json b/fixtures/object_restricted_note.json
new file mode 100644
index 0000000..7627920
--- /dev/null
+++ b/fixtures/object_restricted_note.json
@@ -0,0 +1,13 @@
+{
+ "notes": [{
+ "jsonmodel_type": "note_multipart",
+ "persistent_id": "0322d44b863ca218398f207f55a074cc",
+ "type": "accessrestrict",
+ "subnotes": [{
+ "jsonmodel_type": "note_text",
+ "content": "Restricted - Open 2025",
+ "publish": true
+ }],
+ "publish": true
+ }]
+}
diff --git a/fixtures/object_restricted_note_conditional.json b/fixtures/object_restricted_note_conditional.json
new file mode 100644
index 0000000..a61657a
--- /dev/null
+++ b/fixtures/object_restricted_note_conditional.json
@@ -0,0 +1,13 @@
+{
+ "notes": [{
+ "jsonmodel_type": "note_multipart",
+ "persistent_id": "0322d44b863ca218398f207f55a074cc",
+ "type": "accessrestrict",
+ "subnotes": [{
+ "jsonmodel_type": "note_text",
+ "content": "Access copy unavailable. Please contact an archivist.",
+ "publish": true
+ }],
+ "publish": true
+ }]
+}
diff --git a/fixtures/object_restricted_note_open.json b/fixtures/object_restricted_note_open.json
new file mode 100644
index 0000000..10798f5
--- /dev/null
+++ b/fixtures/object_restricted_note_open.json
@@ -0,0 +1,13 @@
+{
+ "notes": [{
+ "jsonmodel_type": "note_multipart",
+ "persistent_id": "0322d44b863ca218398f207f55a074cc",
+ "type": "accessrestrict",
+ "subnotes": [{
+ "jsonmodel_type": "note_text",
+ "content": "Open for research.",
+ "publish": true
+ }],
+ "publish": true
+ }]
+}
diff --git a/fixtures/object_restricted_rights_statement.json b/fixtures/object_restricted_rights_statement.json
new file mode 100644
index 0000000..d37597f
--- /dev/null
+++ b/fixtures/object_restricted_rights_statement.json
@@ -0,0 +1,50 @@
+{
+ "rights_statements": [{
+ "lock_version": 0,
+ "identifier": "aa1d36b57fbb9c05202e6b84921ef156",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-02-10T18:34:17Z",
+ "system_mtime": "2020-02-10T18:34:17Z",
+ "user_mtime": "2020-02-10T18:34:17Z",
+ "start_date": "2020-02-07",
+ "end_date": "2020-02-15",
+ "determination_date": "2020-02-06",
+ "rights_type": "copyright",
+ "status": "copyrighted",
+ "jurisdiction": "US",
+ "jsonmodel_type": "rights_statement",
+ "external_documents": [],
+ "acts": [{
+ "start_date": "2020-02-07",
+ "end_date": "2020-02-15",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-02-10T18:34:17Z",
+ "system_mtime": "2020-02-10T18:34:17Z",
+ "user_mtime": "2020-02-10T18:34:17Z",
+ "act_type": "disseminate",
+ "restriction": "disallow",
+ "jsonmodel_type": "rights_statement_act",
+ "notes": [{
+ "jsonmodel_type": "note_rights_statement_act",
+ "type": "additional_information",
+ "content": [
+ "act note"
+ ],
+ "persistent_id": "0b2de25be1bb35d44a9bab8ae5a8f96f",
+ "publish": true
+ }]
+ }],
+ "linked_agents": [],
+ "notes": [{
+ "jsonmodel_type": "note_rights_statement",
+ "type": "type_note",
+ "content": [
+ "Rights statement note."
+ ],
+ "persistent_id": "3a82187efe0573b134c722d2e3821ed0",
+ "publish": true
+ }]
+ }]
+}
diff --git a/fixtures/object_restricted_rights_statement_conditional.json b/fixtures/object_restricted_rights_statement_conditional.json
new file mode 100644
index 0000000..c40f270
--- /dev/null
+++ b/fixtures/object_restricted_rights_statement_conditional.json
@@ -0,0 +1,42 @@
+{
+ "rights_statements": [{
+ "lock_version": 0,
+ "identifier": "aa1d36b57fbb9c05202e6b84921ef156",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-02-10T18:34:17Z",
+ "system_mtime": "2020-02-10T18:34:17Z",
+ "user_mtime": "2020-02-10T18:34:17Z",
+ "start_date": "2020-02-07",
+ "end_date": "2020-02-15",
+ "determination_date": "2020-02-06",
+ "rights_type": "copyright",
+ "status": "copyrighted",
+ "jurisdiction": "US",
+ "jsonmodel_type": "rights_statement",
+ "external_documents": [],
+ "acts": [{
+ "start_date": "2020-02-07",
+ "end_date": "2020-02-15",
+ "created_by": "admin",
+ "last_modified_by": "admin",
+ "create_time": "2020-02-10T18:34:17Z",
+ "system_mtime": "2020-02-10T18:34:17Z",
+ "user_mtime": "2020-02-10T18:34:17Z",
+ "act_type": "disseminate",
+ "restriction": "conditional",
+ "jsonmodel_type": "rights_statement_act",
+ "notes": [{
+ "jsonmodel_type": "note_rights_statement_act",
+ "type": "additional_information",
+ "content": [
+ "act note"
+ ],
+ "persistent_id": "0b2de25be1bb35d44a9bab8ae5a8f96f",
+ "publish": true
+ }]
+ }],
+ "linked_agents": [],
+ "notes": []
+ }]
+}
diff --git a/process_request/apps.py b/process_request/apps.py
index c691011..693ce89 100644
--- a/process_request/apps.py
+++ b/process_request/apps.py
@@ -1,5 +1,5 @@
from django.apps import AppConfig
-class ProcessRequestConfig(AppConfig):
+class ProcessorConfig(AppConfig):
name = 'process_request'
diff --git a/process_request/clients.py b/process_request/clients.py
new file mode 100644
index 0000000..3a5c32f
--- /dev/null
+++ b/process_request/clients.py
@@ -0,0 +1,35 @@
+from request_broker import settings
+from requests import Session
+
+
+def http_meth_factory(meth):
+ """Utility method for producing HTTP proxy methods.
+
+ Urls are prefixed with the value of baseurl from the client's config.
+ Arguments are passed unaltered to the matching requests.Session method."""
+
+ def http_method(self, url, *args, **kwargs):
+ full_url = "/".join([self.baseurl.rstrip("/"), url.lstrip("/")])
+ return getattr(self.session, meth)(full_url, *args, **kwargs)
+ return http_method
+
+
+class ProxyMethods(type):
+ """Metaclass to set up proxy methods for all requests-supported HTTP methods."""
+ def __init__(cls, name, parents, dct):
+ for meth in ("get", "post", "head", "put", "delete", "options",):
+ fn = http_meth_factory(meth)
+ fn.__name__ = meth
+ fn.__doc__ = """Proxied :meth:`requests.Session.{}` method from :class:`requests.Session`""".format(meth)
+ setattr(cls, meth, fn)
+
+
+class AeonAPIClient(metaclass=ProxyMethods):
+
+ def __init__(self, baseurl):
+ self.baseurl = baseurl
+ self.session = Session()
+ self.session.headers.update(
+ {"Accept": "application/json",
+ "User-Agent": "AeonAPIClient/0.1",
+ "X-AEON-API-KEY": settings.AEON_API_KEY})
diff --git a/process_request/helpers.py b/process_request/helpers.py
index 9f344e3..03998e6 100644
--- a/process_request/helpers.py
+++ b/process_request/helpers.py
@@ -1,120 +1,263 @@
-from datetime import datetime
+from asnake.utils import get_date_display, get_note_text, text_in_note
+from ordered_set import OrderedSet
-from rapidfuzz import fuzz
+CONFIDENCE_RATIO = 97 # Minimum confidence ratio to match against.
+OPEN_TEXT = "Open for research"
+CLOSED_TEXT = "Restricted"
-def get_note_text(note):
- """Parses note content from different note types.
+def get_container_indicators(item_json):
+ """Returns container indicator(s) for an archival object.
- :param dict: an ArchivesSpace note.
+ Args:
+ item_json (dict): ArchivesSpace archival object information that has
+ resolved top containers and digital objects.
- :returns: a list containing note content.
- :rtype: list
+ Returns:
+ string or None: A concatenated string containing the container type and
+ container indicator, or digital object title.
"""
- def parse_subnote(subnote):
- """Parses note content from subnotes.
-
- :param dict: an ArchivesSpace subnote.
-
- :returns: a list containing subnote content.
- :rtype: list
- """
- if subnote["jsonmodel_type"] in [
- "note_orderedlist", "note_index"]:
- content = subnote["items"]
- elif subnote["jsonmodel_type"] in ["note_chronology", "note_definedlist"]:
- content = []
- for k in subnote["items"]:
- for i in k:
- content += k.get(i) if isinstance(k.get(i),
- list) else [k.get(i)]
- else:
- content = subnote["content"] if isinstance(
- subnote["content"], list) else [subnote["content"]]
- return content
-
- if note["jsonmodel_type"] in ["note_singlepart", "note_langmaterial"]:
- content = note["content"]
- elif note["jsonmodel_type"] == "note_bibliography":
- data = []
- data += note["content"]
- data += note["items"]
- content = data
- elif note["jsonmodel_type"] == "note_index":
- data = []
- for item in note["items"]:
- data.append(item["value"])
- content = data
+ indicators = []
+ if item_json.get("instances"):
+ for i in item_json.get("instances"):
+ if i.get("instance_type") == "digital_object":
+ indicators.append("Digital Object: {}".format(i.get("digital_object").get("_resolved").get("title")))
+ else:
+ top_container = i.get("sub_container").get("top_container").get("_resolved")
+ indicators.append("{} {}".format(top_container.get("type").capitalize(), top_container.get("indicator")))
+ return ", ".join(indicators)
else:
- subnote_content_list = list(parse_subnote(sn)
- for sn in note["subnotes"])
- content = [
- c for subnote_content in subnote_content_list for c in subnote_content]
- return content
+ return None
+
+
+def get_file_versions(digital_object):
+ """Returns the file versions for an ArchivesSpace digital object.
+
+ Args:
+ digital_object (dict): Resolved json of an ArchivesSpace digital object.
+
+ Returns:
+ string: all file version uris associated with the digital object,
+ separated by a comma.
+ """
+ return ", ".join([v.get("file_uri") for v in digital_object.get("file_versions")])
+
+
+def get_locations(top_container_info):
+ """Gets a string representation of a location for an ArchivesSpace top container.
+
+ Args:
+ top_container_info (dict): json for a top container (with resolved container locations)
+
+ Returns:
+ string: all locations associated with the top container, separated by a comma.
+ """
+ locations = None
+ if top_container_info.get("container_locations"):
+ locations = ",".join([c.get("_resolved").get("title") for c in top_container_info.get("container_locations")])
+ return locations
+
+def prepare_values(values_list):
+ """Process an iterable of lists.
-def text_in_note(note, query_string):
- """Performs fuzzy searching against note text.
+ For each list in the initial iterable, removes None values, deduplicates and
+ returns either a string of joined list items or None.
- :param dict note: an ArchivesSpace note.
- :param str query_string: a string to match against.
+ Args:
+ values_list (iterable): an iterable in which each item is a list.
- :returns: True if a match is found for `query_string`, False if no match is
- found.
- :rtype: bool
+ Returns:
+ values_list (tuple): processed values.
"""
- CONFIDENCE_RATIO = 97
- """int: Minimum confidence ratio to match against."""
- note_content = get_note_text(note)
- ratio = fuzz.token_sort_ratio(
- " ".join([n.lower() for n in note_content]),
- query_string.lower(),
- score_cutoff=CONFIDENCE_RATIO)
- return bool(ratio)
+ for n, item in enumerate(values_list):
+ parsed = OrderedSet(filter(None, item))
+ values_list[n] = None if len(parsed) == 0 else ", ".join(list(parsed))
+ return tuple(values_list)
-def indicates_restriction(rights_statement, restriction_acts):
- """Parses a rights statement to determine if it indicates a restriction.
+def get_instance_data(instance_list):
+ """Creates a standardized tuple for each item in an instance list depending on
+ the item's instance type.
- :param dict rights_statement: an ArchivesSpace rights statement.
+ Args:
+ instance_list (list): A list of ArchivesSpace instance information with
+ resolved top containers and digital objects.
- :returns: True if rights statement indicates a restriction, False if not.
- :rtype: bool
+ Returns:
+ tuple: a tuple containing instance type, indicator, location,
+ container barcode or digital object id, and container/digital object
+ ref for the instance.
"""
- def is_expired(date):
- today = datetime.now()
- date = date if date else datetime.strftime("%Y-%m-%d")
- return False if (
- datetime.strptime(date, "%Y-%m-%d") >= today) else True
-
- if is_expired(rights_statement.get("end_date")):
- return False
- for act in rights_statement.get("acts"):
- if (act.get("restriction")
- in restriction_acts and not is_expired(act.get("end_date"))):
- return True
- return False
-
-
-def is_restricted(archival_object, query_string, restriction_acts):
- """Parses an archival object to determine if it is restricted.
-
- Iterates through notes, looking for a conditions governing access note
- which contains a particular set of strings.
- Also looks for associated rights statements which indicate object may be
- restricted.
-
- :param dict archival_object: an ArchivesSpace archival_object.
- :param list restriction_acts: a list of strings to match restriction act against.
-
- :returns: True if archival object is restricted, False if not.
- :rtype: bool
+ instance_types = []
+ containers = []
+ locations = []
+ barcodes = []
+ refs = []
+ for instance in instance_list:
+ if instance["instance_type"] == "digital_object":
+ instance_types.append("digital_object")
+ containers.append("Digital Object: {}".format(instance.get("digital_object").get("_resolved").get("title")))
+ locations.append(get_file_versions(instance.get("digital_object").get("_resolved")))
+ barcodes.append(instance.get("digital_object").get("_resolved").get("digital_object_id"))
+ refs.append(instance.get("digital_object").get("ref"))
+ else:
+ instance_types.append(instance["instance_type"])
+ top_container = instance.get("sub_container").get("top_container").get("_resolved")
+ containers.append("{} {}".format(top_container.get("type").capitalize(), top_container.get("indicator")))
+ locations.append(get_locations(top_container))
+ barcodes.append(top_container.get("barcode"))
+ refs.append(instance.get("sub_container").get("top_container").get("ref"))
+ return prepare_values([instance_types, containers, locations, barcodes, refs])
+
+
+def get_preferred_format(item_json):
+ """Gets the instance data for the preferred delivery format of the current archival
+ object.
+
+ Prioritizes digital objects, then microform, and then returns anything if there
+ is an instance.
+
+ Args:
+ item_json (dict): ArchivesSpace archival object information that has
+ resolved top containers and digital objects.
+
+ Returns:
+ preferred (tuple): a tuple containing concatenated information of the
+ preferred format retrieved by get_instance_data.
"""
- for note in archival_object["notes"]:
- if note["type"] == "accessrestrict":
- if text_in_note(note, query_string.lower()):
- return True
- for rights_statement in archival_object["rights_statements"]:
- if indicates_restriction(rights_statement, restriction_acts):
- return True
- return False
+ preferred = None, None, None, None, None
+ if item_json.get("instances"):
+ instances = item_json.get("instances")
+ if any("digital_object" in obj for obj in instances):
+ preferred = get_instance_data([i for i in instances if i["instance_type"] == "digital_object"])
+ elif any(obj.get("instance_type") == "microform" for obj in instances):
+ preferred = get_instance_data([i for i in instances if i["instance_type"] == "microform"])
+ else:
+ preferred = get_instance_data([i for i in instances])
+ return preferred
+
+
+def get_rights_info(item_json, client):
+ """Gets rights status and text for an archival object.
+
+ If no parseable rights status is available, it is assumed the item is open.
+
+ Args:
+ item_json (dict): json for an archival object
+ client: an ASnake client
+
+ Returns:
+ status, text: A tuple containing the rights status and text. Status is
+ one of "closed", "conditional" or "open". Text is either None or a string
+ describing the restriction.
+ """
+ status = get_rights_status(item_json, client)
+ if not status:
+ for ancestor in item_json["ancestors"]:
+ status = get_rights_status(ancestor["_resolved"], client)
+ if status:
+ break
+ text = get_rights_text(item_json, client)
+ if not text:
+ for ancestor in item_json["ancestors"]:
+ text = get_rights_text(ancestor["_resolved"], client)
+ if text:
+ break
+ return status if status else "open", text
+
+
+def get_rights_status(item_json, client):
+ """Determines restrictions status for an archival object.
+
+ Evaluates an object's `restrictions_apply` boolean field, rights statements
+ and accessrestrict notes (in that order) to determine if restrictions have
+ been explicitly set on the archival object. Returns None if restrictions
+ cannot be parsed from those three sources.
+
+ Args:
+ item_json (dict): json for an archival object
+ client: an ASnake client
+
+ Returns:
+ status: One of "closed", "conditional", "open", None
+ """
+ status = None
+ if item_json.get("restrictions_apply"):
+ status = "closed"
+ elif item_json.get("rights_statements"):
+ for stmnt in item_json["rights_statements"]:
+ if any([act["restriction"].lower() == "disallow" for act in stmnt.get("acts", [])]):
+ status = "closed"
+ elif any([act["restriction"].lower() == "conditional" for act in stmnt.get("acts", [])]):
+ status = "conditional"
+ elif [n for n in item_json.get("notes", []) if n.get("type") == "accessrestrict"]:
+ notes = [n for n in item_json["notes"] if n.get("type") == "accessrestrict"]
+ if any([text_in_note(n, CLOSED_TEXT, client, confidence=CONFIDENCE_RATIO) for n in notes]):
+ status = "closed"
+ if any([text_in_note(n, OPEN_TEXT, client, confidence=CONFIDENCE_RATIO) for n in notes]):
+ status = "open"
+ elif any([text_in_note(n, OPEN_TEXT, client, confidence=CONFIDENCE_RATIO) for n in notes]):
+ status = "open"
+ else:
+ status = "conditional"
+ return status
+
+
+def get_rights_text(item_json, client):
+ """Fetches text describing restrictions on an archival object.
+
+ Args:
+ item_json (dict): json for an archival object (with resolved ancestors)
+ Returns:
+ string: note content of a conditions governing access that indicates a restriction
+ """
+ text = None
+ if [n for n in item_json.get("notes", []) if (n.get("type") == "accessrestrict" and n["publish"])]:
+ text = ", ".join(
+ [", ".join(get_note_text(n, client)) for n in item_json["notes"] if (n.get("type") == "accessrestrict" and n["publish"])])
+ elif item_json.get("rights_statements"):
+ string = ""
+ for stmnt in item_json["rights_statements"]:
+ for note in stmnt["notes"]:
+ string += ", ".join(note["content"])
+ text = string if string else None
+ return text
+
+
+def get_resource_creators(resource):
+ """Gets all creators of a resource record and concatenate them into a string
+ separated by commas.
+
+ Args:
+ resource (dict): resource record data.
+
+ Returns:
+ creators (string): comma-separated list of resource creators.
+ """
+ creators = []
+ if resource.get("linked_agents"):
+ for linked_agent in resource.get("linked_agents"):
+ if linked_agent.get("role") == "creator":
+ creators.append(linked_agent.get("_resolved").get('display_name').get('sort_name'))
+ return ", ".join(creators)
+
+
+def get_dates(archival_object, client):
+ """Gets the date expressions of an archival object or the date expressions of the
+ object's closest ancestor with date information.
+
+ Args:
+ archival_object (dict): json for an archival object (with resolved ancestors)
+
+ Returns:
+ string: all dates associated with an archival object or its closest ancestor, separated by a comma
+ """
+ dates = []
+ if archival_object.get("dates"):
+ dates = [get_date_display(d, client) for d in archival_object.get("dates")]
+ else:
+ for a in archival_object.get("ancestors"):
+ if a.get("_resolved").get("dates"):
+ dates = [get_date_display(d, client) for d in a.get("_resolved").get("dates")]
+ return ", ".join(dates)
diff --git a/process_request/migrations/0002_delete_machineuser.py b/process_request/migrations/0002_delete_machineuser.py
new file mode 100644
index 0000000..0a18ac7
--- /dev/null
+++ b/process_request/migrations/0002_delete_machineuser.py
@@ -0,0 +1,16 @@
+# Generated by Django 2.2.10 on 2020-08-30 23:44
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('process_request', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.DeleteModel(
+ name='MachineUser',
+ ),
+ ]
diff --git a/process_request/models.py b/process_request/models.py
index 33071c8..89dd500 100644
--- a/process_request/models.py
+++ b/process_request/models.py
@@ -1,5 +1,4 @@
-from django.contrib.auth.models import AbstractBaseUser, AbstractUser
-from django.db import models
+from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
@@ -26,22 +25,3 @@ def __str__(self):
Returns the full name and email of a user.
"""
return '{} <{}>'.format(self.full_name, self.email)
-
-
-class MachineUser(AbstractBaseUser):
- username = None
- system_name = models.CharField(blank=False, max_length=255, unique=True)
- host_location = models.URLField(blank=False)
- api_key = models.CharField(blank=False, max_length=255)
-
- is_active = models.BooleanField(
- default=True,
- )
-
- USERNAME_FIELD = 'system_name'
-
- def __str__(self):
- """
- Returns the system name.
- """
- return self.system_name
diff --git a/process_request/routines.py b/process_request/routines.py
index 6c8473e..41c6164 100644
--- a/process_request/routines.py
+++ b/process_request/routines.py
@@ -1,142 +1,277 @@
from asnake.aspace import ASpace
+from django.core.mail import send_mail
from request_broker import settings
+from .helpers import (get_container_indicators, get_dates,
+ get_preferred_format, get_resource_creators,
+ get_rights_info)
-class Routine:
- """
- Base routine class which is inherited by all other routines.
-
- Provides default clients for ArchivesSpace.
- """
- def __init__(self):
- self.aspace = ASpace(baseurl=settings.ARCHIVESSPACE["baseurl"],
- username=settings.ARCHIVESSPACE["username"],
- password=settings.ARCHIVESSPACE["password"],
- repository=settings.ARCHIVESSPACE["repo_id"])
-
-
-class ProcessRequest(Routine):
- # TODO: main section where processing happens
- # Push requests to submitted or unsubmitted
- # If open and delivery formats, mark as submittable
- # TO DO: add code to read through the rights in order
- # 1. PREMIS rights statements first
- # 2. Conditions governing access notes
- # 3. Next closest conditions governing access notes/rights statements (inherited)
+class Processor(object):
"""
- Runs through the process of iterating through requests, getting json information,
- checking delivery formats, checking restrictrions, and adding items to lists.
+ Processes requests by getting json information, checking restrictions, and getting
+ delivery formats.
"""
- def get_data(self, item):
- """Gets an archival object from ArchivesSpace.
+ def get_data(self, uri):
+ """Gets data about an archival object from ArchivesSpace.
Args:
- item (str): An ArchivesSpace URI.
+ uris (str): An ArchivesSpace URI.
Returns:
- obj: An ArchivesSpace Archival Object.
+ obj (dict): A JSON representation of an ArchivesSpace Archival Object.
"""
- obj = self.aspace.client.get(item)
- return obj
+ aspace = ASpace(baseurl=settings.ARCHIVESSPACE["baseurl"],
+ username=settings.ARCHIVESSPACE["username"],
+ password=settings.ARCHIVESSPACE["password"],
+ repository=settings.ARCHIVESSPACE["repo_id"])
+ obj = aspace.client.get(uri, params={"resolve": ["resource::linked_agents", "ancestors",
+ "top_container", "top_container::container_locations", "instances::digital_object"]})
+ if obj.status_code == 200:
+ item_json = obj.json()
+ item_collection = item_json.get("ancestors")[-1].get("_resolved")
+ parent = item_json.get("ancestors")[0].get("_resolved").get("display_string") if len(item_json.get("ancestors")) > 1 else None
+ format, container, location, barcode, container_uri = get_preferred_format(item_json)
+ restrictions, restrictions_text = get_rights_info(item_json, aspace.client)
+ return {
+ "creators": get_resource_creators(item_collection),
+ "restrictions": restrictions,
+ "restrictions_text": restrictions_text,
+ "collection_name": item_collection.get("title"),
+ "parent": parent,
+ "dates": get_dates(item_json, aspace.client),
+ "resource_id": item_collection.get("id_0"),
+ "title": item_json.get("display_string"),
+ "uri": item_json.get("uri"),
+ "containers": get_container_indicators(item_json),
+ "preferred_instance": {
+ "format": format,
+ "container": container,
+ "location": location,
+ "barcode": barcode,
+ "uri": container_uri,
+ }
+ }
+ else:
+ raise Exception(obj.json()["error"])
- def inherit_restrictions(obj):
- """Iterates up from an archial object level to find the nearest restriction
- act or restriction note.
+ def process_email_request(self, object_list):
+ """Processes email requests.
Args:
- obj: An ArchivesSpace archival object.
+ object_list (list): A list of AS archival object URIs.
+
+ Returns:
+ data (list): A list of dicts of objects.
"""
- # TODO: Add code to look up and inherit accessrestrict notes. Will need
- # to address resource records at some point.
- pass
+ processed = []
+ for item in object_list:
+ processed.append(self.get_data(item))
+ return processed
- def check_formats(obj):
- """Parses instances and creates a list of instance types. Matches list against
- list of acceptable delivery formats. Acceptable formats include digital,
- microform, or mixed materials.
+ def is_submittable(self, item):
+ """Determines if a request item is submittable.
Args:
- obj (JSONModelObject): an ArchivesSpace archival object.
+ item (dict): request item data.
Returns:
- bool: True on any match with delivery formats. None on no match or instances.
+ submit (bool): indicate if the request item is submittable or not.
+ reason (str): if applicable, a human-readable explanation for why
+ the request is not submittable.
"""
- formats = []
- if obj.instances:
- for instance in obj.instances:
- if instance.instance_type in formats:
- return True
- else:
- return None
- else:
- return None
+ submit = True
+ reason = None
+ if item["restrictions"] == "closed":
+ submit = False
+ reason = "This item is currently unavailable for request. It will not be included in request. Reason: {}".format(item.get("restrictions_text"))
+ elif "digital" in item["preferred_instance"]["format"].lower():
+ submit = False
+ reason = "This item is already available online. It will not be included in request."
+ elif item["restrictions"] == "conditional":
+ reason = "This item may be currently unavailable for request. It will be included in request. Reason: {}".format(item.get("restrictions_text"))
+ return submit, reason
- def return_formats(obj):
- # TO DO: Expand to log if digital objects exist so we can log whether to send duplication or retreival requests.
- """Returns a list of acceptable delivery formats for an archival object.
+ def parse_item(self, uri):
+ """Parses requested items to determine which are submittable. Adds a
+ `submit` and `submit_reason` attribute to each item.
Args:
- obj: An ArchivesSpace archival object.
+ uri (str): An AS archival object URI.
Returns:
- list: list of instance objects that match delivery formats.
+ parsed (dict): A dicts containing parsed item information.
"""
- for instance in obj.instances:
- pass
+ data = self.get_data(uri)
+ submit, reason = self.is_submittable(data)
+ return {"uri": uri, "submit": submit, "submit_reason": reason}
- def run(self, object_list):
- """Runs the process request functions with proper conditionals. First get
- object, then check restrictions, then check if proper delivery formats exist,
- and then gets delivery format information. If the obj, fails a check, it
- gets added to a dict of unsubmitted materials with reason for failure,
- if it passes all, add it and corresponding delivery format info to a submission
- dictionary.
+
+class Mailer(object):
+ """Email delivery class."""
+
+ def send_message(self, email, object_list, subject=None, message=""):
+ """Sends an email with request data to an email address or list of
+ addresses.
Args:
- object_list (list): A list of AS archival object URIs.
+ email (str): email address to send email to.
+ object_list (list): list of URIs for requested objects.
+ subject (str): string to attach to the subject of the email.
+ message (str): message to prepend to the email body.
Returns:
- submitted (list): A list of dicts of submittable objects with corresponding most
- desirable delivery format.
- unsubmitted (list): A list of dicts of unsubmittable objects with corresponding
- reason of failure.
+ str: a string message that the emails were sent.
"""
- for item in object_list:
- try:
- data = self.get_data(item)
- except Exception as e:
- print(e)
- return data
- # raise AttributeError
- # if check_formats:
- # run necessary checks
- # add object to submission list
- # pass
- # else:
- # Add object to unsubmitted list
- # pass
-
-
-class SendEmail(Routine):
- """Sends an email with request data to an email address or list of addresses.
- """
- pass
+ message = message + "\n" if message else message
+ recipient_list = email if isinstance(email, list) else [email]
+ subject = subject if subject else "My List from DIMES"
+ processor = Processor()
+ fetched = [processor.get_data(item) for item in object_list]
+ message += self.format_items(fetched)
+ # TODO: decide if we want to send html messages
+ send_mail(
+ subject,
+ message,
+ settings.EMAIL_DEFAULT_FROM,
+ recipient_list,
+ fail_silently=False)
+ return "email sent to {}".format(", ".join(recipient_list))
+ def format_items(self, object_list):
+ """Converts dicts into strings and appends them to message body.
-class SendRequest(Routine):
- """Sends submitted data to Aeon for transaction creation in Aeon.
- """
- pass
+ Location and barcode are not appended to the message.
+ Args:
+ object_list (list): list of requested objects.
-class SendDuplication(Routine):
- """Sends submitted data for duplication request creation in Aeon.
- """
+ Returns:
+ message (str): a string respresentation of the converted dicts.
+ """
+ message = ""
+ for obj in object_list:
+ for k, v in obj.items():
+ if k in settings.EXPORT_FIELDS:
+ message += "{}: {}\n".format(k, v)
+ message += "\n"
+ return message
-class DownloadCSV(Routine):
- """Create a streaming csv file based on original request.
- """
- pass
+class AeonRequester(object):
+ """Creates transactions in Aeon by sending data to the Aeon API."""
+
+ def __init__(self):
+ self.request_defaults = {
+ "AeonForm": "EADRequest",
+ "DocumentType": "Default",
+ "GroupingIdentifier": "GroupingField",
+ "GroupingOption_ItemInfo1": "Concatenate",
+ "GroupingOption_ItemDate": "Concatenate",
+ "GroupingOption_ItemTitle": "FirstValue",
+ "GroupingOption_ItemAuthor": "FirstValue",
+ "GroupingOption_ItemSubtitle": "FirstValue",
+ "GroupingOption_ItemVolume": "FirstValue",
+ "GroupingOption_ItemIssue": "Concatenate",
+ "GroupingOption_ItemInfo2": "Concatenate",
+ "GroupingOption_CallNumber": "FirstValue",
+ "GroupingOption_ItemInfo3": "FirstValue",
+ "GroupingOption_ItemCitation": "FirstValue",
+ "UserReview": "No",
+ "SubmitButton": "Submit Request",
+ }
+
+ def get_request_data(self, request_type, **kwargs):
+ """Delivers request to Aeon.
+
+ Args:
+ request_type (str): string indicating whether the request is for the
+ readingroom or duplication.
+
+ Returns:
+ dict: Request data.
+
+ Raise:
+ ValueError: if request_type is not readingroom or duplicate.
+ """
+ processor = Processor()
+ fetched = [processor.get_data(item) for item in kwargs.get("items")]
+ if request_type == "readingroom":
+ data = self.prepare_reading_room_request(fetched, kwargs)
+ elif request_type == "duplication":
+ data = self.prepare_duplication_request(fetched, kwargs)
+ else:
+ raise ValueError(
+ "Unknown request type '{}', expected either 'readingroom' or 'duplication'".format(request_type))
+ return data
+
+ def prepare_reading_room_request(self, items, request_data):
+ """Maps reading room request data to Aeon fields.
+
+ Args:
+ items (list): Resolved data about AS archival objects.
+ request_data (dict): data about user-submitted requests.
+
+ Returns:
+ data: Submission data for Aeon.
+ """
+ reading_room_defaults = {
+ "WebRequestForm": "DefaultRequest",
+ "RequestType": "Loan",
+ "ScheduledDate": request_data.get("scheduledDate"),
+ "SpecialRequest": request_data.get("questions"),
+ }
+ request_data = self.parse_items(items)
+ return dict(**self.request_defaults, **reading_room_defaults, **request_data)
+
+ def prepare_duplication_request(self, items, request_data):
+ """Maps duplication request data to Aeon fields.
+
+ Args:
+ items (list): Resolved data about AS archival objects.
+ request_data (dict): data about user-submitted requests.
+
+ Returns:
+ data: Submission data for Aeon.
+ """
+ duplication_defaults = {
+ "WebRequestForm": "PhotoduplicationRequest",
+ "RequestType": "Copy",
+ "Format": request_data.get("format"),
+ "SpecialRequest": request_data.get("questions"),
+ "SkipOrderEstimate": "Yes",
+ }
+ request_data = self.parse_items(items, request_data.get("description", ""))
+ return dict(**self.request_defaults, **duplication_defaults, **request_data)
+
+ def parse_items(self, items, description=""):
+ """Assigns item data to Aeon request fields.
+
+ Args:
+ items (list): a list of items from a request.
+
+ Returns:
+ parsed (dict): a dictionary containing parsed item data.
+ """
+ parsed = {"Request": []}
+ for i in items:
+ request_prefix = i["uri"].split("/")[-1]
+ parsed["Request"].append(request_prefix)
+ parsed.update({
+ "CallNumber_{}".format(request_prefix): i["resource_id"],
+ "GroupingField_{}".format(request_prefix): i["preferred_instance"]["uri"],
+ "ItemAuthor_{}".format(request_prefix): i["creators"],
+ "ItemCitation_{}".format(request_prefix): i["uri"],
+ "ItemDate_{}".format(request_prefix): i["dates"],
+ "ItemInfo1_{}".format(request_prefix): i["title"],
+ "ItemInfo2_{}".format(request_prefix): i["restrictions_text"],
+ "ItemInfo3_{}".format(request_prefix): i["uri"],
+ "ItemInfo4_{}".format(request_prefix): description,
+ "ItemNumber_{}".format(request_prefix): i["preferred_instance"]["barcode"],
+ "ItemSubtitle_{}".format(request_prefix): i["parent"],
+ "ItemTitle_{}".format(request_prefix): i["collection_name"],
+ "ItemVolume_{}".format(request_prefix): i["preferred_instance"]["container"],
+ "Location_{}".format(request_prefix): i["preferred_instance"]["location"]
+ })
+ return parsed
diff --git a/process_request/serializers.py b/process_request/serializers.py
deleted file mode 100644
index 9a248e0..0000000
--- a/process_request/serializers.py
+++ /dev/null
@@ -1,12 +0,0 @@
-from rest_framework import serializers
-
-from .models import MachineUser
-
-
-class MachineUserSerializer(serializers.ModelSerializer):
- class Meta:
- model = MachineUser
- fields = ['system_name', 'host_location', 'api_key', 'is_active']
-
- def create(self, validated_data):
- return MachineUser.objects.create(**validated_data)
diff --git a/process_request/test_helpers.py b/process_request/test_helpers.py
new file mode 100644
index 0000000..16ae8b2
--- /dev/null
+++ b/process_request/test_helpers.py
@@ -0,0 +1,31 @@
+import json
+import random
+import string
+from os.path import join
+
+from request_broker import settings
+
+FIXTURES_DIR = join(settings.BASE_DIR, "fixtures")
+
+
+def random_string(length=20):
+ """Returns a random string of specified length."""
+ return "".join(random.choice(string.ascii_letters) for m in range(length))
+
+
+def random_list():
+ """Returns a random list."""
+ return random.sample(string.ascii_lowercase, random.randint(2, 10))
+
+
+def json_from_fixture(filename):
+ """Gets json information from a file.
+
+ Args:
+ filename (string): a file to read.
+
+ Returns:
+ dict: json data from the file.
+ """
+ with open(join(FIXTURES_DIR, filename), "r") as df:
+ return json.load(df)
diff --git a/process_request/tests.py b/process_request/tests.py
index 4d70a7a..fb3b4d0 100644
--- a/process_request/tests.py
+++ b/process_request/tests.py
@@ -1,16 +1,29 @@
+import csv
+from datetime import date
from os.path import join
+from unittest.mock import patch
import vcr
+from asnake.aspace import ASpace
+from django.core import mail
+from django.http import StreamingHttpResponse
from django.test import TestCase
from django.urls import reverse
from request_broker import settings
-from rest_framework.test import APIRequestFactory
+from rest_framework.test import APIRequestFactory, RequestsClient
-from .models import MachineUser, User
-from .routines import ProcessRequest
-from .views import ProcessRequestView
+from .helpers import (get_container_indicators, get_dates, get_file_versions,
+ get_instance_data, get_locations, get_preferred_format,
+ get_resource_creators, get_rights_info,
+ get_rights_status, get_rights_text, prepare_values)
+from .models import User
+from .routines import AeonRequester, Mailer, Processor
+from .test_helpers import json_from_fixture, random_list, random_string
+from .views import (DeliverDuplicationRequestView,
+ DeliverReadingRoomRequestView, DownloadCSVView, MailerView,
+ ParseRequestView)
-transformer_vcr = vcr.VCR(
+aspace_vcr = vcr.VCR(
serializer='json',
cassette_library_dir=join(settings.BASE_DIR, 'fixtures/cassettes'),
record_mode='once',
@@ -19,14 +32,6 @@
filter_headers=['Authorization', 'X-ArchivesSpace-Session'],
)
-ROUTINES = (
- ('process_request.json', ProcessRequest),
-)
-
-VIEWS = (
- ('process_request.json', ProcessRequestView),
-)
-
class TestUsers(TestCase):
@@ -38,27 +43,303 @@ def test_user(self):
self.assertEqual(user.full_name, "Patrick Galligan")
self.assertEqual(str(user), "Patrick Galligan ")
- def test_machineuser(self):
- system = 'Zodiac'
- user = MachineUser(system_name="Zodiac")
- self.assertEqual(str(user), system)
+
+class TestHelpers(TestCase):
+
+ @aspace_vcr.use_cassette("aspace_request.json")
+ def setUp(self):
+ self.client = ASpace(baseurl=settings.ARCHIVESSPACE["baseurl"],
+ username=settings.ARCHIVESSPACE["username"],
+ password=settings.ARCHIVESSPACE["password"],
+ repository=settings.ARCHIVESSPACE["repo_id"]).client
+
+ def test_get_resource_creators(self):
+ obj_data = json_from_fixture("object_all.json")
+ self.assertEqual(get_resource_creators(obj_data.get("ancestors")[-1].get("_resolved")), "Philanthropy Foundation")
+
+ def test_get_dates(self):
+ obj_data = json_from_fixture("object_all.json")
+ self.assertEqual(get_dates(obj_data, self.client), "1991")
+
+ obj_data = json_from_fixture("object_no_expression.json")
+ self.assertEqual(get_dates(obj_data, self.client), "1991-1992")
+
+ obj_data = json_from_fixture("object_no_expression_no_end.json")
+ self.assertEqual(get_dates(obj_data, self.client), "1993")
+
+ def test_get_container_indicators(self):
+ letters = random_string(10)
+ expected_title = "Digital Object: {}".format(letters)
+ item = {'instances': [{'instance_type': 'digital_object', 'digital_object': {'_resolved': {'title': letters}}}]}
+ self.assertEqual(get_container_indicators(item), expected_title)
+
+ type = random_string(10)
+ number = random_string(2)
+ item = {'instances': [{'instance_type': 'mixed materials', 'sub_container':
+ {'top_container': {'_resolved': {'type': type, 'indicator': number}}}}]}
+ expected_indicator = "{} {}".format(type.capitalize(), number)
+ self.assertEqual(get_container_indicators(item), expected_indicator)
+
+ type = random_string(10)
+ number = random_string(2)
+ letters = random_string(10)
+ item = {'instances': [{'instance_type': 'mixed materials', 'sub_container':
+ {'top_container': {'_resolved': {'type': type, 'indicator': number}}}},
+ {'instance_type': 'digital_object', 'digital_object': {'_resolved': {'title': letters}}}]}
+ expected_containers = "{} {}, Digital Object: {}".format(type.capitalize(), number, letters)
+ self.assertEqual(get_container_indicators(item), expected_containers)
+
+ item = {'instances': []}
+ self.assertEqual(get_container_indicators(item), None)
+
+ def test_get_file_versions(self):
+ uri = random_string(10)
+ digital_object = {'file_versions': [{'file_uri': uri}]}
+ self.assertEqual(get_file_versions(digital_object), uri)
+
+ def test_get_locations(self):
+ obj_data = json_from_fixture("locations.json")
+ expected_location = "Rockefeller Archive Center, Blue Level, Vault 106 [Unit: 66, Shelf: 7]"
+ self.assertEqual(get_locations(obj_data), expected_location)
+
+ def test_get_instance_data(self):
+ obj_data = json_from_fixture("digital_object_instance.json")
+ expected_values = ("digital_object", "Digital Object: digital object", "http://google.com", "238475",
+ "/repositories/2/digital_objects/3367")
+ self.assertEqual(get_instance_data([obj_data]), expected_values)
+
+ obj_data = json_from_fixture("mixed_materials_instance.json")
+ expected_values = ("mixed materials", "Box 2",
+ "Rockefeller Archive Center, Blue Level, Vault 106 [Unit: 66, Shelf: 7]",
+ "A12345", "/repositories/2/top_containers/191161")
+ self.assertEqual(get_instance_data([obj_data]), expected_values)
+
+ def test_get_preferred_format(self):
+ obj_data = json_from_fixture("object_digital.json")
+ expected_data = ("digital_object", "Digital Object: digital object, Digital Object: digital object 2",
+ "http://google.com, http://google2.com", "238475, 238476",
+ "/repositories/2/digital_objects/3367, /repositories/2/digital_objects/3368")
+ self.assertEqual(get_preferred_format(obj_data), expected_data)
+
+ obj_data = json_from_fixture("object_microform.json")
+ expected_data = ("microform",
+ "Reel 1, Reel 2",
+ "Rockefeller Archive Center, Blue Level, Vault 106 [Unit: 66, Shelf: 7], Rockefeller Archive Center, Blue Level, Vault 106 [Unit: 66, Shelf: 8]",
+ "A12345, A123456", "/repositories/2/top_containers/191157, /repositories/2/top_containers/191158")
+ self.assertEqual(get_preferred_format(obj_data), expected_data)
+
+ obj_data = json_from_fixture("object_mixed.json")
+ expected_data = ("mixed materials",
+ "Box 1, Box 2",
+ "Rockefeller Archive Center, Blue Level, Vault 106 [Unit: 66, Shelf: 7], Rockefeller Archive Center, Blue Level, Vault 106 [Unit: 66, Shelf: 8]",
+ "A12345, A123456", "/repositories/2/top_containers/191157, /repositories/2/top_containers/191158")
+ self.assertEqual(get_preferred_format(obj_data), expected_data)
+
+ obj_data = json_from_fixture("object_no_instance.json")
+ expected_data = (None, None, None, None, None)
+ self.assertEqual(get_preferred_format(obj_data), expected_data)
+
+ def test_prepare_values(self):
+ values_list = [["mixed materials", "mixed materials", None],
+ ["Reel 1", "Box 2", None, "Reel 2"],
+ ["Shelf 1", None, "Shelf 2"],
+ ["A0001", "A0002", "A0003"]
+ ]
+ expected_parsed = ("mixed materials", "Reel 1, Box 2, Reel 2",
+ "Shelf 1, Shelf 2",
+ "A0001, A0002, A0003",
+ )
+ self.assertEqual(prepare_values(values_list), expected_parsed)
+
+ values_list = [[None], [None], [None], [None]]
+ expected_parsed = (None, None, None, None)
+ self.assertEqual(prepare_values(values_list), expected_parsed)
+
+ def test_get_rights_info(self):
+ item = json_from_fixture("object_restricted_ancestor.json")
+ info = get_rights_info(item, self.client)
+ self.assertTrue(isinstance(info, tuple))
+ self.assertEqual(info[0], "closed")
+ self.assertEqual(info[1], "Ancestor Note")
+
+ def test_get_rights_status(self):
+ for fixture, status in [
+ ("object_restricted_boolean.json", "closed"),
+ ("object_restricted_note.json", "closed"),
+ ("object_restricted_note_conditional.json", "conditional"),
+ ("object_restricted_note_open.json", "open"),
+ ("object_restricted_rights_statement.json", "closed"),
+ ("object_restricted_rights_statement_conditional.json", "conditional")]:
+ item = json_from_fixture(fixture)
+ self.assertEqual(get_rights_status(item, self.client), status)
+
+ def test_get_rights_text(self):
+ for fixture, status in [
+ ("object_restricted_boolean.json", None),
+ ("object_restricted_note.json", "Restricted - Open 2025"),
+ ("object_restricted_note_conditional.json", "Access copy unavailable. Please contact an archivist."),
+ ("object_restricted_note_open.json", "Open for research."),
+ ("object_restricted_rights_statement.json", "Rights statement note."),
+ ("object_restricted_rights_statement_conditional.json", None)]:
+ item = json_from_fixture(fixture)
+ self.assertEqual(get_rights_text(item, self.client), status)
+
+ # Test is commented out as the code is currently not used, and this allows us to shed a few configs
+ # def test_aeon_client(self):
+ # baseurl = random_string(20)
+ # client = AeonAPIClient(baseurl)
+ # self.assertEqual(client.baseurl, baseurl)
+ # self.assertEqual(client.session.headers.get("X-AEON-API-KEY"), settings.AEON_API_KEY)
class TestRoutines(TestCase):
- def test_routines(self):
- for cassette, routine in ROUTINES:
- with transformer_vcr.use_cassette(cassette):
- routines = ProcessRequest().run(['/repositories/2/archival_objects/8457'])
- self.assertEqual(routines.status_code, 200)
+ @patch("process_request.routines.Processor.get_data")
+ def test_parse_item(self, mock_get_data):
+ item = json_from_fixture("as_data.json")
+ mock_get_data.return_value = item
+ for restrictions, text, submit, reason in [
+ ("closed", "foo", False, "This item is currently unavailable for request. It will not be included in request. Reason: foo"),
+ ("open", "bar", True, None),
+ ("conditional", "foobar", True, "This item may be currently unavailable for request. It will be included in request. Reason: foobar")]:
+ mock_get_data.return_value["restrictions"] = restrictions
+ mock_get_data.return_value["restrictions_text"] = text
+ parsed = Processor().parse_item(mock_get_data.return_value["uri"])
+ self.assertEqual(parsed["submit"], submit)
+ self.assertEqual(parsed["submit_reason"], reason)
+ for format, submit in [
+ ("Digital", False), ("Mixed materials", True), ("microfilm", True)]:
+ mock_get_data.return_value["preferred_instance"]["format"] = format
+ parsed = Processor().parse_item(item["uri"])
+ self.assertEqual(parsed["submit"], submit)
+
+ @patch("process_request.routines.Processor.get_data")
+ def test_process_email_request(self, mock_get_data):
+ mock_get_data.return_value = json_from_fixture("as_data.json")
+ to_process = random_list()
+ processed = Processor().process_email_request(to_process)
+ self.assertEqual(len(to_process), len(processed))
+ self.assertTrue([isinstance(item, dict) for item in processed])
+
+ @patch("process_request.routines.Processor.get_data")
+ def test_deliver_email(self, mock_get_data):
+ mock_get_data.return_value = json_from_fixture("as_data.json")
+ object_list = [json_from_fixture("as_data.json")["uri"]]
+ for to, subject in [
+ ("test@example.com", "Subject"),
+ (["foo@example.com", "bar@example.com"], None)]:
+ expected_to = to if isinstance(to, list) else [to]
+ emailed = Mailer().send_message(to, object_list, subject)
+ self.assertEqual(emailed, "email sent to {}".format(", ".join(expected_to)))
+ self.assertTrue(isinstance(mail.outbox[0].to, list))
+ self.assertIsNot(mail.outbox[0].subject, None)
+ self.assertNotIn("location", mail.outbox[0].body)
+ self.assertNotIn("barcode", mail.outbox[0].body)
+
+ @aspace_vcr.use_cassette("aspace_request.json")
+ def test_get_data(self):
+ get_as_data = Processor().get_data("/repositories/2/archival_objects/1134638")
+ self.assertTrue(isinstance(get_as_data, dict))
+ self.assertEqual(len(get_as_data), 11)
+
+ @patch("process_request.routines.Processor.get_data")
+ def test_send_aeon_requests(self, mock_get_data):
+ mock_get_data.return_value = json_from_fixture("as_data.json")
+
+ data = {"scheduled_date": date.today().isoformat(), "items": random_list()}
+ delivered = AeonRequester().get_request_data("readingroom", **data)
+ self.assertTrue(isinstance(delivered, dict))
+
+ data["format"] = "jpeg"
+ delivered = AeonRequester().get_request_data("duplication", **data)
+ self.assertTrue(isinstance(delivered, dict))
+
+ request_type = "foo"
+ with self.assertRaises(Exception, msg="Unknown request type '{}', expected either 'readingroom' or 'duplication'".format(request_type)):
+ AeonRequester().get_request_data(request_type, **data)
class TestViews(TestCase):
- def test_processrequestview(self):
- factory = APIRequestFactory()
- for v in VIEWS:
- with transformer_vcr.use_cassette(v[0]):
- request = factory.post(reverse('process-request'), {"items": ["/repositories/2/archival_objects/8457"]}, format='json')
- response = v[1].as_view()(request)
- self.assertEqual(response.status_code, 200)
+ def setUp(self):
+ self.factory = APIRequestFactory()
+
+ def assert_handles_routine(self, request_data, view_str, view):
+ request = self.factory.post(
+ reverse(view_str), request_data, format="json")
+ response = view.as_view()(request)
+ self.assertEqual(response.status_code, 200, "Response error: {}".format(response.data))
+ self.assertEqual(len(response.data), 1)
+
+ def assert_handles_exceptions(self, patched_fn, exception_text, view_str, view):
+ patched_fn.side_effect = Exception(exception_text)
+ request = self.factory.post(
+ reverse(view_str), {"items": random_list()}, format="json")
+ response = view.as_view()(request)
+ self.assertEqual(
+ response.status_code, 500, "Request did not return a 500 response")
+ self.assertEqual(
+ response.data["detail"], exception_text, "Exception string not in response")
+
+ @patch("process_request.routines.Processor.get_data")
+ def test_download_csv_view(self, mock_get_data):
+ mock_get_data.return_value = json_from_fixture("as_data.json")
+ to_process = random_list()
+ request = self.factory.post(
+ reverse("download-csv"), {"items": to_process}, format="json")
+ response = DownloadCSVView.as_view()(request)
+ self.assertTrue(isinstance(response, StreamingHttpResponse))
+ self.assertEqual(response.get('Content-Type'), "text/csv")
+ self.assertIn("attachment;", response.get('Content-Disposition'))
+ f = response.getvalue().decode("utf-8")
+ reader = csv.reader(f.splitlines())
+ self.assertEqual(
+ sum(1 for row in reader), len(to_process) + 1,
+ "Incorrect number of rows in CSV file")
+
+ self.assert_handles_exceptions(
+ mock_get_data, "foobar", "download-csv", DownloadCSVView)
+
+ @patch("process_request.routines.Mailer.send_message")
+ def test_send_email_request_view(self, mock_sent):
+ mock_sent.return_value = "email sent"
+ self.assert_handles_routine(
+ {"items": random_list(), "to_address": "test@example.com", "subject": "DIMES list"},
+ "deliver-email",
+ MailerView)
+ self.assert_handles_exceptions(
+ mock_sent, "foobar", "deliver-email", MailerView)
+
+ @patch("process_request.routines.Processor.parse_item")
+ def test_parse_request_view(self, mock_parse):
+ parsed = {"foo": "bar"}
+ mock_parse.return_value = parsed
+ self.assert_handles_routine(
+ {"item": random_string()}, "parse-request", ParseRequestView)
+ self.assert_handles_exceptions(
+ mock_parse, "bar", "parse-request", ParseRequestView)
+
+ @patch("process_request.routines.AeonRequester.get_request_data")
+ def test_deliver_readingroomrequest_view(self, mock_send):
+ delivered = {"foo": "bar"}
+ mock_send.return_value = delivered
+ self.assert_handles_routine(
+ {"items": delivered, "scheduled_date": date.today().isoformat()},
+ "deliver-readingroom", DeliverReadingRoomRequestView)
+ self.assert_handles_exceptions(
+ mock_send, "bar", "deliver-readingroom", DeliverReadingRoomRequestView)
+
+ @patch("process_request.routines.AeonRequester.get_request_data")
+ def test_deliver_duplicationrequest_view(self, mock_send):
+ delivered = {"foo": "bar"}
+ mock_send.return_value = delivered
+ self.assert_handles_routine(
+ {"items": delivered, "format": "jpeg"},
+ "deliver-duplication", DeliverDuplicationRequestView)
+ self.assert_handles_exceptions(
+ mock_send, "bar", "deliver-duplication", DeliverDuplicationRequestView)
+
+ def test_status_view(self):
+ client = RequestsClient()
+ response = client.get("http://testserver{}".format(reverse("api_health_ping")))
+ assert response.status_code == 200
diff --git a/process_request/views.py b/process_request/views.py
index 14eafe6..c2a1167 100644
--- a/process_request/views.py
+++ b/process_request/views.py
@@ -1,15 +1,100 @@
+import csv
+from datetime import datetime
+
+from django.http import StreamingHttpResponse
+from request_broker import settings
from rest_framework.response import Response
from rest_framework.views import APIView
-from .routines import ProcessRequest
+from .routines import AeonRequester, Mailer, Processor
+
+class BaseRequestView(APIView):
+ """Base view which handles POST requests returns the appropriate response.
-class ProcessRequestView(APIView):
- '''
- Calls the ProcessRequest class from routines.
- '''
+ Requires children to implement a `get_response_data` method."""
def post(self, request, format=None):
- object_list = request.data.get('items')
- process_list = ProcessRequest().run(object_list)
- return Response(process_list, status=200)
+ try:
+ data = self.get_response_data(request)
+ return Response(data, status=200)
+ except Exception as e:
+ return Response({"detail": str(e)}, status=500)
+
+
+class ParseRequestView(BaseRequestView):
+ """Parses an item to determine whether or not it is submittable."""
+
+ def get_response_data(self, request):
+ uri = request.data.get("item")
+ return Processor().parse_item(uri)
+
+
+class MailerView(BaseRequestView):
+ """Delivers email messages containing data."""
+
+ def get_response_data(self, request):
+ object_list = request.data.get("items")
+ to_address = request.data.get("email")
+ subject = request.data.get("subject")
+ message = request.data.get("message")
+ emailed = Mailer().send_message(to_address, object_list, subject, message)
+ return {"detail": emailed}
+
+
+class DeliverReadingRoomRequestView(BaseRequestView):
+ """Delivers a request for records to be delivered to the reading room."""
+
+ def get_response_data(self, request):
+ request_data = request.data
+ delivered = AeonRequester().get_request_data(
+ "readingroom", **request_data)
+ return delivered
+
+
+class DeliverDuplicationRequestView(BaseRequestView):
+ """Delivers a request for records to be duplicated."""
+
+ def get_response_data(self, request):
+ request_data = request.data
+ delivered = AeonRequester().get_request_data(
+ "duplication", **request_data)
+ return delivered
+
+
+class Echo:
+ """An object that implements just the write method of the file-like
+ interface, returning the object instead of buffering. Used to stream
+ downloads.
+ """
+
+ def write(self, value):
+ return value
+
+
+class DownloadCSVView(APIView):
+ """Downloads a CSV file."""
+
+ def iter_items(self, items, pseudo_buffer):
+ """Returns an iterable containing the spreadsheet rows."""
+ fieldnames = settings.EXPORT_FIELDS
+ writer = csv.DictWriter(pseudo_buffer, fieldnames=fieldnames, extrasaction="ignore")
+ yield writer.writerow(dict((fn, fn) for fn in writer.fieldnames))
+ for row in items:
+ yield writer.writerow(row)
+
+ def post(self, request):
+ """Streams a large CSV file."""
+ try:
+ submitted = request.data.get("items")
+ processor = Processor()
+ fetched = [processor.get_data(item) for item in submitted]
+ response = StreamingHttpResponse(
+ streaming_content=(self.iter_items(fetched, Echo())),
+ content_type="text/csv",
+ )
+ filename = "dimes-{}.csv".format(datetime.now().isoformat())
+ response["Content-Disposition"] = "attachment; filename={}".format(filename)
+ return response
+ except Exception as e:
+ return Response({"detail": str(e)}, status=500)
diff --git a/request_broker/config.py.example b/request_broker/config.py.example
deleted file mode 100644
index 9eed60c..0000000
--- a/request_broker/config.py.example
+++ /dev/null
@@ -1,22 +0,0 @@
-DEBUG = True
-
-DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.postgresql',
- 'NAME': 'postgres',
- 'USER': 'postgres',
- 'HOST': 'request-broker-db',
- 'PORT': 5432,
- }
-}
-
-ALLOWED_HOSTS = ['request-broker-web', 'localhost']
-
-ARCHIVESSPACE = {
- "baseurl": "http://localhost:8089/",
- "username": "admin",
- "password": "admin",
- "repo_id": 2,
-}
-
-STATIC_ROOT = '/static'
diff --git a/request_broker/settings.py b/request_broker/settings.py
index 96bdcc2..189f776 100644
--- a/request_broker/settings.py
+++ b/request_broker/settings.py
@@ -12,8 +12,6 @@
import os
-import request_broker.config as CF
-
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
@@ -22,12 +20,12 @@
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
-SECRET_KEY = 'obop2gifqn6wncaha^dt!w3an-%vkj_&1a@(w-2ci0))^o%#f4'
+SECRET_KEY = os.environ.get("SECRET_KEY")
# SECURITY WARNING: don't run with debug turned on in production!
-DEBUG = True
+DEBUG = int(os.environ.get("DEBUG", default=True))
-ALLOWED_HOSTS = []
+ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS").split(" ")
# Application definition
@@ -39,10 +37,14 @@
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
+ 'corsheaders',
+ 'health_check',
'process_request',
+ 'rest_framework',
]
MIDDLEWARE = [
+ 'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
@@ -76,8 +78,17 @@
# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases
-DATABASES = CF.DATABASES
+DATABASES = {
+ "default": {
+ "ENGINE": os.environ.get("SQL_ENGINE", "django.db.backends.sqlite3"),
+ "NAME": os.environ.get("SQL_DATABASE", os.path.join(BASE_DIR, "db.sqlite3")),
+ "USER": os.environ.get("SQL_USER", "user"),
+ "PASSWORD": os.environ.get("SQL_PASSWORD", "password"),
+ "HOST": os.environ.get("SQL_HOST", "localhost"),
+ "PORT": os.environ.get("SQL_PORT", "5432"),
+ }
+}
# Password validation
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators
@@ -97,7 +108,7 @@
},
]
-AUTH_USER_MODEL = 'process_request.MachineUser'
+AUTH_USER_MODEL = 'process_request.User'
# Internationalization
# https://docs.djangoproject.com/en/2.2/topics/i18n/
@@ -117,5 +128,25 @@
# https://docs.djangoproject.com/en/2.2/howto/static-files/
STATIC_URL = '/static/'
-
-ARCHIVESSPACE = CF.ARCHIVESSPACE
+STATIC_ROOT = os.path.join(BASE_DIR, "static")
+
+# CORS settings
+CORS_ORIGIN_ALLOW_ALL = True
+
+ARCHIVESSPACE = {
+ "baseurl": os.environ.get("AS_BASEURL", "http://sandbox.archivesspace.org:8089/"),
+ "username": os.environ.get("AS_USERNAME", "admin"),
+ "password": os.environ.get("AS_PASSWORD", "admin"),
+ "repo_id": int(os.environ.get("AS_REPO_ID", default=2)),
+}
+
+EMAIL_HOST = os.environ.get("EMAIL_HOST", "mail.example.org")
+EMAIL_PORT = os.environ.get("EMAIL_PORT", default=587)
+EMAIL_HOST_USER = os.environ.get("EMAIL_HOST_USER", "alerts@example.org")
+EMAIL_HOST_PASSWORD = os.environ.get("EMAIL_HOST_PASSWORD", "password")
+EMAIL_USE_TLS = int(os.environ.get("EMAIL_USE_TLS", default=1))
+EMAIL_USE_SSL = int(os.environ.get("EMAIL_USE_SSL", default=0))
+EMAIL_DEFAULT_FROM = os.environ.get("DEFAULT_FROM_EMAIL", "alerts@example.org")
+
+EXPORT_FIELDS = ["creators", "collection_name", "parent", "dates", "resource_id",
+ "containers", "title", "restrictions_text", "uri"]
diff --git a/request_broker/urls.py b/request_broker/urls.py
index b6ff98e..50a1223 100644
--- a/request_broker/urls.py
+++ b/request_broker/urls.py
@@ -15,13 +15,17 @@
"""
from django.contrib import admin
from django.urls import include, path
-from process_request.views import ProcessRequestView
-from rest_framework import routers
-
-router = routers.DefaultRouter()
+from process_request.views import (DeliverDuplicationRequestView,
+ DeliverReadingRoomRequestView,
+ DownloadCSVView, MailerView,
+ ParseRequestView)
urlpatterns = [
- path('admin/', admin.site.urls),
- path('', include(router.urls)),
- path('api/process-request/', ProcessRequestView.as_view(), name='process-request')
+ path("admin/", admin.site.urls),
+ path("api/deliver-request/email", MailerView.as_view(), name="deliver-email"),
+ path("api/deliver-request/duplication", DeliverDuplicationRequestView.as_view(), name="deliver-duplication"),
+ path("api/deliver-request/reading-room", DeliverReadingRoomRequestView.as_view(), name="deliver-readingroom"),
+ path("api/process-request/parse", ParseRequestView.as_view(), name="parse-request"),
+ path("api/download-csv/", DownloadCSVView.as_view(), name="download-csv"),
+ path("status/", include('health_check.api.urls'))
]
diff --git a/requirements.txt b/requirements.txt
index 0b3e9fa..dbf65b3 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,7 +1,33 @@
-ArchivesSnake==0.8.1
-Django==2.2.10
-djangorestframework
-health-check
-psycopg2-binary
+ArchivesSnake==0.9
+attrs==20.1.0
+boltons==20.2.1
+certifi==2020.6.20
+chardet==3.0.4
+clinner==1.12.3
+colorlog==3.2.0
+coverage==5.2.1
+Django==2.2.13
+django-cors-headers==3.4.0
+djangorestframework==3.11.1
+gitdb==4.0.5
+GitPython==3.1.7
+health-check==3.4.1
+idna==2.10
+more-itertools==8.5.0
+multidict==4.7.6
+nose==1.3.7
+ordered-set==4.0.2
+psycopg2-binary==2.8.5
+pytz==2020.1
+PyYAML==5.3.1
rapidfuzz==0.7.3
+requests==2.24.0
+six==1.15.0
+smmap==3.0.4
+sqlparse==0.3.1
+structlog==20.1.0
+typing-extensions==3.7.4.3
+urllib3==1.25.10
vcrpy==4.0.2
+wrapt==1.12.1
+yarl==1.5.1