Merge Workspace Data Definition
Merge source events or properties into one canonical in the workspace’s project.
curl --request POST \
--url https://platform-us.mixpanel.com/v1/workspaces/{workspace_id}/data-definitions/merge \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"canonical": "<string>",
"sources": [
"<string>"
]
}
'import requests
url = "https://platform-us.mixpanel.com/v1/workspaces/{workspace_id}/data-definitions/merge"
payload = {
"canonical": "<string>",
"sources": ["<string>"]
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({canonical: '<string>', sources: ['<string>']})
};
fetch('https://platform-us.mixpanel.com/v1/workspaces/{workspace_id}/data-definitions/merge', 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://platform-us.mixpanel.com/v1/workspaces/{workspace_id}/data-definitions/merge",
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([
'canonical' => '<string>',
'sources' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"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://platform-us.mixpanel.com/v1/workspaces/{workspace_id}/data-definitions/merge"
payload := strings.NewReader("{\n \"canonical\": \"<string>\",\n \"sources\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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://platform-us.mixpanel.com/v1/workspaces/{workspace_id}/data-definitions/merge")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"canonical\": \"<string>\",\n \"sources\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform-us.mixpanel.com/v1/workspaces/{workspace_id}/data-definitions/merge")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"canonical\": \"<string>\",\n \"sources\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"canonical": {
"type": "event",
"id": "<string>",
"name": "<string>"
},
"sources": [
{
"type": "event",
"id": "<string>",
"name": "<string>"
}
]
}{
"status": 123,
"title": "<string>",
"type": "<string>",
"instance": "<string>",
"detail": "<string>",
"error_id": "<string>",
"errors": [
{
"type": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"ctx": {}
}
]
}{
"status": 123,
"title": "<string>",
"type": "<string>",
"instance": "<string>",
"detail": "<string>",
"error_id": "<string>"
}Available to a limited set of invited customers. Contact your account team to join. The request and response contract may change before general availability (GA).
Authorizations
This endpoint uses Service Account authentication.
Headers
Optional date-based API version pin.
If omitted, the request is served by the latest API version, and the caller accepts that a future release may introduce a breaking change to the response contract. If set to a supported version date, that version's contract is honored and will not receive a breaking change.
Optional, client-provided key guaranteeing the operation is idempotent on success: if a request is replayed, the response includes Idempotent-Replayed: true.
Reusing a key with a different request body, or while a request with the same key is still in flight, returns a 409.
Use a unique, random value for each request (a UUID v4 works well).
255Path Parameters
The unique identifier for the workspace.
Body
Fold sources into canonical, all of one type. Exactly one merge per request.
The kind of definition to merge.
event, event_property Name of the definition the sources merge into.
1 - 255Names of the definitions merged into the canonical.
1 - 100 elements1 - 255Was this page helpful?
curl --request POST \
--url https://platform-us.mixpanel.com/v1/workspaces/{workspace_id}/data-definitions/merge \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"canonical": "<string>",
"sources": [
"<string>"
]
}
'import requests
url = "https://platform-us.mixpanel.com/v1/workspaces/{workspace_id}/data-definitions/merge"
payload = {
"canonical": "<string>",
"sources": ["<string>"]
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({canonical: '<string>', sources: ['<string>']})
};
fetch('https://platform-us.mixpanel.com/v1/workspaces/{workspace_id}/data-definitions/merge', 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://platform-us.mixpanel.com/v1/workspaces/{workspace_id}/data-definitions/merge",
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([
'canonical' => '<string>',
'sources' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"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://platform-us.mixpanel.com/v1/workspaces/{workspace_id}/data-definitions/merge"
payload := strings.NewReader("{\n \"canonical\": \"<string>\",\n \"sources\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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://platform-us.mixpanel.com/v1/workspaces/{workspace_id}/data-definitions/merge")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"canonical\": \"<string>\",\n \"sources\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform-us.mixpanel.com/v1/workspaces/{workspace_id}/data-definitions/merge")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"canonical\": \"<string>\",\n \"sources\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"canonical": {
"type": "event",
"id": "<string>",
"name": "<string>"
},
"sources": [
{
"type": "event",
"id": "<string>",
"name": "<string>"
}
]
}{
"status": 123,
"title": "<string>",
"type": "<string>",
"instance": "<string>",
"detail": "<string>",
"error_id": "<string>",
"errors": [
{
"type": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"ctx": {}
}
]
}{
"status": 123,
"title": "<string>",
"type": "<string>",
"instance": "<string>",
"detail": "<string>",
"error_id": "<string>"
}