{"id":13646992,"url":"https://github.com/3scale/APIcast","last_synced_at":"2025-04-21T21:32:17.388Z","repository":{"id":37458383,"uuid":"53965666","full_name":"3scale/APIcast","owner":"3scale","description":"3scale API Gateway","archived":false,"fork":false,"pushed_at":"2024-05-02T23:33:02.000Z","size":7937,"stargazers_count":298,"open_issues_count":73,"forks_count":168,"subscribers_count":42,"default_branch":"master","last_synced_at":"2024-05-06T15:32:36.295Z","etag":null,"topics":["3scale","api-gateway","openresty"],"latest_commit_sha":null,"homepage":"","language":"Lua","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/3scale.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-03-15T17:41:51.000Z","updated_at":"2024-05-30T08:01:55.328Z","dependencies_parsed_at":"2023-09-29T12:44:05.620Z","dependency_job_id":"c9ca4eb6-92ce-44b9-8de3-8b382347be4a","html_url":"https://github.com/3scale/APIcast","commit_stats":null,"previous_names":[],"tags_count":132,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3scale%2FAPIcast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3scale%2FAPIcast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3scale%2FAPIcast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3scale%2FAPIcast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/3scale","download_url":"https://codeload.github.com/3scale/APIcast/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223880388,"owners_count":17219112,"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":["3scale","api-gateway","openresty"],"created_at":"2024-08-02T01:03:17.828Z","updated_at":"2024-11-09T20:30:52.444Z","avatar_url":"https://github.com/3scale.png","language":"Lua","readme":"# APIcast\n\n[![CircleCI](https://circleci.com/gh/3scale/APIcast/tree/master.svg?style=shield)](https://circleci.com/gh/3scale/APIcast/tree/master)\n[![Docker Repository on Quay](https://quay.io/repository/3scale/apicast/status \"Docker Repository on Quay\")](https://quay.io/repository/3scale/apicast)\n[![codecov](https://codecov.io/gh/3scale/apicast/branch/master/graph/badge.svg)](https://codecov.io/gh/3scale/apicast)\n\nAPIcast is an API gateway built on top of [NGINX](https://www.nginx.com/). It is\npart of the [Red Hat 3scale API Management\nPlatform](https://www.redhat.com/en/technologies/jboss-middleware/3scale).\n\n- [**Getting started**](#getting-started)\n- [**Features**](#features)\n- [**Development**](#development)\n- [**Documentation**](#documentation)\n- [**License**](#license)\n\n## Getting started\n\n`master` branch is **not recommended** for production use. For the latest\nrelease, go to the [Releases page](https://github.com/3scale/apicast/releases)\n\n### Docker\n\nYou need to specify an `ACCESS_TOKEN`, that you can get from the 3scale admin\nportal, and also your `ADMIN_PORTAL_DOMAIN`. If you are using SaaS, it is\n`YOUR_ACCOUNT-admin.3scale.net`.\n\n```shell\ndocker run --name apicast --rm -p 8080:8080 -e THREESCALE_PORTAL_ENDPOINT=https://ACCESS_TOKEN@ADMIN_PORTAL_DOMAIN quay.io/3scale/apicast:master\n```\n\nYou can use a JSON configuration file instead:\n\n```shell\ndocker run --name apicast --rm -p 8080:8080 -v $(pwd)/config.json:/opt/app/config.json:ro -e THREESCALE_CONFIG_FILE=/opt/app/config.json quay.io/3scale/apicast:master\n```\n\nIn this example `config.json` is located in the same directory where the\n`docker` command is executed, and it is mounted as a volume at\n`/opt/app/config.json`. `:ro` indicates that the volume will be read-only.\n\nThe JSON file needs to follow the [schema](schema.json), see an [example\nfile](examples/configuration/example-config.json) with the fields that are used\nby APIcast.\n\n### Openshift\n\nYou need to create a secret with your `ACCESS_TOKEN` and your `ADMIN_PORTAL_DOMAIN`:\n\n```shell\noc create secret generic apicast-configuration-url-secret \\\n   --from-literal=password=https://ACCESS_TOKEN@ADMIN_PORTAL_DOMAIN \\\n   --type=kubernetes.io/basic-auth\noc new-app -f https://raw.githubusercontent.com/3scale/apicast/master/openshift/apicast-template.yml\n```\n\n## Features\n\n- Performance: it is fast because it's built on top of [NGINX](https://www.nginx.com/) and uses [LuaJIT](https://luajit.org/).\n- Scalability: APIcast is stateless, so it scales horizontally.\n- Request transformation: allows to modify the headers, the path and the arguments of a request.\n- Rate-limit: can apply limits based on a header, [JWT](https://jwt.io/) claims, the IP of the request and many more.\n- Modular and extensible: thanks to the APIcast [policies framework](doc/policies.md).\n- Monitoring with [Prometheus](https://prometheus.io/).\n- [NGINX instrumentation](https://github.com/open-telemetry/opentelemetry-cpp-contrib) using [OpenTelemetry](https://opentelemetry.io/). Works with [Jaeger](https://www.jaegertracing.io/).\n- Can be deployed in [Openshift](https://www.openshift.com/).\n- Integrates with IDPs like [Keycloak](https://www.keycloak.org) to provide authentication based on [OIDC](https://openid.net/connect/).\n\n## Development\n\nUsing Docker you just need to run:\n```shell\nmake development\n```\n\nThat will create a Docker container and run bash inside it. The project's source\ncode will be available in the container and sync'ed with your local `apicast`\ndirectory, so you can edit files in your preferred environment and still be able\nto run whatever you need inside the Docker container.\n\nTo install the dependencies inside the container run:\n```shell\nmake dependencies\n```\n\nTo run the [unit tests](/doc/unittests.md) inside the container:\n```shell\nmake busted\n```\n\nTo run the [integration tests](/doc/integration-tests.md) inside the container:\n```shell\nmake prove\n```\n\nTo learn about the other available make targets:\n```shell\nmake help\n```\n\nAPIcast uses:\n\n- [OpenResty](http://openresty.org/en/): a platform that includes NGINX, LuaJIT and Lua modules.\n- [busted](https://github.com/Olivine-Labs/busted): for the unit tests.\n- [Test::Nginx](http://search.cpan.org/~agent/Test-Nginx/lib/Test/Nginx/Socket.pm): for the integration tests.\n\nMore info can be found in the [development](/doc/development.md) specific doc.\n\n## Documentation\n\n- [Configuration parameters](doc/parameters.md)\n- [Get started with Lua and OpenResty](doc/policy-development.md)\n- [Learn about policies and write your own](doc/policies.md)\n- [Available Prometheus metrics](doc/prometheus-metrics.md)\n- [Management API](doc/management-api.md)\n- [Contribute](.github/CONTRIBUTING.md)\n\n\n## License\n[Apache 2.0](LICENSE)\n","funding_links":[],"categories":["Capabilities","Lua"],"sub_categories":["API Gateways / Edge Services"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F3scale%2FAPIcast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F3scale%2FAPIcast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F3scale%2FAPIcast/lists"}