Skip to content

Switcher API is a Feature Flag API focused on toggling features over different environments and applications

License

Notifications You must be signed in to change notification settings

switcherapi/switcher-api

Repository files navigation


Switcher API
Switching fast. Adapt everywhere.

Master CI Quality Gate Status Known Vulnerabilities License: MIT Docker Hub Slack: Switcher-HQ


Switcher API: Cloud-based Feature Flag API

About

Switcher API is a Feature Manager that allows you to control your application features using feature flags, also known as feature toggles, feature switches, or feature flippers. It is a cloud-based solution that provides a simple and efficient way to manage your features, enabling you to release new features to your users with confidence.

Main features:

  • Easy to setup and seamless integration with your application using our lightweight Client SDKs.
  • Distributed Switchers can be used across multiple applications allowing you to control features in a centralized fashion.
  • Multi-environment support. Create and manage features across different environments.
  • Add extra layer of verification with custom conditions using Strategies.
  • Delegate Switcher criteria decision to specialized application with Switcher Relay.
  • Support to multiple teams and granular access control.
  • Integrate with Slack usign Switcher Slack App to enable approval workflows.
  • Integrate with your CI/CD pipeline to automate feature releases and centralize feature management with Switcher GitOps.
  • Detailed metrics and logs to help you to track and monitor your features.

Local setup

  1. npm ci
  2. Add .env-cmdrc file into the project directory (use '.env-cmdrc-template')
  3. Replace values such as secret keys and URLs

Running Switcher API from Docker Composer manifest file

This option leverages Switcher API and Switcher Management with minimum settings required.

  1. Modify the configuration file "config/.env.dev":
  • JWT_SECRET: With your secure private key
  • SWITCHERAPI_URL: The Switcher API URL that Switcher Management will use internally
  • SM_IP: IP/DNS used by Switcher Management internal redirects
  1. Run:
docker-compose --env-file ./config/.env.dev up -d
  1. Open Switcher Management:
http://localhost

Quick start

Open Swagger UI by accessing the URL: http://localhost:3000/api-docs
Or use Postman by importing either the OpenAPI json from http://localhost:3000/swagger.json or Postman Collection from "requests/Switcher API*"

API configuration

Signing up

Signing up an account to use Switcher API with an email/password or linking it to a GitHub or Bitbucket account.

  • Singing up via email - Admin: /admin/signup [POST]
  • Singing up via GitHub - Admin: /admin/github/auth?code= [POST]
  • Singing up via Bitbucket - Admin: /admin/bitbucket/auth?code= [POST]
  • Access confirmation - Admin: /admin/signup/authorization?code= [POST]

Domain

Domains are responsible for centralizing all settings and configurations.
It is equivalent to an organization that can manage multiple projects, users, and environments.

  • New domain - Domain: /domain/create [POST]

Component

Components are applications that are using Switcher API.
Each component has its own access token and needs to be linked to Switchers.

  • Create a component - Component: /component/create [POST]
  • Generating a new API Key - Component: /component/generateApiKey [GET]

Group

Groups are used to organize Switchers that share the same feature scope.

  • New Group - GroupConfig: /groupconfig/create [POST]

Switcher

Switchers are the main entities to control features.

  • New Switcher - Config: /config/create [POST]

Strategy

Customize the behavior of the Switcher by including strategy rules to your Switchers.

  • New Strategy - ConfigStrategy: /configstrategy/create [POST]

API usage

In order to use Switcher API, you need to authenticate the component before using it.
See also our SDKs to integrate Switcher API with your application.

  • Auth - Client API: /criteria/auth [POST]
  • Executing - Client API: /criteria?key=SWITCHER_KEY [POST]