{"id":34024454,"url":"https://github.com/scailfin/rob-webapi-flask","last_synced_at":"2026-03-17T22:38:45.439Z","repository":{"id":54777362,"uuid":"215668975","full_name":"scailfin/rob-webapi-flask","owner":"scailfin","description":"Default RESTful Web API implementation for the Reproducible Open Benchmarks for Data Analysis Platform (ROB) using the Flask web framework.","archived":false,"fork":false,"pushed_at":"2021-01-29T21:44:58.000Z","size":2906,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-15T06:17:52.925Z","etag":null,"topics":["benchmarks","data-analysis","reproducibility","webapi"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scailfin.png","metadata":{"files":{"readme":"README.rst","changelog":"changelog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-10-17T00:24:05.000Z","updated_at":"2021-01-29T21:45:00.000Z","dependencies_parsed_at":"2022-08-14T02:32:23.559Z","dependency_job_id":null,"html_url":"https://github.com/scailfin/rob-webapi-flask","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/scailfin/rob-webapi-flask","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scailfin%2Frob-webapi-flask","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scailfin%2Frob-webapi-flask/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scailfin%2Frob-webapi-flask/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scailfin%2Frob-webapi-flask/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scailfin","download_url":"https://codeload.github.com/scailfin/rob-webapi-flask/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scailfin%2Frob-webapi-flask/sbom","scorecard":{"id":803098,"data":{"date":"2025-08-11","repo":{"name":"github.com/scailfin/rob-webapi-flask","commit":"8f287faea05308b05d97ef111b2e115f8f40d70e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.6,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/15 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":"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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Warn: no topLevel permission defined: .github/workflows/pypi.yaml: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":"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/build.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/scailfin/rob-webapi-flask/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/scailfin/rob-webapi-flask/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/scailfin/rob-webapi-flask/pypi.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/scailfin/rob-webapi-flask/pypi.yaml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:26","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:28","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:31","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:38","Warn: pipCommand not pinned by hash: .github/workflows/pypi.yaml:23","Warn: pipCommand not pinned by hash: .github/workflows/pypi.yaml:24","Info:   0 out of   4 GitHub-owned GitHubAction 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":"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE: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":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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":"Vulnerabilities","score":1,"reason":"9 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2018-66 / GHSA-562c-5r94-xh97","Warn: Project is vulnerable to: PYSEC-2019-179 / GHSA-5wv5-4vpf-pj6m","Warn: Project is vulnerable to: PYSEC-2023-62 / GHSA-m2qf-hxjv-5gpq","Warn: Project is vulnerable to: GHSA-43qf-4rqw-9q2g","Warn: Project is vulnerable to: GHSA-7rxf-gvfg-47g4","Warn: Project is vulnerable to: GHSA-84pr-m4jr-85g5","Warn: Project is vulnerable to: GHSA-8vgw-p6qm-5gr7","Warn: Project is vulnerable to: PYSEC-2024-71 / GHSA-hxwh-jpp2-84pm","Warn: Project is vulnerable to: PYSEC-2020-43 / GHSA-xc3p-ff3m-f46v"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 19 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"}}]},"last_synced_at":"2025-08-23T11:02:09.220Z","repository_id":54777362,"created_at":"2025-08-23T11:02:09.220Z","updated_at":"2025-08-23T11:02:09.220Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30633524,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-17T22:38:22.569Z","status":"ssl_error","status_checked_at":"2026-03-17T22:38:11.804Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["benchmarks","data-analysis","reproducibility","webapi"],"created_at":"2025-12-13T16:20:09.199Z","updated_at":"2026-03-17T22:38:45.429Z","avatar_url":"https://github.com/scailfin.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":".. image:: https://img.shields.io/badge/License-MIT-yellow.svg\n   :target: https://github.com/scailfin/rob-webapi-flask/blob/master/LICENSE\n\n.. image:: https://github.com/scailfin/flowserv-core/workflows/build/badge.svg\n   :target: https://github.com/scailfin/flowserv-core/actions?query=workflow%3A%22build%22\n\n\n.. image:: https://codecov.io/gh/scailfin/rob-webapi-flask/branch/master/graph/badge.svg?token=iE1ZYCA0lS\n    :target: https://codecov.io/gh/scailfin/rob-webapi-flask\n\n\n\n.. figure:: https://github.com/scailfin/rob-webapi-flask/raw/master/docs/graphics/header-webapi.png\n   :align: center\n   :alt: ROB Web Service Implementation (using Flask)\n\n\n\nAbout\n=====\n\nThis is the default RESTful Web API implementation for the `Reproducible Open Benchmarks for Data Analysis Platform (ROB) \u003chttps://github.com/scailfin/flowserv-core\u003e`_ using  the `Flask web framework \u003chttps://flask.palletsprojects.com\u003e`_.\n\n\n\nInstallation and Configuration\n==============================\n\nThe following installation instructions assume that you install all packages in a local folder `~/projects/rob`.\n\n.. code-block:: bash\n\n    # -- Change the working directory\n\n    cd ~/projects/rob\n\n\nThe Reproducible Open Benchmarks platform is implemented in Python. We recommend using a `virtual environment \u003chttps://virtualenv.pypa.io/en/stable/\u003e`_ for the installation.\n\n.. code-block:: bash\n\n    # -- Create a new virtual environment\n    virtualenv venv\n    # -- Activate the virtual environment\n    source venv/bin/activate\n\n\nThe Flask Web API for ROB requires the ``flowserv`` package. The following steps will install all packages from the respective GitHub repositories:\n\n\n.. code-block:: bash\n\n    git clone git@github.com:scailfin/flowserv-core.git\n    pip install -e flowserv-core\n    git clone git@github.com:scailfin/rob-webapi-flask.git\n    pip install -e rob-webapi-flask\n\n\nThe primary configuration parameters are defined in the `ROB Configuration documentation \u003chttps://github.com/scailfin/flowserv-core/blob/master/docs/configuration.rst\u003e`_. Two additional environment variables are defined by the Web API:\n\n- **ROB_WEBAPI_LOG**: Directory path for API logs (default: ``$FLOWSERV_API_DIR/log``)\n- **ROB_WEBAPI_CONTENTLENGTH**: Maximum size of uploaded files (default: ``16MB``)\n\nIf you run the Flask application from the command line in developer mode using ``flask run``, you also need to set the following environment variables:\n\n.. code-block:: bash\n\n    export FLASK_APP=robflask.api\n    export FLASK_ENV=development\n\n\nThere are also more detailed instructions on the `Demo Setup site \u003chttps://github.com/scailfin/rob-webapi-flask/blob/master/docs/demo-setup.rst\u003e`_ to setup and run the Web API.\n\n\n\nCommand Line Interface\n======================\n\nThe ``robflask`` package includes a command line tool to setup the ROB database and for creating and manipulating benchmarks.\n\nInitialize the ROB database\n---------------------------\n\nInitialize database and base directories for the Reproducible Open Benchmarks (ROB) Web API. The configuration parameters for the database are taken from the respective environment variables. Creates the API base directory if it does not exist.\n\n.. code-block:: console\n\n    Usage: flowserv init [OPTIONS]\n\n      Initialize database and base directories for the API.\n\n    Options:\n      -f, --force  Create database without confirmation\n      --help       Show this message and exit.\n\n\nCreate and delete Benchmarks\n----------------------------\n\nCreate a new benchmark.\n\n.. code-block:: console\n\n    Usage: flowserv workflows create [OPTIONS] TEMPLATE\n\n      Create a new workflow.\n\n    Options:\n      -n, --name TEXT          Unique workflow name.\n      -d, --description TEXT   Short workflow description.\n      -i, --instructions PATH  File containing instructions for running the\n                               workflow.\n\n      -f, --specfile FILE      Optional path to workflow specification file.\n      -m, --manifest FILE      Optional path to workflow manifest file.\n      --help                   Show this message and exit.\n\n\nDelete a given benchmark.\n\n.. code-block:: console\n\n    Usage: flowserv workflows delete [OPTIONS] IDENTIFIER\n\n      Delete a given workflow.\n\n    Options:\n      --help  Show this message and exit.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscailfin%2Frob-webapi-flask","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscailfin%2Frob-webapi-flask","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscailfin%2Frob-webapi-flask/lists"}