{"id":20710931,"url":"https://github.com/entur/lamassu","last_synced_at":"2025-04-23T06:19:54.682Z","repository":{"id":37796180,"uuid":"315346001","full_name":"entur/lamassu","owner":"entur","description":"Mobility hub","archived":false,"fork":false,"pushed_at":"2025-04-21T13:31:19.000Z","size":2115,"stargazers_count":9,"open_issues_count":26,"forks_count":8,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-21T14:44:47.981Z","etag":null,"topics":["ror"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"eupl-1.2","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/entur.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","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}},"created_at":"2020-11-23T14:45:48.000Z","updated_at":"2025-04-21T13:25:54.000Z","dependencies_parsed_at":"2023-02-17T10:30:41.348Z","dependency_job_id":"d075fefe-f9fe-4248-9302-4ec290c198bc","html_url":"https://github.com/entur/lamassu","commit_stats":null,"previous_names":[],"tags_count":444,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/entur%2Flamassu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/entur%2Flamassu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/entur%2Flamassu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/entur%2Flamassu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/entur","download_url":"https://codeload.github.com/entur/lamassu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250380168,"owners_count":21420899,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ror"],"created_at":"2024-11-17T02:13:35.245Z","updated_at":"2025-04-23T06:19:54.675Z","avatar_url":"https://github.com/entur.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Lamassu\n\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=entur_lamassu\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=entur_lamassu)\n![Github Workflow](https://github.com/entur/lamassu/actions/workflows/ci.yml/badge.svg)\n\nMobility aggregation service based on the [General Bikeshare Feed Specification (GBFS)](https://github.com/MobilityData/gbfs).\n\n### Configuration\n\n`resources/feedproviders.yml` lists GBFS feeds which will be polled by this application:\n\n        lamassu:\n            providers:\n              - systemId: mysystem\n                operatorId: MFM:Operator:myoperator\n                operatorName: My operator\n                codespace: MFM\n                url: https://myfavoritegbfsfeeed.com/gbfs.json\n                language: en\n\nThis will use the GBFS auto-discovery at `url` and poll `en` language feeds.\n\nNOTE: codespace is relevant when aggregating entities across systems, to avoid conflicts between IDs. \nEvery ID (except systemId, which (by GBFS convention) should already be globally unique) is prefixed by this codespace.\nAt least every operator should be assigned its own unique codespace, assuming operators already maintain data / ID separation accross their feeds.\nThe codespaced operatorId should comply with the following format `\u003ccodespace\u003e:Operator:\u003coperator\u003e`.\n\n#### Configuring Authentication\n\nSome providers may require authentication, e.g. via bearer token, OAuth2 or custom http-headers.\n\n    lamassu:\n        providers:\n          - systemId: my_oauth2_secured_system\n            authentication:\n                scheme: OAUTH2_CLIENT_CREDENTIALS_GRANT\n                properties:\n                    tokenUrl: \"https://mytokenurl.example/\"\n                    clientId: my-client-id\n                    clientPassword: my-client-password\n                    scope: optional-scope\n            ...\n          - systemId: my_bearer_secured_system\n            authentication:\n                scheme: BEARER_TOKEN\n                properties:\n                    accessToken: my-access-token\n            ...\n          - systemId: my_http_headers_secured_system\n            authentication:\n                scheme: HTTP_HEADERS\n                properties:\n                    x-client-id: my-client-id \n                    # you can use a system variable or an environment variable here\n                    x-api-key: ${my-systemproperty-provided-secret-api-key}\n            ...\n\nNote: Keep in mind you should be cautious about storing your credentials in plain text ! Instead of providing credentials in the feedproviders.yml, it might be more appropriate to provide them via ENV variables/system properties. \n\n### End-points\n\n#### `/gbfs`\n\nList all GBFS feeds available via this API\n\n#### `/gbfs/{system}/{feed}`\n\nGBFS feeds for a specific feed system:\n\nE.g.\n\n    /gbfs/boltoslo/free_bike_status\n\nwill return the free_bike_status feed for Bolt's scooter service in Oslo.\n\n#### `/graphql`\n\nGraphQL endpoint targeted at end-user clients. Documentation can be explored at `/graphiql`.\n\n#### Consuming\n\nLamassu supports consuming v2.x and v3.x. The version has to be marked in the feedprovider\nconfig, e.g.:\n\n    - systemId: testozon\n      operatorId: OZO:Operator:testozon\n      operatorName: Ozon\n      url: http://test.com/gbfs\n      version: 3.0\n      codespace: OZO\n      language: en\n\nVersion defaults to 2.3.\n\n#### Versions\n\nLamassu produces both v2.3 and v3.0.\n\nv3.0 feeds can be found in the manifest: `/gbfs/v3/manifest.json`.\n`manifest.json` replaces the proprietary system discovery endpoint, which will \nis now deprecated.\n\n### Development\n\nRequires a locally running redis instance. E.g.:\n\n    docker run -p 127.0.0.1:6379:6379 -d redis redis-server\n\n## Codestyle\nLamassu uses [Prettier Java](https://github.com/jhipster/prettier-java). Use `mvn prettier:write` to reformat code before\npushing changes. You can also configure your IDE to reformat code when you save a file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fentur%2Flamassu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fentur%2Flamassu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fentur%2Flamassu/lists"}