mirror of
https://github.com/Unleash/unleash.git
synced 2025-10-27 11:02:16 +01:00
1264 lines
40 KiB
YAML
1264 lines
40 KiB
YAML
# OTHER API DOCS
|
||
# Could do withe an overview. What is it? What does it do? Who is it for? Why would I use this? For a good example, see https://ionicframework.com/docs
|
||
# Getting started - I have made some tweaks to this but it would be handy to also provide some JS code to make an example API call. PUT /admin/features/{featureName} is a good choice (since it has both a Request body and a query parameter)
|
||
# Status and error codes - It would be useful to generate a simple table listing all status codes. See how Clearbit does it: https://clearbit.com/docs?python#errors
|
||
# Rate limiting and thresholds - Need to inform people of this even if it's not a 'thing', they will ask. See https://unleash-community.slack.com/archives/CGP2MCHPF/p1603106990003200 See how Twitter API describes their limits: https://developer.twitter.com/en/docs/twitter-api/rate-limits
|
||
# Glossary - Need definitions for, as a start, the project specific stuff: Unleash server, Unleash client, Feature Toggle, Strategy, Variant, Diff. Doesn't need to be massive. For instance, see the Lyft glossary - https://developer.lyft.com/docs/glossary
|
||
# Reference - Is the guidance on the documentation site complete?
|
||
# 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)?
|
||
# 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)
|
||
# STYLE
|
||
# Add style guide MD. UK/US, Newspaper/Movie, Plurals. &
|
||
# 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.0
|
||
servers:
|
||
- description: Local host.
|
||
url: 'http://localhost:4242/api'
|
||
tags:
|
||
- name: Archive
|
||
description: Handling Feature Toggle archiving and un-archiving
|
||
- 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.
|
||
|
||
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. Customise the **Request body** and/or **Parameters**.
|
||
4. Click **Execute**.
|
||
|
||
You will see the cURL request submitted to the API server and the corresponding response.
|
||
|
||
Alternatively, you can test the API in [Postman](https://app.getpostman.com/run-collection/8552ddcd4cc9fc012548)
|
||
|
||
[](https://app.getpostman.com/run-collection/8552ddcd4cc9fc012548)
|
||
|
||
version: 3.5.6
|
||
contact:
|
||
name: The Unleash team
|
||
url: 'https://unleash.github.io/'
|
||
|
||
externalDocs:
|
||
description: Unleash documentation
|
||
url: 'https://unleash.github.io/docs/getting_started'
|
||
|
||
paths:
|
||
/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 authorised
|
||
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 authorised
|
||
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 authorised
|
||
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 authorised
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/401'
|
||
'404':
|
||
description: Feature Toggle not found
|
||
|
||
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 authorised
|
||
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 authorised
|
||
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 authorised
|
||
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 authorised
|
||
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 authorised
|
||
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 authorised
|
||
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 authorised
|
||
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 authorised
|
||
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 authorised
|
||
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 authorised
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/401'
|
||
|
||
/admin/metrics/applications:
|
||
# Documentation says 'You can also specify the query param: strategyName, which will return all applications implementing the given strategy.' However, specifiying this results in a 500 error
|
||
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 authorised
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/401'
|
||
'500':
|
||
description: Strategy name not found
|
||
|
||
'/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 authorised
|
||
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 authorised
|
||
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 five 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 authorised
|
||
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 authorised
|
||
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 authorised
|
||
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 authorised
|
||
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'
|
||
|
||
'401':
|
||
description: Not authorised
|
||
type: object
|
||
properties:
|
||
type:
|
||
type: string
|
||
minLength: 1
|
||
path:
|
||
type: string
|
||
minLength: 1
|
||
message:
|
||
type: string
|
||
minLength: 1
|
||
required:
|
||
- type
|
||
- path
|
||
- message
|
||
|
||
'409':
|
||
type: object
|
||
required:
|
||
- isJoi
|
||
- name
|
||
- details
|
||
properties:
|
||
isJoi:
|
||
description: What is the significance of this flag?
|
||
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
|
||
|
||
200strategy:
|
||
type: object
|
||
required:
|
||
- version
|
||
- strategies
|
||
properties:
|
||
version:
|
||
$ref: '#/components/schemas/versionSchema'
|
||
strategies:
|
||
$ref: '#/components/schemas/strategySchema'
|
||
|
||
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
|
||
|
||
200seen:
|
||
type: array
|
||
minItems: 1
|
||
uniqueItems: true
|
||
items:
|
||
type: object
|
||
required:
|
||
- appName
|
||
- seenToggles
|
||
- metricsCount
|
||
properties:
|
||
appName:
|
||
type: string
|
||
minLength: 1
|
||
seenToggles:
|
||
type: array
|
||
items:
|
||
properties: {}
|
||
metricsCount:
|
||
type: number
|
||
|
||
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:
|
||
type: object
|
||
required:
|
||
- yesno
|
||
- metricsCount
|
||
properties:
|
||
yesno:
|
||
type: string
|
||
enum:
|
||
- 'yes'
|
||
- 'no'
|
||
metricsCount:
|
||
type: number
|
||
|
||
applicationArray:
|
||
type: array
|
||
items:
|
||
$ref: '#/components/schemas/application'
|
||
|
||
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: Date and time when the application was initially created
|
||
type: string
|
||
example: '2016-12-09T14:56:36.730Z'
|
||
updatedAt:
|
||
description: Date and time when the application was last updated
|
||
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: Link to more information about the application? Relative only? # Question?
|
||
type: string
|
||
example: 'https://medium.com/keptn'
|
||
color:
|
||
description: The colour (American English?) of something. Hex code? # Question?
|
||
type: string
|
||
icon:
|
||
description: The icon to use for something. Link? # Question?
|
||
type: string
|
||
|
||
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. What is the prefix on the string? # Question?
|
||
type: string
|
||
minLength: 1
|
||
example: '::ffff:127.0.0.1'
|
||
lastSeen:
|
||
description: The last time the application accessed Unleash? # Question?
|
||
type: string
|
||
minLength: 1
|
||
example: '2020-11-14T11:17:24.482Z'
|
||
createdAt:
|
||
description: When the application was created? # Question?
|
||
type: string
|
||
minLength: 1
|
||
example: '2020-11-13T16:56:29.279Z'
|
||
seenToggles:
|
||
$ref: '#/components/schemas/featureToggleSchema'
|
||
links:
|
||
type: object
|
||
properties:
|
||
self:
|
||
description: What is this? # Question?
|
||
type: string
|
||
minLength: 1
|
||
required:
|
||
- self
|
||
|
||
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
|
||
|
||
versionSchema:
|
||
type: number
|
||
description: What is this? # Question?
|
||
example: 1
|
||
|
||
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
|
||
|
||
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
|
||
|
||
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: The 'weighting' for the variant. How does Unleash use weighting to determine which variant to use? What is the range? # Question?
|
||
type: number
|
||
example: 20
|
||
|
||
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. Starts at 1? On first run of application version? # Question?
|
||
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: Creator of the application? Where is this taken from? # Question?
|
||
type: string
|
||
minLength: 1
|
||
createdAt:
|
||
description: Date and time when the application was initially created
|
||
type: string
|
||
example: '2016-12-09T14:56:36.730Z'
|
||
data:
|
||
$ref: '#/components/schemas/featureToggleSchema'
|
||
diffs:
|
||
description: What are diffs? # Question?
|
||
type: array
|
||
items:
|
||
required:
|
||
- kind
|
||
- lhs
|
||
- rhs
|
||
properties:
|
||
kind:
|
||
description: What do these letters signify? What's the full list? # Question?
|
||
type: string
|
||
example: E
|
||
path:
|
||
type: array
|
||
items:
|
||
required:
|
||
- pathItem
|
||
properties:
|
||
pathItem:
|
||
description: What's this? # Question?
|
||
type: string
|
||
example: enabled
|
||
lhs:
|
||
description: Left-hand side of something? Sometimes boolean, sometimes an object, sometimes null. What is it? # Question?
|
||
type: boolean
|
||
example: true
|
||
rhs:
|
||
description: Left-hand side of something? Sometimes boolean, sometimes an object, sometimes null. What is it? # Question?
|
||
type: boolean
|
||
example: false
|
||
|
||
200export:
|
||
type: object
|
||
required:
|
||
- version
|
||
- features
|
||
- strategies
|
||
properties:
|
||
version:
|
||
$ref: '#/components/schemas/versionSchema'
|
||
features:
|
||
$ref: '#/components/schemas/featureToggleSchema'
|
||
strategies:
|
||
$ref: '#/components/schemas/strategySchema' # Difference between this and the strategies in the Feature Toggle schema?
|
||
|
||
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 behaviour # US English?
|
||
- Gracefully degrades system functionality
|
||
- Changes the features or product experiences that certain users receive
|
||
minLength: 1
|
||
lifetimeDays:
|
||
description: What's this? # Question?
|
||
type: number
|
||
example: 40
|
||
|
||
|