{"id":20635757,"url":"https://github.com/psu-libraries/oats","last_synced_at":"2026-04-17T16:02:42.349Z","repository":{"id":57705011,"uuid":"496735986","full_name":"psu-libraries/oats","owner":"psu-libraries","description":"Open Access Workflow Tools","archived":false,"fork":false,"pushed_at":"2023-06-02T12:12:32.000Z","size":68,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-16T08:29:07.290Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","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/psu-libraries.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":"2022-05-26T18:46:30.000Z","updated_at":"2022-05-26T19:09:45.000Z","dependencies_parsed_at":"2024-06-21T08:44:01.840Z","dependency_job_id":"8e9253f1-bc70-4cff-b2fe-333fbc68225d","html_url":"https://github.com/psu-libraries/oats","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/psu-libraries/oats","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/psu-libraries%2Foats","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/psu-libraries%2Foats/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/psu-libraries%2Foats/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/psu-libraries%2Foats/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/psu-libraries","download_url":"https://codeload.github.com/psu-libraries/oats/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/psu-libraries%2Foats/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31935697,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T12:37:54.787Z","status":"ssl_error","status_checked_at":"2026-04-17T12:37:25.095Z","response_time":62,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-11-16T15:07:16.856Z","updated_at":"2026-04-17T16:02:42.309Z","avatar_url":"https://github.com/psu-libraries.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# oats\n\noats (see `cmd/oats`) is a command line tool for managing PSU Libraries' OA workflow. It's mostly\nused to automate updates to a project-specific Airtable database using\ninformation from various APIs (RMD, CrossRef, Unpaywall, and Open Access\nButton).\n\n```\nOA Tools: a collection of programs for managing the OA workflow\n\nUsage:\n  oats [command]\n\nAvailable Commands:\n  deposit     Deposit to ScholarSphere\n  dois        Confirms unconfirmed DOIs in Airtable using CrossRef and RMD\n  help        Help about any command\n  import      Import Activity Insight Records to Airtable\n  merge       Updates Tasks on Airtable with data from a csv file\n  oastatus    Updates OA_status in Airtable using Unpaywall API\n  permissions Updates deposit permissions in Airtable using Open Access Button's Permissions API\n  rmdupdated  Updates Tasks' RMD_Updated column in Airtable\n  sslink      Find ScholarSphere Links for Tasks in Airtable\n  tasks       Creates new Tasks in Airtable\n\nFlags:\n  -c, --config string   config file (default \"config.yml\")\n  -h, --help            help for oats\n  -p, --production      run in production mode\n\nUse \"oats [command] --help\" for more information about a command.\n```\n\n## Installation\n\nIf you already have [Go installed](https://go.dev/doc/install) (v1.17 or later):\n```sh\n# install with go\ngo install github.com/psu-libraries/oats/cmd/oats@latest\n# run it with:\n~/go/bin/oats --help\n```\n\nAlternatively, you can directly [download unsigned binaries](https://github.com/psu-libraries/oats/releases). A caveat of this approach is that your operating system may refuse to run unsigned binaries.  \n\n## Configuration\n\nThe `oats` command requires a configuration file. By default it looks for a file called `config.yml` in the working directory where `oats` is run.\n\n```yml\n## config.yml template \n\nairtable:\n  base:\n    # Production Airtable BasedID\n    production: \"fixme\"\n    # Testing Airtable BasedID\n    test: \"fixme\"\n  # Your Airtable API Key\n  apikey: \"fixme\"\n  # Tasks Table - shouldn't need to change this\n  tasks: \"Tasks\"\n  # Activity Insight Table - shouldn't need to change this\n  activity_insight: \"Activity Insight\"\n\nunpaywall:\n  # This email is sent with request to Unpaywall API\n  email: \"fixme\"\n\nopenaccessbutton:\n  # API key for open access button: https://openaccessbutton.org/account?next=/api\n  key: \"fixme\"\n\nscholarsphere:\n  apikey: \"fixme\"\n  production: \"fixme\"\n  test: \"fixme\"\n\nrmdb:\n apikey: \"fixme\"\n production: \"fixme\"\n test: \"fixme\"\n\n# Absolute path to directory to search for files (used by deposit)\narticle_path: \"fixme\"\n```\n## Development\n\nRequires [Go](https://go.dev/dl/) v1.17 or greater.\n\n```sh\n# build primary oats command from source:\ngit clone git@github.com:psu-libraries/oats.git\ncd oats/cmd/oats\ngo build\n```\n\nThis project uses [GoReleaser](https://goreleaser.com/intro/)\n\n## Code Organization:\n\n- `cmd` - The primary `oats` command is `cmd/oats`.\n- `crossref`: library for querying Crossref\n- `oabutton`: library for querying OA Button\n- `rmd`: library for querying RMD.\n- `scholargo`: library for ScholarSphere query/deposit\n- `unpaywall`: library for querying unpaywall\n\n\n## Usage Notes\n\n### Depositing Multiple IDs\n\nThe deposit command only deposits one item at a time. To deposit many IDs automatically, you can do the following:\n\n1. Create a text file with one ID on each line *and an additional empty line at the end of the file*. (Without the terminating newline, the last ID won't be deposited.):\n\n```\n128153 \n128829\n101241\n\n```\n\n2. If the file is called `deposit-ids.txt`, you can deposit each ID in the file with one of the commands:\n```sh\n# run in test mode:\nwhile read id; do oats deposit $id; done \u003c deposit-ids.txt\n# run in production:\nwhile read id; do oats -p deposit $id; done \u003c deposit-ids.txt\n```\n\nYou may want to add a small delay between each deposit command to avoid overwhelming the ScholarSphere API: \n```sh\n# sleep two seconds after each deposit\nwhile read id; do oats -p deposit $id; sleep 2; done \u003c deposit-ids.txt\n\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpsu-libraries%2Foats","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpsu-libraries%2Foats","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpsu-libraries%2Foats/lists"}