# Updates multiple tags for a feature. PUT https://app.unleash-instance.example.com/api/admin/features/{featureName}/tags Content-Type: application/json Receives a list of tags to add and a list of tags to remove that are mandatory but can be empty. All tags under addedTags are first added to the feature and then all tags under removedTags are removed from the feature. Reference: https://docs.getunleash.io/api/update-tags ## OpenAPI Specification ```yaml openapi: 3.1.1 info: title: Updates multiple tags for a feature. version: endpoint_features.updateTags paths: /api/admin/features/{featureName}/tags: put: operationId: update-tags summary: Updates multiple tags for a feature. description: >- Receives a list of tags to add and a list of tags to remove that are mandatory but can be empty. All tags under addedTags are first added to the feature and then all tags under removedTags are removed from the feature. tags: - - subpackage_features parameters: - name: featureName in: path required: true schema: type: string - name: Authorization in: header description: Header authentication of the form `undefined ` required: true schema: type: string responses: '200': description: The resource was successfully created. content: application/json: schema: $ref: '#/components/schemas/tagsSchema' '400': description: The request data does not match what we expect. content: {} '401': description: >- Authorization information is missing or invalid. Provide a valid API token as the `authorization` header, e.g. `authorization:*.*.my-admin-token`. content: {} '403': description: >- The provided user credentials are valid, but the user does not have the necessary permissions to perform this operation content: {} '404': description: The requested resource was not found. content: {} requestBody: description: updateTagsSchema content: application/json: schema: $ref: '#/components/schemas/updateTagsSchema' components: schemas: tagSchema: type: object properties: value: type: string description: The value of the tag. type: type: string description: >- The [type](https://docs.getunleash.io/concepts/feature-flags#tags) of the tag color: type: - string - 'null' description: The hexadecimal color code for the tag type. required: - value - type updateTagsSchema: type: object properties: addedTags: type: array items: $ref: '#/components/schemas/tagSchema' description: Tags to add to the feature. removedTags: type: array items: $ref: '#/components/schemas/tagSchema' description: Tags to remove from the feature. required: - addedTags - removedTags tagsSchema: type: object properties: version: type: integer description: The version of the schema used to model the tags. tags: type: array items: $ref: '#/components/schemas/tagSchema' description: A list of tags. required: - version - tags ``` ## SDK Code Examples ```python import requests url = "https://app.unleash-instance.example.com/api/admin/features/featureName/tags" payload = { "addedTags": [ { "value": "tag-to-add", "type": "simple" } ], "removedTags": [ { "value": "tag-to-remove", "type": "simple" } ] } headers = { "Authorization": "", "Content-Type": "application/json" } response = requests.put(url, json=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://app.unleash-instance.example.com/api/admin/features/featureName/tags'; const options = { method: 'PUT', headers: {Authorization: '', 'Content-Type': 'application/json'}, body: '{"addedTags":[{"value":"tag-to-add","type":"simple"}],"removedTags":[{"value":"tag-to-remove","type":"simple"}]}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://app.unleash-instance.example.com/api/admin/features/featureName/tags" payload := strings.NewReader("{\n \"addedTags\": [\n {\n \"value\": \"tag-to-add\",\n \"type\": \"simple\"\n }\n ],\n \"removedTags\": [\n {\n \"value\": \"tag-to-remove\",\n \"type\": \"simple\"\n }\n ]\n}") req, _ := http.NewRequest("PUT", url, payload) req.Header.Add("Authorization", "") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://app.unleash-instance.example.com/api/admin/features/featureName/tags") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Put.new(url) request["Authorization"] = '' request["Content-Type"] = 'application/json' request.body = "{\n \"addedTags\": [\n {\n \"value\": \"tag-to-add\",\n \"type\": \"simple\"\n }\n ],\n \"removedTags\": [\n {\n \"value\": \"tag-to-remove\",\n \"type\": \"simple\"\n }\n ]\n}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.put("https://app.unleash-instance.example.com/api/admin/features/featureName/tags") .header("Authorization", "") .header("Content-Type", "application/json") .body("{\n \"addedTags\": [\n {\n \"value\": \"tag-to-add\",\n \"type\": \"simple\"\n }\n ],\n \"removedTags\": [\n {\n \"value\": \"tag-to-remove\",\n \"type\": \"simple\"\n }\n ]\n}") .asString(); ``` ```php request('PUT', 'https://app.unleash-instance.example.com/api/admin/features/featureName/tags', [ 'body' => '{ "addedTags": [ { "value": "tag-to-add", "type": "simple" } ], "removedTags": [ { "value": "tag-to-remove", "type": "simple" } ] }', 'headers' => [ 'Authorization' => '', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://app.unleash-instance.example.com/api/admin/features/featureName/tags"); var request = new RestRequest(Method.PUT); request.AddHeader("Authorization", ""); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"addedTags\": [\n {\n \"value\": \"tag-to-add\",\n \"type\": \"simple\"\n }\n ],\n \"removedTags\": [\n {\n \"value\": \"tag-to-remove\",\n \"type\": \"simple\"\n }\n ]\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "", "Content-Type": "application/json" ] let parameters = [ "addedTags": [ [ "value": "tag-to-add", "type": "simple" ] ], "removedTags": [ [ "value": "tag-to-remove", "type": "simple" ] ] ] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://app.unleash-instance.example.com/api/admin/features/featureName/tags")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "PUT" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```