mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			343 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			343 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| id: features
 | |
| title: /api/admin/features
 | |
| ---
 | |
| 
 | |
| > In order to access the admin API endpoints you need to identify yourself. Unless you're using the `none` authentication method, you'll need to [create an ADMIN token](/user_guide/api-token) and add an Authorization header using the token.
 | |
| 
 | |
| ### Fetching Feature Toggles {#fetching-feature-toggles}
 | |
| 
 | |
| `GET: http://unleash.host.com/api/admin/features`
 | |
| 
 | |
| This endpoint is the one all admin ui should use to fetch all available feature toggles from the _unleash-server_. 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.
 | |
| 
 | |
| **Example response:**
 | |
| 
 | |
| ```json
 | |
| {
 | |
|   "version": 2,
 | |
|   "features": [
 | |
|     {
 | |
|       "name": "Feature.A",
 | |
|       "description": "lorem ipsum",
 | |
|       "type": "release",
 | |
|       "enabled": false,
 | |
|       "stale": false,
 | |
|       "strategies": [
 | |
|         {
 | |
|           "name": "default",
 | |
|           "parameters": {}
 | |
|         }
 | |
|       ],
 | |
|       "variants": [
 | |
|         {
 | |
|           "name": "variant1",
 | |
|           "weight": 50
 | |
|         },
 | |
|         {
 | |
|           "name": "variant2",
 | |
|           "weight": 50
 | |
|         }
 | |
|       ],
 | |
|       "tags": [
 | |
|         {
 | |
|           "id": 1,
 | |
|           "type": "simple",
 | |
|           "value": "TeamRed"
 | |
|         }
 | |
|       ]
 | |
|     },
 | |
|     {
 | |
|       "name": "Feature.B",
 | |
|       "description": "lorem ipsum",
 | |
|       "enabled": true,
 | |
|       "stale": false,
 | |
|       "strategies": [
 | |
|         {
 | |
|           "name": "ActiveForUserWithId",
 | |
|           "parameters": {
 | |
|             "userIdList": "123,221,998"
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           "name": "GradualRolloutRandom",
 | |
|           "parameters": {
 | |
|             "percentage": "10"
 | |
|           }
 | |
|         }
 | |
|       ],
 | |
|       "variants": [],
 | |
|       "tags": []
 | |
|     }
 | |
|   ]
 | |
| }
 | |
| ```
 | |
| 
 | |
| #### Filter feature toggles {#filter-feature-toggles}
 | |
| 
 | |
| Supports three params for now
 | |
| 
 | |
| - `tag` - filters for features tagged with tag
 | |
| - `project` - filters for features belonging to project
 | |
| - `namePrefix` - filters for features beginning with prefix
 | |
| 
 | |
| For `tag` and `project` performs OR filtering if multiple arguments
 | |
| 
 | |
| To filter for any feature tagged with a `simple` tag with value `taga` or a `simple` tag with value `tagb` use
 | |
| 
 | |
| `GET https://unleash.host.com/api/admin/features?tag[]=simple:taga&tag[]simple:tagb`
 | |
| 
 | |
| To filter for any feature belonging to project `myproject` use
 | |
| 
 | |
| `GET https://unleash.host.com/api/admin/features?project=myproject`
 | |
| 
 | |
| Response format is the same as `api/admin/features`
 | |
| 
 | |
| ### Fetch specific feature toggle {#fetch-specific-feature-toggle}
 | |
| 
 | |
| `GET: http://unleash.host.com/api/admin/features/:featureName`
 | |
| 
 | |
| Used to fetch details about a specific featureToggle. This is mostly provded to make it easy to debug the API and should not be used by the client implementations.
 | |
| 
 | |
| ```json
 | |
| {
 | |
|   "name": "Feature.A",
 | |
|   "description": "lorem ipsum..",
 | |
|   "type": "release",
 | |
|   "enabled": false,
 | |
|   "stale": false,
 | |
|   "strategies": [
 | |
|     {
 | |
|       "name": "default",
 | |
|       "parameters": {}
 | |
|     }
 | |
|   ],
 | |
|   "variants": [],
 | |
|   "tags": []
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### Create a new Feature Toggle {#create-a-new-feature-toggle}
 | |
| 
 | |
| `POST: http://unleash.host.com/api/admin/features/`
 | |
