mirror of
https://github.com/Unleash/unleash.git
synced 2025-01-25 00:07:47 +01:00
cdfba8f7b1
When an application updates metrics for a toggle we now stores the timestamp on the toggle when it was last seen used by an application. This will make it much easier to detect toggles not in use anymore. closes #642
1661 lines
57 KiB
YAML
1661 lines
57 KiB
YAML
# COMMUNITY QUESTIONS
|
|
# About /client/metrics
|
|
# Client variants schema. What are the various weight types and what do they do? Is there a finite list of types for the payload (or is that entirely client-dependent)?
|
|
# Is the client variant schema different to the admin schema? The markdown docs indicate that's the case
|
|
# TESTING
|
|
# QA team test cases. Test code exists but were these based on a list of steps required to produce a result?
|
|
# Are there any real-world users of Unleash who are happy to read and test the Open API specification and make suggestions for improvement? Would they be happy to screen-record what they are doing (how they use the API will give invaluable insights)?
|
|
# Ideally, you'd want developers using Java, Node.js, Go, Ruby, Python and .Net to test
|
|
# Could there be a simple sample app that implemented all API calls (using realistic scenarios)? Might just be a consolidated version of the tests/e2e code with some triggers (buttons) and some UI to display outcomes.
|
|
# OAS REVIEW
|
|
# Move responses to root responses section in components (from schema section)
|
|
# Issues with rendering as nested externaldocs from Swagger UI. See GET /admin/feature-types. Not an issue in other tools (see redoc.html)
|
|
# Other candidates for $ref: createdAt, lastSeen/updatedAt, instanceId, appName/appNamePath, sdkVersion, feature toggle type titles, enabled, stale, weight
|
|
# SWAGGER UI
|
|
# Does not expand all schemas. A SwaggerUIBundle setting?
|
|
# REDOC
|
|
# 'Try it out' instructions do not apply since the free version of Redoc has no such feature. The Postman button helps here...
|
|
# STYLE
|
|
# Add style guide MD. UK/US = US, Newspaper/Movie, Plurals. &. What 's the closest match for Unleash? http://apistylebook.com/design/guidelines/
|
|
# OAS styler - Only use backticks for code samples and API paths. Use bold for schema items and italic for schema item settings
|
|
|
|
openapi: 3.0.3
|
|
servers:
|
|
- description: Local host
|
|
url: 'http://localhost:4242/api'
|
|
- description: Unleash open source demo
|
|
url: 'http://unleash.herokuapp.com/api'
|
|
# - description: Windows server
|
|
# url: 'http://192.168.178.108:4242/api'
|
|
tags:
|
|
- name: Archive
|
|
description: Handling Feature Toggle archiving and un-archiving
|
|
- name: Client
|
|
description: Client application aspects of the Unleash API
|
|
- name: Events
|
|
description: Identifying events on the Unleash server
|
|
- name: Feature toggles
|
|
description: Accessing feature toggles
|
|
- name: Feature types
|
|
description: Details of the five Unleash Feature Toggle types
|
|
- name: Import and export
|
|
description: Importing and exporting feature toggles and strategies
|
|
- name: Metrics
|
|
description: Determining usage of feature toggles and applications
|
|
- name: Strategies
|
|
description: Accessing and updating strategies
|
|
info:
|
|
title: Unleash API
|
|
description: |-
|
|
Unleash is an open source feature flag and toggle system for all your applications and services.
|
|
|
|
## Try it out
|
|
|
|
Once you have [set your Unleash server up](https://unleash.github.io/docs/getting_started), you can test the API from inside your browser. The following assumes the server is running on localhost:4242.
|
|
|
|
The following 'endpoints' (such as `GET /admin/metrics/applications`) provide reference documentation for the Unleash REST API. To try out API calls:
|
|
1. Expand an endpoint
|
|
2. Click **Try it out**
|
|
3. Customize the **Request body** and/or **Parameters**.
|
|
4. Click **Execute**.
|
|
|
|
You will see the cURL request submitted to the API server and the corresponding response.
|
|
|
|
## Try it in Redoc
|
|
|
|
Unlike [the default version](index.html) of the API, the [Redoc version](redoc.html) doesn't have a 'try it out' facility but gives a clearer display of the schemas (which you might prefer)
|
|
|
|
## Try it in Postman
|
|
|
|
Alternatively, you can test the API in [Postman](https://app.getpostman.com/run-collection/8552ddcd4cc9fc012548)
|
|
|
|
[![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/8552ddcd4cc9fc012548)
|
|
version: 3.7.0
|
|
contact:
|
|
name: The Unleash team
|
|
url: 'https://unleash.github.io/'
|
|
externalDocs:
|
|
description: Unleash documentation
|
|
url: 'https://unleash.github.io/docs/getting_started'
|
|
paths:
|
|
/client/register:
|
|
post:
|
|
summary: Registers a client instance with the Unleash server.
|
|
description: You can retrieve this data with a `GET /admin/metrics/applications/{appName}` API call.
|
|
operationId: clientRegister
|
|
externalDocs:
|
|
description: Client specification
|
|
url: 'https://unleash.github.io/docs/client_specification'
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/clientRegistrationSchema'
|
|
tags:
|
|
- Client
|
|
responses:
|
|
'202':
|
|
description: Successful response - client has been registered
|
|
'400':
|
|
description: 'Bad body request (for example, appName is not correct)'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
/client/metrics:
|
|
post:
|
|
summary: Register a metrics payload with a timed bucket.
|
|
description: ???
|
|
operationId: sendMetrics
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/metricsPayloadSchema'
|
|
tags:
|
|
- Client
|
|
- Metrics
|
|
responses:
|
|
'202':
|
|
description: Successful response - payload has been accepted
|
|
'400':
|
|
description: 'Bad body request (for example, appName is not correct)'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
/client/features:
|
|
# Would normally $ref here but it tangles with an OAS bug - which affects both Redoc and Swagger UI - https://github.com/swagger-api/swagger-ui/issues/6249 (closed issue but still broken in latest release)
|
|
get:
|
|
summary: Fetches all feature toggles from the Unleash server.
|
|
description: |-
|
|
The response returns all active feature toggles and their current strategy configuration:
|
|
- Feature toggles will have *at least* one strategy
|
|
- Strategies have a `name` and `parameters` map.
|
|
operationId: getClientFeatures
|
|
externalDocs:
|
|
description: Activation strategies
|
|
url: 'https://unleash.github.io/docs/activation_strategy'
|
|
tags:
|
|
- Client
|
|
- Feature toggles
|
|
responses:
|
|
'200':
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/200client'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
'/client/features/{featureName}':
|
|
get:
|
|
summary: Fetches a specific Feature Toggle from the Unleash server.
|
|
description: |
|
|
The response returns the Feature Toggle's current strategy configuration:
|
|
- It will have *at least* one configured strategy.
|
|
- A strategy will have a *name* and *parameters* map.
|
|
**This is mainly provided to help debug the API. Do not use for client implementations.**
|
|
externalDocs:
|
|
description: Activation strategies
|
|
url: 'https://unleash.github.io/docs/activation_strategy'
|
|
operationId: getClientFeature
|
|
parameters:
|
|
- $ref: '#/components/parameters/featureNamePath'
|
|
tags:
|
|
- Client
|
|
- Feature toggles
|
|
responses:
|
|
'200':
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/200'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
/admin/features:
|
|
get:
|
|
summary: Fetches all feature toggles from the Unleash server.
|
|
description: |
|
|
The response returns all active feature toggles and their current strategy configuration:
|
|
- A feature toggle will have *at least* one configured strategy.
|
|
- A strategy will have a `name` and `parameters` map.
|
|
externalDocs:
|
|
description: Activation strategies
|
|
url: 'https://unleash.github.io/docs/activation_strategy'
|
|
operationId: getFeatures
|
|
tags:
|
|
- Feature toggles
|
|
responses:
|
|
'200':
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/200'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
post:
|
|
summary: Create a Feature Toggle
|
|
description: Create a new Feature Toggle
|
|
tags:
|
|
- Feature toggles
|
|
operationId: createFeatureToggle
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/featureToggleSchema'
|
|
responses:
|
|
'201':
|
|
description: Feature Toggle successfully created
|
|
'400':
|
|
description: 'Bad body request (for example, Feature Toggle name is not unique)'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
'/admin/features/{featureName}':
|
|
get:
|
|
summary: Fetches a specific Feature Toggle from the Unleash server.
|
|
description: |
|
|
The response returns the Feature Toggle's current strategy configuration:
|
|
- It will have *at least* one configured strategy.
|
|
- A strategy will have a *name* and *parameters* map.
|
|
externalDocs:
|
|
description: Activation strategies
|
|
url: 'https://unleash.github.io/docs/activation_strategy'
|
|
operationId: getFeature
|
|
parameters:
|
|
- $ref: '#/components/parameters/featureNamePath'
|
|
tags:
|
|
- Feature toggles
|
|
responses:
|
|
'200':
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/200'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
put:
|
|
summary: Update a Feature Toggle
|
|
description: Update a Feature Toggle.
|
|
operationId: featureName
|
|
tags:
|
|
- Feature toggles
|
|
parameters:
|
|
- $ref: '#/components/parameters/featureNamePath'
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/featureToggleSchema'
|
|
responses:
|
|
'200':
|
|
description: Feature Toggle successfully updated
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/200'
|
|
'400':
|
|
description: Bad body request (for example 'strategies' is not an array)
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
'404':
|
|
description: Feature Toggle not found
|
|
x-code-samples:
|
|
- lang: 'Go'
|
|
source: |
|
|
package main
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"net/http"
|
|
"io/ioutil"
|
|
)
|
|
func main() {
|
|
url := "http://localhost:4242/api/admin/features/featureName"
|
|
payload := strings.NewReader("[{\"name\":\"featureX\",\"description\":\"Toggles featureX on and off\",\"type\":\"release\",\"enabled\":true,\"stale\":false,\"strategies\":[{\"name\":\"default\",\"editable\":true,\"description\":\"Default on/off strategy.\",\"parameters\":{\"parameter\":{\"name\":\"groupId\",\"type\":\"string\",\"description\":\"Define activation groups to allow you to correlate across feature toggles.\",\"required\":false}}}],\"variants\":[{\"name\":\"yellow\",\"weight\":20}],\"createdAt\":\"string\"}]")
|
|
req, _ := http.NewRequest("PUT", url, payload)
|
|
res, _ := http.DefaultClient.Do(req)
|
|
defer res.Body.Close()
|
|
body, _ := ioutil.ReadAll(res.Body)
|
|
fmt.Println(res)
|
|
fmt.Println(string(body))
|
|
}
|
|
- lang: 'Java'
|
|
source: |
|
|
AsyncHttpClient client = new DefaultAsyncHttpClient();
|
|
client.prepare("PUT", "http://localhost:4242/api/admin/features/featureName")
|
|
.setBody("[{\"name\":\"featureX\",\"description\":\"Toggles featureX on and off\",\"type\":\"release\",\"enabled\":true,\"stale\":false,\"strategies\":[{\"name\":\"default\",\"editable\":true,\"description\":\"Default on/off strategy.\",\"parameters\":{\"parameter\":{\"name\":\"groupId\",\"type\":\"string\",\"description\":\"Define activation groups to allow you to correlate across feature toggles.\",\"required\":false}}}],\"variants\":[{\"name\":\"yellow\",\"weight\":20}],\"createdAt\":\"string\"}]")
|
|
.execute()
|
|
.toCompletableFuture()
|
|
.thenAccept(System.out::println)
|
|
.join();
|
|
client.close();
|
|
- lang: 'Python'
|
|
source: |
|
|
import requests
|
|
url = "http://localhost:4242/api/admin/features/featureName"
|
|
payload = "[{\"name\":\"featureX\",\"description\":\"Toggles featureX on and off\",\"type\":\"release\",\"enabled\":true,\"stale\":false,\"strategies\":[{\"name\":\"default\",\"editable\":true,\"description\":\"Default on/off strategy.\",\"parameters\":{\"parameter\":{\"name\":\"groupId\",\"type\":\"string\",\"description\":\"Define activation groups to allow you to correlate across feature toggles.\",\"required\":false}}}],\"variants\":[{\"name\":\"yellow\",\"weight\":20}],\"createdAt\":\"string\"}]"
|
|
response = requests.request("PUT", url, data=payload)
|
|
print(response.text)
|
|
- lang: 'Ruby'
|
|
source: |
|
|
require 'uri'
|
|
require 'net/http'
|
|
url = URI("http://localhost:4242/api/admin/features/featureName")
|
|
http = Net::HTTP.new(url.host, url.port)
|
|
request = Net::HTTP::Put.new(url)
|
|
request.body = "[{\"name\":\"featureX\",\"description\":\"Toggles featureX on and off\",\"type\":\"release\",\"enabled\":true,\"stale\":false,\"strategies\":[{\"name\":\"default\",\"editable\":true,\"description\":\"Default on/off strategy.\",\"parameters\":{\"parameter\":{\"name\":\"groupId\",\"type\":\"string\",\"description\":\"Define activation groups to allow you to correlate across feature toggles.\",\"required\":false}}}],\"variants\":[{\"name\":\"yellow\",\"weight\":20}],\"createdAt\":\"string\"}]"
|
|
response = http.request(request)
|
|
puts response.read_body
|
|
- lang: 'JavaScript'
|
|
source: |
|
|
fetch("http://localhost:4242/api/admin/features/featureName", {
|
|
"method": "PUT",
|
|
"headers": {},
|
|
"body": "[{\"name\":\"featureX\",\"description\":\"Toggles featureX on and off\",\"type\":\"release\",\"enabled\":true,\"stale\":false,\"strategies\":[{\"name\":\"default\",\"editable\":true,\"description\":\"Default on/off strategy.\",\"parameters\":{\"parameter\":{\"name\":\"groupId\",\"type\":\"string\",\"description\":\"Define activation groups to allow you to correlate across feature toggles.\",\"required\":false}}}],\"variants\":[{\"name\":\"yellow\",\"weight\":20}],\"createdAt\":\"string\"}]"
|
|
})
|
|
.then(response => {
|
|
console.log(response);
|
|
})
|
|
.catch(err => {
|
|
console.error(err);
|
|
});
|
|
delete:
|
|
summary: Archive a Feature Toggle.
|
|
description: |
|
|
Feature toggles can only be archived - they cannot be deleted.
|
|
|
|
If an old Feature Toggle *re-appears*, this is because someone else has created a new one with the same name.
|
|
operationId: archiveFeatureToggle
|
|
tags:
|
|
- Feature toggles
|
|
- Archive
|
|
parameters:
|
|
- $ref: '#/components/parameters/featureNamePath'
|
|
responses:
|
|
'200':
|
|
description: Feature Toggle successfully archived
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
'404':
|
|
description: Feature Toggle not found
|
|
'/admin/features/{featureName}/toggle/on':
|
|
post:
|
|
summary: Enable a Feature Toggle.
|
|
description: '**featureName** must match an existing Feature Toggle.'
|
|
operationId: enableFeatureToggle
|
|
tags:
|
|
- Feature toggles
|
|
parameters:
|
|
- $ref: '#/components/parameters/featureNamePath'
|
|
responses:
|
|
'200':
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/200'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
'404':
|
|
description: Feature Toggle not found
|
|
'/admin/features/{featureName}/toggle/off':
|
|
post:
|
|
summary: Disable a Feature Toggle.
|
|
description: '**featureName** must match an existing Feature Toggle.'
|
|
operationId: disableFeatureToggle
|
|
tags:
|
|
- Feature toggles
|
|
parameters:
|
|
- $ref: '#/components/parameters/featureNamePath'
|
|
responses:
|
|
'200':
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/200'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
'404':
|
|
description: Feature Toggle not found
|
|
'/admin/features/{featureName}/stale/on':
|
|
post:
|
|
summary: Mark a Feature Toggle as 'stale' (deprecated).
|
|
description: '**featureName** must match an existing Feature Toggle.'
|
|
externalDocs:
|
|
description: Feature Toggle types
|
|
url: 'https://unleash.github.io/docs/feature_toggle_types'
|
|
operationId: markFeatureToggleStale
|
|
tags:
|
|
- Feature toggles
|
|
parameters:
|
|
- $ref: '#/components/parameters/featureNamePath'
|
|
responses:
|
|
'200':
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/200'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
'404':
|
|
description: Feature Toggle not found
|
|
'/admin/features/{featureName}/stale/off':
|
|
post:
|
|
summary: Mark a Feature Toggle as active.
|
|
description: '**featureName** must match an existing Feature Toggle.'
|
|
externalDocs:
|
|
description: Feature Toggle types
|
|
url: 'https://unleash.github.io/docs/feature_toggle_types'
|
|
operationId: markFeatureToggleActive
|
|
tags:
|
|
- Feature toggles
|
|
parameters:
|
|
- $ref: '#/components/parameters/featureNamePath'
|
|
responses:
|
|
'200':
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/200'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
'404':
|
|
description: Feature Toggle not found
|
|
/admin/archive/features:
|
|
get:
|
|
summary: List all the archived feature toggles on the Unleash server
|
|
description: Archived feature toggles are those that have been previously deleted
|
|
operationId: fetchArchivedToggles
|
|
tags:
|
|
- Archive
|
|
responses:
|
|
'200':
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/200'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
'404':
|
|
description: Feature Toggle not found
|
|
'/admin/archive/revive/{featureName}':
|
|
post:
|
|
summary: Un-archive a Feature Toggle
|
|
description: The Feature Toggle had been previously deleted
|
|
operationId: reviveFeatureToggle
|
|
tags:
|
|
- Archive
|
|
parameters:
|
|
- $ref: '#/components/parameters/featureNamePath'
|
|
responses:
|
|
'200':
|
|
description: Feature Toggle successfully revived
|
|
'404':
|
|
description: Feature Toggle not found
|
|
/admin/strategies:
|
|
get:
|
|
summary: Fetch all strategies and their parameters.
|
|
description: Fetch all strategies and their parameters.
|
|
operationId: getStrategies
|
|
tags:
|
|
- Strategies
|
|
responses:
|
|
'200':
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/200strategy'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
post:
|
|
summary: Create Strategy
|
|
description: Create Strategy
|
|
operationId: createStrategy
|
|
tags:
|
|
- Strategies
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/createStrategy'
|
|
responses:
|
|
'201':
|
|
description: Strategy successfully added
|
|
'400':
|
|
description: Bad body request (for example 'strategies' is not an array)
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
'409':
|
|
description: Strategy already exists
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/409'
|
|
'/admin/strategies/{strategyName}':
|
|
put:
|
|
summary: Update Strategy
|
|
description: |
|
|
Use to update a Strategy definition.
|
|
|
|
**name** and **strategyName** must match and must also match an existing Strategy name.
|
|
|
|
**Caution: It can be dangerous to change a Strategy (as the implementation also might need to be changed).**
|
|
operationId: updateStrategy
|
|
tags:
|
|
- Strategies
|
|
parameters:
|
|
- $ref: '#/components/parameters/strategyNamePath'
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/createStrategy'
|
|
responses:
|
|
'200':
|
|
description: Strategy successfully updated.
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
'404':
|
|
description: Strategy not updated due to errors in query and/or request body (such as **name** and **strategyName** not matching).
|
|
/admin/metrics/seen-toggles:
|
|
get:
|
|
summary: Returns a list of applications and the feature toggles that Unleash has 'seen' for each application.
|
|
description: 'It is only guaranteed that feature toggles reported by client applications within the last hour will be returned. However, in most cases, earlier reported feature toggles will also be returned.'
|
|
operationId: seenToggles
|
|
tags:
|
|
- Metrics
|
|
responses:
|
|
'200':
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/200seen'
|
|
/admin/metrics/feature-toggles:
|
|
get:
|
|
summary: Gives 'last minute' and 'last hour' metrics for all active feature toggles (based on what was reported by the client applications).
|
|
description: |-
|
|
- **Yes** is the number of times a given feature toggle was enabled in a client applucation
|
|
- **No** is the number of times it was disabled.
|
|
operationId: featureToggles
|
|
tags:
|
|
- Metrics
|
|
responses:
|
|
'200':
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/200feature'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
/admin/metrics/applications:
|
|
get:
|
|
summary: A list of known applications ('seen' by Unleash in the last two days)
|
|
description: Also has a link for more details.
|
|
operationId: getApplications
|
|
tags:
|
|
- Metrics
|
|
responses:
|
|
'200':
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/applicationArray'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
'/admin/metrics/applications/{appName}':
|
|
get:
|
|
summary: Details about a client application.
|
|
description: 'Details include things such as instances, strategies implemented and seen feature toggles.'
|
|
operationId: getApplicationDetails
|
|
tags:
|
|
- Metrics
|
|
parameters:
|
|
- $ref: '#/components/parameters/appNamePath'
|
|
responses:
|
|
'200':
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/200appdetails'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
'500':
|
|
description: Application name not found
|
|
/admin/metrics/seen-apps:
|
|
get:
|
|
summary: Details about seen applications
|
|
description: (per Feature Toggle)
|
|
operationId: seenApps
|
|
tags:
|
|
- Metrics
|
|
responses:
|
|
'200':
|
|
description: Successful response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/applicationArray'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
/admin/events:
|
|
get:
|
|
operationId: get-admin-events
|
|
summary: Fetch all changes in the Unleash system
|
|
description: |-
|
|
Returns one of the six event types:
|
|
- feature-created
|
|
- feature-updated
|
|
- feature-archived
|
|
- feature-revived
|
|
- strategy-created
|
|
- strategy-deleted
|
|
tags:
|
|
- Events
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/200-events'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
/admin/state/export:
|
|
get:
|
|
operationId: get-admin-state-export
|
|
summary: Export feature toggles and strategies
|
|
description: Exports a list of feature toggles and/or strategies in either JSON or YAML format.
|
|
externalDocs:
|
|
description: Import and export
|
|
url: 'https://unleash.github.io/docs/import_export'
|
|
tags:
|
|
- Import and export
|
|
parameters:
|
|
- schema:
|
|
type: string
|
|
enum:
|
|
- json
|
|
- yaml
|
|
in: query
|
|
name: format
|
|
description: |
|
|
Choose export format, either json or yaml. json is the default
|
|
example: json
|
|
- schema:
|
|
type: boolean
|
|
in: query
|
|
name: download
|
|
example: false
|
|
description: Do you want to export the data as a file? Default is false
|
|
- schema:
|
|
type: boolean
|
|
in: query
|
|
name: featureToggles
|
|
description: Do you want to include feature toggles in the export? Default is true
|
|
example: true
|
|
- schema:
|
|
type: boolean
|
|
in: query
|
|
name: strategies
|
|
description: Do you want to include strategies in the export? Default is true
|
|
example: true
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/200export'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
/admin/state/import:
|
|
post:
|
|
summary: Import feature toggles and strategies
|
|
operationId: post-admin-state-import
|
|
tags:
|
|
- Import and export
|
|
description: |-
|
|
Upload the data, in JSON or YAML format.
|
|
You can add in the POST body or upload a file
|
|
- **POST body** (JSON format only) - next to **Request body**, choose the *application/json* dropdown option.
|
|
- **File upload** (JOSN or YAML format) - next to **Request body**, choose the *multipart/form-data* dropdown option. This adopts the same schema as `GET /admin/state/export`
|
|
externalDocs:
|
|
description: Import and export
|
|
url: 'https://unleash.github.io/docs/import_export'
|
|
parameters:
|
|
- schema:
|
|
type: boolean
|
|
default: 'false'
|
|
example: false
|
|
in: query
|
|
name: drop
|
|
description: Be careful using this in production environments. Set to true if you want the to remove all strategies and feature toggles from the datebase before import. Default is false.
|
|
- schema:
|
|
type: boolean
|
|
default: 'false'
|
|
example: false
|
|
in: query
|
|
name: keep
|
|
description: Set to *true* if you want keep all existing feature toggles and strategies as is; only the missing feature toggles and strategies will be inserted from the import data. Default is true.
|
|
example: true
|
|
requestBody:
|
|
content:
|
|
multipart/form-data:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
fileName:
|
|
type: string
|
|
format: binary
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/200export'
|
|
responses:
|
|
'200':
|
|
description: Successful import.
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
'404':
|
|
description: No import data provided.
|
|
/admin/feature-types:
|
|
get:
|
|
summary: Fetch the list of Unleash feature types
|
|
description: |-
|
|
- release
|
|
- experiment
|
|
- ops
|
|
- killswitch
|
|
- permission
|
|
operationId: get-admin-feature-types
|
|
tags:
|
|
- Feature types
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/200featuretype'
|
|
'401':
|
|
description: Not authorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/401'
|
|
components:
|
|
parameters:
|
|
featureNamePath:
|
|
name: featureName
|
|
description: Must match an existing Feature Toggle name.
|
|
example: featureX
|
|
required: true
|
|
in: path
|
|
schema:
|
|
type: string
|
|
strategyNamePath:
|
|
name: strategyName
|
|
required: true
|
|
in: path
|
|
description: Must match an existing Strategy name.
|
|
example: flexibleRollout
|
|
schema:
|
|
type: string
|
|
appNamePath:
|
|
name: appName
|
|
required: true
|
|
in: path
|
|
description: Must match an existing application name.
|
|
example: my-application
|
|
schema:
|
|
type: string
|
|
schemas:
|
|
'200':
|
|
title: Successful response
|
|
type: object
|
|
properties:
|
|
version:
|
|
$ref: '#/components/schemas/versionSchema'
|
|
features:
|
|
$ref: '#/components/schemas/featureToggleSchema'
|
|
x-tags:
|
|
- Responses
|
|
'401':
|
|
description: Not authorized
|
|
type: object
|
|
properties:
|
|
type:
|
|
type: string
|
|
minLength: 1
|
|
path:
|
|
type: string
|
|
minLength: 1
|
|
message:
|
|
type: string
|
|
minLength: 1
|
|
required:
|
|
- type
|
|
- path
|
|
- message
|
|
x-tags:
|
|
- Responses
|
|
'409':
|
|
type: object
|
|
required:
|
|
- isJoi
|
|
- name
|
|
- details
|
|
properties:
|
|
isJoi:
|
|
description: For internal use by the Unleash developers
|
|
type: boolean
|
|
name:
|
|
description: Title of error
|
|
type: string
|
|
minLength: 1
|
|
details:
|
|
type: array
|
|
uniqueItems: true
|
|
minItems: 1
|
|
items:
|
|
required:
|
|
- message
|
|
properties:
|
|
message:
|
|
description: Error message
|
|
type: string
|
|
minLength: 1
|
|
x-tags:
|
|
- Responses
|
|
200strategy:
|
|
type: object
|
|
required:
|
|
- version
|
|
- strategies
|
|
properties:
|
|
version:
|
|
$ref: '#/components/schemas/versionSchema'
|
|
strategies:
|
|
$ref: '#/components/schemas/strategySchema'
|
|
x-tags:
|
|
- Responses
|
|
createStrategy:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
minLength: 1
|
|
example: gradualRollout
|
|
description:
|
|
type: string
|
|
minLength: 1
|
|
example: Gradual rollout to logged in users
|
|
parameters:
|
|
type: array
|
|
uniqueItems: true
|
|
minItems: 1
|
|
items:
|
|
required:
|
|
- name
|
|
- type
|
|
- description
|
|
- required
|
|
properties:
|
|
name:
|
|
type: string
|
|
minLength: 1
|
|
example: percentage
|
|
type:
|
|
type: string
|
|
minLength: 1
|
|
example: percentage
|
|
description:
|
|
type: string
|
|
minLength: 1
|
|
example: What percent of users should the new Feature Toggle be active for?
|
|
required:
|
|
type: boolean
|
|
example: true
|
|
required:
|
|
- name
|
|
- description
|
|
- parameters
|
|
x-tags:
|
|
- Schemas
|
|
200seen:
|
|
type: array
|
|
minItems: 1
|
|
uniqueItems: true
|
|
items:
|
|
type: object
|
|
required:
|
|
- appName
|
|
- seenToggles
|
|
- metricsCount
|
|
properties:
|
|
appName:
|
|
type: string
|
|
minLength: 1
|
|
description: 'Application name'
|
|
example: 'my-application'
|
|
seenToggles:
|
|
$ref: '#/components/schemas/toggleSchema'
|
|
x-tags:
|
|
- Responses
|
|
200feature:
|
|
description: |-
|
|
- **lastHour** - how many times a Feature Toggle was accessed in the last hour.
|
|
- **lastMinute** - how many times a Feature Toggle was accessed in the last minute.
|
|
type: array
|
|
minItems: 1
|
|
uniqueItems: true
|
|
items:
|
|
type: object
|
|
required:
|
|
- appName
|
|
- seenToggles
|
|
properties:
|
|
appName:
|
|
type: string
|
|
enum:
|
|
- lastHour
|
|
- lastMinute
|
|
minLength: 1
|
|
example: lastHour
|
|
seenToggles:
|
|
$ref: '#/components/schemas/toggleSchema'
|
|
x-tags:
|
|
- Responses
|
|
metricsPayloadSchema:
|
|
type: object
|
|
required:
|
|
- appName
|
|
- instanceId
|
|
- bucket
|
|
properties:
|
|
appName:
|
|
type: string
|
|
description: 'The name of your application'
|
|
example: 'my-application'
|
|
instanceId:
|
|
description: The name of the system running the application
|
|
type: string
|
|
minLength: 1
|
|
example: generated-732038-17080
|
|
bucket:
|
|
type: object
|
|
required:
|
|
- start
|
|
- stop
|
|
- toggles
|
|
properties:
|
|
start:
|
|
type: string
|
|
description: 'The start time of something (in [ISO8601 format](https://www.w3.org/TR/NOTE-datetime))'
|
|
example: '2020-12-08T13:50:00.000Z'
|
|
stop:
|
|
type: string
|
|
description: 'The end time of that same thing (in [ISO8601 format](https://www.w3.org/TR/NOTE-datetime))'
|
|
example: '2020-12-08T13:55:00.000Z'
|
|
toggles:
|
|
$ref: '#/components/schemas/toggleSchema'
|
|
x-tags:
|
|
- Schemas
|
|
toggleSchema:
|
|
type: object
|
|
required:
|
|
- yesno
|
|
- metricsCount
|
|
properties:
|
|
yesno:
|
|
type: object
|
|
properties:
|
|
yesorno:
|
|
type: string
|
|
enum:
|
|
- 'yes'
|
|
- 'no'
|
|
example: 'yes'
|
|
metricsCount:
|
|
type: object
|
|
properties:
|
|
count:
|
|
type: number
|
|
example: 1
|
|
x-tags:
|
|
- Schemas
|
|
clientRegistrationSchema:
|
|
type: object
|
|
required:
|
|
- appName
|
|
- instanceId
|
|
- strategies
|
|
- started
|
|
- interval
|
|
properties:
|
|
appName:
|
|
type: string
|
|
description: 'The name of your application'
|
|
example: 'my-application'
|
|
instanceId:
|
|
type: string
|
|
description: The name of the system running the application
|
|
minLength: 1
|
|
example: generated-732038-17080
|
|
sdkVersion:
|
|
description: The version of the Unleash client SDK running the application
|
|
type: string
|
|
example: 'unleash-client-node:3.4.0'
|
|
strategies:
|
|
type: array
|
|
description: List of strategy names implemented by this application
|
|
items:
|
|
required:
|
|
- strategy
|
|
properties:
|
|
strategy:
|
|
type: string
|
|
description: Strategy name
|
|
minLength: 1
|
|
example: 'default'
|
|
started:
|
|
type: string
|
|
description: 'When the client started (in [ISO8601 format](https://www.w3.org/TR/NOTE-datetime))'
|
|
example: '2016-11-03T07:16:43.572Z'
|
|
interval:
|
|
type: number
|
|
description: 'How often to send metrics to the Unleash API (in milliseconds)'
|
|
example: 10000
|
|
x-tags:
|
|
- Schemas
|
|
applicationArray:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/application'
|
|
x-tags:
|
|
- Schemas
|
|
application:
|
|
type: object
|
|
required:
|
|
- applications
|
|
properties:
|
|
applications:
|
|
type: array
|
|
uniqueItems: true
|
|
minItems: 1
|
|
items:
|
|
required:
|
|
- appName
|
|
- createdAt
|
|
- updatedAt
|
|
- strategies
|
|
properties:
|
|
appName:
|
|
description: Application name
|
|
type: string
|
|
example: my-application
|
|
createdAt:
|
|
description: 'The first time the application registered with Unleash (in [ISO8601 format](https://www.w3.org/TR/NOTE-datetime))'
|
|
type: string
|
|
example: '2016-12-09T14:56:36.730Z'
|
|
updatedAt:
|
|
description: 'The last time the application ''talked'' to Unleash (sent metrics, registered, fetched feature toggles) - in [ISO8601 format](https://www.w3.org/TR/NOTE-datetime)'
|
|
type: string
|
|
example: '2020-11-14T09:55:23.653Z'
|
|
description:
|
|
description: A description of what the application does
|
|
type: string
|
|
strategies:
|
|
description: A description of what the application does
|
|
type: string
|
|
url:
|
|
description: Absolute URL to the actual application
|
|
type: string
|
|
example: 'http://someapp.internal.url'
|
|
color:
|
|
description: Deprecated. Do not use
|
|
type: string
|
|
icon:
|
|
description: 'The application''s icon. Must be one of the [Material Design icon names](https://material.io/resources/icons/?style=baseline)'
|
|
type: string
|
|
example: comment_bank
|
|
x-tags:
|
|
- Schemas
|
|
200appdetails:
|
|
type: object
|
|
required:
|
|
- application
|
|
- instances
|
|
- strategies
|
|
- seenToggles
|
|
properties:
|
|
application:
|
|
$ref: '#/components/schemas/application'
|
|
strategies:
|
|
$ref: '#/components/schemas/strategySchema'
|
|
instances:
|
|
type: object
|
|
required:
|
|
- appName
|
|
- instanceId
|
|
- sdkVersion
|
|
- clientIp
|
|
- lastSeen
|
|
- createdAt
|
|
properties:
|
|
appName:
|
|
description: Application name
|
|
type: string
|
|
minLength: 1
|
|
example: my-application
|
|
instanceId:
|
|
description: The name of the system running the application
|
|
type: string
|
|
minLength: 1
|
|
example: generated-732038-17080
|
|
sdkVersion:
|
|
description: The version of the Unleash client SDK running the application
|
|
type: string
|
|
minLength: 1
|
|
example: 'unleash-client-node:3.4.0'
|
|
clientIp:
|
|
description: The IP address of the system running this instance of the application
|
|
type: string
|
|
minLength: 1
|
|
example: '::ffff:127.0.0.1'
|
|
lastSeen:
|
|
description: 'The last time the application ''talked'' to Unleash (sent metrics, registered, fetched feature toggles) - in [ISO8601 format](https://www.w3.org/TR/NOTE-datetime)'
|
|
type: string
|
|
minLength: 1
|
|
example: '2020-11-14T11:17:24.482Z'
|
|
createdAt:
|
|
description: 'The first time the application registered with Unleash (in [ISO8601 format](https://www.w3.org/TR/NOTE-datetime))'
|
|
type: string
|
|
minLength: 1
|
|
example: '2020-11-13T16:56:29.279Z'
|
|
seenToggles:
|
|
$ref: '#/components/schemas/featureToggleSchema'
|
|
links:
|
|
type: object
|
|
properties:
|
|
self:
|
|
description: Deprecated. Do not use
|
|
type: string
|
|
minLength: 1
|
|
x-tags:
|
|
- Responses
|
|
featureToggleTypeSchema:
|
|
type: string
|
|
enum:
|
|
- release
|
|
- experiment
|
|
- ops
|
|
- killswitch
|
|
- permission
|
|
description: |-
|
|
'One of the five Unleash Feature Toggle types.
|
|
|
|
**type** is optional. If not defined, it defaults to *release*'
|
|
default: release
|
|
externalDocs:
|
|
description: Feature Toggle types
|
|
url: 'https://unleash.github.io/docs/feature_toggle_types'
|
|
minLength: 1
|
|
example: release
|
|
x-tags:
|
|
- Schemas
|
|
versionSchema:
|
|
type: number
|
|
description: For internal use by the Unleash developers
|
|
example: 1
|
|
x-tags:
|
|
- Schemas
|
|
featureToggleSchema:
|
|
type: array
|
|
items:
|
|
type: object
|
|
required:
|
|
- name
|
|
- description
|
|
- type
|
|
- enabled
|
|
- stale
|
|
- strategies
|
|
properties:
|
|
name:
|
|
description: Feature Toggle name must be unique.
|
|
type: string
|
|
minLength: 1
|
|
example: featureX
|
|
description:
|
|
type: string
|
|
minLength: 1
|
|
example: Toggles featureX on and off
|
|
type:
|
|
$ref: '#/components/schemas/featureToggleTypeSchema'
|
|
enabled:
|
|
description: Is the Feature Toggle enabled?
|
|
type: boolean
|
|
example: true
|
|
stale:
|
|
description: Is the Feature Toggle 'stale' (deprecated)?
|
|
type: boolean
|
|
example: false
|
|
strategies:
|
|
$ref: '#/components/schemas/strategySchema'
|
|
variants:
|
|
$ref: '#/components/schemas/variantsSchema'
|
|
createdAt:
|
|
type: string
|
|
minLength: 1
|
|
x-tags:
|
|
- Schemas
|
|
strategySchema:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
name:
|
|
description: Name of the Strategy
|
|
type: string
|
|
minLength: 1
|
|
example: default
|
|
editable:
|
|
type: boolean
|
|
example: true
|
|
description:
|
|
description: What the Strategy is
|
|
type: string
|
|
example: Default on/off strategy.
|
|
parameters:
|
|
type: object
|
|
properties:
|
|
parameter:
|
|
type: object
|
|
required:
|
|
- name
|
|
- type
|
|
properties:
|
|
name:
|
|
description: The name of the parameter
|
|
type: string
|
|
example: groupId
|
|
type:
|
|
description: The type of the parameter
|
|
type: string
|
|
example: string
|
|
description:
|
|
description: What the parameter does
|
|
type: string
|
|
example: Define activation groups to allow you to correlate across feature toggles.
|
|
required:
|
|
description: Is this a required parameter?
|
|
type: boolean
|
|
example: false
|
|
x-tags:
|
|
- Schemas
|
|
variantsSchema:
|
|
externalDocs:
|
|
description: How to use Feature Toggle variants
|
|
url: 'https://unleash.github.io/docs/toggle_variants'
|
|
type: array
|
|
items:
|
|
required:
|
|
- name
|
|
- weight
|
|
properties:
|
|
name:
|
|
description: The name of the Feature Toggle variant
|
|
type: string
|
|
minLength: 1
|
|
example: yellow
|
|
weight:
|
|
description: |-
|
|
A number between 0 and 1,000.
|
|
The client SDK will summarize all variant weights, hash the number and divide the users among them. The distribution will be according to the weight as a fraction of the sum of weight.
|
|
type: number
|
|
example: 20
|
|
x-tags:
|
|
- Schemas
|
|
|
|
200client:
|
|
type: object
|
|
properties:
|
|
version:
|
|
$ref: '#/components/schemas/versionSchema'
|
|
features:
|
|
type: array
|
|
uniqueItems: true
|
|
minItems: 1
|
|
items:
|
|
required:
|
|
- name
|
|
- description
|
|
- type
|
|
- enabled
|
|
- stale
|
|
- strategies
|
|
- createdAt
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: 'Feature Toggle name'
|
|
minLength: 1
|
|
example: 'Demo'
|
|
description:
|
|
type: string
|
|
description: 'A description of the Feature Toggle'
|
|
minLength: 1
|
|
example: 'Show off fedfdfature toggles'
|
|
type:
|
|
type: string
|
|
enum:
|
|
- Release
|
|
- Experiment
|
|
- Operational
|
|
- Kill switch
|
|
- Permission
|
|
description: 'The title of one of the five Feature Toggle types'
|
|
minLength: 1
|
|
example: 'Operational'
|
|
enabled:
|
|
description: Is the Feature Toggle enabled?
|
|
type: boolean
|
|
example: true
|
|
stale:
|
|
description: Is the Feature Toggle 'stale' (deprecated)?
|
|
type: boolean
|
|
example: false
|
|
strategies:
|
|
$ref: '#/components/schemas/strategySchema'
|
|
variants:
|
|
type: array
|
|
uniqueItems: true
|
|
items:
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: 'Variant name'
|
|
minLength: 1
|
|
example: 'Red'
|
|
weight:
|
|
description: |-
|
|
A number between 0 and 1,000.
|
|
The client SDK will summarize all variant weights, hash the number and divide the users among them. The distribution will be according to the weight as a fraction of the sum of weight.
|
|
type: number
|
|
example: 20
|
|
weightType:
|
|
type: string
|
|
minLength: 1
|
|
example: 'variable'
|
|
payload:
|
|
type: object
|
|
description: 'Optional data associated with the variant, consisting of a *type/value* pair'
|
|
properties:
|
|
type:
|
|
type: string
|
|
example: 'string'
|
|
value:
|
|
type: string
|
|
example: 'Something'
|
|
overrides:
|
|
type: array
|
|
description: An optional array of overrides. If any [context](https://unleash.github.io/docs/unleash_context) field matches any of these overrides, *this* variant will be selected.
|
|
items:
|
|
type: object
|
|
properties:
|
|
contextName:
|
|
type: string
|
|
description: 'One of the six context fields'
|
|
enum:
|
|
- userId
|
|
- sessionId
|
|
- remoteAddress
|
|
- properties
|
|
- appName
|
|
- environment
|
|
example: 'userId'
|
|
values:
|
|
type: array
|
|
description: 'The value(s) for the context field'
|
|
items:
|
|
properties:
|
|
value:
|
|
type: string
|
|
example: '123'
|
|
createdAt:
|
|
type: string
|
|
minLength: 1
|
|
lastSeenAt:
|
|
type: string
|
|
minLength: 1
|
|
x-tags:
|
|
- Responses
|
|
200-events:
|
|
type: object
|
|
properties:
|
|
version:
|
|
$ref: '#/components/schemas/versionSchema'
|
|
events:
|
|
type: array
|
|
required:
|
|
- id
|
|
- type
|
|
- createdBy
|
|
- createdAt
|
|
uniqueItems: true
|
|
minItems: 1
|
|
items:
|
|
properties:
|
|
id:
|
|
description: The event number. All events have a unique id.
|
|
type: number
|
|
example: 55
|
|
type:
|
|
description: One of the six event types
|
|
type: string
|
|
enum:
|
|
- feature-created
|
|
- feature-updated
|
|
- feature-archived
|
|
- feature-revived
|
|
- strategy-created
|
|
- strategy-deleted
|
|
minLength: 1
|
|
example: feature-updated
|
|
createdBy:
|
|
description: The current user's *email* or *username* (taken from the *User* object on the current session)
|
|
type: string
|
|
minLength: 1
|
|
createdAt:
|
|
description: 'The first time the application registered with Unleash (in [ISO8601 format](https://www.w3.org/TR/NOTE-datetime))'
|
|
type: string
|
|
example: '2016-12-09T14:56:36.730Z'
|
|
data:
|
|
$ref: '#/components/schemas/featureToggleSchema'
|
|
diffs:
|
|
description: |-
|
|
The JSON differences between the current and last version of the Feature Toggle.
|
|
(Uses the [deep-diff Node.js module](https://www.npmjs.com/package/deep-diff))
|
|
externalDocs:
|
|
description: Activation strategies
|
|
url: 'https://www.npmjs.com/package/deep-diff#differences'
|
|
type: array
|
|
items:
|
|
required:
|
|
- kind
|
|
- lhs
|
|
- rhs
|
|
properties:
|
|
kind:
|
|
description: |-
|
|
The kind of change:
|
|
- **N** - a newly-added property or element
|
|
- **D** - a property or element was deleted
|
|
- **E** - a property or element was edited
|
|
- **A** - a change occurred within an array
|
|
type: string
|
|
enum:
|
|
- 'N'
|
|
- D
|
|
- E
|
|
- A
|
|
example: E
|
|
path:
|
|
type: array
|
|
items:
|
|
required:
|
|
- pathItem
|
|
properties:
|
|
pathItem:
|
|
description: The property path (from the left-hand-side root)
|
|
type: string
|
|
example: enabled
|
|
lhs:
|
|
description: The value on the left-hand-side of the comparison (*undefined* if **kind** is *N*)
|
|
type: boolean
|
|
example: true
|
|
rhs:
|
|
description: The value on the right-hand-side of the comparison (*undefined* if **kind** is *D*)
|
|
type: boolean
|
|
example: false
|
|
x-tags:
|
|
- Responses
|
|
200export:
|
|
type: object
|
|
required:
|
|
- version
|
|
- features
|
|
- strategies
|
|
properties:
|
|
version:
|
|
$ref: '#/components/schemas/versionSchema'
|
|
features:
|
|
$ref: '#/components/schemas/featureToggleSchema'
|
|
strategies:
|
|
$ref: '#/components/schemas/strategySchema'
|
|
x-tags:
|
|
- Responses
|
|
200featuretype:
|
|
type: object
|
|
required:
|
|
- version
|
|
- types
|
|
properties:
|
|
version:
|
|
$ref: '#/components/schemas/versionSchema'
|
|
types:
|
|
type: array
|
|
uniqueItems: true
|
|
minItems: 1
|
|
items:
|
|
required:
|
|
- id
|
|
- name
|
|
- description
|
|
- lifetimeDays
|
|
properties:
|
|
id:
|
|
$ref: '#/components/schemas/featureToggleTypeSchema'
|
|
name:
|
|
description: The title of the Feature Toggle type
|
|
type: string
|
|
enum:
|
|
- Release
|
|
- Experiment
|
|
- Operational
|
|
- Kill switch
|
|
- Permission
|
|
minLength: 1
|
|
example: Release
|
|
description:
|
|
description: A description of what this Feature Toggle type could be used for
|
|
type: string
|
|
enum:
|
|
- Enables trunk-based development for teams practicing continuous delivery
|
|
- Performs multivariate or A/B testing
|
|
- Controls operational aspects of the system behavior
|
|
- Gracefully degrades system functionality
|
|
- Changes the features or product experiences that certain users receive
|
|
minLength: 1
|
|
lifetimeDays:
|
|
description: The number of days this Feature Toggle is intended to be used. This information is used to issue deprecation notices
|
|
externalDocs:
|
|
description: Feature Toggle types
|
|
url: 'https://unleash.github.io/docs/feature_toggle_types'
|
|
type: number
|
|
example: 40
|
|
x-tags:
|
|
- Responses
|