<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.archivematica.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rspencer</id>
	<title>Archivematica - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archivematica.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rspencer"/>
	<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/Special:Contributions/Rspencer"/>
	<updated>2026-06-03T05:59:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.4</generator>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Archivematica_API&amp;diff=13552</id>
		<title>Archivematica API</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Archivematica_API&amp;diff=13552"/>
		<updated>2021-03-02T14:41:28Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Add api prefix to jobs and tasks call&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Development]] &amp;gt; Archivematica API&lt;br /&gt;
&lt;br /&gt;
Endpoints require authentication with a username and API key.  This can be submitted as GET parameters (eg &amp;lt;code&amp;gt;?username=demo&amp;amp;api_key=e6282adabed84e39ffe451f8bf6ff1a67c1fc9f2&amp;lt;/code&amp;gt;) or as a header (eg &amp;lt;code&amp;gt;Authorization: ApiKey demo:e6282adabed84e39ffe451f8bf6ff1a67c1fc9f2&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;br \&amp;gt;&amp;lt;br \&amp;gt;&lt;br /&gt;
''As GET parameters, format is:''&amp;lt;br \&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;?username=&amp;lt;''username''&amp;gt;&amp;amp;api_key=&amp;lt;''api_key''&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br \&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''As a header, format is:''&amp;lt;br \&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;ApiKey &amp;lt;username&amp;gt;:&amp;lt;api_key&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br \&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' The 'ApiKey' prefix is a requirement of the Tastypie library in use. See the Tastypie docs for [https://django-tastypie.readthedocs.io/en/latest/authentication.html#apikeyauthentication ApiKeyAuthentication].''&amp;lt;br \&amp;gt;&amp;lt;br \&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Endpoints return JSON.  If there's an error, they will return a 4xx or 5xx HTTP error code and a JSON body &amp;lt;code&amp;gt;{'error': True, 'message': 'message describing error'}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Transfer ==&lt;br /&gt;
&lt;br /&gt;
=== Start Transfer ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/start_transfer/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a transfer.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of new transfer&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Type of the new transfer. One of: standard, unzipped bag, zipped bag, dspace&lt;br /&gt;
** &amp;lt;code&amp;gt;accession&amp;lt;/code&amp;gt;: Accession number of new transfer&lt;br /&gt;
** &amp;lt;code&amp;gt;paths[]&amp;lt;/code&amp;gt;: List of base64-encoded &amp;quot;&amp;lt;location_uuid&amp;gt;:&amp;lt;relative_path&amp;gt;&amp;quot; to be copied into the new transfer. Location UUIDs should be associated with this pipeline, and relative path should be relative to the location (TODO confirm relative vs absolute path).  E.g. NWJiYWJjMTMtMTIyNy00MWE3LWIwY2QtZjJhYzM1MjkxZTdmOi92YWdyYW50L3NhbXBsZWRhdGEvQ1NWbWV0YWRhdGE= (decoded: 5bbabc13-1227-41a7-b0cd-f2ac35291e7f:/vagrant/sampledata/CSVmetadata)&lt;br /&gt;
** &amp;lt;code&amp;gt;row_ids[]&amp;lt;/code&amp;gt;: ID of the associated TransferMetadataSet for disk image ingest.  Can be provided as [&amp;quot;&amp;quot;]&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Copy successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Path the transfer was copied to on start?&lt;br /&gt;
&lt;br /&gt;
=== List Unapproved Transfers ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/unapproved&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns a list of transfers waiting for approval.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched unapproved transfers successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of dicts with keys:&lt;br /&gt;
*** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Transfer type. One of: standard, unzipped bag, zipped bag, dspace&lt;br /&gt;
*** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Directory the transfer is in currently&lt;br /&gt;
*** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the transfer&lt;br /&gt;
&lt;br /&gt;
=== Approve Transfer ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/approve&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Approve a transfer waiting to be started.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Type of the transfer to approved. One of: standard, unzipped bag, zipped bag, dspace.&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory for the transfer to approve&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the approved transfer&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/status/&amp;lt;transfer UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns the status of the transfer.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;: One of FAILED, REJECTED, USER_INPUT, COMPLETE or PROCESSING&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the transfer, e.g. &amp;quot;imgs&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: If status is COMPLETE, this field will exist with either the UUID of the SIP or 'BACKLOG'&lt;br /&gt;
** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory, e.g. &amp;quot;imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Full path to the transfer, e.g. &amp;quot;/var/archivematica/sharedDirectory/watchedDirectories/SIPCreation/completedTransfers/imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c/&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched status for &amp;lt;transfer UUID&amp;gt; successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: &amp;quot;transfer&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the transfer, e.g. &amp;quot;52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
'''Note:''' for consumers of this endpoint, it is possible for Archivematica to return a &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt; of &amp;lt;code&amp;gt;COMPLETE&amp;lt;/code&amp;gt; without a &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;. Consumers looking to use the UUID of the AIP that will be created following Ingest should therefore test for both a &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt; of &amp;lt;code&amp;gt;COMPLETE&amp;lt;/code&amp;gt; and the existence of &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt; that does not also equal &amp;lt;code&amp;gt;BACKLOG&amp;lt;/code&amp;gt; to ensure that they retrieve it. This might mean an additional call to the status endpoint while this data becomes available.&lt;br /&gt;
&lt;br /&gt;
=== Hide ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/&amp;lt;transfer UUID&amp;gt;/delete/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': DELETE&lt;br /&gt;
* Hide a transfer&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;removed&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== Completed ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/completed/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Return list of Transfers that are completed&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched completed transfers successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of UUIDs of completed Transfers&lt;br /&gt;
* Added in Archivematica 1.6&lt;br /&gt;
&lt;br /&gt;
=== Start Reingest ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/reingest&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a full reingest.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the AIP. The AIP should also be found at &amp;lt;code&amp;gt;%sharedDirectory%/tmp/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the AIP to reingest&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest_uuid&amp;lt;/code&amp;gt;: UUID of the reingested transfer&lt;br /&gt;
&lt;br /&gt;
== Ingest ==&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/ingest/status/&amp;lt;unit UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns the status of the SIP&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;: One of FAILED, REJECTED, USER_INPUT, COMPLETE or PROCESSING&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the SIP, e.g. &amp;quot;imgs&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory, e.g. &amp;quot;imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Full path to the transfer, e.g. &amp;quot;/var/archivematica/sharedDirectory/currentlyProcessing/imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c/&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched status for &amp;lt;SIP UUID&amp;gt; successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: &amp;quot;SIP&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the SIP, e.g. &amp;quot;52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Hide ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/&amp;lt;SIP UUID&amp;gt;/delete/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': DELETE&lt;br /&gt;
* Hide a SIP&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;removed&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== List SIPS Waiting for User Input ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/waiting&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns a list of SIPs waiting for user input.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched units successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of dicts with keys:&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_directory&amp;lt;/code&amp;gt;: Directory the SIP is in currently&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: UUID of the SIP&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_name&amp;lt;/code&amp;gt;: Name of the SIP&lt;br /&gt;
*** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffeecc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Improvement Note: Despite the URL, this currently returns both SIPs &amp;amp; transfers that are waiting for user input. A separate &amp;lt;code&amp;gt;/api/transfer/waiting&amp;lt;/code&amp;gt; should be added for transfers.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Completed ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/completed/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Return list of SIPs that are completed&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched completed ingests successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of UUIDs of completed SIPs&lt;br /&gt;
* Added in Archivematica 1.6&lt;br /&gt;
&lt;br /&gt;
=== Reingest ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/reingest&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a partial or metadata-only reingest.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the AIP. The AIP should also be found at &amp;lt;code&amp;gt;%sharedDirectory%/tmp/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the AIP to reingest&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest_uuid&amp;lt;/code&amp;gt;: UUID of the reingested SIP&lt;br /&gt;
&lt;br /&gt;
=== Copy Metadata ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/copy_metadata_files/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Add metadata files to a SIP.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: UUID of the SIP to put files in&lt;br /&gt;
** &amp;lt;code&amp;gt;source_paths[]&amp;lt;/code&amp;gt;: List of files to be copied, base64 encoded, in the format 'source_location_uuid:full_path'&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;: False&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Files added successfully.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
=== Levels of Description ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/administration/dips/atom/levels/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Return a JSON-encoded set of the configured levels of description.&lt;br /&gt;
* ''Response'': JSON. List of AtoM Levels of description with key 'UUID' and value 'name of level of description'.&lt;br /&gt;
&lt;br /&gt;
=== Fetch Levels of Description ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/administration/dips/atom/fetch_levels/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Fetch all levels of description from an AtoM database, replacing any previously existing.&lt;br /&gt;
* '''Response''': JSON. Updated list of AtoM Levels of description with key 'UUID' and value 'name of level of description'.&lt;br /&gt;
&lt;br /&gt;
== Unit ==&lt;br /&gt;
&lt;br /&gt;
''Note: Currently, you can only query strings in English.''&lt;br /&gt;
&lt;br /&gt;
=== List jobs ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2beta/jobs/&amp;lt;unit UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Return a list of jobs for the passed unit (transfer or ingest).&lt;br /&gt;
* '''Parameters''':&lt;br /&gt;
* '''Optional filters''':&lt;br /&gt;
*** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the microservice the jobs belong to&lt;br /&gt;
*** &amp;lt;code&amp;gt;link_uuid&amp;lt;/code&amp;gt;: UUID of the job chain link&lt;br /&gt;
*** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the job&lt;br /&gt;
* '''Response''': JSON body&lt;br /&gt;
** '''List of dicts with keys''':&lt;br /&gt;
*** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the job&lt;br /&gt;
*** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the job&lt;br /&gt;
*** &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;: One of USER_INPUT, PROCESSING, COMPLETE, FAILED or UNKNOWN&lt;br /&gt;
*** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Microservice the job belongs to&lt;br /&gt;
*** &amp;lt;code&amp;gt;link_uuid&amp;lt;/code&amp;gt;: UUID of the job chain link&lt;br /&gt;
*** &amp;lt;code&amp;gt;tasks&amp;lt;/code&amp;gt;: List of dicts with information about the microservice's tasks:&lt;br /&gt;
*** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the task&lt;br /&gt;
*** &amp;lt;code&amp;gt;exit_code&amp;lt;/code&amp;gt;: Exit code of the task&lt;br /&gt;
&lt;br /&gt;
=== Task ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2beta/task/&amp;lt;task UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Return information about a task.&lt;br /&gt;
* '''Response''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the task&lt;br /&gt;
** &amp;lt;code&amp;gt;exit_code&amp;lt;/code&amp;gt;: Exit code of the task&lt;br /&gt;
** &amp;lt;code&amp;gt;file_uuid&amp;lt;/code&amp;gt;: UUID of the file used for the task&lt;br /&gt;
** &amp;lt;code&amp;gt;file_name&amp;lt;/code&amp;gt;: File used for the task,&lt;br /&gt;
** &amp;lt;code&amp;lt;time_created&amp;lt;/code&amp;gt;: String (YYYY-MM-DD HH:MM:SS) representing when the task was created&lt;br /&gt;
** &amp;lt;code&amp;gt;time_started&amp;lt;/code&amp;gt;: String (YYYY-MM-DD HH:MM:SS) representing when the task started&lt;br /&gt;
** &amp;lt;code&amp;gt;time_ended&amp;lt;/code&amp;gt;: String (YYYY-MM-DD HH:MM:SS) representing when the task finished&lt;br /&gt;
** &amp;lt;code&amp;gt;duration&amp;lt;/code&amp;gt;: Task duration in seconds (integer). If the duration is less than a second, this will be a &amp;lt; 1 string&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== Path Metadata ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/filesystem/metadata/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET, POST&lt;br /&gt;
* Fetch (GET) or update (POST) metadata for a path (currently only level of description).&lt;br /&gt;
* '''Parameters''': Query string parameters (GET) or JSON body (POST)&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Arranged path to get metadata on&lt;br /&gt;
* '''GET response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;level_of_description&amp;lt;/code&amp;gt;: Level of description&lt;br /&gt;
* '''POST response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;success&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== Processing Configuration ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/processing-configuration/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Return processing configuration with &amp;lt;name&amp;gt;&lt;br /&gt;
* '''Response''': The processing config file as a stream.&lt;br /&gt;
* '''Content type''': text/xml&lt;br /&gt;
&lt;br /&gt;
== Beta endpoints ==&lt;br /&gt;
&lt;br /&gt;
API endpoints which are still in-flux and that could potentially change. &lt;br /&gt;
&lt;br /&gt;
=== Package ===&lt;br /&gt;
&lt;br /&gt;
Provides additional functionality over the start and approve transfer endpoints, for example, wrapping both those steps into a single call.&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2beta/package&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a new transfer type.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** Mandatory&lt;br /&gt;
*** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Transfer name&lt;br /&gt;
*** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Path relative, or absolute to a storage service transfer source&lt;br /&gt;
**Optional&lt;br /&gt;
*** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Transfer type, e.g. standard, dataverse, zipped bag, default: &amp;lt;code&amp;gt;standard&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;processing_config&amp;lt;/code&amp;gt;: [https://www.archivematica.org/en/docs/latest/user-manual/administer/dashboard-admin/#processing-configuration Processing configuration], e.g. default, automated,  default: &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;accession&amp;lt;/code&amp;gt;: Accession ID&lt;br /&gt;
*** &amp;lt;code&amp;gt;access_system_id&amp;lt;/code&amp;gt;: Access system ID (see [https://www.archivematica.org/en/docs/latest/user-manual/access/access docs])&lt;br /&gt;
*** &amp;lt;code&amp;gt;metadata_set_id&amp;lt;/code&amp;gt;: Used to link to metadata sets added via the user interface. It's safe to ignore this for now since metadata can't be associated to transfer via the API at the moment.&lt;br /&gt;
*** &amp;lt;code&amp;gt;auto_approve&amp;lt;/code&amp;gt;: Boolean &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; to set the transfer to auto-approve, default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;: Transfer UUID ('''Note:''' as the package endpoint allows the caller to interact with Archivematica asynchronously it doesn't guarantee a transfer has started. The caller must use the UUID in the response to verify it has begun or any errors that were encountered initiating one.)&lt;br /&gt;
'''Examples:'''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Only a subset of these options might be needed for most use-cases. A fundamental difference between the &amp;lt;code&amp;gt;package&amp;lt;/code&amp;gt; endpoint and others from which a transfer can be initiated is that a storage service transfer location UUID isnt always required. In some cases that might still be ideal.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
''Starting a transfer using an absolute path:''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   curl -v POST \&lt;br /&gt;
     -H &amp;quot;Authorization: ApiKey test:test&amp;quot; \&lt;br /&gt;
     -H &amp;quot;Content-Type: application/json&amp;quot; \&lt;br /&gt;
     -d &amp;quot;{\&lt;br /&gt;
         \&amp;quot;path\&amp;quot;: \&amp;quot;$(echo -n '/home/archivematica/archivematica-sampledata/SampleTransfers/DemoTransferCSV' | base64 -w 0)\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;name\&amp;quot;: \&amp;quot;demo_transfer_absolute\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;processing_config\&amp;quot;: \&amp;quot;automated\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;type\&amp;quot;: \&amp;quot;standard\&amp;quot; \&lt;br /&gt;
         }&amp;quot; \&lt;br /&gt;
    &amp;quot;http://&amp;lt;archivematica-uri&amp;gt;/api/v2beta/package&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Starting a transfer using an relative path with a transfer source UUID:''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   curl -v POST \&lt;br /&gt;
     -H &amp;quot;Authorization: ApiKey test:test&amp;quot; \&lt;br /&gt;
     -H &amp;quot;Content-Type: application/json&amp;quot; \&lt;br /&gt;
     -d &amp;quot;{\&lt;br /&gt;
         \&amp;quot;path\&amp;quot;: \&amp;quot;$(echo -n 'd1184f7f-d755-4c8d-831a-a3793b88f760:/archivematica/archivematica-sampledata/SampleTransfers/DemoTransferCSV' | base64 -w 0)\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;name\&amp;quot;: \&amp;quot;demo_transfer_relative\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;processing_config\&amp;quot;: \&amp;quot;automated\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;type\&amp;quot;: \&amp;quot;standard\&amp;quot; \&lt;br /&gt;
         }&amp;quot; \&lt;br /&gt;
    &amp;quot;http://&amp;lt;archivematica-uri&amp;gt;/api/v2beta/package&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Validate ===&lt;br /&gt;
&lt;br /&gt;
Available in Archivematica 1.10+. This endpoint can be used to validate CSVs against embedded sets of rules. Currently works with Avalon Media System Manifest files.&lt;br /&gt;
&lt;br /&gt;
In the future, this endpoint can be extended to support validation for &amp;lt;code&amp;gt;metadata.csv&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;rights.csv&amp;lt;/code&amp;gt;, or other institutionally-based rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2beta/validate/avalon&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Content-Type''': text/csv; charset=utf-8&lt;br /&gt;
* '''Parameters''': &amp;lt;code&amp;gt;&amp;lt;document&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Usage example: (assuming that &amp;lt;code&amp;gt;avalon.csv&amp;lt;/code&amp;gt; exists)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://127.0.0.1:62080/api/v2beta/validate/avalon \&lt;br /&gt;
  --data-binary &amp;quot;@avalon.csv&amp;quot; \&lt;br /&gt;
  --header &amp;quot;Authorization: ApiKey test:test&amp;quot; \&lt;br /&gt;
  --header &amp;quot;Content-Type: text/csv; charset=utf-8&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response examples:&lt;br /&gt;
&lt;br /&gt;
200 OK&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;valid&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
400 Bad Request (expect reason to include different validation errors)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;valid&amp;quot;: false,&lt;br /&gt;
  &amp;quot;reason&amp;quot;: &amp;quot;Administrative data must include reference name and author.&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
404 Not Found&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;error&amp;quot;: true,&lt;br /&gt;
  &amp;quot;message&amp;quot;: &amp;quot;Unknown validator. Accepted values: avalon&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development documentation]]&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Contribute_code&amp;diff=13503</id>
		<title>Contribute code</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Contribute_code&amp;diff=13503"/>
		<updated>2020-07-15T23:32:52Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Update sphinx link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Development]] &amp;gt; Contribute code&lt;br /&gt;
&lt;br /&gt;
Expanded contribution guidelines can also be found in the Archivematica [https://github.com/artefactual/archivematica/blob/qa/1.x/CONTRIBUTING.md contributing document].&lt;br /&gt;
&lt;br /&gt;
[[Category:Process documentation]]&lt;br /&gt;
&lt;br /&gt;
==Patches==&lt;br /&gt;
&lt;br /&gt;
If you find a bug in this project or would like to make an enhancement, please be encouraged to contribute code via a pull request.  Archivematica code is available on github. We will accept git pull requests from individuals who have submitted a [[Contributor Agreement]].&lt;br /&gt;
&lt;br /&gt;
For more information please visit:&lt;br /&gt;
* https://help.github.com/articles/creating-a-pull-request&lt;br /&gt;
* https://help.github.com/articles/using-pull-requests&lt;br /&gt;
* https://help.github.com/articles/fork-a-repo&lt;br /&gt;
&lt;br /&gt;
==Commit access==&lt;br /&gt;
Anyone can contribute code patches to this project. Project collaborators and regular patch contributors will be given access to commit directly to the git code repository.&lt;br /&gt;
&lt;br /&gt;
==Contributor's Agreement==&lt;br /&gt;
In order to accept any patches or code commits, contributors must first sign the [[Contributor Agreement|Archivematica Contributor's Agreement]].&lt;br /&gt;
&lt;br /&gt;
==Standards==&lt;br /&gt;
&lt;br /&gt;
=== Code Style Guide For Archivematica ===&lt;br /&gt;
&lt;br /&gt;
Archivematica follows common Python coding standards, linked below.  We encourage installing a Python [http://stackoverflow.com/questions/8503559/what-is-linting linter] to help with this. [https://pypi.python.org/pypi/flake8 flake8] is recommended because it wraps three common linters (pep8, pyflakes, mccabe).&lt;br /&gt;
* [https://www.python.org/dev/peps/pep-0008/ PEP8] for styling&lt;br /&gt;
** Exception is line length, which should be wrapped at 79 characters or left long for the IDE to wrap.&lt;br /&gt;
** Imports are sorted alphabetically within their grouping to reduce duplicate imports&lt;br /&gt;
* [https://www.python.org/dev/peps/pep-0257/ PEP257] for docstring structure&lt;br /&gt;
** Parameters and return values should be specified in [http://sphinx-doc.org/domains.html#info-field-lists Sphinx-style].&lt;br /&gt;
* See also [https://github.com/artefactual/archivematica/pull/218 this pull request] and associated discussion.&lt;br /&gt;
&lt;br /&gt;
Example docstrings with Sphinx markup below. Other attributes that can be used in a docstring can be found [https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#python-signatures on the Sphinx website].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;def get_unit_status(unit_uuid, unit_type):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Get status for a SIP or Transfer.&lt;br /&gt;
&lt;br /&gt;
    Returns a dict with status info.  Keys will always include 'status' and&lt;br /&gt;
    'microservice', and may include 'sip_uuid'.&lt;br /&gt;
&lt;br /&gt;
    Status is one of FAILED, REJECTED, USER_INPUT, COMPLETE or PROCESSING.&lt;br /&gt;
    Microservice is the name of the current microservice.&lt;br /&gt;
    SIP UUID is populated only if the unit_type was unitTransfer and status is&lt;br /&gt;
    COMPLETE.  Otherwise, it is None.&lt;br /&gt;
&lt;br /&gt;
    :param str unit_uuid: UUID of the SIP or Transfer&lt;br /&gt;
    :param str unit_type: unitSIP or unitTransfer&lt;br /&gt;
    :return: Dict with status info.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;def each_child(path, file_group_identifier, base_path, base_path_name, sip_uuid):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Iterates over entries in a filesystem, beginning at `path`.&lt;br /&gt;
&lt;br /&gt;
    At each entry in the filesystem, yields either a File model instance&lt;br /&gt;
    (for files) or a string (for directories).&lt;br /&gt;
&lt;br /&gt;
    When iterating, makes two passes: first iterating over files, then&lt;br /&gt;
    directories. Does not iterate over directories; consumers should&lt;br /&gt;
    call this function again on directory strings to recurse.&lt;br /&gt;
&lt;br /&gt;
    :param string path: path to a directory on disk to recurse into.&lt;br /&gt;
    :raises ValueError: if the specified path does not exist, or is not a directory.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
The file structure in Archivematica will comply with the Filesystem Hierarchy Standard (FHS).  &lt;br /&gt;
&amp;lt;br/&amp;gt;More information on this standard is available at:  &lt;br /&gt;
&amp;lt;br/&amp;gt;http://www.pathname.com/fhs/&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Research_data_management&amp;diff=13468</id>
		<title>Research data management</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Research_data_management&amp;diff=13468"/>
		<updated>2020-04-28T14:36:50Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Update to GH link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Documentation]] &amp;gt; [[Requirements]] &amp;gt; Research data management&lt;br /&gt;
&lt;br /&gt;
=About=&lt;br /&gt;
&lt;br /&gt;
This page describes requirements for enhancements to Archivematica to better handle research data management. It is funded by [https://www.jisc.ac.uk/ Jisc], through University of York and University of Hull.&lt;br /&gt;
&lt;br /&gt;
'''See also'''&lt;br /&gt;
&lt;br /&gt;
*[[Dataset preservation]]&lt;br /&gt;
*[[Dataverse]]&lt;br /&gt;
*[http://digital-archiving.blogspot.ca Digital Archiving blog] written by archivists at University of York&lt;br /&gt;
*[https://github.com/archivematica/archivematica-case-studies/blob/master/resources/2016-02-01-JiscDataSpringFinalReportphase2.pdf Filling the Digital Preservation Gap] written by archivists at the Universities of York and Hull&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Automated DIP generation=&lt;br /&gt;
&lt;br /&gt;
The tasks related to this phase of development are:&lt;br /&gt;
&lt;br /&gt;
* change workflow so that the ‘upload DIP’ choice can be preconfigured.  &lt;br /&gt;
* update AIP reingest workflow to allow uncompressed AIPs to be reingested.&lt;br /&gt;
* enhance the callback functionality in the Storage Service, to notify third party apps when a DIP is ready to be used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These developments are necessary for research data management to meet use cases when research data is stored without the expectation that it will be re-used, but then subsequently a need for re-use arises and/or is approved by the creator of the data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Workflow==&lt;br /&gt;
&lt;br /&gt;
[[File:York_DIP_gen_v1.png|820px]]&lt;br /&gt;
&lt;br /&gt;
*Access request is initiated through a staff alert to RDMonitor&lt;br /&gt;
*Request for DIP sent to Storage Service&lt;br /&gt;
**If DIP exists already in storage, return DIP&lt;br /&gt;
**If DIP does not exist, send wait response and initiate AIP re-ingest in Archivematica pipeline&lt;br /&gt;
*When DIP stored by Archivematica,return DIP message goes to RDMonitor&lt;br /&gt;
*If DIP creation/storage fails, failure message sent to RDMonitor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=METS parsing=&lt;br /&gt;
&lt;br /&gt;
==METS questions==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width:25%&amp;quot;|'''Question'''&lt;br /&gt;
!style=&amp;quot;width:40%&amp;quot;|'''Information source'''&lt;br /&gt;
!style=&amp;quot;width:25%%&amp;quot;|'''Sample result'''&lt;br /&gt;
|-&lt;br /&gt;
|How many files are in this package?&lt;br /&gt;
|&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many original/preservation/metadata files are in this package?&lt;br /&gt;
|mets:fileGrp USE=&amp;quot;original&amp;quot; / mets:fileGrp USE=&amp;quot;preservation&amp;quot; / mets:fileGrp USE=&amp;quot;metadata&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|What is the total volume of files in this package?&lt;br /&gt;
|premis:size&lt;br /&gt;
|integer and unit, eg 17 GB &lt;br /&gt;
|-&lt;br /&gt;
|Is there a DIP for this package?&lt;br /&gt;
|Storage Service&lt;br /&gt;
|Location of DIP&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid X are in this package?&lt;br /&gt;
|premis:formatRegistryKey&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with format name X are in this package?&lt;br /&gt;
|premis:formatName&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid/format name X have been normalized?&lt;br /&gt;
|premis:formatRegistryKey / premis:formatName; files '''with''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid/format name X have not been normalized?&lt;br /&gt;
|premis:formatRegistryKey / premis:formatName; files '''without''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|Does the package include descriptive metadata?&lt;br /&gt;
|mets:dmdSec&lt;br /&gt;
|Yes or No&lt;br /&gt;
|-&lt;br /&gt;
|Does the package include rights metadata?&lt;br /&gt;
|mets:rightsMD&lt;br /&gt;
|Yes or No&lt;br /&gt;
|-&lt;br /&gt;
|How many files are invalid/not well-formed?&lt;br /&gt;
|premis:formatRegistryKey; &amp;lt;premis:eventType&amp;gt;validation&amp;lt;/premis:eventType&amp;gt;; &amp;lt;premis:eventOutcome&amp;gt;fail&amp;lt;/premis:eventOutcome&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid/format name X are invalid/not well-formed?&lt;br /&gt;
|premis:formatRegistryKey / premis:formatName; &amp;lt;premis:eventType&amp;gt;validation&amp;lt;/premis:eventType&amp;gt;; &amp;lt;premis:eventOutcome&amp;gt;fail&amp;lt;/premis:eventOutcome&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|What is the directory structure of the files in this package?&lt;br /&gt;
|mets:structMap&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|What is the size of file X?&lt;br /&gt;
|premis:size&lt;br /&gt;
|integer and unit, eg 2.2 GB &lt;br /&gt;
|-&lt;br /&gt;
|What is the checksum format for file X?&lt;br /&gt;
|premis:messageDigestAlgorithm&lt;br /&gt;
|md5, sha256&lt;br /&gt;
|-&lt;br /&gt;
|What is the checksum for file X?&lt;br /&gt;
|premis:messageDigest&lt;br /&gt;
|d32d41f7481afc1ab48779e2608v08d93b5d05cd217a4372e6a93957767ae651&lt;br /&gt;
|-&lt;br /&gt;
|Has file X been normalized for preservation?&lt;br /&gt;
|matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|Yes or no&lt;br /&gt;
|-&lt;br /&gt;
|To what format has file X been normalized for preservation?&lt;br /&gt;
|matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;; premis:formatName for preservation copy&lt;br /&gt;
|TIFF&lt;br /&gt;
|-&lt;br /&gt;
|When was file X normalized for preservation?&lt;br /&gt;
|matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;; premis:eventType:creation and premis:eventDateTime for preservation copy&lt;br /&gt;
|date&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Generic search REST API=&lt;br /&gt;
&lt;br /&gt;
==METS questions==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width:25%&amp;quot;|'''Question'''&lt;br /&gt;
!style=&amp;quot;width:40%&amp;quot;|'''Information source'''&lt;br /&gt;
!style=&amp;quot;width:25%%&amp;quot;|'''Sample result'''&lt;br /&gt;
|-&lt;br /&gt;
|How many files are in archival storage?&lt;br /&gt;
|Storage Service&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many AIPs are in archival storage?&lt;br /&gt;
|Storage Service&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files are in a specified AIP?&lt;br /&gt;
|Storage Service&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid X are in archival storage?&lt;br /&gt;
|premis:formatRegistryKey&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with format name X are in archival storage?&lt;br /&gt;
|premis:formatName&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many [video, image, plain text etc.] files are in archival storage?&lt;br /&gt;
|fits:mimetype, File:MIMEType, other mimetype sources? Alternatively, FPR groups?&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|What is the total volume of files with PRONOM puid X in archival storage?&lt;br /&gt;
|premis:formatRegistryKey; premis:size&lt;br /&gt;
|integer and unit, eg 452 GB&lt;br /&gt;
|-&lt;br /&gt;
|What is the total volume of files with format name X in archival storage?&lt;br /&gt;
|premis:formatName; premis:size&lt;br /&gt;
|integer and unit, eg 452 GB&lt;br /&gt;
|-&lt;br /&gt;
|What is the total volume of [video, image, plain text etc.] files in archival storage?&lt;br /&gt;
|fits:mimetype, File:MIMEType, other mimetype sources? FPR groups?; premis:size&lt;br /&gt;
|integer and unit, eg 452 GB&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid X have been normalized?&lt;br /&gt;
|premis:formatRegistryKey; files '''with''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid X have not been normalized?&lt;br /&gt;
|premis:formatRegistryKey; files '''without''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with format name X have been normalized?&lt;br /&gt;
|premis:premis:formatName; files '''with''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with format name X have not been normalized?&lt;br /&gt;
|premis:premis:formatName; files '''without''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many [video, image, plain text etc.] files have been normalized?&lt;br /&gt;
|fits:mimetype, File:MIMEType, other mimetype sources?; files '''with''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many [video, image, plain text etc.] files have not been normalized?&lt;br /&gt;
|fits:mimetype, File:MIMEType, other mimetype sources?; files '''without''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files were ingested between date X and date Y?&lt;br /&gt;
|&amp;lt;premis:eventType&amp;gt;ingestion&amp;lt;/premis:eventType&amp;gt;; premis:eventDateTime&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid X are invalid/not well-formed?&lt;br /&gt;
|premis:formatRegistryKey; &amp;lt;premis:eventType&amp;gt;validation&amp;lt;/premis:eventType&amp;gt;; &amp;lt;premis:eventOutcome&amp;gt;fail&amp;lt;/premis:eventOutcome&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with format name X are invalid/not well-formed?&lt;br /&gt;
|premis:formatName; &amp;lt;premis:eventType&amp;gt;validation&amp;lt;/premis:eventType&amp;gt;; &amp;lt;premis:eventOutcome&amp;gt;fail&amp;lt;/premis:eventOutcome&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many AIPs have corresponding DIPs?&lt;br /&gt;
|Storage Service&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many AIPs do not have corresponding DIPs?&lt;br /&gt;
|Storage Service&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Multiple checksum algorithms=&lt;br /&gt;
&lt;br /&gt;
=Enhance PRONOM integration=&lt;br /&gt;
&lt;br /&gt;
Priorities for this phase are (in order of priority):&lt;br /&gt;
&lt;br /&gt;
1. Provide report of non-identified files in a SIP or AIP, with access to the file identification tool output&lt;br /&gt;
&lt;br /&gt;
2. Provide direct access to the PRONOM submission form from within Archivematica&lt;br /&gt;
&lt;br /&gt;
Alternatives being discussed:&lt;br /&gt;
&lt;br /&gt;
- Post tool output and optionally a sample file to the FPR, making that available publically and to PRONOM&lt;br /&gt;
&lt;br /&gt;
3. Allow a user to manually assign pronom IDs to non-identified files; record manual selection in the AIP METS file&lt;br /&gt;
&lt;br /&gt;
=Automation tools documentation=&lt;br /&gt;
&lt;br /&gt;
Archivematica has features that enable quite a bit of automation and interaction from 3rd party applications, but most of that functionality is hidden and not well documented.  The goal of this part of the work on improving Research data management workflows is about adding documentation, in written form and as screencasts/videos, aimed at developers, and other technical users of Archivematica.  This will make it easier for developers working on other applications to integrate Archivematica into their organizations digital preservation workflows.&lt;br /&gt;
&lt;br /&gt;
Potential topics&lt;br /&gt;
&lt;br /&gt;
* introduction to the Archivematica&lt;br /&gt;
* setting up an Archivematica development&lt;br /&gt;
* automation tools introduction&lt;br /&gt;
* implementing an automated workflow in&lt;br /&gt;
* managing an Archivematica installation ­&lt;br /&gt;
* configuration and troubleshooting&lt;br /&gt;
* api documentation&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Research_data_management&amp;diff=13467</id>
		<title>Research data management</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Research_data_management&amp;diff=13467"/>
		<updated>2020-04-28T14:00:07Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Update refs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Documentation]] &amp;gt; [[Requirements]] &amp;gt; Research data management&lt;br /&gt;
&lt;br /&gt;
=About=&lt;br /&gt;
&lt;br /&gt;
This page describes requirements for enhancements to Archivematica to better handle research data management. It is funded by [https://www.jisc.ac.uk/ Jisc], through University of York and University of Hull.&lt;br /&gt;
&lt;br /&gt;
'''See also'''&lt;br /&gt;
&lt;br /&gt;
*[[Dataset preservation]]&lt;br /&gt;
*[[Dataverse]]&lt;br /&gt;
*[http://digital-archiving.blogspot.ca Digital Archiving blog] written by archivists at University of York&lt;br /&gt;
*[https://s3-eu-west-1.amazonaws.com/pfigshare-u-files/3702676/JiscDataSpringFinalReportphase2.pdf Filling the Digital Preservation Gap] written by archivists at the Universities of York and Hull&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Automated DIP generation=&lt;br /&gt;
&lt;br /&gt;
The tasks related to this phase of development are:&lt;br /&gt;
&lt;br /&gt;
* change workflow so that the ‘upload DIP’ choice can be preconfigured.  &lt;br /&gt;
* update AIP reingest workflow to allow uncompressed AIPs to be reingested.&lt;br /&gt;
* enhance the callback functionality in the Storage Service, to notify third party apps when a DIP is ready to be used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These developments are necessary for research data management to meet use cases when research data is stored without the expectation that it will be re-used, but then subsequently a need for re-use arises and/or is approved by the creator of the data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Workflow==&lt;br /&gt;
&lt;br /&gt;
[[File:York_DIP_gen_v1.png|820px]]&lt;br /&gt;
&lt;br /&gt;
*Access request is initiated through a staff alert to RDMonitor&lt;br /&gt;
*Request for DIP sent to Storage Service&lt;br /&gt;
**If DIP exists already in storage, return DIP&lt;br /&gt;
**If DIP does not exist, send wait response and initiate AIP re-ingest in Archivematica pipeline&lt;br /&gt;
*When DIP stored by Archivematica,return DIP message goes to RDMonitor&lt;br /&gt;
*If DIP creation/storage fails, failure message sent to RDMonitor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=METS parsing=&lt;br /&gt;
&lt;br /&gt;
==METS questions==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width:25%&amp;quot;|'''Question'''&lt;br /&gt;
!style=&amp;quot;width:40%&amp;quot;|'''Information source'''&lt;br /&gt;
!style=&amp;quot;width:25%%&amp;quot;|'''Sample result'''&lt;br /&gt;
|-&lt;br /&gt;
|How many files are in this package?&lt;br /&gt;
|&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many original/preservation/metadata files are in this package?&lt;br /&gt;
|mets:fileGrp USE=&amp;quot;original&amp;quot; / mets:fileGrp USE=&amp;quot;preservation&amp;quot; / mets:fileGrp USE=&amp;quot;metadata&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|What is the total volume of files in this package?&lt;br /&gt;
|premis:size&lt;br /&gt;
|integer and unit, eg 17 GB &lt;br /&gt;
|-&lt;br /&gt;
|Is there a DIP for this package?&lt;br /&gt;
|Storage Service&lt;br /&gt;
|Location of DIP&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid X are in this package?&lt;br /&gt;
|premis:formatRegistryKey&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with format name X are in this package?&lt;br /&gt;
|premis:formatName&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid/format name X have been normalized?&lt;br /&gt;
|premis:formatRegistryKey / premis:formatName; files '''with''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid/format name X have not been normalized?&lt;br /&gt;
|premis:formatRegistryKey / premis:formatName; files '''without''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|Does the package include descriptive metadata?&lt;br /&gt;
|mets:dmdSec&lt;br /&gt;
|Yes or No&lt;br /&gt;
|-&lt;br /&gt;
|Does the package include rights metadata?&lt;br /&gt;
|mets:rightsMD&lt;br /&gt;
|Yes or No&lt;br /&gt;
|-&lt;br /&gt;
|How many files are invalid/not well-formed?&lt;br /&gt;
|premis:formatRegistryKey; &amp;lt;premis:eventType&amp;gt;validation&amp;lt;/premis:eventType&amp;gt;; &amp;lt;premis:eventOutcome&amp;gt;fail&amp;lt;/premis:eventOutcome&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid/format name X are invalid/not well-formed?&lt;br /&gt;
|premis:formatRegistryKey / premis:formatName; &amp;lt;premis:eventType&amp;gt;validation&amp;lt;/premis:eventType&amp;gt;; &amp;lt;premis:eventOutcome&amp;gt;fail&amp;lt;/premis:eventOutcome&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|What is the directory structure of the files in this package?&lt;br /&gt;
|mets:structMap&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|What is the size of file X?&lt;br /&gt;
|premis:size&lt;br /&gt;
|integer and unit, eg 2.2 GB &lt;br /&gt;
|-&lt;br /&gt;
|What is the checksum format for file X?&lt;br /&gt;
|premis:messageDigestAlgorithm&lt;br /&gt;
|md5, sha256&lt;br /&gt;
|-&lt;br /&gt;
|What is the checksum for file X?&lt;br /&gt;
|premis:messageDigest&lt;br /&gt;
|d32d41f7481afc1ab48779e2608v08d93b5d05cd217a4372e6a93957767ae651&lt;br /&gt;
|-&lt;br /&gt;
|Has file X been normalized for preservation?&lt;br /&gt;
|matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|Yes or no&lt;br /&gt;
|-&lt;br /&gt;
|To what format has file X been normalized for preservation?&lt;br /&gt;
|matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;; premis:formatName for preservation copy&lt;br /&gt;
|TIFF&lt;br /&gt;
|-&lt;br /&gt;
|When was file X normalized for preservation?&lt;br /&gt;
|matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;; premis:eventType:creation and premis:eventDateTime for preservation copy&lt;br /&gt;
|date&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Generic search REST API=&lt;br /&gt;
&lt;br /&gt;
==METS questions==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width:25%&amp;quot;|'''Question'''&lt;br /&gt;
!style=&amp;quot;width:40%&amp;quot;|'''Information source'''&lt;br /&gt;
!style=&amp;quot;width:25%%&amp;quot;|'''Sample result'''&lt;br /&gt;
|-&lt;br /&gt;
|How many files are in archival storage?&lt;br /&gt;
|Storage Service&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many AIPs are in archival storage?&lt;br /&gt;
|Storage Service&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files are in a specified AIP?&lt;br /&gt;
|Storage Service&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid X are in archival storage?&lt;br /&gt;
|premis:formatRegistryKey&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with format name X are in archival storage?&lt;br /&gt;
|premis:formatName&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many [video, image, plain text etc.] files are in archival storage?&lt;br /&gt;
|fits:mimetype, File:MIMEType, other mimetype sources? Alternatively, FPR groups?&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|What is the total volume of files with PRONOM puid X in archival storage?&lt;br /&gt;
|premis:formatRegistryKey; premis:size&lt;br /&gt;
|integer and unit, eg 452 GB&lt;br /&gt;
|-&lt;br /&gt;
|What is the total volume of files with format name X in archival storage?&lt;br /&gt;
|premis:formatName; premis:size&lt;br /&gt;
|integer and unit, eg 452 GB&lt;br /&gt;
|-&lt;br /&gt;
|What is the total volume of [video, image, plain text etc.] files in archival storage?&lt;br /&gt;
|fits:mimetype, File:MIMEType, other mimetype sources? FPR groups?; premis:size&lt;br /&gt;
|integer and unit, eg 452 GB&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid X have been normalized?&lt;br /&gt;
|premis:formatRegistryKey; files '''with''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid X have not been normalized?&lt;br /&gt;
|premis:formatRegistryKey; files '''without''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with format name X have been normalized?&lt;br /&gt;
|premis:premis:formatName; files '''with''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with format name X have not been normalized?&lt;br /&gt;
|premis:premis:formatName; files '''without''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many [video, image, plain text etc.] files have been normalized?&lt;br /&gt;
|fits:mimetype, File:MIMEType, other mimetype sources?; files '''with''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many [video, image, plain text etc.] files have not been normalized?&lt;br /&gt;
|fits:mimetype, File:MIMEType, other mimetype sources?; files '''without''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files were ingested between date X and date Y?&lt;br /&gt;
|&amp;lt;premis:eventType&amp;gt;ingestion&amp;lt;/premis:eventType&amp;gt;; premis:eventDateTime&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid X are invalid/not well-formed?&lt;br /&gt;
|premis:formatRegistryKey; &amp;lt;premis:eventType&amp;gt;validation&amp;lt;/premis:eventType&amp;gt;; &amp;lt;premis:eventOutcome&amp;gt;fail&amp;lt;/premis:eventOutcome&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with format name X are invalid/not well-formed?&lt;br /&gt;
|premis:formatName; &amp;lt;premis:eventType&amp;gt;validation&amp;lt;/premis:eventType&amp;gt;; &amp;lt;premis:eventOutcome&amp;gt;fail&amp;lt;/premis:eventOutcome&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many AIPs have corresponding DIPs?&lt;br /&gt;
|Storage Service&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many AIPs do not have corresponding DIPs?&lt;br /&gt;
|Storage Service&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Multiple checksum algorithms=&lt;br /&gt;
&lt;br /&gt;
=Enhance PRONOM integration=&lt;br /&gt;
&lt;br /&gt;
Priorities for this phase are (in order of priority):&lt;br /&gt;
&lt;br /&gt;
1. Provide report of non-identified files in a SIP or AIP, with access to the file identification tool output&lt;br /&gt;
&lt;br /&gt;
2. Provide direct access to the PRONOM submission form from within Archivematica&lt;br /&gt;
&lt;br /&gt;
Alternatives being discussed:&lt;br /&gt;
&lt;br /&gt;
- Post tool output and optionally a sample file to the FPR, making that available publically and to PRONOM&lt;br /&gt;
&lt;br /&gt;
3. Allow a user to manually assign pronom IDs to non-identified files; record manual selection in the AIP METS file&lt;br /&gt;
&lt;br /&gt;
=Automation tools documentation=&lt;br /&gt;
&lt;br /&gt;
Archivematica has features that enable quite a bit of automation and interaction from 3rd party applications, but most of that functionality is hidden and not well documented.  The goal of this part of the work on improving Research data management workflows is about adding documentation, in written form and as screencasts/videos, aimed at developers, and other technical users of Archivematica.  This will make it easier for developers working on other applications to integrate Archivematica into their organizations digital preservation workflows.&lt;br /&gt;
&lt;br /&gt;
Potential topics&lt;br /&gt;
&lt;br /&gt;
* introduction to the Archivematica&lt;br /&gt;
* setting up an Archivematica development&lt;br /&gt;
* automation tools introduction&lt;br /&gt;
* implementing an automated workflow in&lt;br /&gt;
* managing an Archivematica installation ­&lt;br /&gt;
* configuration and troubleshooting&lt;br /&gt;
* api documentation&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Research_data_management&amp;diff=13466</id>
		<title>Research data management</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Research_data_management&amp;diff=13466"/>
		<updated>2020-04-28T13:56:29Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Added final report&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Documentation]] &amp;gt; [[Requirements]] &amp;gt; Research data management&lt;br /&gt;
&lt;br /&gt;
=About=&lt;br /&gt;
&lt;br /&gt;
This page describes requirements for enhancements to Archivematica to better handle research data management. It is funded by [https://www.jisc.ac.uk/ Jisc], through University of York and University of Hull.&lt;br /&gt;
&lt;br /&gt;
'''See also'''&lt;br /&gt;
&lt;br /&gt;
*[[Dataset preservation]]&lt;br /&gt;
*[[Dataverse]]&lt;br /&gt;
*[http://digital-archiving.blogspot.ca Digital Archiving blog] written by archivists at University of York&lt;br /&gt;
*[https://s3-eu-west-1.amazonaws.com/pfigshare-u-files/3702676/JiscDataSpringFinalReportphase2.pdf Filling the Digital Preservation Gap] written by archivists at University of York&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Automated DIP generation=&lt;br /&gt;
&lt;br /&gt;
The tasks related to this phase of development are:&lt;br /&gt;
&lt;br /&gt;
* change workflow so that the ‘upload DIP’ choice can be preconfigured.  &lt;br /&gt;
* update AIP reingest workflow to allow uncompressed AIPs to be reingested.&lt;br /&gt;
* enhance the callback functionality in the Storage Service, to notify third party apps when a DIP is ready to be used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These developments are necessary for research data management to meet use cases when research data is stored without the expectation that it will be re-used, but then subsequently a need for re-use arises and/or is approved by the creator of the data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Workflow==&lt;br /&gt;
&lt;br /&gt;
[[File:York_DIP_gen_v1.png|820px]]&lt;br /&gt;
&lt;br /&gt;
*Access request is initiated through a staff alert to RDMonitor&lt;br /&gt;
*Request for DIP sent to Storage Service&lt;br /&gt;
**If DIP exists already in storage, return DIP&lt;br /&gt;
**If DIP does not exist, send wait response and initiate AIP re-ingest in Archivematica pipeline&lt;br /&gt;
*When DIP stored by Archivematica,return DIP message goes to RDMonitor&lt;br /&gt;
*If DIP creation/storage fails, failure message sent to RDMonitor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=METS parsing=&lt;br /&gt;
&lt;br /&gt;
==METS questions==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width:25%&amp;quot;|'''Question'''&lt;br /&gt;
!style=&amp;quot;width:40%&amp;quot;|'''Information source'''&lt;br /&gt;
!style=&amp;quot;width:25%%&amp;quot;|'''Sample result'''&lt;br /&gt;
|-&lt;br /&gt;
|How many files are in this package?&lt;br /&gt;
|&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many original/preservation/metadata files are in this package?&lt;br /&gt;
|mets:fileGrp USE=&amp;quot;original&amp;quot; / mets:fileGrp USE=&amp;quot;preservation&amp;quot; / mets:fileGrp USE=&amp;quot;metadata&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|What is the total volume of files in this package?&lt;br /&gt;
|premis:size&lt;br /&gt;
|integer and unit, eg 17 GB &lt;br /&gt;
|-&lt;br /&gt;
|Is there a DIP for this package?&lt;br /&gt;
|Storage Service&lt;br /&gt;
|Location of DIP&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid X are in this package?&lt;br /&gt;
|premis:formatRegistryKey&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with format name X are in this package?&lt;br /&gt;
|premis:formatName&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid/format name X have been normalized?&lt;br /&gt;
|premis:formatRegistryKey / premis:formatName; files '''with''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid/format name X have not been normalized?&lt;br /&gt;
|premis:formatRegistryKey / premis:formatName; files '''without''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|Does the package include descriptive metadata?&lt;br /&gt;
|mets:dmdSec&lt;br /&gt;
|Yes or No&lt;br /&gt;
|-&lt;br /&gt;
|Does the package include rights metadata?&lt;br /&gt;
|mets:rightsMD&lt;br /&gt;
|Yes or No&lt;br /&gt;
|-&lt;br /&gt;
|How many files are invalid/not well-formed?&lt;br /&gt;
|premis:formatRegistryKey; &amp;lt;premis:eventType&amp;gt;validation&amp;lt;/premis:eventType&amp;gt;; &amp;lt;premis:eventOutcome&amp;gt;fail&amp;lt;/premis:eventOutcome&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid/format name X are invalid/not well-formed?&lt;br /&gt;
|premis:formatRegistryKey / premis:formatName; &amp;lt;premis:eventType&amp;gt;validation&amp;lt;/premis:eventType&amp;gt;; &amp;lt;premis:eventOutcome&amp;gt;fail&amp;lt;/premis:eventOutcome&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|What is the directory structure of the files in this package?&lt;br /&gt;
|mets:structMap&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|What is the size of file X?&lt;br /&gt;
|premis:size&lt;br /&gt;
|integer and unit, eg 2.2 GB &lt;br /&gt;
|-&lt;br /&gt;
|What is the checksum format for file X?&lt;br /&gt;
|premis:messageDigestAlgorithm&lt;br /&gt;
|md5, sha256&lt;br /&gt;
|-&lt;br /&gt;
|What is the checksum for file X?&lt;br /&gt;
|premis:messageDigest&lt;br /&gt;
|d32d41f7481afc1ab48779e2608v08d93b5d05cd217a4372e6a93957767ae651&lt;br /&gt;
|-&lt;br /&gt;
|Has file X been normalized for preservation?&lt;br /&gt;
|matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|Yes or no&lt;br /&gt;
|-&lt;br /&gt;
|To what format has file X been normalized for preservation?&lt;br /&gt;
|matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;; premis:formatName for preservation copy&lt;br /&gt;
|TIFF&lt;br /&gt;
|-&lt;br /&gt;
|When was file X normalized for preservation?&lt;br /&gt;
|matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;; premis:eventType:creation and premis:eventDateTime for preservation copy&lt;br /&gt;
|date&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Generic search REST API=&lt;br /&gt;
&lt;br /&gt;
==METS questions==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width:25%&amp;quot;|'''Question'''&lt;br /&gt;
!style=&amp;quot;width:40%&amp;quot;|'''Information source'''&lt;br /&gt;
!style=&amp;quot;width:25%%&amp;quot;|'''Sample result'''&lt;br /&gt;
|-&lt;br /&gt;
|How many files are in archival storage?&lt;br /&gt;
|Storage Service&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many AIPs are in archival storage?&lt;br /&gt;
|Storage Service&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files are in a specified AIP?&lt;br /&gt;
|Storage Service&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid X are in archival storage?&lt;br /&gt;
|premis:formatRegistryKey&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with format name X are in archival storage?&lt;br /&gt;
|premis:formatName&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many [video, image, plain text etc.] files are in archival storage?&lt;br /&gt;
|fits:mimetype, File:MIMEType, other mimetype sources? Alternatively, FPR groups?&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|What is the total volume of files with PRONOM puid X in archival storage?&lt;br /&gt;
|premis:formatRegistryKey; premis:size&lt;br /&gt;
|integer and unit, eg 452 GB&lt;br /&gt;
|-&lt;br /&gt;
|What is the total volume of files with format name X in archival storage?&lt;br /&gt;
|premis:formatName; premis:size&lt;br /&gt;
|integer and unit, eg 452 GB&lt;br /&gt;
|-&lt;br /&gt;
|What is the total volume of [video, image, plain text etc.] files in archival storage?&lt;br /&gt;
|fits:mimetype, File:MIMEType, other mimetype sources? FPR groups?; premis:size&lt;br /&gt;
|integer and unit, eg 452 GB&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid X have been normalized?&lt;br /&gt;
|premis:formatRegistryKey; files '''with''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid X have not been normalized?&lt;br /&gt;
|premis:formatRegistryKey; files '''without''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with format name X have been normalized?&lt;br /&gt;
|premis:premis:formatName; files '''with''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with format name X have not been normalized?&lt;br /&gt;
|premis:premis:formatName; files '''without''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many [video, image, plain text etc.] files have been normalized?&lt;br /&gt;
|fits:mimetype, File:MIMEType, other mimetype sources?; files '''with''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many [video, image, plain text etc.] files have not been normalized?&lt;br /&gt;
|fits:mimetype, File:MIMEType, other mimetype sources?; files '''without''' matching GROUPID attributes in mets:fileGrp USE=&amp;quot;original&amp;quot; and mets:fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files were ingested between date X and date Y?&lt;br /&gt;
|&amp;lt;premis:eventType&amp;gt;ingestion&amp;lt;/premis:eventType&amp;gt;; premis:eventDateTime&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with PRONOM puid X are invalid/not well-formed?&lt;br /&gt;
|premis:formatRegistryKey; &amp;lt;premis:eventType&amp;gt;validation&amp;lt;/premis:eventType&amp;gt;; &amp;lt;premis:eventOutcome&amp;gt;fail&amp;lt;/premis:eventOutcome&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many files with format name X are invalid/not well-formed?&lt;br /&gt;
|premis:formatName; &amp;lt;premis:eventType&amp;gt;validation&amp;lt;/premis:eventType&amp;gt;; &amp;lt;premis:eventOutcome&amp;gt;fail&amp;lt;/premis:eventOutcome&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many AIPs have corresponding DIPs?&lt;br /&gt;
|Storage Service&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|How many AIPs do not have corresponding DIPs?&lt;br /&gt;
|Storage Service&lt;br /&gt;
|integer&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Multiple checksum algorithms=&lt;br /&gt;
&lt;br /&gt;
=Enhance PRONOM integration=&lt;br /&gt;
&lt;br /&gt;
Priorities for this phase are (in order of priority):&lt;br /&gt;
&lt;br /&gt;
1. Provide report of non-identified files in a SIP or AIP, with access to the file identification tool output&lt;br /&gt;
&lt;br /&gt;
2. Provide direct access to the PRONOM submission form from within Archivematica&lt;br /&gt;
&lt;br /&gt;
Alternatives being discussed:&lt;br /&gt;
&lt;br /&gt;
- Post tool output and optionally a sample file to the FPR, making that available publically and to PRONOM&lt;br /&gt;
&lt;br /&gt;
3. Allow a user to manually assign pronom IDs to non-identified files; record manual selection in the AIP METS file&lt;br /&gt;
&lt;br /&gt;
=Automation tools documentation=&lt;br /&gt;
&lt;br /&gt;
Archivematica has features that enable quite a bit of automation and interaction from 3rd party applications, but most of that functionality is hidden and not well documented.  The goal of this part of the work on improving Research data management workflows is about adding documentation, in written form and as screencasts/videos, aimed at developers, and other technical users of Archivematica.  This will make it easier for developers working on other applications to integrate Archivematica into their organizations digital preservation workflows.&lt;br /&gt;
&lt;br /&gt;
Potential topics&lt;br /&gt;
&lt;br /&gt;
* introduction to the Archivematica&lt;br /&gt;
* setting up an Archivematica development&lt;br /&gt;
* automation tools introduction&lt;br /&gt;
* implementing an automated workflow in&lt;br /&gt;
* managing an Archivematica installation ­&lt;br /&gt;
* configuration and troubleshooting&lt;br /&gt;
* api documentation&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=External_tools&amp;diff=13293</id>
		<title>External tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=External_tools&amp;diff=13293"/>
		<updated>2019-12-13T02:16:22Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Adding __NOINDEX__&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOINDEX__ &lt;br /&gt;
[[Main Page]] &amp;gt; [[Documentation]] &amp;gt; External tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color:orange;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note: The documentation on this page is out of date. Please see the [https://www.archivematica.org/docs official documentation page] for the latest.'''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=External software tools used in Archivematica=&lt;br /&gt;
&lt;br /&gt;
==Current release==&lt;br /&gt;
&lt;br /&gt;
Archivematica integrates a suite of free and open-source tools that allows users to process digital objects from ingest to access based on the ISO-OAIS functional model. In addition to the core software which is released under AGPL v3 license, the following tools are bundled with Archivematica:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=90%&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background-color:#cccccc;&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|'''Tool'''&lt;br /&gt;
!style=&amp;quot;width:40%&amp;quot;|'''Description'''&lt;br /&gt;
!style=&amp;quot;width:30%&amp;quot;|'''License'''&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.accesstomemory.org AtoM]&lt;br /&gt;
|Web-based archival description and access tool. &lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/LibraryOfCongress/bagit-java/ BagIt]&lt;br /&gt;
|Standard and script to package digital objects and metadata for archival storage&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/simsong/bulk_extractor bulk_extractor]&lt;br /&gt;
|Disk image and file contents analysis tool&lt;br /&gt;
|Public domain&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.clamav.net/ Clam AV (anti-virus)]&lt;br /&gt;
|Anti-virus toolkit for UNIX&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.djangoproject.com/ Django]&lt;br /&gt;
|Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.elasticsearch.org/ ElasticSearch]&lt;br /&gt;
|Indexing and search&lt;br /&gt;
|Apache License 2.0&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sno.phy.queensu.ca/~phil/exiftool/index.html ExifTool]&lt;br /&gt;
|Multimedia metadata extraction&lt;br /&gt;
|GNU General Public License and Artistic License&lt;br /&gt;
|-&lt;br /&gt;
|[http://ffmpeg.org/ FFmpeg]&lt;br /&gt;
|Converts a wide variety of audio and video formats&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/openplanets/fido fido]&lt;br /&gt;
|File format identification tool&lt;br /&gt;
|Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|[https://projects.iq.harvard.edu/fits File Information Tool Set (FITS)]&lt;br /&gt;
|File format identification and validation software integration tool&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://gearman.org/ Gearman]&lt;br /&gt;
|Gearman provides a generic application framework to farm out work to other machines or processes that are better suited to do the work.&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.imagemagick.org/script/index.php Imagemagick]&lt;br /&gt;
|Converts a wide variety of bitmap images&lt;br /&gt;
|GPL compatible [http://www.imagemagick.org/script/license.php Imagemagick license]&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.inkscape.org/ Inkscape]&lt;br /&gt;
|Converts vector images to Scalable Vector Graphic (SVG) format&lt;br /&gt;
|GNU General Public License (GPL) version 2&lt;br /&gt;
|-&lt;br /&gt;
|[http://jhove.sourceforge.net/ JHOVE]&lt;br /&gt;
|File format validation tool&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://md5deep.sourceforge.net/ md5deep]&lt;br /&gt;
|Checksum generation and verification scripts&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://mediaarea.net/MediaConch MediaConch]&lt;br /&gt;
|File policy conformance checker tool&lt;br /&gt;
|BSD (2-clause)&lt;br /&gt;
|-&lt;br /&gt;
|[https://mediaarea.net/en/MediaInfo MediaInfo]&lt;br /&gt;
|Multimedia metadata extraction&lt;br /&gt;
|BSD (2-clause), Zlib&lt;br /&gt;
|-&lt;br /&gt;
|[https://pkgs.org/download/nfs-common NFS-common]&lt;br /&gt;
|Network File System Access - allows access to files on network storage devices.&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://p7zip.sourceforge.net/ p7zip]&lt;br /&gt;
|7-Zip is a file archiver with a high compression ratio. (LZMA)&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://lxml.de/ Python-lxml]&lt;br /&gt;
|Python binding for libxml2 and libxslt&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/richardlehane/siegfried Seigfried]&lt;br /&gt;
|File format identification tool&lt;br /&gt;
|Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sleuthkit.org/ Sleuthkit]&lt;br /&gt;
|Disk image management and extraction toolkit&lt;br /&gt;
|Common Public License / IBM Public License&lt;br /&gt;
|-&lt;br /&gt;
|[http://code.google.com/p/tesseract-ocr/ Tesseract]&lt;br /&gt;
|Optical Character Recognition -read image files and convert to text&lt;br /&gt;
|Apache Licence Vesion 2&lt;br /&gt;
|-&lt;br /&gt;
|[https://ubuntu.com/ Ubuntu Linux]&lt;br /&gt;
|Interface with computing hardware. Ubuntu Linux server edition.&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ossp.org/pkg/lib/uuid/ UUID]&lt;br /&gt;
|command line interface (CLI) for the generation of DCE 1.1, ISO/IEC 11578:1996 and IETF RFC-4122 compliant Universally Unique Identifier (UUID).&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://unarchiver.c3.cx/commandline unar]&lt;br /&gt;
|The Unarchiver is an archive unpacker program&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://manpages.ubuntu.com/manpages/hardy/man1/zip.1.html Zip]&lt;br /&gt;
|Utility called by Bagit to create AIP package&lt;br /&gt;
|Info-Zip license: &amp;quot;Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Past releases==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.6.0]]''' (March 2017)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.5]]''' (June 2016)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.4.1]]''' (June 2015)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.4]]''' (May 2015)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.3.1]]''' (February 2015)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.0]]''' (September 2014)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.10-beta]]''' (April 2013)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.9-beta]]''' (Aug 2012)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.8-alpha]]''' (Jan 2012)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.7.1-alpha]]''' (June 2011)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.7-alpha]]''' (Feb 2011)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.6.2-alpha]]''' (November 2010)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.6-alpha]]''' (May 2010)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.5-alpha]]''' (November 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.4-alpha]]''' (October 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.3.5-alpha]]''' (September 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.3-alpha]]''' (June 2009) &lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.2-alpha]]''' (May 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.1-alpha]]''' (Feb 2009)&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=External_tools&amp;diff=13292</id>
		<title>External tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=External_tools&amp;diff=13292"/>
		<updated>2019-12-13T01:59:01Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Remove __NOINDEX__&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Documentation]] &amp;gt; External tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color:orange;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note: The documentation on this page is out of date. Please see the [https://www.archivematica.org/docs official documentation page] for the latest.'''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=External software tools used in Archivematica=&lt;br /&gt;
&lt;br /&gt;
==Current release==&lt;br /&gt;
&lt;br /&gt;
Archivematica integrates a suite of free and open-source tools that allows users to process digital objects from ingest to access based on the ISO-OAIS functional model. In addition to the core software which is released under AGPL v3 license, the following tools are bundled with Archivematica:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=90%&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background-color:#cccccc;&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|'''Tool'''&lt;br /&gt;
!style=&amp;quot;width:40%&amp;quot;|'''Description'''&lt;br /&gt;
!style=&amp;quot;width:30%&amp;quot;|'''License'''&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.accesstomemory.org AtoM]&lt;br /&gt;
|Web-based archival description and access tool. &lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/LibraryOfCongress/bagit-java/ BagIt]&lt;br /&gt;
|Standard and script to package digital objects and metadata for archival storage&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/simsong/bulk_extractor bulk_extractor]&lt;br /&gt;
|Disk image and file contents analysis tool&lt;br /&gt;
|Public domain&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.clamav.net/ Clam AV (anti-virus)]&lt;br /&gt;
|Anti-virus toolkit for UNIX&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.djangoproject.com/ Django]&lt;br /&gt;
|Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.elasticsearch.org/ ElasticSearch]&lt;br /&gt;
|Indexing and search&lt;br /&gt;
|Apache License 2.0&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sno.phy.queensu.ca/~phil/exiftool/index.html ExifTool]&lt;br /&gt;
|Multimedia metadata extraction&lt;br /&gt;
|GNU General Public License and Artistic License&lt;br /&gt;
|-&lt;br /&gt;
|[http://ffmpeg.org/ FFmpeg]&lt;br /&gt;
|Converts a wide variety of audio and video formats&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/openplanets/fido fido]&lt;br /&gt;
|File format identification tool&lt;br /&gt;
|Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|[https://projects.iq.harvard.edu/fits File Information Tool Set (FITS)]&lt;br /&gt;
|File format identification and validation software integration tool&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://gearman.org/ Gearman]&lt;br /&gt;
|Gearman provides a generic application framework to farm out work to other machines or processes that are better suited to do the work.&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.imagemagick.org/script/index.php Imagemagick]&lt;br /&gt;
|Converts a wide variety of bitmap images&lt;br /&gt;
|GPL compatible [http://www.imagemagick.org/script/license.php Imagemagick license]&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.inkscape.org/ Inkscape]&lt;br /&gt;
|Converts vector images to Scalable Vector Graphic (SVG) format&lt;br /&gt;
|GNU General Public License (GPL) version 2&lt;br /&gt;
|-&lt;br /&gt;
|[http://jhove.sourceforge.net/ JHOVE]&lt;br /&gt;
|File format validation tool&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://md5deep.sourceforge.net/ md5deep]&lt;br /&gt;
|Checksum generation and verification scripts&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://mediaarea.net/MediaConch MediaConch]&lt;br /&gt;
|File policy conformance checker tool&lt;br /&gt;
|BSD (2-clause)&lt;br /&gt;
|-&lt;br /&gt;
|[https://mediaarea.net/en/MediaInfo MediaInfo]&lt;br /&gt;
|Multimedia metadata extraction&lt;br /&gt;
|BSD (2-clause), Zlib&lt;br /&gt;
|-&lt;br /&gt;
|[https://pkgs.org/download/nfs-common NFS-common]&lt;br /&gt;
|Network File System Access - allows access to files on network storage devices.&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://p7zip.sourceforge.net/ p7zip]&lt;br /&gt;
|7-Zip is a file archiver with a high compression ratio. (LZMA)&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://lxml.de/ Python-lxml]&lt;br /&gt;
|Python binding for libxml2 and libxslt&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/richardlehane/siegfried Seigfried]&lt;br /&gt;
|File format identification tool&lt;br /&gt;
|Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sleuthkit.org/ Sleuthkit]&lt;br /&gt;
|Disk image management and extraction toolkit&lt;br /&gt;
|Common Public License / IBM Public License&lt;br /&gt;
|-&lt;br /&gt;
|[http://code.google.com/p/tesseract-ocr/ Tesseract]&lt;br /&gt;
|Optical Character Recognition -read image files and convert to text&lt;br /&gt;
|Apache Licence Vesion 2&lt;br /&gt;
|-&lt;br /&gt;
|[https://ubuntu.com/ Ubuntu Linux]&lt;br /&gt;
|Interface with computing hardware. Ubuntu Linux server edition.&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ossp.org/pkg/lib/uuid/ UUID]&lt;br /&gt;
|command line interface (CLI) for the generation of DCE 1.1, ISO/IEC 11578:1996 and IETF RFC-4122 compliant Universally Unique Identifier (UUID).&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://unarchiver.c3.cx/commandline unar]&lt;br /&gt;
|The Unarchiver is an archive unpacker program&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://manpages.ubuntu.com/manpages/hardy/man1/zip.1.html Zip]&lt;br /&gt;
|Utility called by Bagit to create AIP package&lt;br /&gt;
|Info-Zip license: &amp;quot;Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Past releases==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.6.0]]''' (March 2017)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.5]]''' (June 2016)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.4.1]]''' (June 2015)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.4]]''' (May 2015)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.3.1]]''' (February 2015)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.0]]''' (September 2014)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.10-beta]]''' (April 2013)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.9-beta]]''' (Aug 2012)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.8-alpha]]''' (Jan 2012)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.7.1-alpha]]''' (June 2011)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.7-alpha]]''' (Feb 2011)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.6.2-alpha]]''' (November 2010)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.6-alpha]]''' (May 2010)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.5-alpha]]''' (November 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.4-alpha]]''' (October 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.3.5-alpha]]''' (September 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.3-alpha]]''' (June 2009) &lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.2-alpha]]''' (May 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.1-alpha]]''' (Feb 2009)&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=External_tools&amp;diff=13291</id>
		<title>External tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=External_tools&amp;diff=13291"/>
		<updated>2019-12-12T18:59:17Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Adding __NOINDEX__&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOINDEX__&lt;br /&gt;
[[Main Page]] &amp;gt; [[Documentation]] &amp;gt; External tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color:orange;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note: The documentation on this page is out of date. Please see the [https://www.archivematica.org/docs official documentation page] for the latest.'''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=External software tools used in Archivematica=&lt;br /&gt;
&lt;br /&gt;
==Current release==&lt;br /&gt;
&lt;br /&gt;
Archivematica integrates a suite of free and open-source tools that allows users to process digital objects from ingest to access based on the ISO-OAIS functional model. In addition to the core software which is released under AGPL v3 license, the following tools are bundled with Archivematica:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=90%&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background-color:#cccccc;&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|'''Tool'''&lt;br /&gt;
!style=&amp;quot;width:40%&amp;quot;|'''Description'''&lt;br /&gt;
!style=&amp;quot;width:30%&amp;quot;|'''License'''&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.accesstomemory.org AtoM]&lt;br /&gt;
|Web-based archival description and access tool. &lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/LibraryOfCongress/bagit-java/ BagIt]&lt;br /&gt;
|Standard and script to package digital objects and metadata for archival storage&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/simsong/bulk_extractor bulk_extractor]&lt;br /&gt;
|Disk image and file contents analysis tool&lt;br /&gt;
|Public domain&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.clamav.net/ Clam AV (anti-virus)]&lt;br /&gt;
|Anti-virus toolkit for UNIX&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.djangoproject.com/ Django]&lt;br /&gt;
|Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.elasticsearch.org/ ElasticSearch]&lt;br /&gt;
|Indexing and search&lt;br /&gt;
|Apache License 2.0&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sno.phy.queensu.ca/~phil/exiftool/index.html ExifTool]&lt;br /&gt;
|Multimedia metadata extraction&lt;br /&gt;
|GNU General Public License and Artistic License&lt;br /&gt;
|-&lt;br /&gt;
|[http://ffmpeg.org/ FFmpeg]&lt;br /&gt;
|Converts a wide variety of audio and video formats&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/openplanets/fido fido]&lt;br /&gt;
|File format identification tool&lt;br /&gt;
|Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|[https://projects.iq.harvard.edu/fits File Information Tool Set (FITS)]&lt;br /&gt;
|File format identification and validation software integration tool&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://gearman.org/ Gearman]&lt;br /&gt;
|Gearman provides a generic application framework to farm out work to other machines or processes that are better suited to do the work.&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.imagemagick.org/script/index.php Imagemagick]&lt;br /&gt;
|Converts a wide variety of bitmap images&lt;br /&gt;
|GPL compatible [http://www.imagemagick.org/script/license.php Imagemagick license]&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.inkscape.org/ Inkscape]&lt;br /&gt;
|Converts vector images to Scalable Vector Graphic (SVG) format&lt;br /&gt;
|GNU General Public License (GPL) version 2&lt;br /&gt;
|-&lt;br /&gt;
|[http://jhove.sourceforge.net/ JHOVE]&lt;br /&gt;
|File format validation tool&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://md5deep.sourceforge.net/ md5deep]&lt;br /&gt;
|Checksum generation and verification scripts&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://mediaarea.net/MediaConch MediaConch]&lt;br /&gt;
|File policy conformance checker tool&lt;br /&gt;
|BSD (2-clause)&lt;br /&gt;
|-&lt;br /&gt;
|[https://mediaarea.net/en/MediaInfo MediaInfo]&lt;br /&gt;
|Multimedia metadata extraction&lt;br /&gt;
|BSD (2-clause), Zlib&lt;br /&gt;
|-&lt;br /&gt;
|[https://pkgs.org/download/nfs-common NFS-common]&lt;br /&gt;
|Network File System Access - allows access to files on network storage devices.&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://p7zip.sourceforge.net/ p7zip]&lt;br /&gt;
|7-Zip is a file archiver with a high compression ratio. (LZMA)&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://lxml.de/ Python-lxml]&lt;br /&gt;
|Python binding for libxml2 and libxslt&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/richardlehane/siegfried Seigfried]&lt;br /&gt;
|File format identification tool&lt;br /&gt;
|Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sleuthkit.org/ Sleuthkit]&lt;br /&gt;
|Disk image management and extraction toolkit&lt;br /&gt;
|Common Public License / IBM Public License&lt;br /&gt;
|-&lt;br /&gt;
|[http://code.google.com/p/tesseract-ocr/ Tesseract]&lt;br /&gt;
|Optical Character Recognition -read image files and convert to text&lt;br /&gt;
|Apache Licence Vesion 2&lt;br /&gt;
|-&lt;br /&gt;
|[https://ubuntu.com/ Ubuntu Linux]&lt;br /&gt;
|Interface with computing hardware. Ubuntu Linux server edition.&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ossp.org/pkg/lib/uuid/ UUID]&lt;br /&gt;
|command line interface (CLI) for the generation of DCE 1.1, ISO/IEC 11578:1996 and IETF RFC-4122 compliant Universally Unique Identifier (UUID).&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://unarchiver.c3.cx/commandline unar]&lt;br /&gt;
|The Unarchiver is an archive unpacker program&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://manpages.ubuntu.com/manpages/hardy/man1/zip.1.html Zip]&lt;br /&gt;
|Utility called by Bagit to create AIP package&lt;br /&gt;
|Info-Zip license: &amp;quot;Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Past releases==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.6.0]]''' (March 2017)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.5]]''' (June 2016)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.4.1]]''' (June 2015)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.4]]''' (May 2015)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.3.1]]''' (February 2015)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.0]]''' (September 2014)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.10-beta]]''' (April 2013)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.9-beta]]''' (Aug 2012)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.8-alpha]]''' (Jan 2012)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.7.1-alpha]]''' (June 2011)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.7-alpha]]''' (Feb 2011)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.6.2-alpha]]''' (November 2010)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.6-alpha]]''' (May 2010)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.5-alpha]]''' (November 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.4-alpha]]''' (October 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.3.5-alpha]]''' (September 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.3-alpha]]''' (June 2009) &lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.2-alpha]]''' (May 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.1-alpha]]''' (Feb 2009)&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=External_tools&amp;diff=13290</id>
		<title>External tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=External_tools&amp;diff=13290"/>
		<updated>2019-12-12T18:58:39Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Testing removing __NOINDEX__&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Documentation]] &amp;gt; External tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color:orange;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note: The documentation on this page is out of date. Please see the [https://www.archivematica.org/docs official documentation page] for the latest.'''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=External software tools used in Archivematica=&lt;br /&gt;
&lt;br /&gt;
==Current release==&lt;br /&gt;
&lt;br /&gt;
Archivematica integrates a suite of free and open-source tools that allows users to process digital objects from ingest to access based on the ISO-OAIS functional model. In addition to the core software which is released under AGPL v3 license, the following tools are bundled with Archivematica:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=90%&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background-color:#cccccc;&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|'''Tool'''&lt;br /&gt;
!style=&amp;quot;width:40%&amp;quot;|'''Description'''&lt;br /&gt;
!style=&amp;quot;width:30%&amp;quot;|'''License'''&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.accesstomemory.org AtoM]&lt;br /&gt;
|Web-based archival description and access tool. &lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/LibraryOfCongress/bagit-java/ BagIt]&lt;br /&gt;
|Standard and script to package digital objects and metadata for archival storage&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/simsong/bulk_extractor bulk_extractor]&lt;br /&gt;
|Disk image and file contents analysis tool&lt;br /&gt;
|Public domain&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.clamav.net/ Clam AV (anti-virus)]&lt;br /&gt;
|Anti-virus toolkit for UNIX&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.djangoproject.com/ Django]&lt;br /&gt;
|Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.elasticsearch.org/ ElasticSearch]&lt;br /&gt;
|Indexing and search&lt;br /&gt;
|Apache License 2.0&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sno.phy.queensu.ca/~phil/exiftool/index.html ExifTool]&lt;br /&gt;
|Multimedia metadata extraction&lt;br /&gt;
|GNU General Public License and Artistic License&lt;br /&gt;
|-&lt;br /&gt;
|[http://ffmpeg.org/ FFmpeg]&lt;br /&gt;
|Converts a wide variety of audio and video formats&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/openplanets/fido fido]&lt;br /&gt;
|File format identification tool&lt;br /&gt;
|Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|[https://projects.iq.harvard.edu/fits File Information Tool Set (FITS)]&lt;br /&gt;
|File format identification and validation software integration tool&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://gearman.org/ Gearman]&lt;br /&gt;
|Gearman provides a generic application framework to farm out work to other machines or processes that are better suited to do the work.&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.imagemagick.org/script/index.php Imagemagick]&lt;br /&gt;
|Converts a wide variety of bitmap images&lt;br /&gt;
|GPL compatible [http://www.imagemagick.org/script/license.php Imagemagick license]&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.inkscape.org/ Inkscape]&lt;br /&gt;
|Converts vector images to Scalable Vector Graphic (SVG) format&lt;br /&gt;
|GNU General Public License (GPL) version 2&lt;br /&gt;
|-&lt;br /&gt;
|[http://jhove.sourceforge.net/ JHOVE]&lt;br /&gt;
|File format validation tool&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://md5deep.sourceforge.net/ md5deep]&lt;br /&gt;
|Checksum generation and verification scripts&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://mediaarea.net/MediaConch MediaConch]&lt;br /&gt;
|File policy conformance checker tool&lt;br /&gt;
|BSD (2-clause)&lt;br /&gt;
|-&lt;br /&gt;
|[https://mediaarea.net/en/MediaInfo MediaInfo]&lt;br /&gt;
|Multimedia metadata extraction&lt;br /&gt;
|BSD (2-clause), Zlib&lt;br /&gt;
|-&lt;br /&gt;
|[https://pkgs.org/download/nfs-common NFS-common]&lt;br /&gt;
|Network File System Access - allows access to files on network storage devices.&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://p7zip.sourceforge.net/ p7zip]&lt;br /&gt;
|7-Zip is a file archiver with a high compression ratio. (LZMA)&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://lxml.de/ Python-lxml]&lt;br /&gt;
|Python binding for libxml2 and libxslt&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/richardlehane/siegfried Seigfried]&lt;br /&gt;
|File format identification tool&lt;br /&gt;
|Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sleuthkit.org/ Sleuthkit]&lt;br /&gt;
|Disk image management and extraction toolkit&lt;br /&gt;
|Common Public License / IBM Public License&lt;br /&gt;
|-&lt;br /&gt;
|[http://code.google.com/p/tesseract-ocr/ Tesseract]&lt;br /&gt;
|Optical Character Recognition -read image files and convert to text&lt;br /&gt;
|Apache Licence Vesion 2&lt;br /&gt;
|-&lt;br /&gt;
|[https://ubuntu.com/ Ubuntu Linux]&lt;br /&gt;
|Interface with computing hardware. Ubuntu Linux server edition.&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ossp.org/pkg/lib/uuid/ UUID]&lt;br /&gt;
|command line interface (CLI) for the generation of DCE 1.1, ISO/IEC 11578:1996 and IETF RFC-4122 compliant Universally Unique Identifier (UUID).&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://unarchiver.c3.cx/commandline unar]&lt;br /&gt;
|The Unarchiver is an archive unpacker program&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://manpages.ubuntu.com/manpages/hardy/man1/zip.1.html Zip]&lt;br /&gt;
|Utility called by Bagit to create AIP package&lt;br /&gt;
|Info-Zip license: &amp;quot;Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Past releases==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.6.0]]''' (March 2017)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.5]]''' (June 2016)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.4.1]]''' (June 2015)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.4]]''' (May 2015)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.3.1]]''' (February 2015)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.0]]''' (September 2014)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.10-beta]]''' (April 2013)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.9-beta]]''' (Aug 2012)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.8-alpha]]''' (Jan 2012)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.7.1-alpha]]''' (June 2011)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.7-alpha]]''' (Feb 2011)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.6.2-alpha]]''' (November 2010)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.6-alpha]]''' (May 2010)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.5-alpha]]''' (November 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.4-alpha]]''' (October 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.3.5-alpha]]''' (September 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.3-alpha]]''' (June 2009) &lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.2-alpha]]''' (May 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.1-alpha]]''' (Feb 2009)&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=External_tools&amp;diff=13289</id>
		<title>External tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=External_tools&amp;diff=13289"/>
		<updated>2019-12-12T18:58:07Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Adding __NOINDEX__&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOINDEX__&lt;br /&gt;
&lt;br /&gt;
[[Main Page]] &amp;gt; [[Documentation]] &amp;gt; External tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;background-color:orange;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note: The documentation on this page is out of date. Please see the [https://www.archivematica.org/docs official documentation page] for the latest.'''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=External software tools used in Archivematica=&lt;br /&gt;
&lt;br /&gt;
==Current release==&lt;br /&gt;
&lt;br /&gt;
Archivematica integrates a suite of free and open-source tools that allows users to process digital objects from ingest to access based on the ISO-OAIS functional model. In addition to the core software which is released under AGPL v3 license, the following tools are bundled with Archivematica:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=90%&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background-color:#cccccc;&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|'''Tool'''&lt;br /&gt;
!style=&amp;quot;width:40%&amp;quot;|'''Description'''&lt;br /&gt;
!style=&amp;quot;width:30%&amp;quot;|'''License'''&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.accesstomemory.org AtoM]&lt;br /&gt;
|Web-based archival description and access tool. &lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/LibraryOfCongress/bagit-java/ BagIt]&lt;br /&gt;
|Standard and script to package digital objects and metadata for archival storage&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/simsong/bulk_extractor bulk_extractor]&lt;br /&gt;
|Disk image and file contents analysis tool&lt;br /&gt;
|Public domain&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.clamav.net/ Clam AV (anti-virus)]&lt;br /&gt;
|Anti-virus toolkit for UNIX&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.djangoproject.com/ Django]&lt;br /&gt;
|Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.elasticsearch.org/ ElasticSearch]&lt;br /&gt;
|Indexing and search&lt;br /&gt;
|Apache License 2.0&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sno.phy.queensu.ca/~phil/exiftool/index.html ExifTool]&lt;br /&gt;
|Multimedia metadata extraction&lt;br /&gt;
|GNU General Public License and Artistic License&lt;br /&gt;
|-&lt;br /&gt;
|[http://ffmpeg.org/ FFmpeg]&lt;br /&gt;
|Converts a wide variety of audio and video formats&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/openplanets/fido fido]&lt;br /&gt;
|File format identification tool&lt;br /&gt;
|Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|[https://projects.iq.harvard.edu/fits File Information Tool Set (FITS)]&lt;br /&gt;
|File format identification and validation software integration tool&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://gearman.org/ Gearman]&lt;br /&gt;
|Gearman provides a generic application framework to farm out work to other machines or processes that are better suited to do the work.&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.imagemagick.org/script/index.php Imagemagick]&lt;br /&gt;
|Converts a wide variety of bitmap images&lt;br /&gt;
|GPL compatible [http://www.imagemagick.org/script/license.php Imagemagick license]&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.inkscape.org/ Inkscape]&lt;br /&gt;
|Converts vector images to Scalable Vector Graphic (SVG) format&lt;br /&gt;
|GNU General Public License (GPL) version 2&lt;br /&gt;
|-&lt;br /&gt;
|[http://jhove.sourceforge.net/ JHOVE]&lt;br /&gt;
|File format validation tool&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://md5deep.sourceforge.net/ md5deep]&lt;br /&gt;
|Checksum generation and verification scripts&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://mediaarea.net/MediaConch MediaConch]&lt;br /&gt;
|File policy conformance checker tool&lt;br /&gt;
|BSD (2-clause)&lt;br /&gt;
|-&lt;br /&gt;
|[https://mediaarea.net/en/MediaInfo MediaInfo]&lt;br /&gt;
|Multimedia metadata extraction&lt;br /&gt;
|BSD (2-clause), Zlib&lt;br /&gt;
|-&lt;br /&gt;
|[https://pkgs.org/download/nfs-common NFS-common]&lt;br /&gt;
|Network File System Access - allows access to files on network storage devices.&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://p7zip.sourceforge.net/ p7zip]&lt;br /&gt;
|7-Zip is a file archiver with a high compression ratio. (LZMA)&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://lxml.de/ Python-lxml]&lt;br /&gt;
|Python binding for libxml2 and libxslt&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/richardlehane/siegfried Seigfried]&lt;br /&gt;
|File format identification tool&lt;br /&gt;
|Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sleuthkit.org/ Sleuthkit]&lt;br /&gt;
|Disk image management and extraction toolkit&lt;br /&gt;
|Common Public License / IBM Public License&lt;br /&gt;
|-&lt;br /&gt;
|[http://code.google.com/p/tesseract-ocr/ Tesseract]&lt;br /&gt;
|Optical Character Recognition -read image files and convert to text&lt;br /&gt;
|Apache Licence Vesion 2&lt;br /&gt;
|-&lt;br /&gt;
|[https://ubuntu.com/ Ubuntu Linux]&lt;br /&gt;
|Interface with computing hardware. Ubuntu Linux server edition.&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ossp.org/pkg/lib/uuid/ UUID]&lt;br /&gt;
|command line interface (CLI) for the generation of DCE 1.1, ISO/IEC 11578:1996 and IETF RFC-4122 compliant Universally Unique Identifier (UUID).&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://unarchiver.c3.cx/commandline unar]&lt;br /&gt;
|The Unarchiver is an archive unpacker program&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://manpages.ubuntu.com/manpages/hardy/man1/zip.1.html Zip]&lt;br /&gt;
|Utility called by Bagit to create AIP package&lt;br /&gt;
|Info-Zip license: &amp;quot;Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Past releases==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.6.0]]''' (March 2017)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.5]]''' (June 2016)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.4.1]]''' (June 2015)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.4]]''' (May 2015)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.3.1]]''' (February 2015)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 1.0]]''' (September 2014)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.10-beta]]''' (April 2013)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.9-beta]]''' (Aug 2012)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.8-alpha]]''' (Jan 2012)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.7.1-alpha]]''' (June 2011)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.7-alpha]]''' (Feb 2011)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.6.2-alpha]]''' (November 2010)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.6-alpha]]''' (May 2010)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.5-alpha]]''' (November 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.4-alpha]]''' (October 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.3.5-alpha]]''' (September 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.3-alpha]]''' (June 2009) &lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.2-alpha]]''' (May 2009)&lt;br /&gt;
&lt;br /&gt;
'''[[Release 0.1-alpha]]''' (Feb 2009)&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=MediaWiki:Robots.txt&amp;diff=13288</id>
		<title>MediaWiki:Robots.txt</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=MediaWiki:Robots.txt&amp;diff=13288"/>
		<updated>2019-12-12T18:48:25Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Updating rendering&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; # &amp;lt;!-- Please do not remove the space at the start of this line, it breaks the rendering.  http://www.robotstxt.org/orig.html says spaces before comments are OK. --&amp;gt;&amp;lt;source lang=&amp;quot;robots&amp;quot;&amp;gt;&lt;br /&gt;
# Trialing an Archivematica Wiki robots.txt&lt;br /&gt;
# Edit via: https://wiki.archivematica.org/index.php?title=MediaWiki:Robots.txt&amp;amp;action=edit&lt;br /&gt;
# Test this works by looking up Google: site:https://wiki.archivematica.org/&lt;br /&gt;
Disallow: /Meeting_2015*&lt;br /&gt;
Disallow: /Meeting_2014*&lt;br /&gt;
Disallow: /Meeting_2013*&lt;br /&gt;
Disallow: /Meeting_2012*&lt;br /&gt;
Disallow: /Meeting_2011*&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=MediaWiki:Robots.txt&amp;diff=13287</id>
		<title>MediaWiki:Robots.txt</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=MediaWiki:Robots.txt&amp;diff=13287"/>
		<updated>2019-12-12T18:46:53Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Creating a robots.txt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Trialing an Archivematica Wiki robots.txt&lt;br /&gt;
# Edit via: https://wiki.archivematica.org/index.php?title=MediaWiki:Robots.txt&amp;amp;action=edit&lt;br /&gt;
# Test this works by looking up Google: site:https://wiki.archivematica.org/&lt;br /&gt;
Disallow: /Meeting_2015*&lt;br /&gt;
Disallow: /Meeting_2014*&lt;br /&gt;
Disallow: /Meeting_2013*&lt;br /&gt;
Disallow: /Meeting_2012*&lt;br /&gt;
Disallow: /Meeting_2011*&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Release_Process&amp;diff=13146</id>
		<title>Release Process</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Release_Process&amp;diff=13146"/>
		<updated>2019-08-04T21:43:33Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: /* Release Day Checklist */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an outline/checklist of the process to create Archivematica &amp;amp; Storage service releases.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
# Merge new features&lt;br /&gt;
# Test new features&lt;br /&gt;
# [[#Update PRONOM]]&lt;br /&gt;
# Write documentation&lt;br /&gt;
# Update dependencies&lt;br /&gt;
# Update version&lt;br /&gt;
# [[#Build deb/rpm packages]]&lt;br /&gt;
# Test packages for new installs and upgrades&lt;br /&gt;
# [[#Tag Release]]&lt;br /&gt;
# Update ansible roles&lt;br /&gt;
# Announce release&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
&lt;br /&gt;
'''Needs to be improved!'''&lt;br /&gt;
&lt;br /&gt;
* Determine code freeze / call for translations process&lt;br /&gt;
* Describe processes: push and pull - and when it needs to happen&lt;br /&gt;
* We made a choice on how we're using Transifex to keep things simple: only one branch at a time pushed to Transifex. E.g. once SS 0.10.0 is released we have to decide if:&lt;br /&gt;
*# We move Transifex to stable/0.10.x for a while so we can work on a minor release with translation fixes (e.g. 0.10.1), or&lt;br /&gt;
*# We move to qa/0.11.x which would only make possible to bring new translations to SS 0.11.0.&lt;br /&gt;
* Affected repositories&lt;br /&gt;
** archivematica-storage-service&lt;br /&gt;
** archivematica-workflow&lt;br /&gt;
** archivematica-dashboard&lt;br /&gt;
*** Includes archivematica-fpr-admin&lt;br /&gt;
*** Includes appraisal-tab&lt;br /&gt;
&lt;br /&gt;
== Update PRONOM ==&lt;br /&gt;
&lt;br /&gt;
PRONOM needs to be updated in our file identification tools, FIDO &amp;amp; Siegfried, as well as in the FPR.&lt;br /&gt;
&lt;br /&gt;
=== Update FIDO ===&lt;br /&gt;
&lt;br /&gt;
The FPR update currently use FIDO as a source for new PRONOM, since it is formatted nicer than PRONOM offers, so we depend on FIDO having updated their PRONOM.  If that has not happened, we can generate a new formats-v##.xml by updating signatures manually. Artefactual can also update PRONOM and submit a PR to FIDO.&lt;br /&gt;
&lt;br /&gt;
# Checkout fido from https://github.com/openpreserve/fido&lt;br /&gt;
# Update signatures&lt;br /&gt;
#* Run &amp;lt;code&amp;gt;python2 -m fido.update_signatures&amp;lt;/code&amp;gt; from the fido repository root&lt;br /&gt;
# Add:&lt;br /&gt;
#* New signature file &amp;lt;code&amp;gt;fido/conf/DROID_SignatureFile-v##.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
#* New formats file &amp;lt;code&amp;gt;fido/conf/formats-v##.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
#* New PRONOM zip file &amp;lt;code&amp;gt;fido/conf/pronom-xml-v##.zip&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Updated &amp;lt;code&amp;gt;fido/conf/versions.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
# Remove:&lt;br /&gt;
#* Old signature file&lt;br /&gt;
#* Old formats file&lt;br /&gt;
#* Old PRONOM zip file&lt;br /&gt;
# Update the container signatures (download here: https://www.nationalarchives.gov.uk/aboutapps/pronom/droid-signature-files.htm)&lt;br /&gt;
#* See this pull request submitted to update to PRONOM 90: https://github.com/openpreserve/fido/pull/110&lt;br /&gt;
# Update &amp;lt;code&amp;gt;fido/fido.py&amp;lt;/code&amp;gt; to point to the new format_files&lt;br /&gt;
# Create pull request. &lt;br /&gt;
# Release new version of FIDO. Make sure to update __init__.py AND the versions XML with a new version before creating a release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remember to package FIDO and Siegfried in Archivematica! See next step below.&lt;br /&gt;
&lt;br /&gt;
=== Package FIDO ===&lt;br /&gt;
&lt;br /&gt;
FIDO is packaged via [http://pypi.org/ PyPi] under opf-fido. The Makefile includes a `make package` command that will do the update.&lt;br /&gt;
&lt;br /&gt;
MCPClient's base.txt [https://github.com/artefactual/archivematica/blob/qa/1.x/src/MCPClient/requirements/base.txt] will need to be updated with the latest version.&lt;br /&gt;
&lt;br /&gt;
=== Package Siegfried ===&lt;br /&gt;
&lt;br /&gt;
First, clone the [https://github.com/artefactual-labs/am-packbuild/  am-packbuild] repo. Update the Makefiles available at &amp;lt;code&amp;gt;rpm/siegfried/Makefile&amp;lt;/code&amp;gt;, and  &amp;lt;code&amp;gt;deb/siegfried/Makefile&amp;lt;/code&amp;gt; , and run &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; in each directory to build the packages.&lt;br /&gt;
&lt;br /&gt;
=== Update FPR ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;text-alert&amp;quot;&amp;gt;&lt;br /&gt;
* In https://github.com/artefactual/archivematica-fpr-admin/pull/51, the devtools used here to generate the migration were included in archivematica-fpr-admin as django-admin management tools.&lt;br /&gt;
* At the end of the process: '''remember''' to remove &amp;quot;pk&amp;quot;s from the final migration fixture! E.g. see PR #55&lt;br /&gt;
* Examples&lt;br /&gt;
** PRONOM 92:&lt;br /&gt;
*** https://github.com/artefactual/archivematica-fpr-admin/pull/63&lt;br /&gt;
*** ???&lt;br /&gt;
** PRONOM 90:&lt;br /&gt;
*** https://github.com/artefactual/archivematica-fpr-admin/pull/51&lt;br /&gt;
*** https://github.com/artefactual/archivematica-fpr-admin/pull/55&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This process is currently more convoluted than it needs to be, and should be simplified.&lt;br /&gt;
&lt;br /&gt;
This depends on FIDO having updated their PRONOM files. See [[#Update FIDO]]&lt;br /&gt;
&lt;br /&gt;
# Generate a JSON with the current version of the FPR (for use later)&lt;br /&gt;
#* &amp;lt;code&amp;gt;python testproject/manage.py dumpdata fpr &amp;gt; fpr-current.json&amp;lt;/code&amp;gt;&lt;br /&gt;
# Generate a blank data migration&lt;br /&gt;
#* E.g. &amp;lt;code&amp;gt;python testproject/manage.py makemigrations --empty --name pronom_89 fpr&amp;lt;/code&amp;gt;&lt;br /&gt;
# Generate the FPR migration body.  This also updates the local database's FPR with the new PRONOM IDs&lt;br /&gt;
#* E.g. &amp;lt;code&amp;gt;python testproject/manage.py import_pronom_ids path/to/fido/fido/conf/formats-v89.xml --output-filename pronom89.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Copy the output into the blank migration above the Migration class&lt;br /&gt;
# Add the below RunPython operation into the Migration class, in the operations list&lt;br /&gt;
#* &amp;lt;code&amp;gt;migrations.RunPython(data_migration),&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Due to a [https://projects.artefactual.com/issues/10466#change-46673 bug], fix the imports&amp;lt;/s&amp;gt;&lt;br /&gt;
#* &amp;lt;s&amp;gt;Remove the &amp;lt;code&amp;gt;apps.get_model&amp;lt;/code&amp;gt; lines&amp;lt;/s&amp;gt;&lt;br /&gt;
#* &amp;lt;s&amp;gt;Import the models directly with &amp;lt;code&amp;gt;from fpr.models import Format, FormatVersion, IDRule&amp;lt;/code&amp;gt;&amp;lt;/s&amp;gt;&lt;br /&gt;
# Commit&lt;br /&gt;
# Deploy on testing pipeline or locally&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
(Analysts) &lt;br /&gt;
# Update the new entries&lt;br /&gt;
#* '''Ask to edit ONLY entries added by the latest PRONOM update otherwise the fixture won't work properly'''&lt;br /&gt;
#* Move new formats to a more appropriate category&lt;br /&gt;
#* Create rules &amp;amp; commands&lt;br /&gt;
#* Test with data for new formats&lt;br /&gt;
(End Analysts) &lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
# Generate a JSON with the updated version of the FPR on the testing pipeline&lt;br /&gt;
#* &amp;lt;code&amp;gt;python testproject/manage.py dumpdata fpr &amp;gt; fpr-updated.json&amp;lt;/code&amp;gt;&lt;br /&gt;
# Get the updates as JSON&lt;br /&gt;
#* E.g. &amp;lt;code&amp;gt;python testproject/manage.py get_fpr_changes fpr-current.json fpr-updated.json fpr/migrations/pronom_89.json&amp;lt;/code&amp;gt;&lt;br /&gt;
# Update the migration to load the JSON updates&lt;br /&gt;
#* Replace the contents of the data migration function with&lt;br /&gt;
#** &amp;lt;code&amp;gt;fixture_file = os.path.join(os.path.dirname(__file__), 'pronom_89.json')&amp;lt;/code&amp;gt;&lt;br /&gt;
#** &amp;lt;code&amp;gt;call_command('loaddata', fixture_file, app_label='fpr')&amp;lt;/code&amp;gt;&lt;br /&gt;
# Review JSON -- some IDs with multipleformats are being imported and will have to be manually reviewed until bug is identified/corrected.&lt;br /&gt;
#* Remove the direct imports from the bug&lt;br /&gt;
#* '''Remove the pk's from the entries in the JSON document.'''&lt;br /&gt;
#* Improvement Note: Because this is using loaddata, this will have problems if the FPR models are changed. A possible solution is to update get-fpr-changes to generate a migration instead of JSON&lt;br /&gt;
# Commit&lt;br /&gt;
# Merge&lt;br /&gt;
# Make new FPR release. Don't forget to update fpr/__init__.py! Then tag the release (e.g. `v.1.7.9`) and push the latest tag.&lt;br /&gt;
# Update AM's dashboard base.txt [https://github.com/artefactual/archivematica/blob/qa/1.x/src/dashboard/src/requirements/base.txt]&lt;br /&gt;
&lt;br /&gt;
== Update dependencies ==&lt;br /&gt;
&lt;br /&gt;
=== Python Packages ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/artefactual-labs/mets-reader-writer metsrw] and [https://github.com/artefactual-labs/agentarchives agentarchives] both have Makefiles that handle most of the packaging&lt;br /&gt;
&lt;br /&gt;
# Check for open PRs, merge as necessary&lt;br /&gt;
# Update &amp;lt;code&amp;gt;setup.py&amp;lt;/code&amp;gt; with the new version, create a pull request, code review, [[Merging | merge]].&lt;br /&gt;
# Tag new release, push tag&lt;br /&gt;
#* &amp;lt;code&amp;gt;git push --tags&amp;lt;/code&amp;gt;&lt;br /&gt;
# Run &amp;lt;code&amp;gt;make package&amp;lt;/code&amp;gt;&lt;br /&gt;
#* This will build the package and upload it to PyPI. It will prompt for your PyPI username and password for the upload&lt;br /&gt;
#* The Makefile was created from instructions at https://packaging.python.org/distributing/&lt;br /&gt;
# &amp;lt;code&amp;gt;make clean&amp;lt;/code&amp;gt; will delete packaging related files&lt;br /&gt;
&lt;br /&gt;
== Update version ==&lt;br /&gt;
&lt;br /&gt;
# Update PREMIS agent to Archivematica-X.X.X&lt;br /&gt;
# Update Dashboard-Administration-Version to X.X.X&lt;br /&gt;
# Update Storage services-Admin-Version to X.X.X&lt;br /&gt;
&lt;br /&gt;
== Build deb/rpm packages ==&lt;br /&gt;
&lt;br /&gt;
The am-packbuild repository has all the code related to building packages, except the building gpg keys. The steps to follow in order to build production production packages are as follow&lt;br /&gt;
&lt;br /&gt;
=== Debian packages ===&lt;br /&gt;
&lt;br /&gt;
# Clone the [https://github.com/artefactual-labs/am-packbuild am-packbuild] repo. Latest work is available in master&lt;br /&gt;
# Put your gpg private key into &amp;lt;code&amp;gt;debs/GPG-KEYS-REPOS&amp;lt;/code&amp;gt;. That's the place the Dockerfile looks for it when building the environment.&lt;br /&gt;
# Update the makefile at &amp;lt;code&amp;gt;debs/archivematica/Makefile&amp;lt;/code&amp;gt; in order to reflect version/keys you want to use.&lt;br /&gt;
# Run &amp;lt;make&amp;gt;, and the packages will be available in the &amp;lt;code&amp;gt;build&amp;lt;/code&amp;gt; once the building finishes.&lt;br /&gt;
# Upload packages to public debian repository&lt;br /&gt;
&lt;br /&gt;
=== Debian reposities ===&lt;br /&gt;
&lt;br /&gt;
There are two debian repositories, one for archivematica packages, and one for dependencies. The procedure in order to create new ones, or upload packages to them, is the same:&lt;br /&gt;
&lt;br /&gt;
#* Create folder for repo, and configuration file:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mkdir -p /path/to/repos/repo/conf&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /path/to/repos/repo/conf/distributions &amp;lt;&amp;lt; EOF&lt;br /&gt;
&lt;br /&gt;
Codename: trusty&lt;br /&gt;
&lt;br /&gt;
Components: main&lt;br /&gt;
&lt;br /&gt;
Architectures: amd64 source&lt;br /&gt;
&lt;br /&gt;
SignWith: &amp;lt;short gpg keyid&amp;gt; &lt;br /&gt;
&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#* Go inside the repo, and import the packages previously uploaded with:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
cd /path/to/repos/repo/&lt;br /&gt;
&lt;br /&gt;
reprepro includedeb trusty /path/to/packages/*.deb&lt;br /&gt;
&lt;br /&gt;
reprepro includedsc trusty /path/to/packages/*.deb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The current official repo is at packages.archivematica.org&lt;br /&gt;
&lt;br /&gt;
=== RPM Packages ===&lt;br /&gt;
&lt;br /&gt;
# Package specs are available in [https://github.com/artefactual-labs/am-packbuild/tree/dev/packaging-1.6-docker/rpm am-packbuild/rpms]&lt;br /&gt;
# There are vars in the Makefiles for version/release , so update them when needed&lt;br /&gt;
# In order to build them, just go into the directory you want to build, and run “make”&lt;br /&gt;
&lt;br /&gt;
=== RPM Repositories ===&lt;br /&gt;
&lt;br /&gt;
Once the packages are built, upload them to packages.archivematica.org/&amp;lt;version&amp;gt;/centos&lt;br /&gt;
Sign the packages with rpm --addsign *.rpm (already signed packages will be skipped)&lt;br /&gt;
&lt;br /&gt;
Go inside that dir, and as user ohbot run:&lt;br /&gt;
&lt;br /&gt;
* ''rpm --addsign *.rpm'' (already signed packages will be skipped)&lt;br /&gt;
&lt;br /&gt;
* ''createrepo .'' (For packages other than archivematica , use  “centos-extras” repository)&lt;br /&gt;
&lt;br /&gt;
* ''gpg --detach-sign --armor repodata/repomd.xml'' &lt;br /&gt;
&lt;br /&gt;
The first gpg command signs the rpms, and the later signs the repository content.&lt;br /&gt;
&lt;br /&gt;
=== Development stage ===&lt;br /&gt;
&lt;br /&gt;
In the final stages of development, the repositories for the new releases are created, but packages are signed with a development key to avoid mistakes. Once the development stage finishes, all new packages need to be rebuild using the production keys.&lt;br /&gt;
&lt;br /&gt;
Development packages are built on each new commit to stable branches by Jenkins. Repositories are available at http://jenkins-ci.archivematica.org/repos/&lt;br /&gt;
&lt;br /&gt;
== Website ==&lt;br /&gt;
&lt;br /&gt;
'''Needs to be improved!'''&lt;br /&gt;
&lt;br /&gt;
==== Homepage ====&lt;br /&gt;
&lt;br /&gt;
* Make changes in archivematica-web.git&lt;br /&gt;
** Update links&lt;br /&gt;
** Add new doc repos&lt;br /&gt;
* Deploy&lt;br /&gt;
** Log in sites-pub as archivematica-web and run update-web.sh&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
&lt;br /&gt;
* Deploy&lt;br /&gt;
** Log in sites-pub as archivematica-web and run update-docs.sh&lt;br /&gt;
&lt;br /&gt;
==== Wiki ====&lt;br /&gt;
&lt;br /&gt;
* Release notes&lt;br /&gt;
* Installation notes&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
* Twitter&lt;br /&gt;
* Mailing list&lt;br /&gt;
* News section in artefactual.com&lt;br /&gt;
&lt;br /&gt;
== Update ansible roles ==&lt;br /&gt;
&lt;br /&gt;
Check that the deploy-pub vars files for archivematica are updated, and the ansible-ansiblematica-src and ansible-archivematica-pkg roles are able to deploy the new version&lt;br /&gt;
&lt;br /&gt;
== Tag Release ==&lt;br /&gt;
&lt;br /&gt;
# Add release tags to repositories&lt;br /&gt;
#* Archivematica&lt;br /&gt;
#* Storage Service&lt;br /&gt;
#* FPR-admin&lt;br /&gt;
#* appraisal tab&lt;br /&gt;
#* transfer browser&lt;br /&gt;
#* Others?&lt;br /&gt;
# Create stable/#.x branch&lt;br /&gt;
# Delete qa/#.x branch if necessary&lt;br /&gt;
&lt;br /&gt;
== Release Day Checklist == &lt;br /&gt;
&lt;br /&gt;
'''Step 0''': Operations Team checklist tasks are complete (as of September 2018, this is an internal Trello list).&lt;br /&gt;
*At this point, there should be a release candidate that has been tested. A release candidate always precedes a tagged release. If any new issues have been uncovered, a new release candidate should be made and tested before proceeding with the rest of the steps.&lt;br /&gt;
&lt;br /&gt;
'''Step 1''': Release Captain decides whether the current release candidate is ready to release&lt;br /&gt;
&lt;br /&gt;
* Look at all recently filed issues in GitHub -- is anything concerning / relevant for this release? Does anything need to be addressed? If an issue is uncovered that does need to be fixed, this restarts the checklist back to Step 0.&lt;br /&gt;
* Have automated tests passed?&lt;br /&gt;
&lt;br /&gt;
'''Step 2''': Release Captain creates a new tag for the release via gitolite (e.g. `v1.7.0` or `v0.11.0` for the Storage Service) or assigns someone else to do it.&lt;br /&gt;
&lt;br /&gt;
* Ensure you are adding the tag to the right commit! It should match the last commit of the final release candidate.&lt;br /&gt;
* You can create the tags from GitHub or from CLI: &amp;lt;code&amp;gt;git tag $VERSION $REVISION&amp;lt;/code&amp;gt;and &amp;lt;code&amp;gt;git push origin refs/tags/$VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
* Make sure that the version is valid,&lt;br /&gt;
** Valid values: v1.8.1, v1.8.1-rc.1&lt;br /&gt;
** Invalid values: 1.8.1, 1.8, 1.8.1-rc1, v1.8.1-rc1&lt;br /&gt;
&lt;br /&gt;
'''Step 3''': Sysadmin (for now; hopefully Jenkins for 1.8) builds new packages using the release tag.&lt;br /&gt;
&lt;br /&gt;
* See the internal wiki for steps.&lt;br /&gt;
&lt;br /&gt;
'''Step 4''': Sysadmin copies new packages to the proper repository (e.g., https://packages.archivematica.org/1.7.x/)&lt;br /&gt;
&lt;br /&gt;
* See the internal wiki for steps.&lt;br /&gt;
&lt;br /&gt;
'''Step 5''': Analyst updates the Archivematica documentation links in the install / upgrade section with the correct package names and locations (e.g. conf.py in docs repo)&lt;br /&gt;
&lt;br /&gt;
'''Step 6''': Sysadmin updates deploy-pub to use the new links.&lt;br /&gt;
&lt;br /&gt;
'''Step 7''': Developer updates archivematica-web (managed in Gitolite / Gitlab) to show the new release.&lt;br /&gt;
&lt;br /&gt;
* See the internal wiki for steps.&lt;br /&gt;
&lt;br /&gt;
'''Step 8''': Developer changes the default branches in GitHub and Gitolite and updates references in https://gist.github.com/qubot.&lt;br /&gt;
&lt;br /&gt;
'''Step 9''': Systems administrator updates am-packbuild and upgrades public and private demo sites.&lt;br /&gt;
&lt;br /&gt;
* See the internal wiki for steps.&lt;br /&gt;
&lt;br /&gt;
'''Step 10''': Developer, Ops, or Analyst, creates a release branch, and release, of [https://github.com/artefactual-labs/archivematica-acceptance-tests Archivematica Automated Acceptance tests] (AMAUAT) in-line with the Archivematica versioning, e.g. for Archivematica 1.10 release a 1.10 branch and [https://github.com/artefactual-labs/archivematica-acceptance-tests/releases release] of AMAUAT.&lt;br /&gt;
&lt;br /&gt;
'''Step 11''': Release Captain finalizes the [https://wiki.archivematica.org/Release_Notes release notes] and adds a link to them in the [https://github.com/artefactual/archivematica/releases GitHub release]. Make sure that the releases are marked as &amp;quot;published&amp;quot;.&lt;br /&gt;
* https://github.com/artefactual/archivematica/releases&lt;br /&gt;
* https://github.com/artefactual/archivematica-storage-service/releases&lt;br /&gt;
&lt;br /&gt;
'''Step 12''': Release Captain posts a notification to the [https://groups.google.com/forum/#!forum/archivematica Archivematica Google Group] and the News section of the Artefactual website.&lt;br /&gt;
&lt;br /&gt;
'''Step 13''': Release Captain closes all release-related issues in the Verified column in Waffle.&lt;br /&gt;
&lt;br /&gt;
'''Step 14''': All involved eat cake (for a major release) or cupcakes (for a minor release).&lt;br /&gt;
&lt;br /&gt;
[[Category:Process documentation]]&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Archivematica_API&amp;diff=12953</id>
		<title>Archivematica API</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Archivematica_API&amp;diff=12953"/>
		<updated>2019-04-07T16:58:12Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: /* Status */ add information about the status: COMPLETE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Development]] &amp;gt; Archivematica API&lt;br /&gt;
&lt;br /&gt;
Endpoints require authentication with a username and API key.  This can be submitted as GET parameters (eg &amp;lt;code&amp;gt;?username=demo&amp;amp;api_key=e6282adabed84e39ffe451f8bf6ff1a67c1fc9f2&amp;lt;/code&amp;gt;) or as a header (eg &amp;lt;code&amp;gt;Authorization: ApiKey demo:e6282adabed84e39ffe451f8bf6ff1a67c1fc9f2&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Endpoints return JSON.  If there's an error, they will return a 4xx or 5xx HTTP error code and a JSON body &amp;lt;code&amp;gt;{'error': True, 'message': 'message describing error'}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Transfer ==&lt;br /&gt;
&lt;br /&gt;
=== Start Transfer ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/start_transfer/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a transfer.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of new transfer&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Type of the new transfer. One of: standard, unzipped bag, zipped bag, dspace&lt;br /&gt;
** &amp;lt;code&amp;gt;accession&amp;lt;/code&amp;gt;: Accession number of new transfer&lt;br /&gt;
** &amp;lt;code&amp;gt;paths[]&amp;lt;/code&amp;gt;: List of base64-encoded &amp;quot;&amp;lt;location_uuid&amp;gt;:&amp;lt;relative_path&amp;gt;&amp;quot; to be copied into the new transfer. Location UUIDs should be associated with this pipeline, and relative path should be relative to the location (TODO confirm relative vs absolute path).  E.g. NWJiYWJjMTMtMTIyNy00MWE3LWIwY2QtZjJhYzM1MjkxZTdmOi92YWdyYW50L3NhbXBsZWRhdGEvQ1NWbWV0YWRhdGE= (decoded: 5bbabc13-1227-41a7-b0cd-f2ac35291e7f:/vagrant/sampledata/CSVmetadata)&lt;br /&gt;
** &amp;lt;code&amp;gt;row_ids[]&amp;lt;/code&amp;gt;: ID of the associated TransferMetadataSet for disk image ingest.  Can be provided as [&amp;quot;&amp;quot;]&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Copy successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Path the transfer was copied to on start?&lt;br /&gt;
&lt;br /&gt;
=== List Unapproved Transfers ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/unapproved&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns a list of transfers waiting for approval.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched unapproved transfers successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of dicts with keys:&lt;br /&gt;
*** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Transfer type. One of: standard, unzipped bag, zipped bag, dspace&lt;br /&gt;
*** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Directory the transfer is in currently&lt;br /&gt;
*** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the transfer&lt;br /&gt;
&lt;br /&gt;
=== Approve Transfer ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/approve&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Approve a transfer waiting to be started.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Type of the transfer to approved. One of: standard, unzipped bag, zipped bag, dspace.&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory for the transfer to approve&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the approved transfer&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/transfer/status/&amp;lt;transfer UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns the status of the transfer.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;: One of FAILED, REJECTED, USER_INPUT, COMPLETE or PROCESSING&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the transfer, e.g. &amp;quot;imgs&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: If status is COMPLETE, this field will exist with either the UUID of the SIP or 'BACKLOG'&lt;br /&gt;
** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory, e.g. &amp;quot;imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Full path to the transfer, e.g. &amp;quot;/var/archivematica/sharedDirectory/watchedDirectories/SIPCreation/completedTransfers/imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c/&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched status for &amp;lt;transfer UUID&amp;gt; successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: &amp;quot;transfer&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the transfer, e.g. &amp;quot;52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
'''Note:''' for consumers of this endpoint, it is possible for Archivematica to return a &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt; of &amp;lt;code&amp;gt;COMPLETE&amp;lt;/code&amp;gt; without a &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;. Consumers looking to use the UUID of the AIP that will be created following Ingest should therefore test for both a &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt; of &amp;lt;code&amp;gt;COMPLETE&amp;lt;/code&amp;gt; and the existence of &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt; that does not also equal &amp;lt;code&amp;gt;BACKLOG&amp;lt;/code&amp;gt; to ensure that they retrieve it. This might mean an additional call to the status endpoint while this data becomes available.&lt;br /&gt;
&lt;br /&gt;
=== Hide ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/&amp;lt;transfer UUID&amp;gt;/delete/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': DELETE&lt;br /&gt;
* Hide a transfer&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;removed&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== Completed ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/completed/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Return list of Transfers that are completed&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched completed transfers successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of UUIDs of completed Transfers&lt;br /&gt;
* Added in Archivematica 1.6&lt;br /&gt;
&lt;br /&gt;
=== Start Reingest ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/reingest&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a full reingest.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the AIP. The AIP should also be found at &amp;lt;code&amp;gt;%sharedDirectory%/tmp/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the AIP to reingest&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest_uuid&amp;lt;/code&amp;gt;: UUID of the reingested transfer&lt;br /&gt;
&lt;br /&gt;
== Ingest ==&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/ingest/status/&amp;lt;unit UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns the status of the SIP&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;: One of FAILED, REJECTED, USER_INPUT, COMPLETE or PROCESSING&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the SIP, e.g. &amp;quot;imgs&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory, e.g. &amp;quot;imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Full path to the transfer, e.g. &amp;quot;/var/archivematica/sharedDirectory/currentlyProcessing/imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c/&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched status for &amp;lt;SIP UUID&amp;gt; successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: &amp;quot;SIP&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the SIP, e.g. &amp;quot;52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Hide ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/&amp;lt;SIP UUID&amp;gt;/delete/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': DELETE&lt;br /&gt;
* Hide a SIP&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;removed&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== List SIPS Waiting for User Input ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/waiting&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns a list of SIPs waiting for user input.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched units successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of dicts with keys:&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_directory&amp;lt;/code&amp;gt;: Directory the SIP is in currently&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: UUID of the SIP&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_name&amp;lt;/code&amp;gt;: Name of the SIP&lt;br /&gt;
*** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffeecc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Improvement Note: Despite the URL, this currently returns both SIPs &amp;amp; transfers that are waiting for user input. A separate &amp;lt;code&amp;gt;/api/transfer/waiting&amp;lt;/code&amp;gt; should be added for transfers.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Completed ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/completed/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Return list of SIPs that are completed&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched completed ingests successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of UUIDs of completed SIPs&lt;br /&gt;
* Added in Archivematica 1.6&lt;br /&gt;
&lt;br /&gt;
=== Reingest ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/reingest&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a partial or metadata-only reingest.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the AIP. The AIP should also be found at &amp;lt;code&amp;gt;%sharedDirectory%/tmp/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the AIP to reingest&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest_uuid&amp;lt;/code&amp;gt;: UUID of the reingested SIP&lt;br /&gt;
&lt;br /&gt;
=== Copy Metadata ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/copy_metadata_files/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Add metadata files to a SIP.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: UUID of the SIP to put files in&lt;br /&gt;
** &amp;lt;code&amp;gt;source_paths[]&amp;lt;/code&amp;gt;: List of files to be copied, base64 encoded, in the format 'source_location_uuid:full_path'&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;: False&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Files added successfully.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
=== Levels of Description ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/administration/dips/atom/levels/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Returns a JSON-encoded set of the configured levels of description.&lt;br /&gt;
* ''Response'': JSON. List of AtoM Levels of description with key 'UUID' and value 'name of level of description'.&lt;br /&gt;
&lt;br /&gt;
=== Fetch Levels of Description ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/administration/dips/atom/fetch_levels/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Fetch all levels of description from an AtoM database, replacing any previously existing.&lt;br /&gt;
* '''Response''': JSON. Updated list of AtoM Levels of description with key 'UUID' and value 'name of level of description'.&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== Path Metadata ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/filesystem/metadata/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET, POST&lt;br /&gt;
* Fetch (GET) or update (POST) metadata for a path (currently only level of description).&lt;br /&gt;
* '''Parameters''': Query string parameters (GET) or JSON body (POST)&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Arranged path to get metadata on&lt;br /&gt;
* '''GET response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;level_of_description&amp;lt;/code&amp;gt;: Level of description&lt;br /&gt;
* '''POST response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;success&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== Processing Configuration ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/processing-configuration/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Return processing configuration with &amp;lt;name&amp;gt;&lt;br /&gt;
* '''Response''': The processing config file as a stream.&lt;br /&gt;
* '''Content type''': text/xml&lt;br /&gt;
&lt;br /&gt;
== Beta endpoints ==&lt;br /&gt;
&lt;br /&gt;
API endpoints which are still in-flux and that could potentially change. &lt;br /&gt;
&lt;br /&gt;
=== Package ===&lt;br /&gt;
&lt;br /&gt;
Provides additional functionality over the start and approve transfer endpoints, for example, wrapping both those steps into a single call.&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2beta/package&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a new transfer type.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** Mandatory&lt;br /&gt;
*** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Transfer name&lt;br /&gt;
*** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Path relative, or absolute to a storage service transfer source&lt;br /&gt;
**Optional&lt;br /&gt;
*** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Transfer type, e.g. standard, dataverse, zipped bag, default: &amp;lt;code&amp;gt;standard&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;processing_config&amp;lt;/code&amp;gt;: [https://www.archivematica.org/en/docs/latest/user-manual/administer/dashboard-admin/#processing-configuration Processing configuration], e.g. default, automated,  default: &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;accession&amp;lt;/code&amp;gt;: Accession ID&lt;br /&gt;
*** &amp;lt;code&amp;gt;access_system_id&amp;lt;/code&amp;gt;: Access system ID (see [https://www.archivematica.org/en/docs/latest/user-manual/access/access docs])&lt;br /&gt;
*** &amp;lt;code&amp;gt;metadata_set_id&amp;lt;/code&amp;gt;: Used to link to metadata sets added via the user interface. It's safe to ignore this for now since metadata can't be associated to transfer via the API at the moment.&lt;br /&gt;
*** &amp;lt;code&amp;gt;auto_approve&amp;lt;/code&amp;gt;: Boolean &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt; to set the transfer to auto-approve, default: &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;: Transfer UUID ('''Note:''' as the package endpoint allows the caller to interact with Archivematica asynchronously it doesn't guarantee a transfer has started. The caller must use the UUID in the response to verify it has begun or any errors that were encountered initiating one.)&lt;br /&gt;
'''Examples:'''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Only a subset of these options might be needed for most use-cases. A fundamental difference between the &amp;lt;code&amp;gt;package&amp;lt;/code&amp;gt; endpoint and others from which a transfer can be initiated is that a storage service transfer location UUID isnt always required. In some cases that might still be ideal.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
''Starting a transfer using an absolute path:''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   curl -v POST \&lt;br /&gt;
     -H &amp;quot;Authorization: ApiKey test:test&amp;quot; \&lt;br /&gt;
     -H &amp;quot;Content-Type: application/json&amp;quot; \&lt;br /&gt;
     -d &amp;quot;{\&lt;br /&gt;
         \&amp;quot;path\&amp;quot;: \&amp;quot;$(echo -n '/home/archivematica/archivematica-sampledata/SampleTransfers/DemoTransfer' | base64 -w 0)\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;name\&amp;quot;: \&amp;quot;demo_transfer_absolute\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;processing_config\&amp;quot;: \&amp;quot;automated\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;type\&amp;quot;: \&amp;quot;standard\&amp;quot; \&lt;br /&gt;
         }&amp;quot; \&lt;br /&gt;
    &amp;quot;http://&amp;lt;archivematica-uri&amp;gt;/api/v2beta/package&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Starting a transfer using an relative path with a transfer source UUID:''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   curl -v POST \&lt;br /&gt;
     -H &amp;quot;Authorization: ApiKey test:test&amp;quot; \&lt;br /&gt;
     -H &amp;quot;Content-Type: application/json&amp;quot; \&lt;br /&gt;
     -d &amp;quot;{\&lt;br /&gt;
         \&amp;quot;path\&amp;quot;: \&amp;quot;$(echo -n 'd1184f7f-d755-4c8d-831a-a3793b88f760:/archivematica/archivematica-sampledata/SampleTransfers/DemoTransfer' | base64 -w 0)\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;name\&amp;quot;: \&amp;quot;demo_transfer_relative\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;processing_config\&amp;quot;: \&amp;quot;automated\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;type\&amp;quot;: \&amp;quot;standard\&amp;quot; \&lt;br /&gt;
         }&amp;quot; \&lt;br /&gt;
    &amp;quot;http://&amp;lt;archivematica-uri&amp;gt;/api/v2beta/package&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Development documentation]]&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=AIP_pointer_file&amp;diff=12949</id>
		<title>AIP pointer file</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=AIP_pointer_file&amp;diff=12949"/>
		<updated>2019-04-04T19:40:43Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Added information about purpose&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pointer files have been used to help provide sustainable access to compressed AIPs since Archivematica 1.0. [https://groups.google.com/d/msg/archivematica/VPQGd4s7hI8/x3WFdqO9AQAJ [1]]. The documentation about them, below, is currently in progress.&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
Pointer files can help users ascertain information about their AIPs without needing to consult the Storage Service API or database.&lt;br /&gt;
&lt;br /&gt;
As an example, pointer files include:&lt;br /&gt;
&lt;br /&gt;
* Information about compression, currently used internally by Archivematica itself for Re-ingest or unpacking for delivery via the API&lt;br /&gt;
* Information about encryption so that AIPs can be recovered if encrypted.&lt;br /&gt;
* Information about where the AIP is stored relative to the storage service. NB. there are some variations, see below.&lt;br /&gt;
&lt;br /&gt;
=== Describing the location of the AIP ===&lt;br /&gt;
&lt;br /&gt;
Information about the location of an AIP is stored in a &amp;lt;pre&amp;gt;mets:filesec&amp;lt;/pre&amp;gt; inside the pointer file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;mets:fileSec&amp;gt;&lt;br /&gt;
    &amp;lt;mets:fileGrp USE=&amp;quot;Archival Information Package&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;mets:file ID=&amp;quot;rs_s3-cc53bf2e-0eb9-4d00-a752-8f07c2886fe9&amp;quot; &lt;br /&gt;
                 GROUPID=&amp;quot;Group-cc53bf2e-0eb9-4d00-a752-8f07c2886fe9&amp;quot; &lt;br /&gt;
                 ADMID=&amp;quot;amdSec_698926&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;mets:FLocat xlink:href=&amp;quot;/var/archivematica/storage_service/aipstore/cc53/.../ex1-cc53bf2e-0eb9-4d00-a752-8f07c2886fe9.7z&amp;quot; &lt;br /&gt;
                     LOCTYPE=&amp;quot;OTHER&amp;quot; OTHERLOCTYPE=&amp;quot;SYSTEM&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;mets:transformFile TRANSFORMTYPE=&amp;quot;decompression&amp;quot; TRANSFORMORDER=&amp;quot;1&amp;quot; TRANSFORMALGORITHM=&amp;quot;bzip2&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/mets:file&amp;gt;&lt;br /&gt;
    &amp;lt;/mets:fileGrp&amp;gt;&lt;br /&gt;
  &amp;lt;/mets:fileSec&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In some storage options that can be configured via the storage service, such as LOCKSS you will see information about the remote location of the AIP:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;mets:fileSec&amp;gt;&lt;br /&gt;
    &amp;lt;mets:fileGrp USE=&amp;quot;Archival Information Package&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;mets:file ID=&amp;quot;FLocatTest-e0ff9a0e-a7f5-4bee-b9c2-7e2321dde7a6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;mets:FLocat LOCTYPE=&amp;quot;URL&amp;quot; xlink:href=&amp;quot;http://lockss1.example.org:8083/ServeContent?url=http://archivematicastorage.example.com/lockssomatic/FLocatTest-e0ff9a0e-a7f5-4bee-b9c2-7e2321dde7a6.7z&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;mets:transformFile TRANSFORMALGORITHM=&amp;quot;bzip2&amp;quot; TRANSFORMORDER=&amp;quot;1&amp;quot; TRANSFORMTYPE=&amp;quot;decompression&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/mets:file&amp;gt;&lt;br /&gt;
    &amp;lt;/mets:fileGrp&amp;gt;&lt;br /&gt;
  &amp;lt;/mets:fileSec&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Not all storage options will show the information about the remote location. Either this information isn't as easy to replay to the user, or it is functionality that was beyond the scope of development of a storage adapter at the time. S3 is a current example where the user would see the path as it is shown above: &amp;lt;pre&amp;gt;/var/archivematica/storage_service/aipstore/cc53/.../ex1-cc53bf2e-0eb9-4d00-a752-8f07c2886fe9.7z&amp;lt;/pre&amp;gt; and they would need to ascertain for themselves that the location was relative to the S3 location created for use as an package store online. &lt;br /&gt;
&lt;br /&gt;
== Accessing a pointer file == &lt;br /&gt;
&lt;br /&gt;
Accessing pointer files inside Archivematica can be done by navigating the Dashboard to '''Archival storage''' finding a suitable AIP, e.g. at time of writing a compressed AIP, and under '''Pointer file''' clicking '''View'''. Archivematica will make a call to the Storage Service API to return the file for that AIP. More information can be found about this in the Archivematica documentation under [https://www.archivematica.org/en/docs/archivematica-1.9/user-manual/archival-storage/archival-storage/#storing-an-aip Storing an AIP].&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.archivematica.org/Storage_Service_API#Get_pointer_file Storage Service API reference to return a Pointer File]&lt;br /&gt;
&lt;br /&gt;
== Developer notes ==&lt;br /&gt;
&lt;br /&gt;
=== Location of the pointer file inside Storage Service ===&lt;br /&gt;
&lt;br /&gt;
Pointer files are stored in the Storage Service directories, for example: &lt;br /&gt;
&lt;br /&gt;
  /var/archivematica/storage_service/d5c3/3360/7b92/4a2f/9002/32f5/a143/daaf/pointer.d5c33360-7b92-4a2f-9002-32f5a143daaf.xml&lt;br /&gt;
&lt;br /&gt;
You can see where they are stored looking up the Storage Service database:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
select locations_location.uuid, &lt;br /&gt;
       locations_location.relative_path, &lt;br /&gt;
	   locations_location.description, &lt;br /&gt;
       locations_location.purpose&lt;br /&gt;
from locations_location&lt;br /&gt;
inner join locations_package &lt;br /&gt;
on locations_location.uuid = &lt;br /&gt;
   locations_package.pointer_file_location_id&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional references ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.archivematica.org/LOCKSS_Integration LOCKSS integration]&lt;br /&gt;
&lt;br /&gt;
== Sample Pointer Files ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.archivematica.org/Dataset_preservation#Sample_pointer.xml_file Sample XML Pointer File]&lt;br /&gt;
* [https://wiki.archivematica.org/LOCKSS_Integration#Sample_pointer_files LOCKSS Integration Pointer File]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://groups.google.com/d/msg/archivematica/VPQGd4s7hI8/x3WFdqO9AQAJ Justin Simpson on the structure and purpose of pointer files at Google Groups]&lt;br /&gt;
* [https://projects.artefactual.com/issues/5159 Feature #5159 The original tranche of work resulting in the implementation of pointer files]&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Archivematica_API&amp;diff=12944</id>
		<title>Archivematica API</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Archivematica_API&amp;diff=12944"/>
		<updated>2019-03-24T23:10:46Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: /* Package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Development]] &amp;gt; Archivematica API&lt;br /&gt;
&lt;br /&gt;
Endpoints require authentication with a username and API key.  This can be submitted as GET parameters (eg &amp;lt;code&amp;gt;?username=demo&amp;amp;api_key=e6282adabed84e39ffe451f8bf6ff1a67c1fc9f2&amp;lt;/code&amp;gt;) or as a header (eg &amp;lt;code&amp;gt;Authorization: ApiKey demo:e6282adabed84e39ffe451f8bf6ff1a67c1fc9f2&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Endpoints return JSON.  If there's an error, they will return a 4xx or 5xx HTTP error code and a JSON body &amp;lt;code&amp;gt;{'error': True, 'message': 'message describing error'}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Transfer ==&lt;br /&gt;
&lt;br /&gt;
=== Start Transfer ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/start_transfer/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a transfer.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of new transfer&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Type of the new transfer. One of: standard, unzipped bag, zipped bag, dspace&lt;br /&gt;
** &amp;lt;code&amp;gt;accession&amp;lt;/code&amp;gt;: Accession number of new transfer&lt;br /&gt;
** &amp;lt;code&amp;gt;paths[]&amp;lt;/code&amp;gt;: List of base64-encoded &amp;quot;&amp;lt;location_uuid&amp;gt;:&amp;lt;relative_path&amp;gt;&amp;quot; to be copied into the new transfer. Location UUIDs should be associated with this pipeline, and relative path should be relative to the location (TODO confirm relative vs absolute path).  E.g. NWJiYWJjMTMtMTIyNy00MWE3LWIwY2QtZjJhYzM1MjkxZTdmOi92YWdyYW50L3NhbXBsZWRhdGEvQ1NWbWV0YWRhdGE= (decoded: 5bbabc13-1227-41a7-b0cd-f2ac35291e7f:/vagrant/sampledata/CSVmetadata)&lt;br /&gt;
** &amp;lt;code&amp;gt;row_ids[]&amp;lt;/code&amp;gt;: ID of the associated TransferMetadataSet for disk image ingest.  Can be provided as [&amp;quot;&amp;quot;]&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Copy successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Path the transfer was copied to on start?&lt;br /&gt;
&lt;br /&gt;
=== List Unapproved Transfers ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/unapproved&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns a list of transfers waiting for approval.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched unapproved transfers successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of dicts with keys:&lt;br /&gt;
*** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Transfer type. One of: standard, unzipped bag, zipped bag, dspace&lt;br /&gt;
*** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Directory the transfer is in currently&lt;br /&gt;
*** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the transfer&lt;br /&gt;
&lt;br /&gt;
=== Approve Transfer ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/approve&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Approve a transfer waiting to be started.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Type of the transfer to approved. One of: standard, unzipped bag, zipped bag, dspace.&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory for the transfer to approve&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the approved transfer&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/transfer/status/&amp;lt;transfer UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns the status of the transfer.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;: One of FAILED, REJECTED, USER_INPUT, COMPLETE or PROCESSING&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the transfer, e.g. &amp;quot;imgs&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: If status is COMPLETE, this field will exist with either the UUID of the SIP or 'BACKLOG'&lt;br /&gt;
** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory, e.g. &amp;quot;imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Full path to the transfer, e.g. &amp;quot;/var/archivematica/sharedDirectory/watchedDirectories/SIPCreation/completedTransfers/imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c/&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched status for &amp;lt;transfer UUID&amp;gt; successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: &amp;quot;transfer&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the transfer, e.g. &amp;quot;52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Hide ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/&amp;lt;transfer UUID&amp;gt;/delete/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': DELETE&lt;br /&gt;
* Hide a transfer&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;removed&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== Completed ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/completed/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Return list of Transfers that are completed&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched completed transfers successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of UUIDs of completed Transfers&lt;br /&gt;
* Added in Archivematica 1.6&lt;br /&gt;
&lt;br /&gt;
=== Start Reingest ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/reingest&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a full reingest.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the AIP. The AIP should also be found at &amp;lt;code&amp;gt;%sharedDirectory%/tmp/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the AIP to reingest&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest_uuid&amp;lt;/code&amp;gt;: UUID of the reingested transfer&lt;br /&gt;
&lt;br /&gt;
== Ingest ==&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/ingest/status/&amp;lt;unit UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns the status of the SIP&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;: One of FAILED, REJECTED, USER_INPUT, COMPLETE or PROCESSING&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the SIP, e.g. &amp;quot;imgs&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory, e.g. &amp;quot;imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Full path to the transfer, e.g. &amp;quot;/var/archivematica/sharedDirectory/currentlyProcessing/imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c/&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched status for &amp;lt;SIP UUID&amp;gt; successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: &amp;quot;SIP&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the SIP, e.g. &amp;quot;52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Hide ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/&amp;lt;SIP UUID&amp;gt;/delete/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': DELETE&lt;br /&gt;
* Hide a SIP&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;removed&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== List SIPS Waiting for User Input ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/waiting&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns a list of SIPs waiting for user input.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched units successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of dicts with keys:&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_directory&amp;lt;/code&amp;gt;: Directory the SIP is in currently&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: UUID of the SIP&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_name&amp;lt;/code&amp;gt;: Name of the SIP&lt;br /&gt;
*** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffeecc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Improvement Note: Despite the URL, this currently returns both SIPs &amp;amp; transfers that are waiting for user input. A separate &amp;lt;code&amp;gt;/api/transfer/waiting&amp;lt;/code&amp;gt; should be added for transfers.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Completed ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/completed/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Return list of SIPs that are completed&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched completed ingests successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of UUIDs of completed SIPs&lt;br /&gt;
* Added in Archivematica 1.6&lt;br /&gt;
&lt;br /&gt;
=== Reingest ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/reingest&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a partial or metadata-only reingest.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the AIP. The AIP should also be found at &amp;lt;code&amp;gt;%sharedDirectory%/tmp/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the AIP to reingest&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest_uuid&amp;lt;/code&amp;gt;: UUID of the reingested SIP&lt;br /&gt;
&lt;br /&gt;
=== Copy Metadata ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/copy_metadata_files/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Add metadata files to a SIP.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: UUID of the SIP to put files in&lt;br /&gt;
** &amp;lt;code&amp;gt;source_paths[]&amp;lt;/code&amp;gt;: List of files to be copied, base64 encoded, in the format 'source_location_uuid:full_path'&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;: False&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Files added successfully.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
=== Levels of Description ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/administration/dips/atom/levels/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Returns a JSON-encoded set of the configured levels of description.&lt;br /&gt;
* ''Response'': JSON. List of AtoM Levels of description with key 'UUID' and value 'name of level of description'.&lt;br /&gt;
&lt;br /&gt;
=== Fetch Levels of Description ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/administration/dips/atom/fetch_levels/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Fetch all levels of description from an AtoM database, replacing any previously existing.&lt;br /&gt;
* '''Response''': JSON. Updated list of AtoM Levels of description with key 'UUID' and value 'name of level of description'.&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== Path Metadata ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/filesystem/metadata/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET, POST&lt;br /&gt;
* Fetch (GET) or update (POST) metadata for a path (currently only level of description).&lt;br /&gt;
* '''Parameters''': Query string parameters (GET) or JSON body (POST)&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Arranged path to get metadata on&lt;br /&gt;
* '''GET response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;level_of_description&amp;lt;/code&amp;gt;: Level of description&lt;br /&gt;
* '''POST response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;success&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== Processing Configuration ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/processing-configuration/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Return processing configuration with &amp;lt;name&amp;gt;&lt;br /&gt;
* '''Response''': The processing config file as a stream.&lt;br /&gt;
* '''Content type''': text/xml&lt;br /&gt;
&lt;br /&gt;
== Beta endpoints ==&lt;br /&gt;
&lt;br /&gt;
API endpoints which are still in-flux and that could potentially change. &lt;br /&gt;
&lt;br /&gt;
=== Package ===&lt;br /&gt;
&lt;br /&gt;
Provides additional functionality over the start and approve transfer endpoints, for example, wrapping both those steps into a single call.&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2beta/package&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a new transfer type.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** Mandatory&lt;br /&gt;
*** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Transfer name&lt;br /&gt;
*** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Path relative, or absolute to a storage service transfer source&lt;br /&gt;
**Optional&lt;br /&gt;
*** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Transfer type, e.g. standard, dataverse, zipped bag, default: &amp;lt;code&amp;gt;standard&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;processing_config&amp;lt;/code&amp;gt;: [https://www.archivematica.org/en/docs/latest/user-manual/administer/dashboard-admin/#processing-configuration Processing configuration], e.g. default, automated,  default: &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;accession&amp;lt;/code&amp;gt;: Accession ID&lt;br /&gt;
*** &amp;lt;code&amp;gt;access_system_id&amp;lt;/code&amp;gt;: Access system ID (see [https://www.archivematica.org/en/docs/latest/user-manual/access/access docs])&lt;br /&gt;
*** &amp;lt;code&amp;gt;metadata_set_id&amp;lt;/code&amp;gt;: Used to link to metadata sets added via the user interface. It's safe to ignore this for now since metadata can't be associated to transfer via the API at the moment.&lt;br /&gt;
*** &amp;lt;code&amp;gt;auto_approve&amp;lt;/code&amp;gt;: Boolean &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt; to set the transfer to auto-approve, default: &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;: Transfer UUID ('''Note:''' as the package endpoint allows the caller to interact with Archivematica asynchronously it doesn't guarantee a transfer has started. The caller must use the UUID in the response to verify it has begun or any errors that were encountered initiating one.)&lt;br /&gt;
'''Examples:'''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Only a subset of these options might be needed for most use-cases. A fundamental difference between the &amp;lt;code&amp;gt;package&amp;lt;/code&amp;gt; endpoint and others from which a transfer can be initiated is that a storage service transfer location UUID isnt always required. In some cases that might still be ideal.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
''Starting a transfer using an absolute path:''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   curl -v POST \&lt;br /&gt;
     -H &amp;quot;Authorization: ApiKey test:test&amp;quot; \&lt;br /&gt;
     -H &amp;quot;Content-Type: application/json&amp;quot; \&lt;br /&gt;
     -d &amp;quot;{\&lt;br /&gt;
         \&amp;quot;path\&amp;quot;: \&amp;quot;$(echo -n '/home/archivematica/archivematica-sampledata/SampleTransfers/DemoTransfer' | base64 -w 0)\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;name\&amp;quot;: \&amp;quot;demo_transfer_absolute\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;processing_config\&amp;quot;: \&amp;quot;automated\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;type\&amp;quot;: \&amp;quot;standard\&amp;quot; \&lt;br /&gt;
         }&amp;quot; \&lt;br /&gt;
    &amp;quot;http://&amp;lt;archivematica-uri&amp;gt;/api/v2beta/package&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Starting a transfer using an relative path with a transfer source UUID:''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   curl -v POST \&lt;br /&gt;
     -H &amp;quot;Authorization: ApiKey test:test&amp;quot; \&lt;br /&gt;
     -H &amp;quot;Content-Type: application/json&amp;quot; \&lt;br /&gt;
     -d &amp;quot;{\&lt;br /&gt;
         \&amp;quot;path\&amp;quot;: \&amp;quot;$(echo -n 'd1184f7f-d755-4c8d-831a-a3793b88f760:/archivematica/archivematica-sampledata/SampleTransfers/DemoTransfer' | base64 -w 0)\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;name\&amp;quot;: \&amp;quot;demo_transfer_relative\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;processing_config\&amp;quot;: \&amp;quot;automated\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;type\&amp;quot;: \&amp;quot;standard\&amp;quot; \&lt;br /&gt;
         }&amp;quot; \&lt;br /&gt;
    &amp;quot;http://&amp;lt;archivematica-uri&amp;gt;/api/v2beta/package&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Development documentation]]&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Archivematica_API&amp;diff=12895</id>
		<title>Archivematica API</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Archivematica_API&amp;diff=12895"/>
		<updated>2019-02-26T21:08:56Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: /* Package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Development]] &amp;gt; Archivematica API&lt;br /&gt;
&lt;br /&gt;
Endpoints require authentication with a username and API key.  This can be submitted as GET parameters (eg &amp;lt;code&amp;gt;?username=demo&amp;amp;api_key=e6282adabed84e39ffe451f8bf6ff1a67c1fc9f2&amp;lt;/code&amp;gt;) or as a header (eg &amp;lt;code&amp;gt;Authorization: ApiKey demo:e6282adabed84e39ffe451f8bf6ff1a67c1fc9f2&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Endpoints return JSON.  If there's an error, they will return a 4xx or 5xx HTTP error code and a JSON body &amp;lt;code&amp;gt;{'error': True, 'message': 'message describing error'}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Transfer ==&lt;br /&gt;
&lt;br /&gt;
=== Start Transfer ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/start_transfer/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a transfer.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of new transfer&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Type of the new transfer. One of: standard, unzipped bag, zipped bag, dspace&lt;br /&gt;
** &amp;lt;code&amp;gt;accession&amp;lt;/code&amp;gt;: Accession number of new transfer&lt;br /&gt;
** &amp;lt;code&amp;gt;paths[]&amp;lt;/code&amp;gt;: List of base64-encoded &amp;quot;&amp;lt;location_uuid&amp;gt;:&amp;lt;relative_path&amp;gt;&amp;quot; to be copied into the new transfer. Location UUIDs should be associated with this pipeline, and relative path should be relative to the location (TODO confirm relative vs absolute path).  E.g. NWJiYWJjMTMtMTIyNy00MWE3LWIwY2QtZjJhYzM1MjkxZTdmOi92YWdyYW50L3NhbXBsZWRhdGEvQ1NWbWV0YWRhdGE= (decoded: 5bbabc13-1227-41a7-b0cd-f2ac35291e7f:/vagrant/sampledata/CSVmetadata)&lt;br /&gt;
** &amp;lt;code&amp;gt;row_ids[]&amp;lt;/code&amp;gt;: ID of the associated TransferMetadataSet for disk image ingest.  Can be provided as [&amp;quot;&amp;quot;]&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Copy successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Path the transfer was copied to on start?&lt;br /&gt;
&lt;br /&gt;
=== List Unapproved Transfers ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/unapproved&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns a list of transfers waiting for approval.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched unapproved transfers successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of dicts with keys:&lt;br /&gt;
*** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Transfer type. One of: standard, unzipped bag, zipped bag, dspace&lt;br /&gt;
*** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Directory the transfer is in currently&lt;br /&gt;
*** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the transfer&lt;br /&gt;
&lt;br /&gt;
=== Approve Transfer ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/approve&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Approve a transfer waiting to be started.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Type of the transfer to approved. One of: standard, unzipped bag, zipped bag, dspace.&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory for the transfer to approve&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the approved transfer&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/transfer/status/&amp;lt;transfer UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns the status of the transfer.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;: One of FAILED, REJECTED, USER_INPUT, COMPLETE or PROCESSING&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the transfer, e.g. &amp;quot;imgs&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: If status is COMPLETE, this field will exist with either the UUID of the SIP or 'BACKLOG'&lt;br /&gt;
** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory, e.g. &amp;quot;imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Full path to the transfer, e.g. &amp;quot;/var/archivematica/sharedDirectory/watchedDirectories/SIPCreation/completedTransfers/imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c/&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched status for &amp;lt;transfer UUID&amp;gt; successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: &amp;quot;transfer&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the transfer, e.g. &amp;quot;52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Hide ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/&amp;lt;transfer UUID&amp;gt;/delete/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': DELETE&lt;br /&gt;
* Hide a transfer&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;removed&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== Completed ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/completed/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Return list of Transfers that are completed&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched completed transfers successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of UUIDs of completed Transfers&lt;br /&gt;
* Added in Archivematica 1.6&lt;br /&gt;
&lt;br /&gt;
=== Start Reingest ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/reingest&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a full reingest.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the AIP. The AIP should also be found at &amp;lt;code&amp;gt;%sharedDirectory%/tmp/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the AIP to reingest&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest_uuid&amp;lt;/code&amp;gt;: UUID of the reingested transfer&lt;br /&gt;
&lt;br /&gt;
== Ingest ==&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/ingest/status/&amp;lt;unit UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns the status of the SIP&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;: One of FAILED, REJECTED, USER_INPUT, COMPLETE or PROCESSING&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the SIP, e.g. &amp;quot;imgs&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory, e.g. &amp;quot;imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Full path to the transfer, e.g. &amp;quot;/var/archivematica/sharedDirectory/currentlyProcessing/imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c/&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched status for &amp;lt;SIP UUID&amp;gt; successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: &amp;quot;SIP&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the SIP, e.g. &amp;quot;52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Hide ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/&amp;lt;SIP UUID&amp;gt;/delete/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': DELETE&lt;br /&gt;
* Hide a SIP&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;removed&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== List SIPS Waiting for User Input ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/waiting&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns a list of SIPs waiting for user input.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched units successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of dicts with keys:&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_directory&amp;lt;/code&amp;gt;: Directory the SIP is in currently&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: UUID of the SIP&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_name&amp;lt;/code&amp;gt;: Name of the SIP&lt;br /&gt;
*** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffeecc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Improvement Note: Despite the URL, this currently returns both SIPs &amp;amp; transfers that are waiting for user input. A separate &amp;lt;code&amp;gt;/api/transfer/waiting&amp;lt;/code&amp;gt; should be added for transfers.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Completed ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/completed/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Return list of SIPs that are completed&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched completed ingests successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of UUIDs of completed SIPs&lt;br /&gt;
* Added in Archivematica 1.6&lt;br /&gt;
&lt;br /&gt;
=== Reingest ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/reingest&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a partial or metadata-only reingest.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the AIP. The AIP should also be found at &amp;lt;code&amp;gt;%sharedDirectory%/tmp/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the AIP to reingest&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest_uuid&amp;lt;/code&amp;gt;: UUID of the reingested SIP&lt;br /&gt;
&lt;br /&gt;
=== Copy Metadata ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/copy_metadata_files/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Add metadata files to a SIP.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: UUID of the SIP to put files in&lt;br /&gt;
** &amp;lt;code&amp;gt;source_paths[]&amp;lt;/code&amp;gt;: List of files to be copied, base64 encoded, in the format 'source_location_uuid:full_path'&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;: False&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Files added successfully.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
=== Levels of Description ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/administration/dips/atom/levels/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Returns a JSON-encoded set of the configured levels of description.&lt;br /&gt;
* ''Response'': JSON. List of AtoM Levels of description with key 'UUID' and value 'name of level of description'.&lt;br /&gt;
&lt;br /&gt;
=== Fetch Levels of Description ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/administration/dips/atom/fetch_levels/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Fetch all levels of description from an AtoM database, replacing any previously existing.&lt;br /&gt;
* '''Response''': JSON. Updated list of AtoM Levels of description with key 'UUID' and value 'name of level of description'.&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== Path Metadata ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/filesystem/metadata/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET, POST&lt;br /&gt;
* Fetch (GET) or update (POST) metadata for a path (currently only level of description).&lt;br /&gt;
* '''Parameters''': Query string parameters (GET) or JSON body (POST)&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Arranged path to get metadata on&lt;br /&gt;
* '''GET response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;level_of_description&amp;lt;/code&amp;gt;: Level of description&lt;br /&gt;
* '''POST response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;success&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== Processing Configuration ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/processing-configuration/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Return processing configuration with &amp;lt;name&amp;gt;&lt;br /&gt;
* '''Response''': The processing config file as a stream.&lt;br /&gt;
* '''Content type''': text/xml&lt;br /&gt;
&lt;br /&gt;
== Beta endpoints ==&lt;br /&gt;
&lt;br /&gt;
API endpoints which are still in-flux and that could potentially change. &lt;br /&gt;
&lt;br /&gt;
=== Package ===&lt;br /&gt;
&lt;br /&gt;
Provides additional functionality over the start and approve transfer endpoints, for example, wrapping both those steps into a single call.&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2beta/package&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a new transfer type.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Transfer name&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Transfer type, e.g. standard, dataverse, zipped bag, default: &amp;lt;code&amp;gt;standard&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;accession&amp;lt;/code&amp;gt;: Accession ID&lt;br /&gt;
** &amp;lt;code&amp;gt;accession_system_id&amp;lt;/code&amp;gt;: TBC&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Path relative, or absolute to a storage service transfer source&lt;br /&gt;
** &amp;lt;code&amp;gt;metadata_set_id&amp;lt;/code&amp;gt;: TBC&lt;br /&gt;
** &amp;lt;code&amp;gt;auto_apptove&amp;lt;/code&amp;gt;: Boolean &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt; to set the transfer to auto-approve, default: &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;wait_until_complete&amp;lt;/code&amp;gt;: TBC&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;: Transfer UUID&lt;br /&gt;
'''Examples:'''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Only a subset of these options might be needed for most use-cases. A fundamental difference between the &amp;lt;code&amp;gt;package&amp;lt;/code&amp;gt; endpoint and others from which a transfer can be initiated is that a storage service transfer location UUID isnt always required. In some cases that might still be ideal.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
''Starting a transfer using an absolute path:''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   curl -v POST \&lt;br /&gt;
     -H &amp;quot;Authorization: ApiKey test:test&amp;quot; \&lt;br /&gt;
     -H &amp;quot;Content-Type: application/json&amp;quot; \&lt;br /&gt;
     -d &amp;quot;{\&lt;br /&gt;
         \&amp;quot;path\&amp;quot;: \&amp;quot;$(echo -n '/home/archivematica/archivematica-sampledata/SampleTransfers/DemoTransfer' | base64 -w 0)\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;name\&amp;quot;: \&amp;quot;demo_transfer_absolute\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;processing_config\&amp;quot;: \&amp;quot;automated\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;type\&amp;quot;: \&amp;quot;standard\&amp;quot; \&lt;br /&gt;
         }&amp;quot; \&lt;br /&gt;
    &amp;quot;http://&amp;lt;archivematica-uri&amp;gt;/api/v2beta/package&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Starting a transfer using an relative path with a transfer source UUID:''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   curl -v POST \&lt;br /&gt;
     -H &amp;quot;Authorization: ApiKey test:test&amp;quot; \&lt;br /&gt;
     -H &amp;quot;Content-Type: application/json&amp;quot; \&lt;br /&gt;
     -d &amp;quot;{\&lt;br /&gt;
         \&amp;quot;path\&amp;quot;: \&amp;quot;$(echo -n 'd1184f7f-d755-4c8d-831a-a3793b88f760:/archivematica/archivematica-sampledata/SampleTransfers/DemoTransfer' | base64 -w 0)\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;name\&amp;quot;: \&amp;quot;demo_transfer_relative\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;processing_config\&amp;quot;: \&amp;quot;automated\&amp;quot;, \&lt;br /&gt;
         \&amp;quot;type\&amp;quot;: \&amp;quot;standard\&amp;quot; \&lt;br /&gt;
         }&amp;quot; \&lt;br /&gt;
    &amp;quot;http://&amp;lt;archivematica-uri&amp;gt;/api/v2beta/package&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Development documentation]]&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Archivematica_API&amp;diff=12894</id>
		<title>Archivematica API</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Archivematica_API&amp;diff=12894"/>
		<updated>2019-02-26T21:02:51Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: /* Package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Development]] &amp;gt; Archivematica API&lt;br /&gt;
&lt;br /&gt;
Endpoints require authentication with a username and API key.  This can be submitted as GET parameters (eg &amp;lt;code&amp;gt;?username=demo&amp;amp;api_key=e6282adabed84e39ffe451f8bf6ff1a67c1fc9f2&amp;lt;/code&amp;gt;) or as a header (eg &amp;lt;code&amp;gt;Authorization: ApiKey demo:e6282adabed84e39ffe451f8bf6ff1a67c1fc9f2&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Endpoints return JSON.  If there's an error, they will return a 4xx or 5xx HTTP error code and a JSON body &amp;lt;code&amp;gt;{'error': True, 'message': 'message describing error'}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Transfer ==&lt;br /&gt;
&lt;br /&gt;
=== Start Transfer ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/start_transfer/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a transfer.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of new transfer&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Type of the new transfer. One of: standard, unzipped bag, zipped bag, dspace&lt;br /&gt;
** &amp;lt;code&amp;gt;accession&amp;lt;/code&amp;gt;: Accession number of new transfer&lt;br /&gt;
** &amp;lt;code&amp;gt;paths[]&amp;lt;/code&amp;gt;: List of base64-encoded &amp;quot;&amp;lt;location_uuid&amp;gt;:&amp;lt;relative_path&amp;gt;&amp;quot; to be copied into the new transfer. Location UUIDs should be associated with this pipeline, and relative path should be relative to the location (TODO confirm relative vs absolute path).  E.g. NWJiYWJjMTMtMTIyNy00MWE3LWIwY2QtZjJhYzM1MjkxZTdmOi92YWdyYW50L3NhbXBsZWRhdGEvQ1NWbWV0YWRhdGE= (decoded: 5bbabc13-1227-41a7-b0cd-f2ac35291e7f:/vagrant/sampledata/CSVmetadata)&lt;br /&gt;
** &amp;lt;code&amp;gt;row_ids[]&amp;lt;/code&amp;gt;: ID of the associated TransferMetadataSet for disk image ingest.  Can be provided as [&amp;quot;&amp;quot;]&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Copy successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Path the transfer was copied to on start?&lt;br /&gt;
&lt;br /&gt;
=== List Unapproved Transfers ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/unapproved&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns a list of transfers waiting for approval.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched unapproved transfers successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of dicts with keys:&lt;br /&gt;
*** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Transfer type. One of: standard, unzipped bag, zipped bag, dspace&lt;br /&gt;
*** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Directory the transfer is in currently&lt;br /&gt;
*** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the transfer&lt;br /&gt;
&lt;br /&gt;
=== Approve Transfer ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/approve&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Approve a transfer waiting to be started.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Type of the transfer to approved. One of: standard, unzipped bag, zipped bag, dspace.&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory for the transfer to approve&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the approved transfer&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/transfer/status/&amp;lt;transfer UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns the status of the transfer.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;: One of FAILED, REJECTED, USER_INPUT, COMPLETE or PROCESSING&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the transfer, e.g. &amp;quot;imgs&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: If status is COMPLETE, this field will exist with either the UUID of the SIP or 'BACKLOG'&lt;br /&gt;
** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory, e.g. &amp;quot;imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Full path to the transfer, e.g. &amp;quot;/var/archivematica/sharedDirectory/watchedDirectories/SIPCreation/completedTransfers/imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c/&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched status for &amp;lt;transfer UUID&amp;gt; successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: &amp;quot;transfer&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the transfer, e.g. &amp;quot;52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Hide ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/&amp;lt;transfer UUID&amp;gt;/delete/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': DELETE&lt;br /&gt;
* Hide a transfer&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;removed&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== Completed ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/completed/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Return list of Transfers that are completed&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched completed transfers successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of UUIDs of completed Transfers&lt;br /&gt;
* Added in Archivematica 1.6&lt;br /&gt;
&lt;br /&gt;
=== Start Reingest ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/reingest&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a full reingest.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the AIP. The AIP should also be found at &amp;lt;code&amp;gt;%sharedDirectory%/tmp/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the AIP to reingest&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest_uuid&amp;lt;/code&amp;gt;: UUID of the reingested transfer&lt;br /&gt;
&lt;br /&gt;
== Ingest ==&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/ingest/status/&amp;lt;unit UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns the status of the SIP&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;: One of FAILED, REJECTED, USER_INPUT, COMPLETE or PROCESSING&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the SIP, e.g. &amp;quot;imgs&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory, e.g. &amp;quot;imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Full path to the transfer, e.g. &amp;quot;/var/archivematica/sharedDirectory/currentlyProcessing/imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c/&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched status for &amp;lt;SIP UUID&amp;gt; successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: &amp;quot;SIP&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the SIP, e.g. &amp;quot;52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Hide ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/&amp;lt;SIP UUID&amp;gt;/delete/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': DELETE&lt;br /&gt;
* Hide a SIP&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;removed&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== List SIPS Waiting for User Input ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/waiting&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns a list of SIPs waiting for user input.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched units successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of dicts with keys:&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_directory&amp;lt;/code&amp;gt;: Directory the SIP is in currently&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: UUID of the SIP&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_name&amp;lt;/code&amp;gt;: Name of the SIP&lt;br /&gt;
*** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffeecc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Improvement Note: Despite the URL, this currently returns both SIPs &amp;amp; transfers that are waiting for user input. A separate &amp;lt;code&amp;gt;/api/transfer/waiting&amp;lt;/code&amp;gt; should be added for transfers.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Completed ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/completed/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Return list of SIPs that are completed&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched completed ingests successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of UUIDs of completed SIPs&lt;br /&gt;
* Added in Archivematica 1.6&lt;br /&gt;
&lt;br /&gt;
=== Reingest ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/reingest&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a partial or metadata-only reingest.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the AIP. The AIP should also be found at &amp;lt;code&amp;gt;%sharedDirectory%/tmp/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the AIP to reingest&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest_uuid&amp;lt;/code&amp;gt;: UUID of the reingested SIP&lt;br /&gt;
&lt;br /&gt;
=== Copy Metadata ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/copy_metadata_files/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Add metadata files to a SIP.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: UUID of the SIP to put files in&lt;br /&gt;
** &amp;lt;code&amp;gt;source_paths[]&amp;lt;/code&amp;gt;: List of files to be copied, base64 encoded, in the format 'source_location_uuid:full_path'&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;: False&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Files added successfully.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
=== Levels of Description ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/administration/dips/atom/levels/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Returns a JSON-encoded set of the configured levels of description.&lt;br /&gt;
* ''Response'': JSON. List of AtoM Levels of description with key 'UUID' and value 'name of level of description'.&lt;br /&gt;
&lt;br /&gt;
=== Fetch Levels of Description ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/administration/dips/atom/fetch_levels/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Fetch all levels of description from an AtoM database, replacing any previously existing.&lt;br /&gt;
* '''Response''': JSON. Updated list of AtoM Levels of description with key 'UUID' and value 'name of level of description'.&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== Path Metadata ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/filesystem/metadata/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET, POST&lt;br /&gt;
* Fetch (GET) or update (POST) metadata for a path (currently only level of description).&lt;br /&gt;
* '''Parameters''': Query string parameters (GET) or JSON body (POST)&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Arranged path to get metadata on&lt;br /&gt;
* '''GET response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;level_of_description&amp;lt;/code&amp;gt;: Level of description&lt;br /&gt;
* '''POST response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;success&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== Processing Configuration ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/processing-configuration/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Return processing configuration with &amp;lt;name&amp;gt;&lt;br /&gt;
* '''Response''': The processing config file as a stream.&lt;br /&gt;
* '''Content type''': text/xml&lt;br /&gt;
&lt;br /&gt;
== Beta endpoints ==&lt;br /&gt;
&lt;br /&gt;
API endpoints which are still in-flux and that could potentially change. &lt;br /&gt;
&lt;br /&gt;
=== Package ===&lt;br /&gt;
&lt;br /&gt;
Provides additional functionality over the start and approve transfer endpoints, for example, wrapping both those steps into a single call.&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2beta/package&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a new transfer type.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Transfer name&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Transfer type, e.g. standard, dataverse, zipped bag, default: &amp;lt;code&amp;gt;standard&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;accession&amp;lt;/code&amp;gt;: Accession ID&lt;br /&gt;
** &amp;lt;code&amp;gt;accession_system_id&amp;lt;/code&amp;gt;: TBC&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Path relative, or absolute to a storage service transfer source&lt;br /&gt;
** &amp;lt;code&amp;gt;metadata_set_id&amp;lt;/code&amp;gt;: TBC&lt;br /&gt;
** &amp;lt;code&amp;gt;auto_apptove&amp;lt;/code&amp;gt;: Boolean &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt; to set the transfer to auto-approve, default: &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;wait_until_complete&amp;lt;/code&amp;gt;: TBC&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;: Transfer UUID&lt;br /&gt;
&lt;br /&gt;
[[Category:Development documentation]]&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Archivematica_API&amp;diff=12893</id>
		<title>Archivematica API</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Archivematica_API&amp;diff=12893"/>
		<updated>2019-02-26T20:54:52Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: /* Package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Development]] &amp;gt; Archivematica API&lt;br /&gt;
&lt;br /&gt;
Endpoints require authentication with a username and API key.  This can be submitted as GET parameters (eg &amp;lt;code&amp;gt;?username=demo&amp;amp;api_key=e6282adabed84e39ffe451f8bf6ff1a67c1fc9f2&amp;lt;/code&amp;gt;) or as a header (eg &amp;lt;code&amp;gt;Authorization: ApiKey demo:e6282adabed84e39ffe451f8bf6ff1a67c1fc9f2&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Endpoints return JSON.  If there's an error, they will return a 4xx or 5xx HTTP error code and a JSON body &amp;lt;code&amp;gt;{'error': True, 'message': 'message describing error'}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Transfer ==&lt;br /&gt;
&lt;br /&gt;
=== Start Transfer ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/start_transfer/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a transfer.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of new transfer&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Type of the new transfer. One of: standard, unzipped bag, zipped bag, dspace&lt;br /&gt;
** &amp;lt;code&amp;gt;accession&amp;lt;/code&amp;gt;: Accession number of new transfer&lt;br /&gt;
** &amp;lt;code&amp;gt;paths[]&amp;lt;/code&amp;gt;: List of base64-encoded &amp;quot;&amp;lt;location_uuid&amp;gt;:&amp;lt;relative_path&amp;gt;&amp;quot; to be copied into the new transfer. Location UUIDs should be associated with this pipeline, and relative path should be relative to the location (TODO confirm relative vs absolute path).  E.g. NWJiYWJjMTMtMTIyNy00MWE3LWIwY2QtZjJhYzM1MjkxZTdmOi92YWdyYW50L3NhbXBsZWRhdGEvQ1NWbWV0YWRhdGE= (decoded: 5bbabc13-1227-41a7-b0cd-f2ac35291e7f:/vagrant/sampledata/CSVmetadata)&lt;br /&gt;
** &amp;lt;code&amp;gt;row_ids[]&amp;lt;/code&amp;gt;: ID of the associated TransferMetadataSet for disk image ingest.  Can be provided as [&amp;quot;&amp;quot;]&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Copy successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Path the transfer was copied to on start?&lt;br /&gt;
&lt;br /&gt;
=== List Unapproved Transfers ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/unapproved&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns a list of transfers waiting for approval.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched unapproved transfers successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of dicts with keys:&lt;br /&gt;
*** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Transfer type. One of: standard, unzipped bag, zipped bag, dspace&lt;br /&gt;
*** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Directory the transfer is in currently&lt;br /&gt;
*** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the transfer&lt;br /&gt;
&lt;br /&gt;
=== Approve Transfer ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/approve&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Approve a transfer waiting to be started.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Type of the transfer to approved. One of: standard, unzipped bag, zipped bag, dspace.&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory for the transfer to approve&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the approved transfer&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/transfer/status/&amp;lt;transfer UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns the status of the transfer.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;: One of FAILED, REJECTED, USER_INPUT, COMPLETE or PROCESSING&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the transfer, e.g. &amp;quot;imgs&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: If status is COMPLETE, this field will exist with either the UUID of the SIP or 'BACKLOG'&lt;br /&gt;
** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory, e.g. &amp;quot;imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Full path to the transfer, e.g. &amp;quot;/var/archivematica/sharedDirectory/watchedDirectories/SIPCreation/completedTransfers/imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c/&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched status for &amp;lt;transfer UUID&amp;gt; successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: &amp;quot;transfer&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the transfer, e.g. &amp;quot;52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Hide ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/&amp;lt;transfer UUID&amp;gt;/delete/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': DELETE&lt;br /&gt;
* Hide a transfer&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;removed&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== Completed ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/completed/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Return list of Transfers that are completed&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched completed transfers successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of UUIDs of completed Transfers&lt;br /&gt;
* Added in Archivematica 1.6&lt;br /&gt;
&lt;br /&gt;
=== Start Reingest ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/reingest&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a full reingest.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the AIP. The AIP should also be found at &amp;lt;code&amp;gt;%sharedDirectory%/tmp/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the AIP to reingest&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest_uuid&amp;lt;/code&amp;gt;: UUID of the reingested transfer&lt;br /&gt;
&lt;br /&gt;
== Ingest ==&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/ingest/status/&amp;lt;unit UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns the status of the SIP&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;: One of FAILED, REJECTED, USER_INPUT, COMPLETE or PROCESSING&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the SIP, e.g. &amp;quot;imgs&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory, e.g. &amp;quot;imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Full path to the transfer, e.g. &amp;quot;/var/archivematica/sharedDirectory/currentlyProcessing/imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c/&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched status for &amp;lt;SIP UUID&amp;gt; successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: &amp;quot;SIP&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the SIP, e.g. &amp;quot;52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Hide ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/&amp;lt;SIP UUID&amp;gt;/delete/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': DELETE&lt;br /&gt;
* Hide a SIP&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;removed&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== List SIPS Waiting for User Input ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/waiting&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns a list of SIPs waiting for user input.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched units successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of dicts with keys:&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_directory&amp;lt;/code&amp;gt;: Directory the SIP is in currently&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: UUID of the SIP&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_name&amp;lt;/code&amp;gt;: Name of the SIP&lt;br /&gt;
*** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffeecc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Improvement Note: Despite the URL, this currently returns both SIPs &amp;amp; transfers that are waiting for user input. A separate &amp;lt;code&amp;gt;/api/transfer/waiting&amp;lt;/code&amp;gt; should be added for transfers.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Completed ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/completed/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Return list of SIPs that are completed&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched completed ingests successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of UUIDs of completed SIPs&lt;br /&gt;
* Added in Archivematica 1.6&lt;br /&gt;
&lt;br /&gt;
=== Reingest ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/reingest&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a partial or metadata-only reingest.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the AIP. The AIP should also be found at &amp;lt;code&amp;gt;%sharedDirectory%/tmp/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the AIP to reingest&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest_uuid&amp;lt;/code&amp;gt;: UUID of the reingested SIP&lt;br /&gt;
&lt;br /&gt;
=== Copy Metadata ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/copy_metadata_files/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Add metadata files to a SIP.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: UUID of the SIP to put files in&lt;br /&gt;
** &amp;lt;code&amp;gt;source_paths[]&amp;lt;/code&amp;gt;: List of files to be copied, base64 encoded, in the format 'source_location_uuid:full_path'&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;: False&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Files added successfully.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
=== Levels of Description ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/administration/dips/atom/levels/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Returns a JSON-encoded set of the configured levels of description.&lt;br /&gt;
* ''Response'': JSON. List of AtoM Levels of description with key 'UUID' and value 'name of level of description'.&lt;br /&gt;
&lt;br /&gt;
=== Fetch Levels of Description ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/administration/dips/atom/fetch_levels/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Fetch all levels of description from an AtoM database, replacing any previously existing.&lt;br /&gt;
* '''Response''': JSON. Updated list of AtoM Levels of description with key 'UUID' and value 'name of level of description'.&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== Path Metadata ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/filesystem/metadata/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET, POST&lt;br /&gt;
* Fetch (GET) or update (POST) metadata for a path (currently only level of description).&lt;br /&gt;
* '''Parameters''': Query string parameters (GET) or JSON body (POST)&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Arranged path to get metadata on&lt;br /&gt;
* '''GET response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;level_of_description&amp;lt;/code&amp;gt;: Level of description&lt;br /&gt;
* '''POST response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;success&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== Processing Configuration ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/processing-configuration/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Return processing configuration with &amp;lt;name&amp;gt;&lt;br /&gt;
* '''Response''': The processing config file as a stream.&lt;br /&gt;
* '''Content type''': text/xml&lt;br /&gt;
&lt;br /&gt;
== Beta endpoints ==&lt;br /&gt;
&lt;br /&gt;
API endpoints which are still in-flux and that could potentially change. &lt;br /&gt;
&lt;br /&gt;
=== Package ===&lt;br /&gt;
&lt;br /&gt;
Provides additional functionality over the start and approve transfer endpoints, for example, wrapping both those steps into a single call.&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2beta/package&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a new transfer type.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Transfer name&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Transfer type, e.g. standard, dataverse, zipped bag, default: &amp;lt;code&amp;gt;standard&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;accession&amp;lt;/code&amp;gt;: Accession ID&lt;br /&gt;
** &amp;lt;code&amp;gt;accession_system_id&amp;lt;/code&amp;gt;: _&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Path relative, or absolute to a storage service transfer source&lt;br /&gt;
** &amp;lt;code&amp;gt;metadata_set_id&amp;lt;/code&amp;gt;: _&lt;br /&gt;
** &amp;lt;code&amp;gt;auto_apptove&amp;lt;/code&amp;gt;: Boolean &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt; to set the transfer to auto-approve, default: &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;wait_until_complete&amp;lt;/code&amp;gt;: _&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;: &amp;quot;Transfer UUID&amp;quot;&lt;br /&gt;
'''Examples:'''&lt;br /&gt;
Only a subset of these options might be needed for most use-cases. A fundamental difference between the &amp;lt;code&amp;gt;package&amp;lt;/code&amp;gt; endpoint and other's from which a transfer can be initiated is that a storage service transfer location UUID isn't always required. In some cases that might still be ideal.&lt;br /&gt;
''Starting a transfer using an absolute path:''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   curl -v POST \&lt;br /&gt;
    -H &amp;quot;Authorization: ApiKey test:test&amp;quot; \&lt;br /&gt;
    -H &amp;quot;Content-Type: application/json&amp;quot; \&lt;br /&gt;
    -d &amp;quot;{\&lt;br /&gt;
        \&amp;quot;path\&amp;quot;: \&amp;quot;$(echo -n '/home/archivematica/archivematica-sampledata/SampleTransfers/DemoTransfer' | base64 -w 0)\&amp;quot;, \&lt;br /&gt;
        \&amp;quot;name\&amp;quot;: \&amp;quot;demo_transfer_absolute\&amp;quot;, \&lt;br /&gt;
        \&amp;quot;processing_config\&amp;quot;: \&amp;quot;automated\&amp;quot;, \&lt;br /&gt;
        \&amp;quot;type\&amp;quot;: \&amp;quot;standard\&amp;quot; \&lt;br /&gt;
        }&amp;quot; \&lt;br /&gt;
    &amp;quot;http://127.0.0.1:62080/api/v2beta/package&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
''Starting a transfer using an relative path with a transfer source UUID:''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   curl -v POST \&lt;br /&gt;
    -H &amp;quot;Authorization: ApiKey test:test&amp;quot; \&lt;br /&gt;
    -H &amp;quot;Content-Type: application/json&amp;quot; \&lt;br /&gt;
    -d &amp;quot;{\&lt;br /&gt;
        \&amp;quot;path\&amp;quot;: \&amp;quot;$(echo -n 'd1184f7f-d755-4c8d-831a-a3793b88f760:/archivematica/archivematica-sampledata/SampleTransfers/DemoTransfer' | base64 -w 0)\&amp;quot;, \&lt;br /&gt;
        \&amp;quot;name\&amp;quot;: \&amp;quot;demo_transfer_relative\&amp;quot;, \&lt;br /&gt;
        \&amp;quot;processing_config\&amp;quot;: \&amp;quot;automated\&amp;quot;, \&lt;br /&gt;
        \&amp;quot;type\&amp;quot;: \&amp;quot;standard\&amp;quot; \&lt;br /&gt;
        }&amp;quot; \&lt;br /&gt;
    &amp;quot;http://127.0.0.1:62080/api/v2beta/package&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Development documentation]]&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Archivematica_API&amp;diff=12892</id>
		<title>Archivematica API</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Archivematica_API&amp;diff=12892"/>
		<updated>2019-02-26T19:56:01Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Add header to add content underneath&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Development]] &amp;gt; Archivematica API&lt;br /&gt;
&lt;br /&gt;
Endpoints require authentication with a username and API key.  This can be submitted as GET parameters (eg &amp;lt;code&amp;gt;?username=demo&amp;amp;api_key=e6282adabed84e39ffe451f8bf6ff1a67c1fc9f2&amp;lt;/code&amp;gt;) or as a header (eg &amp;lt;code&amp;gt;Authorization: ApiKey demo:e6282adabed84e39ffe451f8bf6ff1a67c1fc9f2&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Endpoints return JSON.  If there's an error, they will return a 4xx or 5xx HTTP error code and a JSON body &amp;lt;code&amp;gt;{'error': True, 'message': 'message describing error'}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Transfer ==&lt;br /&gt;
&lt;br /&gt;
=== Start Transfer ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/start_transfer/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a transfer.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of new transfer&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Type of the new transfer. One of: standard, unzipped bag, zipped bag, dspace&lt;br /&gt;
** &amp;lt;code&amp;gt;accession&amp;lt;/code&amp;gt;: Accession number of new transfer&lt;br /&gt;
** &amp;lt;code&amp;gt;paths[]&amp;lt;/code&amp;gt;: List of base64-encoded &amp;quot;&amp;lt;location_uuid&amp;gt;:&amp;lt;relative_path&amp;gt;&amp;quot; to be copied into the new transfer. Location UUIDs should be associated with this pipeline, and relative path should be relative to the location (TODO confirm relative vs absolute path).  E.g. NWJiYWJjMTMtMTIyNy00MWE3LWIwY2QtZjJhYzM1MjkxZTdmOi92YWdyYW50L3NhbXBsZWRhdGEvQ1NWbWV0YWRhdGE= (decoded: 5bbabc13-1227-41a7-b0cd-f2ac35291e7f:/vagrant/sampledata/CSVmetadata)&lt;br /&gt;
** &amp;lt;code&amp;gt;row_ids[]&amp;lt;/code&amp;gt;: ID of the associated TransferMetadataSet for disk image ingest.  Can be provided as [&amp;quot;&amp;quot;]&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Copy successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Path the transfer was copied to on start?&lt;br /&gt;
&lt;br /&gt;
=== List Unapproved Transfers ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/unapproved&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns a list of transfers waiting for approval.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched unapproved transfers successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of dicts with keys:&lt;br /&gt;
*** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Transfer type. One of: standard, unzipped bag, zipped bag, dspace&lt;br /&gt;
*** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Directory the transfer is in currently&lt;br /&gt;
*** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the transfer&lt;br /&gt;
&lt;br /&gt;
=== Approve Transfer ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/approve&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Approve a transfer waiting to be started.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: Type of the transfer to approved. One of: standard, unzipped bag, zipped bag, dspace.&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory for the transfer to approve&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the approved transfer&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/transfer/status/&amp;lt;transfer UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns the status of the transfer.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;: One of FAILED, REJECTED, USER_INPUT, COMPLETE or PROCESSING&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the transfer, e.g. &amp;quot;imgs&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: If status is COMPLETE, this field will exist with either the UUID of the SIP or 'BACKLOG'&lt;br /&gt;
** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory, e.g. &amp;quot;imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Full path to the transfer, e.g. &amp;quot;/var/archivematica/sharedDirectory/watchedDirectories/SIPCreation/completedTransfers/imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c/&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched status for &amp;lt;transfer UUID&amp;gt; successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: &amp;quot;transfer&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the transfer, e.g. &amp;quot;52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Hide ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/&amp;lt;transfer UUID&amp;gt;/delete/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': DELETE&lt;br /&gt;
* Hide a transfer&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;removed&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== Completed ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/completed/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Return list of Transfers that are completed&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched completed transfers successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of UUIDs of completed Transfers&lt;br /&gt;
* Added in Archivematica 1.6&lt;br /&gt;
&lt;br /&gt;
=== Start Reingest ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/transfer/reingest&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a full reingest.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the AIP. The AIP should also be found at &amp;lt;code&amp;gt;%sharedDirectory%/tmp/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the AIP to reingest&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest_uuid&amp;lt;/code&amp;gt;: UUID of the reingested transfer&lt;br /&gt;
&lt;br /&gt;
== Ingest ==&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/ingest/status/&amp;lt;unit UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns the status of the SIP&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;: One of FAILED, REJECTED, USER_INPUT, COMPLETE or PROCESSING&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the SIP, e.g. &amp;quot;imgs&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
** &amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: Name of the directory, e.g. &amp;quot;imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Full path to the transfer, e.g. &amp;quot;/var/archivematica/sharedDirectory/currentlyProcessing/imgs-52dd0c01-e803-423a-be5f-b592b5d5d61c/&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched status for &amp;lt;SIP UUID&amp;gt; successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;: &amp;quot;SIP&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the SIP, e.g. &amp;quot;52dd0c01-e803-423a-be5f-b592b5d5d61c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Hide ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/&amp;lt;SIP UUID&amp;gt;/delete/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': DELETE&lt;br /&gt;
* Hide a SIP&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;removed&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== List SIPS Waiting for User Input ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/waiting&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Returns a list of SIPs waiting for user input.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched units successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of dicts with keys:&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_directory&amp;lt;/code&amp;gt;: Directory the SIP is in currently&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: UUID of the SIP&lt;br /&gt;
*** &amp;lt;code&amp;gt;sip_name&amp;lt;/code&amp;gt;: Name of the SIP&lt;br /&gt;
*** &amp;lt;code&amp;gt;microservice&amp;lt;/code&amp;gt;: Name of the current microservice&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffeecc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Improvement Note: Despite the URL, this currently returns both SIPs &amp;amp; transfers that are waiting for user input. A separate &amp;lt;code&amp;gt;/api/transfer/waiting&amp;lt;/code&amp;gt; should be added for transfers.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Completed ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/completed/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* Return list of SIPs that are completed&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Fetched completed ingests successfully.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;: List of UUIDs of completed SIPs&lt;br /&gt;
* Added in Archivematica 1.6&lt;br /&gt;
&lt;br /&gt;
=== Reingest ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/reingest&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Start a partial or metadata-only reingest.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Name of the AIP. The AIP should also be found at &amp;lt;code&amp;gt;%sharedDirectory%/tmp/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the AIP to reingest&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Approval successful.&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest_uuid&amp;lt;/code&amp;gt;: UUID of the reingested SIP&lt;br /&gt;
&lt;br /&gt;
=== Copy Metadata ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/ingest/copy_metadata_files/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* Add metadata files to a SIP.&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;sip_uuid&amp;lt;/code&amp;gt;: UUID of the SIP to put files in&lt;br /&gt;
** &amp;lt;code&amp;gt;source_paths[]&amp;lt;/code&amp;gt;: List of files to be copied, base64 encoded, in the format 'source_location_uuid:full_path'&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;: False&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: &amp;quot;Files added successfully.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
=== Levels of Description ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/administration/dips/atom/levels/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Returns a JSON-encoded set of the configured levels of description.&lt;br /&gt;
* ''Response'': JSON. List of AtoM Levels of description with key 'UUID' and value 'name of level of description'.&lt;br /&gt;
&lt;br /&gt;
=== Fetch Levels of Description ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/administration/dips/atom/fetch_levels/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Fetch all levels of description from an AtoM database, replacing any previously existing.&lt;br /&gt;
* '''Response''': JSON. Updated list of AtoM Levels of description with key 'UUID' and value 'name of level of description'.&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== Path Metadata ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/filesystem/metadata/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET, POST&lt;br /&gt;
* Fetch (GET) or update (POST) metadata for a path (currently only level of description).&lt;br /&gt;
* '''Parameters''': Query string parameters (GET) or JSON body (POST)&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Arranged path to get metadata on&lt;br /&gt;
* '''GET response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;level_of_description&amp;lt;/code&amp;gt;: Level of description&lt;br /&gt;
* '''POST response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;success&amp;lt;/code&amp;gt;: True&lt;br /&gt;
&lt;br /&gt;
=== Processing Configuration ===&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/processing-configuration/&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET?&lt;br /&gt;
* Return processing configuration with &amp;lt;name&amp;gt;&lt;br /&gt;
* '''Response''': The processing config file as a stream.&lt;br /&gt;
* '''Content type''': text/xml&lt;br /&gt;
&lt;br /&gt;
== Beta endpoints ==&lt;br /&gt;
&lt;br /&gt;
API endpoints which are still in-flux and that could potentially change. &lt;br /&gt;
&lt;br /&gt;
=== Package ===&lt;br /&gt;
&lt;br /&gt;
Provides additional functionality over the start and approve transfer endpoints, for example, wrapping both those steps into a single call. &lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[[Category:Development documentation]]&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Storage_Service_API&amp;diff=12872</id>
		<title>Storage Service API</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Storage_Service_API&amp;diff=12872"/>
		<updated>2019-02-05T13:27:28Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: /* Create new pipeline */  formatting correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Development]] &amp;gt; Storage Service API&lt;br /&gt;
&lt;br /&gt;
The [[Storage Service]] API provides programmatic access to moving files around in storage areas that the Storage Service has access to.&lt;br /&gt;
&lt;br /&gt;
The API is written using [http://django-tastypie.readthedocs.io/en/latest/ TastyPie].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffeecc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Improvement Note: TastyPie is less well supported than [http://www.django-rest-framework.org/ Django REST Framework], both in terms of docs &amp;amp; community. We should look at replacing TastyPie with DRF.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Endpoints require authentication with a username and API key.  This can be submitted as GET parameters (eg &amp;lt;code&amp;gt;?username=test&amp;amp;api_key=e6282adabed84e39ffe451f8bf6ff1a67c1fc9f2&amp;lt;/code&amp;gt;) or as a header (eg &amp;lt;code&amp;gt;Authorization: ApiKey test:e6282adabed84e39ffe451f8bf6ff1a67c1fc9f2&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== A note about browsing ==&lt;br /&gt;
&lt;br /&gt;
A detailed schema can be found for each of the resources by adding &amp;quot;schema&amp;quot; to the get all URL.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 $ curl -X GET -H&amp;quot;Authorization: ApiKey test:95141fc645ed97a95893f1f865d24687f89a27ad&amp;quot; 'http://localhost:8000/api/v2/location/schema/?format=json&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;allowed_detail_http_methods&amp;quot;: [&lt;br /&gt;
        &amp;quot;get&amp;quot;,&lt;br /&gt;
        &amp;quot;post&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;allowed_list_http_methods&amp;quot;: [&lt;br /&gt;
        &amp;quot;get&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;default_format&amp;quot;: &amp;quot;application/json&amp;quot;,&lt;br /&gt;
    &amp;quot;default_limit&amp;quot;: 20,&lt;br /&gt;
    &amp;quot;fields&amp;quot;: {&lt;br /&gt;
        &amp;quot;description&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: false,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;No default provided.&amp;quot;,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;Unicode string data. Ex: \&amp;quot;Hello World\&amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: true,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;description&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;enabled&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: true,&lt;br /&gt;
            &amp;quot;default&amp;quot;: true,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;True if space can be accessed.&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: false,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;Enabled&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;path&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: false,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;No default provided.&amp;quot;,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;Unicode string data. Ex: \&amp;quot;Hello World\&amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: true,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;path&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;pipeline&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: false,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;No default provided.&amp;quot;,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;Many related resources. Can be either a list of URIs or list of individually nested resource data.&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: false,&lt;br /&gt;
            &amp;quot;related_schema&amp;quot;: &amp;quot;/api/v2/pipeline/schema/&amp;quot;,&lt;br /&gt;
            &amp;quot;related_type&amp;quot;: &amp;quot;to_many&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;related&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;pipeline&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;purpose&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: false,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;No default provided.&amp;quot;,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;Purpose of the space.  Eg. AIP storage, Transfer source&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: false,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;Purpose&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;quota&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: false,&lt;br /&gt;
            &amp;quot;default&amp;quot;: null,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;Size, in bytes (optional)&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: true,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: false,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;Quota&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relative_path&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: false,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;Path to location, relative to the storage space's path.&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: false,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;Relative Path&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;resource_uri&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: false,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;No default provided.&amp;quot;,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;Unicode string data. Ex: \&amp;quot;Hello World\&amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: true,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;resource uri&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;space&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: false,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;No default provided.&amp;quot;,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;A single related resource. Can be either a URI or set of nested resource data.&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: false,&lt;br /&gt;
            &amp;quot;related_schema&amp;quot;: &amp;quot;/api/v2/space/schema/&amp;quot;,&lt;br /&gt;
            &amp;quot;related_type&amp;quot;: &amp;quot;to_one&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;related&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;space&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;used&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: false,&lt;br /&gt;
            &amp;quot;default&amp;quot;: 0,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;Amount used, in bytes.&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: false,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;Used&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;uuid&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: true,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;Unique identifier&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: false,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: true,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;uuid&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;filtering&amp;quot;: {&lt;br /&gt;
        &amp;quot;pipeline&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;purpose&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;quota&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;relative_path&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;space&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;used&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;uuid&amp;quot;: 1&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This schema, among other things, describes the fields in the resource (including the schema URI of related resource fields) and the fields that allow filtering. Valid filtering values are: Django ORM filters (e.g. startswith, exact, lte, etc.) or 1 or 2. If a filtering field is set to 2 it can be filtered over the related resource fields. For example, the locations could be filtered by their pipeline UUID setting it in a request parameter formatted with two underscore chars: &amp;lt;code&amp;gt;/api/v2/location/?pipeline__uuid=&amp;lt;uuid&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more info on how to interact with the API see:&lt;br /&gt;
&lt;br /&gt;
http://django-tastypie.readthedocs.io/en/v0.13.1/interacting.html&lt;br /&gt;
&lt;br /&gt;
== Pipeline ==&lt;br /&gt;
&lt;br /&gt;
=== Get all pipelines ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/pipeline/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* '''Parameters''': Query string parameters&lt;br /&gt;
** &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;: Description of the pipeline&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the pipeline&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt;: Metadata on the response: number of hits, pagination information&lt;br /&gt;
** &amp;lt;code&amp;gt;objects&amp;lt;/code&amp;gt;: List of pipelines. See [[#Get pipeline details]] for format&lt;br /&gt;
&lt;br /&gt;
Returns information about all the pipelines in the system.  Can be [http://django-tastypie.readthedocs.io/en/latest/resources.html#basic-filtering filtered] by the description or uuid. Disabled pipelines are not returned.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 $ curl -X GET -H&amp;quot;Authorization: ApiKey test:95141fc645ed97a95893f1f865d24687f89a27ad&amp;quot; 'http://localhost:8000/api/v2/pipeline/?description__startswith=Archivematica' | python -m json.tool&lt;br /&gt;
 {&lt;br /&gt;
     &amp;quot;meta&amp;quot;: {&lt;br /&gt;
         &amp;quot;limit&amp;quot;: 20,&lt;br /&gt;
         &amp;quot;next&amp;quot;: null,&lt;br /&gt;
         &amp;quot;offset&amp;quot;: 0,&lt;br /&gt;
         &amp;quot;previous&amp;quot;: null,&lt;br /&gt;
         &amp;quot;total_count&amp;quot;: 1&lt;br /&gt;
     },&lt;br /&gt;
     &amp;quot;objects&amp;quot;: [&lt;br /&gt;
         {&lt;br /&gt;
             &amp;quot;description&amp;quot;: &amp;quot;Archivematica on alouette&amp;quot;,&lt;br /&gt;
             &amp;quot;remote_name&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
             &amp;quot;resource_uri&amp;quot;: &amp;quot;/api/v2/pipeline/dd354557-9e6e-4918-9fe3-a65b00ecb1af/&amp;quot;,&lt;br /&gt;
             &amp;quot;uuid&amp;quot;: &amp;quot;dd354557-9e6e-4918-9fe3-a65b00ecb1af&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
     ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Create new pipeline ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/pipeline/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** Should contain fields for a new pipeline: &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;api_username&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;create_default_locations&amp;lt;/code&amp;gt;: If True, will associated default [[Storage Service#Locations | Locations]] with the newly created pipeline&lt;br /&gt;
** &amp;lt;code&amp;gt;shared_path&amp;lt;/code&amp;gt;: If default locations are created, create the [[Storage Service#Currently Processing | processing]] location at this path in the local filesystem&lt;br /&gt;
** &amp;lt;code&amp;gt;remote_name&amp;lt;/code&amp;gt;: URI of the pipeline.&lt;br /&gt;
*** Before v0.11.0: If &amp;lt;code&amp;gt;create_default_locations&amp;lt;/code&amp;gt; is set, SS will try to guess the value using the &amp;lt;code&amp;gt;REMOTE_ADDR&amp;lt;/code&amp;gt; header.&lt;br /&gt;
*** In v0.11.0 or newer: If not provided, SS will try to guess the value using the &amp;lt;code&amp;gt;REMOTE_ADDR&amp;lt;/code&amp;gt; header.&lt;br /&gt;
* '''Response''': JSON with data for the pipeline&lt;br /&gt;
&lt;br /&gt;
If the 'Pipelines disabled on creation' setting is set, the pipeline will be disabled by default, and will not respond to queries.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 $ curl -X POST \&lt;br /&gt;
    -H&amp;quot;Authorization: ApiKey test:95141fc645ed97a95893f1f865d24687f89a27ad&amp;quot; \&lt;br /&gt;
    -H&amp;quot;Content-Type: application/json&amp;quot; \&lt;br /&gt;
    -d'{&amp;quot;uuid&amp;quot;: &amp;quot;99354557-9e6e-4918-9fe3-a65b00ecb199&amp;quot;, \&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;Test pipeline&amp;quot;, &amp;quot;create_default_locations&amp;quot;: true, \&lt;br /&gt;
        &amp;quot;api_username&amp;quot;: &amp;quot;demo&amp;quot;, \&lt;br /&gt;
        &amp;quot;api_key&amp;quot;: &amp;quot;03ecb307f5b8012f4771d245d534830378a87259&amp;quot;}' \&lt;br /&gt;
     'http://192.168.1.42:8000/api/v2/pipeline/'&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;create_default_locations&amp;quot;: true,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Test pipeline&amp;quot;,&lt;br /&gt;
    &amp;quot;remote_name&amp;quot;: &amp;quot;192.168.1.42&amp;quot;,&lt;br /&gt;
    &amp;quot;resource_uri&amp;quot;: &amp;quot;/api/v2/pipeline/99354557-9e6e-4918-9fe3-a65b00ecb199/&amp;quot;,&lt;br /&gt;
    &amp;quot;uuid&amp;quot;: &amp;quot;99354557-9e6e-4918-9fe3-a65b00ecb199&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Get pipeline details ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/pipeline/&amp;lt;UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* '''Parameters''': None&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;: Pipeline description&lt;br /&gt;
** &amp;lt;code&amp;gt;remote_name&amp;lt;/code&amp;gt;: IP or hostname of the pipeline. For use in API calls&lt;br /&gt;
** &amp;lt;code&amp;gt;resource_uri&amp;lt;/code&amp;gt;: URI for this pipeline in the API&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the pipeline&lt;br /&gt;
&lt;br /&gt;
== Space ==&lt;br /&gt;
&lt;br /&gt;
=== Get all spaces ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/space/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* '''Parameters''': Query string parameters&lt;br /&gt;
** &amp;lt;code&amp;gt;access_protocol&amp;lt;/code&amp;gt;: Protocol that the [[Storage Service#Space | Space]] uses. Must be searched based on the database code.&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Space's path&lt;br /&gt;
** &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt;: Maximum size in bytes. Can use greater than (size__gt=1024), less than (size__lt=1024), and other Django [https://docs.djangoproject.com/en/1.8/ref/models/querysets/#field-lookups field lookups].&lt;br /&gt;
** &amp;lt;code&amp;gt;used&amp;lt;/code&amp;gt;: Bytes stored in this space. Can use greater than (size__gt=1024), less than (size__lt=1024), and other Django [https://docs.djangoproject.com/en/1.8/ref/models/querysets/#field-lookups field lookups].&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the Space&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt;: Metadata on the response: number of hits, pagination information&lt;br /&gt;
** &amp;lt;code&amp;gt;objects&amp;lt;/code&amp;gt;: List of spaces. See [[#Get space details]] for format&lt;br /&gt;
&lt;br /&gt;
Returns information about all the spaces in the system.  Can be [http://django-tastypie.readthedocs.io/en/latest/resources.html#basic-filtering filtered] by several fields: access protocol, path, size, amount used, UUID and verified status. Disabled spaces are not returned.&lt;br /&gt;
&lt;br /&gt;
=== Get space details ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/space/&amp;lt;UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* '''Parameters''': None&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;access_protocol&amp;lt;/code&amp;gt;: Database code for the access protocol&lt;br /&gt;
** &amp;lt;code&amp;gt;last_verified&amp;lt;/code&amp;gt;: Date of last verification. This is a stub feature&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Space's path&lt;br /&gt;
** &amp;lt;code&amp;gt;resource_uri&amp;lt;/code&amp;gt;: URI to the resource in the API&lt;br /&gt;
** &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt;: Maximum size of the space in bytes.&lt;br /&gt;
** &amp;lt;code&amp;gt;used&amp;lt;/code&amp;gt;: Bytes stored in this space. &lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the space&lt;br /&gt;
** &amp;lt;code&amp;gt;verified&amp;lt;/code&amp;gt;: If the space is verified. This is a stub feature&lt;br /&gt;
** Other space-specific fields&lt;br /&gt;
&lt;br /&gt;
=== Browse space path ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/space/&amp;lt;UUID&amp;gt;/browse/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* '''Parameters''': Query string parameters&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Path inside the Space to look&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;entries&amp;lt;/code&amp;gt;: List of entries at path, files or directories&lt;br /&gt;
** &amp;lt;code&amp;gt;directories&amp;lt;/code&amp;gt;: List of directories in path. Subset of `entries`.&lt;br /&gt;
&lt;br /&gt;
=== Create space ===&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/archivematica/Issues/issues/36 Issue 36].&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/pipeline/space&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** Should contain fields for a new space: See the [https://www.archivematica.org/en/docs/storage-service-0.11/administrators/#id2 Storage Service Documentation] or [https://wiki.archivematica.org/Storage_Service#Space Space] for fields relevant to each type of space. Basic fields for a local file system space are listed below. &lt;br /&gt;
** &amp;lt;code&amp;gt;access_protocol&amp;lt;/code&amp;gt;: this defines the type of space&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Absolute path to the Space on the local filesystem&lt;br /&gt;
** &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt;:  (Optional) Maximum size allowed for this space. Set to 0 or leave blank for unlimited.&lt;br /&gt;
&lt;br /&gt;
Example (to create an S3 space):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ curl \&lt;br /&gt;
    -X POST \&lt;br /&gt;
    -d @payload.json \&lt;br /&gt;
    -H &amp;quot;Content-Type: application/json&amp;quot; \&lt;br /&gt;
    -H &amp;quot;Authorization: ApiKey test:test&amp;quot; \&lt;br /&gt;
        http://127.0.0.1:62081/api/v2/space/&lt;br /&gt;
&lt;br /&gt;
Where payload.json contains&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access_protocol&amp;quot;: &amp;quot;S3&amp;quot;,&lt;br /&gt;
    &amp;quot;path&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;staging_path&amp;quot;: &amp;quot;/&amp;quot;,&lt;br /&gt;
    &amp;quot;endpoint_url&amp;quot;: &amp;quot;http://127.0.0.1:12345&amp;quot;,&lt;br /&gt;
    &amp;quot;access_key_id&amp;quot;: &amp;quot;_Cah4cae1_&amp;quot;,&lt;br /&gt;
    &amp;quot;secret_access_key&amp;quot;: &amp;quot;_Thu6Ahqu_&amp;quot;,&lt;br /&gt;
    &amp;quot;region&amp;quot;: &amp;quot;us-west-2&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffffcc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Version 1: Returns paths as strings&lt;br /&gt;
Version 2: Returns all paths base64 encoded&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
&lt;br /&gt;
=== Get all locations ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/location/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
&lt;br /&gt;
=== Create new location ===&lt;br /&gt;
&lt;br /&gt;
Added in v0.12 - see [https://github.com/artefactual/archivematica-storage-service/issues/367 issue 367] and [https://github.com/archivematica/Issues/issues/37 issue 37].&lt;br /&gt;
&lt;br /&gt;
This endpoint creates a location in the storage service, but it doesn't actually create the directory that the location points to.  &lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/location/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;pipeline&amp;lt;/code&amp;gt;: URI of the pipeline.&lt;br /&gt;
** &amp;lt;code&amp;gt;space&amp;lt;/code&amp;gt;: URI of the space.&lt;br /&gt;
** &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;: If 'true' this location will be the default for it's purpose. &lt;br /&gt;
** &amp;lt;code&amp;gt;purpose&amp;lt;/code&amp;gt;: (below is a list of possible values)&lt;br /&gt;
*** &amp;lt;code&amp;gt;AR&amp;lt;/code&amp;gt; (AIP_RECOVERY)&lt;br /&gt;
*** &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; (AIP_STORAGE)&lt;br /&gt;
*** &amp;lt;code&amp;gt;CP&amp;lt;/code&amp;gt; (CURRENTLY_PROCESSING)&lt;br /&gt;
*** &amp;lt;code&amp;gt;DS&amp;lt;/code&amp;gt; (DIP_STORAGE)&lt;br /&gt;
*** &amp;lt;code&amp;gt;SD&amp;lt;/code&amp;gt; (SWORD_DEPOSIT)&lt;br /&gt;
*** &amp;lt;code&amp;gt;SS&amp;lt;/code&amp;gt; (STORAGE_SERVICE_INTERNAL)&lt;br /&gt;
*** &amp;lt;code&amp;gt;BL&amp;lt;/code&amp;gt; (BACKLOG)&lt;br /&gt;
*** &amp;lt;code&amp;gt;TS&amp;lt;/code&amp;gt; (TRANSFER_SOURCE)&lt;br /&gt;
*** &amp;lt;code&amp;gt;RP&amp;lt;/code&amp;gt; (REPLICATOR)&lt;br /&gt;
** &amp;lt;code&amp;gt;relative_path&amp;lt;/code&amp;gt;: Relative to the space's path.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -s -d '{&lt;br /&gt;
    &amp;quot;pipeline&amp;quot;: [&amp;quot;/api/v2/pipeline/90707555-244f-47af-8271-66496a6a965b/&amp;quot;],&lt;br /&gt;
    &amp;quot;purpose&amp;quot;: &amp;quot;TS&amp;quot;,&lt;br /&gt;
    &amp;quot;relative_path&amp;quot;: &amp;quot;foo/bar&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;foobar&amp;quot;,&lt;br /&gt;
    &amp;quot;space&amp;quot;: &amp;quot;/api/v2/space/141593ff-2a27-44a1-9de1-917573fa0f4a/&amp;quot;&lt;br /&gt;
}' \&lt;br /&gt;
    -X POST \&lt;br /&gt;
    -H &amp;quot;Authorization: ApiKey test:test&amp;quot; \&lt;br /&gt;
    -H &amp;quot;Content-Type: application/json&amp;quot; \&lt;br /&gt;
        &amp;quot;http://127.0.0.1:62081/api/v2/location/&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get location details ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/location/&amp;lt;UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
&lt;br /&gt;
=== Move files to this location ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/location/&amp;lt;UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;origin_location&amp;lt;/code&amp;gt;: URI of the Location the files should be moved from&lt;br /&gt;
** &amp;lt;code&amp;gt;pipeline&amp;lt;/code&amp;gt;: URI of the [[Storage Service#Pipeline | pipeline]]. Both Locations must be associated with this pipeline.&lt;br /&gt;
** &amp;lt;code&amp;gt;files&amp;lt;/code&amp;gt;: List of dicts containing &amp;lt;code&amp;gt;source&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;destination&amp;lt;/code&amp;gt;.  The source and destination are paths relative to their Location of the files to be moved.&lt;br /&gt;
&lt;br /&gt;
Intended for use with creating Transfers, SIPs, etc and other cases where files need to be moved but not tracked by the storage service.&lt;br /&gt;
&lt;br /&gt;
=== Browse location path ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/location/&amp;lt;UUID&amp;gt;/browse/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* '''Parameters''': Query string parameters&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Path inside the Location to look&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;entries&amp;lt;/code&amp;gt;: List of entries in `path`, files or directories&lt;br /&gt;
** &amp;lt;code&amp;gt;directories&amp;lt;/code&amp;gt;: List of directories in `path`. Subset of `entries`.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffffcc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Version 1: Returns paths as strings&lt;br /&gt;
Version 2: Returns all paths base64 encoded&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SWORD collection ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/location/&amp;lt;UUID&amp;gt;/sword/collection/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET, POST&lt;br /&gt;
&lt;br /&gt;
See [[Sword API]] for details&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Package ==&lt;br /&gt;
&lt;br /&gt;
=== Get all packages ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
&lt;br /&gt;
=== Create new package ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* '''Parameters''': JSON. Fields for a new package:&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the new package&lt;br /&gt;
** &amp;lt;code&amp;gt;origin_location&amp;lt;/code&amp;gt;: URI of the Location where the package is currently&lt;br /&gt;
** &amp;lt;code&amp;gt;origin_path&amp;lt;/code&amp;gt;: Path to the package, relative to the origin_location&lt;br /&gt;
** &amp;lt;code&amp;gt;current_location&amp;lt;/code&amp;gt;: URI of the Location where the package should be stored&lt;br /&gt;
** &amp;lt;code&amp;gt;current_path&amp;lt;/code&amp;gt;: Path where the package should be stored, relative to the current_location&lt;br /&gt;
** &amp;lt;code&amp;gt;package_type&amp;lt;/code&amp;gt;: Type of package this is. One of: &amp;lt;code&amp;gt;AIP&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;AIC&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DIP&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;transfer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SIP&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;file&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deposit&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt;: Size of the package&lt;br /&gt;
** &amp;lt;code&amp;gt;origin_pipeline&amp;lt;/code&amp;gt;: URI of the pipeline the package is from&lt;br /&gt;
** &amp;lt;code&amp;gt;related_package_uuid&amp;lt;/code&amp;gt;: UUID of a package that is related to this one. E.g. UUID of a DIP when storing an AIP&lt;br /&gt;
&lt;br /&gt;
Creates a database entry tracking the package (AIP, transfer, etc).  If the package is an AIP, DIP or AIC and the current_location is an AIP or DIP storage location it also moves the files from the source to destination location.  If the package is a Transfer and the current_location is transfer backlog, it is also moved.&lt;br /&gt;
&lt;br /&gt;
This is handled through the modified &amp;lt;code&amp;gt;obj_create&amp;lt;/code&amp;gt; function, which calls &amp;lt;code&amp;gt;Package.store_aip&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;Package.backlog_transfer&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get package details ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
&lt;br /&gt;
=== Update package contents ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': PUT&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest&amp;lt;/code&amp;gt;: Flag to mark that this is reingest. Reduces chance to accidentally modify an AIP.&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the existing package&lt;br /&gt;
** &amp;lt;code&amp;gt;origin_location&amp;lt;/code&amp;gt;: URI of the Location where the package is currently&lt;br /&gt;
** &amp;lt;code&amp;gt;origin_path&amp;lt;/code&amp;gt;: Path to the package, relative to the origin_location&lt;br /&gt;
** &amp;lt;code&amp;gt;current_location&amp;lt;/code&amp;gt;: URI of the Location where the package should be stored&lt;br /&gt;
** &amp;lt;code&amp;gt;current_path&amp;lt;/code&amp;gt;: Path where the package should be stored, relative to the current_location&lt;br /&gt;
** &amp;lt;code&amp;gt;package_type&amp;lt;/code&amp;gt;: Type of package this is. One of: &amp;lt;code&amp;gt;AIP&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;AIC&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt;: Size of the package&lt;br /&gt;
** &amp;lt;code&amp;gt;origin_pipeline&amp;lt;/code&amp;gt;: URI of the pipeline the package is from.  This must be the same pipeline reingest was started on (tracked through &amp;lt;code&amp;gt;Package.misc_attributes.reingest_pipeline&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Updates the contents of a package during reingest.  If the package is an AIP or AIC, currently stored in an AIP storage location, and the 'reingest' parameter is set, it will call &amp;lt;code&amp;gt;Package.finish_reingest&amp;lt;/code&amp;gt; and merge the new AIP with the existing one.&lt;br /&gt;
&lt;br /&gt;
This is implemented using a modified &amp;lt;code&amp;gt;obj_update&amp;lt;/code&amp;gt; which calls &amp;lt;code&amp;gt;obj_update_hook&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Update package metadata ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': PATCH&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest&amp;lt;/code&amp;gt;: Pipeline UUID or None.&lt;br /&gt;
&lt;br /&gt;
Used to update metadata stored in the database for the package.  Currently, this is used to update the reingest status.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffeecc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Improvement Note: Currently, this always sets Package.misc_attributes.reingest to None, regardless of what value was actually passed in.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is implemented using a modified &amp;lt;code&amp;gt;obj_update&amp;lt;/code&amp;gt; which calls &amp;lt;code&amp;gt;obj_update_hook&amp;lt;/code&amp;gt;.  &amp;lt;code&amp;gt;update_in_place&amp;lt;/code&amp;gt; also helps.&lt;br /&gt;
&lt;br /&gt;
=== Delete package request ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/delete_aip/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;event_reason&amp;lt;/code&amp;gt;: Reason for deleting the AIP&lt;br /&gt;
** &amp;lt;code&amp;gt;pipeline&amp;lt;/code&amp;gt;: UUID of the pipeline the delete request is from&lt;br /&gt;
** &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;: User ID requesting the deletion. This is the ID of the user on the pipeline, and must be an integer greater than 0.&lt;br /&gt;
** &amp;lt;code&amp;gt;user_email&amp;lt;/code&amp;gt;:  Email of the user requesting the deletion.&lt;br /&gt;
&lt;br /&gt;
=== Recover AIP request ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/recover_aip/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;event_reason&amp;lt;/code&amp;gt;: Reason for recovering the AIP&lt;br /&gt;
** &amp;lt;code&amp;gt;pipeline&amp;lt;/code&amp;gt;: URI of the pipeline the recovery request is from&lt;br /&gt;
** &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;: User ID requesting the recovery. This is the ID of the user on the pipeline, and must be an integer greater than 0.&lt;br /&gt;
** &amp;lt;code&amp;gt;user_email&amp;lt;/code&amp;gt;:  Email of the user requesting the recovery.&lt;br /&gt;
&lt;br /&gt;
=== Download single file ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/extract_file/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET, HEAD&lt;br /&gt;
* '''Parameters''': Query string parameters&lt;br /&gt;
** &amp;lt;code&amp;gt;relative_path_to_file&amp;lt;/code&amp;gt;: Path to the file to download, relative to the package path.&lt;br /&gt;
* '''Response''': Stream of the requested file&lt;br /&gt;
&lt;br /&gt;
Returns a single file from the Package.  If the package is compressed, it downloads the whole AIP and extracts it.&lt;br /&gt;
&lt;br /&gt;
This responds to HEAD because AtoM uses HEAD to check for the existence of a file. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffeecc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Improvement Note: HEAD and GET should not perform the same functions. HEAD should be updated to not return the file, and to only check for existence.  Currently, the storage service has no way to check if a file exists except by downloading and extracting this AIP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If the package is in [[Storage Service#Arkivum | Arkivum]], the package may not actually be available.  This endpoint checks if the package is locally available. If it is, it is returned as normal. If not, it returns &amp;lt;code&amp;gt;202&amp;lt;/code&amp;gt; and emails the administrator about the attempted access.&lt;br /&gt;
&lt;br /&gt;
=== Download package ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/download/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/download/&amp;lt;chunk number&amp;gt;/&amp;lt;/code&amp;gt; (for [[Storage Service#LOCKSS-o-matic | LOCKSS]] harvesting)&lt;br /&gt;
* '''Verb''': GET, HEAD&lt;br /&gt;
* '''Parameters''': None&lt;br /&gt;
* '''Response''': Stream of the package&lt;br /&gt;
&lt;br /&gt;
Returns the entire package as a single file.  If the AIP is uncompressed, create one file by using `tar`.&lt;br /&gt;
&lt;br /&gt;
If the download URL has a chunk number, it will attempt to serve the LOCKSS chunk specified for that package. If the package is not in LOCKSS, it will return the the whole package.&lt;br /&gt;
&lt;br /&gt;
This responds to HEAD because AtoM uses HEAD to check for the existence of a file. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffeecc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Improvement Note: HEAD and GET should not perform the same functions. HEAD should be updated to not return the file, and to only check for existence.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If the package is in [[Storage Service#Arkivum | Arkivum]], the package may not actually be available.  This endpoint checks if the package is locally available. If it is, it is returned as normal. If not, it returns &amp;lt;code&amp;gt;202&amp;lt;/code&amp;gt; and emails the administrator about the attempted access.&lt;br /&gt;
&lt;br /&gt;
=== Get pointer file ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/pointer_file/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* '''Parameters''': None&lt;br /&gt;
* '''Response''': Stream of the pointer file.&lt;br /&gt;
&lt;br /&gt;
=== Check fixity ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/check_fixity/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* '''Parameters''': Query string parameters&lt;br /&gt;
** &amp;lt;code&amp;gt;force_local&amp;lt;/code&amp;gt;: If true, download and run fixity on the AIP locally, instead of using the Space-provided fixity if available.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;success&amp;lt;/code&amp;gt;: True if the verification succeeded, False if the verification failed, None if the scan could not start&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: Human-readable string explaining the report; it will be empty for successful scans.&lt;br /&gt;
** &amp;lt;code&amp;gt;failures&amp;lt;/code&amp;gt;: List of 0 or more errors&lt;br /&gt;
** &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;: ISO-formated string with the datetime of the last fixity check. If the check was performed by an external system, this will be provided by that system. If not provided,or on error, it will be None.&lt;br /&gt;
&lt;br /&gt;
=== AIP storage callback request ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/send_callback/post_store/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
&lt;br /&gt;
Request to call any Callbacks configured to run post-storage for this AIP.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffeecc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Improvement Note: This only works on locally available AIPs (AIPs stored in Spaces that are available via a UNIX filesystem layer).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Get file information for package ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/contents/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;success&amp;lt;/code&amp;gt;: True&lt;br /&gt;
** &amp;lt;code&amp;gt;package&amp;lt;/code&amp;gt;: UUID of the package&lt;br /&gt;
** &amp;lt;code&amp;gt;files&amp;lt;/code&amp;gt;: List of dictionaries with file information. Each dictionary has:&lt;br /&gt;
*** &amp;lt;code&amp;gt;source_id&amp;lt;/code&amp;gt;: UUID of the file to index&lt;br /&gt;
*** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Relative path of the file inside the package&lt;br /&gt;
*** &amp;lt;code&amp;gt;source_package&amp;lt;/code&amp;gt;: UUID of the SIP this file is from&lt;br /&gt;
*** &amp;lt;code&amp;gt;checksum&amp;lt;/code&amp;gt;: Checksum of the file, or an empty string&lt;br /&gt;
*** &amp;lt;code&amp;gt;accessionid&amp;lt;/code&amp;gt;: Accession number, or an empty string&lt;br /&gt;
*** &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt;: UUID of the Archivematica dashboard this is from&lt;br /&gt;
&lt;br /&gt;
Returns metadata about every file within the package.&lt;br /&gt;
&lt;br /&gt;
=== Update file information for package ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/contents/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': PUT&lt;br /&gt;
* '''Parameters''': JSON list of dictionaries with information on the files to be added. Each dict must have the following attributes:&lt;br /&gt;
** &amp;lt;code&amp;gt;relative_path&amp;lt;/code&amp;gt;: Relative path of the file inside the package&lt;br /&gt;
** &amp;lt;code&amp;gt;fileuuid&amp;lt;/code&amp;gt;: UUID of the file to index&lt;br /&gt;
** &amp;lt;code&amp;gt;accessionid&amp;lt;/code&amp;gt;: Accession number, or an empty string&lt;br /&gt;
** &amp;lt;code&amp;gt;sipuuid&amp;lt;/code&amp;gt;: UUID of the SIP this file is from&lt;br /&gt;
** &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt;: UUID of the Archivematica dashboard this is from&lt;br /&gt;
&lt;br /&gt;
Adds a set of files to a package.&lt;br /&gt;
&lt;br /&gt;
=== Delete file information for package ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/contents/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': DELETE&lt;br /&gt;
&lt;br /&gt;
Removes all file records associated with this package.&lt;br /&gt;
&lt;br /&gt;
=== Query file information on packages ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/metadata/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET, POST&lt;br /&gt;
* '''Parameters''': Query string parameters.  Must have at least one, but not all are required&lt;br /&gt;
** &amp;lt;code&amp;gt;relative_path&amp;lt;/code&amp;gt;: Relative path of the file inside the package&lt;br /&gt;
** &amp;lt;code&amp;gt;fileuuid&amp;lt;/code&amp;gt;: UUID of the file&lt;br /&gt;
** &amp;lt;code&amp;gt;accessionid&amp;lt;/code&amp;gt;: Accession number&lt;br /&gt;
** &amp;lt;code&amp;gt;sipuuid&amp;lt;/code&amp;gt;: UUID of the SIP this file is from&lt;br /&gt;
* '''Response''': JSON. List of dicts with file information about the files that match the query.&lt;br /&gt;
** &amp;lt;code&amp;gt;accessionid&amp;lt;/code&amp;gt;: Accession number, or an empty string&lt;br /&gt;
** &amp;lt;code&amp;gt;file_extension&amp;lt;/code&amp;gt;: File extension&lt;br /&gt;
** &amp;lt;code&amp;gt;filename&amp;lt;/code&amp;gt;: Name of the file, sans path.&lt;br /&gt;
** &amp;lt;code&amp;gt;relative_path&amp;lt;/code&amp;gt;: Relative path of the file inside the package&lt;br /&gt;
** &amp;lt;code&amp;gt;fileuuid&amp;lt;/code&amp;gt;: UUID of the file to index&lt;br /&gt;
** &amp;lt;code&amp;gt;sipuuid&amp;lt;/code&amp;gt;: UUID of the SIP this file is from&lt;br /&gt;
** &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt;: UUID of the Archivematica dashboard this is from&lt;br /&gt;
&lt;br /&gt;
=== Reingest AIP ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/reingest/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;pipeline&amp;lt;/code&amp;gt;: UUID of the pipeline to reingest on&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest_type&amp;lt;/code&amp;gt;: Type of reingest to start. One of &amp;lt;code&amp;gt;METADATA_ONLY&amp;lt;/code&amp;gt; (metadata-only reingest), &amp;lt;code&amp;gt;OBJECTS&amp;lt;/code&amp;gt; (partial reingest), &amp;lt;code&amp;gt;FULL&amp;lt;/code&amp;gt; (full reingest)&lt;br /&gt;
** &amp;lt;code&amp;gt;processing_config&amp;lt;/code&amp;gt;: Optional. Name of the processing configuration to use on full reingest&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Move Package ===&lt;br /&gt;
&lt;br /&gt;
This endpoint is introduced in v0.14.&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/move/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;location_uuid&amp;lt;/code&amp;gt;: UUID of the location to send the package. The location must have the same Purpose as the package's current location (e.g. AIP Storage, DIP Storage).&lt;br /&gt;
&lt;br /&gt;
=== SWORD endpoints ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/sword/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/sword/media/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/sword/state/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See [[Sword API]] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development documentation]]&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Storage_Service_API&amp;diff=12871</id>
		<title>Storage Service API</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Storage_Service_API&amp;diff=12871"/>
		<updated>2019-02-05T13:26:33Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: /* Create new pipeline */ split command onto multiple lines for readability&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Development]] &amp;gt; Storage Service API&lt;br /&gt;
&lt;br /&gt;
The [[Storage Service]] API provides programmatic access to moving files around in storage areas that the Storage Service has access to.&lt;br /&gt;
&lt;br /&gt;
The API is written using [http://django-tastypie.readthedocs.io/en/latest/ TastyPie].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffeecc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Improvement Note: TastyPie is less well supported than [http://www.django-rest-framework.org/ Django REST Framework], both in terms of docs &amp;amp; community. We should look at replacing TastyPie with DRF.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Endpoints require authentication with a username and API key.  This can be submitted as GET parameters (eg &amp;lt;code&amp;gt;?username=test&amp;amp;api_key=e6282adabed84e39ffe451f8bf6ff1a67c1fc9f2&amp;lt;/code&amp;gt;) or as a header (eg &amp;lt;code&amp;gt;Authorization: ApiKey test:e6282adabed84e39ffe451f8bf6ff1a67c1fc9f2&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== A note about browsing ==&lt;br /&gt;
&lt;br /&gt;
A detailed schema can be found for each of the resources by adding &amp;quot;schema&amp;quot; to the get all URL.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 $ curl -X GET -H&amp;quot;Authorization: ApiKey test:95141fc645ed97a95893f1f865d24687f89a27ad&amp;quot; 'http://localhost:8000/api/v2/location/schema/?format=json&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;allowed_detail_http_methods&amp;quot;: [&lt;br /&gt;
        &amp;quot;get&amp;quot;,&lt;br /&gt;
        &amp;quot;post&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;allowed_list_http_methods&amp;quot;: [&lt;br /&gt;
        &amp;quot;get&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;default_format&amp;quot;: &amp;quot;application/json&amp;quot;,&lt;br /&gt;
    &amp;quot;default_limit&amp;quot;: 20,&lt;br /&gt;
    &amp;quot;fields&amp;quot;: {&lt;br /&gt;
        &amp;quot;description&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: false,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;No default provided.&amp;quot;,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;Unicode string data. Ex: \&amp;quot;Hello World\&amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: true,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;description&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;enabled&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: true,&lt;br /&gt;
            &amp;quot;default&amp;quot;: true,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;True if space can be accessed.&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: false,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;Enabled&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;path&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: false,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;No default provided.&amp;quot;,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;Unicode string data. Ex: \&amp;quot;Hello World\&amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: true,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;path&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;pipeline&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: false,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;No default provided.&amp;quot;,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;Many related resources. Can be either a list of URIs or list of individually nested resource data.&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: false,&lt;br /&gt;
            &amp;quot;related_schema&amp;quot;: &amp;quot;/api/v2/pipeline/schema/&amp;quot;,&lt;br /&gt;
            &amp;quot;related_type&amp;quot;: &amp;quot;to_many&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;related&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;pipeline&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;purpose&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: false,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;No default provided.&amp;quot;,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;Purpose of the space.  Eg. AIP storage, Transfer source&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: false,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;Purpose&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;quota&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: false,&lt;br /&gt;
            &amp;quot;default&amp;quot;: null,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;Size, in bytes (optional)&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: true,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: false,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;Quota&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relative_path&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: false,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;Path to location, relative to the storage space's path.&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: false,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;Relative Path&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;resource_uri&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: false,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;No default provided.&amp;quot;,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;Unicode string data. Ex: \&amp;quot;Hello World\&amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: true,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;resource uri&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;space&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: false,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;No default provided.&amp;quot;,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;A single related resource. Can be either a URI or set of nested resource data.&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: false,&lt;br /&gt;
            &amp;quot;related_schema&amp;quot;: &amp;quot;/api/v2/space/schema/&amp;quot;,&lt;br /&gt;
            &amp;quot;related_type&amp;quot;: &amp;quot;to_one&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;related&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;space&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;used&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: false,&lt;br /&gt;
            &amp;quot;default&amp;quot;: 0,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;Amount used, in bytes.&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: false,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: false,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;Used&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;uuid&amp;quot;: {&lt;br /&gt;
            &amp;quot;blank&amp;quot;: true,&lt;br /&gt;
            &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;help_text&amp;quot;: &amp;quot;Unique identifier&amp;quot;,&lt;br /&gt;
            &amp;quot;nullable&amp;quot;: false,&lt;br /&gt;
            &amp;quot;primary_key&amp;quot;: false,&lt;br /&gt;
            &amp;quot;readonly&amp;quot;: false,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;unique&amp;quot;: true,&lt;br /&gt;
            &amp;quot;verbose_name&amp;quot;: &amp;quot;uuid&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;filtering&amp;quot;: {&lt;br /&gt;
        &amp;quot;pipeline&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;purpose&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;quota&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;relative_path&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;space&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;used&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;uuid&amp;quot;: 1&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This schema, among other things, describes the fields in the resource (including the schema URI of related resource fields) and the fields that allow filtering. Valid filtering values are: Django ORM filters (e.g. startswith, exact, lte, etc.) or 1 or 2. If a filtering field is set to 2 it can be filtered over the related resource fields. For example, the locations could be filtered by their pipeline UUID setting it in a request parameter formatted with two underscore chars: &amp;lt;code&amp;gt;/api/v2/location/?pipeline__uuid=&amp;lt;uuid&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more info on how to interact with the API see:&lt;br /&gt;
&lt;br /&gt;
http://django-tastypie.readthedocs.io/en/v0.13.1/interacting.html&lt;br /&gt;
&lt;br /&gt;
== Pipeline ==&lt;br /&gt;
&lt;br /&gt;
=== Get all pipelines ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/pipeline/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* '''Parameters''': Query string parameters&lt;br /&gt;
** &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;: Description of the pipeline&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the pipeline&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt;: Metadata on the response: number of hits, pagination information&lt;br /&gt;
** &amp;lt;code&amp;gt;objects&amp;lt;/code&amp;gt;: List of pipelines. See [[#Get pipeline details]] for format&lt;br /&gt;
&lt;br /&gt;
Returns information about all the pipelines in the system.  Can be [http://django-tastypie.readthedocs.io/en/latest/resources.html#basic-filtering filtered] by the description or uuid. Disabled pipelines are not returned.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 $ curl -X GET -H&amp;quot;Authorization: ApiKey test:95141fc645ed97a95893f1f865d24687f89a27ad&amp;quot; 'http://localhost:8000/api/v2/pipeline/?description__startswith=Archivematica' | python -m json.tool&lt;br /&gt;
 {&lt;br /&gt;
     &amp;quot;meta&amp;quot;: {&lt;br /&gt;
         &amp;quot;limit&amp;quot;: 20,&lt;br /&gt;
         &amp;quot;next&amp;quot;: null,&lt;br /&gt;
         &amp;quot;offset&amp;quot;: 0,&lt;br /&gt;
         &amp;quot;previous&amp;quot;: null,&lt;br /&gt;
         &amp;quot;total_count&amp;quot;: 1&lt;br /&gt;
     },&lt;br /&gt;
     &amp;quot;objects&amp;quot;: [&lt;br /&gt;
         {&lt;br /&gt;
             &amp;quot;description&amp;quot;: &amp;quot;Archivematica on alouette&amp;quot;,&lt;br /&gt;
             &amp;quot;remote_name&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
             &amp;quot;resource_uri&amp;quot;: &amp;quot;/api/v2/pipeline/dd354557-9e6e-4918-9fe3-a65b00ecb1af/&amp;quot;,&lt;br /&gt;
             &amp;quot;uuid&amp;quot;: &amp;quot;dd354557-9e6e-4918-9fe3-a65b00ecb1af&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
     ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Create new pipeline ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/pipeline/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** Should contain fields for a new pipeline: &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;api_username&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;create_default_locations&amp;lt;/code&amp;gt;: If True, will associated default [[Storage Service#Locations | Locations]] with the newly created pipeline&lt;br /&gt;
** &amp;lt;code&amp;gt;shared_path&amp;lt;/code&amp;gt;: If default locations are created, create the [[Storage Service#Currently Processing | processing]] location at this path in the local filesystem&lt;br /&gt;
** &amp;lt;code&amp;gt;remote_name&amp;lt;/code&amp;gt;: URI of the pipeline.&lt;br /&gt;
*** Before v0.11.0: If &amp;lt;code&amp;gt;create_default_locations&amp;lt;/code&amp;gt; is set, SS will try to guess the value using the &amp;lt;code&amp;gt;REMOTE_ADDR&amp;lt;/code&amp;gt; header.&lt;br /&gt;
*** In v0.11.0 or newer: If not provided, SS will try to guess the value using the &amp;lt;code&amp;gt;REMOTE_ADDR&amp;lt;/code&amp;gt; header.&lt;br /&gt;
* '''Response''': JSON with data for the pipeline&lt;br /&gt;
&lt;br /&gt;
If the 'Pipelines disabled on creation' setting is set, the pipeline will be disabled by default, and will not respond to queries.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
$ curl -X POST \&lt;br /&gt;
    -H&amp;quot;Authorization: ApiKey test:95141fc645ed97a95893f1f865d24687f89a27ad&amp;quot; \&lt;br /&gt;
    -H&amp;quot;Content-Type: application/json&amp;quot; \&lt;br /&gt;
    -d'{&amp;quot;uuid&amp;quot;: &amp;quot;99354557-9e6e-4918-9fe3-a65b00ecb199&amp;quot;, \&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;Test pipeline&amp;quot;, &amp;quot;create_default_locations&amp;quot;: true, \&lt;br /&gt;
        &amp;quot;api_username&amp;quot;: &amp;quot;demo&amp;quot;, \&lt;br /&gt;
        &amp;quot;api_key&amp;quot;: &amp;quot;03ecb307f5b8012f4771d245d534830378a87259&amp;quot;}' \&lt;br /&gt;
     'http://192.168.1.42:8000/api/v2/pipeline/'&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;create_default_locations&amp;quot;: true,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Test pipeline&amp;quot;,&lt;br /&gt;
    &amp;quot;remote_name&amp;quot;: &amp;quot;192.168.1.42&amp;quot;,&lt;br /&gt;
    &amp;quot;resource_uri&amp;quot;: &amp;quot;/api/v2/pipeline/99354557-9e6e-4918-9fe3-a65b00ecb199/&amp;quot;,&lt;br /&gt;
    &amp;quot;uuid&amp;quot;: &amp;quot;99354557-9e6e-4918-9fe3-a65b00ecb199&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Get pipeline details ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/pipeline/&amp;lt;UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* '''Parameters''': None&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;: Pipeline description&lt;br /&gt;
** &amp;lt;code&amp;gt;remote_name&amp;lt;/code&amp;gt;: IP or hostname of the pipeline. For use in API calls&lt;br /&gt;
** &amp;lt;code&amp;gt;resource_uri&amp;lt;/code&amp;gt;: URI for this pipeline in the API&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the pipeline&lt;br /&gt;
&lt;br /&gt;
== Space ==&lt;br /&gt;
&lt;br /&gt;
=== Get all spaces ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/space/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* '''Parameters''': Query string parameters&lt;br /&gt;
** &amp;lt;code&amp;gt;access_protocol&amp;lt;/code&amp;gt;: Protocol that the [[Storage Service#Space | Space]] uses. Must be searched based on the database code.&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Space's path&lt;br /&gt;
** &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt;: Maximum size in bytes. Can use greater than (size__gt=1024), less than (size__lt=1024), and other Django [https://docs.djangoproject.com/en/1.8/ref/models/querysets/#field-lookups field lookups].&lt;br /&gt;
** &amp;lt;code&amp;gt;used&amp;lt;/code&amp;gt;: Bytes stored in this space. Can use greater than (size__gt=1024), less than (size__lt=1024), and other Django [https://docs.djangoproject.com/en/1.8/ref/models/querysets/#field-lookups field lookups].&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the Space&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt;: Metadata on the response: number of hits, pagination information&lt;br /&gt;
** &amp;lt;code&amp;gt;objects&amp;lt;/code&amp;gt;: List of spaces. See [[#Get space details]] for format&lt;br /&gt;
&lt;br /&gt;
Returns information about all the spaces in the system.  Can be [http://django-tastypie.readthedocs.io/en/latest/resources.html#basic-filtering filtered] by several fields: access protocol, path, size, amount used, UUID and verified status. Disabled spaces are not returned.&lt;br /&gt;
&lt;br /&gt;
=== Get space details ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/space/&amp;lt;UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* '''Parameters''': None&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;access_protocol&amp;lt;/code&amp;gt;: Database code for the access protocol&lt;br /&gt;
** &amp;lt;code&amp;gt;last_verified&amp;lt;/code&amp;gt;: Date of last verification. This is a stub feature&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Space's path&lt;br /&gt;
** &amp;lt;code&amp;gt;resource_uri&amp;lt;/code&amp;gt;: URI to the resource in the API&lt;br /&gt;
** &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt;: Maximum size of the space in bytes.&lt;br /&gt;
** &amp;lt;code&amp;gt;used&amp;lt;/code&amp;gt;: Bytes stored in this space. &lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the space&lt;br /&gt;
** &amp;lt;code&amp;gt;verified&amp;lt;/code&amp;gt;: If the space is verified. This is a stub feature&lt;br /&gt;
** Other space-specific fields&lt;br /&gt;
&lt;br /&gt;
=== Browse space path ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/space/&amp;lt;UUID&amp;gt;/browse/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* '''Parameters''': Query string parameters&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Path inside the Space to look&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;entries&amp;lt;/code&amp;gt;: List of entries at path, files or directories&lt;br /&gt;
** &amp;lt;code&amp;gt;directories&amp;lt;/code&amp;gt;: List of directories in path. Subset of `entries`.&lt;br /&gt;
&lt;br /&gt;
=== Create space ===&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/archivematica/Issues/issues/36 Issue 36].&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/pipeline/space&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** Should contain fields for a new space: See the [https://www.archivematica.org/en/docs/storage-service-0.11/administrators/#id2 Storage Service Documentation] or [https://wiki.archivematica.org/Storage_Service#Space Space] for fields relevant to each type of space. Basic fields for a local file system space are listed below. &lt;br /&gt;
** &amp;lt;code&amp;gt;access_protocol&amp;lt;/code&amp;gt;: this defines the type of space&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Absolute path to the Space on the local filesystem&lt;br /&gt;
** &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt;:  (Optional) Maximum size allowed for this space. Set to 0 or leave blank for unlimited.&lt;br /&gt;
&lt;br /&gt;
Example (to create an S3 space):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ curl \&lt;br /&gt;
    -X POST \&lt;br /&gt;
    -d @payload.json \&lt;br /&gt;
    -H &amp;quot;Content-Type: application/json&amp;quot; \&lt;br /&gt;
    -H &amp;quot;Authorization: ApiKey test:test&amp;quot; \&lt;br /&gt;
        http://127.0.0.1:62081/api/v2/space/&lt;br /&gt;
&lt;br /&gt;
Where payload.json contains&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access_protocol&amp;quot;: &amp;quot;S3&amp;quot;,&lt;br /&gt;
    &amp;quot;path&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;staging_path&amp;quot;: &amp;quot;/&amp;quot;,&lt;br /&gt;
    &amp;quot;endpoint_url&amp;quot;: &amp;quot;http://127.0.0.1:12345&amp;quot;,&lt;br /&gt;
    &amp;quot;access_key_id&amp;quot;: &amp;quot;_Cah4cae1_&amp;quot;,&lt;br /&gt;
    &amp;quot;secret_access_key&amp;quot;: &amp;quot;_Thu6Ahqu_&amp;quot;,&lt;br /&gt;
    &amp;quot;region&amp;quot;: &amp;quot;us-west-2&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffffcc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Version 1: Returns paths as strings&lt;br /&gt;
Version 2: Returns all paths base64 encoded&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
&lt;br /&gt;
=== Get all locations ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/location/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
&lt;br /&gt;
=== Create new location ===&lt;br /&gt;
&lt;br /&gt;
Added in v0.12 - see [https://github.com/artefactual/archivematica-storage-service/issues/367 issue 367] and [https://github.com/archivematica/Issues/issues/37 issue 37].&lt;br /&gt;
&lt;br /&gt;
This endpoint creates a location in the storage service, but it doesn't actually create the directory that the location points to.  &lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/location/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;pipeline&amp;lt;/code&amp;gt;: URI of the pipeline.&lt;br /&gt;
** &amp;lt;code&amp;gt;space&amp;lt;/code&amp;gt;: URI of the space.&lt;br /&gt;
** &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;: If 'true' this location will be the default for it's purpose. &lt;br /&gt;
** &amp;lt;code&amp;gt;purpose&amp;lt;/code&amp;gt;: (below is a list of possible values)&lt;br /&gt;
*** &amp;lt;code&amp;gt;AR&amp;lt;/code&amp;gt; (AIP_RECOVERY)&lt;br /&gt;
*** &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; (AIP_STORAGE)&lt;br /&gt;
*** &amp;lt;code&amp;gt;CP&amp;lt;/code&amp;gt; (CURRENTLY_PROCESSING)&lt;br /&gt;
*** &amp;lt;code&amp;gt;DS&amp;lt;/code&amp;gt; (DIP_STORAGE)&lt;br /&gt;
*** &amp;lt;code&amp;gt;SD&amp;lt;/code&amp;gt; (SWORD_DEPOSIT)&lt;br /&gt;
*** &amp;lt;code&amp;gt;SS&amp;lt;/code&amp;gt; (STORAGE_SERVICE_INTERNAL)&lt;br /&gt;
*** &amp;lt;code&amp;gt;BL&amp;lt;/code&amp;gt; (BACKLOG)&lt;br /&gt;
*** &amp;lt;code&amp;gt;TS&amp;lt;/code&amp;gt; (TRANSFER_SOURCE)&lt;br /&gt;
*** &amp;lt;code&amp;gt;RP&amp;lt;/code&amp;gt; (REPLICATOR)&lt;br /&gt;
** &amp;lt;code&amp;gt;relative_path&amp;lt;/code&amp;gt;: Relative to the space's path.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -s -d '{&lt;br /&gt;
    &amp;quot;pipeline&amp;quot;: [&amp;quot;/api/v2/pipeline/90707555-244f-47af-8271-66496a6a965b/&amp;quot;],&lt;br /&gt;
    &amp;quot;purpose&amp;quot;: &amp;quot;TS&amp;quot;,&lt;br /&gt;
    &amp;quot;relative_path&amp;quot;: &amp;quot;foo/bar&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;foobar&amp;quot;,&lt;br /&gt;
    &amp;quot;space&amp;quot;: &amp;quot;/api/v2/space/141593ff-2a27-44a1-9de1-917573fa0f4a/&amp;quot;&lt;br /&gt;
}' \&lt;br /&gt;
    -X POST \&lt;br /&gt;
    -H &amp;quot;Authorization: ApiKey test:test&amp;quot; \&lt;br /&gt;
    -H &amp;quot;Content-Type: application/json&amp;quot; \&lt;br /&gt;
        &amp;quot;http://127.0.0.1:62081/api/v2/location/&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get location details ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/location/&amp;lt;UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
&lt;br /&gt;
=== Move files to this location ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/location/&amp;lt;UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;origin_location&amp;lt;/code&amp;gt;: URI of the Location the files should be moved from&lt;br /&gt;
** &amp;lt;code&amp;gt;pipeline&amp;lt;/code&amp;gt;: URI of the [[Storage Service#Pipeline | pipeline]]. Both Locations must be associated with this pipeline.&lt;br /&gt;
** &amp;lt;code&amp;gt;files&amp;lt;/code&amp;gt;: List of dicts containing &amp;lt;code&amp;gt;source&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;destination&amp;lt;/code&amp;gt;.  The source and destination are paths relative to their Location of the files to be moved.&lt;br /&gt;
&lt;br /&gt;
Intended for use with creating Transfers, SIPs, etc and other cases where files need to be moved but not tracked by the storage service.&lt;br /&gt;
&lt;br /&gt;
=== Browse location path ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/location/&amp;lt;UUID&amp;gt;/browse/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* '''Parameters''': Query string parameters&lt;br /&gt;
** &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;: Path inside the Location to look&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;entries&amp;lt;/code&amp;gt;: List of entries in `path`, files or directories&lt;br /&gt;
** &amp;lt;code&amp;gt;directories&amp;lt;/code&amp;gt;: List of directories in `path`. Subset of `entries`.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffffcc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Version 1: Returns paths as strings&lt;br /&gt;
Version 2: Returns all paths base64 encoded&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SWORD collection ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/location/&amp;lt;UUID&amp;gt;/sword/collection/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET, POST&lt;br /&gt;
&lt;br /&gt;
See [[Sword API]] for details&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Package ==&lt;br /&gt;
&lt;br /&gt;
=== Get all packages ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
&lt;br /&gt;
=== Create new package ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* '''Parameters''': JSON. Fields for a new package:&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the new package&lt;br /&gt;
** &amp;lt;code&amp;gt;origin_location&amp;lt;/code&amp;gt;: URI of the Location where the package is currently&lt;br /&gt;
** &amp;lt;code&amp;gt;origin_path&amp;lt;/code&amp;gt;: Path to the package, relative to the origin_location&lt;br /&gt;
** &amp;lt;code&amp;gt;current_location&amp;lt;/code&amp;gt;: URI of the Location where the package should be stored&lt;br /&gt;
** &amp;lt;code&amp;gt;current_path&amp;lt;/code&amp;gt;: Path where the package should be stored, relative to the current_location&lt;br /&gt;
** &amp;lt;code&amp;gt;package_type&amp;lt;/code&amp;gt;: Type of package this is. One of: &amp;lt;code&amp;gt;AIP&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;AIC&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DIP&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;transfer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SIP&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;file&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deposit&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt;: Size of the package&lt;br /&gt;
** &amp;lt;code&amp;gt;origin_pipeline&amp;lt;/code&amp;gt;: URI of the pipeline the package is from&lt;br /&gt;
** &amp;lt;code&amp;gt;related_package_uuid&amp;lt;/code&amp;gt;: UUID of a package that is related to this one. E.g. UUID of a DIP when storing an AIP&lt;br /&gt;
&lt;br /&gt;
Creates a database entry tracking the package (AIP, transfer, etc).  If the package is an AIP, DIP or AIC and the current_location is an AIP or DIP storage location it also moves the files from the source to destination location.  If the package is a Transfer and the current_location is transfer backlog, it is also moved.&lt;br /&gt;
&lt;br /&gt;
This is handled through the modified &amp;lt;code&amp;gt;obj_create&amp;lt;/code&amp;gt; function, which calls &amp;lt;code&amp;gt;Package.store_aip&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;Package.backlog_transfer&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get package details ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
&lt;br /&gt;
=== Update package contents ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': PUT&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest&amp;lt;/code&amp;gt;: Flag to mark that this is reingest. Reduces chance to accidentally modify an AIP.&lt;br /&gt;
** &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt;: UUID of the existing package&lt;br /&gt;
** &amp;lt;code&amp;gt;origin_location&amp;lt;/code&amp;gt;: URI of the Location where the package is currently&lt;br /&gt;
** &amp;lt;code&amp;gt;origin_path&amp;lt;/code&amp;gt;: Path to the package, relative to the origin_location&lt;br /&gt;
** &amp;lt;code&amp;gt;current_location&amp;lt;/code&amp;gt;: URI of the Location where the package should be stored&lt;br /&gt;
** &amp;lt;code&amp;gt;current_path&amp;lt;/code&amp;gt;: Path where the package should be stored, relative to the current_location&lt;br /&gt;
** &amp;lt;code&amp;gt;package_type&amp;lt;/code&amp;gt;: Type of package this is. One of: &amp;lt;code&amp;gt;AIP&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;AIC&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt;: Size of the package&lt;br /&gt;
** &amp;lt;code&amp;gt;origin_pipeline&amp;lt;/code&amp;gt;: URI of the pipeline the package is from.  This must be the same pipeline reingest was started on (tracked through &amp;lt;code&amp;gt;Package.misc_attributes.reingest_pipeline&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Updates the contents of a package during reingest.  If the package is an AIP or AIC, currently stored in an AIP storage location, and the 'reingest' parameter is set, it will call &amp;lt;code&amp;gt;Package.finish_reingest&amp;lt;/code&amp;gt; and merge the new AIP with the existing one.&lt;br /&gt;
&lt;br /&gt;
This is implemented using a modified &amp;lt;code&amp;gt;obj_update&amp;lt;/code&amp;gt; which calls &amp;lt;code&amp;gt;obj_update_hook&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Update package metadata ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': PATCH&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest&amp;lt;/code&amp;gt;: Pipeline UUID or None.&lt;br /&gt;
&lt;br /&gt;
Used to update metadata stored in the database for the package.  Currently, this is used to update the reingest status.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffeecc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Improvement Note: Currently, this always sets Package.misc_attributes.reingest to None, regardless of what value was actually passed in.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is implemented using a modified &amp;lt;code&amp;gt;obj_update&amp;lt;/code&amp;gt; which calls &amp;lt;code&amp;gt;obj_update_hook&amp;lt;/code&amp;gt;.  &amp;lt;code&amp;gt;update_in_place&amp;lt;/code&amp;gt; also helps.&lt;br /&gt;
&lt;br /&gt;
=== Delete package request ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/delete_aip/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;event_reason&amp;lt;/code&amp;gt;: Reason for deleting the AIP&lt;br /&gt;
** &amp;lt;code&amp;gt;pipeline&amp;lt;/code&amp;gt;: UUID of the pipeline the delete request is from&lt;br /&gt;
** &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;: User ID requesting the deletion. This is the ID of the user on the pipeline, and must be an integer greater than 0.&lt;br /&gt;
** &amp;lt;code&amp;gt;user_email&amp;lt;/code&amp;gt;:  Email of the user requesting the deletion.&lt;br /&gt;
&lt;br /&gt;
=== Recover AIP request ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/recover_aip/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;event_reason&amp;lt;/code&amp;gt;: Reason for recovering the AIP&lt;br /&gt;
** &amp;lt;code&amp;gt;pipeline&amp;lt;/code&amp;gt;: URI of the pipeline the recovery request is from&lt;br /&gt;
** &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;: User ID requesting the recovery. This is the ID of the user on the pipeline, and must be an integer greater than 0.&lt;br /&gt;
** &amp;lt;code&amp;gt;user_email&amp;lt;/code&amp;gt;:  Email of the user requesting the recovery.&lt;br /&gt;
&lt;br /&gt;
=== Download single file ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/extract_file/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET, HEAD&lt;br /&gt;
* '''Parameters''': Query string parameters&lt;br /&gt;
** &amp;lt;code&amp;gt;relative_path_to_file&amp;lt;/code&amp;gt;: Path to the file to download, relative to the package path.&lt;br /&gt;
* '''Response''': Stream of the requested file&lt;br /&gt;
&lt;br /&gt;
Returns a single file from the Package.  If the package is compressed, it downloads the whole AIP and extracts it.&lt;br /&gt;
&lt;br /&gt;
This responds to HEAD because AtoM uses HEAD to check for the existence of a file. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffeecc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Improvement Note: HEAD and GET should not perform the same functions. HEAD should be updated to not return the file, and to only check for existence.  Currently, the storage service has no way to check if a file exists except by downloading and extracting this AIP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If the package is in [[Storage Service#Arkivum | Arkivum]], the package may not actually be available.  This endpoint checks if the package is locally available. If it is, it is returned as normal. If not, it returns &amp;lt;code&amp;gt;202&amp;lt;/code&amp;gt; and emails the administrator about the attempted access.&lt;br /&gt;
&lt;br /&gt;
=== Download package ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/download/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/download/&amp;lt;chunk number&amp;gt;/&amp;lt;/code&amp;gt; (for [[Storage Service#LOCKSS-o-matic | LOCKSS]] harvesting)&lt;br /&gt;
* '''Verb''': GET, HEAD&lt;br /&gt;
* '''Parameters''': None&lt;br /&gt;
* '''Response''': Stream of the package&lt;br /&gt;
&lt;br /&gt;
Returns the entire package as a single file.  If the AIP is uncompressed, create one file by using `tar`.&lt;br /&gt;
&lt;br /&gt;
If the download URL has a chunk number, it will attempt to serve the LOCKSS chunk specified for that package. If the package is not in LOCKSS, it will return the the whole package.&lt;br /&gt;
&lt;br /&gt;
This responds to HEAD because AtoM uses HEAD to check for the existence of a file. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffeecc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Improvement Note: HEAD and GET should not perform the same functions. HEAD should be updated to not return the file, and to only check for existence.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If the package is in [[Storage Service#Arkivum | Arkivum]], the package may not actually be available.  This endpoint checks if the package is locally available. If it is, it is returned as normal. If not, it returns &amp;lt;code&amp;gt;202&amp;lt;/code&amp;gt; and emails the administrator about the attempted access.&lt;br /&gt;
&lt;br /&gt;
=== Get pointer file ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/pointer_file/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* '''Parameters''': None&lt;br /&gt;
* '''Response''': Stream of the pointer file.&lt;br /&gt;
&lt;br /&gt;
=== Check fixity ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/check_fixity/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* '''Parameters''': Query string parameters&lt;br /&gt;
** &amp;lt;code&amp;gt;force_local&amp;lt;/code&amp;gt;: If true, download and run fixity on the AIP locally, instead of using the Space-provided fixity if available.&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;success&amp;lt;/code&amp;gt;: True if the verification succeeded, False if the verification failed, None if the scan could not start&lt;br /&gt;
** &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt;: Human-readable string explaining the report; it will be empty for successful scans.&lt;br /&gt;
** &amp;lt;code&amp;gt;failures&amp;lt;/code&amp;gt;: List of 0 or more errors&lt;br /&gt;
** &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;: ISO-formated string with the datetime of the last fixity check. If the check was performed by an external system, this will be provided by that system. If not provided,or on error, it will be None.&lt;br /&gt;
&lt;br /&gt;
=== AIP storage callback request ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/send_callback/post_store/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
&lt;br /&gt;
Request to call any Callbacks configured to run post-storage for this AIP.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#ffeecc;&amp;quot; cellpadding=&amp;quot;10&amp;quot;;&lt;br /&gt;
| Improvement Note: This only works on locally available AIPs (AIPs stored in Spaces that are available via a UNIX filesystem layer).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Get file information for package ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/contents/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET&lt;br /&gt;
* '''Response''': JSON&lt;br /&gt;
** &amp;lt;code&amp;gt;success&amp;lt;/code&amp;gt;: True&lt;br /&gt;
** &amp;lt;code&amp;gt;package&amp;lt;/code&amp;gt;: UUID of the package&lt;br /&gt;
** &amp;lt;code&amp;gt;files&amp;lt;/code&amp;gt;: List of dictionaries with file information. Each dictionary has:&lt;br /&gt;
*** &amp;lt;code&amp;gt;source_id&amp;lt;/code&amp;gt;: UUID of the file to index&lt;br /&gt;
*** &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;: Relative path of the file inside the package&lt;br /&gt;
*** &amp;lt;code&amp;gt;source_package&amp;lt;/code&amp;gt;: UUID of the SIP this file is from&lt;br /&gt;
*** &amp;lt;code&amp;gt;checksum&amp;lt;/code&amp;gt;: Checksum of the file, or an empty string&lt;br /&gt;
*** &amp;lt;code&amp;gt;accessionid&amp;lt;/code&amp;gt;: Accession number, or an empty string&lt;br /&gt;
*** &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt;: UUID of the Archivematica dashboard this is from&lt;br /&gt;
&lt;br /&gt;
Returns metadata about every file within the package.&lt;br /&gt;
&lt;br /&gt;
=== Update file information for package ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/contents/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': PUT&lt;br /&gt;
* '''Parameters''': JSON list of dictionaries with information on the files to be added. Each dict must have the following attributes:&lt;br /&gt;
** &amp;lt;code&amp;gt;relative_path&amp;lt;/code&amp;gt;: Relative path of the file inside the package&lt;br /&gt;
** &amp;lt;code&amp;gt;fileuuid&amp;lt;/code&amp;gt;: UUID of the file to index&lt;br /&gt;
** &amp;lt;code&amp;gt;accessionid&amp;lt;/code&amp;gt;: Accession number, or an empty string&lt;br /&gt;
** &amp;lt;code&amp;gt;sipuuid&amp;lt;/code&amp;gt;: UUID of the SIP this file is from&lt;br /&gt;
** &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt;: UUID of the Archivematica dashboard this is from&lt;br /&gt;
&lt;br /&gt;
Adds a set of files to a package.&lt;br /&gt;
&lt;br /&gt;
=== Delete file information for package ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/contents/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': DELETE&lt;br /&gt;
&lt;br /&gt;
Removes all file records associated with this package.&lt;br /&gt;
&lt;br /&gt;
=== Query file information on packages ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/metadata/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': GET, POST&lt;br /&gt;
* '''Parameters''': Query string parameters.  Must have at least one, but not all are required&lt;br /&gt;
** &amp;lt;code&amp;gt;relative_path&amp;lt;/code&amp;gt;: Relative path of the file inside the package&lt;br /&gt;
** &amp;lt;code&amp;gt;fileuuid&amp;lt;/code&amp;gt;: UUID of the file&lt;br /&gt;
** &amp;lt;code&amp;gt;accessionid&amp;lt;/code&amp;gt;: Accession number&lt;br /&gt;
** &amp;lt;code&amp;gt;sipuuid&amp;lt;/code&amp;gt;: UUID of the SIP this file is from&lt;br /&gt;
* '''Response''': JSON. List of dicts with file information about the files that match the query.&lt;br /&gt;
** &amp;lt;code&amp;gt;accessionid&amp;lt;/code&amp;gt;: Accession number, or an empty string&lt;br /&gt;
** &amp;lt;code&amp;gt;file_extension&amp;lt;/code&amp;gt;: File extension&lt;br /&gt;
** &amp;lt;code&amp;gt;filename&amp;lt;/code&amp;gt;: Name of the file, sans path.&lt;br /&gt;
** &amp;lt;code&amp;gt;relative_path&amp;lt;/code&amp;gt;: Relative path of the file inside the package&lt;br /&gt;
** &amp;lt;code&amp;gt;fileuuid&amp;lt;/code&amp;gt;: UUID of the file to index&lt;br /&gt;
** &amp;lt;code&amp;gt;sipuuid&amp;lt;/code&amp;gt;: UUID of the SIP this file is from&lt;br /&gt;
** &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt;: UUID of the Archivematica dashboard this is from&lt;br /&gt;
&lt;br /&gt;
=== Reingest AIP ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/reingest/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;pipeline&amp;lt;/code&amp;gt;: UUID of the pipeline to reingest on&lt;br /&gt;
** &amp;lt;code&amp;gt;reingest_type&amp;lt;/code&amp;gt;: Type of reingest to start. One of &amp;lt;code&amp;gt;METADATA_ONLY&amp;lt;/code&amp;gt; (metadata-only reingest), &amp;lt;code&amp;gt;OBJECTS&amp;lt;/code&amp;gt; (partial reingest), &amp;lt;code&amp;gt;FULL&amp;lt;/code&amp;gt; (full reingest)&lt;br /&gt;
** &amp;lt;code&amp;gt;processing_config&amp;lt;/code&amp;gt;: Optional. Name of the processing configuration to use on full reingest&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Move Package ===&lt;br /&gt;
&lt;br /&gt;
This endpoint is introduced in v0.14.&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/move/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Verb''': POST&lt;br /&gt;
* '''Parameters''': JSON body&lt;br /&gt;
** &amp;lt;code&amp;gt;location_uuid&amp;lt;/code&amp;gt;: UUID of the location to send the package. The location must have the same Purpose as the package's current location (e.g. AIP Storage, DIP Storage).&lt;br /&gt;
&lt;br /&gt;
=== SWORD endpoints ===&lt;br /&gt;
&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/sword/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/sword/media/&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''URL''': &amp;lt;code&amp;gt;/api/v2/file/&amp;lt;UUID&amp;gt;/sword/state/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See [[Sword API]] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development documentation]]&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Merging&amp;diff=12856</id>
		<title>Merging</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Merging&amp;diff=12856"/>
		<updated>2019-01-18T08:38:30Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: /* Merge process */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Development]] &amp;gt; Merging &amp;amp; Branches&lt;br /&gt;
&lt;br /&gt;
== Branching guidelines ==&lt;br /&gt;
&lt;br /&gt;
Guidelines on when to create branches for new development in Archivematica projects.  Short answer: always create branches!&lt;br /&gt;
&lt;br /&gt;
* All development work happens in branches - nothing is committed directly to master, qa/ or stable/ branches&lt;br /&gt;
* Development branches should follow the naming format: &amp;lt;code&amp;gt;dev/issue-####-short-description&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;dev/&amp;lt;/code&amp;gt; marks it as being a development branch, not for QA integration or a stable release&lt;br /&gt;
** &amp;lt;code&amp;gt;issue-####&amp;lt;/code&amp;gt; is the Redmine ticket that the work is mostly related to.  If the branch expands in scope to include multiple tickets later, that's fine, and don't worry about renaming branches&lt;br /&gt;
** &amp;lt;code&amp;gt;short-description&amp;lt;/code&amp;gt; is a couple word description of the branch, to make it easier to remember what the topic of the branch is.&lt;br /&gt;
** Example: &amp;lt;code&amp;gt;dev/issue-8161-dashboard-i18n&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;dev/issue-8693-dataverse&amp;lt;/code&amp;gt;&lt;br /&gt;
* Development branches should generally be create from the branch they will be merged into. In most cases, this is master, qa/1.x (Archivematica) or qa/0.x (Storage Service). If something is a patch for an old release, it may be more appropriate to branch from the old stable branch (e.g. stable/1.5.x)&lt;br /&gt;
* All branches should undergo code review before being merged into the target branch. If something was developed for an old release, it should be cherry-picked to the current development branch, and a comment with the commit hash should be left in the pull request for tracking.&lt;br /&gt;
&lt;br /&gt;
== Code review &amp;amp; approval ==&lt;br /&gt;
&lt;br /&gt;
All code changes merged into a stable or qa branch must go through code review.  We use Github's pull request feature for code review. Every change being submitted to an Artefactual project should be submitted as a pull request to the appropriate repository. &lt;br /&gt;
&lt;br /&gt;
Another core contributor (usually an Artefactual employee) will review the code for content, style and suitability in the project. A more extensive guideline to code review is [https://github.com/artefactual/archivematica/blob/qa/1.x/code_review.md also available].  After the reviewer is satisfied with the code, they will approve it on github. If at least one reviewer approves, and there are no disapprovals, the branch can be merged.&lt;br /&gt;
&lt;br /&gt;
In general, the original contributor will [[#Merge process | merge the branch]].  For external contributions, the reviewer can merge or cherry-pick the commits.  This will leave the Author correct in git, but update the committer.&lt;br /&gt;
&lt;br /&gt;
== Merge process ==&lt;br /&gt;
&lt;br /&gt;
We use a rebase-based workflow, where branches are brought up to date with the latest stable by rebasing them. (This is compared to a merge-based workflow, where branches are merged, and conflicts resolved in the merge commit).  This shows the process for merging development branch &amp;lt;code&amp;gt;dev/test&amp;lt;/code&amp;gt; into target branch &amp;lt;code&amp;gt;qa/1.x&amp;lt;/code&amp;gt;. The target branch is usually qa/1.x. &lt;br /&gt;
&lt;br /&gt;
The instructions are formatted: &amp;lt;code&amp;gt;(current branch) $ &amp;lt;command to run&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Check your remote is set correctly&lt;br /&gt;
#* &amp;lt;code&amp;gt;$ git remote -v&amp;lt;/code&amp;gt; should show &amp;lt;code&amp;gt;origin https://github.com/&amp;lt;organisation&amp;gt;/&amp;lt;repository-name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Archivematica uses GitHub now as its primary host with a mirror in GitLab so it would be very rare that your &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt; would be something different. &lt;br /&gt;
# Ensure your copy of the target branch is up to date, in most cases this will be &amp;lt;code&amp;gt;qa/1.x&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &amp;lt;code&amp;gt;$ git checkout qa/1.x&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &amp;lt;code&amp;gt;(master) $ git pull --rebase &amp;lt;/code&amp;gt;&lt;br /&gt;
# Ensure your development branch is based off the latest target branch&lt;br /&gt;
#* &amp;lt;code&amp;gt;$ git checkout dev/test&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &amp;lt;code&amp;gt;(dev/test) $ git rebase qa/1.x&amp;lt;/code&amp;gt;&lt;br /&gt;
# Check that your changes still work after rebasing&lt;br /&gt;
# Check tests pass: &lt;br /&gt;
#* In the docker-compose environment use the &amp;lt;code&amp;gt;MakeFile&amp;lt;/code&amp;gt; tests, e.g. &amp;lt;code&amp;gt;make test-mcp-client&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Push your rebased development branch back to GitHub and ensure the Travis CI checks pass before merging (see below). &lt;br /&gt;
# Push your newly-rebased branch to remote.  Because this is a rebase, which changes history, you'll need --force. The rebased dev branch has to be pushed before the master branch is or github gets confused.&lt;br /&gt;
#* '''Never force push on a stable/, qa/ or master branch!'''&lt;br /&gt;
#* &amp;lt;code&amp;gt;(dev/test) $ git push -f&amp;lt;/code&amp;gt;&lt;br /&gt;
# Fast-forward merge&lt;br /&gt;
#* &amp;lt;code&amp;gt;$ git checkout qa/1.x&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &amp;lt;code&amp;gt;(master) $ git merge dev/test&amp;lt;/code&amp;gt;&lt;br /&gt;
# Push merge!&lt;br /&gt;
#* &amp;lt;code&amp;gt;(master) $ git push&amp;lt;/code&amp;gt;&lt;br /&gt;
# Delete dev branch&lt;br /&gt;
#* Locally: &amp;lt;code&amp;gt;(master) $ git branch -d dev/test&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Remote: &amp;lt;code&amp;gt;(master) $ git push origin --delete dev/test&amp;lt;/code&amp;gt;&lt;br /&gt;
# Update the related ticket, if needed&lt;br /&gt;
# You're done!&lt;br /&gt;
&lt;br /&gt;
== Proposed changes ==&lt;br /&gt;
&lt;br /&gt;
=== Forks ===&lt;br /&gt;
&lt;br /&gt;
* '''Current status''': All development branches are created in the artefactual (or artefactual-labs) owned repository, and core contributors (usually Artefactual employees) commit directly to the official repository&lt;br /&gt;
* '''Proposed change''': Development happens in contributor's forks, and the official repo contains only stable &amp;amp; QA branches&lt;br /&gt;
* '''Pros''':&lt;br /&gt;
** Fewer branches in the official repository, so there is less clutter and noise for people watching activity&lt;br /&gt;
** Handles more contributors, since there won't be dozens or hundreds of branches of uncertain development status&lt;br /&gt;
** Contribution process is the same for external and internal contributors&lt;br /&gt;
** Contributors can handle their repository branches however they want - naming conventions, deleting old branches or not, etc&lt;br /&gt;
* '''Cons''':&lt;br /&gt;
** Potential confusion about which repository is the correct official one&lt;br /&gt;
** Potential to push changes to the wrong repo (e.g. push a development branch to the official repo instead of the contributor's fork)&lt;br /&gt;
** Developers have to keep 2 repositories up to date: upstream and their fork&lt;br /&gt;
** Harder for analysts to check out development code, since they would have to set their remote to the contributor's fork&lt;br /&gt;
&lt;br /&gt;
=== Hybrid merge/rebase model ===&lt;br /&gt;
&lt;br /&gt;
* '''Current status''': All branches are rebased onto their target branch before being (fast-forward) merged&lt;br /&gt;
* '''Proposed change''': Small or minor branches are rebased, larger feature branches are true merged&lt;br /&gt;
* '''Pros''':&lt;br /&gt;
** Commit history clearly shows 'feature', and which commits came in together as a unit&lt;br /&gt;
** Rebasing small branches preserves clean history for minor changes&lt;br /&gt;
** Better reflects nature of development - shows minor changes as happening inline, and major changes as happening in parallel&lt;br /&gt;
** Merge commits are clear places to look for integration issues&lt;br /&gt;
* '''Cons''':&lt;br /&gt;
** Confusion about when to merged vs rebase&lt;br /&gt;
** Developers have to learn two workflows&lt;br /&gt;
&lt;br /&gt;
[[Category:Process documentation]]&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Improvements&amp;diff=12818</id>
		<title>Improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Improvements&amp;diff=12818"/>
		<updated>2018-11-20T17:56:26Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Move self-describing AIP to completed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is intended to list possible new features, enhancements, and other improvements to any of the code used in an Archivematica based digital preservation system.&lt;br /&gt;
&lt;br /&gt;
== In Progress ==&lt;br /&gt;
*[[Performance Improvements]]&lt;br /&gt;
**Make indexing configurable&lt;br /&gt;
**Make capture output configurable&lt;br /&gt;
**Make performance metrics accessible via the API&lt;br /&gt;
*[[Improvements/Reporting| Searching and Reporting]]&lt;br /&gt;
**Add basic functionality to allow a user to search for files across AIPs&lt;br /&gt;
**Performance Metrics Reporting API&lt;br /&gt;
**Standard Framework for all API's in Archivematica&lt;br /&gt;
* [[Improvements/Containerization|Containerization]]&lt;br /&gt;
** ability to deploy Archivematica into Containers &lt;br /&gt;
* [[Asynchronous Processing in Storage Service]]&lt;br /&gt;
** Add ability to do work in the background&lt;br /&gt;
* [[Improvements/Dspace_AIPs|DSpace AIPs]]&lt;br /&gt;
** Improve how AIPs stored in DSpace are handled&lt;br /&gt;
* [[Improvements/Dataverse|Dataverse Integration]]&lt;br /&gt;
** Dataverse to Archivematica integration&lt;br /&gt;
&lt;br /&gt;
== Proposed ==&lt;br /&gt;
*[[Validation check micro-service]]&lt;br /&gt;
**Check for valid ArchivesSpace / DSpace identifiers&lt;br /&gt;
*[[DSpace REST API version check]]&lt;br /&gt;
**Ensure that Archivematica is configurable to a new version of the DSpace REST API &lt;br /&gt;
*[[AIP Import]]&lt;br /&gt;
**Import AIPs into Storage Service from filesystem&lt;br /&gt;
* [[Enhance DIP Dissemination Workflows]]&lt;br /&gt;
** More control over structure of DIPs and more methods for disseminating&lt;br /&gt;
* [[Improvements/Email|Email Preservation]]&lt;br /&gt;
** improve email preservation workflows&lt;br /&gt;
* [[Improvements/Islandora|Islandora integration]]&lt;br /&gt;
** current status of Islandora implementation and proposed improvements&lt;br /&gt;
* [[Improvements/devdocs| Developer Focused Documentation]]&lt;br /&gt;
** improve documentation for developers integrating with Archivematica&lt;br /&gt;
* [[Improvements/aippackage| AIP Packaging]]&lt;br /&gt;
** support alternate physical structures for an aip&lt;br /&gt;
* [[Improvements/warc| Web Archiving]]&lt;br /&gt;
** extract metadata and files from WARCs for processing&lt;br /&gt;
** integrate with the Archive-It service&lt;br /&gt;
* [[Improvements/Appraisal|Appraisal and Arrangement tab]]&lt;br /&gt;
** Possible enhancements to the Appraisal and Arrangement tab, introduced in v1.6&lt;br /&gt;
* [[Improvements/Python3|Python3]]&lt;br /&gt;
** changes required to run all of Archivematica using Python3 instead of Python2&lt;br /&gt;
** [https://docs.google.com/document/d/1r_8426OluGe8ORnqNU7MeP8N3l4MxMhdKDwOUM4zvcg/edit# Google document] with status&lt;br /&gt;
* [[Improvements/EPrintsIntegration|EPrints Integration]]&lt;br /&gt;
** suggestions for workflows to connect EPrints repositories to Archivematica&lt;br /&gt;
* [[Improvements/Disk_Image_Preservation|Disk Image Preservation]]&lt;br /&gt;
** improve disk image handling to better manage different file systems&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1n567VURzQKDIcd_hXTnrRmmXlYg_t2II-dp1P-Nbhjc/edit#gid=0 Google document] with other proposed projects and status&lt;br /&gt;
&lt;br /&gt;
== Completed ==&lt;br /&gt;
&lt;br /&gt;
* [[Improvements/Migrations| Migrations]]&lt;br /&gt;
** Use Django's migrations instead of custom SQL-based migrations&lt;br /&gt;
* [[Improvements/rpm|CentOS/RedHat support]]&lt;br /&gt;
** ability to run Archivematica on an rpm based version of linux&lt;br /&gt;
* [[Improvements/AIPEncryption| AIP Encryption]]&lt;br /&gt;
** Encrypt AIP's when storing and decrypt when retrieving&lt;br /&gt;
* [[Improvements/aipreadme| Self Describing AIP]]&lt;br /&gt;
** add a README file to Archivematica AIP's to make them self-describing&lt;br /&gt;
&lt;br /&gt;
[[Category:Development documentation]]&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Community/Camps/Houston2018&amp;diff=12779</id>
		<title>Community/Camps/Houston2018</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Community/Camps/Houston2018&amp;diff=12779"/>
		<updated>2018-11-14T22:39:04Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: /* Thursday, November 15: Day Two Archivematica Camp */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We're thrilled to be headed to Houston, Texas for Archivematica Camp in November 2018! Hope y'all can make it!&lt;br /&gt;
&lt;br /&gt;
Inspired by similar events like Hydra Camp, Islandora Camp and Fedora Camp, Archivematica Camp is intended to provide a space for anyone interested in or currently using Archivematica to come together, learn about the platform from other users, and share their experiences.&lt;br /&gt;
[[File:ArchivematicaCamp.jpg|500px|center|thumb]]&lt;br /&gt;
A big thanks to University of Houston Libraries and the Texas Digital Library for co-sponsoring this camp. &lt;br /&gt;
&lt;br /&gt;
== Dates and Location ==&lt;br /&gt;
&lt;br /&gt;
'''November 14-16, 2018 - [http://libraries.uh.edu/ University of Houston Libraries]'''.&lt;br /&gt;
&lt;br /&gt;
Sessions will be held in the [https://www.google.com/maps/place/M.D.+Anderson+Library/@29.7216972,-95.3444726,15z/data=!4m8!1m2!3m1!2sM.D.+Anderson+Library!3m4!1s0x0:0x2a3f0ce5297e9c3a!8m2!3d29.7210839!4d-95.3420484 M.D. Anderson Library] on the University of Houston main campus.&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
&lt;br /&gt;
https://www.eventbrite.com/e/archivematica-camp-houston-2018-registration-48420292398&lt;br /&gt;
&lt;br /&gt;
== Camp Counsellors ==&lt;br /&gt;
&lt;br /&gt;
Archivematica Camp counsellors are a mix of Artefactual staff and community members with experience/expertise in using Archivematica. From Artefactual we have:&lt;br /&gt;
&lt;br /&gt;
'''Ashley Blewer''' works at Artefactual as our AV Preservation Specialist, primarily on the Archivematica project. Ashley also works on the audiovisual open source software projects QCTools and MediaConch (which is also used in Archivematica!). Ashley will be leveraging her archival and technical backgrounds in Stream 1 and talking about all things Archivematica!&lt;br /&gt;
&lt;br /&gt;
'''Jesús García Crespo''' is a software developer for Artefactual Systems Inc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Evelyn McLellan''' is President of Artefactual Systems and has been involved in the Archivematica project since its earliest days. An archivist by training with a strange obsession with preservation metadata, she'll be leading some of the sessions and generally helping out where needed.&lt;br /&gt;
&lt;br /&gt;
'''Ross Spencer''' is a software developer for Artefactual Systems Inc. Focused primarily on the Archivematica project, Ross has a background in digital preservation research and analysis. Having previously worked for Archives New Zealand, and before then, The National Archive UK, he has experience with the unique requirements of a government workflow. Ross also has a broad interest in all things digital preservation, archives, and code. Ross will be discussing APIs, optimisation, contributing code, and issues! And much much more.&lt;br /&gt;
&lt;br /&gt;
Our two community member counsellors will be:&lt;br /&gt;
&lt;br /&gt;
'''Andrew Berger'''&lt;br /&gt;
&lt;br /&gt;
Andrew Berger is Senior Digital Archivist at the Computer History Museum. He is the primary archivist responsible for overseeing the preservation of the museum’s digital collections and manages the museum’s digital repository. In 2014-2015, he oversaw the museum’s testing and implementation of Archivematica and maintains day-to-day responsibility for ingest and for monitoring digital repository storage via periodic fixity checks.&lt;br /&gt;
 &lt;br /&gt;
'''Nick Krabbenhoeft'''&lt;br /&gt;
&lt;br /&gt;
Nick Krabbenhoeft is the Digital Preservation Manager at New York Public Library where he is responsible for the long-term accessibility of digitized images, audio, and video material and born-digital video and archival collections. He researches digital collections surveys, systems integrations, and digital object validation. Nick teaches on digital preservation and curation as a Visiting Assistant Professor at the Pratt Institute.&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
=== Wednesday November 14: Day One (optional) Archivematica for Beginners ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff;&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 90%; background-color: #93c9ff&amp;quot;|'''Topic'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:00am - 9:30pm&lt;br /&gt;
|'''Arrival and registration'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:30am - 10:30pm&lt;br /&gt;
|'''Module 1: Archivematica in the digital preservation landscape'''&lt;br /&gt;
Topics covered include: where does Archivematica fit into the digital preservation landscape, what does Archivematica promise to do, what doesn't Archivematica do&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|10:30am-12:00pm&lt;br /&gt;
|'''Module 2: How does Archivematica actually work?'''&lt;br /&gt;
Topics covered include: Archivematica's conceptual model, packages (transfers, bags, SIPs, AIPs, DIPs), microservices as implementations of preservation actions, workflows, storage spaces (how the storage service works and how to get at your content)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:00pm - 1:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Lunch&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|1:00pm - 5:00pm&lt;br /&gt;
|'''Module 3: Archivematica's core functionality'''&lt;br /&gt;
Topics covered include: understanding Archivematica's dashboard, including the Transfer tab, Ingest tab, Administration tab, and Preservation planning tab plus a first look at an AIP produced by Archivematica.  This afternoon session includes hands-on exercises.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note''': participants are welcome to join the morning session, afternoon session, or both sessions as they wish. Participants may also wish to join the Camp on Day Two.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Thursday, November 15: Day Two Archivematica Camp===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 1 TBA'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 2 TBA'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:00am - 9:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Arrival and registration'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:30am - 11:00am&lt;br /&gt;
|'''Module 4: Stream 1 - Building on core: Archivematica's specialized workflows'''&lt;br /&gt;
Topics covered include transfers of zipped files, disk images, metadata.csv, manual normalization, and a look at automation tools.  This module includes hands-on exercises.&lt;br /&gt;
|'''Module 4: Stream 2 - Supporting Archivematica users and their workflows'''&lt;br /&gt;
Topics covered include Checking-in; technical architecture, deployment and working open-source.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|11:00am - 12:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Community profile: Texas institutions'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:00pm - 1:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Lunch&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|1:00pm - 3:00pm&lt;br /&gt;
|'''Module 5: Stream 1 - Archivematica's non-core functionality'''&lt;br /&gt;
Topics covered include a look at the Backlog and Appraisal tab, AIP reingest, AIP encryption, transcription, and using Mediaconch.  This module includes hands-on exercises.&lt;br /&gt;
|'''Module 5:  Stream 2 - Understanding Archivematica's logs and performance evaluation'''&lt;br /&gt;
Topics include Monitoring, logs, the API, and automation tools.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|3:00pm-4:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Community profile: Computer History Museum and New York Public Library'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|4:00pm - 5:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| Open conversation and Agenda adjustment for Day 3 - what do you want to talk about tomorrow? Also, wrap-up.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Friday, November 16: Day Three Archivematica Camp ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse; &amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 1 TBA'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 2 TBA'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|9:00am - 9:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;white-space: nowrap; width: 90%;&amp;quot;|'''Arrival and planning'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|9:30pm - 10:30pm&lt;br /&gt;
|'''Module 6: Stream 1 - Special Topics''' &lt;br /&gt;
Topics covered include handling complex media (audiovisual and disk images), ArchivesSpace integration, and PREMIS linked open data and the OWL ontology&lt;br /&gt;
|'''Module 6: Stream 2 - GitHub and new-features showcase'''&lt;br /&gt;
Topics covered include accessing Archivematica’s data, other GitHub highlights, features showcase.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|10:30-11:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;white-space: nowrap; width: 90%;&amp;quot;|'''Module 7: Archivematica in the community'''&lt;br /&gt;
Topics covered include how the code is written, collaborative digital preservation, and a look at the Archivematica roadmap.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|11:30am - 12:30pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Brown Bag Lunch and Community topics'''&lt;br /&gt;
Based on topics raised from campers at registration and as the camp has progressed. Led by Artefactual staff with lots of input from the community.  Breakout into 2 rooms as needed. Informal and fun! &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:30pm - 2:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 90%;&amp;quot;|'''Module 8: Implementation roundtable'''&lt;br /&gt;
Discussion of various ways Archivematica can be implemented with a checklist of what you need to actually run Archivematica. &lt;br /&gt;
Campers are invited to share their particular Archivematica implementations, real or imagined.  &lt;br /&gt;
Questions and participation mandatory! Wrap up and safe travels!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note on agenda adjusting''': based on camper interest, the schedule may be adjusted to accommodate topics of interest that will be covered during the concurrent sessions.&lt;br /&gt;
&lt;br /&gt;
== Social events ==&lt;br /&gt;
&lt;br /&gt;
=== Wednesday, November 14: Group event ===&lt;br /&gt;
&lt;br /&gt;
Folks meet at [https://8thwonder.com/ 8th Wonder Breweries] from 6pm. The address is: [https://www.google.de/maps/search/2202+Dallas+Street+%7C+HouTex+%7C+77003/@29.7488668,-95.3580668,17z/data=!3m1!4b1 ''2202 Dallas Street | HouTex | 77003''] about 2.5 miles away from the University of Houston campus. &lt;br /&gt;
&lt;br /&gt;
Everyone is invited to find shared rides to the event and folks from Artefactual will be on hand to help everyone remaining on campus find transport too. We can't wait to see y'all there!&lt;br /&gt;
&lt;br /&gt;
=== Thursday, November 15: Small group dinners ===&lt;br /&gt;
&lt;br /&gt;
We've created a sign-up sheet to help folk find others to dine with on Thursday. There are a variety of restaurants on the list to cater for all. The restaurants are across the Houston area. If you know Houston well, or have an idea for a restaurant not listed, please consider becoming a group leader. &lt;br /&gt;
&lt;br /&gt;
The sign-up sheet for group dinners can be found here: https://docs.google.com/document/d/1rvnKP6lM3aeuRulgOnlmjYg_k8gaaCgfZdfvkU7sTBM/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Local Arrangements ==&lt;br /&gt;
Sessions will be held in the [https://www.google.com/maps/place/M.D.+Anderson+Library/@29.7216972,-95.3444726,15z/data=!4m8!1m2!3m1!2sM.D.+Anderson+Library!3m4!1s0x0:0x2a3f0ce5297e9c3a!8m2!3d29.7210839!4d-95.3420484 M.D. Anderson Library] on the University of Houston main campus.&lt;br /&gt;
&lt;br /&gt;
=== Lunch ===&lt;br /&gt;
On-campus options:&lt;br /&gt;
&lt;br /&gt;
* Eric's Restaurant&lt;br /&gt;
* Einstein Bros. Bagels&lt;br /&gt;
* McAlister's Deli&lt;br /&gt;
* Student Center: Starbucks, McDonald's, Chick-fil-A&lt;br /&gt;
* Near Calhoun Lofts: Cafe 101, Pink's Pizza, Jimmy Johns&lt;br /&gt;
&lt;br /&gt;
=== Hotels ===&lt;br /&gt;
We have reserved a block of rooms in the UH Hilton at a rate of $179/night. Rooms at this rate are available on a first come, first served basis and must be booked before Sunday, October 14, 2018. To make reservations on the room block, call 832-531-6300 or 800-774-1500 and follow the automated prompts for room reservations. The group name for the room block is Artefactual Systems (code ARTE).&lt;br /&gt;
&lt;br /&gt;
Hotels are also available downtown. There are many hotels near the [https://www.google.com/maps/place/Theater+District/@29.7588822,-95.3667289,17z/data=!4m8!1m2!2m1!1spurple+line!3m4!1s0x8640bf3a02f3a873:0x2b891dc7cc50c30f!8m2!3d29.7607509!4d-95.3676917 Theater District], [https://www.google.com/maps/place/Central+Station+Rusk/@29.7586121,-95.3638858,17z/data=!4m8!1m2!2m1!1spurple+line!3m4!1s0x8640bf3b333c80a7:0x6fa09da76725dace!8m2!3d29.7577507!4d-95.3627443 Central Station Rusk], and [https://www.google.com/maps/place/Convention+District/@29.7567679,-95.3626305,17z/data=!4m8!1m2!2m1!1spurple+line!3m4!1s0x8640bf23e6dc48e3:0xe8d2427611ae1e92!8m2!3d29.7547783!4d-95.3578097 Convention District] stops on the [https://www.ridemetro.org/Pages/PurpleLine.aspx METRORail purple line], which provides frequent service between downtown Houston and the UH campus. Purple line stops on the UH main campus include Robertson Stadium/UH/TSU and UH South/University Oaks.&lt;br /&gt;
&lt;br /&gt;
A quick review of Airbnb search results shows many rentals in Midtown, Montrose, Museum District, and EaDo/Eastwood neighborhoods within a short commute (~5 miles) to campus.&lt;br /&gt;
&lt;br /&gt;
==Code of Conduct==&lt;br /&gt;
&lt;br /&gt;
The Archivematica community is dedicated to providing a welcoming and positive experience for everyone, whether they are in a formal session or a social setting related to an Archivematica event, or are taking part in activities online. Archivematica community participants come from all over the world and bring with them a wide variety of professional, personal and social backgrounds; whatever these may be, we treat colleagues with dignity and respect. We are sensitive to the fact that the international nature of the Archivematica community means that we span many different social norms around language and behaviour and we strive to conduct ourselves in ways that are unlikely to cause offense. In the event that someone’s conduct is causing offense or distress, the Archivematica Camp has a detailed Anti-Harassment Policy, details below, which can be applied to address the problem.&lt;br /&gt;
&lt;br /&gt;
The first step in dealing with any serious misconduct is to contact a member of the organizing group, or a counsellor at an Archivematica Camp (please see counsellors, above). These people will be made known before and during any Archivematica Camp event.&lt;br /&gt;
&lt;br /&gt;
'''Anti-Harassment Policy'''&lt;br /&gt;
&lt;br /&gt;
The Archivematica community is dedicated to providing a harassment-free conference/camp experience for everyone. If you have been harassed, please consult this protocol for conflict resolution which makes clear how we can help.&lt;br /&gt;
&lt;br /&gt;
The Archivematica community has established the following policy to make it clear that we do not tolerate harassment in any form. Sexual or discriminatory language and imagery are not appropriate for any event venue, including talks, or any other communication channel used during the conference (such as social media).&lt;br /&gt;
&lt;br /&gt;
Harassment includes:&lt;br /&gt;
&lt;br /&gt;
* offensive verbal comments related to sex, gender, ethnicity, nationality, socioeconomic status, sexual orientation, disability, physical appearance, body size, age, race, religion;&lt;br /&gt;
* sexual or discriminatory images in public spaces;&lt;br /&gt;
* deliberate intimidation;&lt;br /&gt;
* stalking;&lt;br /&gt;
* harassing photography or recording;&lt;br /&gt;
* sustained disruption of talks or other events;&lt;br /&gt;
* inappropriate physical contact; and&lt;br /&gt;
* unwelcome sexual attention.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The lingua franca of Archivematica Camp is English; however, English may not be the native language of Archivematica Camp participants. Further, cultural norms around what may be considered obscene and offensive communication will vary among Archivematica Camp attendees. Campers are asked to please be mindful of the international character of Archivematica Camp, and to use respectful and clear language free of slang to facilitate communication.&lt;br /&gt;
&lt;br /&gt;
Participants asked to stop any harassing behavior are expected to comply immediately.&lt;br /&gt;
&lt;br /&gt;
If a participant engages in harassing behavior, event organizers and Archivematica representatives (or their designees) may take any action they deem appropriate, including warning the offender, expulsion from Archivematica Camp, or contacting a higher authority such as a representative from the offender’s institution.&lt;br /&gt;
&lt;br /&gt;
If a participant raises a concern relating to actions covered by this policy in good faith, there will be no retaliation for bringing forward their concern. Threatening or taking action against someone for invoking this policy or for participating in any related investigation will be considered a violation of this policy.&lt;br /&gt;
&lt;br /&gt;
Participants are expected to follow the anti-harassment policy at all Camp-related venues, Camp-related social events, and online communication channels.&lt;br /&gt;
&lt;br /&gt;
We expect attendees and speakers past and present to be respectful to each other, and we will deal with any incidents that arise, including on social media.&lt;br /&gt;
&lt;br /&gt;
We value your participation in the Archivematica community and your support in keeping the Archivematica community a safe, welcoming, and friendly space for fellow participants.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Acknowledgments'''&lt;br /&gt;
&lt;br /&gt;
This policy is based on the [http://www.pasignyc.org/#code-of-conduct-section PASIG Code of Conduct], portions of which were modified from the [http://or2016.net/code-of-conduct/ Open Repositories’ code of conduct], which was itself modified from [https://www.seattleattic.com/codeofconduct Seattle Attic’s code of conduct] and the [http://adainitiative.org/what-we-do/events/ada-initiative-event-anti-harassment-policy/ Ada Initiative’s event harassment policy].&lt;br /&gt;
&lt;br /&gt;
'''License'''&lt;br /&gt;
&lt;br /&gt;
This document is licensed under [https://creativecommons.org/licenses/by-sa/3.0/ Creative Commons BY-SA].&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Community/Camps/Houston2018&amp;diff=12776</id>
		<title>Community/Camps/Houston2018</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Community/Camps/Houston2018&amp;diff=12776"/>
		<updated>2018-11-14T00:10:23Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: /* Friday, November 16: Day Three Archivematica Camp */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We're thrilled to be headed to Houston, Texas for Archivematica Camp in November 2018! Hope y'all can make it!&lt;br /&gt;
&lt;br /&gt;
Inspired by similar events like Hydra Camp, Islandora Camp and Fedora Camp, Archivematica Camp is intended to provide a space for anyone interested in or currently using Archivematica to come together, learn about the platform from other users, and share their experiences.&lt;br /&gt;
[[File:ArchivematicaCamp.jpg|500px|center|thumb]]&lt;br /&gt;
A big thanks to University of Houston Libraries and the Texas Digital Library for co-sponsoring this camp. &lt;br /&gt;
&lt;br /&gt;
== Dates and Location ==&lt;br /&gt;
&lt;br /&gt;
'''November 14-16, 2018 - [http://libraries.uh.edu/ University of Houston Libraries]'''.&lt;br /&gt;
&lt;br /&gt;
Sessions will be held in the [https://www.google.com/maps/place/M.D.+Anderson+Library/@29.7216972,-95.3444726,15z/data=!4m8!1m2!3m1!2sM.D.+Anderson+Library!3m4!1s0x0:0x2a3f0ce5297e9c3a!8m2!3d29.7210839!4d-95.3420484 M.D. Anderson Library] on the University of Houston main campus.&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
&lt;br /&gt;
https://www.eventbrite.com/e/archivematica-camp-houston-2018-registration-48420292398&lt;br /&gt;
&lt;br /&gt;
== Camp Counsellors ==&lt;br /&gt;
&lt;br /&gt;
Archivematica Camp counsellors are a mix of Artefactual staff and community members with experience/expertise in using Archivematica. From Artefactual we have:&lt;br /&gt;
&lt;br /&gt;
'''Ashley Blewer''' works at Artefactual as our AV Preservation Specialist, primarily on the Archivematica project. Ashley also works on the audiovisual open source software projects QCTools and MediaConch (which is also used in Archivematica!). Ashley will be leveraging her archival and technical backgrounds in Stream 1 and talking about all things Archivematica!&lt;br /&gt;
&lt;br /&gt;
'''Jesús García Crespo''' is a software developer for Artefactual Systems Inc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Evelyn McLellan''' is President of Artefactual Systems and has been involved in the Archivematica project since its earliest days. An archivist by training with a strange obsession with preservation metadata, she'll be leading some of the sessions and generally helping out where needed.&lt;br /&gt;
&lt;br /&gt;
'''Ross Spencer''' is a software developer for Artefactual Systems Inc. Focused primarily on the Archivematica project, Ross has a background in digital preservation research and analysis. Having previously worked for Archives New Zealand, and before then, The National Archive UK, he has experience with the unique requirements of a government workflow. Ross also has a broad interest in all things digital preservation, archives, and code. Ross will be discussing APIs, optimisation, contributing code, and issues! And much much more.&lt;br /&gt;
&lt;br /&gt;
Our two community member counsellors will be:&lt;br /&gt;
&lt;br /&gt;
'''Andrew Berger'''&lt;br /&gt;
&lt;br /&gt;
Andrew Berger is Senior Digital Archivist at the Computer History Museum. He is the primary archivist responsible for overseeing the preservation of the museum’s digital collections and manages the museum’s digital repository. In 2014-2015, he oversaw the museum’s testing and implementation of Archivematica and maintains day-to-day responsibility for ingest and for monitoring digital repository storage via periodic fixity checks.&lt;br /&gt;
 &lt;br /&gt;
'''Nick Krabbenhoeft'''&lt;br /&gt;
&lt;br /&gt;
Nick Krabbenhoeft is the Digital Preservation Manager at New York Public Library where he is responsible for the long-term accessibility of digitized images, audio, and video material and born-digital video and archival collections. He researches digital collections surveys, systems integrations, and digital object validation. Nick teaches on digital preservation and curation as a Visiting Assistant Professor at the Pratt Institute.&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
=== Wednesday November 14: Day One (optional) Archivematica for Beginners ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff;&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 90%; background-color: #93c9ff&amp;quot;|'''Topic'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:00am - 9:30pm&lt;br /&gt;
|'''Arrival and registration'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:30am - 10:30pm&lt;br /&gt;
|'''Module 1: Archivematica in the digital preservation landscape'''&lt;br /&gt;
Topics covered include: where does Archivematica fit into the digital preservation landscape, what does Archivematica promise to do, what doesn't Archivematica do&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|10:30am-12:00pm&lt;br /&gt;
|'''Module 2: How does Archivematica actually work?'''&lt;br /&gt;
Topics covered include: Archivematica's conceptual model, packages (transfers, bags, SIPs, AIPs, DIPs), microservices as implementations of preservation actions, workflows, storage spaces (how the storage service works and how to get at your content)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:00pm - 1:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Lunch&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|1:00pm - 5:00pm&lt;br /&gt;
|'''Module 3: Archivematica's core functionality'''&lt;br /&gt;
Topics covered include: understanding Archivematica's dashboard, including the Transfer tab, Ingest tab, Administration tab, and Preservation planning tab plus a first look at an AIP produced by Archivematica.  This afternoon session includes hands-on exercises.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note''': participants are welcome to join the morning session, afternoon session, or both sessions as they wish. Participants may also wish to join the Camp on Day Two.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Thursday, November 15: Day Two Archivematica Camp===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 1 TBA'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 2 TBA'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:00am - 9:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Arrival and registration'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:30am - 11:00am&lt;br /&gt;
|'''Module 4: Stream 1 - Building on core: Archivematica's specialized workflows'''&lt;br /&gt;
Topics covered include transfers of zipped files, disk images, metadata.csv, manual normalization, and a look at automation tools.  This module includes hands-on exercises.&lt;br /&gt;
|'''Module 4: Stream 2 - Supporting Archivematica workflows'''&lt;br /&gt;
Topics covered include Checking-in; technical architecture, deployment and working open-source.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|11:00am - 12:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Community profile: Texas institutions'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:00pm - 1:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Lunch&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|1:00pm - 3:00pm&lt;br /&gt;
|'''Module 5: Stream 1 - Archivematica's non-core functionality'''&lt;br /&gt;
Topics covered include a look at the Backlog and Appraisal tab, AIP reingest, AIP encryption, transcription, and using Mediaconch.  This module includes hands-on exercises.&lt;br /&gt;
|'''Module 5:  Stream 2 - Understanding Archivematica's logs and performance evaluation'''&lt;br /&gt;
Topics include Monitoring, logs, the API, and automation tools.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|3:00pm-4:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Community profile: Computer History Museum and New York Public Library'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|4:00pm - 5:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| Open conversation and Agenda adjustment for Day 3 - what do you want to talk about tomorrow? Also, wrap-up.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Friday, November 16: Day Three Archivematica Camp ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse; &amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 1 TBA'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 2 TBA'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|9:00am - 9:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;white-space: nowrap; width: 90%;&amp;quot;|'''Arrival and planning'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|9:30pm - 10:30pm&lt;br /&gt;
|'''Module 6: Stream 1 - Special Topics''' &lt;br /&gt;
Topics covered include handling complex media (audiovisual and disk images), ArchivesSpace integration, and PREMIS linked open data and the OWL ontology&lt;br /&gt;
|'''Module 6: Stream 2 - GitHub and new-features showcase'''&lt;br /&gt;
Topics covered include accessing Archivematica’s data, other GitHub highlights, features showcase.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|10:30-11:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;white-space: nowrap; width: 90%;&amp;quot;|'''Module 7: Archivematica in the community'''&lt;br /&gt;
Topics covered include how the code is written, collaborative digital preservation, and a look at the Archivematica roadmap.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|11:30am - 12:30pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Brown Bag Lunch and Community topics'''&lt;br /&gt;
Based on topics raised from campers at registration and as the camp has progressed. Led by Artefactual staff with lots of input from the community.  Breakout into 2 rooms as needed. Informal and fun! &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:30pm - 2:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 90%;&amp;quot;|'''Module 8: Implementation roundtable'''&lt;br /&gt;
Discussion of various ways Archivematica can be implemented with a checklist of what you need to actually run Archivematica. &lt;br /&gt;
Campers are invited to share their particular Archivematica implementations, real or imagined.  &lt;br /&gt;
Questions and participation mandatory! Wrap up and safe travels!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note on agenda adjusting''': based on camper interest, the schedule may be adjusted to accommodate topics of interest that will be covered during the concurrent sessions.&lt;br /&gt;
&lt;br /&gt;
== Social events ==&lt;br /&gt;
&lt;br /&gt;
=== Wednesday, November 14: Group event ===&lt;br /&gt;
&lt;br /&gt;
Folks meet at [https://8thwonder.com/ 8th Wonder Breweries] from 6pm. The address is: [https://www.google.de/maps/search/2202+Dallas+Street+%7C+HouTex+%7C+77003/@29.7488668,-95.3580668,17z/data=!3m1!4b1 ''2202 Dallas Street | HouTex | 77003''] about 2.5 miles away from the University of Houston campus. &lt;br /&gt;
&lt;br /&gt;
Everyone is invited to find shared rides to the event and folks from Artefactual will be on hand to help everyone remaining on campus find transport too. We can't wait to see y'all there!&lt;br /&gt;
&lt;br /&gt;
=== Thursday, November 15: Small group dinners ===&lt;br /&gt;
&lt;br /&gt;
We've created a sign-up sheet to help folk find others to dine with on Thursday. There are a variety of restaurants on the list to cater for all. The restaurants are across the Houston area. If you know Houston well, or have an idea for a restaurant not listed, please consider becoming a group leader. &lt;br /&gt;
&lt;br /&gt;
The sign-up sheet for group dinners can be found here: https://docs.google.com/document/d/1rvnKP6lM3aeuRulgOnlmjYg_k8gaaCgfZdfvkU7sTBM/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Local Arrangements ==&lt;br /&gt;
Sessions will be held in the [https://www.google.com/maps/place/M.D.+Anderson+Library/@29.7216972,-95.3444726,15z/data=!4m8!1m2!3m1!2sM.D.+Anderson+Library!3m4!1s0x0:0x2a3f0ce5297e9c3a!8m2!3d29.7210839!4d-95.3420484 M.D. Anderson Library] on the University of Houston main campus.&lt;br /&gt;
&lt;br /&gt;
=== Hotels ===&lt;br /&gt;
We have reserved a block of rooms in the UH Hilton at a rate of $179/night. Rooms at this rate are available on a first come, first served basis and must be booked before Sunday, October 14, 2018. To make reservations on the room block, call 832-531-6300 or 800-774-1500 and follow the automated prompts for room reservations. The group name for the room block is Artefactual Systems (code ARTE).&lt;br /&gt;
&lt;br /&gt;
Hotels are also available downtown. There are many hotels near the [https://www.google.com/maps/place/Theater+District/@29.7588822,-95.3667289,17z/data=!4m8!1m2!2m1!1spurple+line!3m4!1s0x8640bf3a02f3a873:0x2b891dc7cc50c30f!8m2!3d29.7607509!4d-95.3676917 Theater District], [https://www.google.com/maps/place/Central+Station+Rusk/@29.7586121,-95.3638858,17z/data=!4m8!1m2!2m1!1spurple+line!3m4!1s0x8640bf3b333c80a7:0x6fa09da76725dace!8m2!3d29.7577507!4d-95.3627443 Central Station Rusk], and [https://www.google.com/maps/place/Convention+District/@29.7567679,-95.3626305,17z/data=!4m8!1m2!2m1!1spurple+line!3m4!1s0x8640bf23e6dc48e3:0xe8d2427611ae1e92!8m2!3d29.7547783!4d-95.3578097 Convention District] stops on the [https://www.ridemetro.org/Pages/PurpleLine.aspx METRORail purple line], which provides frequent service between downtown Houston and the UH campus. Purple line stops on the UH main campus include Robertson Stadium/UH/TSU and UH South/University Oaks.&lt;br /&gt;
&lt;br /&gt;
A quick review of Airbnb search results shows many rentals in Midtown, Montrose, Museum District, and EaDo/Eastwood neighborhoods within a short commute (~5 miles) to campus.&lt;br /&gt;
&lt;br /&gt;
==Code of Conduct==&lt;br /&gt;
&lt;br /&gt;
The Archivematica community is dedicated to providing a welcoming and positive experience for everyone, whether they are in a formal session or a social setting related to an Archivematica event, or are taking part in activities online. Archivematica community participants come from all over the world and bring with them a wide variety of professional, personal and social backgrounds; whatever these may be, we treat colleagues with dignity and respect. We are sensitive to the fact that the international nature of the Archivematica community means that we span many different social norms around language and behaviour and we strive to conduct ourselves in ways that are unlikely to cause offense. In the event that someone’s conduct is causing offense or distress, the Archivematica Camp has a detailed Anti-Harassment Policy, details below, which can be applied to address the problem.&lt;br /&gt;
&lt;br /&gt;
The first step in dealing with any serious misconduct is to contact a member of the organizing group, or a counsellor at an Archivematica Camp (please see counsellors, above). These people will be made known before and during any Archivematica Camp event.&lt;br /&gt;
&lt;br /&gt;
'''Anti-Harassment Policy'''&lt;br /&gt;
&lt;br /&gt;
The Archivematica community is dedicated to providing a harassment-free conference/camp experience for everyone. If you have been harassed, please consult this protocol for conflict resolution which makes clear how we can help.&lt;br /&gt;
&lt;br /&gt;
The Archivematica community has established the following policy to make it clear that we do not tolerate harassment in any form. Sexual or discriminatory language and imagery are not appropriate for any event venue, including talks, or any other communication channel used during the conference (such as social media).&lt;br /&gt;
&lt;br /&gt;
Harassment includes:&lt;br /&gt;
&lt;br /&gt;
* offensive verbal comments related to sex, gender, ethnicity, nationality, socioeconomic status, sexual orientation, disability, physical appearance, body size, age, race, religion;&lt;br /&gt;
* sexual or discriminatory images in public spaces;&lt;br /&gt;
* deliberate intimidation;&lt;br /&gt;
* stalking;&lt;br /&gt;
* harassing photography or recording;&lt;br /&gt;
* sustained disruption of talks or other events;&lt;br /&gt;
* inappropriate physical contact; and&lt;br /&gt;
* unwelcome sexual attention.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The lingua franca of Archivematica Camp is English; however, English may not be the native language of Archivematica Camp participants. Further, cultural norms around what may be considered obscene and offensive communication will vary among Archivematica Camp attendees. Campers are asked to please be mindful of the international character of Archivematica Camp, and to use respectful and clear language free of slang to facilitate communication.&lt;br /&gt;
&lt;br /&gt;
Participants asked to stop any harassing behavior are expected to comply immediately.&lt;br /&gt;
&lt;br /&gt;
If a participant engages in harassing behavior, event organizers and Archivematica representatives (or their designees) may take any action they deem appropriate, including warning the offender, expulsion from Archivematica Camp, or contacting a higher authority such as a representative from the offender’s institution.&lt;br /&gt;
&lt;br /&gt;
If a participant raises a concern relating to actions covered by this policy in good faith, there will be no retaliation for bringing forward their concern. Threatening or taking action against someone for invoking this policy or for participating in any related investigation will be considered a violation of this policy.&lt;br /&gt;
&lt;br /&gt;
Participants are expected to follow the anti-harassment policy at all Camp-related venues, Camp-related social events, and online communication channels.&lt;br /&gt;
&lt;br /&gt;
We expect attendees and speakers past and present to be respectful to each other, and we will deal with any incidents that arise, including on social media.&lt;br /&gt;
&lt;br /&gt;
We value your participation in the Archivematica community and your support in keeping the Archivematica community a safe, welcoming, and friendly space for fellow participants.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Acknowledgments'''&lt;br /&gt;
&lt;br /&gt;
This policy is based on the [http://www.pasignyc.org/#code-of-conduct-section PASIG Code of Conduct], portions of which were modified from the [http://or2016.net/code-of-conduct/ Open Repositories’ code of conduct], which was itself modified from [https://www.seattleattic.com/codeofconduct Seattle Attic’s code of conduct] and the [http://adainitiative.org/what-we-do/events/ada-initiative-event-anti-harassment-policy/ Ada Initiative’s event harassment policy].&lt;br /&gt;
&lt;br /&gt;
'''License'''&lt;br /&gt;
&lt;br /&gt;
This document is licensed under [https://creativecommons.org/licenses/by-sa/3.0/ Creative Commons BY-SA].&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Community/Camps/Houston2018&amp;diff=12775</id>
		<title>Community/Camps/Houston2018</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Community/Camps/Houston2018&amp;diff=12775"/>
		<updated>2018-11-14T00:08:47Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: /* Friday, November 16: Day Three Archivematica Camp */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We're thrilled to be headed to Houston, Texas for Archivematica Camp in November 2018! Hope y'all can make it!&lt;br /&gt;
&lt;br /&gt;
Inspired by similar events like Hydra Camp, Islandora Camp and Fedora Camp, Archivematica Camp is intended to provide a space for anyone interested in or currently using Archivematica to come together, learn about the platform from other users, and share their experiences.&lt;br /&gt;
[[File:ArchivematicaCamp.jpg|500px|center|thumb]]&lt;br /&gt;
A big thanks to University of Houston Libraries and the Texas Digital Library for co-sponsoring this camp. &lt;br /&gt;
&lt;br /&gt;
== Dates and Location ==&lt;br /&gt;
&lt;br /&gt;
'''November 14-16, 2018 - [http://libraries.uh.edu/ University of Houston Libraries]'''.&lt;br /&gt;
&lt;br /&gt;
Sessions will be held in the [https://www.google.com/maps/place/M.D.+Anderson+Library/@29.7216972,-95.3444726,15z/data=!4m8!1m2!3m1!2sM.D.+Anderson+Library!3m4!1s0x0:0x2a3f0ce5297e9c3a!8m2!3d29.7210839!4d-95.3420484 M.D. Anderson Library] on the University of Houston main campus.&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
&lt;br /&gt;
https://www.eventbrite.com/e/archivematica-camp-houston-2018-registration-48420292398&lt;br /&gt;
&lt;br /&gt;
== Camp Counsellors ==&lt;br /&gt;
&lt;br /&gt;
Archivematica Camp counsellors are a mix of Artefactual staff and community members with experience/expertise in using Archivematica. From Artefactual we have:&lt;br /&gt;
&lt;br /&gt;
'''Ashley Blewer''' works at Artefactual as our AV Preservation Specialist, primarily on the Archivematica project. Ashley also works on the audiovisual open source software projects QCTools and MediaConch (which is also used in Archivematica!). Ashley will be leveraging her archival and technical backgrounds in Stream 1 and talking about all things Archivematica!&lt;br /&gt;
&lt;br /&gt;
'''Jesús García Crespo''' is a software developer for Artefactual Systems Inc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Evelyn McLellan''' is President of Artefactual Systems and has been involved in the Archivematica project since its earliest days. An archivist by training with a strange obsession with preservation metadata, she'll be leading some of the sessions and generally helping out where needed.&lt;br /&gt;
&lt;br /&gt;
'''Ross Spencer''' is a software developer for Artefactual Systems Inc. Focused primarily on the Archivematica project, Ross has a background in digital preservation research and analysis. Having previously worked for Archives New Zealand, and before then, The National Archive UK, he has experience with the unique requirements of a government workflow. Ross also has a broad interest in all things digital preservation, archives, and code. Ross will be discussing APIs, optimisation, contributing code, and issues! And much much more.&lt;br /&gt;
&lt;br /&gt;
Our two community member counsellors will be:&lt;br /&gt;
&lt;br /&gt;
'''Andrew Berger'''&lt;br /&gt;
&lt;br /&gt;
Andrew Berger is Senior Digital Archivist at the Computer History Museum. He is the primary archivist responsible for overseeing the preservation of the museum’s digital collections and manages the museum’s digital repository. In 2014-2015, he oversaw the museum’s testing and implementation of Archivematica and maintains day-to-day responsibility for ingest and for monitoring digital repository storage via periodic fixity checks.&lt;br /&gt;
 &lt;br /&gt;
'''Nick Krabbenhoeft'''&lt;br /&gt;
&lt;br /&gt;
Nick Krabbenhoeft is the Digital Preservation Manager at New York Public Library where he is responsible for the long-term accessibility of digitized images, audio, and video material and born-digital video and archival collections. He researches digital collections surveys, systems integrations, and digital object validation. Nick teaches on digital preservation and curation as a Visiting Assistant Professor at the Pratt Institute.&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
=== Wednesday November 14: Day One (optional) Archivematica for Beginners ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff;&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 90%; background-color: #93c9ff&amp;quot;|'''Topic'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:00am - 9:30pm&lt;br /&gt;
|'''Arrival and registration'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:30am - 10:30pm&lt;br /&gt;
|'''Module 1: Archivematica in the digital preservation landscape'''&lt;br /&gt;
Topics covered include: where does Archivematica fit into the digital preservation landscape, what does Archivematica promise to do, what doesn't Archivematica do&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|10:30am-12:00pm&lt;br /&gt;
|'''Module 2: How does Archivematica actually work?'''&lt;br /&gt;
Topics covered include: Archivematica's conceptual model, packages (transfers, bags, SIPs, AIPs, DIPs), microservices as implementations of preservation actions, workflows, storage spaces (how the storage service works and how to get at your content)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:00pm - 1:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Lunch&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|1:00pm - 5:00pm&lt;br /&gt;
|'''Module 3: Archivematica's core functionality'''&lt;br /&gt;
Topics covered include: understanding Archivematica's dashboard, including the Transfer tab, Ingest tab, Administration tab, and Preservation planning tab plus a first look at an AIP produced by Archivematica.  This afternoon session includes hands-on exercises.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note''': participants are welcome to join the morning session, afternoon session, or both sessions as they wish. Participants may also wish to join the Camp on Day Two.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Thursday, November 15: Day Two Archivematica Camp===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 1 TBA'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 2 TBA'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:00am - 9:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Arrival and registration'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:30am - 11:00am&lt;br /&gt;
|'''Module 4: Stream 1 - Building on core: Archivematica's specialized workflows'''&lt;br /&gt;
Topics covered include transfers of zipped files, disk images, metadata.csv, manual normalization, and a look at automation tools.  This module includes hands-on exercises.&lt;br /&gt;
|'''Module 4: Stream 2 - Supporting Archivematica workflows'''&lt;br /&gt;
Topics covered include Checking-in; technical architecture, deployment and working open-source.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|11:00am - 12:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Community profile: Texas institutions'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:00pm - 1:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Lunch&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|1:00pm - 3:00pm&lt;br /&gt;
|'''Module 5: Stream 1 - Archivematica's non-core functionality'''&lt;br /&gt;
Topics covered include a look at the Backlog and Appraisal tab, AIP reingest, AIP encryption, transcription, and using Mediaconch.  This module includes hands-on exercises.&lt;br /&gt;
|'''Module 5:  Stream 2 - Understanding Archivematica's logs and performance evaluation'''&lt;br /&gt;
Topics include Monitoring, logs, the API, and automation tools.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|3:00pm-4:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Community profile: Computer History Museum and New York Public Library'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|4:00pm - 5:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| Open conversation and Agenda adjustment for Day 3 - what do you want to talk about tomorrow? Also, wrap-up.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Friday, November 16: Day Three Archivematica Camp ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse; &amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 1 TBA'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 2 TBA'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|9:00am - 9:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;white-space: nowrap; width: 90%;&amp;quot;|'''Arrival and planning'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|9:30pm - 10:30pm&lt;br /&gt;
|'''Module 6: Stream 1 - Special Topics''' &lt;br /&gt;
Topics covered include handling complex media (audiovisual and disk images), ArchivesSpace integration, and PREMIS linked open data and the OWL ontology&lt;br /&gt;
|'''Module 6: Stream 2 - GitHub and new-features showcase'''&lt;br /&gt;
Topics covered include other GitHub highlights, features showcase.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|10:30-11:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;white-space: nowrap; width: 90%;&amp;quot;|'''Module 7: Archivematica in the community'''&lt;br /&gt;
Topics covered include how the code is written, collaborative digital preservation, and a look at the Archivematica roadmap.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|11:30am - 12:30pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Brown Bag Lunch and Community topics'''&lt;br /&gt;
Based on topics raised from campers at registration and as the camp has progressed. Led by Artefactual staff with lots of input from the community.  Breakout into 2 rooms as needed. Informal and fun! &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:30pm - 2:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 90%;&amp;quot;|'''Module 8: Implementation roundtable'''&lt;br /&gt;
Discussion of various ways Archivematica can be implemented with a checklist of what you need to actually run Archivematica. &lt;br /&gt;
Campers are invited to share their particular Archivematica implementations, real or imagined.  &lt;br /&gt;
Questions and participation mandatory! Wrap up and safe travels!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note on agenda adjusting''': based on camper interest, the schedule may be adjusted to accommodate topics of interest that will be covered during the concurrent sessions.&lt;br /&gt;
&lt;br /&gt;
== Social events ==&lt;br /&gt;
&lt;br /&gt;
=== Wednesday, November 14: Group event ===&lt;br /&gt;
&lt;br /&gt;
Folks meet at [https://8thwonder.com/ 8th Wonder Breweries] from 6pm. The address is: [https://www.google.de/maps/search/2202+Dallas+Street+%7C+HouTex+%7C+77003/@29.7488668,-95.3580668,17z/data=!3m1!4b1 ''2202 Dallas Street | HouTex | 77003''] about 2.5 miles away from the University of Houston campus. &lt;br /&gt;
&lt;br /&gt;
Everyone is invited to find shared rides to the event and folks from Artefactual will be on hand to help everyone remaining on campus find transport too. We can't wait to see y'all there!&lt;br /&gt;
&lt;br /&gt;
=== Thursday, November 15: Small group dinners ===&lt;br /&gt;
&lt;br /&gt;
We've created a sign-up sheet to help folk find others to dine with on Thursday. There are a variety of restaurants on the list to cater for all. The restaurants are across the Houston area. If you know Houston well, or have an idea for a restaurant not listed, please consider becoming a group leader. &lt;br /&gt;
&lt;br /&gt;
The sign-up sheet for group dinners can be found here: https://docs.google.com/document/d/1rvnKP6lM3aeuRulgOnlmjYg_k8gaaCgfZdfvkU7sTBM/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Local Arrangements ==&lt;br /&gt;
Sessions will be held in the [https://www.google.com/maps/place/M.D.+Anderson+Library/@29.7216972,-95.3444726,15z/data=!4m8!1m2!3m1!2sM.D.+Anderson+Library!3m4!1s0x0:0x2a3f0ce5297e9c3a!8m2!3d29.7210839!4d-95.3420484 M.D. Anderson Library] on the University of Houston main campus.&lt;br /&gt;
&lt;br /&gt;
=== Hotels ===&lt;br /&gt;
We have reserved a block of rooms in the UH Hilton at a rate of $179/night. Rooms at this rate are available on a first come, first served basis and must be booked before Sunday, October 14, 2018. To make reservations on the room block, call 832-531-6300 or 800-774-1500 and follow the automated prompts for room reservations. The group name for the room block is Artefactual Systems (code ARTE).&lt;br /&gt;
&lt;br /&gt;
Hotels are also available downtown. There are many hotels near the [https://www.google.com/maps/place/Theater+District/@29.7588822,-95.3667289,17z/data=!4m8!1m2!2m1!1spurple+line!3m4!1s0x8640bf3a02f3a873:0x2b891dc7cc50c30f!8m2!3d29.7607509!4d-95.3676917 Theater District], [https://www.google.com/maps/place/Central+Station+Rusk/@29.7586121,-95.3638858,17z/data=!4m8!1m2!2m1!1spurple+line!3m4!1s0x8640bf3b333c80a7:0x6fa09da76725dace!8m2!3d29.7577507!4d-95.3627443 Central Station Rusk], and [https://www.google.com/maps/place/Convention+District/@29.7567679,-95.3626305,17z/data=!4m8!1m2!2m1!1spurple+line!3m4!1s0x8640bf23e6dc48e3:0xe8d2427611ae1e92!8m2!3d29.7547783!4d-95.3578097 Convention District] stops on the [https://www.ridemetro.org/Pages/PurpleLine.aspx METRORail purple line], which provides frequent service between downtown Houston and the UH campus. Purple line stops on the UH main campus include Robertson Stadium/UH/TSU and UH South/University Oaks.&lt;br /&gt;
&lt;br /&gt;
A quick review of Airbnb search results shows many rentals in Midtown, Montrose, Museum District, and EaDo/Eastwood neighborhoods within a short commute (~5 miles) to campus.&lt;br /&gt;
&lt;br /&gt;
==Code of Conduct==&lt;br /&gt;
&lt;br /&gt;
The Archivematica community is dedicated to providing a welcoming and positive experience for everyone, whether they are in a formal session or a social setting related to an Archivematica event, or are taking part in activities online. Archivematica community participants come from all over the world and bring with them a wide variety of professional, personal and social backgrounds; whatever these may be, we treat colleagues with dignity and respect. We are sensitive to the fact that the international nature of the Archivematica community means that we span many different social norms around language and behaviour and we strive to conduct ourselves in ways that are unlikely to cause offense. In the event that someone’s conduct is causing offense or distress, the Archivematica Camp has a detailed Anti-Harassment Policy, details below, which can be applied to address the problem.&lt;br /&gt;
&lt;br /&gt;
The first step in dealing with any serious misconduct is to contact a member of the organizing group, or a counsellor at an Archivematica Camp (please see counsellors, above). These people will be made known before and during any Archivematica Camp event.&lt;br /&gt;
&lt;br /&gt;
'''Anti-Harassment Policy'''&lt;br /&gt;
&lt;br /&gt;
The Archivematica community is dedicated to providing a harassment-free conference/camp experience for everyone. If you have been harassed, please consult this protocol for conflict resolution which makes clear how we can help.&lt;br /&gt;
&lt;br /&gt;
The Archivematica community has established the following policy to make it clear that we do not tolerate harassment in any form. Sexual or discriminatory language and imagery are not appropriate for any event venue, including talks, or any other communication channel used during the conference (such as social media).&lt;br /&gt;
&lt;br /&gt;
Harassment includes:&lt;br /&gt;
&lt;br /&gt;
* offensive verbal comments related to sex, gender, ethnicity, nationality, socioeconomic status, sexual orientation, disability, physical appearance, body size, age, race, religion;&lt;br /&gt;
* sexual or discriminatory images in public spaces;&lt;br /&gt;
* deliberate intimidation;&lt;br /&gt;
* stalking;&lt;br /&gt;
* harassing photography or recording;&lt;br /&gt;
* sustained disruption of talks or other events;&lt;br /&gt;
* inappropriate physical contact; and&lt;br /&gt;
* unwelcome sexual attention.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The lingua franca of Archivematica Camp is English; however, English may not be the native language of Archivematica Camp participants. Further, cultural norms around what may be considered obscene and offensive communication will vary among Archivematica Camp attendees. Campers are asked to please be mindful of the international character of Archivematica Camp, and to use respectful and clear language free of slang to facilitate communication.&lt;br /&gt;
&lt;br /&gt;
Participants asked to stop any harassing behavior are expected to comply immediately.&lt;br /&gt;
&lt;br /&gt;
If a participant engages in harassing behavior, event organizers and Archivematica representatives (or their designees) may take any action they deem appropriate, including warning the offender, expulsion from Archivematica Camp, or contacting a higher authority such as a representative from the offender’s institution.&lt;br /&gt;
&lt;br /&gt;
If a participant raises a concern relating to actions covered by this policy in good faith, there will be no retaliation for bringing forward their concern. Threatening or taking action against someone for invoking this policy or for participating in any related investigation will be considered a violation of this policy.&lt;br /&gt;
&lt;br /&gt;
Participants are expected to follow the anti-harassment policy at all Camp-related venues, Camp-related social events, and online communication channels.&lt;br /&gt;
&lt;br /&gt;
We expect attendees and speakers past and present to be respectful to each other, and we will deal with any incidents that arise, including on social media.&lt;br /&gt;
&lt;br /&gt;
We value your participation in the Archivematica community and your support in keeping the Archivematica community a safe, welcoming, and friendly space for fellow participants.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Acknowledgments'''&lt;br /&gt;
&lt;br /&gt;
This policy is based on the [http://www.pasignyc.org/#code-of-conduct-section PASIG Code of Conduct], portions of which were modified from the [http://or2016.net/code-of-conduct/ Open Repositories’ code of conduct], which was itself modified from [https://www.seattleattic.com/codeofconduct Seattle Attic’s code of conduct] and the [http://adainitiative.org/what-we-do/events/ada-initiative-event-anti-harassment-policy/ Ada Initiative’s event harassment policy].&lt;br /&gt;
&lt;br /&gt;
'''License'''&lt;br /&gt;
&lt;br /&gt;
This document is licensed under [https://creativecommons.org/licenses/by-sa/3.0/ Creative Commons BY-SA].&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Community/Camps/Houston2018&amp;diff=12774</id>
		<title>Community/Camps/Houston2018</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Community/Camps/Houston2018&amp;diff=12774"/>
		<updated>2018-11-14T00:07:34Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: /* Thursday, November 15: Day Two Archivematica Camp */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We're thrilled to be headed to Houston, Texas for Archivematica Camp in November 2018! Hope y'all can make it!&lt;br /&gt;
&lt;br /&gt;
Inspired by similar events like Hydra Camp, Islandora Camp and Fedora Camp, Archivematica Camp is intended to provide a space for anyone interested in or currently using Archivematica to come together, learn about the platform from other users, and share their experiences.&lt;br /&gt;
[[File:ArchivematicaCamp.jpg|500px|center|thumb]]&lt;br /&gt;
A big thanks to University of Houston Libraries and the Texas Digital Library for co-sponsoring this camp. &lt;br /&gt;
&lt;br /&gt;
== Dates and Location ==&lt;br /&gt;
&lt;br /&gt;
'''November 14-16, 2018 - [http://libraries.uh.edu/ University of Houston Libraries]'''.&lt;br /&gt;
&lt;br /&gt;
Sessions will be held in the [https://www.google.com/maps/place/M.D.+Anderson+Library/@29.7216972,-95.3444726,15z/data=!4m8!1m2!3m1!2sM.D.+Anderson+Library!3m4!1s0x0:0x2a3f0ce5297e9c3a!8m2!3d29.7210839!4d-95.3420484 M.D. Anderson Library] on the University of Houston main campus.&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
&lt;br /&gt;
https://www.eventbrite.com/e/archivematica-camp-houston-2018-registration-48420292398&lt;br /&gt;
&lt;br /&gt;
== Camp Counsellors ==&lt;br /&gt;
&lt;br /&gt;
Archivematica Camp counsellors are a mix of Artefactual staff and community members with experience/expertise in using Archivematica. From Artefactual we have:&lt;br /&gt;
&lt;br /&gt;
'''Ashley Blewer''' works at Artefactual as our AV Preservation Specialist, primarily on the Archivematica project. Ashley also works on the audiovisual open source software projects QCTools and MediaConch (which is also used in Archivematica!). Ashley will be leveraging her archival and technical backgrounds in Stream 1 and talking about all things Archivematica!&lt;br /&gt;
&lt;br /&gt;
'''Jesús García Crespo''' is a software developer for Artefactual Systems Inc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Evelyn McLellan''' is President of Artefactual Systems and has been involved in the Archivematica project since its earliest days. An archivist by training with a strange obsession with preservation metadata, she'll be leading some of the sessions and generally helping out where needed.&lt;br /&gt;
&lt;br /&gt;
'''Ross Spencer''' is a software developer for Artefactual Systems Inc. Focused primarily on the Archivematica project, Ross has a background in digital preservation research and analysis. Having previously worked for Archives New Zealand, and before then, The National Archive UK, he has experience with the unique requirements of a government workflow. Ross also has a broad interest in all things digital preservation, archives, and code. Ross will be discussing APIs, optimisation, contributing code, and issues! And much much more.&lt;br /&gt;
&lt;br /&gt;
Our two community member counsellors will be:&lt;br /&gt;
&lt;br /&gt;
'''Andrew Berger'''&lt;br /&gt;
&lt;br /&gt;
Andrew Berger is Senior Digital Archivist at the Computer History Museum. He is the primary archivist responsible for overseeing the preservation of the museum’s digital collections and manages the museum’s digital repository. In 2014-2015, he oversaw the museum’s testing and implementation of Archivematica and maintains day-to-day responsibility for ingest and for monitoring digital repository storage via periodic fixity checks.&lt;br /&gt;
 &lt;br /&gt;
'''Nick Krabbenhoeft'''&lt;br /&gt;
&lt;br /&gt;
Nick Krabbenhoeft is the Digital Preservation Manager at New York Public Library where he is responsible for the long-term accessibility of digitized images, audio, and video material and born-digital video and archival collections. He researches digital collections surveys, systems integrations, and digital object validation. Nick teaches on digital preservation and curation as a Visiting Assistant Professor at the Pratt Institute.&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
=== Wednesday November 14: Day One (optional) Archivematica for Beginners ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff;&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 90%; background-color: #93c9ff&amp;quot;|'''Topic'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:00am - 9:30pm&lt;br /&gt;
|'''Arrival and registration'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:30am - 10:30pm&lt;br /&gt;
|'''Module 1: Archivematica in the digital preservation landscape'''&lt;br /&gt;
Topics covered include: where does Archivematica fit into the digital preservation landscape, what does Archivematica promise to do, what doesn't Archivematica do&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|10:30am-12:00pm&lt;br /&gt;
|'''Module 2: How does Archivematica actually work?'''&lt;br /&gt;
Topics covered include: Archivematica's conceptual model, packages (transfers, bags, SIPs, AIPs, DIPs), microservices as implementations of preservation actions, workflows, storage spaces (how the storage service works and how to get at your content)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:00pm - 1:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Lunch&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|1:00pm - 5:00pm&lt;br /&gt;
|'''Module 3: Archivematica's core functionality'''&lt;br /&gt;
Topics covered include: understanding Archivematica's dashboard, including the Transfer tab, Ingest tab, Administration tab, and Preservation planning tab plus a first look at an AIP produced by Archivematica.  This afternoon session includes hands-on exercises.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note''': participants are welcome to join the morning session, afternoon session, or both sessions as they wish. Participants may also wish to join the Camp on Day Two.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Thursday, November 15: Day Two Archivematica Camp===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 1 TBA'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 2 TBA'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:00am - 9:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Arrival and registration'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:30am - 11:00am&lt;br /&gt;
|'''Module 4: Stream 1 - Building on core: Archivematica's specialized workflows'''&lt;br /&gt;
Topics covered include transfers of zipped files, disk images, metadata.csv, manual normalization, and a look at automation tools.  This module includes hands-on exercises.&lt;br /&gt;
|'''Module 4: Stream 2 - Supporting Archivematica workflows'''&lt;br /&gt;
Topics covered include Checking-in; technical architecture, deployment and working open-source.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|11:00am - 12:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Community profile: Texas institutions'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:00pm - 1:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Lunch&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|1:00pm - 3:00pm&lt;br /&gt;
|'''Module 5: Stream 1 - Archivematica's non-core functionality'''&lt;br /&gt;
Topics covered include a look at the Backlog and Appraisal tab, AIP reingest, AIP encryption, transcription, and using Mediaconch.  This module includes hands-on exercises.&lt;br /&gt;
|'''Module 5:  Stream 2 - Understanding Archivematica's logs and performance evaluation'''&lt;br /&gt;
Topics include Monitoring, logs, the API, and automation tools.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|3:00pm-4:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Community profile: Computer History Museum and New York Public Library'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|4:00pm - 5:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| Open conversation and Agenda adjustment for Day 3 - what do you want to talk about tomorrow? Also, wrap-up.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Friday, November 16: Day Three Archivematica Camp ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse; &amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 1 TBA'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 2 TBA'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|9:00am - 9:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;white-space: nowrap; width: 90%;&amp;quot;|'''Arrival and planning'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|9:30pm - 10:30pm&lt;br /&gt;
|'''Module 6: Stream 1 - Special Topics''' &lt;br /&gt;
Topics covered include handling complex media (audiovisual and disk images), ArchivesSpace integration, and PREMIS linked open data and the OWL ontology&lt;br /&gt;
|'''Module 6: Stream 2 - AIPs for developers/systems administrators'''&lt;br /&gt;
Topics covered include how the METS file is written from the database&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|10:30-11:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;white-space: nowrap; width: 90%;&amp;quot;|'''Module 7: Archivematica in the community'''&lt;br /&gt;
Topics covered include how the code is written, collaborative digital preservation, and a look at the Archivematica roadmap.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|11:30am - 12:30pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Brown Bag Lunch and Community topics'''&lt;br /&gt;
Based on topics raised from campers at registration and as the camp has progressed. Led by Artefactual staff with lots of input from the community.  Breakout into 2 rooms as needed. Informal and fun! &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:30pm - 2:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 90%;&amp;quot;|'''Module 8: Implementation roundtable'''&lt;br /&gt;
Discussion of various ways Archivematica can be implemented with a checklist of what you need to actually run Archivematica. &lt;br /&gt;
Campers are invited to share their particular Archivematica implementations, real or imagined.  &lt;br /&gt;
Questions and participation mandatory! Wrap up and safe travels!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note on agenda adjusting''': based on camper interest, the schedule may be adjusted to accommodate topics of interest that will be covered during the concurrent sessions.&lt;br /&gt;
&lt;br /&gt;
== Social events ==&lt;br /&gt;
&lt;br /&gt;
=== Wednesday, November 14: Group event ===&lt;br /&gt;
&lt;br /&gt;
Folks meet at [https://8thwonder.com/ 8th Wonder Breweries] from 6pm. The address is: [https://www.google.de/maps/search/2202+Dallas+Street+%7C+HouTex+%7C+77003/@29.7488668,-95.3580668,17z/data=!3m1!4b1 ''2202 Dallas Street | HouTex | 77003''] about 2.5 miles away from the University of Houston campus. &lt;br /&gt;
&lt;br /&gt;
Everyone is invited to find shared rides to the event and folks from Artefactual will be on hand to help everyone remaining on campus find transport too. We can't wait to see y'all there!&lt;br /&gt;
&lt;br /&gt;
=== Thursday, November 15: Small group dinners ===&lt;br /&gt;
&lt;br /&gt;
We've created a sign-up sheet to help folk find others to dine with on Thursday. There are a variety of restaurants on the list to cater for all. The restaurants are across the Houston area. If you know Houston well, or have an idea for a restaurant not listed, please consider becoming a group leader. &lt;br /&gt;
&lt;br /&gt;
The sign-up sheet for group dinners can be found here: https://docs.google.com/document/d/1rvnKP6lM3aeuRulgOnlmjYg_k8gaaCgfZdfvkU7sTBM/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Local Arrangements ==&lt;br /&gt;
Sessions will be held in the [https://www.google.com/maps/place/M.D.+Anderson+Library/@29.7216972,-95.3444726,15z/data=!4m8!1m2!3m1!2sM.D.+Anderson+Library!3m4!1s0x0:0x2a3f0ce5297e9c3a!8m2!3d29.7210839!4d-95.3420484 M.D. Anderson Library] on the University of Houston main campus.&lt;br /&gt;
&lt;br /&gt;
=== Hotels ===&lt;br /&gt;
We have reserved a block of rooms in the UH Hilton at a rate of $179/night. Rooms at this rate are available on a first come, first served basis and must be booked before Sunday, October 14, 2018. To make reservations on the room block, call 832-531-6300 or 800-774-1500 and follow the automated prompts for room reservations. The group name for the room block is Artefactual Systems (code ARTE).&lt;br /&gt;
&lt;br /&gt;
Hotels are also available downtown. There are many hotels near the [https://www.google.com/maps/place/Theater+District/@29.7588822,-95.3667289,17z/data=!4m8!1m2!2m1!1spurple+line!3m4!1s0x8640bf3a02f3a873:0x2b891dc7cc50c30f!8m2!3d29.7607509!4d-95.3676917 Theater District], [https://www.google.com/maps/place/Central+Station+Rusk/@29.7586121,-95.3638858,17z/data=!4m8!1m2!2m1!1spurple+line!3m4!1s0x8640bf3b333c80a7:0x6fa09da76725dace!8m2!3d29.7577507!4d-95.3627443 Central Station Rusk], and [https://www.google.com/maps/place/Convention+District/@29.7567679,-95.3626305,17z/data=!4m8!1m2!2m1!1spurple+line!3m4!1s0x8640bf23e6dc48e3:0xe8d2427611ae1e92!8m2!3d29.7547783!4d-95.3578097 Convention District] stops on the [https://www.ridemetro.org/Pages/PurpleLine.aspx METRORail purple line], which provides frequent service between downtown Houston and the UH campus. Purple line stops on the UH main campus include Robertson Stadium/UH/TSU and UH South/University Oaks.&lt;br /&gt;
&lt;br /&gt;
A quick review of Airbnb search results shows many rentals in Midtown, Montrose, Museum District, and EaDo/Eastwood neighborhoods within a short commute (~5 miles) to campus.&lt;br /&gt;
&lt;br /&gt;
==Code of Conduct==&lt;br /&gt;
&lt;br /&gt;
The Archivematica community is dedicated to providing a welcoming and positive experience for everyone, whether they are in a formal session or a social setting related to an Archivematica event, or are taking part in activities online. Archivematica community participants come from all over the world and bring with them a wide variety of professional, personal and social backgrounds; whatever these may be, we treat colleagues with dignity and respect. We are sensitive to the fact that the international nature of the Archivematica community means that we span many different social norms around language and behaviour and we strive to conduct ourselves in ways that are unlikely to cause offense. In the event that someone’s conduct is causing offense or distress, the Archivematica Camp has a detailed Anti-Harassment Policy, details below, which can be applied to address the problem.&lt;br /&gt;
&lt;br /&gt;
The first step in dealing with any serious misconduct is to contact a member of the organizing group, or a counsellor at an Archivematica Camp (please see counsellors, above). These people will be made known before and during any Archivematica Camp event.&lt;br /&gt;
&lt;br /&gt;
'''Anti-Harassment Policy'''&lt;br /&gt;
&lt;br /&gt;
The Archivematica community is dedicated to providing a harassment-free conference/camp experience for everyone. If you have been harassed, please consult this protocol for conflict resolution which makes clear how we can help.&lt;br /&gt;
&lt;br /&gt;
The Archivematica community has established the following policy to make it clear that we do not tolerate harassment in any form. Sexual or discriminatory language and imagery are not appropriate for any event venue, including talks, or any other communication channel used during the conference (such as social media).&lt;br /&gt;
&lt;br /&gt;
Harassment includes:&lt;br /&gt;
&lt;br /&gt;
* offensive verbal comments related to sex, gender, ethnicity, nationality, socioeconomic status, sexual orientation, disability, physical appearance, body size, age, race, religion;&lt;br /&gt;
* sexual or discriminatory images in public spaces;&lt;br /&gt;
* deliberate intimidation;&lt;br /&gt;
* stalking;&lt;br /&gt;
* harassing photography or recording;&lt;br /&gt;
* sustained disruption of talks or other events;&lt;br /&gt;
* inappropriate physical contact; and&lt;br /&gt;
* unwelcome sexual attention.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The lingua franca of Archivematica Camp is English; however, English may not be the native language of Archivematica Camp participants. Further, cultural norms around what may be considered obscene and offensive communication will vary among Archivematica Camp attendees. Campers are asked to please be mindful of the international character of Archivematica Camp, and to use respectful and clear language free of slang to facilitate communication.&lt;br /&gt;
&lt;br /&gt;
Participants asked to stop any harassing behavior are expected to comply immediately.&lt;br /&gt;
&lt;br /&gt;
If a participant engages in harassing behavior, event organizers and Archivematica representatives (or their designees) may take any action they deem appropriate, including warning the offender, expulsion from Archivematica Camp, or contacting a higher authority such as a representative from the offender’s institution.&lt;br /&gt;
&lt;br /&gt;
If a participant raises a concern relating to actions covered by this policy in good faith, there will be no retaliation for bringing forward their concern. Threatening or taking action against someone for invoking this policy or for participating in any related investigation will be considered a violation of this policy.&lt;br /&gt;
&lt;br /&gt;
Participants are expected to follow the anti-harassment policy at all Camp-related venues, Camp-related social events, and online communication channels.&lt;br /&gt;
&lt;br /&gt;
We expect attendees and speakers past and present to be respectful to each other, and we will deal with any incidents that arise, including on social media.&lt;br /&gt;
&lt;br /&gt;
We value your participation in the Archivematica community and your support in keeping the Archivematica community a safe, welcoming, and friendly space for fellow participants.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Acknowledgments'''&lt;br /&gt;
&lt;br /&gt;
This policy is based on the [http://www.pasignyc.org/#code-of-conduct-section PASIG Code of Conduct], portions of which were modified from the [http://or2016.net/code-of-conduct/ Open Repositories’ code of conduct], which was itself modified from [https://www.seattleattic.com/codeofconduct Seattle Attic’s code of conduct] and the [http://adainitiative.org/what-we-do/events/ada-initiative-event-anti-harassment-policy/ Ada Initiative’s event harassment policy].&lt;br /&gt;
&lt;br /&gt;
'''License'''&lt;br /&gt;
&lt;br /&gt;
This document is licensed under [https://creativecommons.org/licenses/by-sa/3.0/ Creative Commons BY-SA].&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Community/Camps/Houston2018&amp;diff=12759</id>
		<title>Community/Camps/Houston2018</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Community/Camps/Houston2018&amp;diff=12759"/>
		<updated>2018-11-02T18:41:52Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: /* Camp Counsellors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We're thrilled to be headed to Houston, Texas for Archivematica Camp in November 2018! Hope y'all can make it!&lt;br /&gt;
&lt;br /&gt;
Inspired by similar events like Hydra Camp, Islandora Camp and Fedora Camp, Archivematica Camp is intended to provide a space for anyone interested in or currently using Archivematica to come together, learn about the platform from other users, and share their experiences.&lt;br /&gt;
[[File:ArchivematicaCamp.jpg|500px|center|thumb]]&lt;br /&gt;
A big thanks to University of Houston Libraries and the Texas Digital Library for co-sponsoring this camp. &lt;br /&gt;
&lt;br /&gt;
== Dates &amp;amp; Location ==&lt;br /&gt;
&lt;br /&gt;
'''November 14-16, 2018 - [http://libraries.uh.edu/ University of Houston Libraries]'''.&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
&lt;br /&gt;
https://www.eventbrite.com/e/archivematica-camp-houston-2018-registration-48420292398&lt;br /&gt;
&lt;br /&gt;
== Camp Counsellors ==&lt;br /&gt;
&lt;br /&gt;
Archivematica Camp counsellors are a mix of Artefactual staff and community members with experience/expertise in using Archivematica. From Artefactual we have:&lt;br /&gt;
&lt;br /&gt;
'''Ashley Blewer''' works at Artefactual as our AV Preservation Specialist, primarily on the Archivematica project.&lt;br /&gt;
&lt;br /&gt;
'''Jesús García Crespo''' is a software developer for Artefactual Systems Inc.&lt;br /&gt;
&lt;br /&gt;
'''Ross Spencer''' is a software developer for Artefactual Systems Inc. Focused primarily on the Archivematica project, Ross has a background in digital preservation research and analysis. Having previously worked for Archives New Zealand, and before then, The National Archive UK, he has experience with the unique requirements of a government workflow. Ross also has a broad interest in all things digital preservation, archives, and code. Ross will be discussing APIs, optimisation, contributing code, and issues! And much much more.&lt;br /&gt;
&lt;br /&gt;
Our two community member counsellors will be:&lt;br /&gt;
&lt;br /&gt;
'''Andrew Berger'''&lt;br /&gt;
&lt;br /&gt;
Andrew Berger is Senior Digital Archivist at the Computer History Museum. He is the primary archivist responsible for overseeing the preservation of the museum’s digital collections and manages the museum’s digital repository. In 2014-2015, he oversaw the museum’s testing and implementation of Archivematica and maintains day-to-day responsibility for ingest and for monitoring digital repository storage via periodic fixity checks.&lt;br /&gt;
 &lt;br /&gt;
'''Nick Krabbenhoeft'''&lt;br /&gt;
&lt;br /&gt;
Nick Krabbenhoeft is the Digital Preservation Manager at New York Public Library where he is responsible for the long-term accessibility of digitized images, audio, and video material and born-digital video and archival collections. He researches digital collections surveys, systems integrations, and digital object validation. Nick teaches on digital preservation and curation as a Visiting Assistant Professor at the Pratt Institute.&lt;br /&gt;
&lt;br /&gt;
== Schedule (tentative) ==&lt;br /&gt;
&lt;br /&gt;
=== Wednesday November 14: Day One (optional) Archivematica for Beginners ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff;&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 90%; background-color: #93c9ff&amp;quot;|'''Topic'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:00am - 10:30pm&lt;br /&gt;
|'''Module 1: Archivematica in the digital preservation landscape'''&lt;br /&gt;
Topics covered include: where does Archivematica fit into the digital preservation landscape, what does Archivematica promise to do, what doesn't Archivematica do&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|10:30am-12:00pm&lt;br /&gt;
|'''Module 2: How does Archivematica actually work?'''&lt;br /&gt;
Topics covered include: Archivematica's conceptual model, packages (transfers, bags, SIPs, AIPs, DIPs), microservices as implementations of preservation actions, workflows, storage spaces (how the storage service works and how to get at your content)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:00pm - 1:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Lunch&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|1:00pm - 5:00pm&lt;br /&gt;
|'''Module 3: Archivematica's core functionality'''&lt;br /&gt;
Topics covered include: understanding Archivematica's dashboard, including the Transfer tab, Ingest tab, Administration tab, and Preservation planning tab plus a first look at an AIP produced by Archivematica.  This afternoon session includes hands-on exercises.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note''': participants are welcome to join the morning session, afternoon session, or both sessions as they wish. Participants may also wish to join the Camp on Day Two.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Thursday, November 15: Day Two Archivematica Camp===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 1 TBA'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 2 TBA'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:00am - 9:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Arrival and registration'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:30am - 11:00am&lt;br /&gt;
|'''Module 4: Stream 1 - Building on core: Archivematica's specialized workflows'''&lt;br /&gt;
Topics covered include transfers of zipped files, disk images, metadata.csv, manual normalization, and a look at automation tools.  This module includes hands-on exercises.&lt;br /&gt;
|'''Module 4: Stream 2 - Supporting Archivematica workflows'''&lt;br /&gt;
Topics covered include how to install automation tools, REST APIs, logs, maintenance, and upgrades.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|11:00am - 12:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Community profile:  University of Houston'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:00pm - 1:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Lunch&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|1:00pm - 3:00pm&lt;br /&gt;
|'''Module 5: Stream 1 - Archivematica's non-core functionality'''&lt;br /&gt;
Topics covered include a look at the Backlog and Appraisal tab, AIP reingest, AIP encryption, transcription, and using Mediaconch.  This module includes hands-on exercises.&lt;br /&gt;
|'''Module 5:  Stream 2 - Understanding Archivematica's logs and performance evaluation'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|3:00pm-4:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Community profile: Computer History Museum and New York Public Library'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|4:00pm - 5:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| Agenda adjustment for Day 3 - what do you want to talk about tomorrow? Also, wrap-up.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Friday, November 16: Day Three Archivematica Camp ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse; &amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 1 TBA'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 2 TBA'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|9:00am - 9:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;white-space: nowrap; width: 90%;&amp;quot;|'''How this day is going to unfold'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|9:30pm - 10:30pm&lt;br /&gt;
|'''Module 6: Stream 1 - Special Topics''' &lt;br /&gt;
Topics covered include handling complex media (audiovisual and disk images), ArchivesSpace integration, and PREMIS linked open data and the OWL ontology&lt;br /&gt;
|'''Module 6: Stream 2 - AIPs for developers/systems administrators'''&lt;br /&gt;
Topics covered include how the METS file is written from the database&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|10:30-11:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;white-space: nowrap; width: 90%;&amp;quot;|'''Module 7: Archivematica in the community'''&lt;br /&gt;
Topics covered include how the code is written, collaborative digital preservation, and a look at the Archivematica roadmap.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|11:30am - 12:30pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Brown Bag Lunch and Community topics'''&lt;br /&gt;
Based on topics raised from campers at registration and as the camp has progressed. Led by Artefactual staff with lots of input from the community.  Breakout into 2 rooms as needed. Informal and fun! &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:30pm - 2:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 90%;&amp;quot;|'''Module 8: Implementation roundtable'''&lt;br /&gt;
Discussion of various ways Archivematica can be implemented with a checklist of what you need to actually run Archivematica. &lt;br /&gt;
Campers are invited to share their particular Archivematica implementations, real or imagined.  &lt;br /&gt;
Questions and participation mandatory! Wrap up and safe travels!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note on agenda adjusting''': based on camper interest, the schedule may be adjusted to accommodate topics of interest that will be covered during the concurrent sessions.&lt;br /&gt;
&lt;br /&gt;
== Social events ==&lt;br /&gt;
&lt;br /&gt;
=== Wednesday, November 14: Group event ===&lt;br /&gt;
&lt;br /&gt;
Folks meet at [https://8thwonder.com/ 8th Wonder Breweries] from 6pm. The address is: [https://www.google.de/maps/search/2202+Dallas+Street+%7C+HouTex+%7C+77003/@29.7488668,-95.3580668,17z/data=!3m1!4b1 ''2202 Dallas Street | HouTex | 77003''] about 2.5 miles away from the University of Houston campus. &lt;br /&gt;
&lt;br /&gt;
Everyone is invited to find shared rides to the event and folks from Artefactual will be on hand to help everyone remaining on campus find transport too. We can't wait to see y'all there!&lt;br /&gt;
&lt;br /&gt;
=== Thursday, November 15: Small group dinners ===&lt;br /&gt;
&lt;br /&gt;
We've created a sign-up sheet to help folk find others to dine with on Thursday. There are a variety of restaurants on the list to cater for all. The restaurants are across the Houston area. If you know Houston well, or have an idea for a restaurant not listed, please consider becoming a group leader. &lt;br /&gt;
&lt;br /&gt;
The sign-up sheet for group dinners can be found here: https://docs.google.com/document/d/1rvnKP6lM3aeuRulgOnlmjYg_k8gaaCgfZdfvkU7sTBM/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Local Arrangements ==&lt;br /&gt;
Sessions will be held in the [https://www.google.com/maps/place/M.D.+Anderson+Library/@29.7216972,-95.3444726,15z/data=!4m8!1m2!3m1!2sM.D.+Anderson+Library!3m4!1s0x0:0x2a3f0ce5297e9c3a!8m2!3d29.7210839!4d-95.3420484 M.D. Anderson Library] on the University of Houston main campus.&lt;br /&gt;
&lt;br /&gt;
=== Hotels ===&lt;br /&gt;
We have reserved a block of rooms in the UH Hilton at a rate of $179/night. Rooms at this rate are available on a first come, first served basis and must be booked before Sunday, October 14, 2018. To make reservations on the room block, call 832-531-6300 or 800-774-1500 and follow the automated prompts for room reservations. The group name for the room block is Artefactual Systems (code ARTE).&lt;br /&gt;
&lt;br /&gt;
Hotels are also available downtown. There are many hotels near the [https://www.google.com/maps/place/Theater+District/@29.7588822,-95.3667289,17z/data=!4m8!1m2!2m1!1spurple+line!3m4!1s0x8640bf3a02f3a873:0x2b891dc7cc50c30f!8m2!3d29.7607509!4d-95.3676917 Theater District], [https://www.google.com/maps/place/Central+Station+Rusk/@29.7586121,-95.3638858,17z/data=!4m8!1m2!2m1!1spurple+line!3m4!1s0x8640bf3b333c80a7:0x6fa09da76725dace!8m2!3d29.7577507!4d-95.3627443 Central Station Rusk], and [https://www.google.com/maps/place/Convention+District/@29.7567679,-95.3626305,17z/data=!4m8!1m2!2m1!1spurple+line!3m4!1s0x8640bf23e6dc48e3:0xe8d2427611ae1e92!8m2!3d29.7547783!4d-95.3578097 Convention District] stops on the [https://www.ridemetro.org/Pages/PurpleLine.aspx METRORail purple line], which provides frequent service between downtown Houston and the UH campus. Purple line stops on the UH main campus include Robertson Stadium/UH/TSU and UH South/University Oaks.&lt;br /&gt;
&lt;br /&gt;
A quick review of Airbnb search results shows many rentals in Midtown, Montrose, Museum District, and EaDo/Eastwood neighborhoods within a short commute (~5 miles) to campus.&lt;br /&gt;
&lt;br /&gt;
==Code of Conduct==&lt;br /&gt;
&lt;br /&gt;
The Archivematica community is dedicated to providing a welcoming and positive experience for everyone, whether they are in a formal session or a social setting related to an Archivematica event, or are taking part in activities online. Archivematica community participants come from all over the world and bring with them a wide variety of professional, personal and social backgrounds; whatever these may be, we treat colleagues with dignity and respect. We are sensitive to the fact that the international nature of the Archivematica community means that we span many different social norms around language and behaviour and we strive to conduct ourselves in ways that are unlikely to cause offense. In the event that someone’s conduct is causing offense or distress, the Archivematica Camp has a detailed Anti-Harassment Policy, details below, which can be applied to address the problem.&lt;br /&gt;
&lt;br /&gt;
The first step in dealing with any serious misconduct is to contact a member of the organizing group, or a counsellor at an Archivematica Camp (please see counsellors, above). These people will be made known before and during any Archivematica Camp event.&lt;br /&gt;
&lt;br /&gt;
'''Anti-Harassment Policy'''&lt;br /&gt;
&lt;br /&gt;
The Archivematica community is dedicated to providing a harassment-free conference/camp experience for everyone. If you have been harassed, please consult this protocol for conflict resolution which makes clear how we can help.&lt;br /&gt;
&lt;br /&gt;
The Archivematica community has established the following policy to make it clear that we do not tolerate harassment in any form. Sexual or discriminatory language and imagery are not appropriate for any event venue, including talks, or any other communication channel used during the conference (such as social media).&lt;br /&gt;
&lt;br /&gt;
Harassment includes:&lt;br /&gt;
&lt;br /&gt;
* offensive verbal comments related to sex, gender, ethnicity, nationality, socioeconomic status, sexual orientation, disability, physical appearance, body size, age, race, religion;&lt;br /&gt;
* sexual or discriminatory images in public spaces;&lt;br /&gt;
* deliberate intimidation;&lt;br /&gt;
* stalking;&lt;br /&gt;
* harassing photography or recording;&lt;br /&gt;
* sustained disruption of talks or other events;&lt;br /&gt;
* inappropriate physical contact; and&lt;br /&gt;
* unwelcome sexual attention.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The lingua franca of Archivematica Camp is English; however, English may not be the native language of Archivematica Camp participants. Further, cultural norms around what may be considered obscene and offensive communication will vary among Archivematica Camp attendees. Campers are asked to please be mindful of the international character of Archivematica Camp, and to use respectful and clear language free of slang to facilitate communication.&lt;br /&gt;
&lt;br /&gt;
Participants asked to stop any harassing behavior are expected to comply immediately.&lt;br /&gt;
&lt;br /&gt;
If a participant engages in harassing behavior, event organizers and Archivematica representatives (or their designees) may take any action they deem appropriate, including warning the offender, expulsion from Archivematica Camp, or contacting a higher authority such as a representative from the offender’s institution.&lt;br /&gt;
&lt;br /&gt;
If a participant raises a concern relating to actions covered by this policy in good faith, there will be no retaliation for bringing forward their concern. Threatening or taking action against someone for invoking this policy or for participating in any related investigation will be considered a violation of this policy.&lt;br /&gt;
&lt;br /&gt;
Participants are expected to follow the anti-harassment policy at all Camp-related venues, Camp-related social events, and online communication channels.&lt;br /&gt;
&lt;br /&gt;
We expect attendees and speakers past and present to be respectful to each other, and we will deal with any incidents that arise, including on social media.&lt;br /&gt;
&lt;br /&gt;
We value your participation in the Archivematica community and your support in keeping the Archivematica community a safe, welcoming, and friendly space for fellow participants.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Acknowledgments'''&lt;br /&gt;
&lt;br /&gt;
This policy is based on the [http://www.pasignyc.org/#code-of-conduct-section PASIG Code of Conduct], portions of which were modified from the [http://or2016.net/code-of-conduct/ Open Repositories’ code of conduct], which was itself modified from [https://www.seattleattic.com/codeofconduct Seattle Attic’s code of conduct] and the [http://adainitiative.org/what-we-do/events/ada-initiative-event-anti-harassment-policy/ Ada Initiative’s event harassment policy].&lt;br /&gt;
&lt;br /&gt;
'''License'''&lt;br /&gt;
&lt;br /&gt;
This document is licensed under [https://creativecommons.org/licenses/by-sa/3.0/ Creative Commons BY-SA].&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Community/Camps/Houston2018&amp;diff=12738</id>
		<title>Community/Camps/Houston2018</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Community/Camps/Houston2018&amp;diff=12738"/>
		<updated>2018-10-30T20:57:55Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: /* Social events */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We're thrilled to be headed to Houston, Texas for Archivematica Camp in November 2018! Hope y'all can make it!&lt;br /&gt;
&lt;br /&gt;
Inspired by similar events like Hydra Camp, Islandora Camp and Fedora Camp, Archivematica Camp is intended to provide a space for anyone interested in or currently using Archivematica to come together, learn about the platform from other users, and share their experiences.&lt;br /&gt;
[[File:ArchivematicaCamp.jpg|500px|center|thumb]]&lt;br /&gt;
A big thanks to University of Houston Libraries and the Texas Digital Library for co-sponsoring this camp. &lt;br /&gt;
&lt;br /&gt;
== Dates &amp;amp; Location ==&lt;br /&gt;
&lt;br /&gt;
'''November 14-16, 2018 - [http://libraries.uh.edu/ University of Houston Libraries]'''.&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
&lt;br /&gt;
https://www.eventbrite.com/e/archivematica-camp-houston-2018-registration-48420292398&lt;br /&gt;
&lt;br /&gt;
== Camp Counsellors ==&lt;br /&gt;
&lt;br /&gt;
Archivematica Camp counsellors are a mix of Artefactual staff and community members with experience/expertise in using Archivematica.&lt;br /&gt;
&lt;br /&gt;
Our two community member counsellors will be Andrew Berger and Nick Krabbenhoeft!&lt;br /&gt;
&lt;br /&gt;
'''Andrew Berger'''&lt;br /&gt;
&lt;br /&gt;
Andrew Berger is Senior Digital Archivist at the Computer History Museum. He is the primary archivist responsible for overseeing the preservation of the museum’s digital collections and manages the museum’s digital repository. In 2014-2015, he oversaw the museum’s testing and implementation of Archivematica and maintains day-to-day responsibility for ingest and for monitoring digital repository storage via periodic fixity checks.&lt;br /&gt;
 &lt;br /&gt;
'''Nick Krabbenhoeft'''&lt;br /&gt;
&lt;br /&gt;
Nick Krabbenhoeft is the Digital Preservation Manager at New York Public Library where he is responsible for the long-term accessibility of digitized images, audio, and video material and born-digital video and archival collections. He researches digital collections surveys, systems integrations, and digital object validation. Nick teaches on digital preservation and curation as a Visiting Assistant Professor at the Pratt Institute.&lt;br /&gt;
&lt;br /&gt;
== Schedule (tentative) ==&lt;br /&gt;
&lt;br /&gt;
=== Wednesday November 14: Day One (optional) Archivematica for Beginners ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff;&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 90%; background-color: #93c9ff&amp;quot;|'''Topic'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:00am - 10:30pm&lt;br /&gt;
|'''Module 1: Archivematica in the digital preservation landscape'''&lt;br /&gt;
Topics covered include: where does Archivematica fit into the digital preservation landscape, what does Archivematica promise to do, what doesn't Archivematica do&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|10:30am-12:00pm&lt;br /&gt;
|'''Module 2: How does Archivematica actually work?'''&lt;br /&gt;
Topics covered include: Archivematica's conceptual model, packages (transfers, bags, SIPs, AIPs, DIPs), microservices as implementations of preservation actions, workflows, storage spaces (how the storage service works and how to get at your content)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:00pm - 1:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Lunch&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|1:00pm - 5:00pm&lt;br /&gt;
|'''Module 3: Archivematica's core functionality'''&lt;br /&gt;
Topics covered include: understanding Archivematica's dashboard, including the Transfer tab, Ingest tab, Administration tab, and Preservation planning tab plus a first look at an AIP produced by Archivematica.  This afternoon session includes hands-on exercises.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note''': participants are welcome to join the morning session, afternoon session, or both sessions as they wish. Participants may also wish to join the Camp on Day Two.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Thursday, November 15: Day Two Archivematica Camp===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 1 TBA'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 2 TBA'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:00am - 9:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Arrival and registration'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:30am - 11:00am&lt;br /&gt;
|'''Module 4: Stream 1 - Building on core: Archivematica's specialized workflows'''&lt;br /&gt;
Topics covered include transfers of zipped files, disk images, metadata.csv, manual normalization, and a look at automation tools.  This module includes hands-on exercises.&lt;br /&gt;
|'''Module 4: Stream 2 - Supporting Archivematica workflows'''&lt;br /&gt;
Topics covered include how to install automation tools, REST APIs, logs, maintenance, and upgrades.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|11:00am - 12:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Community profile:  TBD'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:00pm - 1:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Lunch&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|1:00pm - 3:00pm&lt;br /&gt;
|'''Module 5: Stream 1 - Archivematica's non-core functionality'''&lt;br /&gt;
Topics covered include a look at the Backlog and Appraisal tab, AIP reingest, AIP encryption, transcription, and using Mediaconch.  This module includes hands-on exercises.&lt;br /&gt;
|'''Module 5:  Stream 2 - Understanding Archivematica's logs and performance evaluation'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|3:00pm-4:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Community profile: TBD'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|4:00pm - 5:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| Agenda adjustment for Day 3 - what do you want to talk about tomorrow? Also, wrap-up.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Friday, November 16: Day Three Archivematica Camp ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse; &amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 1 TBA'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Room 2 TBA'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|9:00am - 9:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;white-space: nowrap; width: 90%;&amp;quot;|'''How this day is going to unfold'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|9:30pm - 10:30pm&lt;br /&gt;
|'''Module 6: Stream 1 - AIPs for Archivists''' &lt;br /&gt;
Topics covered include how the AIP is structured, and a close look at the METS file&lt;br /&gt;
|'''Module 6: Stream 2 - AIPs for developers/systems administrators'''&lt;br /&gt;
Topics covered include how the METS file is written from the database&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|10:30-11:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;white-space: nowrap; width: 90%;&amp;quot;|'''Module 7: Archivematica in the community'''&lt;br /&gt;
Topics covered include how the code is written, collaborative digital preservation, and a look at the Archivematica roadmap.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|11:30am - 12:30pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Brown Bag Lunch and Community topics'''&lt;br /&gt;
Based on topics raised from campers at registration and as the camp has progressed. Led by Artefactual staff with lots of input from the community.  Breakout into 2 rooms as needed. Informal and fun! &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:30pm - 2:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;white-space: nowrap; width: 90%;&amp;quot;|'''Module 8: Implementation roundtable'''&lt;br /&gt;
Discussion of various ways Archivematica can be implemented with a checklist of what you need to actually run Archivematica. Campers are invited to share their particular Archivematica implementations, real or imagined.  Questions and participation mandatory! Wrap up and safe travels!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note on agenda adjusting''': based on camper interest, the schedule may be adjusted to accommodate topics of interest that will be covered during the concurrent sessions.&lt;br /&gt;
&lt;br /&gt;
== Social events ==&lt;br /&gt;
&lt;br /&gt;
=== Wednesday, November 14: Group event ===&lt;br /&gt;
&lt;br /&gt;
Folks meet at [https://8thwonder.com/ 8th Wonder Breweries] from 6pm. The address is: [https://www.google.de/maps/search/2202+Dallas+Street+%7C+HouTex+%7C+77003/@29.7488668,-95.3580668,17z/data=!3m1!4b1 ''2202 Dallas Street | HouTex | 77003''] about 2.5 miles away from the University of Houston campus. &lt;br /&gt;
&lt;br /&gt;
Everyone is invited to find shared rides to the event and folks from Artefactual will be on hand to help everyone remaining on campus find transport too. We can't wait to see y'all there!&lt;br /&gt;
&lt;br /&gt;
=== Thursday, November 15: Small group dinners ===&lt;br /&gt;
&lt;br /&gt;
We've created a sign-up sheet to help folk find others to dine with on Thursday. There are a variety of restaurants on the list to cater for all. The restaurants are across the Houston area. If you know Houston well, or have an idea for a restaurant not listed, please consider becoming a group leader. &lt;br /&gt;
&lt;br /&gt;
The sign-up sheet for group dinners can be found here: https://docs.google.com/document/d/1rvnKP6lM3aeuRulgOnlmjYg_k8gaaCgfZdfvkU7sTBM/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Local Arrangements ==&lt;br /&gt;
Sessions will be held in the [https://www.google.com/maps/place/M.D.+Anderson+Library/@29.7216972,-95.3444726,15z/data=!4m8!1m2!3m1!2sM.D.+Anderson+Library!3m4!1s0x0:0x2a3f0ce5297e9c3a!8m2!3d29.7210839!4d-95.3420484 M.D. Anderson Library] on the University of Houston main campus.&lt;br /&gt;
&lt;br /&gt;
=== Hotels ===&lt;br /&gt;
We have reserved a block of rooms in the UH Hilton at a rate of $179/night. Rooms at this rate are available on a first come, first served basis and must be booked before Sunday, October 14, 2018. To make reservations on the room block, call 832-531-6300 or 800-774-1500 and follow the automated prompts for room reservations. The group name for the room block is Artefactual Systems (code ARTE).&lt;br /&gt;
&lt;br /&gt;
Hotels are also available downtown. There are many hotels near the [https://www.google.com/maps/place/Theater+District/@29.7588822,-95.3667289,17z/data=!4m8!1m2!2m1!1spurple+line!3m4!1s0x8640bf3a02f3a873:0x2b891dc7cc50c30f!8m2!3d29.7607509!4d-95.3676917 Theater District], [https://www.google.com/maps/place/Central+Station+Rusk/@29.7586121,-95.3638858,17z/data=!4m8!1m2!2m1!1spurple+line!3m4!1s0x8640bf3b333c80a7:0x6fa09da76725dace!8m2!3d29.7577507!4d-95.3627443 Central Station Rusk], and [https://www.google.com/maps/place/Convention+District/@29.7567679,-95.3626305,17z/data=!4m8!1m2!2m1!1spurple+line!3m4!1s0x8640bf23e6dc48e3:0xe8d2427611ae1e92!8m2!3d29.7547783!4d-95.3578097 Convention District] stops on the [https://www.ridemetro.org/Pages/PurpleLine.aspx METRORail purple line], which provides frequent service between downtown Houston and the UH campus. Purple line stops on the UH main campus include Robertson Stadium/UH/TSU and UH South/University Oaks.&lt;br /&gt;
&lt;br /&gt;
A quick review of Airbnb search results shows many rentals in Midtown, Montrose, Museum District, and EaDo/Eastwood neighborhoods within a short commute (~5 miles) to campus.&lt;br /&gt;
&lt;br /&gt;
==Code of Conduct==&lt;br /&gt;
&lt;br /&gt;
The Archivematica community is dedicated to providing a welcoming and positive experience for everyone, whether they are in a formal session or a social setting related to an Archivematica event, or are taking part in activities online. Archivematica community participants come from all over the world and bring with them a wide variety of professional, personal and social backgrounds; whatever these may be, we treat colleagues with dignity and respect. We are sensitive to the fact that the international nature of the Archivematica community means that we span many different social norms around language and behaviour and we strive to conduct ourselves in ways that are unlikely to cause offense. In the event that someone’s conduct is causing offense or distress, the Archivematica Camp has a detailed Anti-Harassment Policy, details below, which can be applied to address the problem.&lt;br /&gt;
&lt;br /&gt;
The first step in dealing with any serious misconduct is to contact a member of the organizing group, or a counsellor at an Archivematica Camp (please see counsellors, above). These people will be made known before and during any Archivematica Camp event.&lt;br /&gt;
&lt;br /&gt;
'''Anti-Harassment Policy'''&lt;br /&gt;
&lt;br /&gt;
The Archivematica community is dedicated to providing a harassment-free conference/camp experience for everyone. If you have been harassed, please consult this protocol for conflict resolution which makes clear how we can help.&lt;br /&gt;
&lt;br /&gt;
The Archivematica community has established the following policy to make it clear that we do not tolerate harassment in any form. Sexual or discriminatory language and imagery are not appropriate for any event venue, including talks, or any other communication channel used during the conference (such as social media).&lt;br /&gt;
&lt;br /&gt;
Harassment includes:&lt;br /&gt;
&lt;br /&gt;
* offensive verbal comments related to sex, gender, ethnicity, nationality, socioeconomic status, sexual orientation, disability, physical appearance, body size, age, race, religion;&lt;br /&gt;
* sexual or discriminatory images in public spaces;&lt;br /&gt;
* deliberate intimidation;&lt;br /&gt;
* stalking;&lt;br /&gt;
* harassing photography or recording;&lt;br /&gt;
* sustained disruption of talks or other events;&lt;br /&gt;
* inappropriate physical contact; and&lt;br /&gt;
* unwelcome sexual attention.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The lingua franca of Archivematica Camp is English; however, English may not be the native language of Archivematica Camp participants. Further, cultural norms around what may be considered obscene and offensive communication will vary among Archivematica Camp attendees. Campers are asked to please be mindful of the international character of Archivematica Camp, and to use respectful and clear language free of slang to facilitate communication.&lt;br /&gt;
&lt;br /&gt;
Participants asked to stop any harassing behavior are expected to comply immediately.&lt;br /&gt;
&lt;br /&gt;
If a participant engages in harassing behavior, event organizers and Archivematica representatives (or their designees) may take any action they deem appropriate, including warning the offender, expulsion from Archivematica Camp, or contacting a higher authority such as a representative from the offender’s institution.&lt;br /&gt;
&lt;br /&gt;
If a participant raises a concern relating to actions covered by this policy in good faith, there will be no retaliation for bringing forward their concern. Threatening or taking action against someone for invoking this policy or for participating in any related investigation will be considered a violation of this policy.&lt;br /&gt;
&lt;br /&gt;
Participants are expected to follow the anti-harassment policy at all Camp-related venues, Camp-related social events, and online communication channels.&lt;br /&gt;
&lt;br /&gt;
We expect attendees and speakers past and present to be respectful to each other, and we will deal with any incidents that arise, including on social media.&lt;br /&gt;
&lt;br /&gt;
We value your participation in the Archivematica community and your support in keeping the Archivematica community a safe, welcoming, and friendly space for fellow participants.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Acknowledgments'''&lt;br /&gt;
&lt;br /&gt;
This policy is based on the [http://www.pasignyc.org/#code-of-conduct-section PASIG Code of Conduct], portions of which were modified from the [http://or2016.net/code-of-conduct/ Open Repositories’ code of conduct], which was itself modified from [https://www.seattleattic.com/codeofconduct Seattle Attic’s code of conduct] and the [http://adainitiative.org/what-we-do/events/ada-initiative-event-anti-harassment-policy/ Ada Initiative’s event harassment policy].&lt;br /&gt;
&lt;br /&gt;
'''License'''&lt;br /&gt;
&lt;br /&gt;
This document is licensed under [https://creativecommons.org/licenses/by-sa/3.0/ Creative Commons BY-SA].&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Dataverse&amp;diff=12592</id>
		<title>Dataverse</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Dataverse&amp;diff=12592"/>
		<updated>2018-08-06T19:30:38Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Link out to supported tabular formats&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Documentation]] &amp;gt; [[Requirements]] &amp;gt; Dataverse&lt;br /&gt;
&lt;br /&gt;
This page sets out the requirements and designs for integration with [http://dataverse.org Dataverse]. &lt;br /&gt;
&lt;br /&gt;
This page was originally created as part of an early Proof of Concept integration in 2017, which was only made available in a development branch of Archivematica. We have now started a phase 2 project to improve on that original integration work and merge it into a public release of Archivematica (exact release tbc).  This work is being sponsored by [https://scholarsportal.info/ Scholars Portal], a service of the Ontario Council of University Libraries (OCUL). &lt;br /&gt;
&lt;br /&gt;
[[Category:Feature requirements]]&lt;br /&gt;
&lt;br /&gt;
===See also===&lt;br /&gt;
&lt;br /&gt;
* [[Sword API]]&lt;br /&gt;
* [[Dataset preservation]]&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This wiki captures requirements for ingesting studies (datasets) from Dataverse into Archivematica for long-term preservation.&lt;br /&gt;
&lt;br /&gt;
==Current Status==&lt;br /&gt;
&lt;br /&gt;
'''May 11, 2018'''&lt;br /&gt;
To see the current status of work, and any outstanding issue, please see the Waffle Board or Board's linked to [https://waffle.io/artefactual/archivematica?label=OCUL:%20AM-Dataverse below]:&lt;br /&gt;
&lt;br /&gt;
* [https://waffle.io/artefactual/archivematica?label=OCUL:%20AM-Dataverse Waffle board for the Dataverse Feature]&lt;br /&gt;
&lt;br /&gt;
==Feature Files==&lt;br /&gt;
On this project we are using [http://docs.behat.org/en/v2.5/guides/1.gherkin.html Gherkin] feature files to define the desired behaviour of preserving a dataset from a Dataverse.  Feature files are also known as Acceptance Tests, because they specify the behaviour that we will test at the end of the project. &lt;br /&gt;
&lt;br /&gt;
The early drafts are documented in this google doc: [http://docs.behat.org/en/v2.5/guides/1.gherkin.html]&lt;br /&gt;
Once the draft has been reviewed we will publish it to our acceptance test repository in github. &lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
April 24, 2017&lt;br /&gt;
This feature requires a development branch of Archivematica, which can be installed with the following steps:&lt;br /&gt;
&lt;br /&gt;
1) install deploy-pub. https://github.com/artefactual/deploy-pub&lt;br /&gt;
2) use the archivematica-centos7 playbook in deploy-pub https://github.com/artefactual/deploy-pub/tree/master/playbooks/archivematica-centos7&lt;br /&gt;
3) create a hosts file that lists your target machine (see digital ocean example linked from playbook)&lt;br /&gt;
4) in requirements.yml change version of ansible-archivematica-src to &amp;quot;stable/1.6.x&amp;quot;&lt;br /&gt;
5) change singlenode.yml to point to the host you defined in your hosts file.&lt;br /&gt;
6) change the vars-singlenode.yml to include the following info:&lt;br /&gt;
#required for dataverse testing&lt;br /&gt;
archivematica_src_am_version: &amp;quot;dev/dataverse-poc&amp;quot;&lt;br /&gt;
archivematica_src_automationtools: &amp;quot;yes&amp;quot;&lt;br /&gt;
archivematica_src_automationtools_version: &amp;quot;dev/dataverse&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Workflow==&lt;br /&gt;
This section is from the first phase project in 2017 and needs to be updated. &lt;br /&gt;
&lt;br /&gt;
*The proposed workflow consists of issuing API calls to Dataverse, receiving content (data files and metadata) for ingest into Archivematica, preparing Archivematica Archival Information Packages (AIPs) and placing them in archival storage, &amp;lt;strike&amp;gt; and updating the Dataverse study with the AIP UUIDs &amp;lt;/strike&amp;gt; (this was determined to be out of scope). &lt;br /&gt;
*Analysis is based on Dataverse tests using [https://apitest.dataverse.org https://apitest.dataverse.org] and [https://demo.dataverse.org https://demo.dataverse.org], online documentation at http://guides.dataverse.org/en/latest/api/index.html and discussions with Dataverse developers and users. &lt;br /&gt;
*Proposed integration is for Archivematica 1.5 and higher and Dataverse 4.x.&lt;br /&gt;
&lt;br /&gt;
===Workflow diagram===&lt;br /&gt;
This section is from the first phase project in 2017 and needs to be updated. &lt;br /&gt;
&lt;br /&gt;
[[File:Dataverse - Archivematica workflow_1.png|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
===Workflow diagram notes===&lt;br /&gt;
&lt;br /&gt;
[1] &amp;quot;Ingest script&amp;quot; refers to an [https://github.com/artefactual/automation-tools automation tool] designed to automate ingest into Archivematica for bulk processing. An existing automation tool would be modified to accomplish the tasks described in the workflow.&lt;br /&gt;
&lt;br /&gt;
[2] A new or updated study is one that has been published, either for the first time or as a new version, since the last API call.&lt;br /&gt;
&lt;br /&gt;
[3] The json file contains citation and other study-level metadata, an entity_id field that is used to identify the study in Dataverse, version information, a list of data files with their own entity_id values, and md5 checksums for each data file.&lt;br /&gt;
&lt;br /&gt;
[4] If json file has content_type of tab separated values, Archivematica issues API call for multiple file (&amp;quot;bundled&amp;quot;) content download. This returns a zipped package for tsv files containing the .tab file, the original uploaded file, several other derivative formats, a DDI XML file and file citations in Endnote and RIS formats.&lt;br /&gt;
&lt;br /&gt;
A [http://guides.dataverse.org/en/latest/user/dataset-management.html?highlight=bundle bundle] is a zipped object, documented by Dataverse as containing all of the below files: &lt;br /&gt;
&lt;br /&gt;
* As tab-delimited data (with the variable names in the first row);&lt;br /&gt;
* The original file uploaded by the user;&lt;br /&gt;
* Saved as R data (if the original file was not in R format);&lt;br /&gt;
* Variable Metadata (as a DDI Codebook XML file);&lt;br /&gt;
* Data File Citation (currently in either RIS or EndNote XML format);&lt;br /&gt;
&lt;br /&gt;
Supported tabular formats are listed in the Dataverse [http://guides.dataverse.org/en/latest/user/tabulardataingest/supportedformats.html manual]&lt;br /&gt;
&lt;br /&gt;
[5] The METS file will consist of a dmdSec containing the DC elements extracted from the json file, and a fileSec and structMap indicating the relationships between the files in the transfer (eg. original uploaded data file, derivative files generated for tabular data, metadata/citation files). This will allow Archivematica to apply appropriate preservation micro-services to different filetypes and provide an accurate representation of the study in the AIP METS file (step 1.9).&lt;br /&gt;
&lt;br /&gt;
[6] Archivematica ingests all content returned from Dataverse, including the json file, plus the METS file generated in step 1.6.&lt;br /&gt;
&lt;br /&gt;
[7] Standard and pre-configured micro-services include: assign UUID, verify checksums, generate checksums, extract packages, scan for viruses, clean up filenames, identify formats, validate formats, extract metadata and normalize for preservation.&lt;br /&gt;
&lt;br /&gt;
== Transfer METS file ==&lt;br /&gt;
&lt;br /&gt;
When the ingest script retrieves content from Dataverse, it generates a METS file to allow Archivematica to understand the contents of the transfer and the relationships between its various data and metadata files.&lt;br /&gt;
&lt;br /&gt;
=== Sample transfer METS file ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Original Dataverse study retrieved through API call:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*dataset.json (a JSON file generated by Dataverse consisting of study-level metadata and information about data files)&lt;br /&gt;
*Study_info.pdf (a non-tabular data file)&lt;br /&gt;
*A zipped bundle consisting of the following:&lt;br /&gt;
**YVR_weather_data.sav (an SPSS SAV file uploaded by the researcher)&lt;br /&gt;
**YVR_weather_data.tab (a TAB file generated from the SPSS SAV file by Dataverse)&lt;br /&gt;
**YVR weather_data.RData (an R file generated from the SPSS SAV file by Dataverse)&lt;br /&gt;
**YVR_weather_data-ddi.xml, YVR_weather_datacitation-endnote.xml, and YVR_weather_datacitation-ris.ris (three metadata files generated for the TAB file by Dataverse)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Resulting transfer METS file&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The fileSec in the METS file consists of three file groups, USE=&amp;quot;original&amp;quot; (the PDF and SAV files); USE=&amp;quot;derivative&amp;quot; (the TAB and R files); and USE=&amp;quot;metadata&amp;quot; (the JSON file and the three metadata files from the zipped bundle).&lt;br /&gt;
*All of the files unpacked from the Dataverse bundle have a GROUPID attribute to indicate the relationship between them. If the transfer had consisted of more than one bundle, each set of unpacked files would have its own GROUPID.&lt;br /&gt;
*Three dmdSecs have been generated:&lt;br /&gt;
**dmdSec_1, consisting of a small number of study-level DDI terms&lt;br /&gt;
**dmdSec_2, consisting of an mdRef to the JSON file&lt;br /&gt;
**dmdSec_3, consisting of an mdRef to the DDI XML file&lt;br /&gt;
*In the structMap, dmdSec_1 and dmdSec_2 are linked to the study as a whole, while dmdSec_3 is linked to the TAB file. The endnote and ris files have not been made into dmdSecs because they contain small subsets of metadata which are already captured in dmdSec_1 and the DDI xml file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:METS1G.png|900px|thumb|center]]&lt;br /&gt;
[[File:METS2G.png|900px|thumb|center]]&lt;br /&gt;
[[File:METS3G.png|900px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Metadata sources for METS file&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width:15%&amp;quot;|'''METS element'''&lt;br /&gt;
!style=&amp;quot;width:25%&amp;quot;|'''Information source'''&lt;br /&gt;
!style=&amp;quot;width:40%&amp;quot;|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|ddi:titl&lt;br /&gt;
|json: citation/typeName: &amp;quot;title&amp;quot;, value: [value]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:IDNo&lt;br /&gt;
|json: authority, identifier&lt;br /&gt;
|json example: &amp;quot;authority&amp;quot;: &amp;quot;10.5072/FK2/&amp;quot;, &amp;quot;identifier&amp;quot;: &amp;quot;0MOPJM&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|ddi:IDNo agency attribute&lt;br /&gt;
|json: protocol&lt;br /&gt;
|json example: &amp;quot;protocol&amp;quot;: &amp;quot;doi&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|ddi:AuthEntity&lt;br /&gt;
|json: citation/typeName: &amp;quot;authorName&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:distrbtr&lt;br /&gt;
|Config setting in ingest tool&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:version date attribute&lt;br /&gt;
|json: &amp;quot;releaseTime&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:version type attribute&lt;br /&gt;
|json: &amp;quot;versionState&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:version&lt;br /&gt;
|json: &amp;quot;versionNumber&amp;quot;, &amp;quot;versionMinorNumber&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:restrctn&lt;br /&gt;
|json: &amp;quot;termsOfUse&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|fileGrp USE=&amp;quot;original&amp;quot;&lt;br /&gt;
|json: datafile&lt;br /&gt;
|Each non-tabular data file is listed as a datafile in the files section. Each TAB file derived by Dataverse for uploaded tabular file formats is also listed as a datafile, with the original file uploaded by the researcher indicated by &amp;quot;originalFileFormat&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|fileGrp USE=&amp;quot;derivative&amp;quot;&lt;br /&gt;
|All files that are included in a bundle, except for the original file and the metadata files (see below).&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|fileGrp USE=&amp;quot;metadata&amp;quot;&lt;br /&gt;
|Any files with .json or .ris extension, any -ddi.xml files and -endnote.xml files&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CHECKSUM&lt;br /&gt;
|json: datafile/&amp;quot;md5&amp;quot;: [value]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CHECKSUMTYPE&lt;br /&gt;
|json: datafile/&amp;quot;md5&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GROUPID&lt;br /&gt;
|Generated by ingest tool. Each file unpacked from a bundle is given the same group id.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AIP METS file ==&lt;br /&gt;
&lt;br /&gt;
=== Basic METS file structure ===&lt;br /&gt;
&lt;br /&gt;
The Archival Information Package (AIP) METS file will follow the basic structure for a standard Archivematica AIP METS file described at [[METS]]. A new fileGrp USE=&amp;quot;derivative&amp;quot; will be added to indicate TAB, RData and other derivatives generated by Dataverse for uploaded tabular data format files.&lt;br /&gt;
&lt;br /&gt;
=== dmdSecs in AIP METS file ===&lt;br /&gt;
&lt;br /&gt;
The dmdSecs in the transfer METS file will be copied over to the AIP METS file.&lt;br /&gt;
&lt;br /&gt;
=== Additions to PREMIS for derivative files ===&lt;br /&gt;
&lt;br /&gt;
In the PREMIS Object entity, relationships between original and derivative tabular format files from Dataverse will be described using PREMIS relationship semantic units. A PREMIS derivation event will be added to indicate the derivative file was generated from the original file, and a Dataverse Agent will be added to indicate the Event were carried out by Dataverse prior to ingest, rather than by Archivematica. &lt;br /&gt;
&lt;br /&gt;
'''Note''' We originally considered adding a creation event for the derivative files as well, but decided that it's not necessary as the event can be inferred from the derivation event and the PREMIS object relationships.&lt;br /&gt;
&lt;br /&gt;
'''Note''' &amp;quot;Derivation&amp;quot; is not an event type on the Library of Congress controlled vocabulary list at http://id.loc.gov/vocabulary/preservation/eventType.html. However, we have submitted it as a proposed new term (November 2015) at http://premisimplementers.pbworks.com/w/page/102413902/Preservation%20Events%20Controlled%20Vocabulary - a list of new terms that is being considered by the PREMIS Editorial Committee.&lt;br /&gt;
&lt;br /&gt;
'''Update''' ''April 2018'': The most recently available Event Type Controlled List (June 2017) does not yet have derivation as a controlled type, https://www.loc.gov/standards/premis/v3/preservation-events.pdf&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Original SPSS SAV file&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
&amp;lt;premis:relationship&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relationshipType&amp;gt;derivation&amp;lt;/premis:relationshipType&amp;gt;&lt;br /&gt;
    &amp;lt;premis:relationshipSubType&amp;gt;is source of&amp;lt;/premis:relationshipSubType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relatedObjectIdentification&amp;gt;                  &lt;br /&gt;
    &amp;lt;premis:relatedObjectIdentifierType&amp;gt;UUID&amp;lt;/premis:relatedObjectIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relatedObjectIdentifierValue&amp;gt;[TAB file UUID]&amp;lt;/premis:relatedObjectIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;premis:relationship&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;premis:eventIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventIdentifierType&amp;gt;UUID&amp;lt;/premis:eventIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventIdentifierValue&amp;gt;[Event UUID assigned by Archivematica]&amp;lt;/premis:eventIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:eventIdentifier&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventType&amp;gt;derivation&amp;lt;/premis:eventType&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventDateTime&amp;gt;2015-08-21&amp;lt;/premis:eventDateTime&amp;gt;&lt;br /&gt;
&amp;lt;premis:linkingAgentIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:linkingAgentIdentifierType&amp;gt;URI&amp;lt;/premis:linkingAgentIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:linkingAgentIdentifierValue&amp;gt;http://dataverse.scholarsportal.info/dvn/&lt;br /&gt;
&amp;lt;/premis:linkingAgentIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:linkingAgentIdentifier&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;premis:agentIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:agentIdentifierType&amp;gt;URI&amp;lt;/premis:agentIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:agentIdentifierValue&amp;gt;http://dataverse.scholarsportal.info/dvn/&amp;lt;/premis:agentIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:agentIdentifier&amp;gt;&lt;br /&gt;
&amp;lt;premis:agentName&amp;gt;SP Dataverse Network&amp;lt;/premis:agentName&amp;gt;&lt;br /&gt;
&amp;lt;premis:agentType&amp;gt;organization&amp;lt;/premis:agentType&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Derivative TAB file&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
&amp;lt;premis:relationship&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relationshipType&amp;gt;derivation&amp;lt;/premis:relationshipType&amp;gt;&lt;br /&gt;
    &amp;lt;premis:relationshipSubType&amp;gt;has source&amp;lt;/premis:relationshipSubType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relatedObjectIdentification&amp;gt;                  &lt;br /&gt;
    &amp;lt;premis:relatedObjectIdentifierType&amp;gt;UUID&amp;lt;/premis:relatedObjectIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relatedObjectIdentifierValue&amp;gt;[SPSS SAV file UUID]&amp;lt;/premis:relatedObjectIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;premis:relationship&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fixity check for checksums received from Dataverse ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventIdentifierType&amp;gt;UUID&amp;lt;/premis:eventIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventIdentifierValue&amp;gt;[Event UUID assigned by Archivematica]&amp;lt;/premis:eventIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:eventIdentifier&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventType&amp;gt;fixity check&amp;lt;/premis:eventType&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventDateTime&amp;gt;2015-08-21&amp;lt;/premis:eventDateTime&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventDetail&amp;gt;program=&amp;quot;python&amp;quot;; module=&amp;quot;hashlib.sha256()&amp;quot;&amp;lt;/premis:eventDetail&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventOutcomeInformation&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventOutcome&amp;gt;Pass&amp;lt;/premis:EventOutcome&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventOutcomeDetail&amp;gt;&lt;br /&gt;
    &amp;lt;premis:eventOutcomeDetailNote&amp;gt;Dataverse checksum 91b65277959ec273763d28ef002e83a6b3fba57c7a3[...] &lt;br /&gt;
verified&amp;lt;/premis:eventOutcomeDetailNote&amp;gt;&lt;br /&gt;
  &amp;lt;/premis:eventOutcomeDetail&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventOutcomeInformation&amp;gt;&lt;br /&gt;
&amp;lt;/premis:linkingAgentIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:linkingAgentIdentifierType&amp;gt;preservation system&amp;lt;/premis:linkingAgentIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:linkingAgentIdentifierValue&amp;gt;Archivematica 1.4.1&amp;lt;/premis:linkingAgentIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:linkingAgentIdentifier&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== AIP structure ==&lt;br /&gt;
&lt;br /&gt;
An Archival Information Package derived from a Dataverse ingest will have the same basic structure as a generic Archivematica AIP, described at [[AIP_structure]]. There are additional metadata files that are included in a Dataverse-derived AIP, and each zipped bundle that is included in the ingest will result in a separate directory in the AIP. The following is a sample structure.&lt;br /&gt;
&lt;br /&gt;
'''Bag structure'''&lt;br /&gt;
&lt;br /&gt;
The Archival Information Package (AIP) is packaged in the Library of Congress BagIt format, and may be stored compressed or uncompressed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Pacific_weather_patterns_study-dfb0b75d-6555-4e99-a8d8-95bed0f6303f.7z&lt;br /&gt;
├── bag-info.txt&lt;br /&gt;
├── bagit.txt &lt;br /&gt;
├── manifest-sha512.txt│   &lt;br /&gt;
├── tagmanifest-md5.txt&lt;br /&gt;
└── data [standard bag directory containing contents of the AIP]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''AIP structure'''&lt;br /&gt;
&lt;br /&gt;
All of the contents of the AIP reside within the data directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
├── data&lt;br /&gt;
│   ├── logs [log files generated during processing]&lt;br /&gt;
│   │   ├── fileFormatIdentification.log&lt;br /&gt;
│   │   └── transfers&lt;br /&gt;
│   │       └── Pacific_weather_patterns_study-1a0f309a-d3ec-43ee-bb48-a868cd5ca85c&lt;br /&gt;
│   │           └── logs&lt;br /&gt;
│   │               ├── extractContents.log&lt;br /&gt;
│   │               ├── fileFormatIdentification.log&lt;br /&gt;
│   │               └── filenameCleanup.log&lt;br /&gt;
│   ├── METS.dfb0b75d-6555-4e99-a8d8-95bed0f6303f.xml [the AIP METS file]&lt;br /&gt;
│   ├── objects [a directory containing the digital objects being preserved, plus their metadata]&lt;br /&gt;
│       ├── chelan_052.jpg [an original file from Dataverse]&lt;br /&gt;
│       ├── Weather_data.sav [an original file from Dataverse]&lt;br /&gt;
│       ├── Weather_data [a bundle retrieved from Dataverse]&lt;br /&gt;
│       │   ├── Weather_data.xml&lt;br /&gt;
│       │   ├── Weather_data.ris&lt;br /&gt;
│       │   ├── Weather_data-ddi.xml&lt;br /&gt;
│       │   └── Weather_data.tab [a TAB derivative file generated by Dataverse]&lt;br /&gt;
│       ├── metadata&lt;br /&gt;
│       │   └── transfers&lt;br /&gt;
│       │       └── Pacific_weather_patterns_study-1a0f309a-d3ec-43ee-bb48-a868cd5ca85c&lt;br /&gt;
│       │           ├── agents.json [information about the source of the data, used to populate the &lt;br /&gt;
PREMIS Dataverse agent in the AIP METS file]&lt;br /&gt;
│       │           ├── dataset.json [the full json file retrieved from Dataverse]&lt;br /&gt;
│       │           └── METS.xml [the METS file generated by the ingest script to prepare &lt;br /&gt;
Dataverse contents for ingest into Archivematica]&lt;br /&gt;
│       └── submissionDocumentation&lt;br /&gt;
│           └── transfer-58-1a0f309a-d3ec-43ee-bb48-a868cd5ca85c&lt;br /&gt;
│               └── METS.xml [a standard transfer METS file generated to list all contents of &lt;br /&gt;
an Archivematica transfer]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''AIP METS file structure'''&lt;br /&gt;
&lt;br /&gt;
The AIP METS file records information a bout the contents of the AIP, and indicates the relationships between the various files in the AIP. A sample AIP METS file would be structured as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
METS header&lt;br /&gt;
-Date METS file was created&lt;br /&gt;
METS dmdSec [descriptive metadata section]&lt;br /&gt;
-DDI XML metadata taken from the METS transfer file, as follows&lt;br /&gt;
--ddi:title&lt;br /&gt;
--ddi:IDno&lt;br /&gt;
--ddi:authEnty&lt;br /&gt;
--ddi:distrbtr&lt;br /&gt;
--ddi:version&lt;br /&gt;
--ddi:restrctn&lt;br /&gt;
METS dmdSec [descriptive metadata section]&lt;br /&gt;
-link to dataset.json&lt;br /&gt;
METS dmdSec [descriptive metadata section]&lt;br /&gt;
-link to DDI.XML file created for derivative file as part of bundle&lt;br /&gt;
METS amdSec [administrative metadata section, one for each original, derivative and normalized file in the AIP]&lt;br /&gt;
-techMD [technical metadata]&lt;br /&gt;
--PREMIS technical metadata about a digital object, including file format information and extracted metadata&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: derivation (for derived formats)&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event:ingestion&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: unpacking (for bundled files)&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: message digest calculation&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: virus check&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: format identification&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: fixity check (if file comes from Dataverse with a checksum)&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: normalization (if file is normalized to a preservation format during Archivematica processing)&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: creation (if file is a normalized preservation master generated during Archivematica processing)&lt;br /&gt;
-digiprovMD&lt;br /&gt;
--PREMIS agent: organization&lt;br /&gt;
-digiprovMD&lt;br /&gt;
--PREMIS agent: software&lt;br /&gt;
-digiprovMD&lt;br /&gt;
--PREMIS agent: Archivematica user&lt;br /&gt;
METS fileSec [file section]&lt;br /&gt;
-fileGrp USE=&amp;quot;original&amp;quot; [file group]&lt;br /&gt;
--original files uploaded to Dataverse&lt;br /&gt;
-fileGrp USE=&amp;quot;derivative&amp;quot;&lt;br /&gt;
--derivative tabular files generated by Dataverse&lt;br /&gt;
-fileGrp USE=&amp;quot;submissionDocumentation&amp;quot;&lt;br /&gt;
--METS.XML (standard Archivematica transfer METS file listing contents of transfer)&lt;br /&gt;
-fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
--normalized preservation masters generated during Archivematica processing&lt;br /&gt;
-fileGrp USE=&amp;quot;metadata&amp;quot;&lt;br /&gt;
--dataset.json&lt;br /&gt;
--DDI.XML&lt;br /&gt;
--xcitation-endnote.xml&lt;br /&gt;
--xcitation-ris.ris&lt;br /&gt;
METS structMap [structural map]&lt;br /&gt;
-directory structure of the contents of the AIP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Future Requirements &amp;amp; Considerations ==&lt;br /&gt;
This section includes working notes for future phases, as interesting opportunities or questions arise. At the end of the current phase we will be documenting the integration as well as future opportunities. &lt;br /&gt;
&lt;br /&gt;
=== Notes from Feature File review meeting on May 1 2018 (2pm EST) ===&lt;br /&gt;
&lt;br /&gt;
'''Choice &amp;amp; Versioning of Dataverse API:''' &lt;br /&gt;
The dataverse Search and Access APIs are not currently versioned. &lt;br /&gt;
The Native API is versioned: http://guides.dataverse.org/en/latest/api/native-api.html&lt;br /&gt;
There is an OAI-PMH interface (although it is not mentioned in the dataverse API guide). Amber said there were idiosyncrasies in the way dataverse implemented PMH, and wasn’t sure it would be a ‘safe’ option. &lt;br /&gt;
Amaz would like to see that we are either using a standard API (like OAI-PMH) or a versioned API. &lt;br /&gt;
Amaz thought wondered whether we could use PMH with the polling part of the solution; but given what Amber said, it doesn’t seem like a good way to go)&lt;br /&gt;
So as part of the project we need to see whether we could use the Native API (even if we don’t actually use it), or we need to raise it as an issue to discuss with the dataverse team.   &lt;br /&gt;
&lt;br /&gt;
'''Relationships between Datasets'''&lt;br /&gt;
Amber pointed out that they are not currently clear exactly what datasets should be preserved, and expects this will vary quite a bit by institution. &lt;br /&gt;
We discussed the question of whether all datasets in a dataverse would be preserved (not currently known), which brought up the question of how to relate datasets. &lt;br /&gt;
We talked about AICs as one possible solution. But agreed that it’s a new feature and needs to be thought through… there could be other solutions than AIC. &lt;br /&gt;
&lt;br /&gt;
'''Improving agent info in event history in METS'''&lt;br /&gt;
We pointed out that having an agent other than Archivematica in the METS is a new feature&lt;br /&gt;
Discussed the fact that we could make this even more specific by adding more agents. For instance, differentiating between the researcher who uploaded files from the research data manager who published the dataset. &lt;br /&gt;
&lt;br /&gt;
'''Notes from Dataverse Testing:''' &lt;br /&gt;
&lt;br /&gt;
Should a preserved dataset include an equivalent of fixity check on any UNFs created by Dataverse? &lt;br /&gt;
https://dataverse.scholarsportal.info/guides/en/4.8.6/developers/unf/index.html#unf&lt;br /&gt;
Universal Numerical Fingerprint (UNF) is a unique signature of the semantic content of a digital object. It is not simply a checksum of a binary data file. Instead, the UNF algorithm approximates and normalizes the data stored within. A cryptographic hash of that normalized (or canonicalized) representation is then computed.&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Dataverse&amp;diff=12591</id>
		<title>Dataverse</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Dataverse&amp;diff=12591"/>
		<updated>2018-08-05T22:47:32Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Adding contextual information about the contents of a Bundle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Documentation]] &amp;gt; [[Requirements]] &amp;gt; Dataverse&lt;br /&gt;
&lt;br /&gt;
This page sets out the requirements and designs for integration with [http://dataverse.org Dataverse]. &lt;br /&gt;
&lt;br /&gt;
This page was originally created as part of an early Proof of Concept integration in 2017, which was only made available in a development branch of Archivematica. We have now started a phase 2 project to improve on that original integration work and merge it into a public release of Archivematica (exact release tbc).  This work is being sponsored by [https://scholarsportal.info/ Scholars Portal], a service of the Ontario Council of University Libraries (OCUL). &lt;br /&gt;
&lt;br /&gt;
[[Category:Feature requirements]]&lt;br /&gt;
&lt;br /&gt;
===See also===&lt;br /&gt;
&lt;br /&gt;
* [[Sword API]]&lt;br /&gt;
* [[Dataset preservation]]&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This wiki captures requirements for ingesting studies (datasets) from Dataverse into Archivematica for long-term preservation.&lt;br /&gt;
&lt;br /&gt;
==Current Status==&lt;br /&gt;
&lt;br /&gt;
'''May 11, 2018'''&lt;br /&gt;
To see the current status of work, and any outstanding issue, please see the Waffle Board or Board's linked to [https://waffle.io/artefactual/archivematica?label=OCUL:%20AM-Dataverse below]:&lt;br /&gt;
&lt;br /&gt;
* [https://waffle.io/artefactual/archivematica?label=OCUL:%20AM-Dataverse Waffle board for the Dataverse Feature]&lt;br /&gt;
&lt;br /&gt;
==Feature Files==&lt;br /&gt;
On this project we are using [http://docs.behat.org/en/v2.5/guides/1.gherkin.html Gherkin] feature files to define the desired behaviour of preserving a dataset from a Dataverse.  Feature files are also known as Acceptance Tests, because they specify the behaviour that we will test at the end of the project. &lt;br /&gt;
&lt;br /&gt;
The early drafts are documented in this google doc: [http://docs.behat.org/en/v2.5/guides/1.gherkin.html]&lt;br /&gt;
Once the draft has been reviewed we will publish it to our acceptance test repository in github. &lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
April 24, 2017&lt;br /&gt;
This feature requires a development branch of Archivematica, which can be installed with the following steps:&lt;br /&gt;
&lt;br /&gt;
1) install deploy-pub. https://github.com/artefactual/deploy-pub&lt;br /&gt;
2) use the archivematica-centos7 playbook in deploy-pub https://github.com/artefactual/deploy-pub/tree/master/playbooks/archivematica-centos7&lt;br /&gt;
3) create a hosts file that lists your target machine (see digital ocean example linked from playbook)&lt;br /&gt;
4) in requirements.yml change version of ansible-archivematica-src to &amp;quot;stable/1.6.x&amp;quot;&lt;br /&gt;
5) change singlenode.yml to point to the host you defined in your hosts file.&lt;br /&gt;
6) change the vars-singlenode.yml to include the following info:&lt;br /&gt;
#required for dataverse testing&lt;br /&gt;
archivematica_src_am_version: &amp;quot;dev/dataverse-poc&amp;quot;&lt;br /&gt;
archivematica_src_automationtools: &amp;quot;yes&amp;quot;&lt;br /&gt;
archivematica_src_automationtools_version: &amp;quot;dev/dataverse&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Workflow==&lt;br /&gt;
This section is from the first phase project in 2017 and needs to be updated. &lt;br /&gt;
&lt;br /&gt;
*The proposed workflow consists of issuing API calls to Dataverse, receiving content (data files and metadata) for ingest into Archivematica, preparing Archivematica Archival Information Packages (AIPs) and placing them in archival storage, &amp;lt;strike&amp;gt; and updating the Dataverse study with the AIP UUIDs &amp;lt;/strike&amp;gt; (this was determined to be out of scope). &lt;br /&gt;
*Analysis is based on Dataverse tests using [https://apitest.dataverse.org https://apitest.dataverse.org] and [https://demo.dataverse.org https://demo.dataverse.org], online documentation at http://guides.dataverse.org/en/latest/api/index.html and discussions with Dataverse developers and users. &lt;br /&gt;
*Proposed integration is for Archivematica 1.5 and higher and Dataverse 4.x.&lt;br /&gt;
&lt;br /&gt;
===Workflow diagram===&lt;br /&gt;
This section is from the first phase project in 2017 and needs to be updated. &lt;br /&gt;
&lt;br /&gt;
[[File:Dataverse - Archivematica workflow_1.png|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
===Workflow diagram notes===&lt;br /&gt;
&lt;br /&gt;
[1] &amp;quot;Ingest script&amp;quot; refers to an [https://github.com/artefactual/automation-tools automation tool] designed to automate ingest into Archivematica for bulk processing. An existing automation tool would be modified to accomplish the tasks described in the workflow.&lt;br /&gt;
&lt;br /&gt;
[2] A new or updated study is one that has been published, either for the first time or as a new version, since the last API call.&lt;br /&gt;
&lt;br /&gt;
[3] The json file contains citation and other study-level metadata, an entity_id field that is used to identify the study in Dataverse, version information, a list of data files with their own entity_id values, and md5 checksums for each data file.&lt;br /&gt;
&lt;br /&gt;
[4] If json file has content_type of tab separated values, Archivematica issues API call for multiple file (&amp;quot;bundled&amp;quot;) content download. This returns a zipped package for tsv files containing the .tab file, the original uploaded file, several other derivative formats, a DDI XML file and file citations in Endnote and RIS formats.&lt;br /&gt;
&lt;br /&gt;
A [http://guides.dataverse.org/en/latest/user/dataset-management.html?highlight=bundle bundle] is a zipped object, documented by Dataverse as containing all of the below files: &lt;br /&gt;
&lt;br /&gt;
* As tab-delimited data (with the variable names in the first row);&lt;br /&gt;
* The original file uploaded by the user;&lt;br /&gt;
* Saved as R data (if the original file was not in R format);&lt;br /&gt;
* Variable Metadata (as a DDI Codebook XML file);&lt;br /&gt;
* Data File Citation (currently in either RIS or EndNote XML format);&lt;br /&gt;
&lt;br /&gt;
[5] The METS file will consist of a dmdSec containing the DC elements extracted from the json file, and a fileSec and structMap indicating the relationships between the files in the transfer (eg. original uploaded data file, derivative files generated for tabular data, metadata/citation files). This will allow Archivematica to apply appropriate preservation micro-services to different filetypes and provide an accurate representation of the study in the AIP METS file (step 1.9).&lt;br /&gt;
&lt;br /&gt;
[6] Archivematica ingests all content returned from Dataverse, including the json file, plus the METS file generated in step 1.6.&lt;br /&gt;
&lt;br /&gt;
[7] Standard and pre-configured micro-services include: assign UUID, verify checksums, generate checksums, extract packages, scan for viruses, clean up filenames, identify formats, validate formats, extract metadata and normalize for preservation.&lt;br /&gt;
&lt;br /&gt;
== Transfer METS file ==&lt;br /&gt;
&lt;br /&gt;
When the ingest script retrieves content from Dataverse, it generates a METS file to allow Archivematica to understand the contents of the transfer and the relationships between its various data and metadata files.&lt;br /&gt;
&lt;br /&gt;
=== Sample transfer METS file ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Original Dataverse study retrieved through API call:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*dataset.json (a JSON file generated by Dataverse consisting of study-level metadata and information about data files)&lt;br /&gt;
*Study_info.pdf (a non-tabular data file)&lt;br /&gt;
*A zipped bundle consisting of the following:&lt;br /&gt;
**YVR_weather_data.sav (an SPSS SAV file uploaded by the researcher)&lt;br /&gt;
**YVR_weather_data.tab (a TAB file generated from the SPSS SAV file by Dataverse)&lt;br /&gt;
**YVR weather_data.RData (an R file generated from the SPSS SAV file by Dataverse)&lt;br /&gt;
**YVR_weather_data-ddi.xml, YVR_weather_datacitation-endnote.xml, and YVR_weather_datacitation-ris.ris (three metadata files generated for the TAB file by Dataverse)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Resulting transfer METS file&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The fileSec in the METS file consists of three file groups, USE=&amp;quot;original&amp;quot; (the PDF and SAV files); USE=&amp;quot;derivative&amp;quot; (the TAB and R files); and USE=&amp;quot;metadata&amp;quot; (the JSON file and the three metadata files from the zipped bundle).&lt;br /&gt;
*All of the files unpacked from the Dataverse bundle have a GROUPID attribute to indicate the relationship between them. If the transfer had consisted of more than one bundle, each set of unpacked files would have its own GROUPID.&lt;br /&gt;
*Three dmdSecs have been generated:&lt;br /&gt;
**dmdSec_1, consisting of a small number of study-level DDI terms&lt;br /&gt;
**dmdSec_2, consisting of an mdRef to the JSON file&lt;br /&gt;
**dmdSec_3, consisting of an mdRef to the DDI XML file&lt;br /&gt;
*In the structMap, dmdSec_1 and dmdSec_2 are linked to the study as a whole, while dmdSec_3 is linked to the TAB file. The endnote and ris files have not been made into dmdSecs because they contain small subsets of metadata which are already captured in dmdSec_1 and the DDI xml file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:METS1G.png|900px|thumb|center]]&lt;br /&gt;
[[File:METS2G.png|900px|thumb|center]]&lt;br /&gt;
[[File:METS3G.png|900px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Metadata sources for METS file&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width:15%&amp;quot;|'''METS element'''&lt;br /&gt;
!style=&amp;quot;width:25%&amp;quot;|'''Information source'''&lt;br /&gt;
!style=&amp;quot;width:40%&amp;quot;|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|ddi:titl&lt;br /&gt;
|json: citation/typeName: &amp;quot;title&amp;quot;, value: [value]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:IDNo&lt;br /&gt;
|json: authority, identifier&lt;br /&gt;
|json example: &amp;quot;authority&amp;quot;: &amp;quot;10.5072/FK2/&amp;quot;, &amp;quot;identifier&amp;quot;: &amp;quot;0MOPJM&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|ddi:IDNo agency attribute&lt;br /&gt;
|json: protocol&lt;br /&gt;
|json example: &amp;quot;protocol&amp;quot;: &amp;quot;doi&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|ddi:AuthEntity&lt;br /&gt;
|json: citation/typeName: &amp;quot;authorName&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:distrbtr&lt;br /&gt;
|Config setting in ingest tool&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:version date attribute&lt;br /&gt;
|json: &amp;quot;releaseTime&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:version type attribute&lt;br /&gt;
|json: &amp;quot;versionState&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:version&lt;br /&gt;
|json: &amp;quot;versionNumber&amp;quot;, &amp;quot;versionMinorNumber&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:restrctn&lt;br /&gt;
|json: &amp;quot;termsOfUse&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|fileGrp USE=&amp;quot;original&amp;quot;&lt;br /&gt;
|json: datafile&lt;br /&gt;
|Each non-tabular data file is listed as a datafile in the files section. Each TAB file derived by Dataverse for uploaded tabular file formats is also listed as a datafile, with the original file uploaded by the researcher indicated by &amp;quot;originalFileFormat&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|fileGrp USE=&amp;quot;derivative&amp;quot;&lt;br /&gt;
|All files that are included in a bundle, except for the original file and the metadata files (see below).&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|fileGrp USE=&amp;quot;metadata&amp;quot;&lt;br /&gt;
|Any files with .json or .ris extension, any -ddi.xml files and -endnote.xml files&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CHECKSUM&lt;br /&gt;
|json: datafile/&amp;quot;md5&amp;quot;: [value]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CHECKSUMTYPE&lt;br /&gt;
|json: datafile/&amp;quot;md5&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GROUPID&lt;br /&gt;
|Generated by ingest tool. Each file unpacked from a bundle is given the same group id.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AIP METS file ==&lt;br /&gt;
&lt;br /&gt;
=== Basic METS file structure ===&lt;br /&gt;
&lt;br /&gt;
The Archival Information Package (AIP) METS file will follow the basic structure for a standard Archivematica AIP METS file described at [[METS]]. A new fileGrp USE=&amp;quot;derivative&amp;quot; will be added to indicate TAB, RData and other derivatives generated by Dataverse for uploaded tabular data format files.&lt;br /&gt;
&lt;br /&gt;
=== dmdSecs in AIP METS file ===&lt;br /&gt;
&lt;br /&gt;
The dmdSecs in the transfer METS file will be copied over to the AIP METS file.&lt;br /&gt;
&lt;br /&gt;
=== Additions to PREMIS for derivative files ===&lt;br /&gt;
&lt;br /&gt;
In the PREMIS Object entity, relationships between original and derivative tabular format files from Dataverse will be described using PREMIS relationship semantic units. A PREMIS derivation event will be added to indicate the derivative file was generated from the original file, and a Dataverse Agent will be added to indicate the Event were carried out by Dataverse prior to ingest, rather than by Archivematica. &lt;br /&gt;
&lt;br /&gt;
'''Note''' We originally considered adding a creation event for the derivative files as well, but decided that it's not necessary as the event can be inferred from the derivation event and the PREMIS object relationships.&lt;br /&gt;
&lt;br /&gt;
'''Note''' &amp;quot;Derivation&amp;quot; is not an event type on the Library of Congress controlled vocabulary list at http://id.loc.gov/vocabulary/preservation/eventType.html. However, we have submitted it as a proposed new term (November 2015) at http://premisimplementers.pbworks.com/w/page/102413902/Preservation%20Events%20Controlled%20Vocabulary - a list of new terms that is being considered by the PREMIS Editorial Committee.&lt;br /&gt;
&lt;br /&gt;
'''Update''' ''April 2018'': The most recently available Event Type Controlled List (June 2017) does not yet have derivation as a controlled type, https://www.loc.gov/standards/premis/v3/preservation-events.pdf&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Original SPSS SAV file&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
&amp;lt;premis:relationship&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relationshipType&amp;gt;derivation&amp;lt;/premis:relationshipType&amp;gt;&lt;br /&gt;
    &amp;lt;premis:relationshipSubType&amp;gt;is source of&amp;lt;/premis:relationshipSubType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relatedObjectIdentification&amp;gt;                  &lt;br /&gt;
    &amp;lt;premis:relatedObjectIdentifierType&amp;gt;UUID&amp;lt;/premis:relatedObjectIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relatedObjectIdentifierValue&amp;gt;[TAB file UUID]&amp;lt;/premis:relatedObjectIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;premis:relationship&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;premis:eventIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventIdentifierType&amp;gt;UUID&amp;lt;/premis:eventIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventIdentifierValue&amp;gt;[Event UUID assigned by Archivematica]&amp;lt;/premis:eventIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:eventIdentifier&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventType&amp;gt;derivation&amp;lt;/premis:eventType&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventDateTime&amp;gt;2015-08-21&amp;lt;/premis:eventDateTime&amp;gt;&lt;br /&gt;
&amp;lt;premis:linkingAgentIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:linkingAgentIdentifierType&amp;gt;URI&amp;lt;/premis:linkingAgentIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:linkingAgentIdentifierValue&amp;gt;http://dataverse.scholarsportal.info/dvn/&lt;br /&gt;
&amp;lt;/premis:linkingAgentIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:linkingAgentIdentifier&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;premis:agentIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:agentIdentifierType&amp;gt;URI&amp;lt;/premis:agentIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:agentIdentifierValue&amp;gt;http://dataverse.scholarsportal.info/dvn/&amp;lt;/premis:agentIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:agentIdentifier&amp;gt;&lt;br /&gt;
&amp;lt;premis:agentName&amp;gt;SP Dataverse Network&amp;lt;/premis:agentName&amp;gt;&lt;br /&gt;
&amp;lt;premis:agentType&amp;gt;organization&amp;lt;/premis:agentType&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Derivative TAB file&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
&amp;lt;premis:relationship&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relationshipType&amp;gt;derivation&amp;lt;/premis:relationshipType&amp;gt;&lt;br /&gt;
    &amp;lt;premis:relationshipSubType&amp;gt;has source&amp;lt;/premis:relationshipSubType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relatedObjectIdentification&amp;gt;                  &lt;br /&gt;
    &amp;lt;premis:relatedObjectIdentifierType&amp;gt;UUID&amp;lt;/premis:relatedObjectIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relatedObjectIdentifierValue&amp;gt;[SPSS SAV file UUID]&amp;lt;/premis:relatedObjectIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;premis:relationship&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fixity check for checksums received from Dataverse ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventIdentifierType&amp;gt;UUID&amp;lt;/premis:eventIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventIdentifierValue&amp;gt;[Event UUID assigned by Archivematica]&amp;lt;/premis:eventIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:eventIdentifier&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventType&amp;gt;fixity check&amp;lt;/premis:eventType&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventDateTime&amp;gt;2015-08-21&amp;lt;/premis:eventDateTime&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventDetail&amp;gt;program=&amp;quot;python&amp;quot;; module=&amp;quot;hashlib.sha256()&amp;quot;&amp;lt;/premis:eventDetail&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventOutcomeInformation&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventOutcome&amp;gt;Pass&amp;lt;/premis:EventOutcome&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventOutcomeDetail&amp;gt;&lt;br /&gt;
    &amp;lt;premis:eventOutcomeDetailNote&amp;gt;Dataverse checksum 91b65277959ec273763d28ef002e83a6b3fba57c7a3[...] &lt;br /&gt;
verified&amp;lt;/premis:eventOutcomeDetailNote&amp;gt;&lt;br /&gt;
  &amp;lt;/premis:eventOutcomeDetail&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventOutcomeInformation&amp;gt;&lt;br /&gt;
&amp;lt;/premis:linkingAgentIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:linkingAgentIdentifierType&amp;gt;preservation system&amp;lt;/premis:linkingAgentIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:linkingAgentIdentifierValue&amp;gt;Archivematica 1.4.1&amp;lt;/premis:linkingAgentIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:linkingAgentIdentifier&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== AIP structure ==&lt;br /&gt;
&lt;br /&gt;
An Archival Information Package derived from a Dataverse ingest will have the same basic structure as a generic Archivematica AIP, described at [[AIP_structure]]. There are additional metadata files that are included in a Dataverse-derived AIP, and each zipped bundle that is included in the ingest will result in a separate directory in the AIP. The following is a sample structure.&lt;br /&gt;
&lt;br /&gt;
'''Bag structure'''&lt;br /&gt;
&lt;br /&gt;
The Archival Information Package (AIP) is packaged in the Library of Congress BagIt format, and may be stored compressed or uncompressed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Pacific_weather_patterns_study-dfb0b75d-6555-4e99-a8d8-95bed0f6303f.7z&lt;br /&gt;
├── bag-info.txt&lt;br /&gt;
├── bagit.txt &lt;br /&gt;
├── manifest-sha512.txt│   &lt;br /&gt;
├── tagmanifest-md5.txt&lt;br /&gt;
└── data [standard bag directory containing contents of the AIP]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''AIP structure'''&lt;br /&gt;
&lt;br /&gt;
All of the contents of the AIP reside within the data directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
├── data&lt;br /&gt;
│   ├── logs [log files generated during processing]&lt;br /&gt;
│   │   ├── fileFormatIdentification.log&lt;br /&gt;
│   │   └── transfers&lt;br /&gt;
│   │       └── Pacific_weather_patterns_study-1a0f309a-d3ec-43ee-bb48-a868cd5ca85c&lt;br /&gt;
│   │           └── logs&lt;br /&gt;
│   │               ├── extractContents.log&lt;br /&gt;
│   │               ├── fileFormatIdentification.log&lt;br /&gt;
│   │               └── filenameCleanup.log&lt;br /&gt;
│   ├── METS.dfb0b75d-6555-4e99-a8d8-95bed0f6303f.xml [the AIP METS file]&lt;br /&gt;
│   ├── objects [a directory containing the digital objects being preserved, plus their metadata]&lt;br /&gt;
│       ├── chelan_052.jpg [an original file from Dataverse]&lt;br /&gt;
│       ├── Weather_data.sav [an original file from Dataverse]&lt;br /&gt;
│       ├── Weather_data [a bundle retrieved from Dataverse]&lt;br /&gt;
│       │   ├── Weather_data.xml&lt;br /&gt;
│       │   ├── Weather_data.ris&lt;br /&gt;
│       │   ├── Weather_data-ddi.xml&lt;br /&gt;
│       │   └── Weather_data.tab [a TAB derivative file generated by Dataverse]&lt;br /&gt;
│       ├── metadata&lt;br /&gt;
│       │   └── transfers&lt;br /&gt;
│       │       └── Pacific_weather_patterns_study-1a0f309a-d3ec-43ee-bb48-a868cd5ca85c&lt;br /&gt;
│       │           ├── agents.json [information about the source of the data, used to populate the &lt;br /&gt;
PREMIS Dataverse agent in the AIP METS file]&lt;br /&gt;
│       │           ├── dataset.json [the full json file retrieved from Dataverse]&lt;br /&gt;
│       │           └── METS.xml [the METS file generated by the ingest script to prepare &lt;br /&gt;
Dataverse contents for ingest into Archivematica]&lt;br /&gt;
│       └── submissionDocumentation&lt;br /&gt;
│           └── transfer-58-1a0f309a-d3ec-43ee-bb48-a868cd5ca85c&lt;br /&gt;
│               └── METS.xml [a standard transfer METS file generated to list all contents of &lt;br /&gt;
an Archivematica transfer]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''AIP METS file structure'''&lt;br /&gt;
&lt;br /&gt;
The AIP METS file records information a bout the contents of the AIP, and indicates the relationships between the various files in the AIP. A sample AIP METS file would be structured as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
METS header&lt;br /&gt;
-Date METS file was created&lt;br /&gt;
METS dmdSec [descriptive metadata section]&lt;br /&gt;
-DDI XML metadata taken from the METS transfer file, as follows&lt;br /&gt;
--ddi:title&lt;br /&gt;
--ddi:IDno&lt;br /&gt;
--ddi:authEnty&lt;br /&gt;
--ddi:distrbtr&lt;br /&gt;
--ddi:version&lt;br /&gt;
--ddi:restrctn&lt;br /&gt;
METS dmdSec [descriptive metadata section]&lt;br /&gt;
-link to dataset.json&lt;br /&gt;
METS dmdSec [descriptive metadata section]&lt;br /&gt;
-link to DDI.XML file created for derivative file as part of bundle&lt;br /&gt;
METS amdSec [administrative metadata section, one for each original, derivative and normalized file in the AIP]&lt;br /&gt;
-techMD [technical metadata]&lt;br /&gt;
--PREMIS technical metadata about a digital object, including file format information and extracted metadata&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: derivation (for derived formats)&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event:ingestion&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: unpacking (for bundled files)&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: message digest calculation&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: virus check&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: format identification&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: fixity check (if file comes from Dataverse with a checksum)&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: normalization (if file is normalized to a preservation format during Archivematica processing)&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: creation (if file is a normalized preservation master generated during Archivematica processing)&lt;br /&gt;
-digiprovMD&lt;br /&gt;
--PREMIS agent: organization&lt;br /&gt;
-digiprovMD&lt;br /&gt;
--PREMIS agent: software&lt;br /&gt;
-digiprovMD&lt;br /&gt;
--PREMIS agent: Archivematica user&lt;br /&gt;
METS fileSec [file section]&lt;br /&gt;
-fileGrp USE=&amp;quot;original&amp;quot; [file group]&lt;br /&gt;
--original files uploaded to Dataverse&lt;br /&gt;
-fileGrp USE=&amp;quot;derivative&amp;quot;&lt;br /&gt;
--derivative tabular files generated by Dataverse&lt;br /&gt;
-fileGrp USE=&amp;quot;submissionDocumentation&amp;quot;&lt;br /&gt;
--METS.XML (standard Archivematica transfer METS file listing contents of transfer)&lt;br /&gt;
-fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
--normalized preservation masters generated during Archivematica processing&lt;br /&gt;
-fileGrp USE=&amp;quot;metadata&amp;quot;&lt;br /&gt;
--dataset.json&lt;br /&gt;
--DDI.XML&lt;br /&gt;
--xcitation-endnote.xml&lt;br /&gt;
--xcitation-ris.ris&lt;br /&gt;
METS structMap [structural map]&lt;br /&gt;
-directory structure of the contents of the AIP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Future Requirements &amp;amp; Considerations ==&lt;br /&gt;
This section includes working notes for future phases, as interesting opportunities or questions arise. At the end of the current phase we will be documenting the integration as well as future opportunities. &lt;br /&gt;
&lt;br /&gt;
=== Notes from Feature File review meeting on May 1 2018 (2pm EST) ===&lt;br /&gt;
&lt;br /&gt;
'''Choice &amp;amp; Versioning of Dataverse API:''' &lt;br /&gt;
The dataverse Search and Access APIs are not currently versioned. &lt;br /&gt;
The Native API is versioned: http://guides.dataverse.org/en/latest/api/native-api.html&lt;br /&gt;
There is an OAI-PMH interface (although it is not mentioned in the dataverse API guide). Amber said there were idiosyncrasies in the way dataverse implemented PMH, and wasn’t sure it would be a ‘safe’ option. &lt;br /&gt;
Amaz would like to see that we are either using a standard API (like OAI-PMH) or a versioned API. &lt;br /&gt;
Amaz thought wondered whether we could use PMH with the polling part of the solution; but given what Amber said, it doesn’t seem like a good way to go)&lt;br /&gt;
So as part of the project we need to see whether we could use the Native API (even if we don’t actually use it), or we need to raise it as an issue to discuss with the dataverse team.   &lt;br /&gt;
&lt;br /&gt;
'''Relationships between Datasets'''&lt;br /&gt;
Amber pointed out that they are not currently clear exactly what datasets should be preserved, and expects this will vary quite a bit by institution. &lt;br /&gt;
We discussed the question of whether all datasets in a dataverse would be preserved (not currently known), which brought up the question of how to relate datasets. &lt;br /&gt;
We talked about AICs as one possible solution. But agreed that it’s a new feature and needs to be thought through… there could be other solutions than AIC. &lt;br /&gt;
&lt;br /&gt;
'''Improving agent info in event history in METS'''&lt;br /&gt;
We pointed out that having an agent other than Archivematica in the METS is a new feature&lt;br /&gt;
Discussed the fact that we could make this even more specific by adding more agents. For instance, differentiating between the researcher who uploaded files from the research data manager who published the dataset. &lt;br /&gt;
&lt;br /&gt;
'''Notes from Dataverse Testing:''' &lt;br /&gt;
&lt;br /&gt;
Should a preserved dataset include an equivalent of fixity check on any UNFs created by Dataverse? &lt;br /&gt;
https://dataverse.scholarsportal.info/guides/en/4.8.6/developers/unf/index.html#unf&lt;br /&gt;
Universal Numerical Fingerprint (UNF) is a unique signature of the semantic content of a digital object. It is not simply a checksum of a binary data file. Instead, the UNF algorithm approximates and normalizes the data stored within. A cryptographic hash of that normalized (or canonicalized) representation is then computed.&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Elasticsearch_Development&amp;diff=12544</id>
		<title>Elasticsearch Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Elasticsearch_Development&amp;diff=12544"/>
		<updated>2018-06-12T15:14:04Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Updated with current Elasticsearch API/Archivematica information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;From Archivematica 0.9, AIP package information, such as METS data, is indexed&lt;br /&gt;
using [http://www.elasticsearch.org/ Elasticsearch (ES)]. This data can be&lt;br /&gt;
searched from the Archival Storage area of the dashboard or can be interfaced&lt;br /&gt;
with programmatically. For Elasticsearch administration information, such as&lt;br /&gt;
how to delete an Elasticsearch index, please reference the&lt;br /&gt;
[[Administrator_manual_1.2#Elasticsearch|administrator manual]].&lt;br /&gt;
&lt;br /&gt;
'''NB.''' From Archivematica 1.7.0, users are given the option of whether to&lt;br /&gt;
index information using Elasticsearch, and so the information below might not&lt;br /&gt;
work. It will be dependant on how your Archivematica instance has been&lt;br /&gt;
configured.&lt;br /&gt;
&lt;br /&gt;
=Programmatic Access to indexed AIP data=&lt;br /&gt;
&lt;br /&gt;
To access indexed AIP data using a custom script or application, find an&lt;br /&gt;
Elasticsearch API (Application Programming Interface) library for the&lt;br /&gt;
programming language you are most comfortable with. In Archivematica we use&lt;br /&gt;
Python with the Elasticsearch supported&lt;br /&gt;
[https://github.com/elastic/elasticsearch-py library]. In our developer&lt;br /&gt;
documentation, we will demonstrate how to use this and Python to access AIP&lt;br /&gt;
data, but any programming language, such as PHP and&lt;br /&gt;
[https://github.com/ruflin/Elastica/ Elastica], should work.&lt;br /&gt;
&lt;br /&gt;
A list of [https://www.elastic.co/guide/en/elasticsearch/client/index.html officially]&lt;br /&gt;
supported and&lt;br /&gt;
[https://www.elastic.co/guide/en/elasticsearch/client/community/current/index.html community]&lt;br /&gt;
supported libraries can be found on the Elasticsearch website.&lt;br /&gt;
&lt;br /&gt;
==Connecting to Elasticsearch (Archivematica 1.3+)==&lt;br /&gt;
&lt;br /&gt;
The following example will demonstrate access to the indexes using&lt;br /&gt;
Elasticsearch's own&lt;br /&gt;
[https://github.com/elastic/elasticsearch-py Python library].&lt;br /&gt;
&lt;br /&gt;
===Importing the Elasticsearch API module===&lt;br /&gt;
&lt;br /&gt;
The first step is to import the Elasticsearch module and connect to the&lt;br /&gt;
Elasticsearch server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from __future__ import print_function&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
from elasticsearch import Elasticsearch&lt;br /&gt;
from elasticsearch.exceptions import RequestError, NotFoundError&lt;br /&gt;
&lt;br /&gt;
conn = Elasticsearch(['127.0.0.1:9200'])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NB.''' The additional module imports are used in this example so that the&lt;br /&gt;
examples below can be copied-and-pasted as desired.&lt;br /&gt;
&lt;br /&gt;
===Full text searching===&lt;br /&gt;
&lt;br /&gt;
Once connected to Elasticsearch, you can perform searches. Below is the code&lt;br /&gt;
needed to do a wildcard ('*') search for all indexed AIP files. We retrieve the&lt;br /&gt;
first 20 items. Instead of providing a wildcard you could also supply keywords,&lt;br /&gt;
such as a specific AIP UUID.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
start_page = 1&lt;br /&gt;
items_per_page = 20&lt;br /&gt;
&lt;br /&gt;
# ref: string query, https://git.io/vhgUw&lt;br /&gt;
wildcard_query =   { &amp;quot;query&amp;quot;: {&lt;br /&gt;
   &amp;quot;query_string&amp;quot; : {&lt;br /&gt;
   &amp;quot;query&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
   results = conn.search(&lt;br /&gt;
      body=wildcard_query,&lt;br /&gt;
      index=&amp;quot;aips&amp;quot;,&lt;br /&gt;
      doc_type=&amp;quot;aip&amp;quot;,&lt;br /&gt;
      from_=start_page - 1,&lt;br /&gt;
      size=items_per_page,&lt;br /&gt;
   )&lt;br /&gt;
except RequestError:&lt;br /&gt;
   print(&amp;quot;Query error&amp;quot;)&lt;br /&gt;
   sys.exit()&lt;br /&gt;
except NotFoundError:&lt;br /&gt;
   print(&amp;quot;No results found&amp;quot;)&lt;br /&gt;
   sys.exit()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are a number of ways to construct Elasticsearch queries. The&lt;br /&gt;
Elasticsearch website provides useful reference material:&lt;br /&gt;
[https://www.elastic.co/guide/en/elasticsearch/reference/current/full-text-queries.html Elasticsearch Full Text Queries].&lt;br /&gt;
&lt;br /&gt;
===Querying for specific data===&lt;br /&gt;
&lt;br /&gt;
While the string query-type is good for broad searches, you may want to&lt;br /&gt;
narrow a search down to a specific field of data to reduce false positives.&lt;br /&gt;
Below is an example of searching documents, using a &amp;quot;term&amp;quot; query to match&lt;br /&gt;
criteria within specific data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
start_page = 1&lt;br /&gt;
items_per_page = 20&lt;br /&gt;
&lt;br /&gt;
# ref: term query, https://git.io/vhrI9&lt;br /&gt;
term_query = {&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
        &amp;quot;constant_score&amp;quot;: {&lt;br /&gt;
            &amp;quot;filter&amp;quot;: {&lt;br /&gt;
                &amp;quot;term&amp;quot;: {&lt;br /&gt;
                    &amp;quot;mets.ns0:mets_dict_list.ns0:amdSec_dict_list.@ID&amp;quot;:&lt;br /&gt;
                    &amp;quot;amdsec_8&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    results = conn.search(&lt;br /&gt;
        body=term_query,&lt;br /&gt;
        index=&amp;quot;aips&amp;quot;,&lt;br /&gt;
        doc_type=&amp;quot;aip&amp;quot;,&lt;br /&gt;
        from_=start_page - 1,&lt;br /&gt;
        size=items_per_page,&lt;br /&gt;
    )&lt;br /&gt;
except RequestError:&lt;br /&gt;
    print(&amp;quot;Query error&amp;quot;)&lt;br /&gt;
    sys.exit()&lt;br /&gt;
except NotFoundError:&lt;br /&gt;
    print(&amp;quot;No results found&amp;quot;)&lt;br /&gt;
    sys.exit()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the construction of the query is not straightforward. Fields and&lt;br /&gt;
values are stored in Elasticsearch in lowercase. Properties work in uppercase&lt;br /&gt;
and might not work in lowercase. You can analyze a query with a `curl`&lt;br /&gt;
statement along the lines of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -X GET &amp;quot;http://127.0.0.1:9200/_analyze?pretty=true&amp;quot; \&lt;br /&gt;
-H 'Content-Type: application/json' -d'&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;field&amp;quot;: &amp;quot;METS.ns0:mets_dict_list.ns0:amdSec_dict_list.@ID&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;amdSec_8&amp;quot;&lt;br /&gt;
}'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The result is an analysis of the query string we want to use and it can reveal&lt;br /&gt;
common mistakes in our intuition, for example, searching for `amdSec_8` as a&lt;br /&gt;
mixed case string.&lt;br /&gt;
&lt;br /&gt;
===Displaying search results===&lt;br /&gt;
&lt;br /&gt;
Now that you have performed a couple of searches, you can display some results.&lt;br /&gt;
The logic below cycles through each hit in a results set. For each AIP file,&lt;br /&gt;
the UUID and filepath of the AIP are printed to the console.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
res = results.get(&amp;quot;hits&amp;quot;)&lt;br /&gt;
if res is not None:&lt;br /&gt;
    for r_ in res.items():&lt;br /&gt;
        if r_[0] == &amp;quot;total&amp;quot;:&lt;br /&gt;
            print(&amp;quot;Total results:&amp;quot;, r_[1])&lt;br /&gt;
        if r_[0] == &amp;quot;hits&amp;quot;:&lt;br /&gt;
            print(&amp;quot;Results returned:&amp;quot;, len(r_[1]))&lt;br /&gt;
            for aip_index in r_[1]:&lt;br /&gt;
                # aip_index will be the complete AIP record as a Python dict&lt;br /&gt;
                if aip_index.get(&amp;quot;_source&amp;quot;):&lt;br /&gt;
                    print(&lt;br /&gt;
                        &amp;quot;AIP ID: {}&amp;quot;.format(&lt;br /&gt;
                            aip_index.get(&amp;quot;_source&amp;quot;).get(&amp;quot;filePath&amp;quot;)&lt;br /&gt;
                        )&lt;br /&gt;
                    )&lt;br /&gt;
                    print(&lt;br /&gt;
                        &amp;quot;Filepath: {}&amp;quot;.format(&lt;br /&gt;
                            aip_index.get(&amp;quot;_source&amp;quot;).get(&amp;quot;uuid&amp;quot;)&lt;br /&gt;
                        )&lt;br /&gt;
                    )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Fetching specific documents===&lt;br /&gt;
&lt;br /&gt;
The AIP index inside Archivematica is separated into two Elasticsearch document&lt;br /&gt;
types. The AIP as a whole, and its individual files.&lt;br /&gt;
&lt;br /&gt;
* ''aip''&lt;br /&gt;
* ''aipfile''&lt;br /&gt;
&lt;br /&gt;
It might be easier to retrieve information about a specific digital object if&lt;br /&gt;
you know its UUID and want to query the ```aipfile``` instead. The example&lt;br /&gt;
below shows how we might retrieve the format identification for the file with&lt;br /&gt;
the UUID: ''f7428196-a11b-4093-b311-d43d607d54ca''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from __future__ import print_function&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
from elasticsearch import Elasticsearch&lt;br /&gt;
from elasticsearch.exceptions import RequestError, NotFoundError&lt;br /&gt;
&lt;br /&gt;
conn = Elasticsearch([&amp;quot;http://127.0.0.1:9200&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
start_page = 1&lt;br /&gt;
items_per_page = 20&lt;br /&gt;
&lt;br /&gt;
term_query = {&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
        &amp;quot;constant_score&amp;quot;: {&lt;br /&gt;
            &amp;quot;filter&amp;quot;: {&lt;br /&gt;
                &amp;quot;term&amp;quot;: {&amp;quot;FILEUUID&amp;quot;: &amp;quot;f7428196-a11b-4093-b311-d43d607d54ca&amp;quot;}&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    results = conn.search(&lt;br /&gt;
        body=term_query,&lt;br /&gt;
        index=&amp;quot;aips&amp;quot;,&lt;br /&gt;
        doc_type=&amp;quot;aipfile&amp;quot;,&lt;br /&gt;
        from_=start_page - 1,&lt;br /&gt;
        size=items_per_page,&lt;br /&gt;
    )&lt;br /&gt;
except RequestError:&lt;br /&gt;
    print(&amp;quot;Query error&amp;quot;)&lt;br /&gt;
    sys.exit()&lt;br /&gt;
except NotFoundError:&lt;br /&gt;
    print(&amp;quot;No results found&amp;quot;)&lt;br /&gt;
    sys.exit()&lt;br /&gt;
&lt;br /&gt;
res = results.get(&amp;quot;hits&amp;quot;)&lt;br /&gt;
if res is not None:&lt;br /&gt;
    for res_ in res.get(&amp;quot;hits&amp;quot;):&lt;br /&gt;
        file_record = res_.get(&amp;quot;_source&amp;quot;)&lt;br /&gt;
        if file_record:&lt;br /&gt;
            try:&lt;br /&gt;
                puid = file_record[&amp;quot;METS&amp;quot;][&amp;quot;amdSec&amp;quot;] \&lt;br /&gt;
                [&amp;quot;ns0:amdSec_dict_list&amp;quot;][0]  \&lt;br /&gt;
                [&amp;quot;ns0:techMD_dict_list&amp;quot;][0]  \&lt;br /&gt;
                [&amp;quot;ns0:mdWrap_dict_list&amp;quot;][0]  \&lt;br /&gt;
                [&amp;quot;ns0:xmlData_dict_list&amp;quot;][0] \&lt;br /&gt;
                [&amp;quot;ns1:object_dict_list&amp;quot;][0]  \&lt;br /&gt;
                [&amp;quot;ns1:objectCharacteristics_dict_list&amp;quot;][0] \&lt;br /&gt;
                [&amp;quot;ns1:format_dict_list&amp;quot;][0]  \&lt;br /&gt;
                [&amp;quot;ns1:formatRegistry_dict_list&amp;quot;][0] \&lt;br /&gt;
                [&amp;quot;ns1:formatRegistryKey&amp;quot;]&lt;br /&gt;
                print(&amp;quot;Format ID: {}&amp;quot;.format(puid))&lt;br /&gt;
            except KeyError:&lt;br /&gt;
                print(&amp;quot;Problem accessing index.&amp;quot;)&lt;br /&gt;
                sys.exit(1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Archivematica Transfer Index===&lt;br /&gt;
&lt;br /&gt;
Information about Transfers is also indexed in Archivematica. The information&lt;br /&gt;
is less-rich when compared to what is stored in the AIP and so it is not&lt;br /&gt;
covered in detail here. We can use the wildcard query from the AIP examples&lt;br /&gt;
above to begin to look at what is in the transfer index. The query would look&lt;br /&gt;
like as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from __future__ import print_function&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
from elasticsearch import Elasticsearch&lt;br /&gt;
from elasticsearch.exceptions import RequestError, NotFoundError&lt;br /&gt;
&lt;br /&gt;
conn = Elasticsearch([&amp;quot;http://127.0.0.1:62002&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
start_page = 1&lt;br /&gt;
items_per_page = 20&lt;br /&gt;
&lt;br /&gt;
# ref: string query, https://git.io/vhgUw&lt;br /&gt;
wildcard_query =   { &amp;quot;query&amp;quot;: {&lt;br /&gt;
   &amp;quot;query_string&amp;quot; : {&lt;br /&gt;
   &amp;quot;query&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    results = conn.search(&lt;br /&gt;
        body=wildcard_query,&lt;br /&gt;
        index=&amp;quot;transfers&amp;quot;,&lt;br /&gt;
        doc_type=&amp;quot;transfer&amp;quot;,&lt;br /&gt;
        from_=start_page - 1,&lt;br /&gt;
        size=items_per_page,&lt;br /&gt;
    )&lt;br /&gt;
except RequestError:&lt;br /&gt;
    print(&amp;quot;Query error&amp;quot;)&lt;br /&gt;
    sys.exit()&lt;br /&gt;
except NotFoundError:&lt;br /&gt;
    print(&amp;quot;No results found&amp;quot;)&lt;br /&gt;
    sys.exit()&lt;br /&gt;
&lt;br /&gt;
res = results.get(&amp;quot;hits&amp;quot;)&lt;br /&gt;
if res is not None:&lt;br /&gt;
    for res_ in res.get(&amp;quot;hits&amp;quot;):&lt;br /&gt;
        print(res_.get(&amp;quot;_source&amp;quot;))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Further reading===&lt;br /&gt;
&lt;br /&gt;
Elasticsearch provides API functions beyond&lt;br /&gt;
[https://www.elastic.co/guide/en/elasticsearch/reference/current/search.html searching].&lt;br /&gt;
Users who wish to make use of these capabilities in Python&lt;br /&gt;
can look at the Python [https://elasticsearch-py.readthedocs.io/en/master/ library documentation].&lt;br /&gt;
&lt;br /&gt;
The complete [https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html Elasticsearch documentation]&lt;br /&gt;
reference is also available. Many of the commands are described with examples&lt;br /&gt;
that can be run using the [https://curl.haxx.se/ curl] command line tool.&lt;br /&gt;
&lt;br /&gt;
==Connecting to Elasticsearch (Archivematica 0.9 up to Archivematica 1.2)==&lt;br /&gt;
&lt;br /&gt;
Here we will run through an example of interfacing with older versions of&lt;br /&gt;
Archivematica using Elasticsearch with a Python script that leverages the pyes&lt;br /&gt;
library.&lt;br /&gt;
&lt;br /&gt;
'''NB.''' Pyes use was [https://github.com/artefactual/archivematica/commit/b0ac6c642a2f070fc7a0f7c198a51c2d0509b7f7 removed]&lt;br /&gt;
in Archivematica 1.3. Though with some modification to the examples below it&lt;br /&gt;
should still be possible to adopt it to query the ES indexes.&lt;br /&gt;
&lt;br /&gt;
===Importing the pyes module===&lt;br /&gt;
&lt;br /&gt;
The first step, when using pyes, is to require the module. The following code&lt;br /&gt;
imports pyes functionality on a system on which Archivematica is installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
sys.path.append(&amp;quot;/home/demo/archivematica/src/archivematicaCommon/lib/externals&amp;quot;)&lt;br /&gt;
from pyes import *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next you'll want to create a connection to Elasticsearch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn = ES('127.0.0.1:9200')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Full text searching===&lt;br /&gt;
&lt;br /&gt;
Once connected to Elasticsearch, you can perform searches. Below is the code&lt;br /&gt;
needed to do a &amp;quot;wildcard&amp;quot; search for all AIP files indexed by Elasticsearch and&lt;br /&gt;
retrieve the first 20 items. Instead of doing a &amp;quot;wildcard&amp;quot; search you could&lt;br /&gt;
also supply keywords, such as a certain AIP UUID.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
start_page     = 1&lt;br /&gt;
items_per_page = 20&lt;br /&gt;
&lt;br /&gt;
q = StringQuery('*')&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    results = conn.search_raw(&lt;br /&gt;
        query=q,&lt;br /&gt;
        indices='aips',&lt;br /&gt;
        type='aip',&lt;br /&gt;
        start=start_page - 1,&lt;br /&gt;
        size=items_per_page&lt;br /&gt;
     )&lt;br /&gt;
except:&lt;br /&gt;
    print 'Query error.'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Querying for specific data===&lt;br /&gt;
&lt;br /&gt;
While the &amp;quot;StringQuery&amp;quot; query type is good for broad searches, you may want to&lt;br /&gt;
narrow a search down to a specific field of data to reduce false-positives.&lt;br /&gt;
Below is an example of searching documents, using &amp;quot;TermQuery&amp;quot;, matching&lt;br /&gt;
criteria within specific data. As, by default, Elasticsearch stores term values&lt;br /&gt;
in lowercase the term value searched for must also be lowercase.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
sys.path.append(&amp;quot;/usr/lib/archivematica/archivematicaCommon/externals&amp;quot;)&lt;br /&gt;
import pyes&lt;br /&gt;
&lt;br /&gt;
conn = pyes.ES('127.0.0.1:9200')&lt;br /&gt;
&lt;br /&gt;
q = pyes.TermQuery(&amp;quot;METS.amdSec.ns0:amdSec_list.@ID&amp;quot;, &amp;quot;amdsec_8&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    results = conn.search_raw(query=q, indices='aips')&lt;br /&gt;
except:&lt;br /&gt;
  print 'Query failed.'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Displaying search results===&lt;br /&gt;
&lt;br /&gt;
Now that you've performed a couple of searches, you can display some results.&lt;br /&gt;
The below logic cycles through each hit in a results set, representing an AIP&lt;br /&gt;
file, and prints the UUID of the AIP the file belongs in, the Elasticsearch&lt;br /&gt;
document ID corresponding to the indexed file data, and the path of the file&lt;br /&gt;
within the AIP.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if results:&lt;br /&gt;
    document_ids = []&lt;br /&gt;
    for item in results.hits.hits:&lt;br /&gt;
        aip = item._source&lt;br /&gt;
        print 'AIP ID: ' + aip['AIPUUID'] + ' / Document ID: ' + item._id&lt;br /&gt;
        print 'Filepath: ' + aip['filePath']&lt;br /&gt;
        print&lt;br /&gt;
        document_ids.append(item._id)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Fetching specific documents===&lt;br /&gt;
&lt;br /&gt;
If you want to get Elasticsearch data for a specific AIP file, you can use the&lt;br /&gt;
Elasticsearch document ID. The above code populates the&lt;br /&gt;
&amp;lt;code&amp;gt;document_ids&amp;lt;/code&amp;gt; array and the below code uses this data, retrieving&lt;br /&gt;
individual documents and extracting a specific item of data from each document.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for document_id in document_ids:&lt;br /&gt;
    data = conn.get(index_name, type_name, document_id)&lt;br /&gt;
&lt;br /&gt;
    format = data['METS']['amdSec'] \&lt;br /&gt;
    ['ns0:amdSec_list'][0]  \&lt;br /&gt;
    ['ns0:techMD_list'][0]  \&lt;br /&gt;
    ['ns0:mdWrap_list'][0]  \&lt;br /&gt;
    ['ns0:xmlData_list'][0] \&lt;br /&gt;
    ['ns1:object_list'][0]  \&lt;br /&gt;
    ['ns1:objectCharacteristics_list'][0] \&lt;br /&gt;
    ['ns1:format_list'][0]  \&lt;br /&gt;
    ['ns1:formatDesignation_list'][0] \&lt;br /&gt;
    ['ns1:formatName']&lt;br /&gt;
&lt;br /&gt;
    print 'Format for document ID ' + document_id + ' is ' + format&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Augmenting documents===&lt;br /&gt;
&lt;br /&gt;
To add additional data to an Elasticsearch document, you will need the document&lt;br /&gt;
ID. The following code shows an Elasticsearch query being used to find a&lt;br /&gt;
document and update it with additional data. Note that the name of the data&lt;br /&gt;
field being added, &amp;quot;__public&amp;quot;, is prefixed with two underscores. This practice&lt;br /&gt;
prevents the accidental overwriting of system or Archivematica-specific data.&lt;br /&gt;
System data is prefixed with a single underscore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
sys.path.append(&amp;quot;/usr/lib/archivematica/archivematicaCommon/externals&amp;quot;)&lt;br /&gt;
import pyes&lt;br /&gt;
&lt;br /&gt;
conn = pyes.ES('127.0.0.1:9200')&lt;br /&gt;
&lt;br /&gt;
q = pyes.TermQuery(&amp;quot;METS.amdSec.ns0:amdSec_list.@ID&amp;quot;, &amp;quot;amdsec_8&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
results = conn.search_raw(query=q, indices='aips')&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
  if results:&lt;br /&gt;
    for item in results.hits.hits:&lt;br /&gt;
        print 'Updating ID: ' + item['_id']&lt;br /&gt;
&lt;br /&gt;
        document = item['_source']&lt;br /&gt;
        document['__public'] = 'yes'&lt;br /&gt;
        conn.index(document, 'aips', 'aip', item['_id'])&lt;br /&gt;
except:&lt;br /&gt;
  print 'Query failed.'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=AIP_re-ingest&amp;diff=12489</id>
		<title>AIP re-ingest</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=AIP_re-ingest&amp;diff=12489"/>
		<updated>2018-05-22T09:32:06Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: /* techMD */ correct superseded vs. current&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Requirements]] &amp;gt; AIP re-ingest&lt;br /&gt;
&lt;br /&gt;
This page documents requirements for retrieving an Archivematica AIP from archival storage and re-ingesting it for further processing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Feature requirements]]&lt;br /&gt;
&lt;br /&gt;
=Use cases=&lt;br /&gt;
&lt;br /&gt;
*Updating DC metadata (version 1.5)&lt;br /&gt;
*Updating rights metadata (version 1.5)&lt;br /&gt;
*Adding new DC metadata files (version 1.5)&lt;br /&gt;
*Adding new submission documentation (unsponsored)&lt;br /&gt;
*Adding new digital objects (unsponsored)&lt;br /&gt;
*Deleting original digital objects (unsponsored)&lt;br /&gt;
*Redoing format identification/validation/characterization (version 1.6)&lt;br /&gt;
*Redoing metadata extraction (version 1.6)&lt;br /&gt;
*Redoing preservation normalization (version 1.6)&lt;br /&gt;
*Generating new DIP (version 1.5)&lt;br /&gt;
*Running OCR on re-ingest (version 1.6)&lt;br /&gt;
*Rerunning other micro-services (Examine Contents, Transfer Structure Report) (unsponsored)&lt;br /&gt;
*Extracting packages and then deleting the packages (unsponsored)&lt;br /&gt;
*Sending AIP to backlog and re-arranging/selecting from contents (unsponsored)&lt;br /&gt;
&lt;br /&gt;
==Full re-ingest==&lt;br /&gt;
&lt;br /&gt;
To be supported in version 1.6. Sends an AIP to the beginning of transfer to run all micro-services on AIP, and re-normalize for preservation and access if desired.&lt;br /&gt;
&lt;br /&gt;
[[File:AIP_re-ingest_Preservation_and_metadata.png|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Metadata re-ingest==&lt;br /&gt;
&lt;br /&gt;
Supported in version 1.5. Sends an AIP to the beginning of ingest to allow user to update metadata.&lt;br /&gt;
&lt;br /&gt;
[[File:AIP_re-ingest_workflows_-_Metadata_only.png|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Partial re-ingest==&lt;br /&gt;
&lt;br /&gt;
Supported in version 1.5. Sends an AIP to the beginning of ingest to allow user to update metadata and normalize for access.&lt;br /&gt;
&lt;br /&gt;
[[File:AIP_re-ingest_objects_with_metadata.png|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
=New micro-services=&lt;br /&gt;
&lt;br /&gt;
==New micro-services for all workflows==&lt;br /&gt;
&lt;br /&gt;
*Retrieve AIP from archival storage&lt;br /&gt;
*Place AIP in active transfers for processing&lt;br /&gt;
*Extract AIP contents and run BagIt checks&lt;br /&gt;
*Add approve AIP re-ingest micro-service&lt;br /&gt;
*Re-use existing file UUIDs&lt;br /&gt;
*Identify new metadata files&lt;br /&gt;
*Validate schemas in new metadata files&lt;br /&gt;
*Update METS file&lt;br /&gt;
*Replace AIP&lt;br /&gt;
&lt;br /&gt;
=METS versioning=&lt;br /&gt;
&lt;br /&gt;
*Versioning will be captured via METS file updates.&lt;br /&gt;
*METS file updates will be handled through  &amp;lt;status&amp;gt;, &amp;lt;created&amp;gt; and &amp;lt;groupID&amp;gt; attributes in the various METS sections. See for example Element &amp;lt;dmdSec&amp;gt; at http://www.loc.gov/standards/mets/docs/mets.v1-9.html. &lt;br /&gt;
*This means that there will always only be one AIP METS file, but it will contain both superseded and current metadata and versioning information for all updates.&lt;br /&gt;
&lt;br /&gt;
==dmdSec==&lt;br /&gt;
&lt;br /&gt;
*The first dmdSec created will be marked as status=&amp;quot;original&amp;quot;, and updated/revised dmdSecs will be marked as status=&amp;quot;updated&amp;quot;. The timestamp (created=&amp;quot;[date/time]&amp;quot;) is also updated.&lt;br /&gt;
&lt;br /&gt;
==amdSec==&lt;br /&gt;
&lt;br /&gt;
===techMD===&lt;br /&gt;
&lt;br /&gt;
*After re-ingest, the original techMD will contain the PREMIS:Object metadata and the status=&amp;quot;superseded.&amp;quot;&lt;br /&gt;
*The next techMD will be status=&amp;quot;current&amp;quot; and contain the PREMIS:Object metadata generated on re-ingest, as well as all PREMIS events from each ingest and re-ingest. This shows the complete set of actions taken upon the objects since they came into the repository.&lt;br /&gt;
*The timestamp (created=&amp;quot;[date/time]&amp;quot;) is also updated.&lt;br /&gt;
&lt;br /&gt;
===rightsMD===&lt;br /&gt;
&lt;br /&gt;
*After re-ingest, the original rightsMD will have the status=&amp;quot;superseded&amp;quot; and the revised rightsMD will have the status=&amp;quot;current&amp;quot;.&lt;br /&gt;
*The timestamp (created=&amp;quot;[date/time]&amp;quot;) is also updated.&lt;br /&gt;
*Altering either the rights statement or the act(s) will result in a new rightsMD.&lt;br /&gt;
&lt;br /&gt;
==fileSec==&lt;br /&gt;
&lt;br /&gt;
The fileSec does not indicate its status, but should reflect the files in the AIP currently. For example, if normalization is not performed on the first ingest, but is performed on reingest, the fileSec in the reingested AIP will include preservation derivatives.&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Dataverse&amp;diff=12482</id>
		<title>Dataverse</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Dataverse&amp;diff=12482"/>
		<updated>2018-05-11T12:51:38Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Adding a current status bullet point&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Documentation]] &amp;gt; [[Requirements]] &amp;gt; Dataverse&lt;br /&gt;
&lt;br /&gt;
This page tracks development of a proof of concept integration of Archivematica with [http://dataverse.org Dataverse]. Please note that this feature is experimental and Artefactual has not tested it in a production environment.&lt;br /&gt;
&lt;br /&gt;
[[Category:Feature requirements]]&lt;br /&gt;
&lt;br /&gt;
===See also===&lt;br /&gt;
&lt;br /&gt;
* [[Sword API]]&lt;br /&gt;
* [[Dataset preservation]]&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This wiki captures requirements for ingesting studies (datasets) from Dataverse into Archivematica for long-term preservation.&lt;br /&gt;
&lt;br /&gt;
==Current Status==&lt;br /&gt;
&lt;br /&gt;
'''May 11, 2018'''&lt;br /&gt;
Work has begun to see the OCUL Dataverse project migrated from a development branch to a stable branch of Archivematica. To see the current status of that work, and any outstanding issue, please see the Waffle Board or Board's linked to [https://waffle.io/artefactual/archivematica?label=OCUL:%20AM-Dataverse below]:&lt;br /&gt;
&lt;br /&gt;
* [https://waffle.io/artefactual/archivematica?label=OCUL:%20AM-Dataverse Waffle board for the Dataverse Feature]&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
April 24, 2017&lt;br /&gt;
This feature requires a development branch of Archivematica, which can be installed with the following steps:&lt;br /&gt;
&lt;br /&gt;
1) install deploy-pub. https://github.com/artefactual/deploy-pub&lt;br /&gt;
2) use the archivematica-centos7 playbook in deploy-pub https://github.com/artefactual/deploy-pub/tree/master/playbooks/archivematica-centos7&lt;br /&gt;
3) create a hosts file that lists your target machine (see digital ocean example linked from playbook)&lt;br /&gt;
4) in requirements.yml change version of ansible-archivematica-src to &amp;quot;stable/1.6.x&amp;quot;&lt;br /&gt;
5) change singlenode.yml to point to the host you defined in your hosts file.&lt;br /&gt;
6) change the vars-singlenode.yml to include the following info:&lt;br /&gt;
#required for dataverse testing&lt;br /&gt;
archivematica_src_am_version: &amp;quot;dev/dataverse-poc&amp;quot;&lt;br /&gt;
archivematica_src_automationtools: &amp;quot;yes&amp;quot;&lt;br /&gt;
archivematica_src_automationtools_version: &amp;quot;dev/dataverse&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Workflow==&lt;br /&gt;
*The proposed workflow consists of issuing API calls to Dataverse, receiving content (data files and metadata) for ingest into Archivematica, preparing Archivematica Archival Information Packages (AIPs) and placing them in archival storage, &amp;lt;strike&amp;gt; and updating the Dataverse study with the AIP UUIDs &amp;lt;/strike&amp;gt; (this was determined to be out of scope). &lt;br /&gt;
*Analysis is based on Dataverse tests using [https://apitest.dataverse.org https://apitest.dataverse.org] and [https://demo.dataverse.org https://demo.dataverse.org], online documentation at http://guides.dataverse.org/en/latest/api/index.html and discussions with Dataverse developers and users. &lt;br /&gt;
*Proposed integration is for Archivematica 1.5 and higher and Dataverse 4.x.&lt;br /&gt;
&lt;br /&gt;
===Workflow diagram===&lt;br /&gt;
&lt;br /&gt;
[[File:Dataverse - Archivematica workflow_1.png|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
===Workflow diagram notes===&lt;br /&gt;
&lt;br /&gt;
[1] &amp;quot;Ingest script&amp;quot; refers to an [https://github.com/artefactual/automation-tools automation tool] designed to automate ingest into Archivematica for bulk processing. An existing automation tool would be modified to accomplish the tasks described in the workflow.&lt;br /&gt;
&lt;br /&gt;
[2] A new or updated study is one that has been published, either for the first time or as a new version, since the last API call.&lt;br /&gt;
&lt;br /&gt;
[3] The json file contains citation and other study-level metadata, an entity_id field that is used to identify the study in Dataverse, version information, a list of data files with their own entity_id values, and md5 checksums for each data file.&lt;br /&gt;
&lt;br /&gt;
[4] If json file has content_type of tab separated values, Archivematica issues API call for multiple file (&amp;quot;bundled&amp;quot;) content download. This returns a zipped package for tsv files containing the .tab file, the original uploaded file, several other derivative formats, a DDI XML file and file citations in Endnote and RIS formats.&lt;br /&gt;
&lt;br /&gt;
[5] The METS file will consist of a dmdSec containing the DC elements extracted from the json file, and a fileSec and structMap indicating the relationships between the files in the transfer (eg. original uploaded data file, derivative files generated for tabular data, metadata/citation files). This will allow Archivematica to apply appropriate preservation micro-services to different filetypes and provide an accurate representation of the study in the AIP METS file (step 1.9).&lt;br /&gt;
&lt;br /&gt;
[6] Archivematica ingests all content returned from Dataverse, including the json file, plus the METS file generated in step 1.6.&lt;br /&gt;
&lt;br /&gt;
[7] Standard and pre-configured micro-services include: assign UUID, verify checksums, generate checksums, extract packages, scan for viruses, clean up filenames, identify formats, validate formats, extract metadata and normalize for preservation.&lt;br /&gt;
&lt;br /&gt;
== Transfer METS file ==&lt;br /&gt;
&lt;br /&gt;
When the ingest script retrieves content from Dataverse, it generates a METS file to allow Archivematica to understand the contents of the transfer and the relationships between its various data and metadata files.&lt;br /&gt;
&lt;br /&gt;
=== Sample transfer METS file ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Original Dataverse study retrieved through API call:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*dataset.json (a JSON file generated by Dataverse consisting of study-level metadata and information about data files)&lt;br /&gt;
*Study_info.pdf (a non-tabular data file)&lt;br /&gt;
*A zipped bundle consisting of the following:&lt;br /&gt;
**YVR_weather_data.sav (an SPSS SAV file uploaded by the researcher)&lt;br /&gt;
**YVR_weather_data.tab (a TAB file generated from the SPSS SAV file by Dataverse)&lt;br /&gt;
**YVR weather_data.RData (an R file generated from the SPSS SAV file by Dataverse)&lt;br /&gt;
**YVR_weather_data-ddi.xml, YVR_weather_datacitation-endnote.xml, and YVR_weather_datacitation-ris.ris (three metadata files generated for the TAB file by Dataverse)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Resulting transfer METS file&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The fileSec in the METS file consists of three file groups, USE=&amp;quot;original&amp;quot; (the PDF and SAV files); USE=&amp;quot;derivative&amp;quot; (the TAB and R files); and USE=&amp;quot;metadata&amp;quot; (the JSON file and the three metadata files from the zipped bundle).&lt;br /&gt;
*All of the files unpacked from the Dataverse bundle have a GROUPID attribute to indicate the relationship between them. If the transfer had consisted of more than one bundle, each set of unpacked files would have its own GROUPID.&lt;br /&gt;
*Three dmdSecs have been generated:&lt;br /&gt;
**dmdSec_1, consisting of a small number of study-level DDI terms&lt;br /&gt;
**dmdSec_2, consisting of an mdRef to the JSON file&lt;br /&gt;
**dmdSec_3, consisting of an mdRef to the DDI XML file&lt;br /&gt;
*In the structMap, dmdSec_1 and dmdSec_2 are linked to the study as a whole, while dmdSec_3 is linked to the TAB file. The endnote and ris files have not been made into dmdSecs because they contain small subsets of metadata which are already captured in dmdSec_1 and the DDI xml file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:METS1G.png|900px|thumb|center]]&lt;br /&gt;
[[File:METS2G.png|900px|thumb|center]]&lt;br /&gt;
[[File:METS3G.png|900px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Metadata sources for METS file&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width:15%&amp;quot;|'''METS element'''&lt;br /&gt;
!style=&amp;quot;width:25%&amp;quot;|'''Information source'''&lt;br /&gt;
!style=&amp;quot;width:40%&amp;quot;|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|ddi:titl&lt;br /&gt;
|json: citation/typeName: &amp;quot;title&amp;quot;, value: [value]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:IDNo&lt;br /&gt;
|json: authority, identifier&lt;br /&gt;
|json example: &amp;quot;authority&amp;quot;: &amp;quot;10.5072/FK2/&amp;quot;, &amp;quot;identifier&amp;quot;: &amp;quot;0MOPJM&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|ddi:IDNo agency attribute&lt;br /&gt;
|json: protocol&lt;br /&gt;
|json example: &amp;quot;protocol&amp;quot;: &amp;quot;doi&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|ddi:AuthEntity&lt;br /&gt;
|json: citation/typeName: &amp;quot;authorName&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:distrbtr&lt;br /&gt;
|Config setting in ingest tool&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:version date attribute&lt;br /&gt;
|json: &amp;quot;releaseTime&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:version type attribute&lt;br /&gt;
|json: &amp;quot;versionState&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:version&lt;br /&gt;
|json: &amp;quot;versionNumber&amp;quot;, &amp;quot;versionMinorNumber&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:restrctn&lt;br /&gt;
|json: &amp;quot;termsOfUse&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|fileGrp USE=&amp;quot;original&amp;quot;&lt;br /&gt;
|json: datafile&lt;br /&gt;
|Each non-tabular data file is listed as a datafile in the files section. Each TAB file derived by Dataverse for uploaded tabular file formats is also listed as a datafile, with the original file uploaded by the researcher indicated by &amp;quot;originalFileFormat&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|fileGrp USE=&amp;quot;derivative&amp;quot;&lt;br /&gt;
|All files that are included in a bundle, except for the original file and the metadata files (see below).&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|fileGrp USE=&amp;quot;metadata&amp;quot;&lt;br /&gt;
|Any files with .json or .ris extension, any -ddi.xml files and -endnote.xml files&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CHECKSUM&lt;br /&gt;
|json: datafile/&amp;quot;md5&amp;quot;: [value]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CHECKSUMTYPE&lt;br /&gt;
|json: datafile/&amp;quot;md5&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GROUPID&lt;br /&gt;
|Generated by ingest tool. Each file unpacked from a bundle is given the same group id.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AIP METS file ==&lt;br /&gt;
&lt;br /&gt;
=== Basic METS file structure ===&lt;br /&gt;
&lt;br /&gt;
The Archival Information Package (AIP) METS file will follow the basic structure for a standard Archivematica AIP METS file described at [[METS]]. A new fileGrp USE=&amp;quot;derivative&amp;quot; will be added to indicate TAB, RData and other derivatives generated by Dataverse for uploaded tabular data format files.&lt;br /&gt;
&lt;br /&gt;
=== dmdSecs in AIP METS file ===&lt;br /&gt;
&lt;br /&gt;
The dmdSecs in the transfer METS file will be copied over to the AIP METS file.&lt;br /&gt;
&lt;br /&gt;
=== Additions to PREMIS for derivative files ===&lt;br /&gt;
&lt;br /&gt;
In the PREMIS Object entity, relationships between original and derivative tabular format files from Dataverse will be described using PREMIS relationship semantic units. A PREMIS derivation event will be added to indicate the derivative file was generated from the original file, and a Dataverse Agent will be added to indicate the Event were carried out by Dataverse prior to ingest, rather than by Archivematica. &lt;br /&gt;
&lt;br /&gt;
'''Note''' We originally considered adding a creation event for the derivative files as well, but decided that it's not necessary as the event can be inferred from the derivation event and the PREMIS object relationships.&lt;br /&gt;
&lt;br /&gt;
'''Note''' &amp;quot;Derivation&amp;quot; is not an event type on the Library of Congress controlled vocabulary list at http://id.loc.gov/vocabulary/preservation/eventType.html. However, we have submitted it as a proposed new term (November 2015) at http://premisimplementers.pbworks.com/w/page/102413902/Preservation%20Events%20Controlled%20Vocabulary - a list of new terms that is being considered by the PREMIS Editorial Committee.&lt;br /&gt;
&lt;br /&gt;
'''Update''' ''April 2018'': The most recently available Event Type Controlled List (June 2017) does not yet have derivation as a controlled type, https://www.loc.gov/standards/premis/v3/preservation-events.pdf&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Original SPSS SAV file&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
&amp;lt;premis:relationship&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relationshipType&amp;gt;derivation&amp;lt;/premis:relationshipType&amp;gt;&lt;br /&gt;
    &amp;lt;premis:relationshipSubType&amp;gt;is source of&amp;lt;/premis:relationshipSubType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relatedObjectIdentification&amp;gt;                  &lt;br /&gt;
    &amp;lt;premis:relatedObjectIdentifierType&amp;gt;UUID&amp;lt;/premis:relatedObjectIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relatedObjectIdentifierValue&amp;gt;[TAB file UUID]&amp;lt;/premis:relatedObjectIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;premis:relationship&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;premis:eventIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventIdentifierType&amp;gt;UUID&amp;lt;/premis:eventIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventIdentifierValue&amp;gt;[Event UUID assigned by Archivematica]&amp;lt;/premis:eventIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:eventIdentifier&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventType&amp;gt;derivation&amp;lt;/premis:eventType&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventDateTime&amp;gt;2015-08-21&amp;lt;/premis:eventDateTime&amp;gt;&lt;br /&gt;
&amp;lt;premis:linkingAgentIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:linkingAgentIdentifierType&amp;gt;URI&amp;lt;/premis:linkingAgentIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:linkingAgentIdentifierValue&amp;gt;http://dataverse.scholarsportal.info/dvn/&lt;br /&gt;
&amp;lt;/premis:linkingAgentIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:linkingAgentIdentifier&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;premis:agentIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:agentIdentifierType&amp;gt;URI&amp;lt;/premis:agentIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:agentIdentifierValue&amp;gt;http://dataverse.scholarsportal.info/dvn/&amp;lt;/premis:agentIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:agentIdentifier&amp;gt;&lt;br /&gt;
&amp;lt;premis:agentName&amp;gt;SP Dataverse Network&amp;lt;/premis:agentName&amp;gt;&lt;br /&gt;
&amp;lt;premis:agentType&amp;gt;organization&amp;lt;/premis:agentType&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Derivative TAB file&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
&amp;lt;premis:relationship&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relationshipType&amp;gt;derivation&amp;lt;/premis:relationshipType&amp;gt;&lt;br /&gt;
    &amp;lt;premis:relationshipSubType&amp;gt;has source&amp;lt;/premis:relationshipSubType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relatedObjectIdentification&amp;gt;                  &lt;br /&gt;
    &amp;lt;premis:relatedObjectIdentifierType&amp;gt;UUID&amp;lt;/premis:relatedObjectIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relatedObjectIdentifierValue&amp;gt;[SPSS SAV file UUID]&amp;lt;/premis:relatedObjectIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;premis:relationship&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fixity check for checksums received from Dataverse ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventIdentifierType&amp;gt;UUID&amp;lt;/premis:eventIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventIdentifierValue&amp;gt;[Event UUID assigned by Archivematica]&amp;lt;/premis:eventIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:eventIdentifier&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventType&amp;gt;fixity check&amp;lt;/premis:eventType&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventDateTime&amp;gt;2015-08-21&amp;lt;/premis:eventDateTime&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventDetail&amp;gt;program=&amp;quot;python&amp;quot;; module=&amp;quot;hashlib.sha256()&amp;quot;&amp;lt;/premis:eventDetail&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventOutcomeInformation&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventOutcome&amp;gt;Pass&amp;lt;/premis:EventOutcome&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventOutcomeDetail&amp;gt;&lt;br /&gt;
    &amp;lt;premis:eventOutcomeDetailNote&amp;gt;Dataverse checksum 91b65277959ec273763d28ef002e83a6b3fba57c7a3[...] &lt;br /&gt;
verified&amp;lt;/premis:eventOutcomeDetailNote&amp;gt;&lt;br /&gt;
  &amp;lt;/premis:eventOutcomeDetail&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventOutcomeInformation&amp;gt;&lt;br /&gt;
&amp;lt;/premis:linkingAgentIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:linkingAgentIdentifierType&amp;gt;preservation system&amp;lt;/premis:linkingAgentIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:linkingAgentIdentifierValue&amp;gt;Archivematica 1.4.1&amp;lt;/premis:linkingAgentIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:linkingAgentIdentifier&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== AIP structure ==&lt;br /&gt;
&lt;br /&gt;
An Archival Information Package derived from a Dataverse ingest will have the same basic structure as a generic Archivematica AIP, described at [[AIP_structure]]. There are additional metadata files that are included in a Dataverse-derived AIP, and each zipped bundle that is included in the ingest will result in a separate directory in the AIP. The following is a sample structure.&lt;br /&gt;
&lt;br /&gt;
'''Bag structure'''&lt;br /&gt;
&lt;br /&gt;
The Archival Information Package (AIP) is packaged in the Library of Congress BagIt format, and may be stored compressed or uncompressed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Pacific_weather_patterns_study-dfb0b75d-6555-4e99-a8d8-95bed0f6303f.7z&lt;br /&gt;
├── bag-info.txt&lt;br /&gt;
├── bagit.txt &lt;br /&gt;
├── manifest-sha512.txt│   &lt;br /&gt;
├── tagmanifest-md5.txt&lt;br /&gt;
└── data [standard bag directory containing contents of the AIP]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''AIP structure'''&lt;br /&gt;
&lt;br /&gt;
All of the contents of the AIP reside within the data directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
├── data&lt;br /&gt;
│   ├── logs [log files generated during processing]&lt;br /&gt;
│   │   ├── fileFormatIdentification.log&lt;br /&gt;
│   │   └── transfers&lt;br /&gt;
│   │       └── Pacific_weather_patterns_study-1a0f309a-d3ec-43ee-bb48-a868cd5ca85c&lt;br /&gt;
│   │           └── logs&lt;br /&gt;
│   │               ├── extractContents.log&lt;br /&gt;
│   │               ├── fileFormatIdentification.log&lt;br /&gt;
│   │               └── filenameCleanup.log&lt;br /&gt;
│   ├── METS.dfb0b75d-6555-4e99-a8d8-95bed0f6303f.xml [the AIP METS file]&lt;br /&gt;
│   ├── objects [a directory containing the digital objects being preserved, plus their metadata]&lt;br /&gt;
│       ├── chelan_052.jpg [an original file from Dataverse]&lt;br /&gt;
│       ├── Weather_data.sav [an original file from Dataverse]&lt;br /&gt;
│       ├── Weather_data [a bundle retrieved from Dataverse]&lt;br /&gt;
│       │   ├── Weather_data.xml&lt;br /&gt;
│       │   ├── Weather_data.ris&lt;br /&gt;
│       │   ├── Weather_data-ddi.xml&lt;br /&gt;
│       │   └── Weather_data.tab [a TAB derivative file generated by Dataverse]&lt;br /&gt;
│       ├── metadata&lt;br /&gt;
│       │   └── transfers&lt;br /&gt;
│       │       └── Pacific_weather_patterns_study-1a0f309a-d3ec-43ee-bb48-a868cd5ca85c&lt;br /&gt;
│       │           ├── agents.json [information about the source of the data, used to populate the &lt;br /&gt;
PREMIS Dataverse agent in the AIP METS file]&lt;br /&gt;
│       │           ├── dataset.json [the full json file retrieved from Dataverse]&lt;br /&gt;
│       │           └── METS.xml [the METS file generated by the ingest script to prepare &lt;br /&gt;
Dataverse contents for ingest into Archivematica]&lt;br /&gt;
│       └── submissionDocumentation&lt;br /&gt;
│           └── transfer-58-1a0f309a-d3ec-43ee-bb48-a868cd5ca85c&lt;br /&gt;
│               └── METS.xml [a standard transfer METS file generated to list all contents of &lt;br /&gt;
an Archivematica transfer]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''AIP METS file structure'''&lt;br /&gt;
&lt;br /&gt;
The AIP METS file records information a bout the contents of the AIP, and indicates the relationships between the various files in the AIP. A sample AIP METS file would be structured as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
METS header&lt;br /&gt;
-Date METS file was created&lt;br /&gt;
METS dmdSec [descriptive metadata section]&lt;br /&gt;
-DDI XML metadata taken from the METS transfer file, as follows&lt;br /&gt;
--ddi:title&lt;br /&gt;
--ddi:IDno&lt;br /&gt;
--ddi:authEnty&lt;br /&gt;
--ddi:distrbtr&lt;br /&gt;
--ddi:version&lt;br /&gt;
--ddi:restrctn&lt;br /&gt;
METS dmdSec [descriptive metadata section]&lt;br /&gt;
-link to dataset.json&lt;br /&gt;
METS dmdSec [descriptive metadata section]&lt;br /&gt;
-link to DDI.XML file created for derivative file as part of bundle&lt;br /&gt;
METS amdSec [administrative metadata section, one for each original, derivative and normalized file in the AIP]&lt;br /&gt;
-techMD [technical metadata]&lt;br /&gt;
--PREMIS technical metadata about a digital object, including file format information and extracted metadata&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: derivation (for derived formats)&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event:ingestion&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: unpacking (for bundled files)&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: message digest calculation&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: virus check&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: format identification&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: fixity check (if file comes from Dataverse with a checksum)&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: normalization (if file is normalized to a preservation format during Archivematica processing)&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: creation (if file is a normalized preservation master generated during Archivematica processing)&lt;br /&gt;
-digiprovMD&lt;br /&gt;
--PREMIS agent: organization&lt;br /&gt;
-digiprovMD&lt;br /&gt;
--PREMIS agent: software&lt;br /&gt;
-digiprovMD&lt;br /&gt;
--PREMIS agent: Archivematica user&lt;br /&gt;
METS fileSec [file section]&lt;br /&gt;
-fileGrp USE=&amp;quot;original&amp;quot; [file group]&lt;br /&gt;
--original files uploaded to Dataverse&lt;br /&gt;
-fileGrp USE=&amp;quot;derivative&amp;quot;&lt;br /&gt;
--derivative tabular files generated by Dataverse&lt;br /&gt;
-fileGrp USE=&amp;quot;submissionDocumentation&amp;quot;&lt;br /&gt;
--METS.XML (standard Archivematica transfer METS file listing contents of transfer)&lt;br /&gt;
-fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
--normalized preservation masters generated during Archivematica processing&lt;br /&gt;
-fileGrp USE=&amp;quot;metadata&amp;quot;&lt;br /&gt;
--dataset.json&lt;br /&gt;
--DDI.XML&lt;br /&gt;
--xcitation-endnote.xml&lt;br /&gt;
--xcitation-ris.ris&lt;br /&gt;
METS structMap [structural map]&lt;br /&gt;
-directory structure of the contents of the AIP&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Dataverse&amp;diff=12413</id>
		<title>Dataverse</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Dataverse&amp;diff=12413"/>
		<updated>2018-04-18T10:07:40Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Update on PREMIS derivative term status&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Documentation]] &amp;gt; [[Requirements]] &amp;gt; Dataverse&lt;br /&gt;
&lt;br /&gt;
This page tracks development of a proof of concept integration of Archivematica with [http://dataverse.org Dataverse]. Please note that this feature is experimental and Artefactual has not tested it in a production environment.&lt;br /&gt;
&lt;br /&gt;
[[Category:Feature requirements]]&lt;br /&gt;
&lt;br /&gt;
===See also===&lt;br /&gt;
&lt;br /&gt;
* [[Sword API]]&lt;br /&gt;
* [[Dataset preservation]]&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This wiki captures requirements for ingesting studies (datasets) from Dataverse into Archivematica for long-term preservation.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
April 24, 2017&lt;br /&gt;
This feature requires a development branch of Archivematica, which can be installed with the following steps:&lt;br /&gt;
&lt;br /&gt;
1) install deploy-pub. https://github.com/artefactual/deploy-pub&lt;br /&gt;
2) use the archivematica-centos7 playbook in deploy-pub https://github.com/artefactual/deploy-pub/tree/master/playbooks/archivematica-centos7&lt;br /&gt;
3) create a hosts file that lists your target machine (see digital ocean example linked from playbook)&lt;br /&gt;
4) in requirements.yml change version of ansible-archivematica-src to &amp;quot;stable/1.6.x&amp;quot;&lt;br /&gt;
5) change singlenode.yml to point to the host you defined in your hosts file.&lt;br /&gt;
6) change the vars-singlenode.yml to include the following info:&lt;br /&gt;
#required for dataverse testing&lt;br /&gt;
archivematica_src_am_version: &amp;quot;dev/dataverse-poc&amp;quot;&lt;br /&gt;
archivematica_src_automationtools: &amp;quot;yes&amp;quot;&lt;br /&gt;
archivematica_src_automationtools_version: &amp;quot;dev/dataverse&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Workflow==&lt;br /&gt;
*The proposed workflow consists of issuing API calls to Dataverse, receiving content (data files and metadata) for ingest into Archivematica, preparing Archivematica Archival Information Packages (AIPs) and placing them in archival storage, &amp;lt;strike&amp;gt; and updating the Dataverse study with the AIP UUIDs &amp;lt;/strike&amp;gt; (this was determined to be out of scope). &lt;br /&gt;
*Analysis is based on Dataverse tests using [https://apitest.dataverse.org https://apitest.dataverse.org] and [https://demo.dataverse.org https://demo.dataverse.org], online documentation at http://guides.dataverse.org/en/latest/api/index.html and discussions with Dataverse developers and users. &lt;br /&gt;
*Proposed integration is for Archivematica 1.5 and higher and Dataverse 4.x.&lt;br /&gt;
&lt;br /&gt;
===Workflow diagram===&lt;br /&gt;
&lt;br /&gt;
[[File:Dataverse - Archivematica workflow_1.png|800px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
===Workflow diagram notes===&lt;br /&gt;
&lt;br /&gt;
[1] &amp;quot;Ingest script&amp;quot; refers to an [https://github.com/artefactual/automation-tools automation tool] designed to automate ingest into Archivematica for bulk processing. An existing automation tool would be modified to accomplish the tasks described in the workflow.&lt;br /&gt;
&lt;br /&gt;
[2] A new or updated study is one that has been published, either for the first time or as a new version, since the last API call.&lt;br /&gt;
&lt;br /&gt;
[3] The json file contains citation and other study-level metadata, an entity_id field that is used to identify the study in Dataverse, version information, a list of data files with their own entity_id values, and md5 checksums for each data file.&lt;br /&gt;
&lt;br /&gt;
[4] If json file has content_type of tab separated values, Archivematica issues API call for multiple file (&amp;quot;bundled&amp;quot;) content download. This returns a zipped package for tsv files containing the .tab file, the original uploaded file, several other derivative formats, a DDI XML file and file citations in Endnote and RIS formats.&lt;br /&gt;
&lt;br /&gt;
[5] The METS file will consist of a dmdSec containing the DC elements extracted from the json file, and a fileSec and structMap indicating the relationships between the files in the transfer (eg. original uploaded data file, derivative files generated for tabular data, metadata/citation files). This will allow Archivematica to apply appropriate preservation micro-services to different filetypes and provide an accurate representation of the study in the AIP METS file (step 1.9).&lt;br /&gt;
&lt;br /&gt;
[6] Archivematica ingests all content returned from Dataverse, including the json file, plus the METS file generated in step 1.6.&lt;br /&gt;
&lt;br /&gt;
[7] Standard and pre-configured micro-services include: assign UUID, verify checksums, generate checksums, extract packages, scan for viruses, clean up filenames, identify formats, validate formats, extract metadata and normalize for preservation.&lt;br /&gt;
&lt;br /&gt;
== Transfer METS file ==&lt;br /&gt;
&lt;br /&gt;
When the ingest script retrieves content from Dataverse, it generates a METS file to allow Archivematica to understand the contents of the transfer and the relationships between its various data and metadata files.&lt;br /&gt;
&lt;br /&gt;
=== Sample transfer METS file ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Original Dataverse study retrieved through API call:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*dataset.json (a JSON file generated by Dataverse consisting of study-level metadata and information about data files)&lt;br /&gt;
*Study_info.pdf (a non-tabular data file)&lt;br /&gt;
*A zipped bundle consisting of the following:&lt;br /&gt;
**YVR_weather_data.sav (an SPSS SAV file uploaded by the researcher)&lt;br /&gt;
**YVR_weather_data.tab (a TAB file generated from the SPSS SAV file by Dataverse)&lt;br /&gt;
**YVR weather_data.RData (an R file generated from the SPSS SAV file by Dataverse)&lt;br /&gt;
**YVR_weather_data-ddi.xml, YVR_weather_datacitation-endnote.xml, and YVR_weather_datacitation-ris.ris (three metadata files generated for the TAB file by Dataverse)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Resulting transfer METS file&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The fileSec in the METS file consists of three file groups, USE=&amp;quot;original&amp;quot; (the PDF and SAV files); USE=&amp;quot;derivative&amp;quot; (the TAB and R files); and USE=&amp;quot;metadata&amp;quot; (the JSON file and the three metadata files from the zipped bundle).&lt;br /&gt;
*All of the files unpacked from the Dataverse bundle have a GROUPID attribute to indicate the relationship between them. If the transfer had consisted of more than one bundle, each set of unpacked files would have its own GROUPID.&lt;br /&gt;
*Three dmdSecs have been generated:&lt;br /&gt;
**dmdSec_1, consisting of a small number of study-level DDI terms&lt;br /&gt;
**dmdSec_2, consisting of an mdRef to the JSON file&lt;br /&gt;
**dmdSec_3, consisting of an mdRef to the DDI XML file&lt;br /&gt;
*In the structMap, dmdSec_1 and dmdSec_2 are linked to the study as a whole, while dmdSec_3 is linked to the TAB file. The endnote and ris files have not been made into dmdSecs because they contain small subsets of metadata which are already captured in dmdSec_1 and the DDI xml file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:METS1G.png|900px|thumb|center]]&lt;br /&gt;
[[File:METS2G.png|900px|thumb|center]]&lt;br /&gt;
[[File:METS3G.png|900px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Metadata sources for METS file&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width:15%&amp;quot;|'''METS element'''&lt;br /&gt;
!style=&amp;quot;width:25%&amp;quot;|'''Information source'''&lt;br /&gt;
!style=&amp;quot;width:40%&amp;quot;|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|ddi:titl&lt;br /&gt;
|json: citation/typeName: &amp;quot;title&amp;quot;, value: [value]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:IDNo&lt;br /&gt;
|json: authority, identifier&lt;br /&gt;
|json example: &amp;quot;authority&amp;quot;: &amp;quot;10.5072/FK2/&amp;quot;, &amp;quot;identifier&amp;quot;: &amp;quot;0MOPJM&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|ddi:IDNo agency attribute&lt;br /&gt;
|json: protocol&lt;br /&gt;
|json example: &amp;quot;protocol&amp;quot;: &amp;quot;doi&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|ddi:AuthEntity&lt;br /&gt;
|json: citation/typeName: &amp;quot;authorName&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:distrbtr&lt;br /&gt;
|Config setting in ingest tool&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:version date attribute&lt;br /&gt;
|json: &amp;quot;releaseTime&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:version type attribute&lt;br /&gt;
|json: &amp;quot;versionState&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:version&lt;br /&gt;
|json: &amp;quot;versionNumber&amp;quot;, &amp;quot;versionMinorNumber&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ddi:restrctn&lt;br /&gt;
|json: &amp;quot;termsOfUse&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|fileGrp USE=&amp;quot;original&amp;quot;&lt;br /&gt;
|json: datafile&lt;br /&gt;
|Each non-tabular data file is listed as a datafile in the files section. Each TAB file derived by Dataverse for uploaded tabular file formats is also listed as a datafile, with the original file uploaded by the researcher indicated by &amp;quot;originalFileFormat&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|fileGrp USE=&amp;quot;derivative&amp;quot;&lt;br /&gt;
|All files that are included in a bundle, except for the original file and the metadata files (see below).&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|fileGrp USE=&amp;quot;metadata&amp;quot;&lt;br /&gt;
|Any files with .json or .ris extension, any -ddi.xml files and -endnote.xml files&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CHECKSUM&lt;br /&gt;
|json: datafile/&amp;quot;md5&amp;quot;: [value]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CHECKSUMTYPE&lt;br /&gt;
|json: datafile/&amp;quot;md5&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GROUPID&lt;br /&gt;
|Generated by ingest tool. Each file unpacked from a bundle is given the same group id.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AIP METS file ==&lt;br /&gt;
&lt;br /&gt;
=== Basic METS file structure ===&lt;br /&gt;
&lt;br /&gt;
The Archival Information Package (AIP) METS file will follow the basic structure for a standard Archivematica AIP METS file described at [[METS]]. A new fileGrp USE=&amp;quot;derivative&amp;quot; will be added to indicate TAB, RData and other derivatives generated by Dataverse for uploaded tabular data format files.&lt;br /&gt;
&lt;br /&gt;
=== dmdSecs in AIP METS file ===&lt;br /&gt;
&lt;br /&gt;
The dmdSecs in the transfer METS file will be copied over to the AIP METS file.&lt;br /&gt;
&lt;br /&gt;
=== Additions to PREMIS for derivative files ===&lt;br /&gt;
&lt;br /&gt;
In the PREMIS Object entity, relationships between original and derivative tabular format files from Dataverse will be described using PREMIS relationship semantic units. A PREMIS derivation event will be added to indicate the derivative file was generated from the original file, and a Dataverse Agent will be added to indicate the Event were carried out by Dataverse prior to ingest, rather than by Archivematica. &lt;br /&gt;
&lt;br /&gt;
'''Note''' We originally considered adding a creation event for the derivative files as well, but decided that it's not necessary as the event can be inferred from the derivation event and the PREMIS object relationships.&lt;br /&gt;
&lt;br /&gt;
'''Note''' &amp;quot;Derivation&amp;quot; is not an event type on the Library of Congress controlled vocabulary list at http://id.loc.gov/vocabulary/preservation/eventType.html. However, we have submitted it as a proposed new term (November 2015) at http://premisimplementers.pbworks.com/w/page/102413902/Preservation%20Events%20Controlled%20Vocabulary - a list of new terms that is being considered by the PREMIS Editorial Committee.&lt;br /&gt;
&lt;br /&gt;
'''Update''' ''April 2018'': The most recently available Event Type Controlled List (June 2017) does not yet have derivation as a controlled type, https://www.loc.gov/standards/premis/v3/preservation-events.pdf&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Original SPSS SAV file&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
&amp;lt;premis:relationship&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relationshipType&amp;gt;derivation&amp;lt;/premis:relationshipType&amp;gt;&lt;br /&gt;
    &amp;lt;premis:relationshipSubType&amp;gt;is source of&amp;lt;/premis:relationshipSubType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relatedObjectIdentification&amp;gt;                  &lt;br /&gt;
    &amp;lt;premis:relatedObjectIdentifierType&amp;gt;UUID&amp;lt;/premis:relatedObjectIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relatedObjectIdentifierValue&amp;gt;[TAB file UUID]&amp;lt;/premis:relatedObjectIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;premis:relationship&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;premis:eventIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventIdentifierType&amp;gt;UUID&amp;lt;/premis:eventIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventIdentifierValue&amp;gt;[Event UUID assigned by Archivematica]&amp;lt;/premis:eventIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:eventIdentifier&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventType&amp;gt;derivation&amp;lt;/premis:eventType&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventDateTime&amp;gt;2015-08-21&amp;lt;/premis:eventDateTime&amp;gt;&lt;br /&gt;
&amp;lt;premis:linkingAgentIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:linkingAgentIdentifierType&amp;gt;URI&amp;lt;/premis:linkingAgentIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:linkingAgentIdentifierValue&amp;gt;http://dataverse.scholarsportal.info/dvn/&lt;br /&gt;
&amp;lt;/premis:linkingAgentIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:linkingAgentIdentifier&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;premis:agentIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:agentIdentifierType&amp;gt;URI&amp;lt;/premis:agentIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:agentIdentifierValue&amp;gt;http://dataverse.scholarsportal.info/dvn/&amp;lt;/premis:agentIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:agentIdentifier&amp;gt;&lt;br /&gt;
&amp;lt;premis:agentName&amp;gt;SP Dataverse Network&amp;lt;/premis:agentName&amp;gt;&lt;br /&gt;
&amp;lt;premis:agentType&amp;gt;organization&amp;lt;/premis:agentType&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Derivative TAB file&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
&amp;lt;premis:relationship&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relationshipType&amp;gt;derivation&amp;lt;/premis:relationshipType&amp;gt;&lt;br /&gt;
    &amp;lt;premis:relationshipSubType&amp;gt;has source&amp;lt;/premis:relationshipSubType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relatedObjectIdentification&amp;gt;                  &lt;br /&gt;
    &amp;lt;premis:relatedObjectIdentifierType&amp;gt;UUID&amp;lt;/premis:relatedObjectIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:relatedObjectIdentifierValue&amp;gt;[SPSS SAV file UUID]&amp;lt;/premis:relatedObjectIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;premis:relationship&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fixity check for checksums received from Dataverse ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventIdentifierType&amp;gt;UUID&amp;lt;/premis:eventIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventIdentifierValue&amp;gt;[Event UUID assigned by Archivematica]&amp;lt;/premis:eventIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:eventIdentifier&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventType&amp;gt;fixity check&amp;lt;/premis:eventType&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventDateTime&amp;gt;2015-08-21&amp;lt;/premis:eventDateTime&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventDetail&amp;gt;program=&amp;quot;python&amp;quot;; module=&amp;quot;hashlib.sha256()&amp;quot;&amp;lt;/premis:eventDetail&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventOutcomeInformation&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventOutcome&amp;gt;Pass&amp;lt;/premis:EventOutcome&amp;gt;&lt;br /&gt;
  &amp;lt;premis:eventOutcomeDetail&amp;gt;&lt;br /&gt;
    &amp;lt;premis:eventOutcomeDetailNote&amp;gt;Dataverse checksum 91b65277959ec273763d28ef002e83a6b3fba57c7a3[...] &lt;br /&gt;
verified&amp;lt;/premis:eventOutcomeDetailNote&amp;gt;&lt;br /&gt;
  &amp;lt;/premis:eventOutcomeDetail&amp;gt;&lt;br /&gt;
&amp;lt;premis:eventOutcomeInformation&amp;gt;&lt;br /&gt;
&amp;lt;/premis:linkingAgentIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;premis:linkingAgentIdentifierType&amp;gt;preservation system&amp;lt;/premis:linkingAgentIdentifierType&amp;gt;&lt;br /&gt;
  &amp;lt;premis:linkingAgentIdentifierValue&amp;gt;Archivematica 1.4.1&amp;lt;/premis:linkingAgentIdentifierValue&amp;gt;&lt;br /&gt;
&amp;lt;/premis:linkingAgentIdentifier&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== AIP structure ==&lt;br /&gt;
&lt;br /&gt;
An Archival Information Package derived from a Dataverse ingest will have the same basic structure as a generic Archivematica AIP, described at [[AIP_structure]]. There are additional metadata files that are included in a Dataverse-derived AIP, and each zipped bundle that is included in the ingest will result in a separate directory in the AIP. The following is a sample structure.&lt;br /&gt;
&lt;br /&gt;
'''Bag structure'''&lt;br /&gt;
&lt;br /&gt;
The Archival Information Package (AIP) is packaged in the Library of Congress BagIt format, and may be stored compressed or uncompressed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Pacific_weather_patterns_study-dfb0b75d-6555-4e99-a8d8-95bed0f6303f.7z&lt;br /&gt;
├── bag-info.txt&lt;br /&gt;
├── bagit.txt &lt;br /&gt;
├── manifest-sha512.txt│   &lt;br /&gt;
├── tagmanifest-md5.txt&lt;br /&gt;
└── data [standard bag directory containing contents of the AIP]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''AIP structure'''&lt;br /&gt;
&lt;br /&gt;
All of the contents of the AIP reside within the data directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
├── data&lt;br /&gt;
│   ├── logs [log files generated during processing]&lt;br /&gt;
│   │   ├── fileFormatIdentification.log&lt;br /&gt;
│   │   └── transfers&lt;br /&gt;
│   │       └── Pacific_weather_patterns_study-1a0f309a-d3ec-43ee-bb48-a868cd5ca85c&lt;br /&gt;
│   │           └── logs&lt;br /&gt;
│   │               ├── extractContents.log&lt;br /&gt;
│   │               ├── fileFormatIdentification.log&lt;br /&gt;
│   │               └── filenameCleanup.log&lt;br /&gt;
│   ├── METS.dfb0b75d-6555-4e99-a8d8-95bed0f6303f.xml [the AIP METS file]&lt;br /&gt;
│   ├── objects [a directory containing the digital objects being preserved, plus their metadata]&lt;br /&gt;
│       ├── chelan_052.jpg [an original file from Dataverse]&lt;br /&gt;
│       ├── Weather_data.sav [an original file from Dataverse]&lt;br /&gt;
│       ├── Weather_data [a bundle retrieved from Dataverse]&lt;br /&gt;
│       │   ├── Weather_data.xml&lt;br /&gt;
│       │   ├── Weather_data.ris&lt;br /&gt;
│       │   ├── Weather_data-ddi.xml&lt;br /&gt;
│       │   └── Weather_data.tab [a TAB derivative file generated by Dataverse]&lt;br /&gt;
│       ├── metadata&lt;br /&gt;
│       │   └── transfers&lt;br /&gt;
│       │       └── Pacific_weather_patterns_study-1a0f309a-d3ec-43ee-bb48-a868cd5ca85c&lt;br /&gt;
│       │           ├── agents.json [information about the source of the data, used to populate the &lt;br /&gt;
PREMIS Dataverse agent in the AIP METS file]&lt;br /&gt;
│       │           ├── dataset.json [the full json file retrieved from Dataverse]&lt;br /&gt;
│       │           └── METS.xml [the METS file generated by the ingest script to prepare &lt;br /&gt;
Dataverse contents for ingest into Archivematica]&lt;br /&gt;
│       └── submissionDocumentation&lt;br /&gt;
│           └── transfer-58-1a0f309a-d3ec-43ee-bb48-a868cd5ca85c&lt;br /&gt;
│               └── METS.xml [a standard transfer METS file generated to list all contents of &lt;br /&gt;
an Archivematica transfer]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''AIP METS file structure'''&lt;br /&gt;
&lt;br /&gt;
The AIP METS file records information a bout the contents of the AIP, and indicates the relationships between the various files in the AIP. A sample AIP METS file would be structured as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
METS header&lt;br /&gt;
-Date METS file was created&lt;br /&gt;
METS dmdSec [descriptive metadata section]&lt;br /&gt;
-DDI XML metadata taken from the METS transfer file, as follows&lt;br /&gt;
--ddi:title&lt;br /&gt;
--ddi:IDno&lt;br /&gt;
--ddi:authEnty&lt;br /&gt;
--ddi:distrbtr&lt;br /&gt;
--ddi:version&lt;br /&gt;
--ddi:restrctn&lt;br /&gt;
METS dmdSec [descriptive metadata section]&lt;br /&gt;
-link to dataset.json&lt;br /&gt;
METS dmdSec [descriptive metadata section]&lt;br /&gt;
-link to DDI.XML file created for derivative file as part of bundle&lt;br /&gt;
METS amdSec [administrative metadata section, one for each original, derivative and normalized file in the AIP]&lt;br /&gt;
-techMD [technical metadata]&lt;br /&gt;
--PREMIS technical metadata about a digital object, including file format information and extracted metadata&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: derivation (for derived formats)&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event:ingestion&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: unpacking (for bundled files)&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: message digest calculation&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: virus check&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: format identification&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: fixity check (if file comes from Dataverse with a checksum)&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: normalization (if file is normalized to a preservation format during Archivematica processing)&lt;br /&gt;
-digiprovMD [digital provenance metadata]&lt;br /&gt;
--PREMIS event: creation (if file is a normalized preservation master generated during Archivematica processing)&lt;br /&gt;
-digiprovMD&lt;br /&gt;
--PREMIS agent: organization&lt;br /&gt;
-digiprovMD&lt;br /&gt;
--PREMIS agent: software&lt;br /&gt;
-digiprovMD&lt;br /&gt;
--PREMIS agent: Archivematica user&lt;br /&gt;
METS fileSec [file section]&lt;br /&gt;
-fileGrp USE=&amp;quot;original&amp;quot; [file group]&lt;br /&gt;
--original files uploaded to Dataverse&lt;br /&gt;
-fileGrp USE=&amp;quot;derivative&amp;quot;&lt;br /&gt;
--derivative tabular files generated by Dataverse&lt;br /&gt;
-fileGrp USE=&amp;quot;submissionDocumentation&amp;quot;&lt;br /&gt;
--METS.XML (standard Archivematica transfer METS file listing contents of transfer)&lt;br /&gt;
-fileGrp USE=&amp;quot;preservation&amp;quot;&lt;br /&gt;
--normalized preservation masters generated during Archivematica processing&lt;br /&gt;
-fileGrp USE=&amp;quot;metadata&amp;quot;&lt;br /&gt;
--dataset.json&lt;br /&gt;
--DDI.XML&lt;br /&gt;
--xcitation-endnote.xml&lt;br /&gt;
--xcitation-ris.ris&lt;br /&gt;
METS structMap [structural map]&lt;br /&gt;
-directory structure of the contents of the AIP&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Community/Camps/Baltimore2018&amp;diff=12409</id>
		<title>Community/Camps/Baltimore2018</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Community/Camps/Baltimore2018&amp;diff=12409"/>
		<updated>2018-04-15T21:13:45Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: background information for ross spencer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The lovely city of Baltimore, Maryland is the location of our next eastern seaboard Archivematica Camp, cohosted by the Sheridan Libraries at [https://www.library.jhu.edu/ Johns Hopkins University].&lt;br /&gt;
&lt;br /&gt;
Inspired by similar events like Hydra Camp, Islandora Camp and Fedora Camp, Archivematica Camp provides a space for anyone interested in or currently using Archivematica to come together, learn about the platform from other users, and share their experiences.&lt;br /&gt;
&lt;br /&gt;
== Dates and Location ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WHEN: Wednesday, June 20 to Friday, June 22, 2018'''&lt;br /&gt;
&lt;br /&gt;
'''WHERE: [https://goo.gl/maps/jagXhcVHK232 Brody Learning Commons Room 5015/5017,]''' Johns Hopkins University, Baltimore, MD.&lt;br /&gt;
&lt;br /&gt;
The Brody Learning Commons is connected to the Milton S. Eisenhower Library, the combination of which is generally known as &amp;quot;the Library.&amp;quot; Security guards will be advised that the conference is happening and can direct you to the room. Please bring photo ID.&lt;br /&gt;
&lt;br /&gt;
=== Getting there ===&lt;br /&gt;
&lt;br /&gt;
The Johns Hopkins University campus is located in north Baltimore, approximately 15 minutes by car and 30 minutes by transit from downtown Baltimore. Parking information is here: http://ts.jhu.edu/Parking/Visitors/&lt;br /&gt;
&lt;br /&gt;
Two free bus lines operate that drop riders off at the corner of 33rd Street and Charles Street, just in front of the Library. &lt;br /&gt;
&lt;br /&gt;
* JHU Shuttle: http://ts.jhu.edu/Shuttles/index.html&lt;br /&gt;
&lt;br /&gt;
* Charm City Circulator Purple Line: https://www.charmcitycirculator.com/route/purple&lt;br /&gt;
&lt;br /&gt;
Both of these bus services have apps that we'd recommend downloading to receive real-time updates about timetables. Both buses run roughly every 15 minutes.&lt;br /&gt;
&lt;br /&gt;
=== Accessibility ===&lt;br /&gt;
&lt;br /&gt;
The Brody Learning Commons is wheelchair-accessible from both entrances, but we'd recommend the south entrance from the service road, next to a building called Merrick Barn. Contact info@artefactual.com for more information and we'll put you in touch with JHU staff. We're happy to help!&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font size=&amp;quot;4&amp;quot;&amp;gt;[https://www.eventbrite.com/e/archivematica-camp-baltimore-registration-45045169314 '''Register here!''']&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Registration will open on April 16.&lt;br /&gt;
&lt;br /&gt;
=== Full registration ===&lt;br /&gt;
&lt;br /&gt;
'''Early bird''': $400 USD, available until May 20th&lt;br /&gt;
&lt;br /&gt;
'''Full price''': $450 USD, available until June 17th (or we sell out)&lt;br /&gt;
&lt;br /&gt;
Full registration gets you three full days of training, discussion, and deep dive sessions into related topics like METS visualization and preservation planning, taught by experienced Archivematica users and developers! Full registration also includes coffee and tea breaks for all three days and free food at the group social event on Wednesday night.&lt;br /&gt;
&lt;br /&gt;
=== Day 1 only ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$150 USD - available from May 20th until space is filled&lt;br /&gt;
&lt;br /&gt;
On Day 1 of the camp, we'll focus on basic Archivematica knowledge - what it is, what it does, and how to preserve simple data using common workflows. This is a great opportunity for those who want to get a taste of what Archivematica can do, and don't need the intensive 3-day experience. The 1-day registration includes coffee and tea breaks as well as free food at the group social event on Wednesday night.&lt;br /&gt;
&lt;br /&gt;
Note that we won't know how many one-day registrations we can accommodate until we know how many full registrants don't intend to attend Day 1. It's a bit complex for us to manage, so please be patient! If you really want to attend Day 1 only, please email us at info@artefactual.com with the subject line &amp;quot;Archivematica Camp Baltimore&amp;quot; and let us know - we'll make sure you're notified before tickets go on sale.&lt;br /&gt;
&lt;br /&gt;
==Know before you go==&lt;br /&gt;
&lt;br /&gt;
'''Digital preservation knowledge expectations'''&lt;br /&gt;
&lt;br /&gt;
If you've registered because you are curious about Archivematica but not sure what a SIP, DIP, or AIP is, you might want to do some basic digital preservation reading before Day 1. We recommend Ashley Blewer's [http://training.ashleyblewer.com/presentations/oais.html OAIS slidedeck] as a good starting place to learn about the OAIS reference model, on which Archivematica is based. If you want to dive deeper, there are a lot of OAIS and digital preservation primers out there! &lt;br /&gt;
&lt;br /&gt;
'''Bring a laptop'''&lt;br /&gt;
&lt;br /&gt;
We have hands-on sessions planned and Archivematica pipelines ready for learning. You may want to set up your own pipeline using vagrant and VirtualBox - this isn't required, but if you're keen then more power to you! You'll find instructions to do that [https://www.archivematica.org/en/docs/archivematica-1.7/getting-started/quick-start/quick-start/#quick-start-install here] (please do this before you arrive at camp!).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Food'''&lt;br /&gt;
&lt;br /&gt;
Coffee and tea breaks will be catered. However, the rooms where we're hosting the camp do not permit food, so only beverages will be provided. There is a cafe two floors up from the training rooms where you can grab a snack.&lt;br /&gt;
&lt;br /&gt;
As the campus is within an easy walking distance of many restaurants, cafes, and food courts, we decided to keep registration costs lower by not catering in lunches. We'll provide plenty of time for you to seek out nourishment, and have provided a list of nearby dining options below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Code of conduct'''&lt;br /&gt;
&lt;br /&gt;
We are committed to providing a welcoming and positive experience for everyone, whether you are in a session, online, or in a social setting. This means that Archivematica Camp Amsterdam is governed by a Code of Conduct, which you can read at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
'''Questions or concerns?'''&lt;br /&gt;
&lt;br /&gt;
Please email us at info@artefactual.com with &amp;quot;Archivematica Camp Baltimore&amp;quot; in the subject line and we'll get back to you as soon as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Camp staff ==&lt;br /&gt;
&lt;br /&gt;
'''Tim Walsh''' is our amazing community counsellor for this camp! Community counsellors are experienced Archivematica users who have a proven track record of working with the software in innovative ways and engaging with the Archivematica community. Tim has worked with Archivematica since 2015 and lead the effort of implementing a largely automated multi-pipeline Archivematica setup at the Canadian Centre for Architecture. Tim is also the developer of METSFlask, a web application for exploring the contents of Archivematica METS files. He'll primarily be talking about his practical experience of using Automation Tools to automate transfer and ingest as well as visualization and post-ingest use of METS files, but is happy to discuss anything related to Archivematica.&lt;br /&gt;
&lt;br /&gt;
'''Sara Allain''' started working at Artefactual on both the AtoM and Archivematica projects in 2016, doing requirements analysis, user documentation, QA testing and community support. Prior to her work at Artefactual Sara worked in academic libraries as an archivist and/or librarian, tackling wide-ranging subjects like archival description, data migration, Islandora implementation, digitization management, and library communications. She'll be teaching introductory Archivematica, preservation planning, and probably several other bits and pieces along the way.&lt;br /&gt;
&lt;br /&gt;
'''Ross Spencer''' is a software developer for Artefactual Systems Inc. Focused primarily on the Archivematica project, Ross has a background in digital preservation research and analysis. Having previously worked for Archives New Zealand, and before then, The National Archives, UK, he has experience with the unique requirements a government workflow. Ross also has a much broader interest in all things digital preservation, archives, and code. Ross will be discussing APIs, optimisation, contributing code, and issues! And much much more.  &lt;br /&gt;
&lt;br /&gt;
'''Evelyn McLellan'''&lt;br /&gt;
&lt;br /&gt;
== Schedule (subject to change) ==&lt;br /&gt;
&lt;br /&gt;
=== Wednesday, June 20: Day One (optional) - Archivematica for Beginners ===&lt;br /&gt;
&lt;br /&gt;
Archivematica Camp kicks off with an optional day of training aimed at attendees who are new to Archivematica. We'll introduce the project, go over the basics of technical architecture, and look at the core functionality. The goal of this day is to ensure that everyone is on solid ground before we dive into more complex discussions. Note: participants are welcome to join the morning session, afternoon session, or both sessions as they wish. Participants may also wish to join the Camp on Day Two.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff;&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 90%; background-color: #93c9ff&amp;quot;|'''Streams 1 &amp;amp; 2'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:00am - 10:15pm&lt;br /&gt;
|'''Module 1: Archivematica in the digital preservation landscape'''&lt;br /&gt;
Topics covered include: where does Archivematica fit into the digital preservation landscape, what does Archivematica promise to do, what doesn't Archivematica do&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|10:15am - 10:30pm&lt;br /&gt;
|'''Coffee break'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|10:30am-12:00pm&lt;br /&gt;
|'''Module 2: How does Archivematica actually work?'''&lt;br /&gt;
Topics covered include: Archivematica's conceptual model, packages (transfers, bags, SIPs, AIPs, DIPs), microservices as implementations of preservation actions, workflows, storage spaces (how the storage service works and how to get at your content)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:00pm - 1:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Lunch'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|1:00pm - 3:00pm&lt;br /&gt;
|'''Module 3: Archivematica's core functionality'''&lt;br /&gt;
Topics covered include: understanding Archivematica's dashboard, including the Transfer tab, Ingest tab, Administration tab, and Preservation planning tab plus a first look at an AIP produced by Archivematica.  This afternoon session includes hands-on exercises.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|3:00pm - 3:15pm&lt;br /&gt;
|'''Coffee break'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|3:15pm - 4:00pm&lt;br /&gt;
|'''Module 3: Archivematica's core functionality'''&lt;br /&gt;
Continuation of Module 3.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|5:30pm - 8:30pm&lt;br /&gt;
|'''Group social event'''&lt;br /&gt;
Happy hour and food at [http://www.peabodyheightsbrewery.com/ Peabody Heights Brewery]! Peabody Heights Brewery is a 15 minute walk from the Library. We'll be ordering in food (pizza? tacos? we haven't decided yet!) and we'll make sure there are nonalcoholic alternatives as well. If the weather is nice, the brewery has a large beer garden where we can relax, chat, and gear up for two more days of learning.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Thursday, June 21: Day Two ===&lt;br /&gt;
&lt;br /&gt;
Days Two and Three are divided into two streams. Stream 1 is intended for front-end users who are responsible for day-to-day operations. Stream 2 is intended for back-end users who are responsible for development and maintenance of the software. Streams occasionally converge, and we encourage attendees to choose the session that most interests them - feel free to move around!&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Stream 1'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Stream 2'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:00am - 9:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Arrival and registration'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|9:30am - 10:45am&lt;br /&gt;
|'''Module 4: Building on core: Archivematica's specialized workflows'''&lt;br /&gt;
Topics covered include transfers of zipped files, disk images, metadata.csv, manual normalization, and a look at automation tools.  This module includes hands-on exercises.&lt;br /&gt;
|'''Module 4: Supporting Archivematica workflows'''&lt;br /&gt;
Topics covered include how to install automation tools, REST APIs, logs, maintenance, and upgrades.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|10:45am - 11:00am&lt;br /&gt;
|'''Coffee break'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|11:00am - 12:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Community profile: Practical experience with automation tools (Tim Walsh)'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:00pm - 1:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Lunch'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|1:00pm - 2:45pm&lt;br /&gt;
|'''Module 5: Archivematica's non-core functionality'''&lt;br /&gt;
Topics covered include a look at the Backlog and Appraisal tab, AIP reingest, AIP encryption, transcription, and using Mediaconch.  This module includes hands-on exercises.&lt;br /&gt;
|'''Module 5: Understanding Archivematica's logs and peformance evaluation'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|2:45pm - 3:00pm&lt;br /&gt;
|'''Coffee break'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|3:00pm-4:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Community profile: Johns Hopkins University'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|4:00pm - 5:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| '''Agenda adjustment for Day 3'''&lt;br /&gt;
What do you want to talk about tomorrow? Also, wrap-up.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|6:00pm - late&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| '''Small group dinners'''&lt;br /&gt;
We'll create a sign-up sheet containing a list of restaurants nearby. Campers can sign up to attend dinner at whichever restaurant piques their interest! This is a great way to meet new people and get out on the town. We ask that you limit the group size to 4-6 people, so that the restaurants aren't overwhelmed! &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Friday, June 22: Day Three ===&lt;br /&gt;
&lt;br /&gt;
Day Three is a bit more loosely-structured than Days One and Two. Based on camper interest, the schedule may be adjusted to accommodate new topics. Plus, there's plenty of time to talk about how Archivematica works - or could work - in your institution.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse; &amp;quot;&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 10%; background-color: #93c9ff&amp;quot;|'''Time'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Stream 1'''&lt;br /&gt;
|style=&amp;quot;white-space: nowrap; width: 45%; background-color: #93c9ff&amp;quot;|'''Stream 2'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|9:00am - 9:30am&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;white-space: nowrap; width: 90%;&amp;quot;|'''How this day is going to unfold'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|9:30pm - 10:30pm&lt;br /&gt;
|'''Module 6: AIPs for Archivists''' &lt;br /&gt;
Topics covered include how the AIP is structured, and a close look at the METS file&lt;br /&gt;
|'''Module 6: AIPs for developers/systems administrators'''&lt;br /&gt;
Topics covered include how the METS file is written from the database&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|10:30-12:00&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Community topics'''&lt;br /&gt;
Based on topics raised from campers at registration and as the camp has progressed. Led by Artefactual staff with lots of input from the community.  Breakout into 2 rooms as needed. Informal and fun!&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|12:00pm - 1:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Lunch&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|1:00pm - 3:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Module 7: Implementation roundtable'''&lt;br /&gt;
Discussion of various ways Archivematica can be implemented. Campers are invited to share their particular Archivematica implementations, real or imagined, in 10-15 minute informal talks. We'll post a sign-up list on the first day of camp.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;white-space: nowrap;&amp;quot;|3:00pm-4:00pm&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|'''Module 8: Archivematica in the community'''&lt;br /&gt;
Topics covered include how the code is written, collaborative digital preservation, and a look at the Archivematica roadmap.&lt;br /&gt;
Wrap-up and safe travels!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Local Arrangements ==&lt;br /&gt;
&lt;br /&gt;
=== Hotels ===&lt;br /&gt;
&lt;br /&gt;
As there are few hotel options within walking distance of Johns Hopkins, we've secured room blocks at two hotels: the Inn at the Colonnade and the Radisson at Cross Keys.&lt;br /&gt;
&lt;br /&gt;
====Inn at The Colonnade Baltimore====&lt;br /&gt;
&lt;br /&gt;
[https://www.google.ca/maps/dir/Inn+at+The+Colonnade+Baltimore+-+A+DoubleTree+by+Hilton+Hotel,+West+University+Parkway,+Baltimore,+MD,+USA/Milton+S+Eisenhower+Library,+North+Charles+Street,+Baltimore,+MD,+USA/@39.3313599,-76.6213098,17z/data=!3m2!4b1!5s0x89c804dff3aee8c7:0x5030d558bfc93488!4m13!4m12!1m5!1m1!1s0x89c80521e8b11795:0x9d5a52f5ed8dfc78!2m2!1d-76.619735!2d39.334029!1m5!1m1!1s0x89c804dfa8c04b1f:0xf0f3792b68b355da!2m2!1d-76.619425!2d39.329053 4 West University Parkway, Baltimore, Maryland 21218-2306]&lt;br /&gt;
&lt;br /&gt;
The Inn at the Colonnade is just across the street from Johns Hopkins campus, an 8 minute walk to the Milton S. Eisenhower Library.&lt;br /&gt;
&lt;br /&gt;
To book a room at the Inn at the Colonnade, use [http://doubletree.hilton.com/en/dt/groups/personalized/B/BWICUDT-AMC-20180619/index.jhtml?WT.mc_id=POG this link].&lt;br /&gt;
&lt;br /&gt;
====Radisson at Cross Keys====&lt;br /&gt;
&lt;br /&gt;
[https://www.google.ca/maps/dir/Radisson+Hotel+at+Cross+Keys,+Baltimore,+5100+Falls+Rd,+Baltimore,+MD+21210,+USA/Johns+Hopkins+University,+Baltimore,+MD,+USA/@39.3371967,-76.6496263,14z/data=!3m1!4b1!4m13!4m12!1m5!1m1!1s0x89c81ab45a596f8d:0x73744f706126b216!2m2!1d-76.6467539!2d39.3551217!1m5!1m1!1s0x89c804df8502f88d:0x303d58494fa04c66!2m2!1d-76.6205177!2d39.3299013 5100 Falls Rd, Baltimore, MD 21210]&lt;br /&gt;
&lt;br /&gt;
The Radisson at Cross Keys is a 10 minute drive or 30 minute walk/transit trip to the Milton S. Eisenhower Library (20 minutes walking, 10 minutes on the bus).&lt;br /&gt;
&lt;br /&gt;
To book a room at the Radisson at Cross Keys, follow these steps: &lt;br /&gt;
&lt;br /&gt;
#Go to [https://www.radisson.com/baltimore https://www.radisson.com/baltimore]&lt;br /&gt;
#Under Modify Search Select the dates you are checking in and checking out and click More Search Options&lt;br /&gt;
#Please enter in the Promotional Code box - '''JHUGRP'''&lt;br /&gt;
#Click Search Again&lt;br /&gt;
#Select the hotel (only your group’s name should appear) by selecting Book Now&lt;br /&gt;
#A Room Options screen will appear. Please select the bed type that you are requesting which is located at the bottom of the page. Once you select the bed type you are requesting you are then prompted to your reservation profile screen where you would input your contact and payment information.&lt;br /&gt;
&lt;br /&gt;
If you have questions, please contact the hotel directly by calling Reservations at 1-800-333-3333 and say you are making a reservation for &amp;quot;The Archives Matika Group&amp;quot; (yes, we're aware this is incorrect!) &amp;amp; the dates you will be staying at the hotel.&lt;br /&gt;
&lt;br /&gt;
====AirBnB====&lt;br /&gt;
&lt;br /&gt;
Any AirBnBs within a 15 walk from campus in all directions are perfectly safe.&lt;br /&gt;
&lt;br /&gt;
The city has two free bus lines (http://ts.jhu.edu/Shuttles/TransLoc/ and https://www.charmcitycirculator.com/route/purple) so you can also stay anywhere between campus and the Inner Harbor and get here within 30 minutes.&lt;br /&gt;
&lt;br /&gt;
=== Food &amp;amp; drink ===&lt;br /&gt;
&lt;br /&gt;
All are within walking distance of the Library.&lt;br /&gt;
&lt;br /&gt;
*[https://r.housebaltimore.com/ R House] - Fancy food court and bar&lt;br /&gt;
&lt;br /&gt;
*[http://www.partsandlaborbutchery.com/ Parts and Labor] - “Everything but the snout”-style restaurant for meat eaters&lt;br /&gt;
&lt;br /&gt;
*[http://places.singleplatform.com/one-world-cafe/menu One World] - Unpretentious vegetarian-ish restaurant dating back to before vegetarian was hip&lt;br /&gt;
&lt;br /&gt;
*[http://www.sweet27.com/ Sweet 27] - Amusing variety of cuisines, but good vegan bakery and Indian food&lt;br /&gt;
&lt;br /&gt;
*[http://www.tambersrestaurant.com/ Tamber’s] - Diner and Indian — a very Baltimore mash-up&lt;br /&gt;
&lt;br /&gt;
*[http://www.charlesvillagepub.net/index.html Charles Village Pub] - Venerable Baltimore/Charles Village dive with straightforward grill fare&lt;br /&gt;
&lt;br /&gt;
*[https://www.eatthb.com/ Towson Hot Bagel] - Omelettes, sandwiches, and (of course) bagels&lt;br /&gt;
&lt;br /&gt;
*[http://www.pekopekoramen.com/ Peko Peko Ramen] - Chicken broth ramen, rice bowls, mochi ice cream&lt;br /&gt;
&lt;br /&gt;
*[https://www.chipotle.com/ Chipotle] - Burritos and the like&lt;br /&gt;
&lt;br /&gt;
*[http://eddiesmarket.com/ Eddies Market of Charles Village] - Supermarket with a deli in the back&lt;br /&gt;
&lt;br /&gt;
==Code of Conduct==&lt;br /&gt;
&lt;br /&gt;
The Archivematica community is dedicated to providing a welcoming and positive experience for everyone, whether they are in a formal session or a social setting related to an Archivematica event, or are taking part in activities online. Archivematica community participants come from all over the world and bring with them a wide variety of professional, personal and social backgrounds; whatever these may be, we treat colleagues with dignity and respect. We are sensitive to the fact that the international nature of the Archivematica community means that we span many different social norms around language and behaviour and we strive to conduct ourselves in ways that are unlikely to cause offense. In the event that someone’s conduct is causing offense or distress, the Archivematica Camp has a detailed Anti-Harassment Policy, details below, which can be applied to address the problem.&lt;br /&gt;
&lt;br /&gt;
The first step in dealing with any serious misconduct is to contact a member of the organizing group, or a counsellor at an Archivematica Camp (please see counsellors, above). These people will be made known before and during any Archivematica Camp event.&lt;br /&gt;
&lt;br /&gt;
'''Anti-Harassment Policy'''&lt;br /&gt;
&lt;br /&gt;
The Archivematica community is dedicated to providing a harassment-free conference/camp experience for everyone. If you have been harassed, please consult this protocol for conflict resolution which makes clear how we can help.&lt;br /&gt;
&lt;br /&gt;
The Archivematica community has established the following policy to make it clear that we do not tolerate harassment in any form. Sexual or discriminatory language and imagery are not appropriate for any event venue, including talks, or any other communication channel used during the conference (such as social media).&lt;br /&gt;
&lt;br /&gt;
Harassment includes:&lt;br /&gt;
&lt;br /&gt;
* offensive verbal comments related to sex, gender, ethnicity, nationality, socioeconomic status, sexual orientation, disability, physical appearance, body size, age, race, religion;&lt;br /&gt;
* sexual or discriminatory images in public spaces;&lt;br /&gt;
* deliberate intimidation;&lt;br /&gt;
* stalking;&lt;br /&gt;
* harassing photography or recording;&lt;br /&gt;
* sustained disruption of talks or other events;&lt;br /&gt;
* inappropriate physical contact; and&lt;br /&gt;
* unwelcome sexual attention.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The lingua franca of Archivematica Camp is English; however, English may not be the native language of Archivematica Camp participants. Further, cultural norms around what may be considered obscene and offensive communication will vary among Archivematica Camp attendees. Campers are asked to please be mindful of the international character of Archivematica Camp, and to use respectful and clear language free of slang to facilitate communication.&lt;br /&gt;
&lt;br /&gt;
Participants asked to stop any harassing behavior are expected to comply immediately.&lt;br /&gt;
&lt;br /&gt;
If a participant engages in harassing behavior, event organizers and Archivematica representatives (or their designees) may take any action they deem appropriate, including warning the offender, expulsion from Archivematica Camp, or contacting a higher authority such as a representative from the offender’s institution.&lt;br /&gt;
&lt;br /&gt;
If a participant raises a concern relating to actions covered by this policy in good faith, there will be no retaliation for bringing forward their concern. Threatening or taking action against someone for invoking this policy or for participating in any related investigation will be considered a violation of this policy.&lt;br /&gt;
&lt;br /&gt;
Participants are expected to follow the anti-harassment policy at all Camp-related venues, Camp-related social events, and online communication channels.&lt;br /&gt;
&lt;br /&gt;
We expect attendees and speakers past and present to be respectful to each other, and we will deal with any incidents that arise, including on social media.&lt;br /&gt;
&lt;br /&gt;
We value your participation in the Archivematica community and your support in keeping the Archivematica community a safe, welcoming, and friendly space for fellow participants.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Acknowledgments'''&lt;br /&gt;
&lt;br /&gt;
This policy is based on the [http://www.pasignyc.org/#code-of-conduct-section PASIG Code of Conduct], portions of which were modified from the [http://or2016.net/code-of-conduct/ Open Repositories’ code of conduct], which was itself modified from [https://www.seattleattic.com/codeofconduct Seattle Attic’s code of conduct] and the [http://adainitiative.org/what-we-do/events/ada-initiative-event-anti-harassment-policy/ Ada Initiative’s event harassment policy].&lt;br /&gt;
&lt;br /&gt;
'''License'''&lt;br /&gt;
&lt;br /&gt;
This document is licensed under [https://creativecommons.org/licenses/by-sa/3.0/ Creative Commons BY-SA].&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=AIP_pointer_file&amp;diff=12310</id>
		<title>AIP pointer file</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=AIP_pointer_file&amp;diff=12310"/>
		<updated>2018-03-19T20:46:12Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Summary entry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pointer files have been used to help provide sustainable access to compressed AIPs since Archivematica 1.0. [https://groups.google.com/d/msg/archivematica/VPQGd4s7hI8/x3WFdqO9AQAJ [1]]. The documentation about them, below, is currently in progress.&lt;br /&gt;
&lt;br /&gt;
== Access == &lt;br /&gt;
&lt;br /&gt;
Accessing pointer files inside Archivematica can be done by navigating the Dashboard to '''Archival storage''' finding a suitable AIP, e.g. at time of writing a compressed AIP, and under '''Pointer file''' clicking '''View'''. Archivematica will make a call to the Storage Service API to return the file for that AIP.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.archivematica.org/Storage_Service_API#Get_pointer_file Storage Service API reference to return a Pointer File]&lt;br /&gt;
&lt;br /&gt;
== Developer Notes ==&lt;br /&gt;
&lt;br /&gt;
=== Location inside Storage Service ===&lt;br /&gt;
&lt;br /&gt;
Pointer file are stored in internal Storage Service directories, e.g. &lt;br /&gt;
&lt;br /&gt;
 /var/archivematica/storage_service/d5c3/3360/7b92/4a2f/9002/32f5/a143/daaf/pointer.d5c33360-7b92-4a2f-9002-32f5a143daaf.xml&lt;br /&gt;
&lt;br /&gt;
You can see where they are stored looking up the Storage Service database:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
select locations_location.uuid, &lt;br /&gt;
       locations_location.relative_path, &lt;br /&gt;
	   locations_location.description, &lt;br /&gt;
       locations_location.purpose&lt;br /&gt;
from locations_location&lt;br /&gt;
inner join locations_package &lt;br /&gt;
on locations_location.uuid = &lt;br /&gt;
   locations_package.pointer_file_location_id&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample Pointer Files ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.archivematica.org/Dataset_preservation#Sample_pointer.xml_file Sample XML Pointer File]&lt;br /&gt;
* [https://wiki.archivematica.org/LOCKSS_Integration#Sample_pointer_files LOCKSS Integration Pointer File]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://groups.google.com/d/msg/archivematica/VPQGd4s7hI8/x3WFdqO9AQAJ Justin Simpson on the structure and purpose of pointer files at Google Groups]&lt;br /&gt;
* [https://projects.artefactual.com/issues/5159 Feature #5159 The original tranche of work resulting in the implementation of pointer files]&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=AIP_pointer_file&amp;diff=12294</id>
		<title>AIP pointer file</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=AIP_pointer_file&amp;diff=12294"/>
		<updated>2018-03-12T03:48:30Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Ways of finding the pointer file&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentation in progress&lt;br /&gt;
&lt;br /&gt;
== Access == &lt;br /&gt;
&lt;br /&gt;
Accessing pointer files inside Archivematica can be done by navigating the Dashboard to '''Archival storage''' finding a suitable AIP, e.g. at time of writing a compressed AIP, and under '''Pointer file''' clicking '''View'''. Archivematica will make a call to the Storage Service API to return the file for that AIP.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.archivematica.org/Storage_Service_API#Get_pointer_file Storage Service API reference to return a Pointer File]&lt;br /&gt;
&lt;br /&gt;
== Developer Notes ==&lt;br /&gt;
&lt;br /&gt;
=== Location inside Storage Service ===&lt;br /&gt;
&lt;br /&gt;
Pointer file are stored in internal Storage Service directories, e.g. &lt;br /&gt;
&lt;br /&gt;
 /var/archivematica/storage_service/d5c3/3360/7b92/4a2f/9002/32f5/a143/daaf/pointer.d5c33360-7b92-4a2f-9002-32f5a143daaf.xml&lt;br /&gt;
&lt;br /&gt;
You can see where they are stored looking up the Storage Service database:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
select locations_location.uuid, &lt;br /&gt;
       locations_location.relative_path, &lt;br /&gt;
	   locations_location.description, &lt;br /&gt;
       locations_location.purpose&lt;br /&gt;
from locations_location&lt;br /&gt;
inner join locations_package &lt;br /&gt;
on locations_location.uuid = &lt;br /&gt;
   locations_package.pointer_file_location_id&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample Pointer Files ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.archivematica.org/Dataset_preservation#Sample_pointer.xml_file Sample XML Pointer File]&lt;br /&gt;
* [https://wiki.archivematica.org/LOCKSS_Integration#Sample_pointer_files LOCKSS Integration Pointer File]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://groups.google.com/d/msg/archivematica/VPQGd4s7hI8/x3WFdqO9AQAJ Justin Simpson on the structure and purpose of pointer files at Google Groups]&lt;br /&gt;
* [https://projects.artefactual.com/issues/5159 Feature #5159 The original tranche of work resulting in the implementation of pointer files]&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=AIP_pointer_file&amp;diff=12293</id>
		<title>AIP pointer file</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=AIP_pointer_file&amp;diff=12293"/>
		<updated>2018-03-12T02:25:57Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Wiki links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentation in progress&lt;br /&gt;
&lt;br /&gt;
== Samples ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.archivematica.org/Dataset_preservation#Sample_pointer.xml_file Sample XML Pointer File]&lt;br /&gt;
* [https://wiki.archivematica.org/LOCKSS_Integration#Sample_pointer_files LOCKSS Integration Pointer File]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://groups.google.com/d/msg/archivematica/VPQGd4s7hI8/x3WFdqO9AQAJ Justin Simpson on the structure and purpose of pointer files at Google Groups]&lt;br /&gt;
* [https://projects.artefactual.com/issues/5159 Feature #5159 The original tranche of work resulting in the implementation of pointer files]&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=AIP_pointer_file&amp;diff=12292</id>
		<title>AIP pointer file</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=AIP_pointer_file&amp;diff=12292"/>
		<updated>2018-03-12T02:17:00Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Redmine ticket for pointer files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentation in progress&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://groups.google.com/d/msg/archivematica/VPQGd4s7hI8/x3WFdqO9AQAJ Justin Simpson on the structure and purpose of pointer files at Google Groups]&lt;br /&gt;
* [https://projects.artefactual.com/issues/5159 Feature #5159 The original tranche of work resulting in the implementation of pointer files]&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=AIP_pointer_file&amp;diff=12291</id>
		<title>AIP pointer file</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=AIP_pointer_file&amp;diff=12291"/>
		<updated>2018-03-12T02:15:54Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentation in progress&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://groups.google.com/d/msg/archivematica/VPQGd4s7hI8/x3WFdqO9AQAJ Justin Simpson on the structure and purpose of pointer files at Google Groups]&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=AIP_pointer_file&amp;diff=12290</id>
		<title>AIP pointer file</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=AIP_pointer_file&amp;diff=12290"/>
		<updated>2018-03-12T02:15:38Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Adding external links to pointer files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentation in progress&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://groups.google.com/d/msg/archivematica/VPQGd4s7hI8/x3WFdqO9AQAJ link Justin Simpson on the structure and purpose of pointer files at Google Groups]&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Improvements/Avalon&amp;diff=12288</id>
		<title>Improvements/Avalon</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Improvements/Avalon&amp;diff=12288"/>
		<updated>2018-03-09T01:50:08Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will document potential areas of improvement in Archivematica that will allow for better workflows with [http://www.avalonmediasystem.org/ Avalon].&lt;br /&gt;
&lt;br /&gt;
== Project Thesis ==&lt;br /&gt;
&lt;br /&gt;
Artefactual and Avalon will seek to create:&lt;br /&gt;
&lt;br /&gt;
* support for activities such as file characterization and preservation metadata extraction: &lt;br /&gt;
** digitized and born-digital AV materials. &lt;br /&gt;
* Integration with Archivematica or its components into Avalon ingestion workflows to provide:&lt;br /&gt;
** preservation metadata &lt;br /&gt;
** better packaging for long-term digital preservation activities&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
=== In scope ===&lt;br /&gt;
&lt;br /&gt;
Two clear use-cases based on previous discussion (up to 8 March 2018), for which we can focus on and keep scope narrow. These are:&lt;br /&gt;
&lt;br /&gt;
*Avalon first&lt;br /&gt;
** Process in Avalon and then send the package to Archivematica to generate an AIP&lt;br /&gt;
&lt;br /&gt;
'''Questions'''&lt;br /&gt;
&lt;br /&gt;
- Do we ignore the Fedora metadata entirely?&lt;br /&gt;
- Do we transfer Fedora metadata as a digital object, but perform no special conversion mapping&lt;br /&gt;
- Out-of-scope: Mapping/cross-walk to try and see Fedora metadata mapped into Archivematica&lt;br /&gt;
&lt;br /&gt;
* AM first&lt;br /&gt;
** Collection of assets described in a batch manifest and they are processed and then picked up by Avalon&lt;br /&gt;
&lt;br /&gt;
Two useful phrasings, that could be considered nuances on these, that came from the same meeting:&lt;br /&gt;
&lt;br /&gt;
* ''As an user of Avalon send the output of a project to a repository and have institutional digital preservation policies applied to that collectionffor long-term preservation''&lt;br /&gt;
* ''As a preservation specialist, in a catastrophic scenario, be able to round-trip from AM back into an instance of Avalon''**&lt;br /&gt;
&lt;br /&gt;
**'''NB''' Recognised that there is no hard-requirement to round-trip back into Avalon from Archivematica, though it was noted that it would be possible to learn quite a lot.&lt;br /&gt;
&lt;br /&gt;
=== Out of scope ===&lt;br /&gt;
&lt;br /&gt;
'''Versioning'''&lt;br /&gt;
This is a very broad summary, but because of the potential for work to continue being completed on a 'unit' in Avalon, data will become out of date, and there may be a wish to see that updated in Archivematica. This is one example of where data might need updating or to be re-versioned. Others:&lt;br /&gt;
* AIP Update following updated in Avalon&lt;br /&gt;
* Data supplied as an asset to Avalon/Archivematica, e.g. VTT Subtitle Information, (addition of other languages/corrections, etc.)&lt;br /&gt;
* Other cases&lt;br /&gt;
&lt;br /&gt;
== What do we need? ==&lt;br /&gt;
&lt;br /&gt;
* Northwest to work with Sarah to discuss use-cases&lt;br /&gt;
* Do we need more sample files/batches of data?&lt;br /&gt;
* Understand the current transfer issue being experienced with the initial setup - In progress. &lt;br /&gt;
&lt;br /&gt;
== Questions ==&lt;br /&gt;
&lt;br /&gt;
=== METS ===&lt;br /&gt;
&lt;br /&gt;
* Is it required that the metadata in the batch ingest manifest is represented in the AIP METS file (in dmdSecs for example?)&lt;br /&gt;
* Will users have a need to populate the batch ingest manifest with metadata entered into Archivematica?&lt;br /&gt;
** Descriptive metadata?&lt;br /&gt;
** Rights metadata?&lt;br /&gt;
* When Avalon is being used to disseminate different quality files, which file(s) should be stored in the AIP?&lt;br /&gt;
** How should mulitple versions be modeled in the METS?&lt;br /&gt;
* Should the structure of files be modeled in the METS when structure XML files are included?&lt;br /&gt;
** Or is describing the presence and use of structure files sufficient?&lt;br /&gt;
* How should the presence of caption files be noted in the METS?&lt;br /&gt;
&lt;br /&gt;
=== Exploration of Archivematica ===&lt;br /&gt;
&lt;br /&gt;
* Progress and first impressions&lt;br /&gt;
* Ingest progress&lt;br /&gt;
* Exploration of the AIP generated from Avalon Batch Packages&lt;br /&gt;
* Immediate observations:&lt;br /&gt;
** Workflow questions&lt;br /&gt;
** Perceived or real gaps&lt;br /&gt;
** Questions Artefactual can answer about what Archivematica is doing/should be doing&lt;br /&gt;
* Relationship between Archivematica and Avalon, e.g position in workflow, pre-Avalon? post-Avalon? Something else?&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Improvements/Avalon&amp;diff=12287</id>
		<title>Improvements/Avalon</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Improvements/Avalon&amp;diff=12287"/>
		<updated>2018-03-09T01:38:35Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will document potential areas of improvement in Archivematica that will allow for better workflows with [http://www.avalonmediasystem.org/ Avalon].&lt;br /&gt;
&lt;br /&gt;
== Project Thesis ==&lt;br /&gt;
&lt;br /&gt;
Artefactual and Avalon will seek to create:&lt;br /&gt;
&lt;br /&gt;
* support for activities such as file characterization and preservation metadata extraction: &lt;br /&gt;
** digitized and born-digital AV materials. &lt;br /&gt;
* Integration with Archivematica or its components into Avalon ingestion workflows to provide:&lt;br /&gt;
** preservation metadata &lt;br /&gt;
** better packaging for long-term digital preservation activities&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
=== In scope ===&lt;br /&gt;
&lt;br /&gt;
Two clear use-cases based on previous discussion (up to 8 March 2018), for which we can focus on and keep scope narrow. These are:&lt;br /&gt;
&lt;br /&gt;
*Avalon first&lt;br /&gt;
** Process in Avalon and then send the package to Archivematica to generate an AIP&lt;br /&gt;
&lt;br /&gt;
'''Questions'''&lt;br /&gt;
&lt;br /&gt;
- Do we ignore the Fedora metadata entirely?&lt;br /&gt;
- Do we transfer Fedora metadata as a digital object, but perform no special conversion mapping&lt;br /&gt;
- Out-of-scope: Mapping/cross-walk to try and see Fedora metadata mapped into Archivematica&lt;br /&gt;
&lt;br /&gt;
* AM first&lt;br /&gt;
** Collection of assets described in a batch manifest and they are processed and then picked up by Avalon&lt;br /&gt;
&lt;br /&gt;
Two useful phrasings, that could be considered nuances on these, that came from the same meeting:&lt;br /&gt;
&lt;br /&gt;
* ''As an user of Avalon send the output of a project to a repository and have institutional digital preservation policies applied to that collectionffor long-term preservation''&lt;br /&gt;
* ''As a preservation specialist, in a catastrophic scenario, be able to round-trip from AM back into an instance of Avalon''**&lt;br /&gt;
&lt;br /&gt;
**'''NB''' Recognised that there is no hard-requirement to round-trip back into Avalon from Archivematica, though it was noted that it would be possible to learn quite a lot.&lt;br /&gt;
&lt;br /&gt;
=== Out of scope ===&lt;br /&gt;
&lt;br /&gt;
'''Versioning'''&lt;br /&gt;
This is a very broad summary, but because of the potential for work to continue being completed on a 'unit' in Avalon, data will become out of date, and there may be a wish to see that updated in Archivematica. This is one example of where data might need updating or to be re-versioned. Others:&lt;br /&gt;
* AIP Update following updated in Avalon&lt;br /&gt;
* Data supplied as an asset to Avalon/Archivematica, e.g. VTT Subtitle Information, (addition of other languages/corrections, etc.)&lt;br /&gt;
* Other cases&lt;br /&gt;
&lt;br /&gt;
== What do we need? ==&lt;br /&gt;
&lt;br /&gt;
- Northwest to work with Sarah to discuss use-cases&lt;br /&gt;
- Do we need more sample files/batches of data?&lt;br /&gt;
- Understand the current transfer issue being experienced with the initial setup - In progress. &lt;br /&gt;
&lt;br /&gt;
== Questions ==&lt;br /&gt;
&lt;br /&gt;
=== METS ===&lt;br /&gt;
&lt;br /&gt;
* Is it required that the metadata in the batch ingest manifest is represented in the AIP METS file (in dmdSecs for example?)&lt;br /&gt;
* Will users have a need to populate the batch ingest manifest with metadata entered into Archivematica?&lt;br /&gt;
** Descriptive metadata?&lt;br /&gt;
** Rights metadata?&lt;br /&gt;
* When Avalon is being used to disseminate different quality files, which file(s) should be stored in the AIP?&lt;br /&gt;
** How should mulitple versions be modeled in the METS?&lt;br /&gt;
* Should the structure of files be modeled in the METS when structure XML files are included?&lt;br /&gt;
** Or is describing the presence and use of structure files sufficient?&lt;br /&gt;
* How should the presence of caption files be noted in the METS?&lt;br /&gt;
&lt;br /&gt;
=== Exploration of Archivematica ===&lt;br /&gt;
&lt;br /&gt;
* Progress and first impressions&lt;br /&gt;
* Ingest progress&lt;br /&gt;
* Exploration of the AIP generated from Avalon Batch Packages&lt;br /&gt;
* Immediate observations:&lt;br /&gt;
** Workflow questions&lt;br /&gt;
** Perceived or real gaps&lt;br /&gt;
** Questions Artefactual can answer about what Archivematica is doing/should be doing&lt;br /&gt;
* Relationship between Archivematica and Avalon, e.g position in workflow, pre-Avalon? post-Avalon? Something else?&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Improvements/Avalon&amp;diff=12286</id>
		<title>Improvements/Avalon</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Improvements/Avalon&amp;diff=12286"/>
		<updated>2018-03-09T01:37:49Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: ross-spencer notes from meeting: 8 March 2018&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will document potential areas of improvement in Archivematica that will allow for better workflows with [http://www.avalonmediasystem.org/ Avalon].&lt;br /&gt;
&lt;br /&gt;
== Project Thesis ==&lt;br /&gt;
&lt;br /&gt;
Artefactual and Avalon will seek to create:&lt;br /&gt;
&lt;br /&gt;
* support for activities such as file characterization and preservation metadata extraction: &lt;br /&gt;
** digitized and born-digital AV materials. &lt;br /&gt;
* Integration with Archivematica or its components into Avalon ingestion workflows to provide:&lt;br /&gt;
** preservation metadata &lt;br /&gt;
** better packaging for long-term digital preservation activities&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
=== In scope ===&lt;br /&gt;
&lt;br /&gt;
Two clear use-cases based on previous discussion (up to 8 March 2018), for which we can focus on and keep scope narrow. These are:&lt;br /&gt;
&lt;br /&gt;
*Avalon first&lt;br /&gt;
** Process in Avalon and then send the package to Archivematica to generate an AIP&lt;br /&gt;
&lt;br /&gt;
'''Questions'''&lt;br /&gt;
&lt;br /&gt;
- Do we ignore the Fedora metadata entirely?&lt;br /&gt;
- Do we transfer Fedora metadata as a digital object, but perform no special conversion mapping&lt;br /&gt;
- Out-of-scope: Mapping/cross-walk to try and see Fedora metadata mapped into Archivematica&lt;br /&gt;
&lt;br /&gt;
* AM first&lt;br /&gt;
** Collection of assets described in a batch manifest and they are processed and then picked up by Avalon&lt;br /&gt;
&lt;br /&gt;
Two useful phrasings, that could be considered nuances on these, that came from the same meeting:&lt;br /&gt;
&lt;br /&gt;
* ''As an user of Avalon send the output of a project to a repository and have institutional digital preservation policies applied to that collectionffor long-term preservation''&lt;br /&gt;
* ''As a preservation specialist, in a catastrophic scenario, be able to round-trip from AM back into an instance of Avalon''**&lt;br /&gt;
&lt;br /&gt;
**'''NB''' Recognised that there is no hard-requirement to round-trip back into Avalon from Archivematica, though it was noted that it would be possible to learn quite a lot.&lt;br /&gt;
&lt;br /&gt;
==== Out of scope ===&lt;br /&gt;
&lt;br /&gt;
'''Versioning'''&lt;br /&gt;
This is a very broad summary, but because of the potential for work to continue being completed on a 'unit' in Avalon, data will become out of date, and there may be a wish to see that updated in Archivematica. This is one example of where data might need updating or to be re-versioned. Others:&lt;br /&gt;
* AIP Update following updated in Avalon&lt;br /&gt;
* Data supplied as an asset to Avalon/Archivematica, e.g. VTT Subtitle Information, (addition of other languages/corrections, etc.)&lt;br /&gt;
* Other cases&lt;br /&gt;
&lt;br /&gt;
== What do we need? ==&lt;br /&gt;
&lt;br /&gt;
- Northwest to work with Sarah to discuss use-cases&lt;br /&gt;
- Do we need more sample files/batches of data?&lt;br /&gt;
- Understand the current transfer issue being experienced with the initial setup - In progress. &lt;br /&gt;
&lt;br /&gt;
== Questions ==&lt;br /&gt;
&lt;br /&gt;
=== METS ===&lt;br /&gt;
&lt;br /&gt;
* Is it required that the metadata in the batch ingest manifest is represented in the AIP METS file (in dmdSecs for example?)&lt;br /&gt;
* Will users have a need to populate the batch ingest manifest with metadata entered into Archivematica?&lt;br /&gt;
** Descriptive metadata?&lt;br /&gt;
** Rights metadata?&lt;br /&gt;
* When Avalon is being used to disseminate different quality files, which file(s) should be stored in the AIP?&lt;br /&gt;
** How should mulitple versions be modeled in the METS?&lt;br /&gt;
* Should the structure of files be modeled in the METS when structure XML files are included?&lt;br /&gt;
** Or is describing the presence and use of structure files sufficient?&lt;br /&gt;
* How should the presence of caption files be noted in the METS?&lt;br /&gt;
&lt;br /&gt;
=== Exploration of Archivematica ===&lt;br /&gt;
&lt;br /&gt;
* Progress and first impressions&lt;br /&gt;
* Ingest progress&lt;br /&gt;
* Exploration of the AIP generated from Avalon Batch Packages&lt;br /&gt;
* Immediate observations:&lt;br /&gt;
** Workflow questions&lt;br /&gt;
** Perceived or real gaps&lt;br /&gt;
** Questions Artefactual can answer about what Archivematica is doing/should be doing&lt;br /&gt;
* Relationship between Archivematica and Avalon, e.g position in workflow, pre-Avalon? post-Avalon? Something else?&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Improvements/Avalon&amp;diff=12284</id>
		<title>Improvements/Avalon</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Improvements/Avalon&amp;diff=12284"/>
		<updated>2018-03-08T02:04:41Z</updated>

		<summary type="html">&lt;p&gt;Rspencer: Added notes about things to observe now that Archivematica has been deployed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will document potential areas of improvement in Archivematica that will allow for better workflows with [http://www.avalonmediasystem.org/ Avalon].&lt;br /&gt;
&lt;br /&gt;
== Project Thesis ==&lt;br /&gt;
&lt;br /&gt;
Artefactual and Avalon will seek to create:&lt;br /&gt;
&lt;br /&gt;
* support for activities such as file characterization and preservation metadata extraction: &lt;br /&gt;
** digitized and born-digital AV materials. &lt;br /&gt;
* Integration with Archivematica or its components into Avalon ingestion workflows to provide:&lt;br /&gt;
** preservation metadata &lt;br /&gt;
** better packaging for long-term digital preservation activities&lt;br /&gt;
&lt;br /&gt;
== Questions ==&lt;br /&gt;
&lt;br /&gt;
=== METS ===&lt;br /&gt;
&lt;br /&gt;
* Is it required that the metadata in the batch ingest manifest is represented in the AIP METS file (in dmdSecs for example?)&lt;br /&gt;
* Will users have a need to populate the batch ingest manifest with metadata entered into Archivematica?&lt;br /&gt;
** Descriptive metadata?&lt;br /&gt;
** Rights metadata?&lt;br /&gt;
* When Avalon is being used to disseminate different quality files, which file(s) should be stored in the AIP?&lt;br /&gt;
** How should mulitple versions be modeled in the METS?&lt;br /&gt;
* Should the structure of files be modeled in the METS when structure XML files are included?&lt;br /&gt;
** Or is describing the presence and use of structure files sufficient?&lt;br /&gt;
* How should the presence of caption files be noted in the METS?&lt;br /&gt;
&lt;br /&gt;
=== Exploration of Archivematica ===&lt;br /&gt;
&lt;br /&gt;
* Progress and first impressions&lt;br /&gt;
* Ingest progress&lt;br /&gt;
* Exploration of the AIP generated from Avalon Batch Packages&lt;br /&gt;
* Immediate observations:&lt;br /&gt;
** Workflow questions&lt;br /&gt;
** Perceived or real gaps&lt;br /&gt;
** Questions Artefactual can answer about what Archivematica is doing/should be doing&lt;br /&gt;
* Relationship between Archivematica and Avalon, e.g position in workflow, pre-Avalon? post-Avalon? Something else?&lt;/div&gt;</summary>
		<author><name>Rspencer</name></author>
	</entry>
</feed>