{"id":914,"name":"OpenTera","description":"OpenTera: A Framework for Telehealth Applications - Published in JOSS (2023)","url":"https://github.com/introlab/opentera","last_synced_at":"2025-09-04T16:12:13.272Z","repository":{"id":40546102,"uuid":"168543624","full_name":"introlab/opentera","owner":"introlab","description":"OpenTera - Open TeleRehabilitation Server and Micro-Services","archived":false,"fork":false,"pushed_at":"2025-05-20T18:30:54.000Z","size":25443,"stargazers_count":21,"open_issues_count":25,"forks_count":8,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-08-27T23:53:35.232Z","etag":null,"topics":["flask","healthcare","iot","micro-services","python","redis","rehab","robotics","sensors","server","telehealth","teleoperation","telepresence","telerehabilitation","twisted","videoconference","webrtc"],"latest_commit_sha":null,"homepage":"https://github.com/introlab/opentera","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/introlab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/Security.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-01-31T15:01:24.000Z","updated_at":"2025-05-22T18:54:19.000Z","dependencies_parsed_at":"2023-09-26T19:03:13.373Z","dependency_job_id":"e1810218-ed44-4a25-9964-672fff0523f3","html_url":"https://github.com/introlab/opentera","commit_stats":{"total_commits":1691,"total_committers":8,"mean_commits":211.375,"dds":0.5984624482554701,"last_synced_commit":"53fe45929a8bc2f0bf3eadc4da47cb57d4b332be"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/introlab/opentera","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/introlab","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/sbom","scorecard":{"id":491832,"data":{"date":"2025-08-11","repo":{"name":"github.com/introlab/opentera","commit":"b0fe8a24976978fec41ae2adf1e803759e12822d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.6,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/1 approved changesets -- score normalized to 0","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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: docs/Security.md:1","Info: Found linked content: docs/Security.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: docs/Security.md:1","Info: Found text in security policy: docs/Security.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Maintained","score":1,"reason":"0 commit(s) and 2 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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/draft-joss-paper-pdf.yml:1","Warn: no topLevel permission defined: .github/workflows/gen-doc-and-deploy-to-github-pages.yml:1","Warn: no topLevel permission defined: .github/workflows/python-package-pypi.yml:1","Warn: no topLevel permission defined: .github/workflows/run_tests_on_pull_request.yml:1","Warn: no topLevel permission defined: .github/workflows/scheduled-stats.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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"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/draft-joss-paper-pdf.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/draft-joss-paper-pdf.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/draft-joss-paper-pdf.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/draft-joss-paper-pdf.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/draft-joss-paper-pdf.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/draft-joss-paper-pdf.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/gen-doc-and-deploy-to-github-pages.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/gen-doc-and-deploy-to-github-pages.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/gen-doc-and-deploy-to-github-pages.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/gen-doc-and-deploy-to-github-pages.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/gen-doc-and-deploy-to-github-pages.yml:92: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/gen-doc-and-deploy-to-github-pages.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package-pypi.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/python-package-pypi.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package-pypi.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/python-package-pypi.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tests_on_pull_request.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/run_tests_on_pull_request.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tests_on_pull_request.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/run_tests_on_pull_request.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/scheduled-stats.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/scheduled-stats.yml/main?enable=pin","Warn: containerImage not pinned by hash: docker/dev/certificates/Dockerfile:1: pin your Docker image by updating python:3.11.5-bullseye to python:3.11.5-bullseye@sha256:61cddcf3be1b54c518b4a9132c933f36042f20987f6420fede955419b7ef02e9","Warn: containerImage not pinned by hash: docker/dev/teraserver/Dockerfile:1: pin your Docker image by updating python:3.11.5-bullseye to python:3.11.5-bullseye@sha256:61cddcf3be1b54c518b4a9132c933f36042f20987f6420fede955419b7ef02e9","Warn: containerImage not pinned by hash: docker/prod/teraserver/Dockerfile:1: pin your Docker image by updating debian:bookworm to debian:bookworm@sha256:731dd1380d6a8d170a695dbeb17fe0eade0e1c29f654cf0a3a07f372191c3f4b","Warn: pipCommand not pinned by hash: docker/dev/certificates/Dockerfile:5","Warn: pipCommand not pinned by hash: teraserver/python/package.sh:1","Warn: downloadThenRun not pinned by hash: .github/workflows/gen-doc-and-deploy-to-github-pages.yml:52","Warn: pipCommand not pinned by hash: .github/workflows/gen-doc-and-deploy-to-github-pages.yml:87","Warn: downloadThenRun not pinned by hash: .github/workflows/python-package-pypi.yml:36","Warn: pipCommand not pinned by hash: .github/workflows/python-package-pypi.yml:45","Warn: pipCommand not pinned by hash: .github/workflows/python-package-pypi.yml:52","Warn: pipCommand not pinned by hash: .github/workflows/python-package-pypi.yml:53","Warn: pipCommand not pinned by hash: .github/workflows/python-package-pypi.yml:54","Warn: downloadThenRun not pinned by hash: .github/workflows/run_tests_on_pull_request.yml:55","Info:   0 out of   8 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   3 downloadThenRun dependencies pinned","Info:   0 out of   3 containerImage dependencies pinned","Info:   0 out of   7 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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"19 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-79v4-65xg-pq4g","Warn: Project is vulnerable to: GHSA-4grg-w6v8-c28g","Warn: Project is vulnerable to: GHSA-cpwx-vrp4-4pq7","Warn: Project is vulnerable to: GHSA-8qvm-5x2c-j2w7","Warn: Project is vulnerable to: PYSEC-2023-120 / GHSA-45c4-8wx5-qw6w","Warn: Project is vulnerable to: GHSA-5m98-qgg9-wh84","Warn: Project is vulnerable to: GHSA-7gpw-8wmc-pm8g","Warn: Project is vulnerable to: GHSA-8495-4g3g-x7pr","Warn: Project is vulnerable to: PYSEC-2024-26 / GHSA-8qpw-xqxj-h4r2","Warn: Project is vulnerable to: GHSA-9548-qrrj-x5pj","Warn: Project is vulnerable to: PYSEC-2023-246 / GHSA-gfw2-4jvh-wgfg","Warn: Project is vulnerable to: GHSA-pjjw-qhg8-p2p9","Warn: Project is vulnerable to: PYSEC-2023-250 / GHSA-q3qx-c6g2-7pw2","Warn: Project is vulnerable to: PYSEC-2023-251 / GHSA-qvrw-v9rv-5rjx","Warn: Project is vulnerable to: PYSEC-2021-76 / GHSA-v6wp-4m6f-gcjg","Warn: Project is vulnerable to: PYSEC-2023-247 / GHSA-xx9p-xxvh-7g8j","Warn: Project is vulnerable to: PYSEC-2022-48 / GHSA-77rm-9x9h-xj3g","Warn: Project is vulnerable to: GHSA-8gq9-2x98-w8hf","Warn: Project is vulnerable to: PYSEC-2017-65 / GHSA-jwvw-v7c5-m82h"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T19:22:29.384Z","repository_id":40546102,"created_at":"2025-08-19T19:22:29.384Z","updated_at":"2025-08-19T19:22:29.384Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273501981,"owners_count":25117095,"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-03T02:00:09.631Z","response_time":76,"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":"introlab","name":"IntRoLab","uuid":"1263458","kind":"organization","description":"IntRoLab - Intelligent / Interactive / Integrated / Interdisciplinary Robot Lab  @ Université de Sherbrooke","email":null,"website":"https://introlab.3it.usherbrooke.ca","location":"Sherbrooke, Québec, Canada","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1263458?v=4","repositories_count":65,"last_synced_at":"2024-03-26T05:38:36.209Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/introlab","funding_links":[],"total_stars":5420,"followers":138,"following":0,"created_at":"2022-11-03T06:43:31.169Z","updated_at":"2024-03-26T05:38:36.709Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/introlab","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/introlab/repositories"},"packages":[{"id":2840953,"name":"opentera","ecosystem":"pypi","description":"OpenTera base package","homepage":"https://github.com/introlab/opentera","licenses":"Apache Software License","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/introlab/opentera","keywords_array":[],"namespace":null,"versions_count":21,"first_release_published_at":"2021-02-04T15:21:44.000Z","latest_release_published_at":"2025-01-21T18:37:48.000Z","latest_release_number":"1.3.0","last_synced_at":"2025-09-03T20:05:17.912Z","created_at":"2022-04-10T11:57:29.298Z","updated_at":"2025-09-04T06:29:40.099Z","registry_url":"https://pypi.org/project/opentera/","install_command":"pip install opentera --index-url https://pypi.org/simple","documentation_url":"https://opentera.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["License :: OSI Approved :: Apache Software License","Operating System :: OS Independent","Programming Language :: Python :: 3"],"normalized_name":"opentera","project_status":null},"repo_metadata":{"id":40546102,"uuid":"168543624","full_name":"introlab/opentera","owner":"introlab","description":"OpenTera - Open TeleRehabilitation Server and Micro-Services","archived":false,"fork":false,"pushed_at":"2025-05-20T18:30:54.000Z","size":25443,"stargazers_count":21,"open_issues_count":25,"forks_count":8,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-08-27T23:53:35.232Z","etag":null,"topics":["flask","healthcare","iot","micro-services","python","redis","rehab","robotics","sensors","server","telehealth","teleoperation","telepresence","telerehabilitation","twisted","videoconference","webrtc"],"latest_commit_sha":null,"homepage":"https://github.com/introlab/opentera","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/introlab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/Security.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-01-31T15:01:24.000Z","updated_at":"2025-05-22T18:54:19.000Z","dependencies_parsed_at":"2023-09-26T19:03:13.373Z","dependency_job_id":"e1810218-ed44-4a25-9964-672fff0523f3","html_url":"https://github.com/introlab/opentera","commit_stats":{"total_commits":1691,"total_committers":8,"mean_commits":211.375,"dds":0.5984624482554701,"last_synced_commit":"53fe45929a8bc2f0bf3eadc4da47cb57d4b332be"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/introlab/opentera","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/introlab","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/sbom","scorecard":{"id":491832,"data":{"date":"2025-08-11","repo":{"name":"github.com/introlab/opentera","commit":"b0fe8a24976978fec41ae2adf1e803759e12822d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.6,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/1 approved changesets -- score normalized to 0","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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: docs/Security.md:1","Info: Found linked content: docs/Security.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: docs/Security.md:1","Info: Found text in security policy: docs/Security.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Maintained","score":1,"reason":"0 commit(s) and 2 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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/draft-joss-paper-pdf.yml:1","Warn: no topLevel permission defined: .github/workflows/gen-doc-and-deploy-to-github-pages.yml:1","Warn: no topLevel permission defined: .github/workflows/python-package-pypi.yml:1","Warn: no topLevel permission defined: .github/workflows/run_tests_on_pull_request.yml:1","Warn: no topLevel permission defined: .github/workflows/scheduled-stats.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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"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/draft-joss-paper-pdf.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/draft-joss-paper-pdf.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/draft-joss-paper-pdf.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/draft-joss-paper-pdf.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/draft-joss-paper-pdf.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/draft-joss-paper-pdf.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/gen-doc-and-deploy-to-github-pages.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/gen-doc-and-deploy-to-github-pages.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/gen-doc-and-deploy-to-github-pages.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/gen-doc-and-deploy-to-github-pages.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/gen-doc-and-deploy-to-github-pages.yml:92: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/gen-doc-and-deploy-to-github-pages.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package-pypi.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/python-package-pypi.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package-pypi.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/python-package-pypi.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tests_on_pull_request.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/run_tests_on_pull_request.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run_tests_on_pull_request.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/run_tests_on_pull_request.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/scheduled-stats.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/introlab/opentera/scheduled-stats.yml/main?enable=pin","Warn: containerImage not pinned by hash: docker/dev/certificates/Dockerfile:1: pin your Docker image by updating python:3.11.5-bullseye to python:3.11.5-bullseye@sha256:61cddcf3be1b54c518b4a9132c933f36042f20987f6420fede955419b7ef02e9","Warn: containerImage not pinned by hash: docker/dev/teraserver/Dockerfile:1: pin your Docker image by updating python:3.11.5-bullseye to python:3.11.5-bullseye@sha256:61cddcf3be1b54c518b4a9132c933f36042f20987f6420fede955419b7ef02e9","Warn: containerImage not pinned by hash: docker/prod/teraserver/Dockerfile:1: pin your Docker image by updating debian:bookworm to debian:bookworm@sha256:731dd1380d6a8d170a695dbeb17fe0eade0e1c29f654cf0a3a07f372191c3f4b","Warn: pipCommand not pinned by hash: docker/dev/certificates/Dockerfile:5","Warn: pipCommand not pinned by hash: teraserver/python/package.sh:1","Warn: downloadThenRun not pinned by hash: .github/workflows/gen-doc-and-deploy-to-github-pages.yml:52","Warn: pipCommand not pinned by hash: .github/workflows/gen-doc-and-deploy-to-github-pages.yml:87","Warn: downloadThenRun not pinned by hash: .github/workflows/python-package-pypi.yml:36","Warn: pipCommand not pinned by hash: .github/workflows/python-package-pypi.yml:45","Warn: pipCommand not pinned by hash: .github/workflows/python-package-pypi.yml:52","Warn: pipCommand not pinned by hash: .github/workflows/python-package-pypi.yml:53","Warn: pipCommand not pinned by hash: .github/workflows/python-package-pypi.yml:54","Warn: downloadThenRun not pinned by hash: .github/workflows/run_tests_on_pull_request.yml:55","Info:   0 out of   8 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   3 downloadThenRun dependencies pinned","Info:   0 out of   3 containerImage dependencies pinned","Info:   0 out of   7 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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"19 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-79v4-65xg-pq4g","Warn: Project is vulnerable to: GHSA-4grg-w6v8-c28g","Warn: Project is vulnerable to: GHSA-cpwx-vrp4-4pq7","Warn: Project is vulnerable to: GHSA-8qvm-5x2c-j2w7","Warn: Project is vulnerable to: PYSEC-2023-120 / GHSA-45c4-8wx5-qw6w","Warn: Project is vulnerable to: GHSA-5m98-qgg9-wh84","Warn: Project is vulnerable to: GHSA-7gpw-8wmc-pm8g","Warn: Project is vulnerable to: GHSA-8495-4g3g-x7pr","Warn: Project is vulnerable to: PYSEC-2024-26 / GHSA-8qpw-xqxj-h4r2","Warn: Project is vulnerable to: GHSA-9548-qrrj-x5pj","Warn: Project is vulnerable to: PYSEC-2023-246 / GHSA-gfw2-4jvh-wgfg","Warn: Project is vulnerable to: GHSA-pjjw-qhg8-p2p9","Warn: Project is vulnerable to: PYSEC-2023-250 / GHSA-q3qx-c6g2-7pw2","Warn: Project is vulnerable to: PYSEC-2023-251 / GHSA-qvrw-v9rv-5rjx","Warn: Project is vulnerable to: PYSEC-2021-76 / GHSA-v6wp-4m6f-gcjg","Warn: Project is vulnerable to: PYSEC-2023-247 / GHSA-xx9p-xxvh-7g8j","Warn: Project is vulnerable to: PYSEC-2022-48 / GHSA-77rm-9x9h-xj3g","Warn: Project is vulnerable to: GHSA-8gq9-2x98-w8hf","Warn: Project is vulnerable to: PYSEC-2017-65 / GHSA-jwvw-v7c5-m82h"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T19:22:29.384Z","repository_id":40546102,"created_at":"2025-08-19T19:22:29.384Z","updated_at":"2025-08-19T19:22:29.384Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273501981,"owners_count":25117095,"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-03T02:00:09.631Z","response_time":76,"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_record":{"login":"introlab","name":"IntRoLab","uuid":"1263458","kind":"organization","description":"IntRoLab - Intelligent / Interactive / Integrated / Interdisciplinary Robot Lab  @ Université de Sherbrooke","email":null,"website":"https://introlab.3it.usherbrooke.ca","location":"Sherbrooke, Québec, Canada","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1263458?v=4","repositories_count":65,"last_synced_at":"2024-03-26T05:38:36.209Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/introlab","funding_links":[],"total_stars":5420,"followers":138,"following":0,"created_at":"2022-11-03T06:43:31.169Z","updated_at":"2024-03-26T05:38:36.709Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/introlab","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/introlab/repositories"},"tags":[{"name":"v1.3.0","sha":"b0fe8a24976978fec41ae2adf1e803759e12822d","kind":"commit","published_at":"2025-01-21T15:54:07.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.3.0","html_url":"https://github.com/introlab/opentera/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.3.0/manifests"},{"name":"v1.2.6","sha":"b6ab857327a3d049f55449873e51cf575a6c37e1","kind":"commit","published_at":"2024-05-13T12:43:55.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.2.6","html_url":"https://github.com/introlab/opentera/releases/tag/v1.2.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.2.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.2.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.2.6/manifests"},{"name":"v1.2.5","sha":"db616b037aef5c24d6d3253d350268fd833d7eb2","kind":"commit","published_at":"2024-03-05T19:27:12.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.2.5","html_url":"https://github.com/introlab/opentera/releases/tag/v1.2.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.2.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.2.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.2.5/manifests"},{"name":"v1.2.4","sha":"48d604cdf204de164f42f2fdc83d99636f891d7f","kind":"commit","published_at":"2023-10-27T15:13:15.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.2.4","html_url":"https://github.com/introlab/opentera/releases/tag/v1.2.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.2.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.2.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.2.4/manifests"},{"name":"v1.2.4-zenodo","sha":"48d604cdf204de164f42f2fdc83d99636f891d7f","kind":"commit","published_at":"2023-10-27T15:13:15.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.2.4-zenodo","html_url":"https://github.com/introlab/opentera/releases/tag/v1.2.4-zenodo","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.2.4-zenodo","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.2.4-zenodo","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.2.4-zenodo/manifests"},{"name":"v1.2.3","sha":"07b2f5406de1ed2afad4b12b9db9a109d7432ce1","kind":"commit","published_at":"2023-05-31T15:40:27.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.2.3","html_url":"https://github.com/introlab/opentera/releases/tag/v1.2.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.2.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.2.3/manifests"},{"name":"v1.2.2","sha":"417b8abdb8d4cff4b9321e149a531b11cd32687b","kind":"commit","published_at":"2023-05-23T18:45:34.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.2.2","html_url":"https://github.com/introlab/opentera/releases/tag/v1.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.2.2/manifests"},{"name":"v1.2.1","sha":"c2b1ce6590086cef414754841bde6305ac370956","kind":"commit","published_at":"2023-04-19T13:13:06.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.2.1","html_url":"https://github.com/introlab/opentera/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"53fe45929a8bc2f0bf3eadc4da47cb57d4b332be","kind":"commit","published_at":"2023-03-07T18:21:16.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.2.0","html_url":"https://github.com/introlab/opentera/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.2.0/manifests"},{"name":"v1.1.3","sha":"924b28fee99705bf2a3a6031f939a7a49036c7b0","kind":"commit","published_at":"2022-09-21T14:29:40.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.1.3","html_url":"https://github.com/introlab/opentera/releases/tag/v1.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.1.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.1.3/manifests"},{"name":"v1.1.2","sha":"1cc97d854fc13cf5bffb6d5bf1c4d92f530122e2","kind":"commit","published_at":"2022-05-03T11:41:47.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.1.2","html_url":"https://github.com/introlab/opentera/releases/tag/v1.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.1.2/manifests"},{"name":"v1.1.1","sha":"1a1c39219ab9f79bf2fa92fd52c743d720b5c370","kind":"commit","published_at":"2022-03-24T20:05:32.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.1.1","html_url":"https://github.com/introlab/opentera/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"9372ec5d681075ed1d527fd7e53ad94a0263c075","kind":"commit","published_at":"2022-03-22T17:31:20.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.1.0","html_url":"https://github.com/introlab/opentera/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.1.0/manifests"},{"name":"v1.0.10","sha":"586036b3fbb98921974a9b868e6da30ea4a22f43","kind":"commit","published_at":"2022-01-07T15:18:57.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.0.10","html_url":"https://github.com/introlab/opentera/releases/tag/v1.0.10","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.0.10","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.10/manifests"},{"name":"v1.0.9","sha":"179c6c6460d62119627ba5431c1bf614301d62a9","kind":"commit","published_at":"2021-11-30T18:09:16.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.0.9","html_url":"https://github.com/introlab/opentera/releases/tag/v1.0.9","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.0.9","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.9/manifests"},{"name":"v1.0.8","sha":"bfc4de672c9de40b7c9a659be2138731e7ee4e94","kind":"commit","published_at":"2021-09-22T12:16:43.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.0.8","html_url":"https://github.com/introlab/opentera/releases/tag/v1.0.8","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.0.8","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.8/manifests"},{"name":"v1.0.7","sha":"85dd370646ee7b9baac4087768af67a5388a4c24","kind":"commit","published_at":"2021-07-26T12:39:50.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.0.7","html_url":"https://github.com/introlab/opentera/releases/tag/v1.0.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.0.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.7/manifests"},{"name":"v1.0.6","sha":"87ebe0d7f64874e6fff27adc27c2b3b1a2de4f22","kind":"commit","published_at":"2021-06-04T12:15:18.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.0.6","html_url":"https://github.com/introlab/opentera/releases/tag/v1.0.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.0.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.6/manifests"},{"name":"v1.0.5","sha":"cdf99b798e3ae3c58f9b7147ffbedf8ef630b4b0","kind":"commit","published_at":"2021-03-29T19:02:20.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.0.5","html_url":"https://github.com/introlab/opentera/releases/tag/v1.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.0.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.5/manifests"},{"name":"v1.0.4","sha":"463a0dd0f4d122c140b1a084978e4d49679f1c8b","kind":"commit","published_at":"2021-03-16T12:05:13.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.0.4","html_url":"https://github.com/introlab/opentera/releases/tag/v1.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.0.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.4/manifests"},{"name":"v1.0.3","sha":"8cf6b747c59cb02a2323c96e0304e668239c46f9","kind":"commit","published_at":"2021-03-03T15:16:19.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.0.3","html_url":"https://github.com/introlab/opentera/releases/tag/v1.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.3/manifests"},{"name":"v1.0.2","sha":"6b2f92ce2398be1655bc98c96ee65ca6cd77dfcb","kind":"commit","published_at":"2021-01-25T18:53:05.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.0.2","html_url":"https://github.com/introlab/opentera/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"b6c6db768de13e57fbb64c81f77830062ebabc44","kind":"commit","published_at":"2020-11-26T19:55:48.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.0.1","html_url":"https://github.com/introlab/opentera/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"00f349649b98df6d7cbd3dfb1fbf9327d00c2c67","kind":"commit","published_at":"2020-10-27T17:57:24.000Z","download_url":"https://codeload.github.com/introlab/opentera/tar.gz/v1.0.0","html_url":"https://github.com/introlab/opentera/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/introlab/opentera@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/tags/v1.0.0/manifests"}]},"repo_metadata_updated_at":"2025-09-04T06:29:40.098Z","dependent_packages_count":0,"downloads":101,"downloads_period":"last-month","dependent_repos_count":3,"rankings":{"downloads":14.866125810761247,"dependent_repos_count":8.934956661840761,"dependent_packages_count":10.141135697755281,"stargazers_count":14.237400782347803,"forks_count":11.916640701589062,"docker_downloads_count":null,"average":12.019251930858832},"purl":"pkg:pypi/opentera","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/opentera","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/opentera","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/opentera/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T11:23:34.608Z","issues_count":114,"pull_requests_count":43,"avg_time_to_close_issue":21677597.347826086,"avg_time_to_close_pull_request":613783.7674418605,"issues_closed_count":92,"pull_requests_closed_count":43,"pull_request_authors_count":6,"issue_authors_count":8,"avg_comments_per_issue":0.20175438596491227,"avg_comments_per_pull_request":0.11627906976744186,"merged_pull_requests_count":41,"bot_issues_count":0,"bot_pull_requests_count":1,"past_year_issues_count":12,"past_year_pull_requests_count":2,"past_year_avg_time_to_close_issue":2908409.2,"past_year_avg_time_to_close_pull_request":8962.0,"past_year_issues_closed_count":5,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.08333333333333333,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/issues","maintainers":[{"login":"SBriere","count":105,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/SBriere"},{"login":"doumdi","count":35,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/doumdi"},{"login":"arsp2701","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/arsp2701"}],"active_maintainers":[{"login":"SBriere","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/SBriere"},{"login":"doumdi","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/doumdi"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/opentera/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/opentera/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/opentera/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/opentera/related_packages","maintainers":[{"uuid":"doumdi","login":"doumdi","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/doumdi/","role":null,"created_at":"2023-02-24T22:56:03.852Z","updated_at":"2023-02-24T22:56:03.852Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/doumdi/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":724708,"maintainers_count":308189,"namespaces_count":0,"keywords_count":237984,"github":"pypi","metadata":{"funded_packages_count":50481},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-09-04T05:23:51.177Z","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":623229,"full_name":"introlab/opentera","default_branch":"main","committers":[{"name":"Dominic Létourneau","email":"doumdi@gmail.com","login":"doumdi","count":1133},{"name":"Simon Briere","email":"simon.briere@usherbrooke.ca","login":"SBriere","count":844},{"name":"cvilanova","email":"cyvila@gmail.com","login":"cyvilanova","count":115},{"name":"Philippe A","email":"arsp2701@usherbrooke.ca","login":null,"count":28},{"name":"Gabriel Lauzier","email":"gabriel.lauzier@usherbrooke.ca","login":"G-Lauz","count":2},{"name":"mouhamb","email":"mouhamad.moustapha.mbaye@usherbrooke.ca","login":null,"count":2},{"name":"mouhamb","email":"127998244+mouhamb","login":"mouhamb","count":1},{"name":"arsp2701","email":"47791043+arsp2701","login":"arsp2701","count":1},{"name":"Thomas Mickley-Doyle","email":"tmickleydoyle@gmail.com","login":"tmickleydoyle","count":1},{"name":"Cédric Godin","email":"cedric.godin@me.com","login":"GodCed","count":1}],"total_commits":2128,"total_committers":10,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":212.8,"dds":0.4675751879699248,"past_year_committers":[{"name":"Dominic Létourneau","email":"doumdi@gmail.com","login":"doumdi","count":134},{"name":"Simon Briere","email":"simon.briere@usherbrooke.ca","login":"SBriere","count":66}],"past_year_total_commits":200,"past_year_total_committers":2,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":100.0,"past_year_dds":0.32999999999999996,"last_synced_at":"2025-08-07T06:08:27.118Z","last_synced_commit":"b0fe8a24976978fec41ae2adf1e803759e12822d","created_at":"2023-03-09T08:03:55.142Z","updated_at":"2025-08-07T06:08:27.137Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-08-28T00:00:20.468Z","repositories_count":5479765,"commits_count":853309695,"contributors_count":31095220,"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":"introlab/opentera","html_url":"https://github.com/introlab/opentera","last_synced_at":"2025-08-31T11:23:34.608Z","status":null,"issues_count":114,"pull_requests_count":43,"avg_time_to_close_issue":21677597.347826086,"avg_time_to_close_pull_request":613783.7674418605,"issues_closed_count":92,"pull_requests_closed_count":43,"pull_request_authors_count":6,"issue_authors_count":8,"avg_comments_per_issue":0.20175438596491227,"avg_comments_per_pull_request":0.11627906976744186,"merged_pull_requests_count":41,"bot_issues_count":0,"bot_pull_requests_count":1,"past_year_issues_count":12,"past_year_pull_requests_count":2,"past_year_avg_time_to_close_issue":2908409.2,"past_year_avg_time_to_close_pull_request":8962.0,"past_year_issues_closed_count":5,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.08333333333333333,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"created_at":"2023-05-14T19:35:29.302Z","updated_at":"2025-09-03T01:11:02.363Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/introlab%2Fopentera/issues","issue_labels_count":{"enhancement":67,"bug":20,"wontfix":5,"question":1,"dependencies":1},"pull_request_labels_count":{"dependencies":1,"python":1,"enhancement":1},"issue_author_associations_count":{"MEMBER":98,"NONE":4,"CONTRIBUTOR":2,"COLLABORATOR":1},"pull_request_author_associations_count":{"MEMBER":40,"NONE":5,"CONTRIBUTOR":2},"issue_authors":{"SBriere":72,"doumdi":26,"carolanegt":2,"cyvilanova":1,"arsp2701":1,"galessiorob":1,"mouhamb":1,"maximeboucher5":1},"pull_request_authors":{"SBriere":31,"doumdi":9,"mouhamb":4,"tmickleydoyle":1,"dependabot[bot]":1,"cyvilanova":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-03T00:00:08.273Z","repositories_count":10068975,"issues_count":31218164,"pull_requests_count":95228988,"authors_count":10688649,"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":{"enhancement":4,"bug":2},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"MEMBER":10,"NONE":1},"past_year_pull_request_author_associations_count":{"MEMBER":3},"past_year_issue_authors":{"SBriere":8,"doumdi":2,"maximeboucher5":1},"past_year_pull_request_authors":{"SBriere":3},"maintainers":[{"login":"SBriere","count":103,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/SBriere"},{"login":"doumdi","count":35,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/doumdi"},{"login":"arsp2701","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/arsp2701"}],"active_maintainers":[{"login":"SBriere","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/SBriere"},{"login":"doumdi","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/doumdi"}]},"events":{"total":{"IssuesEvent":21,"WatchEvent":5,"DeleteEvent":1,"IssueCommentEvent":3,"PushEvent":120,"PullRequestEvent":1,"ForkEvent":1,"CreateEvent":1},"last_year":{"IssuesEvent":21,"WatchEvent":5,"DeleteEvent":1,"IssueCommentEvent":3,"PushEvent":120,"PullRequestEvent":1,"ForkEvent":1,"CreateEvent":1}},"keywords":["flask","healthcare","iot","micro-services","python","redis","rehab","robotics","sensors","server","telehealth","teleoperation","telepresence","telerehabilitation","twisted","videoconference","webrtc"],"dependencies":[{"ecosystem":"npm","filepath":"teraserver/easyrtc/package.json","sha":null,"kind":"manifest","created_at":"2022-07-31T23:38:50.206Z","updated_at":"2022-07-31T23:38:50.206Z","repository_link":"https://github.com/introlab/opentera/blob/main/teraserver/easyrtc/package.json","dependencies":[{"id":531743419,"package_name":"ejs","ecosystem":"npm","requirements":"^3.1.6","direct":true,"kind":"runtime","optional":false},{"id":531743420,"package_name":"express","ecosystem":"npm","requirements":"^4.17.3","direct":true,"kind":"runtime","optional":false},{"id":531743421,"package_name":"html","ecosystem":"npm","requirements":"^1.0.0","direct":true,"kind":"runtime","optional":false},{"id":531743422,"package_name":"minimist","ecosystem":"npm","requirements":"^1.2.5","direct":true,"kind":"runtime","optional":false},{"id":531743423,"package_name":"open-easyrtc","ecosystem":"npm","requirements":"git+https://github.com/open-easyrtc/open-easyrtc.git","direct":true,"kind":"runtime","optional":false},{"id":531743424,"package_name":"redis","ecosystem":"npm","requirements":"^3.1.2","direct":true,"kind":"runtime","optional":false},{"id":531743425,"package_name":"serve-static","ecosystem":"npm","requirements":"^1.14.2","direct":true,"kind":"runtime","optional":false},{"id":531743426,"package_name":"socket.io","ecosystem":"npm","requirements":"^2.4.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"teraserver/python/env/requirements.txt","sha":null,"kind":"manifest","created_at":"2022-07-31T23:38:50.522Z","updated_at":"2022-07-31T23:38:50.522Z","repository_link":"https://github.com/introlab/opentera/blob/main/teraserver/python/env/requirements.txt","dependencies":[{"id":531745786,"package_name":"pypiwin32","ecosystem":"pypi","requirements":"==223","direct":true,"kind":"runtime","optional":false},{"id":531745787,"package_name":"Twisted","ecosystem":"pypi","requirements":"==22.1.0","direct":true,"kind":"runtime","optional":false},{"id":531745788,"package_name":"treq","ecosystem":"pypi","requirements":"==21.5.0","direct":true,"kind":"runtime","optional":false},{"id":531745789,"package_name":"cryptography","ecosystem":"pypi","requirements":"==36.0.0","direct":true,"kind":"runtime","optional":false},{"id":531745790,"package_name":"autobahn","ecosystem":"pypi","requirements":"==21.11.1","direct":true,"kind":"runtime","optional":false},{"id":531745791,"package_name":"SQLAlchemy","ecosystem":"pypi","requirements":"==1.4.27","direct":true,"kind":"runtime","optional":false},{"id":531745792,"package_name":"sqlalchemy-schemadisplay","ecosystem":"pypi","requirements":"==1.3","direct":true,"kind":"runtime","optional":false},{"id":531745793,"package_name":"pydot","ecosystem":"pypi","requirements":"==1.4.2","direct":true,"kind":"runtime","optional":false},{"id":531745794,"package_name":"psycopg2-binary","ecosystem":"pypi","requirements":"==2.9.2","direct":true,"kind":"runtime","optional":false},{"id":531745795,"package_name":"Flask","ecosystem":"pypi","requirements":"==2.0.2","direct":true,"kind":"runtime","optional":false},{"id":531745796,"package_name":"Flask-SQLAlchemy","ecosystem":"pypi","requirements":"==2.5.1","direct":true,"kind":"runtime","optional":false},{"id":531745797,"package_name":"Flask-Login","ecosystem":"pypi","requirements":"==0.5.0","direct":true,"kind":"runtime","optional":false},{"id":531745798,"package_name":"Flask-Login-Multi","ecosystem":"pypi","requirements":"==0.1.2","direct":true,"kind":"runtime","optional":false},{"id":531745799,"package_name":"Flask-HTTPAuth","ecosystem":"pypi","requirements":"==4.5.0","direct":true,"kind":"runtime","optional":false},{"id":531745800,"package_name":"Flask-SocketIO","ecosystem":"pypi","requirements":"==5.1.1","direct":true,"kind":"runtime","optional":false},{"id":531745801,"package_name":"Flask-Session","ecosystem":"pypi","requirements":"==0.4.0","direct":true,"kind":"runtime","optional":false},{"id":531745802,"package_name":"flask-restx","ecosystem":"pypi","requirements":"==0.5.1","direct":true,"kind":"runtime","optional":false},{"id":531745803,"package_name":"Flask-Security","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":531745804,"package_name":"Flask-Babel","ecosystem":"pypi","requirements":"==2.0.0","direct":true,"kind":"runtime","optional":false},{"id":531745805,"package_name":"Flask-BabelEx","ecosystem":"pypi","requirements":"==0.9.4","direct":true,"kind":"runtime","optional":false},{"id":531745806,"package_name":"Flask-Migrate","ecosystem":"pypi","requirements":"==3.1.0","direct":true,"kind":"runtime","optional":false},{"id":531745807,"package_name":"flask-swagger-ui","ecosystem":"pypi","requirements":"==3.36.0","direct":true,"kind":"runtime","optional":false},{"id":531745808,"package_name":"Flask-Limiter","ecosystem":"pypi","requirements":"==2.0.2","direct":true,"kind":"runtime","optional":false},{"id":531745809,"package_name":"Flask-Mail","ecosystem":"pypi","requirements":"==0.9.1","direct":true,"kind":"runtime","optional":false},{"id":531745810,"package_name":"Flask-Principal","ecosystem":"pypi","requirements":"==0.4.0","direct":true,"kind":"runtime","optional":false},{"id":531745811,"package_name":"redis","ecosystem":"pypi","requirements":"==4.0.2","direct":true,"kind":"runtime","optional":false},{"id":531745812,"package_name":"txredisapi","ecosystem":"pypi","requirements":"==1.4.7","direct":true,"kind":"runtime","optional":false},{"id":531745813,"package_name":"passlib","ecosystem":"pypi","requirements":"==1.7.4","direct":true,"kind":"runtime","optional":false},{"id":531745814,"package_name":"bcrypt","ecosystem":"pypi","requirements":"==3.2.0","direct":true,"kind":"runtime","optional":false},{"id":531745815,"package_name":"WTForms","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":531745816,"package_name":"pyOpenSSL","ecosystem":"pypi","requirements":"==21.0.0","direct":true,"kind":"runtime","optional":false},{"id":531745817,"package_name":"service-identity","ecosystem":"pypi","requirements":"==21.1.0","direct":true,"kind":"runtime","optional":false},{"id":531745818,"package_name":"PyJWT","ecosystem":"pypi","requirements":"==2.3.0","direct":true,"kind":"runtime","optional":false},{"id":531745819,"package_name":"pylzma","ecosystem":"pypi","requirements":"==0.5.0","direct":true,"kind":"runtime","optional":false},{"id":531745820,"package_name":"bz2file","ecosystem":"pypi","requirements":"==0.98","direct":true,"kind":"runtime","optional":false},{"id":531745821,"package_name":"python-slugify","ecosystem":"pypi","requirements":"==5.0.2","direct":true,"kind":"runtime","optional":false},{"id":531745822,"package_name":"websocket-client","ecosystem":"pypi","requirements":"==1.2.1","direct":true,"kind":"runtime","optional":false},{"id":531745823,"package_name":"pytest","ecosystem":"pypi","requirements":"==6.2.5","direct":true,"kind":"runtime","optional":false},{"id":531745824,"package_name":"jsonschema","ecosystem":"pypi","requirements":"==4.2.1","direct":true,"kind":"runtime","optional":false},{"id":531745825,"package_name":"Jinja2","ecosystem":"pypi","requirements":"==3.0.3","direct":true,"kind":"runtime","optional":false},{"id":531745826,"package_name":"werkzeug","ecosystem":"pypi","requirements":"==2.0.3","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"teraserver/python/examples/device_client/requirements.txt","sha":null,"kind":"manifest","created_at":"2022-07-31T23:38:50.748Z","updated_at":"2022-07-31T23:38:50.748Z","repository_link":"https://github.com/introlab/opentera/blob/main/teraserver/python/examples/device_client/requirements.txt","dependencies":[{"id":531747801,"package_name":"opentera","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":531747802,"package_name":"aiohttp","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":531747803,"package_name":"asyncio","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":531747804,"package_name":"protobuf","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false}]},{"ecosystem":"pypi","filepath":"teraserver/python/examples/user_client/requirements.txt","sha":null,"kind":"manifest","created_at":"2022-07-31T23:38:50.862Z","updated_at":"2022-07-31T23:38:50.862Z","repository_link":"https://github.com/introlab/opentera/blob/main/teraserver/python/examples/user_client/requirements.txt","dependencies":[{"id":531749916,"package_name":"aiohttp","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":531749917,"package_name":"asyncio","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/python-package-pypi.yml","sha":null,"kind":"manifest","created_at":"2023-02-04T07:15:31.473Z","updated_at":"2023-02-04T07:15:31.473Z","repository_link":"https://github.com/introlab/opentera/blob/main/.github/workflows/python-package-pypi.yml","dependencies":[{"id":7346311529,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7346311530,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/run_tests_on_pull_request.yml","sha":null,"kind":"manifest","created_at":"2023-02-04T07:15:31.493Z","updated_at":"2023-02-04T07:15:31.493Z","repository_link":"https://github.com/introlab/opentera/blob/main/.github/workflows/run_tests_on_pull_request.yml","dependencies":[{"id":7346311538,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7346311539,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/draft-joss-paper-pdf.yml","sha":null,"kind":"manifest","created_at":"2023-09-26T19:03:12.679Z","updated_at":"2023-09-26T19:03:12.679Z","repository_link":"https://github.com/introlab/opentera/blob/main/.github/workflows/draft-joss-paper-pdf.yml","dependencies":[{"id":13956349667,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":13956349668,"package_name":"openjournals/openjournals-draft-action","ecosystem":"actions","requirements":"master","direct":true,"kind":"composite","optional":false},{"id":13956349669,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/gen-doc-and-deploy-to-github-pages.yml","sha":null,"kind":"manifest","created_at":"2023-09-26T19:03:12.723Z","updated_at":"2023-09-26T19:03:12.723Z","repository_link":"https://github.com/introlab/opentera/blob/main/.github/workflows/gen-doc-and-deploy-to-github-pages.yml","dependencies":[{"id":13956349671,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":13956349672,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":13956349673,"package_name":"JamesIves/github-pages-deploy-action","ecosystem":"actions","requirements":"3.7.1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":"docker/dev/certificates/Dockerfile","sha":null,"kind":"manifest","created_at":"2023-09-26T19:03:12.788Z","updated_at":"2023-09-26T19:03:12.788Z","repository_link":"https://github.com/introlab/opentera/blob/main/docker/dev/certificates/Dockerfile","dependencies":[{"id":13956349674,"package_name":"python","ecosystem":"docker","requirements":"3.10-bullseye","direct":true,"kind":"build","optional":false}]},{"ecosystem":"docker","filepath":"docker/dev/docker-compose.yml","sha":null,"kind":"manifest","created_at":"2023-09-26T19:03:12.816Z","updated_at":"2023-09-26T19:03:12.816Z","repository_link":"https://github.com/introlab/opentera/blob/main/docker/dev/docker-compose.yml","dependencies":[{"id":13956349675,"package_name":"postgres","ecosystem":"docker","requirements":"14.1-alpine","direct":true,"kind":"runtime","optional":false},{"id":13956349676,"package_name":"redis","ecosystem":"docker","requirements":"6.2-alpine","direct":true,"kind":"runtime","optional":false},{"id":13956349677,"package_name":"opentera-cert-generator","ecosystem":"docker","requirements":"latest","direct":true,"kind":"runtime","optional":false},{"id":13956349678,"package_name":"nginx","ecosystem":"docker","requirements":"latest","direct":true,"kind":"runtime","optional":false},{"id":13956349679,"package_name":"opentera-server","ecosystem":"docker","requirements":"latest","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"docker","filepath":"docker/dev/teraserver/Dockerfile","sha":null,"kind":"manifest","created_at":"2023-09-26T19:03:13.014Z","updated_at":"2023-09-26T19:03:13.014Z","repository_link":"https://github.com/introlab/opentera/blob/main/docker/dev/teraserver/Dockerfile","dependencies":[{"id":13956350009,"package_name":"python","ecosystem":"docker","requirements":"3.10.10-bullseye","direct":true,"kind":"build","optional":false}]},{"ecosystem":"pypi","filepath":"docs/requirements.txt","sha":null,"kind":"manifest","created_at":"2023-09-26T19:03:13.046Z","updated_at":"2023-09-26T19:03:13.046Z","repository_link":"https://github.com/introlab/opentera/blob/main/docs/requirements.txt","dependencies":[{"id":13956350010,"package_name":"sphinx","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13956350011,"package_name":"myst-parser","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13956350012,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13956350013,"package_name":"sphinxcontrib-openapi","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"teraserver/python/examples/service/requirements.txt","sha":null,"kind":"manifest","created_at":"2023-09-26T19:03:13.069Z","updated_at":"2023-09-26T19:03:13.069Z","repository_link":"https://github.com/introlab/opentera/blob/main/teraserver/python/examples/service/requirements.txt","dependencies":[{"id":13956350014,"package_name":"opentera","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"teraserver/python/examples/service_with_assets/requirements.txt","sha":null,"kind":"manifest","created_at":"2023-09-26T19:03:13.081Z","updated_at":"2023-09-26T19:03:13.081Z","repository_link":"https://github.com/introlab/opentera/blob/main/teraserver/python/examples/service_with_assets/requirements.txt","dependencies":[{"id":13956350015,"package_name":"opentera","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"teraserver/python/setup.py","sha":null,"kind":"manifest","created_at":"2023-09-26T19:03:13.093Z","updated_at":"2023-09-26T19:03:13.093Z","repository_link":"https://github.com/introlab/opentera/blob/main/teraserver/python/setup.py","dependencies":[]}],"score":10.785186839640664,"created_at":"2025-09-04T09:17:41.061Z","updated_at":"2025-10-07T08:04:28.359Z","avatar_url":"https://github.com/introlab.png","language":"Python","category":"Scientific Software","sub_category":"Peer-reviewed","monthly_downloads":101,"funding_links":[],"readme_doi_urls":["https://doi.org/10.21105/joss.05497"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://science.ecosyste.ms/api/v1/projects/914","html_url":"https://science.ecosyste.ms/projects/914"}