Go C Shell Python JavaScript Java Other
Latest commit 1959a13 Jun 1, 2017 @mvdan mvdan dash: don't use ioutil.ReadAll to decode JSON
It's an unnecessary step. The JSON decoder can work on a stream on its
own.
Permalink
Failed to load latest commit information.
.github Add templates for issues and PR's Jan 17, 2017
apidef all: simplify some code Apr 5, 2017
apps apps/quickstart: fix target URL May 2, 2017
coprocess Shorten EventMessage fields Mar 7, 2017
event_handlers Shorten EventMessage fields Mar 7, 2017
install Update default uptime test configuration Apr 18, 2017
js Added JS Middleware auth plgin support Sep 29, 2016
log Move logrus imports back to the original repos Apr 21, 2017
middleware Apply all misspell suggestions Feb 1, 2017
policies Sampe policy file Feb 25, 2015
templates Shorten EventMessage fields Mar 7, 2017
testdata Add MaxMind GeoIP test DB to use in the tests Feb 3, 2017
utils Add package description to fpm commands Apr 4, 2017
vendor api: replace cmap with a regular old map May 19, 2017
.gitignore Add MaxMind GeoIP test DB to use in the tests Feb 3, 2017
.travis.yml vendor: add tools we use on CI Mar 2, 2017
CHANGELOG.md Update CHANGELOG.md Mar 30, 2017
CLA.md Create separate contributing guidelines Jan 20, 2017
CONTRIBUTING.md test: depend on a real redis server again Feb 3, 2017
LICENSE.md Added license Aug 13, 2014
README.md Fix typo in docs Mar 8, 2017
analytics.go all: cleanup some code Apr 26, 2017
analytics_test.go Unexport a bunch of helper funcs Mar 2, 2017
api.go all: simplify global api spec map usage May 30, 2017
api_definition.go all: rework a few naked fors May 29, 2017
api_definition_test.go all: simplify global api spec map usage May 30, 2017
api_healthcheck.go all: simplify some interface handling code Jun 2, 2017
api_loader.go all: simplify global api spec map usage May 30, 2017
api_test.go all: simplify global api spec map usage May 30, 2017
auth_manager.go all: use helper funcs for ctx's SessionData (#734) May 12, 2017
batch_requests.go api: rework to vastly simplify json logic May 15, 2017
batch_requests_test.go test: replace harmless httpbin/lonelycode usage Feb 15, 2017
blueprint.go all: simplify a few global declarations May 29, 2017
command_mode.go all: rework some return logic (#733) May 12, 2017
config.go config: switch to using a list of config paths May 17, 2017
config_test.go config: add tests for reading/writing from disk May 17, 2017
coprocess.go all: remove TykMiddleware stutter May 29, 2017
coprocess_api.go all: unexport a bunch of funcs May 4, 2017
coprocess_bundle.go all: remove spec.APIDefinition.Foo stutter May 19, 2017
coprocess_dummy.go Move logrus imports back to the original repos Apr 21, 2017
coprocess_events.go Some more cleanups, remove commented out code (#489) Feb 9, 2017
coprocess_grpc.go all: rework some return logic (#733) May 12, 2017
coprocess_helpers.go all: use helper funcs for ctx's SessionData (#734) May 12, 2017
coprocess_id_extractor.go all: use helper funcs for ctx's auth token May 15, 2017
coprocess_id_extractor_test.go all: cleanup test methods, uris and params May 10, 2017
coprocess_lua.go Make C files in the root package symlinks again May 2, 2017
coprocess_native.go Make C files in the root package symlinks again May 2, 2017
coprocess_python.go coprocess_python: enforce main thread lock when reloading bundles. May 24, 2017
coprocess_python_api.c Make C files in the root package symlinks again May 2, 2017
coprocess_test.go all: cleanup test methods, uris and params May 10, 2017
coprocess_test_helpers.go Make C files in the root package symlinks again May 2, 2017
dashboard_register.go dash: don't use ioutil.ReadAll to decode JSON Jun 2, 2017
distributed_rate_limiter.go Move logrus imports back to the original repos Apr 21, 2017
event_handler_webhooks.go all: simplify a couple of bool assigns May 11, 2017
event_handler_webhooks_test.go Shorten EventMessage fields Mar 7, 2017
event_system.go all: simplify a few global declarations May 29, 2017
extended_method_versioning_test.go all: cleanup test methods, uris and params May 10, 2017
gateway_test.go config: switch to using a list of config paths May 17, 2017
handler_error.go all: remove TykMiddleware stutter May 29, 2017
handler_success.go all: remove spec.APIDefinition.Foo stutter May 19, 2017
handler_websocket.go websocket: handle request transmission errors May 19, 2017
host_checker.go hostchecker: remove ID field Apr 26, 2017
host_checker_manager.go all: simplify global api spec map usage May 30, 2017
host_checker_test.go all: simplify global api spec map usage May 30, 2017
instrumentation_handlers.go Remove unnecessary uses of fmt Feb 27, 2017
instrumentation_statsd_sink.go Simplify sanitizeKey Feb 24, 2017
jsvm_event_handler.go all: simplify a few global declarations May 29, 2017
ldap_auth_handler.go Unindent and simplify some redis code Mar 9, 2017
le_helpers.go Move logrus imports back to the original repos Apr 21, 2017
main.go all: simplify some interface handling code Jun 2, 2017
middleware.go mw: remove unnecessary static map May 8, 2017
middleware_access_rights.go all: use helper funcs for ctx's auth token May 15, 2017
middleware_auth_key.go all: remove TykMiddleware stutter May 29, 2017
middleware_auth_key_test.go all: use helper funcs for ctx's SessionData (#734) May 12, 2017
middleware_basic_auth.go all: remove TykMiddleware stutter May 29, 2017
middleware_basic_auth_test.go all: use helper funcs for ctx's SessionData (#734) May 12, 2017
middleware_context_vars.go Context vars now include a correlation ID May 13, 2017
middleware_context_vars_test.go Context vars now include a correlation ID May 13, 2017
middleware_example_test.go all: remove TykMiddleware stutter May 29, 2017
middleware_granular_access.go all: use helper funcs for ctx's auth token May 15, 2017
middleware_hmac.go all: remove TykMiddleware stutter May 29, 2017
middleware_hmac_test.go all: use helper funcs for ctx's SessionData (#734) May 12, 2017
middleware_ip_whitelist.go all: remove TykMiddleware stutter May 29, 2017
middleware_ip_whitelist_test.go all: cleanup test methods, uris and params May 10, 2017
middleware_jwt.go all: remove TykMiddleware stutter May 29, 2017
middleware_jwt_test.go all: use helper funcs for ctx's SessionData (#734) May 12, 2017
middleware_key_expired_check.go all: remove TykMiddleware stutter May 29, 2017
middleware_method_transform.go mw: remove anonymous field stutters May 10, 2017
middleware_modify_headers.go mw: dedup another valToStr copy-paste May 29, 2017
middleware_oauth2_key_exists.go all: remove TykMiddleware stutter May 29, 2017
middleware_openid.go all: remove TykMiddleware stutter May 29, 2017
middleware_organisation_activity.go all: remove TykMiddleware stutter May 29, 2017
middleware_rate_check.go Make golint happier with consistent receiver names Feb 15, 2017
middleware_rate_limiting.go all: remove TykMiddleware stutter May 29, 2017
middleware_redis_cache.go all: remove TykMiddleware stutter May 29, 2017
middleware_request_size_limit.go mw: remove anonymous field stutters May 10, 2017
middleware_track_endpoints.go all: remove TykMiddleware stutter May 29, 2017
middleware_transform.go all: remove spec.APIDefinition.Foo stutter May 19, 2017
middleware_url_rewrite.go mw: dedup another valToStr copy-paste May 29, 2017
middleware_url_rewrite_test.go Refactor url rewrite tests into sub-tests Feb 13, 2017
middleware_version_check.go all: remove TykMiddleware stutter May 29, 2017
middleware_virtual_endpoint.go all: remove TykMiddleware stutter May 29, 2017
monitor.go Shorten EventMessage fields Mar 7, 2017
multi_target_proxy_handler.go Move logrus imports back to the original repos Apr 21, 2017
multiauth_test.go all: use helper funcs for ctx's SessionData (#734) May 12, 2017
oauth_manager.go api: rework to vastly simplify json logic May 15, 2017
oauth_manager_test.go all: simplify global api spec map usage May 30, 2017
plugins.go all: remove TykMiddleware stutter May 29, 2017
plugins_test.go jsvm: add a timeout and use it to kill the VM May 2, 2017
policy.go all: merge some ifs to unindent code May 8, 2017
redis_cluster_handler.go all: act on a bunch of ignored errors Apr 20, 2017
redis_logrus_hook.go all: unexport a bunch of funcs May 4, 2017
redis_notifier_outbound.go Fix dashboard API reloads Mar 22, 2017
redis_signal_dash_zeroconf.go Move logrus imports back to the original repos Apr 21, 2017
redis_signal_handle_config.go config: switch to using a list of config paths May 17, 2017
redis_signal_handle_config_request.go config: switch to using a list of config paths May 17, 2017
redis_signal_outbound.go Move logrus imports back to the original repos Apr 21, 2017
redis_signals.go Move logrus imports back to the original repos Apr 21, 2017
res_handler_header_injector.go all: cleanup some code Apr 26, 2017
res_handler_header_transform.go Merge some lines together Mar 8, 2017
res_handler_transform.go all: remove spec.APIDefinition.Foo stutter May 19, 2017
rpc_analytics_purger.go Simplify API code even more Mar 9, 2017
rpc_backup_handlers.go all: unexport a bunch of funcs May 4, 2017
rpc_storage_handler.go all: simplify some interface handling code Jun 2, 2017
sds.c Make C files in the root package symlinks again May 2, 2017
service_discovery.go Replace forked gabs from 2015 with 1.0 from 2016 Apr 21, 2017
service_discovery_test.go Remove all logs from the tests Feb 27, 2017
session_manager.go Lowercase most of the non-var style variables Mar 2, 2017
session_state.go session: make MetaData a map[string]string May 13, 2017
storage_handlers.go storage_handlers: use a simpler error definition Feb 17, 2017
swagger.go all: simplify a few global declarations May 29, 2017
tyk.conf.example RH: Make use of the ListenAddress supported by the net and tls librar… Jul 15, 2016
tyk_reverse_proxy_clone.go all: remove spec.APIDefinition.Foo stutter May 19, 2017
util_http_helpers.go api: bring back func to list request addresses May 2, 2017
util_http_helpers_test.go Rework GetIPFromRequest and add ipv6 tests Feb 13, 2017
version.go Make a couple of global strings constants Apr 4, 2017

README.md

Tyk API Gateway

Build Status Go Report Card

Tyk is a lightweight, open source API Gateway and Management Platform enables you to control who accesses your API, when they access it and how they access it. Tyk will also record detailed analytics on how your users are interacting with your API and when things go wrong.

Go version 1.7 or later is required to build. Tyk is officially supported on linux/amd64, linux/i386 and linux/arm64.

What is an API Gateway?

An API Gateway sits in front of your application(s) and manages the heavy lifting of authorisation, access control and throughput limiting to your services. Ideally, it should mean that you can focus on creating services instead of implementing management infrastructure. For example if you have written a really awesome web service that provides geolocation data for all the cats in NYC, and you want to make it public, integrating an API gateway is a faster, more secure route than writing your own authorisation middleware.

Key Features of Tyk

Tyk offers powerful, yet lightweight features that allow fine grained control over your API ecosystem.

  • RESTFul API - Full programmatic access to the internals makes it easy to manage your API users, keys and Api Configuration from within your systems
  • Multiple access protocols - Out of the box, Tyk supports Token-based, HMAC Signed, Basic Auth and Keyless access methods
  • Rate Limiting - Easily rate limit your API users, rate limiting is granular and can be applied on a per-key basis
  • Quotas - Enforce usage quotas on users to manage capacity or charge for tiered access
  • Granular Access Control - Grant api access on a version by version basis, grant keys access to multiple API's or just a single version
  • Key Expiry - Control how long keys are valid for
  • API Versioning - API Versions can be easily set and deprecated at a specific time and date
  • Blacklist/Whitelist/Ignored endpoint access - Enforce strict security models on a version-by-version basis to your access points
  • Analytics logging - Record detailed usage data on who is using your API's (raw data only)
  • Webhooks - Trigger webhooks against events such as Quota Violations and Authentication failures
  • IP Whitelisting - Block access to non-trusted IP addresses for more secure interactions
  • Zero downtime restarts - Tyk configurations can be altered dynamically and the service restarted without affecting any active request

Tyk is written in Go, which makes it fast and easy to set up. Its only dependencies are a Mongo database (for analytics) and Redis, though it can be deployed without either (not recommended).

Why?

Tyk was built because other open source API Gateways in the market come with dependencies and bloat, attempting to be too many things to too many people. tyk is focused, simple and does one thing well - protecting your API from unauthorised access.

Documentation

All the documentation can be found on our main site at http://tyk.io/.

License

Tyk is released under the MPL v2.0 please see the license file for a full version of the license.

Contributing

For more information about contributing PRs and issues, see our Contribution Guidelines.

Roadmap

To coordinate development and be completely transparent as to where the project is going, the version roadmap for the next version, as well as proposed features and adopted proposals can be viewed on our public Trello board.

Any proposals can be made in the Github issue tracker, proposals that are adopted will be placed into the trello and then moved according to their status.