Duplicate a Workflow
https://mapi.storyblok.com/v1/spaces/:space_id/workflows/:workflow_id/duplicateCreates a new custom workflow by duplicating an existing workflow using the workflow id of the parent workflow. Duplicating a workflow keeps workflow stages the same for the new workflow.
The name and content types are required and should be different.
Path parameters
Section titled “Path parameters”- :space_id required number
Numeric ID of a space
Request body properties
Section titled “Request body properties”- workflow Workflow Object
Response properties
Section titled “Response properties”- workflow Workflow Object
Examples
Section titled “Examples”curl "https://mapi.storyblok.com/v1/spaces/288868932106293/workflows/656/duplicate" \ -X POST \ -H "Authorization: YOUR_OAUTH_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"workflow\":{\"content_types\":[\"page_new\"],\"name\":\"duplicated page\"}}"// Using the Universal JavaScript Client:// https://github.com/storyblok/storyblok-js-clientStoryblok.post('spaces/288868932106293/workflows/656/duplicate', { "workflow": { "content_types": [ "page_new" ], "name": "duplicated page" }}) .then(response => { console.log(response) }).catch(error => { console.log(error) })$client = new \Storyblok\ManagementClient('YOUR_OAUTH_TOKEN');
$payload = ["workflow" => ["content_types" => ["page_new"],"name" => "duplicated page"]];
$client->post('spaces/288868932106293/workflows/656/duplicate', $payload)->getBody();HttpResponse<String> response = Unirest.post("https://mapi.storyblok.com/v1/spaces/288868932106293/workflows/656/duplicate") .header("Content-Type", "application/json") .header("Authorization", "YOUR_OAUTH_TOKEN") .body({"workflow":{"content_types":["page_new"],"name":"duplicated page"}}) .asString();var client = new RestClient("https://mapi.storyblok.com/v1/spaces/288868932106293/workflows/656/duplicate");var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");request.AddHeader("Authorization", "YOUR_OAUTH_TOKEN");request.AddParameter("application/json", "{\"workflow\":{\"content_types\":[\"page_new\"],\"name\":\"duplicated page\"}}", ParameterType.RequestBody);IRestResponse response = client.Execute(request);import requests
url = "https://mapi.storyblok.com/v1/spaces/288868932106293/workflows/656/duplicate"
querystring = {}
payload = {"workflow":{"content_types":["page_new"],"name":"duplicated page"}}headers = { 'Content-Type': "application/json", 'Authorization': "YOUR_OAUTH_TOKEN"}
response = requests.request("POST", url, data=payload, headers=headers, params=querystring)
print(response.text)require 'storyblok'client = Storyblok::Client.new(oauth_token: 'YOUR_OAUTH_TOKEN')
payload = {"workflow" => {"content_types" => ["page_new"],"name" => "duplicated page"}}
client.post('spaces/288868932106293/workflows/656/duplicate', payload)var request = URLRequest(url: URL(string: "https://mapi.storyblok.com/v1/spaces/288868932106293/workflows/656/duplicate")!)request.setValue("YOUR_OAUTH_TOKEN", forHTTPHeaderField: "Authorization")request.httpMethod = "POST"request.httpBody = try JSONSerialization.data(withJSONObject: [ "workflow": [ "content_types": [ "page_new", ], "name": "duplicated page", ],])let (data, _) = try await URLSession.shared.data(for: request)print(try JSONSerialization.jsonObject(with: data))val client = HttpClient { install(ContentNegotiation) { json() } install(DefaultRequest) { url { takeFrom("https://mapi.storyblok.com/v1/") headers.append("Authorization", "YOUR_OAUTH_TOKEN") } }}
val response = client.post("spaces/288868932106293/workflows/656/duplicate") { contentType(ContentType.Application.Json) setBody(buildJsonObject { putJsonObject("workflow") { putJsonArray("content_types") { add("page_new") } put("name", "duplicated page") } })}
println(response.body<JsonElement>())You will receive a workflows object as a response along with another property called workflow_stages - these workflow stages are inherited from the parent workflow.
Get in touch with the Storyblok community