Skip to main content

Grab data from Atom API with Python

Project description

Python AtoM API

This is a simple library for interacting with an AtoM archive within Python. This library works with Python version 3, and has been tested with AtoM version 2.5. All of the API interactions specified in the AtoM documentation all have easy-to-call python functions associated with them in this library. This includes:

  • Browsing Taxonomies
  • Browsing Information Objects
  • Reading Information Objects

This library also implements a virtual endpoint that can be used to retrieve all of the authorities stored in the archive. It does this by treating the front-end application as an API endpoint. For this reason, this operation is more fragile than calling the API directly and is not guaranteed to work with every version of AtoM and every theme.


python -m pip install atomapi


To use the API, you will require an AtoM API key. To use the virtual API, you do not need an API key, but please use it responsibly since the virtual API can easily make over 100 requests depending on how many items you have in AtoM. This may or may not put undue stress on the server.

There are three concrete API endpoint classes that use the actual API:

  • endpoints.BrowseTaxonomyEndpoint
  • endpoints.BrowseInformationObjectEndpoint
  • endpoints.ReadInformationObjectEndpoint

There are also three concrete Virtual API endpoint classes that make use of the front end application and treat is as an API:

  • virtualendpoints.VirtualBrowseTaxonomyEndpoint
  • virtualendpoints.VirtualBrowseAuthorityEndpoint
  • virtualendpoints.VirtualBrowseAuthorityRefCodeEndpoint

Note that the virtual endpoints have been tested on AtoM version 2.5, with the default arDominionPlugin theme. The virtual endpoints are not guaranteed to work with other versions of AtoM or highly customized themes. That being said, it would be easy to create a new endpoint that takes into account the modifed markup or CSS in a custom theme.

To view examples on how to use each endpoint, go to the examples code documentation.

Simple Example

To get data from the API, you will need to create a session object from the session factory. There are two types of sessions, default, and f5, for most AtoM instances, a default session will be sufficient.

from atomapi.sessions import session_factory

my_session = session_factory.create(name='default', url='')

Once you've created a session, you can use it with any of the real and virtual endpoints. You may also reuse this session variable with as many endpoints as you like.

from atomapi.sessions import session_factory
from atomapi.endpoints import BrowseTaxonomyEndpoint
from atomapi.virtualendpoints import VirtualBrowseTaxonomyEndpoint

my_session = session_factory.create('default', '')

real_taxonomy_endpoint = BrowseTaxonomyEndpoint(my_session, api_key='1234567890')
virtual_taxonomy_endpoint = VirtualBrowseTaxonomyEndpoint(my_session)

Once your endpoints are set up, you can call the get function on them to get data.

from atomapi.taxonomies import DefaultTaxonomyIds

subjects = real_taxonomy_endpoint.get(DefaultTaxonomyIds.SUBJECTS.value)
places = virtual_taxonomy_endpoint.get(DefaultTaxonomyIds.PLACES.value)

The virtual API will take a lot longer to fetch the same amount of data as the real API since it is scraping the web page.

For more examples, go to the examples code documentation.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

atomapi-0.0.3.tar.gz (12.2 kB view hashes)

Uploaded source

Built Distribution

atomapi-0.0.3-py3-none-any.whl (14.7 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page