# [BETA] Update an action set. PUT https://app.unleash-instance.example.com/api/admin/projects/{projectId}/actions/{id} Content-Type: application/json **Enterprise feature** **[BETA]** This API is in beta state, which means it may change or be removed in the future. Updates an existing action set identified by its id. Reference: https://docs.getunleash.io/api/update-actions ## OpenAPI Specification ```yaml openapi: 3.1.0 info: title: admin-api version: 1.0.0 paths: /api/admin/projects/{projectId}/actions/{id}: put: operationId: update-actions summary: '[BETA] Update an action set.' description: >- **Enterprise feature** **[BETA]** This API is in beta state, which means it may change or be removed in the future. Updates an existing action set identified by its id. tags: - subpackage_projects parameters: - name: projectId in: path required: true schema: type: string - name: id in: path required: true schema: type: string - name: Authorization in: header description: API key needed to access this API required: true schema: type: string responses: '200': description: actionsSchema content: application/json: schema: $ref: '#/components/schemas/actionsSchema' '400': description: The request data does not match what we expect. content: application/json: schema: $ref: '#/components/schemas/UpdateActionsRequestBadRequestError' '401': description: >- Authorization information is missing or invalid. Provide a valid API token as the `authorization` header, e.g. `authorization:*.*.my-admin-token`. content: application/json: schema: $ref: '#/components/schemas/UpdateActionsRequestUnauthorizedError' '403': description: >- The provided user credentials are valid, but the user does not have the necessary permissions to perform this operation content: application/json: schema: $ref: '#/components/schemas/UpdateActionsRequestForbiddenError' '404': description: The requested resource was not found. content: application/json: schema: $ref: '#/components/schemas/UpdateActionsRequestNotFoundError' '415': description: >- The operation does not support request payloads of the provided type. Please ensure that you're using one of the listed payload types and that you have specified the right content type in the "content-type" header. content: application/json: schema: $ref: >- #/components/schemas/UpdateActionsRequestUnsupportedMediaTypeError requestBody: description: createActionsSchema content: application/json: schema: $ref: '#/components/schemas/createActionsSchema' servers: - url: https://app.unleash-instance.example.com components: schemas: createActionSchema: type: object properties: action: type: string description: The name of the action to execute sortOrder: type: integer description: The order in which the action should be executed executionParams: type: object additionalProperties: description: Any type description: A map of parameters to pass to the action required: - action - sortOrder description: Represents a single action title: createActionSchema CreateActionsSchemaMatchSource: type: string enum: - signal-endpoint description: Match the source of the signal title: CreateActionsSchemaMatchSource CreateActionsSchemaMatch: type: object properties: source: $ref: '#/components/schemas/CreateActionsSchemaMatchSource' description: Match the source of the signal sourceId: type: number format: double description: Match the source id of the signal payload: type: object additionalProperties: description: Any type description: Match the payload of the signal required: - source - sourceId - payload description: Defines a matching rule for the signal that will trigger the action set title: CreateActionsSchemaMatch createActionsSchema: type: object properties: name: type: string description: The name of the action set description: type: - string - 'null' description: The description of the action set actorId: type: integer description: The id of the service account that will execute the action enabled: type: boolean default: true description: Whether this action set is enabled or not actions: type: array items: $ref: '#/components/schemas/createActionSchema' description: >- The list of actions to execute in sequential order when the action set is triggered match: $ref: '#/components/schemas/CreateActionsSchemaMatch' description: >- Defines a matching rule for the signal that will trigger the action set required: - name - actorId - actions - match description: >- An action set defines actions that Unleash performs when a signal is matched. title: createActionsSchema actionSchema: type: object properties: id: type: integer description: The id of the action set createdAt: type: string format: date-time description: The date and time of when the action was created. createdByUserId: type: integer description: The id of user that created this action set action: type: string description: The name of the action to execute sortOrder: type: integer description: The order in which the action should be executed executionParams: type: object additionalProperties: description: Any type description: A map of parameters to pass to the action required: - id - createdAt - createdByUserId - action - sortOrder description: Represents a single action response title: actionSchema ActionsSchemaMatchSource: type: string enum: - signal-endpoint description: Match the source of the signal title: ActionsSchemaMatchSource ActionsSchemaMatch: type: object properties: source: $ref: '#/components/schemas/ActionsSchemaMatchSource' description: Match the source of the signal sourceId: type: number format: double description: Match the source id of the signal payload: type: object additionalProperties: description: Any type description: Match the payload of the signal required: - source - sourceId - payload description: Defines a matching rule for the signal that will trigger the action set title: ActionsSchemaMatch actionsSchema: type: object properties: id: type: integer description: The ID of the action set. project: type: string description: The project that this action set belongs to. createdAt: type: string format: date-time description: The date and time of when the action set was created. createdByUserId: type: integer description: The ID of the user that created this action set. name: type: string description: The name of the action set description: type: - string - 'null' description: The description of the action set actorId: type: integer description: The id of the service account that will execute the action enabled: type: boolean default: true description: Whether this action set is enabled or not actions: type: array items: $ref: '#/components/schemas/actionSchema' description: >- The list of actions to execute in sequential order when the action set is triggered. match: $ref: '#/components/schemas/ActionsSchemaMatch' description: >- Defines a matching rule for the signal that will trigger the action set required: - id - project - createdAt - createdByUserId - name - actorId - actions - match description: A response model with an identifiable action set. title: actionsSchema UpdateActionsRequestBadRequestError: type: object properties: id: type: string description: The ID of the error instance name: type: string description: The name of the error kind message: type: string description: A description of what went wrong. title: UpdateActionsRequestBadRequestError UpdateActionsRequestUnauthorizedError: type: object properties: id: type: string description: The ID of the error instance name: type: string description: The name of the error kind message: type: string description: A description of what went wrong. title: UpdateActionsRequestUnauthorizedError UpdateActionsRequestForbiddenError: type: object properties: id: type: string description: The ID of the error instance name: type: string description: The name of the error kind message: type: string description: A description of what went wrong. title: UpdateActionsRequestForbiddenError UpdateActionsRequestNotFoundError: type: object properties: id: type: string description: The ID of the error instance name: type: string description: The name of the error kind message: type: string description: A description of what went wrong. title: UpdateActionsRequestNotFoundError UpdateActionsRequestUnsupportedMediaTypeError: type: object properties: id: type: string description: The ID of the error instance name: type: string description: The name of the error kind message: type: string description: A description of what went wrong. title: UpdateActionsRequestUnsupportedMediaTypeError securitySchemes: apiKey: type: apiKey in: header name: Authorization description: API key needed to access this API bearerToken: type: http scheme: bearer description: API key needed to access this API, in Bearer token format ``` ## SDK Code Examples ```python import requests url = "https://app.unleash-instance.example.com/api/admin/projects/projectId/actions/id" payload = { "name": "Disable new features", "actorId": 12, "actions": [ { "action": "disable-feature", "sortOrder": 1 } ], "match": { "source": "signal-endpoint", "sourceId": 123, "payload": { "type": "error-rate-above-threshold" } } } 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/projects/projectId/actions/id'; const options = { method: 'PUT', headers: {Authorization: '', 'Content-Type': 'application/json'}, body: '{"name":"Disable new features","actorId":12,"actions":[{"action":"disable-feature","sortOrder":1}],"match":{"source":"signal-endpoint","sourceId":123,"payload":{"type":"error-rate-above-threshold"}}}' }; 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/projects/projectId/actions/id" payload := strings.NewReader("{\n \"name\": \"Disable new features\",\n \"actorId\": 12,\n \"actions\": [\n {\n \"action\": \"disable-feature\",\n \"sortOrder\": 1\n }\n ],\n \"match\": {\n \"source\": \"signal-endpoint\",\n \"sourceId\": 123,\n \"payload\": {\n \"type\": \"error-rate-above-threshold\"\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/projects/projectId/actions/id") 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 \"name\": \"Disable new features\",\n \"actorId\": 12,\n \"actions\": [\n {\n \"action\": \"disable-feature\",\n \"sortOrder\": 1\n }\n ],\n \"match\": {\n \"source\": \"signal-endpoint\",\n \"sourceId\": 123,\n \"payload\": {\n \"type\": \"error-rate-above-threshold\"\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/projects/projectId/actions/id") .header("Authorization", "") .header("Content-Type", "application/json") .body("{\n \"name\": \"Disable new features\",\n \"actorId\": 12,\n \"actions\": [\n {\n \"action\": \"disable-feature\",\n \"sortOrder\": 1\n }\n ],\n \"match\": {\n \"source\": \"signal-endpoint\",\n \"sourceId\": 123,\n \"payload\": {\n \"type\": \"error-rate-above-threshold\"\n }\n }\n}") .asString(); ``` ```php request('PUT', 'https://app.unleash-instance.example.com/api/admin/projects/projectId/actions/id', [ 'body' => '{ "name": "Disable new features", "actorId": 12, "actions": [ { "action": "disable-feature", "sortOrder": 1 } ], "match": { "source": "signal-endpoint", "sourceId": 123, "payload": { "type": "error-rate-above-threshold" } } }', 'headers' => [ 'Authorization' => '', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://app.unleash-instance.example.com/api/admin/projects/projectId/actions/id"); var request = new RestRequest(Method.PUT); request.AddHeader("Authorization", ""); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"name\": \"Disable new features\",\n \"actorId\": 12,\n \"actions\": [\n {\n \"action\": \"disable-feature\",\n \"sortOrder\": 1\n }\n ],\n \"match\": {\n \"source\": \"signal-endpoint\",\n \"sourceId\": 123,\n \"payload\": {\n \"type\": \"error-rate-above-threshold\"\n }\n }\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "", "Content-Type": "application/json" ] let parameters = [ "name": "Disable new features", "actorId": 12, "actions": [ [ "action": "disable-feature", "sortOrder": 1 ] ], "match": [ "source": "signal-endpoint", "sourceId": 123, "payload": ["type": "error-rate-above-threshold"] ] ] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://app.unleash-instance.example.com/api/admin/projects/projectId/actions/id")! 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() ```