Unmerge Project Data Definition
Unmerge source events or properties out of one canonical in the project. Leave the sources out to unmerge every definition merged into the canonical.
curl --request POST \
--url https://platform-us.mixpanel.com/v1/projects/{project_id}/data-definitions/unmerge \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"canonical": "<string>",
"sources": [
"<string>"
]
}
'import requests
url = "https://platform-us.mixpanel.com/v1/projects/{project_id}/data-definitions/unmerge"
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/projects/{project_id}/data-definitions/unmerge', 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/projects/{project_id}/data-definitions/unmerge",
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/projects/{project_id}/data-definitions/unmerge"
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/projects/{project_id}/data-definitions/unmerge")
.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/projects/{project_id}/data-definitions/unmerge")
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).
Permissions
The permissions required to access this endpoint. See Permissions Reference for what each role grants.
Required Permissions: merge_events_properties write_data_definitions
Granted By Role: Owner
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 project.
Body
Split sources back out of canonical, all of one type. Exactly one unmerge per
request. Leave sources out to unmerge every definition merged into the canonical.
The kind of definition to unmerge.
event, event_property Name of the definition the sources unmerge out of.
1 - 255Names of the definitions to unmerge out of the canonical. Omit to unmerge every definition merged into it.
1 - 100 elements1 - 255Was this page helpful?
curl --request POST \
--url https://platform-us.mixpanel.com/v1/projects/{project_id}/data-definitions/unmerge \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"canonical": "<string>",
"sources": [
"<string>"
]
}
'import requests
url = "https://platform-us.mixpanel.com/v1/projects/{project_id}/data-definitions/unmerge"
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/projects/{project_id}/data-definitions/unmerge', 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/projects/{project_id}/data-definitions/unmerge",
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/projects/{project_id}/data-definitions/unmerge"
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/projects/{project_id}/data-definitions/unmerge")
.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/projects/{project_id}/data-definitions/unmerge")
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>"
}