OAI-PMH Verbs¶
Detailed description of all supported OAI-PMH verbs according to protocol version 2.0.
Test Endpoint
All examples use the test endpoint http://ehrinfdi4memory.toolbox21.com/oai.
This URL will change after Update API compliance testing is complete.
Identify¶
Returns information about the repository.
Request¶
Response Structure¶
<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
<responseDate>2025-08-31T15:27:27Z</responseDate>
<request verb="Identify">http://ehrinfdi4memory.toolbox21.com/oai</request>
<Identify>
<repositoryName>European Holocaust Research Infrastructure Portal Repository - NFDI4Memory IfZ Update API</repositoryName>
<baseURL>http://ehrinfdi4memory.toolbox21.com/oai</baseURL>
<protocolVersion>2.0</protocolVersion>
<adminEmail>info@toolbox21.com</adminEmail>
<earliestDatestamp>2013-09-09T01:31:51Z</earliestDatestamp>
<deletedRecord>transient</deletedRecord>
<granularity>YYYY-MM-DDThh:mm:ssZ</granularity>
<description>
<api-advertisements xmlns="https://4memory.de/dataspace/ApiAdvertisement">
<update-api>
<version>1.0</version>
<implementation-type>OAI-PMH</implementation-type>
<url>http://ehrinfdi4memory.toolbox21.com/oai</url>
<doc-url>http://ehrinfdi4memory.toolbox21.com/docs</doc-url>
</update-api>
<access-api>
<version>1.0</version>
<metadata-prefix>oai_dc</metadata-prefix>
<doc-url>http://ehrinfdi4memory.toolbox21.com/docs</doc-url>
</access-api>
</api-advertisements>
</description>
</Identify>
</OAI-PMH>
ListSets¶
Lists all available sets.
Set Organization
- Virtual sets (ehri:*) appear first (7 sets total)
- Followed by EHRI proxied sets (916+ sets)
Request¶
Response Structure¶
<ListSets>
<!-- Virtual Sets (from SQLite) -->
<set>
<setSpec>ehri:camps</setSpec>
<setName>EHRI Camps</setName>
<setDescription>
<oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:description>Die EHRI-Namensliste der Lager basiert überwiegend auf der USHMM-Enzyklopädie...</dc:description>
</oai_dc:dc>
</setDescription>
</set>
<!-- Regular EHRI Sets (proxied) -->
<set>
<setSpec>at</setSpec>
<setName>Austria</setName>
</set>
<!-- More sets... (200 per page) -->
<resumptionToken cursor="0" completeListSize="923">
b2Zmc2V0PTIwMCZsaW1pdD0yMDAmdmVyYj1MaXN0U2V0cw==
</resumptionToken>
</ListSets>
Continuation with Resumption Token¶
ListMetadataFormats¶
Shows available metadata formats.
Request (global)¶
Response (global)¶
<ListMetadataFormats>
<metadataFormat>
<metadataPrefix>oai_dc</metadataPrefix>
<schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</schema>
<metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace>
</metadataFormat>
<metadataFormat>
<metadataPrefix>ead</metadataPrefix>
<schema>http://www.loc.gov/ead/ead.xsd</schema>
<metadataNamespace>urn:isbn:1-931666-22-9</metadataNamespace>
</metadataFormat>
<metadataFormat>
<metadataPrefix>ead3</metadataPrefix>
<schema>https://www.loc.gov/ead/ead3.xsd</schema>
<metadataNamespace>http://ead3.archivists.org/schema/</metadataNamespace>
</metadataFormat>
</ListMetadataFormats>
Request (for specific identifier)¶
Response (for virtual record)¶
<ListMetadataFormats>
<metadataFormat>
<metadataPrefix>oai_dc</metadataPrefix>
<schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</schema>
<metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace>
</metadataFormat>
</ListMetadataFormats>
Format Support¶
| Set Type | oai_dc | ead | ead3 |
|---|---|---|---|
| Virtual Sets (ehri:*) | ✅ | ❌ | ❌ |
| EHRI Sets | ✅ | ✅ | ✅ |
Note on Metadata Formats
- oai_dc: Standard Dublin Core, available for all sets
- ead: Encoded Archival Description (v2002), only for EHRI OAI-PMH sets
- ead3: Encoded Archival Description (v3), only for EHRI OAI-PMH sets
ListIdentifiers¶
Lists only headers (identifiers) without metadata.
Initial Request¶
Parameters¶
| Parameter | Description | Required | Example |
|---|---|---|---|
metadataPrefix |
Metadata format | Yes | oai_dc or ead |
set |
Set specification | No | ehri:camps |
from |
Start date | No | 2024-01-01T00:00:00Z |
until |
End date | No | 2024-01-31T23:59:59Z |
Response¶
<ListIdentifiers>
<header>
<identifier>ehri_camps-38</identifier>
<datestamp>2025-08-31T03:00:10Z</datestamp>
<setSpec>ehri:camps</setSpec>
</header>
<!-- More headers -->
<resumptionToken completeListSize="3074" cursor="0">
ZWhyaTpjYW1wc3wxMDB8Tm9uZXxOb25lfG9haV9kYw==
</resumptionToken>
</ListIdentifiers>
Continuation with Resumption Token¶
Resumption Token
- Virtual sets: Base64-encoded string
- EHRI proxied sets: Passed through from EHRI
- Cannot be combined with any other parameters
ListRecords¶
Returns complete records with metadata.
Important: Set Parameter Behavior
- Without
setparameter: Returns only EHRI OAI-PMH proxied records - With
set=ehri:*: Returns records from the specified virtual set - Virtual sets are NEVER included when no set is specified
Request¶
Response Structure¶
<ListRecords>
<record>
<header>
<identifier>ehri_camps-60</identifier>
<datestamp>2025-08-31T03:00:10Z</datestamp>
<setSpec>ehri:camps</setSpec>
</header>
<metadata>
<oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:identifier>ehri_camps-60</dc:identifier>
<dc:identifier>url:https://portal.ehri-project.eu/keywords/ehri_camps-60</dc:identifier>
<dc:title xml:lang="en">München-Allach (Porzellanmanufaktur) concentration camp</dc:title>
<dc:title xml:lang="en"> München-Allach (PMA) concentration camp</dc:title>
<dc:title xml:lang="en">München (Porzellanmanufaktur) concentration camp</dc:title>
<dc:type>Text</dc:type>
<dc:type>CvocConcept</dc:type>
<dc:relation>ehri_camps-177</dc:relation>
<dc:coverage>geo:48.1887,11.4709</dc:coverage>
<dc:relation>http://www.wikidata.org/entity/Q47531648</dc:relation>
<dc:rights>European Holocaust Research Infrastructure</dc:rights>
</oai_dc:dc>
</metadata>
</record>
<!-- More records (200 total in first batch) -->
<resumptionToken completeListSize="3074" cursor="0">
ZWhyaTpjYW1wc3wxMDB8Tm9uZXxOb25lfG9haV9kYw==
</resumptionToken>
</ListRecords>
GetRecord¶
Retrieves a single record.
Request¶
Response¶
<GetRecord>
<record>
<header>
<identifier>ehri_camps-38</identifier>
<datestamp>2025-08-31T03:00:10Z</datestamp>
<setSpec>ehri:camps</setSpec>
</header>
<metadata>
<oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:identifier>ehri_camps-38</dc:identifier>
<dc:identifier>url:https://portal.ehri-project.eu/keywords/ehri_camps-38</dc:identifier>
<dc:title xml:lang="en">Trzebinia concentration camp</dc:title>
<dc:title xml:lang="en"> Tshebin concentration camp</dc:title>
<dc:title xml:lang="en">Trzebionka concentration camp</dc:title>
<dc:type>Text</dc:type>
<dc:type>CvocConcept</dc:type>
<dc:relation>ehri_camps-0</dc:relation>
<dc:coverage>geo:50.166698,19.483299</dc:coverage>
<dc:relation>http://www.wikidata.org/entity/Q47515286</dc:relation>
<dc:rights>European Holocaust Research Infrastructure</dc:rights>
</oai_dc:dc>
</metadata>
</record>
</GetRecord>
Error Responses¶
All OAI-PMH errors follow the standard format with error codes and descriptive messages. For detailed error handling information, see the Error Handling page.
Example error response: