{"id":35458,"name":"observatory-platform","description":"Observatory Platform Package","url":"https://github.com/the-academic-observatory/observatory-platform","last_synced_at":"2025-09-05T06:43:18.099Z","repository":{"id":37100110,"uuid":"227744539","full_name":"The-Academic-Observatory/observatory-platform","owner":"The-Academic-Observatory","description":"Observatory Platform Package","archived":false,"fork":false,"pushed_at":"2025-07-02T02:29:38.000Z","size":8332,"stargazers_count":19,"open_issues_count":1,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-02T02:34:47.293Z","etag":null,"topics":["airflow","data","observatory-platform","workflow"],"latest_commit_sha":null,"homepage":"https://docs.observatory.academy","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/The-Academic-Observatory.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json"}},"created_at":"2019-12-13T03:06:24.000Z","updated_at":"2025-07-02T02:24:57.000Z","dependencies_parsed_at":"2023-02-16T12:15:26.341Z","dependency_job_id":"25026f28-cec4-4d2e-93c7-970247beab77","html_url":"https://github.com/The-Academic-Observatory/observatory-platform","commit_stats":{"total_commits":282,"total_committers":14,"mean_commits":"20.142857142857142","dds":0.6595744680851063,"last_synced_commit":"8598e24dbfaf680bbacbf0761318e97fd5651893"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Academic-Observatory","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/sbom","scorecard":{"id":139670,"data":{"date":"2025-08-04","repo":{"name":"github.com/The-Academic-Observatory/observatory-platform","commit":"0f517280148e9de4bcd2539c7ce9e808358fce66"},"scorecard":{"version":"v5.2.1-28-gc1d103a9","commit":"c1d103a9bb9f635ec7260bf9aa0699466fa4be0e"},"score":4.6,"checks":[{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/publish-pypi.yml:1","Warn: no topLevel permission defined: .github/workflows/unit-tests.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":7,"reason":"Found 22/30 approved changesets -- score normalized to 7","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#code-review"}},{"name":"Maintained","score":1,"reason":"2 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-pypi.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/observatory-platform/publish-pypi.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-pypi.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/observatory-platform/publish-pypi.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-pypi.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/observatory-platform/publish-pypi.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit-tests.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/observatory-platform/unit-tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit-tests.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/observatory-platform/unit-tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/unit-tests.yml:64: update your workflow using https://app.stepsecurity.io/secureworkflow/The-Academic-Observatory/observatory-platform/unit-tests.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/publish-pypi.yml:22","Warn: pipCommand not pinned by hash: .github/workflows/unit-tests.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/unit-tests.yml:28","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   0 out of   3 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#fuzzing"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#packaging"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-16T07:38:45.111Z","repository_id":37100110,"created_at":"2025-08-16T07:38:45.112Z","updated_at":"2025-08-16T07:38:45.112Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273723206,"owners_count":25156303,"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","status":"online","status_checked_at":"2025-09-05T02:00:09.113Z","response_time":402,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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"}},"owner":{"login":"The-Academic-Observatory","name":"The Academic Observatory","uuid":"55219966","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/55219966?v=4","repositories_count":14,"last_synced_at":"2023-03-03T21:58:14.257Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/The-Academic-Observatory","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-14T05:53:44.272Z","updated_at":"2023-03-03T21:58:14.261Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Academic-Observatory","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Academic-Observatory/repositories"},"packages":[{"id":2824147,"name":"observatory-api","ecosystem":"pypi","description":"","homepage":"https://github.com/The-Academic-Observatory/observatory-platform","licenses":"Apache License Version 2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/The-Academic-Observatory/observatory-platform","keywords_array":["science","data","workflows","academic institutes","observatory-api"],"namespace":null,"versions_count":8,"first_release_published_at":"2022-01-06T06:24:57.000Z","latest_release_published_at":"2022-06-23T04:18:21.000Z","latest_release_number":"0.5.0","last_synced_at":"2025-08-10T22:05:18.360Z","created_at":"2022-04-10T11:47:46.722Z","updated_at":"2025-08-10T22:05:18.360Z","registry_url":"https://pypi.org/project/observatory-api/","install_command":"pip install observatory-api --index-url https://pypi.org/simple","documentation_url":"https://observatory-platform.readthedocs.io/en/latest/","metadata":{"funding":null,"documentation":"https://observatory-platform.readthedocs.io/en/latest/","classifiers":["Development Status :: 2 - Pre-Alpha","Environment :: Console","Environment :: Web Environment","Intended Audience :: Developers","Intended Audience :: Science/Research","License :: OSI Approved :: Apache Software License","Operating System :: OS Independent","Programming Language :: Python :: 3","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.7","Topic :: Scientific/Engineering","Topic :: Software Development :: Libraries","Topic :: Software Development :: Libraries :: Python Modules","Topic :: Utilities"],"normalized_name":"observatory-api"},"repo_metadata":{"id":37100110,"uuid":"227744539","full_name":"The-Academic-Observatory/observatory-platform","owner":"The-Academic-Observatory","description":"Observatory Platform Package","archived":false,"fork":false,"pushed_at":"2025-07-02T02:29:38.000Z","size":8332,"stargazers_count":19,"open_issues_count":1,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-02T02:34:47.293Z","etag":null,"topics":["airflow","data","observatory-platform","workflow"],"latest_commit_sha":null,"homepage":"https://docs.observatory.academy","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/The-Academic-Observatory.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json"}},"created_at":"2019-12-13T03:06:24.000Z","updated_at":"2025-07-02T02:24:57.000Z","dependencies_parsed_at":"2023-02-16T12:15:26.341Z","dependency_job_id":"25026f28-cec4-4d2e-93c7-970247beab77","html_url":"https://github.com/The-Academic-Observatory/observatory-platform","commit_stats":{"total_commits":282,"total_committers":14,"mean_commits":"20.142857142857142","dds":0.6595744680851063,"last_synced_commit":"8598e24dbfaf680bbacbf0761318e97fd5651893"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Academic-Observatory","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263066098,"owners_count":23408383,"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"},"owner_record":{"login":"The-Academic-Observatory","name":"The Academic Observatory","uuid":"55219966","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/55219966?v=4","repositories_count":14,"last_synced_at":"2023-03-03T21:58:14.257Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/The-Academic-Observatory","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-14T05:53:44.272Z","updated_at":"2023-03-03T21:58:14.261Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Academic-Observatory","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Academic-Observatory/repositories"},"tags":[{"name":"0.6.0","sha":"2b34ebfee77858f670259428de8426b298c5c5d5","kind":"commit","published_at":"2023-11-23T00:12:44.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/0.6.0","html_url":"https://github.com/The-Academic-Observatory/observatory-platform/releases/tag/0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform@0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.6.0/manifests"},{"name":"0.5.0","sha":"814cb28287caa9b544f108d1615c8e8e582087d7","kind":"commit","published_at":"2022-06-21T23:31:20.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/0.5.0","html_url":"https://github.com/The-Academic-Observatory/observatory-platform/releases/tag/0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform@0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.5.0/manifests"},{"name":"0.4.0","sha":"353f7a7e6447a1f4a3bb6839a861333694f91c4c","kind":"commit","published_at":"2022-05-20T03:33:30.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/0.4.0","html_url":"https://github.com/The-Academic-Observatory/observatory-platform/releases/tag/0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform@0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.4.0/manifests"},{"name":"0.3.0","sha":"fbbc382308106de911c0685ead4ddd3cf14d0d42","kind":"commit","published_at":"2022-03-13T23:39:10.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/0.3.0","html_url":"https://github.com/The-Academic-Observatory/observatory-platform/releases/tag/0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform@0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.3.0/manifests"},{"name":"0.3.0-dev","sha":"2e45e477fd7496c157fd81cf67933329a2f00cc1","kind":"commit","published_at":"2022-01-05T08:45:39.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/0.3.0-dev","html_url":"https://github.com/The-Academic-Observatory/observatory-platform/releases/tag/0.3.0-dev","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform@0.3.0-dev","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.3.0-dev","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.3.0-dev/manifests"},{"name":"0.2.1","sha":"64b62cba83110fea60e91506dff4a83ba9931ba9","kind":"commit","published_at":"2021-09-30T01:04:14.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/0.2.1","html_url":"https://github.com/The-Academic-Observatory/observatory-platform/releases/tag/0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform@0.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.2.1/manifests"},{"name":"0.2.0","sha":"b8c9cac0eb6146cc87fa98349479bd577be31a9e","kind":"commit","published_at":"2021-09-27T05:34:53.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/0.2.0","html_url":"https://github.com/The-Academic-Observatory/observatory-platform/releases/tag/0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform@0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.2.0/manifests"},{"name":"0.1.1","sha":"ce5893bab4f96ee32c97061114f3ba5e1669c883","kind":"commit","published_at":"2021-09-20T02:00:27.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/0.1.1","html_url":"https://github.com/The-Academic-Observatory/observatory-platform/releases/tag/0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform@0.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.1.1/manifests"},{"name":"0.1.0","sha":"434cbfc2ae23e065c7c0482f109a39f5f9044018","kind":"commit","published_at":"2021-09-10T04:28:14.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/0.1.0","html_url":"https://github.com/The-Academic-Observatory/observatory-platform/releases/tag/0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform@0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.1.0/manifests"}]},"repo_metadata_updated_at":"2025-07-02T02:39:32.725Z","dependent_packages_count":0,"downloads":19,"downloads_period":"last-month","dependent_repos_count":1,"rankings":{"downloads":23.07884684038006,"dependent_repos_count":21.619800316896704,"dependent_packages_count":10.082087700208083,"stargazers_count":13.909015753368426,"forks_count":14.197680569373816,"docker_downloads_count":null,"average":16.577486236045416},"purl":"pkg:pypi/observatory-api","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/observatory-api","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/observatory-api","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/observatory-api/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-06-20T13:17:14.071Z","issues_count":4,"pull_requests_count":227,"avg_time_to_close_issue":21403994.0,"avg_time_to_close_pull_request":4135151.591743119,"issues_closed_count":3,"pull_requests_closed_count":218,"pull_request_authors_count":8,"issue_authors_count":2,"avg_comments_per_issue":2.5,"avg_comments_per_pull_request":1.1101321585903083,"merged_pull_requests_count":170,"bot_issues_count":0,"bot_pull_requests_count":11,"past_year_issues_count":0,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":2173916.888888889,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":9,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.2222222222222222,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":9,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/issues","maintainers":[{"login":"tuanchien","count":36,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tuanchien"},{"login":"aroelo","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/aroelo"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/observatory-api/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/observatory-api/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/observatory-api/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/observatory-api/related_packages","maintainers":[{"uuid":"jdddog","login":"jdddog","name":null,"email":null,"url":null,"packages_count":6,"html_url":"https://pypi.org/user/jdddog/","role":null,"created_at":"2023-02-24T20:08:41.748Z","updated_at":"2023-02-24T20:08:41.748Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/jdddog/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":725012,"maintainers_count":308320,"namespaces_count":0,"keywords_count":238006,"github":"pypi","metadata":{"funded_packages_count":50519},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-09-05T05:40:58.860Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}},{"id":2824148,"name":"observatory-platform","ecosystem":"pypi","description":"The Observatory Platform is an environment for fetching, processing and analysing data to understand how well universities operate as Open Knowledge Institutions.","homepage":"https://github.com/The-Academic-Observatory/observatory-platform","licenses":"Apache License Version 2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/The-Academic-Observatory/observatory-platform","keywords_array":["science","data","workflows","academic institutes","observatory-platform"],"namespace":null,"versions_count":8,"first_release_published_at":"2022-01-06T06:25:00.000Z","latest_release_published_at":"2022-06-23T04:18:24.000Z","latest_release_number":"0.5.0","last_synced_at":"2025-08-15T04:35:14.183Z","created_at":"2022-04-10T11:47:46.723Z","updated_at":"2025-08-15T04:35:14.183Z","registry_url":"https://pypi.org/project/observatory-platform/","install_command":"pip install observatory-platform --index-url https://pypi.org/simple","documentation_url":"https://observatory-platform.readthedocs.io/en/latest/","metadata":{"funding":null,"documentation":"https://observatory-platform.readthedocs.io/en/latest/","classifiers":["Development Status :: 2 - Pre-Alpha","Environment :: Console","Environment :: Web Environment","Intended Audience :: Developers","Intended Audience :: Science/Research","License :: OSI Approved :: Apache Software License","Operating System :: OS Independent","Programming Language :: Python :: 3","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.7","Programming Language :: Python :: 3.8","Topic :: Scientific/Engineering","Topic :: Software Development :: Libraries","Topic :: Software Development :: Libraries :: Python Modules","Topic :: Utilities"],"normalized_name":"observatory-platform"},"repo_metadata":{"id":37100110,"uuid":"227744539","full_name":"The-Academic-Observatory/observatory-platform","owner":"The-Academic-Observatory","description":"Observatory Platform Package","archived":false,"fork":false,"pushed_at":"2025-07-02T02:29:38.000Z","size":8332,"stargazers_count":19,"open_issues_count":1,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-02T02:34:47.293Z","etag":null,"topics":["airflow","data","observatory-platform","workflow"],"latest_commit_sha":null,"homepage":"https://docs.observatory.academy","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/The-Academic-Observatory.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json"}},"created_at":"2019-12-13T03:06:24.000Z","updated_at":"2025-07-02T02:24:57.000Z","dependencies_parsed_at":"2023-02-16T12:15:26.341Z","dependency_job_id":"25026f28-cec4-4d2e-93c7-970247beab77","html_url":"https://github.com/The-Academic-Observatory/observatory-platform","commit_stats":{"total_commits":282,"total_committers":14,"mean_commits":"20.142857142857142","dds":0.6595744680851063,"last_synced_commit":"8598e24dbfaf680bbacbf0761318e97fd5651893"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Academic-Observatory","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263066098,"owners_count":23408383,"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"},"owner_record":{"login":"The-Academic-Observatory","name":"The Academic Observatory","uuid":"55219966","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/55219966?v=4","repositories_count":14,"last_synced_at":"2023-03-03T21:58:14.257Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/The-Academic-Observatory","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-14T05:53:44.272Z","updated_at":"2023-03-03T21:58:14.261Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Academic-Observatory","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Academic-Observatory/repositories"},"tags":[{"name":"0.6.0","sha":"2b34ebfee77858f670259428de8426b298c5c5d5","kind":"commit","published_at":"2023-11-23T00:12:44.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/0.6.0","html_url":"https://github.com/The-Academic-Observatory/observatory-platform/releases/tag/0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform@0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.6.0/manifests"},{"name":"0.5.0","sha":"814cb28287caa9b544f108d1615c8e8e582087d7","kind":"commit","published_at":"2022-06-21T23:31:20.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/0.5.0","html_url":"https://github.com/The-Academic-Observatory/observatory-platform/releases/tag/0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform@0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.5.0/manifests"},{"name":"0.4.0","sha":"353f7a7e6447a1f4a3bb6839a861333694f91c4c","kind":"commit","published_at":"2022-05-20T03:33:30.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/0.4.0","html_url":"https://github.com/The-Academic-Observatory/observatory-platform/releases/tag/0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform@0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.4.0/manifests"},{"name":"0.3.0","sha":"fbbc382308106de911c0685ead4ddd3cf14d0d42","kind":"commit","published_at":"2022-03-13T23:39:10.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/0.3.0","html_url":"https://github.com/The-Academic-Observatory/observatory-platform/releases/tag/0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform@0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.3.0/manifests"},{"name":"0.3.0-dev","sha":"2e45e477fd7496c157fd81cf67933329a2f00cc1","kind":"commit","published_at":"2022-01-05T08:45:39.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/0.3.0-dev","html_url":"https://github.com/The-Academic-Observatory/observatory-platform/releases/tag/0.3.0-dev","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform@0.3.0-dev","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.3.0-dev","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.3.0-dev/manifests"},{"name":"0.2.1","sha":"64b62cba83110fea60e91506dff4a83ba9931ba9","kind":"commit","published_at":"2021-09-30T01:04:14.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/0.2.1","html_url":"https://github.com/The-Academic-Observatory/observatory-platform/releases/tag/0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform@0.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.2.1/manifests"},{"name":"0.2.0","sha":"b8c9cac0eb6146cc87fa98349479bd577be31a9e","kind":"commit","published_at":"2021-09-27T05:34:53.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/0.2.0","html_url":"https://github.com/The-Academic-Observatory/observatory-platform/releases/tag/0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform@0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.2.0/manifests"},{"name":"0.1.1","sha":"ce5893bab4f96ee32c97061114f3ba5e1669c883","kind":"commit","published_at":"2021-09-20T02:00:27.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/0.1.1","html_url":"https://github.com/The-Academic-Observatory/observatory-platform/releases/tag/0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform@0.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.1.1/manifests"},{"name":"0.1.0","sha":"434cbfc2ae23e065c7c0482f109a39f5f9044018","kind":"commit","published_at":"2021-09-10T04:28:14.000Z","download_url":"https://codeload.github.com/The-Academic-Observatory/observatory-platform/tar.gz/0.1.0","html_url":"https://github.com/The-Academic-Observatory/observatory-platform/releases/tag/0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/The-Academic-Observatory/observatory-platform@0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/tags/0.1.0/manifests"}]},"repo_metadata_updated_at":"2025-07-02T02:39:32.707Z","dependent_packages_count":0,"downloads":16,"downloads_period":"last-month","dependent_repos_count":1,"rankings":{"downloads":23.516180954799488,"dependent_repos_count":21.619800316896704,"dependent_packages_count":10.082087700208083,"stargazers_count":13.909015753368426,"forks_count":14.197680569373816,"docker_downloads_count":null,"average":16.664953058929303},"purl":"pkg:pypi/observatory-platform","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/observatory-platform","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/observatory-platform","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/observatory-platform/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-06-20T13:17:14.071Z","issues_count":4,"pull_requests_count":227,"avg_time_to_close_issue":21403994.0,"avg_time_to_close_pull_request":4135151.591743119,"issues_closed_count":3,"pull_requests_closed_count":218,"pull_request_authors_count":8,"issue_authors_count":2,"avg_comments_per_issue":2.5,"avg_comments_per_pull_request":1.1101321585903083,"merged_pull_requests_count":170,"bot_issues_count":0,"bot_pull_requests_count":11,"past_year_issues_count":0,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":2173916.888888889,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":9,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.2222222222222222,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":9,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/issues","maintainers":[{"login":"tuanchien","count":36,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tuanchien"},{"login":"aroelo","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/aroelo"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/observatory-platform/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/observatory-platform/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/observatory-platform/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/observatory-platform/related_packages","maintainers":[{"uuid":"jdddog","login":"jdddog","name":null,"email":null,"url":null,"packages_count":6,"html_url":"https://pypi.org/user/jdddog/","role":null,"created_at":"2023-02-24T20:08:42.316Z","updated_at":"2023-02-24T20:08:42.316Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/jdddog/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":725012,"maintainers_count":308320,"namespaces_count":0,"keywords_count":238006,"github":"pypi","metadata":{"funded_packages_count":50519},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-09-05T05:40:58.860Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}}],"commits":{"id":621009,"full_name":"The-Academic-Observatory/observatory-platform","default_branch":"develop","committers":[{"name":"Jamie Diprose","email":"jamie.diprose@gmail.com","count":96},{"name":"aroelo","email":"aniek.roelofs@curtin.edu.au","count":64},{"name":"tuanchien","email":"tuanchien@users.noreply.github.com","count":47},{"name":"Bec Handcock","email":"43615088+bechandcock@users.noreply.github.com","count":15},{"name":"Bec Handcock","email":"43615088+rnhandcock@users.noreply.github.com","count":10},{"name":"Keegan Smith","email":"34429506+keegansmith21@users.noreply.github.com","count":9},{"name":"Richard Hosking","email":"richard.hosking@curtin.edu.au","count":9},{"name":"Jamie Diprose","email":"5715104+jdddog@users.noreply.github.com","count":8},{"name":"Richard Hosking","email":"richard@hoskingnz.com","count":8},{"name":"Alex Massen-Hane","email":"104514872+alexmassen-hane@users.noreply.github.com","count":6},{"name":"Cameron Neylon","email":"cn@cameronneylon.net","count":5},{"name":"aroelo","email":"aniek93@live.nl","count":3},{"name":"kathrynnapier","email":"42160715+kathrynnapier@users.noreply.github.com","count":1},{"name":"Samuel Klein","email":"meta.sj@gmail.com","count":1}],"total_commits":282,"total_committers":14,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":20.142857142857142,"dds":0.6595744680851063,"past_year_committers":null,"past_year_total_commits":null,"past_year_total_committers":null,"past_year_total_bot_commits":null,"past_year_total_bot_committers":null,"past_year_mean_commits":null,"past_year_dds":null,"last_synced_at":"2023-03-18T23:12:12.105Z","last_synced_commit":"8598e24dbfaf680bbacbf0761318e97fd5651893","created_at":"2023-03-09T07:57:07.281Z","updated_at":"2023-09-19T17:27:39.298Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-05T00:00:10.343Z","repositories_count":5480019,"commits_count":853389012,"contributors_count":31098138,"owners_count":906558,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"The-Academic-Observatory/observatory-platform","html_url":"https://github.com/The-Academic-Observatory/observatory-platform","last_synced_at":"2025-08-31T18:01:15.214Z","status":null,"issues_count":3,"pull_requests_count":161,"avg_time_to_close_issue":32077077.5,"avg_time_to_close_pull_request":3781489.573248408,"issues_closed_count":2,"pull_requests_closed_count":157,"pull_request_authors_count":8,"issue_authors_count":2,"avg_comments_per_issue":3.0,"avg_comments_per_pull_request":1.031055900621118,"merged_pull_requests_count":125,"bot_issues_count":0,"bot_pull_requests_count":8,"past_year_issues_count":0,"past_year_pull_requests_count":11,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":140615.45454545456,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":11,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.09090909090909091,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":11,"created_at":"2023-05-14T18:52:06.025Z","updated_at":"2025-09-02T06:46:49.107Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Academic-Observatory%2Fobservatory-platform/issues","issue_labels_count":{"Bug":1},"pull_request_labels_count":{"Dependencies":8,"Feature":3,"Refactoring":1,"Bug":1},"issue_author_associations_count":{"COLLABORATOR":2,"CONTRIBUTOR":1},"pull_request_author_associations_count":{"CONTRIBUTOR":131,"COLLABORATOR":34,"NONE":8},"issue_authors":{"aroelo":2,"bechandcock":1},"pull_request_authors":{"jdddog":65,"keegansmith21":39,"tuanchien":23,"alexmassen-hane":20,"aroelo":11,"dependabot[bot]":8,"kathrynnapier":5,"rhosking":2},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-02T00:00:07.986Z","repositories_count":10021777,"issues_count":30401953,"pull_requests_count":90051100,"authors_count":10269412,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":12},"past_year_issue_authors":{},"past_year_pull_request_authors":{"keegansmith21":6,"jdddog":6},"maintainers":[{"login":"tuanchien","count":23,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tuanchien"},{"login":"aroelo","count":13,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/aroelo"}],"active_maintainers":[]},"events":{"total":{"WatchEvent":1,"DeleteEvent":5,"MemberEvent":1,"PushEvent":31,"PullRequestReviewEvent":2,"PullRequestReviewCommentEvent":5,"PullRequestEvent":11,"ForkEvent":1,"CreateEvent":5},"last_year":{"WatchEvent":1,"DeleteEvent":5,"MemberEvent":1,"PushEvent":31,"PullRequestReviewEvent":2,"PullRequestReviewCommentEvent":5,"PullRequestEvent":11,"ForkEvent":1,"CreateEvent":5}},"keywords":["airflow","data","observatory-platform","workflow"],"dependencies":[{"ecosystem":"pypi","filepath":"docs/requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-09T07:00:31.814Z","updated_at":"2022-08-09T07:00:31.814Z","repository_link":"https://github.com/The-Academic-Observatory/observatory-platform/blob/main/docs/requirements.txt","dependencies":[{"id":759007975,"package_name":"Sphinx","ecosystem":"pypi","requirements":"\u003e=4,\u003c5","direct":true,"kind":"runtime","optional":false},{"id":759007976,"package_name":"sphinx-autoapi","ecosystem":"pypi","requirements":"==1.8.","direct":true,"kind":"runtime","optional":false},{"id":759007977,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"==0.5.","direct":true,"kind":"runtime","optional":false},{"id":759007978,"package_name":"recommonmark","ecosystem":"pypi","requirements":"==0.7.","direct":true,"kind":"runtime","optional":false},{"id":759007979,"package_name":"pbr","ecosystem":"pypi","requirements":"==5.5.","direct":true,"kind":"runtime","optional":false},{"id":759007980,"package_name":"sphinxcontrib.openapi","ecosystem":"pypi","requirements":"==0.7.","direct":true,"kind":"runtime","optional":false},{"id":759007981,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":759007982,"package_name":"docutils","ecosystem":"pypi","requirements":"==0.16.","direct":true,"kind":"runtime","optional":false},{"id":759007983,"package_name":"mistune","ecosystem":"pypi","requirements":"\u003c2","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"observatory-api/requirements.cloudrun.txt","sha":null,"kind":"manifest","created_at":"2022-08-09T07:00:31.961Z","updated_at":"2022-08-09T07:00:31.961Z","repository_link":"https://github.com/The-Academic-Observatory/observatory-platform/blob/main/observatory-api/requirements.cloudrun.txt","dependencies":[{"id":759008952,"package_name":"gunicorn","ecosystem":"pypi","requirements":"\u003e=20.1.0,\u003c21","direct":true,"kind":"runtime","optional":false},{"id":759008953,"package_name":"Flask","ecosystem":"pypi","requirements":"\u003e=1.1.4,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":759008954,"package_name":"connexion","ecosystem":"pypi","requirements":"\u003e=2.7.0,\u003c3","direct":true,"kind":"runtime","optional":false},{"id":759008955,"package_name":"elasticsearch","ecosystem":"pypi","requirements":"\u003e=8.0.0,\u003c9","direct":true,"kind":"runtime","optional":false},{"id":759008956,"package_name":"pyyaml","ecosystem":"pypi","requirements":"\u003e=5.1,\u003c6","direct":true,"kind":"runtime","optional":false},{"id":759008957,"package_name":"SQLAlchemy","ecosystem":"pypi","requirements":"\u003e=1.3.18,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":759008958,"package_name":"psycopg2-binary","ecosystem":"pypi","requirements":"\u003e=2.9.1,\u003c3","direct":true,"kind":"runtime","optional":false},{"id":759008959,"package_name":"urllib3","ecosystem":"pypi","requirements":"\u003e=1.25.11,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":759008960,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"\u003e=2.8.2,\u003c3","direct":true,"kind":"runtime","optional":false},{"id":759008961,"package_name":"certifi","ecosystem":"pypi","requirements":"\u003e=2021.5.30","direct":true,"kind":"runtime","optional":false},{"id":759008962,"package_name":"pendulum","ecosystem":"pypi","requirements":"\u003e=2.1.2,\u003c3","direct":true,"kind":"runtime","optional":false},{"id":759008963,"package_name":"openapi-spec-validator","ecosystem":"pypi","requirements":"\u003e=0.3.1,\u003c1","direct":true,"kind":"runtime","optional":false},{"id":759008964,"package_name":"markupsafe","ecosystem":"pypi","requirements":"==2.0.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"observatory-api/requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-09T07:00:31.991Z","updated_at":"2022-08-09T07:00:31.991Z","repository_link":"https://github.com/The-Academic-Observatory/observatory-platform/blob/main/observatory-api/requirements.txt","dependencies":[{"id":759009016,"package_name":"gunicorn","ecosystem":"pypi","requirements":"\u003e=20.1.0,\u003c21","direct":true,"kind":"runtime","optional":false},{"id":759009017,"package_name":"Flask","ecosystem":"pypi","requirements":"\u003e=1.1.4,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":759009018,"package_name":"connexion","ecosystem":"pypi","requirements":"\u003e=2.7.0,\u003c3","direct":true,"kind":"runtime","optional":false},{"id":759009019,"package_name":"elasticsearch","ecosystem":"pypi","requirements":"\u003e=8.0.0,\u003c9","direct":true,"kind":"runtime","optional":false},{"id":759009020,"package_name":"pyyaml","ecosystem":"pypi","requirements":"\u003e=5.1,\u003c6","direct":true,"kind":"runtime","optional":false},{"id":759009021,"package_name":"psycopg2-binary","ecosystem":"pypi","requirements":"\u003e=2.9.1,\u003c3","direct":true,"kind":"runtime","optional":false},{"id":759009022,"package_name":"urllib3","ecosystem":"pypi","requirements":"\u003e=1.25.11,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":759009023,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"\u003e=2.8.2,\u003c3","direct":true,"kind":"runtime","optional":false},{"id":759009024,"package_name":"certifi","ecosystem":"pypi","requirements":"\u003e=2021.5.30","direct":true,"kind":"runtime","optional":false},{"id":759009025,"package_name":"pendulum","ecosystem":"pypi","requirements":"\u003e=2.1.2,\u003c3","direct":true,"kind":"runtime","optional":false},{"id":759009026,"package_name":"openapi-spec-validator","ecosystem":"pypi","requirements":"\u003e=0.3.1,\u003c1","direct":true,"kind":"runtime","optional":false},{"id":759009027,"package_name":"Jinja2","ecosystem":"pypi","requirements":"\u003e=2.10.1,\u003c3","direct":true,"kind":"runtime","optional":false},{"id":759009028,"package_name":"markupsafe","ecosystem":"pypi","requirements":"==1.1.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"observatory-platform/observatory/platform/cli/templates/generate_project/docs_requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-09T07:00:32.232Z","updated_at":"2022-08-09T07:00:32.232Z","repository_link":"https://github.com/The-Academic-Observatory/observatory-platform/blob/main/observatory-platform/observatory/platform/cli/templates/generate_project/docs_requirements.txt","dependencies":[{"id":759011032,"package_name":"Sphinx","ecosystem":"pypi","requirements":"\u003e=4,\u003c5","direct":true,"kind":"runtime","optional":false},{"id":759011033,"package_name":"recommonmark","ecosystem":"pypi","requirements":"==0.7.","direct":true,"kind":"runtime","optional":false},{"id":759011034,"package_name":"pandas","ecosystem":"pypi","requirements":"==1.3.","direct":true,"kind":"runtime","optional":false},{"id":759011035,"package_name":"pbr","ecosystem":"pypi","requirements":"==5.5.","direct":true,"kind":"runtime","optional":false},{"id":759011036,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"==0.5.","direct":true,"kind":"runtime","optional":false},{"id":759011037,"package_name":"sphinx-autoapi","ecosystem":"pypi","requirements":"==1.8.","direct":true,"kind":"runtime","optional":false},{"id":759011038,"package_name":"sphinxcontrib.openapi","ecosystem":"pypi","requirements":"==0.7.","direct":true,"kind":"runtime","optional":false},{"id":759011039,"package_name":"docutils","ecosystem":"pypi","requirements":"==0.16.","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"observatory-platform/requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-09T07:00:32.283Z","updated_at":"2022-08-09T07:00:32.283Z","repository_link":"https://github.com/The-Academic-Observatory/observatory-platform/blob/main/observatory-platform/requirements.txt","dependencies":[{"id":759012503,"package_name":"observatory-api","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":759012504,"package_name":"apache-airflow","ecosystem":"pypi","requirements":"==2.2.1","direct":true,"kind":"runtime","optional":false},{"id":759012505,"package_name":"apache-airflow-providers-redis","ecosystem":"pypi","requirements":"==2.0.1","direct":true,"kind":"runtime","optional":false},{"id":759012506,"package_name":"apache-airflow-providers-celery","ecosystem":"pypi","requirements":"==2.1.0","direct":true,"kind":"runtime","optional":false},{"id":759012507,"package_name":"apache-airflow-providers-slack","ecosystem":"pypi","requirements":"==4.0.0","direct":true,"kind":"runtime","optional":false},{"id":759012508,"package_name":"apache-airflow-providers-http","ecosystem":"pypi","requirements":"==2.0.0","direct":true,"kind":"runtime","optional":false},{"id":759012509,"package_name":"WTForms","ecosystem":"pypi","requirements":"\u003c3","direct":true,"kind":"runtime","optional":false},{"id":759012510,"package_name":"Markdown","ecosystem":"pypi","requirements":"==3.3.4","direct":true,"kind":"runtime","optional":false},{"id":759012511,"package_name":"google-crc32c","ecosystem":"pypi","requirements":"\u003e=1.1.0,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":759012512,"package_name":"google-cloud-bigquery","ecosystem":"pypi","requirements":"==2.1.","direct":true,"kind":"runtime","optional":false},{"id":759012513,"package_name":"google-api-python-client","ecosystem":"pypi","requirements":"==2.0.","direct":true,"kind":"runtime","optional":false},{"id":759012514,"package_name":"google-cloud-storage","ecosystem":"pypi","requirements":"==1.35.","direct":true,"kind":"runtime","optional":false},{"id":759012515,"package_name":"google-auth-oauthlib","ecosystem":"pypi","requirements":"\u003e=0.4.5,\u003c1","direct":true,"kind":"runtime","optional":false},{"id":759012516,"package_name":"google-cloud-secret-manager","ecosystem":"pypi","requirements":"\u003c2.0.0,\u003e=0.2.0","direct":true,"kind":"runtime","optional":false},{"id":759012517,"package_name":"elasticsearch","ecosystem":"pypi","requirements":"\u003e=8.0.0,\u003c9","direct":true,"kind":"runtime","optional":false},{"id":759012518,"package_name":"docker-compose","ecosystem":"pypi","requirements":"\u003e=1.29.2,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":759012519,"package_name":"click","ecosystem":"pypi","requirements":"\u003e=7.1.2,\u003c8","direct":true,"kind":"runtime","optional":false},{"id":759012520,"package_name":"pyyaml","ecosystem":"pypi","requirements":"\u003e=5.1,\u003c6","direct":true,"kind":"runtime","optional":false},{"id":759012521,"package_name":"cerberus","ecosystem":"pypi","requirements":"\u003e=1.3.4,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":759012522,"package_name":"Jinja2","ecosystem":"pypi","requirements":"\u003e=2.10.1,\u003c3","direct":true,"kind":"runtime","optional":false},{"id":759012523,"package_name":"stringcase","ecosystem":"pypi","requirements":"\u003e=1.2.0,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":759012524,"package_name":"pyhcl","ecosystem":"pypi","requirements":"\u003e=0.4.4,\u003c1","direct":true,"kind":"runtime","optional":false},{"id":759012525,"package_name":"Sphinx","ecosystem":"pypi","requirements":"\u003e=4,\u003c5","direct":true,"kind":"runtime","optional":false},{"id":759012526,"package_name":"jsonlines","ecosystem":"pypi","requirements":"\u003e=2.0.0,\u003c3","direct":true,"kind":"runtime","optional":false},{"id":759012527,"package_name":"json_lines","ecosystem":"pypi","requirements":"\u003e=0.5.0,\u003c1","direct":true,"kind":"runtime","optional":false},{"id":759012528,"package_name":"requests","ecosystem":"pypi","requirements":"\u003e=2.25.0,\u003c3","direct":true,"kind":"runtime","optional":false},{"id":759012529,"package_name":"tldextract","ecosystem":"pypi","requirements":"\u003e=3.1.1","direct":true,"kind":"runtime","optional":false},{"id":759012530,"package_name":"aiohttp","ecosystem":"pypi","requirements":"\u003e=3.7.0,\u003c4","direct":true,"kind":"runtime","optional":false},{"id":759012531,"package_name":"pysftp","ecosystem":"pypi","requirements":"\u003e=0.2.9\u003c1","direct":true,"kind":"runtime","optional":false},{"id":759012532,"package_name":"paramiko","ecosystem":"pypi","requirements":"\u003e=2.7.2,\u003c3","direct":true,"kind":"runtime","optional":false},{"id":759012533,"package_name":"natsort","ecosystem":"pypi","requirements":"\u003e=7.1.1,\u003c8","direct":true,"kind":"runtime","optional":false},{"id":759012534,"package_name":"backoff","ecosystem":"pypi","requirements":"\u003e=1.11.0,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":759012535,"package_name":"timeout-decorator","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":759012536,"package_name":"validators","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":759012537,"package_name":"xmltodict","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":759012538,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":759012539,"package_name":"freezegun","ecosystem":"pypi","requirements":"\u003e=1.1.0,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":759012540,"package_name":"httpretty","ecosystem":"pypi","requirements":"\u003e=1.0.0,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":759012541,"package_name":"sftpserver","ecosystem":"pypi","requirements":"\u003e=0.3,\u003c1","direct":true,"kind":"runtime","optional":false},{"id":759012542,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"\u003e=3.10.0.1,\u003c4","direct":true,"kind":"runtime","optional":false},{"id":759012543,"package_name":"numpy","ecosystem":"pypi","requirements":"\u003e=1.20.3,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":759012544,"package_name":"six","ecosystem":"pypi","requirements":"\u003e=1.16.0,\u003c2","direct":true,"kind":"runtime","optional":false},{"id":759012545,"package_name":"oauth2client","ecosystem":"pypi","requirements":"==4.1.","direct":true,"kind":"runtime","optional":false},{"id":759012546,"package_name":"importlib-metadata","ecosystem":"pypi","requirements":"==3.7.3","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"tests/fixtures/cli/my-workflows-project/requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-09T07:00:32.334Z","updated_at":"2022-08-09T07:00:32.334Z","repository_link":"https://github.com/The-Academic-Observatory/observatory-platform/blob/main/tests/fixtures/cli/my-workflows-project/requirements.txt","dependencies":[{"id":759012796,"package_name":"oidsha256","ecosystem":"pypi","requirements":"*","direct":true,"kind":"test","optional":false},{"id":759012798,"package_name":"size12","ecosystem":"pypi","requirements":"*","direct":true,"kind":"test","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/build-observatory-api.yml","sha":null,"kind":"manifest","created_at":"2023-02-16T12:15:26.023Z","updated_at":"2023-02-16T12:15:26.023Z","repository_link":"https://github.com/The-Academic-Observatory/observatory-platform/blob/main/.github/workflows/build-observatory-api.yml","dependencies":[{"id":7714305709,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7714305710,"package_name":"docker/login-action","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":7714305711,"package_name":"docker/metadata-action","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7714305712,"package_name":"docker/build-push-action","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/publish-pypi.yml","sha":null,"kind":"manifest","created_at":"2023-02-16T12:15:26.071Z","updated_at":"2023-02-16T12:15:26.071Z","repository_link":"https://github.com/The-Academic-Observatory/observatory-platform/blob/main/.github/workflows/publish-pypi.yml","dependencies":[{"id":7714305766,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7714305767,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7714305768,"package_name":"pypa/gh-action-pypi-publish","ecosystem":"actions","requirements":"master","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/unit-tests.yml","sha":null,"kind":"manifest","created_at":"2023-02-16T12:15:26.118Z","updated_at":"2023-02-16T12:15:26.118Z","repository_link":"https://github.com/The-Academic-Observatory/observatory-platform/blob/main/.github/workflows/unit-tests.yml","dependencies":[{"id":7714305776,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7714305777,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7714305778,"package_name":"codecov/codecov-action","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":"observatory-api/Dockerfile","sha":null,"kind":"manifest","created_at":"2023-02-16T12:15:26.210Z","updated_at":"2023-02-16T12:15:26.210Z","repository_link":"https://github.com/The-Academic-Observatory/observatory-platform/blob/main/observatory-api/Dockerfile","dependencies":[{"id":7714305792,"package_name":"python","ecosystem":"docker","requirements":"3.9-slim","direct":true,"kind":"build","optional":false}]}],"score":9.272375762895635,"created_at":"2025-09-04T15:51:08.939Z","updated_at":"2025-10-07T08:14:44.688Z","avatar_url":"https://github.com/The-Academic-Observatory.png","language":"Python","category":null,"sub_category":null,"monthly_downloads":35,"funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["academic","ebooks","higher-education"],"project_url":"https://science.ecosyste.ms/api/v1/projects/35458","html_url":"https://science.ecosyste.ms/projects/35458","bibtex_url":"https://science.ecosyste.ms/projects/35458/export.bibtex","apalike_url":"https://science.ecosyste.ms/projects/35458/export.apalike"}