{"id":20415174,"url":"https://github.com/rockefellerarchivecenter/gemini","last_synced_at":"2026-04-20T07:02:51.024Z","repository":{"id":33528167,"uuid":"144328869","full_name":"RockefellerArchiveCenter/gemini","owner":"RockefellerArchiveCenter","description":"A microservice to download data from Archivematica and store it in Fedora","archived":false,"fork":false,"pushed_at":"2025-03-03T16:37:59.000Z","size":132973,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"base","last_synced_at":"2025-03-03T16:38:38.114Z","etag":null,"topics":["archivematica","django","microservice","project-electron","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RockefellerArchiveCenter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-10T20:21:34.000Z","updated_at":"2025-03-03T16:38:03.000Z","dependencies_parsed_at":"2023-11-07T00:18:55.552Z","dependency_job_id":"37c74c54-61a4-4842-9ae6-f43d794c347a","html_url":"https://github.com/RockefellerArchiveCenter/gemini","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RockefellerArchiveCenter%2Fgemini","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RockefellerArchiveCenter%2Fgemini/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RockefellerArchiveCenter%2Fgemini/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RockefellerArchiveCenter%2Fgemini/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RockefellerArchiveCenter","download_url":"https://codeload.github.com/RockefellerArchiveCenter/gemini/tar.gz/refs/heads/base","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241960443,"owners_count":20049340,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["archivematica","django","microservice","project-electron","python3"],"created_at":"2024-11-15T06:14:30.016Z","updated_at":"2026-04-20T07:02:51.017Z","avatar_url":"https://github.com/RockefellerArchiveCenter.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"**This application has been marked as read-only and is no longer actively maintained or supported.**\n\n# gemini\nA microservice to store AIPs and DIPs in Fedora.\n\ngemini is part of [Project Electron](https://github.com/RockefellerArchiveCenter/project_electron), an initiative to build sustainable, open and user-centered infrastructure for the archival management of digital records at the [Rockefeller Archive Center](http://rockarch.org/).\n\n## Setup\n\nInstall [git](https://git-scm.com/) and clone the repository\n\n    $ git clone git@github.com:RockefellerArchiveCenter/gemini.git\n\nInstall [Docker](https://store.docker.com/search?type=edition\u0026offering=community) and run docker-compose from the root directory\n\n    $ cd gemini\n    $ docker-compose up\n\nOnce the application starts successfully, you should be able to access the application in your browser at `http://localhost:8006`\n\nWhen you're done, shut down docker-compose\n\n    $ docker-compose down\n\nOr, if you want to remove all data\n\n    $ docker-compose down -v\n\n\n### Configuration\n\nYou will need to edit configuration values in `gemini/config.py` to point to your instances of Archivematica and Fedora.\n\n\n## Services\n\ngemini has five services, all of which are exposed via HTTP endpoints (see [Routes](#routes) section below):\n\n* Create Packages\n  * Handles data from Archivematica's post-store callback and creates database\n    objects representing packages to be downloaded.\n* Add Data to packages\n  * Adds data from the Archivematica API to the packages\n* Download Packages\n  * Downloads packages from the Archivematica Storage Service.\n* Parse METS\n  * Parses Archivematica METS file to extract additional metadata.\n* Store Packages\n  * Storing the package in Fedora, along with minimal metadata.\n* Deliver Data - sends package data to another service.\n  * Delivering a POST request to a configurable URL. This request has a payload containing the URI of the stored package in Fedora, the package type (\"aip\" or \"dip\") and the value of the `Internal-Sender-Identifier` field from the package's `bag-info.txt` file.\n* Request Cleanup - send a request to another service to clean up after a package has been processed.\n\n### Routes\n\n| Method | URL | Parameters | Response  | Behavior  |\n|--------|-----|---|---|---|\n|GET|/packages| |200|Returns a list of packages|\n|GET|/packages/{id}| |200|Returns data about an individual package|\n|POST|/download||200|Runs the download routine|\n|POST|/store||200|Runs the store routine|\n|POST|/deliver||200|Delivers package data to configured URL|\n|POST|/request-cleanup||200|Notifies another service that processing is complete|\n|GET|/status||200|Return the status of the microservice|\n|GET|/schema.json||200|Returns the OpenAPI schema for this application|\n\n\n## Archivematica Configuration\n\ngemini relies on the proper configuration of Archivematica Storage Service [post-store callbacks](https://www.archivematica.org/en/docs/storage-service-0.16/administrators/#service-callbacks). Two service callbacks, one each for `Post-store AIP` and `Post-store DIP` events, need to be set up as follows:\n\n- Event: either `Post-store AIP` or `Post-store DIP`\n- URI: http://zodiac.dev.rockarch.org/api/create-packages/ (This is the configured value of the CreatePackage service's `external_uri` field, prepended by `api/`, and using the correct host name for production or dev).\n- Method: POST\n- Headers (key/value): key: Content-Type, value: application/json\n- Body: {\"identifier\": \"\u003cpackage_uuid\u003e\"}\n- Expected status: 200\n- Enabled: make sure this is checked\n\nUnfortunately, Archivematica currently does not have a way of testing a service callback, so in order to make sure your newly configured callback is working it is necessary to process a transfer through the pipeline.\n\n### Troubleshooting tips\nIf the callback is not triggered as expected, you can try a couple of things to troubleshoot:\n- Look at the request logs in Zodiac to see if any useful information is provided.\n- Make sure that Archivematica can reach Zodiac by sending a cURL request to the configured URL.\n- Try mocking the body data required in a cURL request to make sure that Archivematica is sending what you expect.\n\n\n## Development\n\nThis repository contains a configuration file for git [pre-commit](https://pre-commit.com/) hooks which help ensure that code is linted before it is checked into version control. It is strongly recommended that you install these hooks locally by installing pre-commit and running `pre-commit install`.\n\n## License\n\nThis code is released under an [MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frockefellerarchivecenter%2Fgemini","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frockefellerarchivecenter%2Fgemini","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frockefellerarchivecenter%2Fgemini/lists"}