-
-
Notifications
You must be signed in to change notification settings - Fork 704
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
223 additions
and
83 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,223 @@ | ||
# API | ||
|
||
## Feature Toggles | ||
|
||
### Fetching Feature Toggles | ||
|
||
**GET: http://unleash.host.com/features** | ||
|
||
This endpoint is the one all clients should use to fetch all available feature-toggles | ||
from the unleash-server. The response returns all active-toggles and the active | ||
strategy configuration. A feature-toggle will have at-least one strategy. A | ||
strategy will have a 'name' and 'parameters'. | ||
|
||
_Note:_ Clients should perfer the `strategies` property. Legacy props (`strategy` and `parameters`) | ||
will be kept until version 2 of the format. | ||
|
||
This endpoint should never return anything besides a valid *20X/304-response*. It will also | ||
include a `Etag`-header. The value of this header can be used by clients as the value of | ||
the `If-None-Match`-header in the request to prevent a data transfer if the clients already | ||
has the latest response locally. | ||
|
||
**Example response:** | ||
```json | ||
{ | ||
"version": 1, | ||
"features": [ | ||
{ | ||
"name": "Feature.A", | ||
"description": "lorem ipsum", | ||
"enabled": false, | ||
"strategies": [ | ||
{ | ||
"name": "default", | ||
"parameters": {} | ||
} | ||
], | ||
"strategy": "default", | ||
"parameters": {} | ||
}, | ||
{ | ||
"name": "Feature.B", | ||
"description": "lorem ipsum", | ||
"enabled": true, | ||
"strategies": [ | ||
{ | ||
"name": "ActiveForUserWithId", | ||
"parameters": { | ||
"userIdList": "123,221,998" | ||
} | ||
}, | ||
{ | ||
"name": "GradualRolloutRandom", | ||
"parameters": { | ||
"percentage": "10" | ||
} | ||
} | ||
], | ||
"strategy": "ActiveForUserWithId", | ||
"parameters": { | ||
"userIdList": "123,221,998" | ||
} | ||
} | ||
] | ||
} | ||
``` | ||
|
||
**GET: http://unleash.host.com/features/:featureName** | ||
|
||
Used to fetch details about a specific featureToggle. This is mostly provded to make it easy to debug the API. | ||
|
||
_Notice_: You will not get a version property when fetching a specific feature toggle by name. | ||
|
||
```json | ||
{ | ||
"name": "Feature.A", | ||
"description": "lorem ipsum..", | ||
"enabled": false, | ||
"strategies": [ | ||
{ | ||
"name": "default", | ||
"parameters": {} | ||
} | ||
], | ||
"strategy": "default", | ||
"parameters": {} | ||
} | ||
``` | ||
|
||
|
||
### Create a new Feature Toggle | ||
|
||
**POST: http://unleash.host.com/features/** | ||
|
||
**Body:** | ||
```json | ||
{ | ||
"name": "Feature.A", | ||
"description": "lorem ipsum..", | ||
"enabled": false, | ||
"strategies": [ | ||
{ | ||
"name": "default", | ||
"parameters": {} | ||
} | ||
] | ||
} | ||
``` | ||
|
||
Used by the admin-dashboard to create a new feature toggles. The name has to be unique, | ||
otherwise you will get a _403-response_. | ||
|
||
Returns 200-respose if the feature toggle was created successfully. | ||
|
||
### Create a new Feature Toggle | ||
|
||
**PUT: http://unleash.host.com/features/:toggleName** | ||
|
||
**Body:** | ||
```json | ||
{ | ||
"name": "Feature.A", | ||
"description": "lorem ipsum..", | ||
"enabled": false, | ||
"strategies": [ | ||
{ | ||
"name": "default", | ||
"parameters": {} | ||
} | ||
] | ||
} | ||
``` | ||
|
||
Used by the admin-dashboard to update a feature toggles. The name has to match an existing features toggle. | ||
|
||
Returns 200-respose if the feature toggle was updated successfully. | ||
|
||
|
||
## Strategies | ||
|
||
### Fetch Strategies | ||
**GET: http://unleash.host.com/strategies** | ||
|
||
Used to fetch all defined strategies and their defined paramters. | ||
|
||
**Response** | ||
|
||
```json | ||
{ | ||
version: 1, | ||
strategies: [ | ||
{ | ||
name: "default", | ||
description: "Default on/off strategy.", | ||
parametersTemplate: null | ||
}, | ||
{ | ||
name: "ActiveForUserWithEmail", | ||
description: "A comma separated list of email adresses this feature should be active for.", | ||
parametersTemplate: { | ||
emails: "string" | ||
} | ||
}, | ||
{ | ||
name: "Accounts", | ||
description: "Enable for user accounts", | ||
parametersTemplate: { | ||
Accountname: "string" | ||
} | ||
} | ||
]} | ||
``` | ||
|
||
### Create strategy | ||
|
||
**POST: http://unleash.host.com/strategies** | ||
|
||
**Body** | ||
|
||
```json | ||
{ | ||
name: "ActiveForUserWithEmail", | ||
description: "A comma separated list of email adresses this feature should be active for.", | ||
parametersTemplate: { | ||
emails: "string" | ||
} | ||
} | ||
``` | ||
|
||
Used to create a new Strategy. Name must be unique. | ||
|
||
|
||
|
||
# Events | ||
|
||
**GET: http://unleash.host.com/events** | ||
|
||
Used to fetch all changes in the unleash system. | ||
|
||
**Response** | ||
|
||
```json | ||
{ | ||
"version": 1, | ||
"events":[ | ||
{ | ||
"id":454, | ||
"type":"feature-updated", | ||
"createdBy":"unknown", | ||
"createdAt":"2016-08-24T11:22:01.354Z", | ||
"data": { | ||
"name":"eid.bankid.mobile", | ||
"description":"", | ||
"strategy":"default", | ||
"enabled":true, | ||
"parameters":{} | ||
}, | ||
"diffs": [ | ||
{"kind":"E","path":["enabled"],"lhs":false,"rhs":true} | ||
] | ||
} | ||
] | ||
} | ||
``` |
File renamed without changes.
This file was deleted.
Oops, something went wrong.