{"id":46289783,"url":"https://github.com/hubmapconsortium/gateway","last_synced_at":"2026-03-04T08:01:33.034Z","repository":{"id":37485731,"uuid":"208119009","full_name":"hubmapconsortium/gateway","owner":"hubmapconsortium","description":"Custom gateway service with auth check for APIs and file assets not hosted with AWS API Gateway","archived":false,"fork":false,"pushed_at":"2025-12-05T14:44:25.000Z","size":2418,"stargazers_count":0,"open_issues_count":7,"forks_count":1,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-12-08T01:22:30.877Z","etag":null,"topics":["docker","docker-compose","flask","nginx","ot2od030545","python3","uwsgi"],"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/hubmapconsortium.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-09-12T18:29:45.000Z","updated_at":"2025-12-04T17:20:09.000Z","dependencies_parsed_at":"2023-12-18T17:43:53.035Z","dependency_job_id":"c5b6dff2-8768-4767-912a-bb97fdea4ce7","html_url":"https://github.com/hubmapconsortium/gateway","commit_stats":null,"previous_names":[],"tags_count":92,"template":false,"template_full_name":null,"purl":"pkg:github/hubmapconsortium/gateway","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hubmapconsortium%2Fgateway","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hubmapconsortium%2Fgateway/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hubmapconsortium%2Fgateway/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hubmapconsortium%2Fgateway/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hubmapconsortium","download_url":"https://codeload.github.com/hubmapconsortium/gateway/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hubmapconsortium%2Fgateway/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30075909,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T05:31:57.858Z","status":"ssl_error","status_checked_at":"2026-03-04T05:31:38.462Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["docker","docker-compose","flask","nginx","ot2od030545","python3","uwsgi"],"created_at":"2026-03-04T08:01:32.023Z","updated_at":"2026-03-04T08:01:33.025Z","avatar_url":"https://github.com/hubmapconsortium.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HuBMAP Hybrid Gateway Overview\n\nThis HuBMAP Gateway serves as an authentication and authorization gateway for some of the HuBMAP API services and File assets service, it also proxies the requests to the UI applications. \n\nHTTP requests to the following APIs will be proxied to this gateway service for authentication and authorization against Globus Auth before reaching to the target endpoints. \n\n- Ingest API\n- AVR Antibody API\n\nAnd following are the APIs and UI applications that only use this gateway as reverse proxy without any authentication/authoriztion involved:\n\n- AVR UI\n- Ingest Portal UI\n- Data Portal UI\n\nThe file assets service is not an API per se, the gateway only does the auth cehck for requests made to\n\n- `https://assets.hubmapconsortium.org/\u003cuuid\u003e/\u003crelative-file-path\u003e[?token=\u003cglobus-token\u003e]`\n\nDifferent from the above use cases, the following APIs are protected by AWS API Gateway with using Lambda Authorizors:\n\n- Entity API\n- Search API\n- UUID API\n- Workspaces API (only the REST API part on DEV and PROD)\n- User Templates API\n- Files API\n- UBKG Ontology API\n\nMore details are described in the [aws-api-gateway](https://github.com/hubmapconsortium/aws-api-gateway) repository.\n\n\n## Overview of tools\n\n- [Docker Engine](https://docs.docker.com/install/)\n- [Docker Compose](https://docs.docker.com/compose/install/)\n\nNote: Docker Compose requires Docker to be installed and running first.\n\n### Docker post-installation configurations\n\nThe Docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can only access it using sudo. The Docker daemon always runs as the root user. If you don’t want to preface the docker command with sudo, add users to the `docker` group:\n\n````\nsudo usermod -aG docker $USER\n````\n\nThen log out and log back in so that your group membership is re-evaluated. If testing on a virtual machine, it may be necessary to restart the virtual machine for changes to take effect.\n\nNote: the following instructions with docker commands are based on managing Docker as a non-root user.\n\n## Docker build for DEV development\n\nThere are a few configurable environment variables to keep in mind:\n\n- `COMMONS_BRANCH`: build argument only to be used during image creation when we need to use a branch of commons from github rather than the published PyPI package. Default to main branch if not set or null.\n- `HOST_UID`: the user id on the host machine to be mapped to the container. Default to 1001 if not set or null.\n- `HOST_GID`: the user's group id on the host machine to be mapped to the container. Default to 1001 if not set or null.\n\nWe can set and verify the environment variable like below:\n\n````\nexport COMMONS_BRANCH=main\necho $COMMONS_BRANCH\n````\n\nNote: Environment variables set like this are only stored temporally. When you exit the running instance of bash by exiting the terminal, they get discarded. So for rebuilding the docker image, we'll need to make sure to set the environment variables again if necessary.\n\n```\n./docker-development.sh [check|config|build|start|stop|down]\n```\n\n## Docker build for deployment on TEST/PROD\n\n```\ncd docker\n./docker-deployment.sh [test|prod] [start|stop|down]\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhubmapconsortium%2Fgateway","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhubmapconsortium%2Fgateway","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhubmapconsortium%2Fgateway/lists"}