| 
 | |
| **Body:**
 | |
| 
 | |
| ```json
 | |
| {
 | |
|   "name": "Feature.A",
 | |
|   "description": "lorem ipsum..",
 | |
|   "type": "release",
 | |
|   "enabled": false,
 | |
|   "stale": false,
 | |
|   "strategies": [
 | |
|     {
 | |
|       "name": "default",
 | |
|       "parameters": {}
 | |
|     }
 | |
|   ]
 | |
| }
 | |
| ```
 | |
| 
 | |
| Used by the admin-dashboard to create a new feature toggles.
 | |
| 
 | |
| **Notes:**
 | |
| 
 | |
| - _name_ **must be globally unique**, otherwise you will get a _403-response_.
 | |
| - _type_ is optional. If not defined it defaults to `release`
 | |
| 
 | |
| Returns 200-response if the feature toggle was created successfully.
 | |
| 
 | |
| ### Update a Feature Toggle {#update-a-feature-toggle}
 | |
| 
 | |
| `PUT: http://unleash.host.com/api/admin/features/:toggleName`
 | |
| 
 | |
| **Body:**
 | |
| 
 | |
| ```json
 | |
| {
 | |
|   "name": "Feature.A",
 | |
|   "description": "lorem ipsum..",
 | |
|   "type": "release",
 | |
|   "enabled": false,
 | |
|   "stale": false,
 | |
|   "strategies": [
 | |
|     {
 | |
|       "name": "default",
 | |
|       "parameters": {}
 | |
|     }
 | |
|   ],
 | |
|   "variants": []
 | |
| }
 | |
| ```
 | |
| 
 | |
| Used by the admin dashboard to update a feature toggles. The name has to match an existing features toggle.
 | |
| 
 | |
| Returns 200-response if the feature toggle was updated successfully.
 | |
| 
 | |
| ### Tag a Feature Toggle {#tag-a-feature-toggle}
 | |
| 
 | |
| `POST https://unleash.host.com/api/admin/features/:featureName/tags`
 | |
| 
 | |
| Used to tag a feature
 | |
| 
 | |
| If the tuple (type, value) does not already exist, it will be added to the list of tags. Then Unleash will add a relation between the feature name and the tag.
 | |
| 
 | |
| **Body:**
 | |
| 
 | |
| ```json
 | |
| {
 | |
|   "type": "simple",
 | |
|   "value": "Team-Green"
 | |
| }
 | |
| ```
 | |
| 
 | |
| **Success**
 | |
| 
 | |
|     - Returns _201-CREATED_ if the feature was tagged successfully
 | |
|     - Creates the tag if needed, then connects the tag to the existing feature
 | |
| 
 | |
| **Failures**
 | |
| 
 | |
|     - Returns _404-NOT-FOUND_ if the `type` was not found
 | |
| 
 | |
| ### Remove a tag from a Feature Toggle {#remove-a-tag-from-a-feature-toggle}
 | |
| 
 | |
| `DELETE https://unleash.host.com/api/admin/features/:featureName/tags/:type/:value`
 | |
| 
 | |
| Removes the specified tag from the `(type, value)` tuple from the Feature Toggle's list of tags.
 | |
| 
 | |
| **Success**
 | |
| 
 | |
|     - Returns _200-OK_
 | |
| 
 | |
| **Failures**
 | |
| 
 | |
|     - Returns 404 if the tag does not exist
 | |
|     - Returns 500 if the database could not be reached
 | |
| 
 | |
| ### Archive a Feature Toggle {#archive-a-feature-toggle}
 | |
| 
 | |
| `DELETE: http://unleash.host.com/api/admin/features/:toggleName`
 | |
| 
 | |
