Create a customer property
curl --request POST \
--url https://api.plane.so/api/v1/workspaces/{workspace_slug}/customer-properties/ \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "<string>",
"display_name": "<string>",
"description": "<string>",
"property_type": "<string>",
"relation_type": "<string>",
"is_required": true,
"is_multi": true,
"is_active": true,
"sort_order": 123,
"default_value": [
"<string>"
],
"settings": {},
"validation_rules": {},
"logo_props": {},
"external_source": "<string>",
"external_id": "<string>"
}
'import requests
url = "https://api.plane.so/api/v1/workspaces/{workspace_slug}/customer-properties/"
payload = {
"name": "<string>",
"display_name": "<string>",
"description": "<string>",
"property_type": "<string>",
"relation_type": "<string>",
"is_required": True,
"is_multi": True,
"is_active": True,
"sort_order": 123,
"default_value": ["<string>"],
"settings": {},
"validation_rules": {},
"logo_props": {},
"external_source": "<string>",
"external_id": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
display_name: '<string>',
description: '<string>',
property_type: '<string>',
relation_type: '<string>',
is_required: true,
is_multi: true,
is_active: true,
sort_order: 123,
default_value: ['<string>'],
settings: {},
validation_rules: {},
logo_props: {},
external_source: '<string>',
external_id: '<string>'
})
};
fetch('https://api.plane.so/api/v1/workspaces/{workspace_slug}/customer-properties/', 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://api.plane.so/api/v1/workspaces/{workspace_slug}/customer-properties/",
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([
'name' => '<string>',
'display_name' => '<string>',
'description' => '<string>',
'property_type' => '<string>',
'relation_type' => '<string>',
'is_required' => true,
'is_multi' => true,
'is_active' => true,
'sort_order' => 123,
'default_value' => [
'<string>'
],
'settings' => [
],
'validation_rules' => [
],
'logo_props' => [
],
'external_source' => '<string>',
'external_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-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://api.plane.so/api/v1/workspaces/{workspace_slug}/customer-properties/"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"display_name\": \"<string>\",\n \"description\": \"<string>\",\n \"property_type\": \"<string>\",\n \"relation_type\": \"<string>\",\n \"is_required\": true,\n \"is_multi\": true,\n \"is_active\": true,\n \"sort_order\": 123,\n \"default_value\": [\n \"<string>\"\n ],\n \"settings\": {},\n \"validation_rules\": {},\n \"logo_props\": {},\n \"external_source\": \"<string>\",\n \"external_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-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://api.plane.so/api/v1/workspaces/{workspace_slug}/customer-properties/")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"display_name\": \"<string>\",\n \"description\": \"<string>\",\n \"property_type\": \"<string>\",\n \"relation_type\": \"<string>\",\n \"is_required\": true,\n \"is_multi\": true,\n \"is_active\": true,\n \"sort_order\": 123,\n \"default_value\": [\n \"<string>\"\n ],\n \"settings\": {},\n \"validation_rules\": {},\n \"logo_props\": {},\n \"external_source\": \"<string>\",\n \"external_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.plane.so/api/v1/workspaces/{workspace_slug}/customer-properties/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"display_name\": \"<string>\",\n \"description\": \"<string>\",\n \"property_type\": \"<string>\",\n \"relation_type\": \"<string>\",\n \"is_required\": true,\n \"is_multi\": true,\n \"is_active\": true,\n \"sort_order\": 123,\n \"default_value\": [\n \"<string>\"\n ],\n \"settings\": {},\n \"validation_rules\": {},\n \"logo_props\": {},\n \"external_source\": \"<string>\",\n \"external_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyCustomer Properties
Create a customer property
Creates a new customer property definition in a workspace.
POST
/
api
/
v1
/
workspaces
/
{workspace_slug}
/
customer-properties
/
Create a customer property
curl --request POST \
--url https://api.plane.so/api/v1/workspaces/{workspace_slug}/customer-properties/ \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "<string>",
"display_name": "<string>",
"description": "<string>",
"property_type": "<string>",
"relation_type": "<string>",
"is_required": true,
"is_multi": true,
"is_active": true,
"sort_order": 123,
"default_value": [
"<string>"
],
"settings": {},
"validation_rules": {},
"logo_props": {},
"external_source": "<string>",
"external_id": "<string>"
}
'import requests
url = "https://api.plane.so/api/v1/workspaces/{workspace_slug}/customer-properties/"
payload = {
"name": "<string>",
"display_name": "<string>",
"description": "<string>",
"property_type": "<string>",
"relation_type": "<string>",
"is_required": True,
"is_multi": True,
"is_active": True,
"sort_order": 123,
"default_value": ["<string>"],
"settings": {},
"validation_rules": {},
"logo_props": {},
"external_source": "<string>",
"external_id": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
display_name: '<string>',
description: '<string>',
property_type: '<string>',
relation_type: '<string>',
is_required: true,
is_multi: true,
is_active: true,
sort_order: 123,
default_value: ['<string>'],
settings: {},
validation_rules: {},
logo_props: {},
external_source: '<string>',
external_id: '<string>'
})
};
fetch('https://api.plane.so/api/v1/workspaces/{workspace_slug}/customer-properties/', 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://api.plane.so/api/v1/workspaces/{workspace_slug}/customer-properties/",
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([
'name' => '<string>',
'display_name' => '<string>',
'description' => '<string>',
'property_type' => '<string>',
'relation_type' => '<string>',
'is_required' => true,
'is_multi' => true,
'is_active' => true,
'sort_order' => 123,
'default_value' => [
'<string>'
],
'settings' => [
],
'validation_rules' => [
],
'logo_props' => [
],
'external_source' => '<string>',
'external_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-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://api.plane.so/api/v1/workspaces/{workspace_slug}/customer-properties/"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"display_name\": \"<string>\",\n \"description\": \"<string>\",\n \"property_type\": \"<string>\",\n \"relation_type\": \"<string>\",\n \"is_required\": true,\n \"is_multi\": true,\n \"is_active\": true,\n \"sort_order\": 123,\n \"default_value\": [\n \"<string>\"\n ],\n \"settings\": {},\n \"validation_rules\": {},\n \"logo_props\": {},\n \"external_source\": \"<string>\",\n \"external_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-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://api.plane.so/api/v1/workspaces/{workspace_slug}/customer-properties/")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"display_name\": \"<string>\",\n \"description\": \"<string>\",\n \"property_type\": \"<string>\",\n \"relation_type\": \"<string>\",\n \"is_required\": true,\n \"is_multi\": true,\n \"is_active\": true,\n \"sort_order\": 123,\n \"default_value\": [\n \"<string>\"\n ],\n \"settings\": {},\n \"validation_rules\": {},\n \"logo_props\": {},\n \"external_source\": \"<string>\",\n \"external_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.plane.so/api/v1/workspaces/{workspace_slug}/customer-properties/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"display_name\": \"<string>\",\n \"description\": \"<string>\",\n \"property_type\": \"<string>\",\n \"relation_type\": \"<string>\",\n \"is_required\": true,\n \"is_multi\": true,\n \"is_active\": true,\n \"sort_order\": 123,\n \"default_value\": [\n \"<string>\"\n ],\n \"settings\": {},\n \"validation_rules\": {},\n \"logo_props\": {},\n \"external_source\": \"<string>\",\n \"external_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyPath parameters
string
required
The workspace_slug represents the unique workspace identifier for a workspace in Plane. It can be found in the URL. For example, in the URL
https://app.plane.so/my-team/projects/, the workspace slug is my-team.Body parameters
string
Name of the property.
string
Display name of the property.
string
Description of the property.
string
Type of the property.
string
Relation type of the property.
boolean
Whether the property is required.
boolean
Whether the property supports multiple values.
boolean
Whether the property is active.
number
Sort order for the property.
string[]
Default values for the property.
object
Settings for the property.
object
Validation rules for the property.
object
Logo properties for the property.
string
External source identifier.
string
External ID from the external source.

