{
  "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"
      }
    }
  }
}