Skip to content

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

GET /oai?verb=Identify

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

GET /oai?verb=ListSets

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

GET /oai?verb=ListSets&resumptionToken=TOKEN_STRING_HERE

ListMetadataFormats

Shows available metadata formats.

Request (global)

GET /oai?verb=ListMetadataFormats

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)

GET /oai?verb=ListMetadataFormats&identifier=ehri_camps-38

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

GET /oai?verb=ListIdentifiers&metadataPrefix=oai_dc&set=ehri:camps

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

GET /oai?verb=ListIdentifiers&resumptionToken=ZWhyaTpjYW1wc3wxMDB8Tm9uZXxOb25lfG9haV9kYw==

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 set parameter: 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

GET /oai?verb=ListRecords&metadataPrefix=oai_dc&set=ehri:camps

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

GET /oai?verb=GetRecord&identifier=ehri_camps-38&metadataPrefix=oai_dc

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:

<error code="badArgument">metadataPrefix is required</error>