mirror of
https://github.com/Unleash/unleash.git
synced 2025-01-01 00:08:27 +01:00
224 lines
4.8 KiB
Markdown
224 lines
4.8 KiB
Markdown
|
# 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}
|
||
|
]
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
```
|