1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-10-27 11:02:16 +01:00
unleash.unleash/docs/api/oas/openapi.yaml

1264 lines
40 KiB
YAML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)
[![Run in Postman](https://run.pstmn.io/button.svg)](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