Post Entity Property Source
curl --request POST \
--url https://statsigapi.net/console/v1/experiments/entity_property/{name} \
--header 'Content-Type: application/json' \
--header 'STATSIG-API-KEY: <api-key>' \
--data '
{
"sql": "<string>",
"idTypeMapping": [
{
"statsigUnitID": "<string>",
"column": "<string>"
}
],
"name": "<string>",
"description": "<string>",
"tags": [
"<string>"
],
"timestampColumn": "<string>",
"timestampAsDay": true,
"isReadOnly": true,
"owner": {
"ownerID": "user123",
"ownerType": "USER",
"ownerName": "John Doe",
"ownerEmail": "owner123@test.com"
}
}
'import requests
url = "https://statsigapi.net/console/v1/experiments/entity_property/{name}"
payload = {
"sql": "<string>",
"idTypeMapping": [
{
"statsigUnitID": "<string>",
"column": "<string>"
}
],
"name": "<string>",
"description": "<string>",
"tags": ["<string>"],
"timestampColumn": "<string>",
"timestampAsDay": True,
"isReadOnly": True,
"owner": {
"ownerID": "user123",
"ownerType": "USER",
"ownerName": "John Doe",
"ownerEmail": "owner123@test.com"
}
}
headers = {
"STATSIG-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'STATSIG-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
sql: '<string>',
idTypeMapping: [{statsigUnitID: '<string>', column: '<string>'}],
name: '<string>',
description: '<string>',
tags: ['<string>'],
timestampColumn: '<string>',
timestampAsDay: true,
isReadOnly: true,
owner: {
ownerID: 'user123',
ownerType: 'USER',
ownerName: 'John Doe',
ownerEmail: 'owner123@test.com'
}
})
};
fetch('https://statsigapi.net/console/v1/experiments/entity_property/{name}', 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://statsigapi.net/console/v1/experiments/entity_property/{name}",
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([
'sql' => '<string>',
'idTypeMapping' => [
[
'statsigUnitID' => '<string>',
'column' => '<string>'
]
],
'name' => '<string>',
'description' => '<string>',
'tags' => [
'<string>'
],
'timestampColumn' => '<string>',
'timestampAsDay' => true,
'isReadOnly' => true,
'owner' => [
'ownerID' => 'user123',
'ownerType' => 'USER',
'ownerName' => 'John Doe',
'ownerEmail' => 'owner123@test.com'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"STATSIG-API-KEY: <api-key>"
],
]);
$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://statsigapi.net/console/v1/experiments/entity_property/{name}"
payload := strings.NewReader("{\n \"sql\": \"<string>\",\n \"idTypeMapping\": [\n {\n \"statsigUnitID\": \"<string>\",\n \"column\": \"<string>\"\n }\n ],\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"timestampColumn\": \"<string>\",\n \"timestampAsDay\": true,\n \"isReadOnly\": true,\n \"owner\": {\n \"ownerID\": \"user123\",\n \"ownerType\": \"USER\",\n \"ownerName\": \"John Doe\",\n \"ownerEmail\": \"owner123@test.com\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("STATSIG-API-KEY", "<api-key>")
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://statsigapi.net/console/v1/experiments/entity_property/{name}")
.header("STATSIG-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"sql\": \"<string>\",\n \"idTypeMapping\": [\n {\n \"statsigUnitID\": \"<string>\",\n \"column\": \"<string>\"\n }\n ],\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"timestampColumn\": \"<string>\",\n \"timestampAsDay\": true,\n \"isReadOnly\": true,\n \"owner\": {\n \"ownerID\": \"user123\",\n \"ownerType\": \"USER\",\n \"ownerName\": \"John Doe\",\n \"ownerEmail\": \"owner123@test.com\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://statsigapi.net/console/v1/experiments/entity_property/{name}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["STATSIG-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"sql\": \"<string>\",\n \"idTypeMapping\": [\n {\n \"statsigUnitID\": \"<string>\",\n \"column\": \"<string>\"\n }\n ],\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"timestampColumn\": \"<string>\",\n \"timestampAsDay\": true,\n \"isReadOnly\": true,\n \"owner\": {\n \"ownerID\": \"user123\",\n \"ownerType\": \"USER\",\n \"ownerName\": \"John Doe\",\n \"ownerEmail\": \"owner123@test.com\"\n }\n}"
response = http.request(request)
puts response.read_body{
"message": "Entity Property Sources updated successfully.",
"data": {
"name": "Location",
"description": "This is the the location description",
"tags": [],
"sql": "SELECT * FROM shoppy-sales.setup.user_properties",
"timestampColumn": "",
"idTypeMapping": [
{
"statsigUnitID": "stableID",
"column": "user_id"
}
],
"timestampAsDay": true
}
}{
"status": 400,
"message": "Invalid request. Please check the request input and try again."
}{
"status": 401,
"message": "This endpoint only accepts an active CONSOLE key, but an invalid key was sent. Key: console-xxxXXXxxxXXXxxx"
}{
"status": 404,
"message": "Not Found. The requested resource could not be found."
}Experiments (Warehouse Native)
Post Entity Property Source
POST
/
console
/
v1
/
experiments
/
entity_property
/
{name}
Post Entity Property Source
curl --request POST \
--url https://statsigapi.net/console/v1/experiments/entity_property/{name} \
--header 'Content-Type: application/json' \
--header 'STATSIG-API-KEY: <api-key>' \
--data '
{
"sql": "<string>",
"idTypeMapping": [
{
"statsigUnitID": "<string>",
"column": "<string>"
}
],
"name": "<string>",
"description": "<string>",
"tags": [
"<string>"
],
"timestampColumn": "<string>",
"timestampAsDay": true,
"isReadOnly": true,
"owner": {
"ownerID": "user123",
"ownerType": "USER",
"ownerName": "John Doe",
"ownerEmail": "owner123@test.com"
}
}
'import requests
url = "https://statsigapi.net/console/v1/experiments/entity_property/{name}"
payload = {
"sql": "<string>",
"idTypeMapping": [
{
"statsigUnitID": "<string>",
"column": "<string>"
}
],
"name": "<string>",
"description": "<string>",
"tags": ["<string>"],
"timestampColumn": "<string>",
"timestampAsDay": True,
"isReadOnly": True,
"owner": {
"ownerID": "user123",
"ownerType": "USER",
"ownerName": "John Doe",
"ownerEmail": "owner123@test.com"
}
}
headers = {
"STATSIG-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'STATSIG-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
sql: '<string>',
idTypeMapping: [{statsigUnitID: '<string>', column: '<string>'}],
name: '<string>',
description: '<string>',
tags: ['<string>'],
timestampColumn: '<string>',
timestampAsDay: true,
isReadOnly: true,
owner: {
ownerID: 'user123',
ownerType: 'USER',
ownerName: 'John Doe',
ownerEmail: 'owner123@test.com'
}
})
};
fetch('https://statsigapi.net/console/v1/experiments/entity_property/{name}', 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://statsigapi.net/console/v1/experiments/entity_property/{name}",
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([
'sql' => '<string>',
'idTypeMapping' => [
[
'statsigUnitID' => '<string>',
'column' => '<string>'
]
],
'name' => '<string>',
'description' => '<string>',
'tags' => [
'<string>'
],
'timestampColumn' => '<string>',
'timestampAsDay' => true,
'isReadOnly' => true,
'owner' => [
'ownerID' => 'user123',
'ownerType' => 'USER',
'ownerName' => 'John Doe',
'ownerEmail' => 'owner123@test.com'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"STATSIG-API-KEY: <api-key>"
],
]);
$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://statsigapi.net/console/v1/experiments/entity_property/{name}"
payload := strings.NewReader("{\n \"sql\": \"<string>\",\n \"idTypeMapping\": [\n {\n \"statsigUnitID\": \"<string>\",\n \"column\": \"<string>\"\n }\n ],\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"timestampColumn\": \"<string>\",\n \"timestampAsDay\": true,\n \"isReadOnly\": true,\n \"owner\": {\n \"ownerID\": \"user123\",\n \"ownerType\": \"USER\",\n \"ownerName\": \"John Doe\",\n \"ownerEmail\": \"owner123@test.com\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("STATSIG-API-KEY", "<api-key>")
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://statsigapi.net/console/v1/experiments/entity_property/{name}")
.header("STATSIG-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"sql\": \"<string>\",\n \"idTypeMapping\": [\n {\n \"statsigUnitID\": \"<string>\",\n \"column\": \"<string>\"\n }\n ],\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"timestampColumn\": \"<string>\",\n \"timestampAsDay\": true,\n \"isReadOnly\": true,\n \"owner\": {\n \"ownerID\": \"user123\",\n \"ownerType\": \"USER\",\n \"ownerName\": \"John Doe\",\n \"ownerEmail\": \"owner123@test.com\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://statsigapi.net/console/v1/experiments/entity_property/{name}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["STATSIG-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"sql\": \"<string>\",\n \"idTypeMapping\": [\n {\n \"statsigUnitID\": \"<string>\",\n \"column\": \"<string>\"\n }\n ],\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"timestampColumn\": \"<string>\",\n \"timestampAsDay\": true,\n \"isReadOnly\": true,\n \"owner\": {\n \"ownerID\": \"user123\",\n \"ownerType\": \"USER\",\n \"ownerName\": \"John Doe\",\n \"ownerEmail\": \"owner123@test.com\"\n }\n}"
response = http.request(request)
puts response.read_body{
"message": "Entity Property Sources updated successfully.",
"data": {
"name": "Location",
"description": "This is the the location description",
"tags": [],
"sql": "SELECT * FROM shoppy-sales.setup.user_properties",
"timestampColumn": "",
"idTypeMapping": [
{
"statsigUnitID": "stableID",
"column": "user_id"
}
],
"timestampAsDay": true
}
}{
"status": 400,
"message": "Invalid request. Please check the request input and try again."
}{
"status": 401,
"message": "This endpoint only accepts an active CONSOLE key, but an invalid key was sent. Key: console-xxxXXXxxxXXXxxx"
}{
"status": 404,
"message": "Not Found. The requested resource could not be found."
}Authorizations
Headers
Optional header to respect review settings for mutation endpoints.
Path Parameters
name
Body
application/json
SQL query defining the data source.
Mappings of Statsig units to their columns.
Show child attributes
Show child attributes
Optional new name for the entity property source.
Optional updated context for the entity property source.
Optional updated tags for categorization.
Optional column name for timestamp.
Indicates if the timestamp is treated as a day.
Specifies if the source can only be edited via the Console API.
Schema for owner data including ID, type, name. Note that if Entity is created by CONSOLE API, owner will be undefined.
Show child attributes
Show child attributes
Example:
{
"ownerID": "user123",
"ownerType": "USER",
"ownerName": "John Doe",
"ownerEmail": "owner123@test.com"
}
⌘I

