AtoM(Access to Memory)のAPIを使って、オブジェクトを登録する方法の備忘録です。
APIの有効化#
以下にアクセスします。
/sfPluginAdminPlugin/plugins
arRestApiPluginを有効にします。

APIキーの取得#
以下に、APIキーを生成する方法が説明されています。
https://www.accesstomemory.org/en/docs/2.9/dev-manual/api/api-intro/#generating-an-api-key-for-a-user
ユーザ名とパスワードでもAPI接続できるようですが、今回はREST API Keyを発行しました。
エンドポイント#
AtoMでは、「典拠レコード」や「機能」など、複数のメニューが提供されていますが、APIによって利用できるのは、以下のみのようです。
See the subsequent pages for more details on each endpoint, and available parameters. There are three endpoints available:
Browse taxonomy terms
Browse information objects
Read information object
Download digital objects
Add physical objects
この点は、ArchivesSpaceのほうが豊富なAPIが提供されており、軍配が上がるかもしれません。
https://archivesspace.github.io/archivesspace/api/
また、以下のソースコードを確認すると、CreateActionが可能なものは、informationobjectsとphysicalobjects、digitalobjectsに限定されているようでした。
https://github.com/artefactual/atom/tree/qa/2.x/plugins/arRestApiPlugin/modules/api/actions
ただ機械的に一括登録を行いたい場面は、主にinformationobjectsだと考えられるため、これらの機能のみで十分かもしれません。
physical objectsの登録#

以下のようなクラスを用意します。
以下で実行します。
結果、以下のように登録されます。

親レコードの登録#
以下を実行します。
以下のように登録されました。

identifierを用いた検索#
この処理により、登録済みのレコードのslugを取得することができます。
以下のように利用します。
クエリsq0やsf0は以下を参考にします。
https://www.accesstomemory.org/en/docs/2.9/dev-manual/api/browse-io/#api-browse-io
子レコードの登録#
親レコードのslugがftb7-3bzd-8759とわかったので、以下により登録します。
結果、以下のように、親レコードの下位レコードとして、子レコードが登録されました。

デジタルオブジェクトの登録#
ただし、以下のように実行してもエラーが発生してしまいました。
この点については、引き続き調査したいと思います。
まとめ#
AtoM(Access to Memory)のAPIの使用例について紹介しました。
簡単に調べた限りでは、information objectsのみ、API経由で削除することができるなど、APIによる機能提供が限定的な印象を受けました。
APIによる利用を前提にする場合には、AtoM以外の選択肢を考慮するのもよいかもしれません。
AtoMやArchivesSpaceの導入検討にあたり、参考になりましたら幸いです。