{ "swagger": "2.0", "info": { "contact": { "name": "The Unleash team", "url": "https://unleash.github.io/" }, "description": "Unleash is an open source feature flag and toggle system for all your applications and services.\n\nOnce 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.\n\nThe following 'endpoints' (such as `GET /admin/metrics/applications`) provide reference documentation for the Unleash REST API. To try out API calls:\n1. Expand an endpoint\n2. Click **Try it out**\n3. Customize the **Request body** and/or **Parameters**.\n4. Click **Execute**.\n\nYou will see the cURL request submitted to the API server and the corresponding response.\n\nAlternatively, you can test the API in [Postman](https://app.getpostman.com/run-collection/8552ddcd4cc9fc012548)\n\n[![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/8552ddcd4cc9fc012548)", "title": "Unleash API", "version": "3.5.6" }, "host": "localhost:4242", "basePath": "/api", "schemes": ["http"], "paths": { "/admin/archive/features": { "get": { "produces": ["application/json"], "parameters": [], "responses": { "200": { "description": "Successful response", "schema": { "$ref": "#/definitions/200" } }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } }, "404": { "description": "Feature Toggle not found" } }, "tags": ["Archive"], "description": "Archived feature toggles are those that have been previously deleted", "operationId": "fetchArchivedToggles", "summary": "List all the archived feature toggles on the Unleash server" } }, "/admin/archive/revive/{featureName}": { "post": { "parameters": [ { "description": "Must match an existing Feature Toggle name.", "in": "path", "name": "featureName", "required": true, "type": "string", "x-example": "featureX" } ], "responses": { "200": { "description": "Feature Toggle successfully revived" }, "404": { "description": "Feature Toggle not found" } }, "tags": ["Archive"], "description": "The Feature Toggle had been previously deleted", "operationId": "reviveFeatureToggle", "summary": "Un-archive a Feature Toggle" } }, "/admin/events": { "get": { "produces": ["application/json"], "parameters": [], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/200-events" } }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } } }, "tags": ["Events"], "description": "Returns one of the six event types:\n- feature-created\n- feature-updated\n- feature-archived\n- feature-revived\n- strategy-created\n- strategy-deleted", "operationId": "get-admin-events", "summary": "Fetch all changes in the Unleash system" } }, "/admin/feature-types": { "get": { "produces": ["application/json"], "parameters": [], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/200featuretype" } }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } } }, "tags": ["Feature types"], "description": "- release\n- experiment\n- ops\n- killswitch\n- permission", "operationId": "get-admin-feature-types", "summary": "Fetch the list of Unleash feature types" } }, "/admin/features": { "get": { "produces": ["application/json"], "parameters": [], "responses": { "200": { "description": "Successful response", "schema": { "$ref": "#/definitions/200" } }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } } }, "tags": ["Feature toggles"], "externalDocs": { "description": "Activation strategies", "url": "https://unleash.github.io/docs/activation_strategy" }, "description": "The response returns all active feature toggles and their current strategy configuration:\n- A feature toggle will have *at least* one configured strategy.\n- A strategy will have a `name` and `parameters` map.\n", "operationId": "getFeatures", "summary": "Fetches all feature toggles from the Unleash server." }, "post": { "consumes": ["application/json"], "produces": ["application/json"], "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/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", "schema": { "$ref": "#/definitions/401" } } }, "tags": ["Feature toggles"], "description": "Create a new Feature Toggle", "operationId": "createFeatureToggle", "summary": "Create a Feature Toggle" } }, "/admin/features/{featureName}": { "delete": { "produces": ["application/json"], "parameters": [ { "description": "Must match an existing Feature Toggle name.", "in": "path", "name": "featureName", "required": true, "type": "string", "x-example": "featureX" } ], "responses": { "200": { "description": "Feature Toggle successfully archived" }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } }, "404": { "description": "Feature Toggle not found" } }, "tags": ["Feature toggles", "Archive"], "description": "Feature toggles can only be archived - they cannot be deleted.\n\nIf an old Feature Toggle *re-appears*, this is because someone else has created a new one with the same name.\n", "operationId": "archiveFeatureToggle", "summary": "Archive a Feature Toggle." }, "get": { "produces": ["application/json"], "parameters": [ { "description": "Must match an existing Feature Toggle name.", "in": "path", "name": "featureName", "required": true, "type": "string", "x-example": "featureX" } ], "responses": { "200": { "description": "Successful response", "schema": { "$ref": "#/definitions/200" } }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } } }, "tags": ["Feature toggles"], "externalDocs": { "description": "Activation strategies", "url": "https://unleash.github.io/docs/activation_strategy" }, "description": "The response returns the Feature Toggle's current strategy configuration:\n- It will have *at least* one configured strategy.\n- A strategy will have a *name* and *parameters* map.\n", "operationId": "getFeature", "summary": "Fetches a specific Feature Toggle from the Unleash server." }, "put": { "consumes": ["application/json"], "produces": ["application/json"], "parameters": [ { "description": "Must match an existing Feature Toggle name.", "in": "path", "name": "featureName", "required": true, "type": "string", "x-example": "featureX" }, { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/featureToggleSchema" } } ], "responses": { "200": { "description": "Feature Toggle successfully updated", "schema": { "$ref": "#/definitions/200" } }, "400": { "description": "Bad body request (for example 'strategies' is not an array)" }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } }, "404": { "description": "Feature Toggle not found" } }, "tags": ["Feature toggles"], "description": "Update a Feature Toggle.", "operationId": "featureName", "summary": "Update a Feature Toggle" } }, "/admin/features/{featureName}/stale/off": { "post": { "produces": ["application/json"], "parameters": [ { "description": "Must match an existing Feature Toggle name.", "in": "path", "name": "featureName", "required": true, "type": "string", "x-example": "featureX" } ], "responses": { "200": { "description": "Successful response", "schema": { "$ref": "#/definitions/200" } }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } }, "404": { "description": "Feature Toggle not found" } }, "tags": ["Feature toggles"], "externalDocs": { "description": "Feature Toggle types", "url": "https://unleash.github.io/docs/feature_toggle_types" }, "description": "**featureName** must match an existing Feature Toggle.", "operationId": "markFeatureToggleActive", "summary": "Mark a Feature Toggle as active." } }, "/admin/features/{featureName}/stale/on": { "post": { "produces": ["application/json"], "parameters": [ { "description": "Must match an existing Feature Toggle name.", "in": "path", "name": "featureName", "required": true, "type": "string", "x-example": "featureX" } ], "responses": { "200": { "description": "Successful response", "schema": { "$ref": "#/definitions/200" } }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } }, "404": { "description": "Feature Toggle not found" } }, "tags": ["Feature toggles"], "externalDocs": { "description": "Feature Toggle types", "url": "https://unleash.github.io/docs/feature_toggle_types" }, "description": "**featureName** must match an existing Feature Toggle.", "operationId": "markFeatureToggleStale", "summary": "Mark a Feature Toggle as 'stale' (deprecated)." } }, "/admin/features/{featureName}/toggle/off": { "post": { "produces": ["application/json"], "parameters": [ { "description": "Must match an existing Feature Toggle name.", "in": "path", "name": "featureName", "required": true, "type": "string", "x-example": "featureX" } ], "responses": { "200": { "description": "Successful response", "schema": { "$ref": "#/definitions/200" } }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } }, "404": { "description": "Feature Toggle not found" } }, "tags": ["Feature toggles"], "description": "**featureName** must match an existing Feature Toggle.", "operationId": "disableFeatureToggle", "summary": "Disable a Feature Toggle." } }, "/admin/features/{featureName}/toggle/on": { "post": { "produces": ["application/json"], "parameters": [ { "description": "Must match an existing Feature Toggle name.", "in": "path", "name": "featureName", "required": true, "type": "string", "x-example": "featureX" } ], "responses": { "200": { "description": "Successful response", "schema": { "$ref": "#/definitions/200" } }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } }, "404": { "description": "Feature Toggle not found" } }, "tags": ["Feature toggles"], "description": "**featureName** must match an existing Feature Toggle.", "operationId": "enableFeatureToggle", "summary": "Enable a Feature Toggle." } }, "/admin/metrics/applications": { "get": { "produces": ["application/json"], "parameters": [], "responses": { "200": { "description": "Successful response", "schema": { "$ref": "#/definitions/applicationArray" } }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } } }, "tags": ["Metrics"], "description": "Also has a link for more details.", "operationId": "getApplications", "summary": "A list of known applications ('seen' by Unleash in the last two days)" } }, "/admin/metrics/applications/{appName}": { "get": { "produces": ["application/json"], "parameters": [ { "description": "Must match an existing application name.", "in": "path", "name": "appName", "required": true, "type": "string", "x-example": "my-application" } ], "responses": { "200": { "description": "Successful response", "schema": { "$ref": "#/definitions/200appdetails" } }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } }, "500": { "description": "Application name not found" } }, "tags": ["Metrics"], "description": "Details include things such as instances, strategies implemented and seen feature toggles.", "operationId": "getApplicationDetails", "summary": "Details about a client application." } }, "/admin/metrics/feature-toggles": { "get": { "produces": ["application/json"], "parameters": [], "responses": { "200": { "description": "Successful response", "schema": { "$ref": "#/definitions/200feature" } }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } } }, "tags": ["Metrics"], "description": "- **Yes** is the number of times a given feature toggle was enabled in a client applucation\n- **No** is the number of times it was disabled.", "operationId": "featureToggles", "summary": "Gives 'last minute' and 'last hour' metrics for all active feature toggles (based on what was reported by the client applications)." } }, "/admin/metrics/seen-apps": { "get": { "produces": ["application/json"], "parameters": [], "responses": { "200": { "description": "Successful response", "schema": { "$ref": "#/definitions/applicationArray" } }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } } }, "tags": ["Metrics"], "description": "(per Feature Toggle)", "operationId": "seenApps", "summary": "Details about seen applications" } }, "/admin/metrics/seen-toggles": { "get": { "produces": ["application/json"], "parameters": [], "responses": { "200": { "description": "Successful response", "schema": { "$ref": "#/definitions/200seen" } } }, "tags": ["Metrics"], "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", "summary": "Returns a list of applications and the feature toggles that Unleash has 'seen' for each application." } }, "/admin/state/export": { "get": { "produces": ["application/json"], "parameters": [ { "description": "Choose export format, either json or yaml. json is the default\n", "enum": ["json", "yaml"], "in": "query", "name": "format", "type": "string", "x-example": "json" }, { "description": "Do you want to export the data as a file? Default is false", "in": "query", "name": "download", "type": "boolean", "x-example": false }, { "description": "Do you want to include feature toggles in the export? Default is true", "in": "query", "name": "featureToggles", "type": "boolean", "x-example": true }, { "description": "Do you want to include strategies in the export? Default is true", "in": "query", "name": "strategies", "type": "boolean", "x-example": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/200export" } }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } } }, "tags": ["Import and export"], "externalDocs": { "description": "Import and export", "url": "https://unleash.github.io/docs/import_export" }, "description": "Exports a list of feature toggles and/or strategies in either JSON or YAML format.", "operationId": "get-admin-state-export", "summary": "Export feature toggles and strategies" } }, "/admin/state/import": { "post": { "consumes": ["multipart/form-data", "application/json"], "produces": ["application/json"], "parameters": [ { "default": "false", "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.", "in": "query", "name": "drop", "type": "boolean" }, { "default": "false", "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.", "in": "query", "name": "keep", "type": "boolean", "x-example": true }, { "format": "binary", "in": "formData", "name": "fileName", "type": "string" } ], "responses": { "200": { "description": "Successful import." }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } }, "404": { "description": "No import data provided." } }, "tags": ["Import and export"], "externalDocs": { "description": "Import and export", "url": "https://unleash.github.io/docs/import_export" }, "description": "Upload the data, in JSON or YAML format.\nYou can add in the POST body or upload a file\n- **POST body** (JSON format only) - next to **Request body**, choose the *application/json* dropdown option.\n- **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`", "operationId": "post-admin-state-import", "summary": "Import feature toggles and strategies" } }, "/admin/strategies": { "get": { "produces": ["application/json"], "parameters": [], "responses": { "200": { "description": "Successful response", "schema": { "$ref": "#/definitions/200strategy" } }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } } }, "tags": ["Strategies"], "description": "Fetch all strategies and their parameters.", "operationId": "getStrategies", "summary": "Fetch all strategies and their parameters." }, "post": { "consumes": ["application/json"], "produces": ["application/json"], "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/createStrategy" } } ], "responses": { "201": { "description": "Strategy successfully added" }, "400": { "description": "Bad body request (for example 'strategies' is not an array)" }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } }, "409": { "description": "Strategy already exists", "schema": { "$ref": "#/definitions/409" } } }, "tags": ["Strategies"], "description": "Create Strategy", "operationId": "createStrategy", "summary": "Create Strategy" } }, "/admin/strategies/{strategyName}": { "put": { "consumes": ["application/json"], "produces": ["application/json"], "parameters": [ { "description": "Must match an existing Strategy name.", "in": "path", "name": "strategyName", "required": true, "type": "string", "x-example": "flexibleRollout" }, { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/createStrategy" } } ], "responses": { "200": { "description": "Strategy successfully updated." }, "401": { "description": "Not authorized", "schema": { "$ref": "#/definitions/401" } }, "404": { "description": "Strategy not updated due to errors in query and/or request body (such as **name** and **strategyName** not matching)." } }, "tags": ["Strategies"], "description": "Use to update a Strategy definition.\n\n**name** and **strategyName** must match and must also match an existing Strategy name.\n\n**Caution: It can be dangerous to change a Strategy (as the implementation also might need to be changed).**\n", "operationId": "updateStrategy", "summary": "Update Strategy" } } }, "definitions": { "200": { "properties": { "features": { "$ref": "#/definitions/featureToggleSchema" }, "version": { "$ref": "#/definitions/versionSchema" } }, "title": "Successful response", "type": "object" }, "401": { "description": "Not authorized", "title": "Unauthorized access", "properties": { "message": { "minLength": 1, "type": "string" }, "path": { "minLength": 1, "type": "string" }, "type": { "minLength": 1, "type": "string" } }, "required": ["type", "path", "message"], "type": "object" }, "409": { "properties": { "details": { "items": { "properties": { "message": { "description": "Error message", "minLength": 1, "type": "string" } }, "required": ["message"] }, "minItems": 1, "type": "array", "uniqueItems": true }, "isJoi": { "description": "For internal use by the Unleash developers", "type": "boolean" }, "name": { "description": "Title of error", "minLength": 1, "type": "string" } }, "required": ["isJoi", "name", "details"], "title": "Error", "type": "object" }, "200-events": { "properties": { "events": { "items": { "properties": { "createdAt": { "description": "The first time the application registered with Unleash (in [ISO8601 format](https://www.w3.org/TR/NOTE-datetime))", "example": "2016-12-09T14:56:36.730Z", "type": "string" }, "createdBy": { "description": "The current user's *email* or *username* (taken from the *User* object on the current session)", "minLength": 1, "type": "string" }, "data": { "$ref": "#/definitions/featureToggleSchema" }, "diffs": { "externalDocs": { "description": "Activation strategies", "url": "https://www.npmjs.com/package/deep-diff#differences" }, "description": "The JSON differences between the current and last version of the Feature Toggle.\n(Uses the [deep-diff Node.js module](https://www.npmjs.com/package/deep-diff))", "items": { "properties": { "kind": { "description": "The kind of change:\n- **N** - a newly-added property or element\n- **D** - a property or element was deleted\n- **E** - a property or element was edited\n- **A** - a change occurred within an array", "enum": ["N", "D", "E", "A"], "example": "E", "type": "string" }, "lhs": { "description": "The value on the left-hand-side of the comparison (*undefined* if **kind** is *N*)", "example": true, "type": "boolean" }, "path": { "items": { "required": ["pathItem"] }, "properties": { "pathItem": { "description": "The property path (from the left-hand-side root)", "example": "enabled", "type": "string" } }, "type": "array" }, "rhs": { "description": "The value on the right-hand-side of the comparison (*undefined* if **kind** is *D*)", "example": false, "type": "boolean" } }, "required": ["kind", "lhs", "rhs"] }, "type": "array" }, "id": { "description": "The event number. All events have a unique id.", "example": 55, "type": "number" }, "type": { "description": "One of the six event types", "enum": [ "feature-created", "feature-updated", "feature-archived", "feature-revived", "strategy-created", "strategy-deleted" ], "example": "feature-updated", "minLength": 1, "type": "string" } } }, "minItems": 1, "required": ["id", "type", "createdBy", "createdAt"], "type": "array", "uniqueItems": true }, "version": { "$ref": "#/definitions/versionSchema" } }, "title": "Successful response", "type": "object" }, "200appdetails": { "properties": { "application": { "$ref": "#/definitions/application" }, "instances": { "properties": { "appName": { "description": "Application name", "example": "my-application", "minLength": 1, "type": "string" }, "clientIp": { "description": "The IP address of the system running this instance of the application", "example": "::ffff:127.0.0.1", "minLength": 1, "type": "string" }, "createdAt": { "description": "The first time the application registered with Unleash (in [ISO8601 format](https://www.w3.org/TR/NOTE-datetime))", "example": "2020-11-13T16:56:29.279Z", "minLength": 1, "type": "string" }, "instanceId": { "description": "The name of the system running the application", "example": "generated-732038-17080", "minLength": 1, "type": "string" }, "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)", "example": "2020-11-14T11:17:24.482Z", "minLength": 1, "type": "string" }, "sdkVersion": { "description": "The version of the Unleash client SDK running the application", "example": "unleash-client-node:3.4.0", "minLength": 1, "type": "string" } }, "required": [ "appName", "instanceId", "sdkVersion", "clientIp", "lastSeen", "createdAt" ], "type": "object" }, "links": { "properties": { "self": { "description": "Deprecated. Do not use", "minLength": 1, "type": "string" } }, "type": "object" }, "seenToggles": { "$ref": "#/definitions/featureToggleSchema" }, "strategies": { "$ref": "#/definitions/strategySchema" } }, "required": ["application", "instances", "strategies", "seenToggles"], "title": "Successful response", "type": "object" }, "200export": { "properties": { "features": { "$ref": "#/definitions/featureToggleSchema" }, "strategies": { "$ref": "#/definitions/strategySchema" }, "version": { "$ref": "#/definitions/versionSchema" } }, "required": ["version", "features", "strategies"], "title": "Successful response", "type": "object" }, "200feature": { "description": "- **lastHour** - how many times a Feature Toggle was accessed in the last hour.\n- **lastMinute** - how many times a Feature Toggle was accessed in the last minute.", "items": { "properties": { "appName": { "enum": ["lastHour", "lastMinute"], "example": "lastHour", "minLength": 1, "type": "string" }, "seenToggles": { "properties": { "metricsCount": { "type": "number" }, "yesno": { "enum": ["yes", "no"], "type": "string" } }, "required": ["yesno", "metricsCount"], "type": "object" } }, "required": ["appName", "seenToggles"], "title": "Feature Toggle metrics", "type": "object" }, "minItems": 1, "title": "Successful response", "type": "array", "uniqueItems": true }, "200featuretype": { "properties": { "types": { "items": { "properties": { "description": { "description": "A description of what this Feature Toggle type could be used for", "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, "type": "string" }, "id": { "$ref": "#/definitions/featureToggleTypeSchema" }, "lifetimeDays": { "externalDocs": { "description": "Feature Toggle types", "url": "https://unleash.github.io/docs/feature_toggle_types" }, "description": "The number of days this Feature Toggle is intended to be used. This information is used to issue deprecation notices", "example": 40, "type": "number" }, "name": { "description": "The title of the Feature Toggle type", "enum": [ "Release", "Experiment", "Operational", "Kill switch", "Permission" ], "example": "Release", "minLength": 1, "type": "string" } }, "required": ["id", "name", "description", "lifetimeDays"] }, "minItems": 1, "type": "array", "uniqueItems": true }, "version": { "$ref": "#/definitions/versionSchema" } }, "required": ["version", "types"], "title": "Successful response", "type": "object" }, "200seen": { "items": { "properties": { "appName": { "minLength": 1, "type": "string" }, "metricsCount": { "type": "number" }, "seenToggles": { "items": { "properties": {} }, "type": "array" } }, "required": ["appName", "seenToggles", "metricsCount"], "title": "Feature Toggle information", "type": "object" }, "minItems": 1, "title": "Successful response", "type": "array", "uniqueItems": true }, "200strategy": { "properties": { "strategies": { "$ref": "#/definitions/strategySchema" }, "version": { "$ref": "#/definitions/versionSchema" } }, "required": ["version", "strategies"], "title": "Successful response", "type": "object" }, "application": { "properties": { "applications": { "items": { "properties": { "appName": { "description": "Application name", "example": "my-application", "type": "string" }, "color": { "description": "Deprecated. Do not use", "type": "string" }, "createdAt": { "description": "The first time the application registered with Unleash (in [ISO8601 format](https://www.w3.org/TR/NOTE-datetime))", "example": "2016-12-09T14:56:36.730Z", "type": "string" }, "description": { "description": "A description of what the application does", "type": "string" }, "icon": { "description": "The application's icon. Must be one of the [Material Design icon names](https://material.io/resources/icons/?style=baseline)", "example": "comment_bank", "type": "string" }, "strategies": { "description": "A description of what the application does", "type": "string" }, "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)", "example": "2020-11-14T09:55:23.653Z", "type": "string" }, "url": { "description": "Absolute URL to the actual application", "example": "http://someapp.internal.url", "type": "string" } }, "required": ["appName", "createdAt", "updatedAt", "strategies"] }, "minItems": 1, "type": "array", "uniqueItems": true } }, "required": ["applications"], "title": "Application details", "type": "object" }, "applicationArray": { "items": { "$ref": "#/definitions/application" }, "title": "List of applications", "type": "array" }, "createStrategy": { "properties": { "parameters": { "items": { "properties": { "description": { "example": "What percent of users should the new Feature Toggle be active for?", "minLength": 1, "type": "string" }, "name": { "example": "percentage", "minLength": 1, "type": "string" }, "required": { "example": true, "type": "boolean" }, "type": { "example": "percentage", "minLength": 1, "type": "string" } }, "required": ["name", "type", "description", "required"] }, "minItems": 1, "type": "array", "uniqueItems": true }, "description": { "example": "Gradual rollout to logged in users", "minLength": 1, "type": "string" }, "name": { "example": "gradualRollout", "minLength": 1, "type": "string" } }, "required": ["name", "description", "parameters"], "title": "Strategy", "type": "object" }, "featureToggleSchema": { "items": { "properties": { "createdAt": { "minLength": 1, "type": "string" }, "description": { "example": "Toggles featureX on and off", "minLength": 1, "type": "string" }, "enabled": { "description": "Is the Feature Toggle enabled?", "example": true, "type": "boolean" }, "name": { "description": "Feature Toggle name must be unique.", "example": "featureX", "minLength": 1, "type": "string" }, "stale": { "description": "Is the Feature Toggle 'stale' (deprecated)?", "example": false, "type": "boolean" }, "strategies": { "$ref": "#/definitions/strategySchema" }, "type": { "$ref": "#/definitions/featureToggleTypeSchema" }, "variants": { "$ref": "#/definitions/variantsSchema" } }, "required": [ "name", "description", "type", "enabled", "stale", "strategies" ], "title": "Feature Toggle items", "type": "object" }, "title": "Feature Toggle", "type": "array" }, "featureToggleTypeSchema": { "externalDocs": { "description": "Feature Toggle types", "url": "https://unleash.github.io/docs/feature_toggle_types" }, "default": "release", "description": "'One of the five Unleash Feature Toggle types.\n\n**type** is optional. If not defined, it defaults to *release*'", "enum": ["release", "experiment", "ops", "killswitch", "permission"], "example": "release", "minLength": 1, "title": "Types of Feature Toggle", "type": "string" }, "strategySchema": { "items": { "properties": { "parameters": { "properties": { "parameter": { "properties": { "description": { "description": "What the parameter does", "example": "Define activation groups to allow you to correlate across feature toggles.", "type": "string" }, "name": { "description": "The name of the parameter", "example": "groupId", "type": "string" }, "required": { "description": "Is this a required parameter?", "example": false, "type": "boolean" }, "type": { "description": "The type of the parameter", "example": "string", "type": "string" } }, "required": ["name", "type"], "type": "object" } }, "type": "object" }, "description": { "description": "What the Strategy is", "example": "Default on/off strategy.", "type": "string" }, "editable": { "example": true, "type": "boolean" }, "name": { "description": "Name of the Strategy", "example": "default", "minLength": 1, "type": "string" } }, "type": "object" }, "title": "Strategy", "type": "array" }, "variantsSchema": { "externalDocs": { "description": "How to use Feature Toggle variants", "url": "https://unleash.github.io/docs/toggle_variants" }, "items": { "properties": { "name": { "description": "The name of the Feature Toggle variant", "example": "yellow", "minLength": 1, "type": "string" }, "weight": { "description": "A number between 0 and 1,000.\nThe 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.", "example": 20, "type": "number" } }, "required": ["name", "weight"] }, "type": "array" }, "versionSchema": { "description": "For internal use by the Unleash developers", "example": 1, "title": "Internal version number", "type": "number" } }, "tags": [ { "description": "Handling Feature Toggle archiving and un-archiving", "name": "Archive" }, { "description": "Identifying events on the Unleash server", "name": "Events" }, { "description": "Accessing feature toggles", "name": "Feature toggles" }, { "description": "Details of the five Unleash Feature Toggle types", "name": "Feature types" }, { "description": "Importing and exporting feature toggles and strategies", "name": "Import and export" }, { "description": "Determining usage of feature toggles and applications", "name": "Metrics" }, { "description": "Accessing and updating strategies", "name": "Strategies" } ], "externalDocs": { "description": "Unleash documentation", "url": "https://unleash.github.io/docs/getting_started" }, "x-components": { "parameters": { "appNamePath": { "description": "Must match an existing application name.", "in": "path", "name": "appName", "required": true, "type": "string", "x-example": "my-application" }, "featureNamePath": { "description": "Must match an existing Feature Toggle name.", "in": "path", "name": "featureName", "required": true, "type": "string", "x-example": "featureX" }, "strategyNamePath": { "description": "Must match an existing Strategy name.", "in": "path", "name": "strategyName", "required": true, "type": "string", "x-example": "flexibleRollout" } } } }