Edit a Data Studio app with operations
curl --request POST \
--url https://clientapi.woku.app/v1/data-apps/{id}/operations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"baseVersion": 2,
"operations": [
{}
]
}
'import requests
url = "https://clientapi.woku.app/v1/data-apps/{id}/operations"
payload = {
"baseVersion": 2,
"operations": [{}]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({baseVersion: 2, operations: [{}]})
};
fetch('https://clientapi.woku.app/v1/data-apps/{id}/operations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://clientapi.woku.app/v1/data-apps/{id}/operations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'baseVersion' => 2,
'operations' => [
[
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://clientapi.woku.app/v1/data-apps/{id}/operations"
payload := strings.NewReader("{\n \"baseVersion\": 2,\n \"operations\": [\n {}\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://clientapi.woku.app/v1/data-apps/{id}/operations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"baseVersion\": 2,\n \"operations\": [\n {}\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://clientapi.woku.app/v1/data-apps/{id}/operations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"baseVersion\": 2,\n \"operations\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_bodyv1 - data-apps
Edit a Data Studio app with operations
Applies the operations on the current version (all or nothing) and stores a new version. Untouched components stay identical.
POST
/
v1
/
data-apps
/
{id}
/
operations
Edit a Data Studio app with operations
curl --request POST \
--url https://clientapi.woku.app/v1/data-apps/{id}/operations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"baseVersion": 2,
"operations": [
{}
]
}
'import requests
url = "https://clientapi.woku.app/v1/data-apps/{id}/operations"
payload = {
"baseVersion": 2,
"operations": [{}]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({baseVersion: 2, operations: [{}]})
};
fetch('https://clientapi.woku.app/v1/data-apps/{id}/operations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://clientapi.woku.app/v1/data-apps/{id}/operations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'baseVersion' => 2,
'operations' => [
[
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://clientapi.woku.app/v1/data-apps/{id}/operations"
payload := strings.NewReader("{\n \"baseVersion\": 2,\n \"operations\": [\n {}\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://clientapi.woku.app/v1/data-apps/{id}/operations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"baseVersion\": 2,\n \"operations\": [\n {}\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://clientapi.woku.app/v1/data-apps/{id}/operations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"baseVersion\": 2,\n \"operations\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
Company secret API key.
Path Parameters
Body
application/json
Current version of the app. A stale version answers 409, read the app again.
Required range:
x >= 1Operations applied all or nothing, each an object with "op" (addNode, removeNode, moveNode, updateProps, changeType, rebindData, setInteractions, addParam, updateParam, removeParam, addQuery, updateQuery, removeQuery, setTitle, upsertRequirement, removeRequirement, setAssumptions, insertSubtree).
Maximum array length:
40Response
New version, summary and issues