altair
Open source API gateway written in Go. Created to be lightweight, simple, fast, reliable, cross platform, and programming language agnostic.
Notice
This software is still in alpha version, which may contain several hidden bugs that can cause data loss or unexpected behaviour.
Architecture Diagram
Documentation
Plugin API Documentation
Plugin API Documentation in Postman
Docker
We are on dockerhub! Common implementation of altair docker is to have directory where you store your config and routes folder inside it.
config/
routes/
.env
docker-compose.yml
The content of docker-compose could be like this:
version: "3.8"
services:
altair:
image: codefluence/altair:latest
volumes:
- ./routes/:/opt/altair/routes/
- ./config/:/opt/altair/config/
- ./.env:/opt/altair/.env
ports:
- "1304:1304"
network_mode: host
env_file: ./.env
How to Use
We recommend you to use Altair using docker-compose like above. But if you want to use the binary instead, you could download the binary from release pages.
How to Contribute
Installation
Prerequisites
- Go >= 1.13
- MySQL
How To
- Clone this repo
- Create databases schema based on your .env or/and configuration
- Make sure mysql running
go run altair.go migrate main_database
go run altair.go run
- Read CONTRIBUTING.md
Feature
- [ ] Request Forwarder
- [x] Route Compiler
- [x] Route Generator Forwader
- [x] Downstream Plugins
- [x] Oauth Token Checking
- [x] Oauth Scope Checking
- [ ] Response Caching
- [ ] Persistent HTTP client implementation
- [x] Metric & Monitoring
- [x] Prometheus
- [x] Logging
- [x] Stdout
- [ ] Plugins
- [ ] Plugin dynamic database migration
- [ ] Oauth Authorization
- [x] CRUD Oauth Application
- [x] Create
- [x] List
- [x] One
- [x] Update
- [x] Authorization
- [x] Authorization Code Grant
- [ ] Access Token
- [x] Access Token Implicit Request for Confidential Application
- [x] Access Token Code Grant Flow
- [ ] Refresh Token
- [ ] Access Token Refresh Token Flow
- [ ] Refresh Token Generation
- [x] Revoke Access Token
- [x] CRUD Oauth Application
- [ ] Response Caching
- [ ] Route Config
- [ ] API for deleting the cache
- [ ] JWT