| Used to archive a feature toggle. A feature toggle can never be totally be deleted, but can be archived. This is a design decision to make sure that a old feature toggle suddenly reappears becuase someone else re-using the same name.
 | |
| 
 | |
| ### Enable a Feature Toggle {#enable-a-feature-toggle}
 | |
| 
 | |
| `POST: http://unleash.host.com/api/admin/features/:featureName/toggle/on`
 | |
| 
 | |
| Used to enable a feature toggle. The :featureName must match an existing Feature Toggle. Returns 200-response if the feature toggle was enabled successfully.
 | |
| 
 | |
| **Body**
 | |
| 
 | |
| None
 | |
| 
 | |
| **Example response:**
 | |
| 
 | |
| ```json
 | |
| {
 | |
|   "name": "Feature.A",
 | |
|   "description": "lorem ipsum..",
 | |
|   "type": "release",
 | |
|   "enabled": true,
 | |
|   "strategies": [
 | |
|     {
 | |
|       "name": "default",
 | |
|       "parameters": {}
 | |
|     }
 | |
|   ],
 | |
|   "variants": [],
 | |
|   "tags": []
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### Disable a Feature Toggle {#disable-a-feature-toggle}
 | |
| 
 | |
| `POST: http://unleash.host.com/api/admin/features/:featureName/toggle/off`
 | |
| 
 | |
| Used to disable a feature toggle. The :featureName must match an existing Feature Toggle. Returns 200-response if the feature toggle was disabled successfully.
 | |
| 
 | |
| **Body**
 | |
| 
 | |
| None
 | |
| 
 | |
| **Example response:**
 | |
| 
 | |
| ```json
 | |
| {
 | |
|   "name": "Feature.A",
 | |
|   "description": "lorem ipsum..",
 | |
|   "type": "release",
 | |
|   "enabled": false,
 | |
|   "stale": false,
 | |
|   "strategies": [
 | |
|     {
 | |
|       "name": "default",
 | |
|       "parameters": {}
 | |
|     }
 | |
|   ],
 | |
|   "variants": [],
 | |
|   "tags": []
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### Mark a Feature Toggle as "stale" {#mark-a-feature-toggle-as-stale}
 | |
| 
 | |
| `POST: http://unleash.host.com/api/admin/features/:featureName/stale/on`
 | |
| 
 | |
| Used to mark a feature toggle as stale (deprecated). The :featureName must match an existing Feature Toggle. Returns 200-response if the feature toggle was enabled successfully.
 | |
| 
 | |
| **Body**
 | |
| 
 | |
| None
 | |
| 
 | |
| **Example response:**
 | |
| 
 | |
| ```json
 | |
| {
 | |
|   "name": "Feature.A",
 | |
|   "description": "lorem ipsum..",
 | |
|   "type": "release",
 | |
|   "enabled": true,
 | |
|   "stale": true,
 | |
|   "strategies": [
 | |
|     {
 | |
|       "name": "default",
 | |
|       "parameters": {}
 | |
|     }
 | |
|   ],
 | |
|   "variants": [],
 | |
|   "tags": []
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### Mark a Feature Toggle as "active" {#mark-a-feature-toggle-as-active}
 | |
| 
 | |
| `POST: http://unleash.host.com/api/admin/features/:featureName/stale/off`
 | |
| 
 | |
| Used to mark a feature toggle active (remove stale marking). The :featureName must match an existing Feature Toggle. Returns 200-response if the feature toggle was disabled successfully.
 | |
| 
 | |
| **Body**
 | |
| 
 | |
| None
 | |
| 
 | |
| **Example response:**
 | |
| 
 | |
| ```json
 | |
| {
 | |
|   "name": "Feature.A",
 | |
|   "description": "lorem ipsum..",
 | |
|   "type": "release",
 | |
|   "enabled": false,
 | |
|   "stale": false,
 | |
|   "strategies": [
 | |
|     {
 | |
|       "name": "default",
 | |
|       "parameters": {}
 | |
|     }
 | |
|   ],
 | |
|   "variants": [],
 | |
|   "tags": []
 | |
| }
 | |
| ```
 |