Create a custom property

Description

Create a new custom property, using a POST request containing the metadata of custom property. The metadata includes required properties and optional properties. Property with same name, should not have the same teamsite.

Required Properties: name, propertyType, scopes, teamSites, lastUpdateUserId, teamSites

Optional Properties: order, hint, propertyDependency, valueCascading, domainOfValues, settings

Metadata Definition

Name:

a json string , length less than 50, use to save current custom property name

Scopes:

a json array, use to save domains of current custom property, you can use one or more values from list ("content", "task", "project" and "request").

PropertyType:

a json string, use to save type of current custom property, you can use only one value from type list ("multi-select", "single-select", "string", "date", "integer", "float", "tag", "boolean")

DomainOfValues:

a json array . if property type is "multi-select" or "single-select", need to set domainOfValues. The max count of values is 12000.

"id" - a json string, save a guid, to specified a domain of value, it should be unique in whole tenant.

"value" - a json string, length less than 255, save a domian value of current custom property.

"order" - a json integer, save order of current value in whole DomainOfValues array.

for example:

[
        {
            "id": "f6ede60a-9282-4162-852f-468b945eabc8",
            "value": "AAA",
            "order": 1
        },
        {
            "id": "5248d82b-df24-4274-aa10-950c53807758",
            "value": "BBB",
            "order": 2
        },
        {
            "id": "d6f500db-5cb1-49f7-8c7b-d5162ceedbd9",
            "value": "CCC",
            "order": 3
        }
]

TeamSites:

a json object, to specify which teamsites can use this custom property, if Scopes only have "content", then teamSites must have at least one.

for below example, current custom property can be used in 3 teamsite.

"35720565-6c4a-4bdc-b119-c7f1fdcc778b" , "fec5b798-855c-4872-880e-b34a45270af0", "5e51240a-a64d-4b2d-bc25-39b073c8cf39" are teamsites.

"isVisibleInDocCenter" - a json boolean, if custom property need to be visible in DocCenter for current teamsite.

"order" - a json integer, the order of current teamsite in TeamSites.

{
        "35720565-6c4a-4bdc-b119-c7f1fdcc778b": {
            "order": 0,
            "isVisibleInDocCenter": false
        },
        "fec5b798-855c-4872-880e-b34a45270af0": {
            "order": 1,
            "isVisibleInDocCenter": false
        },
        "5e51240a-a64d-4b2d-bc25-39b073c8cf39": {
            "order": 2,
            "isVisibleInDocCenter": false
        }
}

LastUpdateUserId:

a json string, save a integer or a guid, to specify user id of taking this operation.

Hint:

a json string, length less than 255, it is a helper message, include description of custom property.

Order:

a json integer, the custom property order in whole list.

Settings:

a json array, include serveral settings of Search, Library, DocCenter there are some settings:

{
        "showInFilter": true,
        "showInDocCenter": false,
        "showInDocCenterFilter": false,
        "suggestionsEnabled": false,
        "searchFacetOrder": 96,
        "IsSearchable": false,
        "editability": "Editable"
}

  • “showInFilter - a json boolean, identify if current custom property can show as search filter of Library
  • “showInDocCenter” - a json boolean, identify if current custom property can show in Doc Center.
  • “showInDocCenterFilter" - a json boolean, identify if current custom property can show as search filter of Doc Center. There is a constraint between “showInDocCenter” and “showInDocCenterFilter". If “showInDocCenter” = true, then “showInDocCenterFilter" can be true or false. If “showInDocCenter” = false, then “showInDocCenterFilter" should be false.
  • "suggestionsEnabled" - a json boolean, is used by search.
  • "searchFacetOrder" - a json integer, is used by search.
  • "editability" - a json boolean, support 3 kinds of value: "Editable | ReadOnly | Hidden", "Editable" is means to allow to edit in Library, "ReadOnly" is means to allow to view, not allow to edit in Library, "Hidden" is means to not allow to show in Library.

PropertyDependency:

a json string array, save a json object, include all dependency logic rules of current custom property, for each custom property can have some dependency logic rules, max count is 32. In property dependency, logic rules are related some controller custom properties and current custom property. when controller custom properties changes and the chagnes meet dependency logic rules, current custom property will execute some actions to changes.

Notes: This is advanced feature, only for Premier and Enterprise Plus users.
Tip: for a propertyDependency, it is a json string with escape character, you replace \" with ", you will a valid json object like below.
Example-1, custom proerpty "CustomProperty-001"
CustomProperty-001
{
    "continuationToken": "",
    "cursor": "",
    "kind": "List",
    "count": 1,
    "totalCount": 1,
    "items": [
        {
            "kind": "CustomProperty",
            "name": "CustomProperty-001",
            "propertyType": "string",
            "order": 201,
            "hint": "Helper text",
            "domainOfValues": null,
            "settings": {
                "showInFilter": true,
                "showInDocCenter": true,
                "showInDocCenterFilter": false,
                "suggestionsEnabled": false,
                "searchFacetOrder": 0,
                "IsSearchable": false,
                "editability": "Editable"
            },
            "scopes": {
                "content": {
                    "isRequired": false,
                    "isRequiredForPublishing": true,
                    "isVisibleInRequestForm": false
                }
            },
            "teamSites": {
                "1": {
                    "order": 0,
                    "isVisibleInDocCenter": true
                }
            },
            "lastUpdateUserId": "wVK7B9gstXpzseMkUH3Xpw",
            "lastUpdateDateTime": "2023-02-13T06:41:13.3987243",
            "propertyDependency": [
                "{\"id\":\"ee7ce090-7ac0-4519-a829-2d25914d44c5\",\"name\":\"logic 1\",\"ruleType\":\"RuleWithOneOrNControllingProperties\",\"match\":{\"conditions\":[{\"attribute\":\"traits.customProperties.fields.properties.090b6c87-44a7-4250-babd-dda06c5e23ee.value.value\",\"operator\":\"Equal\",\"value\":1}],\"filters\":[],\"operator\":\"And\"},\"options\":{\"isVisible\":true,\"isRequiredForPublish\":true,\"isAutoSelect\":false,\"selectValueIds\":null,\"appendMapInfos\":null}}"
            ],
            "tenantId": "db6f0b99-6b2b-4ace-84e1-7aec5db297c6",
            "id": "9266e92c-965c-4ff5-be42-84bc971baab1",
            "etag": "XbimDK4B_0uWFrXQWcbHRQ",
            "timestamp": "2023-02-13T06:41:13.4140000Z"
        }
    ]
}

CustomProperty-001 's PropertyDependecy

"propertyDependency": [
                "{\"id\":\"ee7ce090-7ac0-4519-a829-2d25914d44c5\",\"name\":\"logic 1\",\"ruleType\":\"RuleWithOneOrNControllingProperties\",\"match\":{\"conditions\":[{\"attribute\":\"traits.customProperties.fields.properties.090b6c87-44a7-4250-babd-dda06c5e23ee.value.value\",\"operator\":\"Equal\",\"value\":1}],\"filters\":[],\"operator\":\"And\"},\"options\":{\"isVisible\":true,\"isRequiredForPublish\":true,\"isAutoSelect\":false,\"selectValueIds\":null,\"appendMapInfos\":null}}"
            ]

Remove escape character,get a valid json object. Please note that we add comments for each metadata of propertyDependency.

{
    "id": "ee7ce090-7ac0-4519-a829-2d25914d44c5",  /* dependency id, don't allow duplicated*/
    "name": "logic 1", /* dependency name, don't allow duplicated*/
    "ruleType": "RuleWithOneOrNControllingProperties", /* rule's type */
    "match": { /* logic rules, for usage, reference "Find custom properties by filter*/
        "conditions": [
            {   
                /* "traits.customProperties.fields.properties" is prefix */
                /* "090b6c87-44a7-4250-babd-dda06c5e23ee" is controller custom property id */
                /* "value.value" is meanings to use custom property value. */ 
                "attribute": "traits.customProperties.fields.properties.090b6c87-44a7-4250-babd-dda06c5e23ee.value.value",
                "operator": "Equal",
                "value": 1
            }
        ],
        "filters": [],
        "operator": "And"
    },
    /* when controller custom property value change and meet above logic rule, then execute below actions */
    "options": {
        "isVisible": true,     /* hide on UI*/
        "isRequiredForPublish": true,  /* is required for publish*/
        "isAutoSelect": false, /* when meet rule, if auto change value of current custom property*/
        "selectValueIds": null, /* if isAutoSelect = true, need to include a value arrray*/
        "appendMapInfos": null /* if ruleType = RuleWithOneOrNControllingProperties, it is null*/
    }
}

On Seismic UI, we can see like below picture for "CustomProperty-001".

We can see 2 custom properties, current custom property "CustomProperty-001", controller custom property(name= "1123 whole number readonly", id=090b6c87-44a7-4250-babd-dda06c5e23ee).

For logic rule, each metadata definiton, you can see above details after json string remove escape character.

In logic rule, when type of controller custom property is "single-select" or "multi-select", you can specified value by "value.valueId" like below. you can see details in Example-2 "CustomProperty-002"

"attribute": "traits.customProperties.fields.properties.090b6c87-44a7-4250-babd-dda06c5e23ee.value.valueId",

In logic rule, when type of controller custom property is NOT "single-select" or "multi-select", you can specified value by "value.value" like below. In current example, "090b6c87-44a7-4250-babd-dda06c5e23ee" is a string type, NOT "single-select" or "multi-select".

"attribute": "traits.customProperties.fields.properties.090b6c87-44a7-4250-babd-dda06c5e23ee.value.value",

When controller custom property value change and meet logic rule, then current custom properties will execute some actions, include

hiding, auto-selecting and requiring properties for publishing, if auto-selecting = true, then need to set "selectValueIds" too.

Example 2 , custom proerpty "CustomProperty-002"
{
    "continuationToken": "",
    "cursor": "",
    "kind": "List",
    "count": 1,
    "totalCount": 1,
    "items": [
        {
            "kind": "CustomProperty",
            "name": "CustomProperty-002",
            "propertyType": "date",
            "order": 202,
            "hint": null,
            "domainOfValues": null,
            "settings": {
                "showInFilter": true,
                "showInDocCenter": false,
                "showInDocCenterFilter": false,
                "suggestionsEnabled": false,
                "searchFacetOrder": 0,
                "IsSearchable": false,
                "editability": "Editable"
            },
            "scopes": {
                "content": {
                    "isRequired": false,
                    "isRequiredForPublishing": true,
                    "isVisibleInRequestForm": false
                }
            },
            "teamSites": {
                "1": {
                    "order": 0,
                    "isVisibleInDocCenter": true
                }
            },
            "lastUpdateUserId": "wVK7B9gstXpzseMkUH3Xpw",
            "lastUpdateDateTime": "2023-02-13T08:23:33.4460037",
            "propertyDependency": [
                "{\"id\":\"32e6f06c-c107-4faa-8673-fcabc6602ef5\",\"name\":\"logic 1\",\"ruleType\":\"RuleWithOneOrNControllingProperties\",\"match\":{\"conditions\":[{\"attribute\":\"traits.customProperties.fields.properties.689f24b8-bb90-488d-be18-bce723256bbb.value.valueId\",\"operator\":\"In\",\"value\":[\"a8fe9d74-a1af-41fc-9cf9-b99e9cf73e2e\"]},{\"attribute\":\"traits.customProperties.fields.properties.090b6c87-44a7-4250-babd-dda06c5e23ee.value.value\",\"operator\":\"Equal\",\"value\":1}],\"filters\":[],\"operator\":\"And\"},\"options\":{\"isVisible\":true,\"isRequiredForPublish\":true,\"isAutoSelect\":false,\"selectValueIds\":null,\"appendMapInfos\":null}}"
            ],
            "tenantId": "db6f0b99-6b2b-4ace-84e1-7aec5db297c6",
            "id": "16d0d2bd-23bd-4c65-ac19-424e56e380b3",
            "etag": "GPLQaF-PeESmCl_1pBVJ0A",
            "timestamp": "2023-02-13T08:23:33.4620000Z"
        }
    ]
}

CustomProperty-002 's PropertyDependecy

"propertyDependency": [
"{\"id\":\"32e6f06c-c107-4faa-8673-fcabc6602ef5\",\"name\":\"logic 1\",\"ruleType\":\"RuleWithOneOrNControllingProperties\",\"match\":{\"conditions\":[{\"attribute\":\"traits.customProperties.fields.properties.689f24b8-bb90-488d-be18-bce723256bbb.value.valueId\",\"operator\":\"In\",\"value\":[\"a8fe9d74-a1af-41fc-9cf9-b99e9cf73e2e\"]},{\"attribute\":\"traits.customProperties.fields.properties.090b6c87-44a7-4250-babd-dda06c5e23ee.value.value\",\"operator\":\"Equal\",\"value\":1}],\"filters\":[],\"operator\":\"And\"},\"options\":{\"isVisible\":true,\"isRequiredForPublish\":true,\"isAutoSelect\":false,\"selectValueIds\":null,\"appendMapInfos\":null}}"
],

Remove Escape Character - get a valid json object. Please note that we add comments for each metadata of propertyDependency.

{
    "id": "32e6f06c-c107-4faa-8673-fcabc6602ef5", /* dependency id, don't allow duplicated.*/
    "name": "logic 1", /*dependency name, don't allow duplicated.*/
    "ruleType": "RuleWithOneOrNControllingProperties", /* rule's type */
    "match": { /* logic rules , for usage, reference "Find custom properties by filter*/
        "conditions": [
            {   
                /* "traits.customProperties.fields.properties" is prefix */
                /* "689f24b8-bb90-488d-be18-bce723256bbb" is controller custom property id */
                /* "value.valueId" is meanings to use custom property Id. */
                "attribute": "traits.customProperties.fields.properties.689f24b8-bb90-488d-be18-bce723256bbb.value.valueId",
                "operator": "In",
                "value": [
                    "a8fe9d74-a1af-41fc-9cf9-b99e9cf73e2e"  /* custom property value Id that difined in DomainOfValues of controller custom property */
                ]
            },
            {   
                /* "traits.customProperties.fields.properties" is prefix */
                /* "090b6c87-44a7-4250-babd-dda06c5e23ee" is controller custom property id */
                /* "value.value" is meanings to use custom property value. */
                "attribute": "traits.customProperties.fields.properties.090b6c87-44a7-4250-babd-dda06c5e23ee.value.value",
                "operator": "Equal",
                "value": 1
            }
        ],
        "filters": [],
        "operator": "And"
    },
    "options": {
        "isVisible": true,     /* hide on UI*/
        "isRequiredForPublish": true,  /* is required for publish*/
        "isAutoSelect": false, /* when meet rule, if auto change value of current custom property*/
        "selectValueIds": null, /* if isAutoSelect = true, need to include a value arrray*/
        "appendMapInfos": null /* if ruleType = RuleWithOneOrNControllingProperties, it is null*/
    }
}

On Seismic UI, we can see like below picture for "CustomProperty-002".

We can see 3 custom properties, one current custom property "CustomProperty-001", two controller custom properties. For controller custom property, one is (name= "1123 whole number readonly", id="090b6c87-44a7-4250-babd-dda06c5e23ee"), another is (name= "001prop-3", id="689f24b8-bb90-488d-be18-bce723256bbb")

For logic rule, each metadata definiton, you can see above details after json string remove escape character.

In logic rule, the type of controller custom property (name= "001prop-3", id=090b6c87-44a7-4250-babd-dda06c5e23ee) is "single-select", so you need to by "value.valueId" like below.

{   
        /* "traits.customProperties.fields.properties" is prefix */
        /* "689f24b8-bb90-488d-be18-bce723256bbb" is controller custom property id */
        /* "value.valueId" is meanings to use custom property Id. */
        "attribute": "traits.customProperties.fields.properties.689f24b8-bb90-488d-be18-bce723256bbb.value.valueId",
        "operator": "In",
        /* custom property value Id that difined in DomainOfValues of controller custom property */
        "value": [
            "a8fe9d74-a1af-41fc-9cf9-b99e9cf73e2e"  
           ]
}

In logic rule, the type of controller custom property is string, NOT "single-select" or "multi-select", you can specified value by "value.value" like below.

{   
       /* "traits.customProperties.fields.properties" is prefix */
       /* "090b6c87-44a7-4250-babd-dda06c5e23ee" is controller custom property id */
       /* "value.value" is meanings to use custom property value. */
       "attribute": "traits.customProperties.fields.properties.090b6c87-44a7-4250-babd-dda06c5e23ee.value.value",
       "operator": "Equal",
       "value": 1
}

When controller custom property value change and meet logic rule, then current custom properties will execute some actions, include

hiding, auto-selecting and requiring properties for publishing, if auto-selecting = true, then need to set "selectValueIds" too.

For condition, there are some example as your reference.

Condition Example 1: operator "In", is meaning to include any in array.

Controller custom property is "03fa9ce5-bf36-4aa7-a1b6-5f4ee677d2b8" , its type is "single-select".

{
   "attribute": "traits.customProperties.fields.properties.03fa9ce5-bf36-4aa7-a1b6-5f4ee677d2b8.value.valueId",
   "operator": "In",
   "value": [
        "94eab39e-169e-446c-b121-1b7bf233c4aa"
       ]
}

Condition Example 2: operator "Equal"

Controller custom property is "96252da4-613c-4ce3-a929-07df48c8670e", its type is "string". There are some operator can be used, like "NotEqual", "LessThan", "GreaterThan".

{
      "attribute": "traits.customProperties.fields.properties.96252da4-613c-4ce3-a929-07df48c8670e.value.valueId",
      "operator": "Equal",
      "value": [
         "df2d0a6d-5cf5-4315-9da9-28635b535ab6"
      ]
}

Condition Example 3: operator "ArrayContainsAny" - is meaning to include any in array.

Controller custom property is "2efcdd61-de2c-4801-93aa-6eab751842de", its type is "multi-select". And , at this cace, Current custom property is also "mult-select".

{
      "attribute": "traits.customProperties.fields.properties.2efcdd61-de2c-4801-93aa-6eab751842de.value.valueId",
      "operator": "ArrayContainsAny",
      "value": [
            "0d8c8612-ba56-4cd4-b0ac-43b7739eac28",
            "585fffb3-64b9-44b2-8bea-ee09ab70c0a5"
        ]
}

Condition Example 4: operator "NotIn" is meaning to NOT include any in array.

Controller custom property is "040978ed-224a-40c9-ac11-fdf6ca4f9d9a" , its type is "single-select".

{
    "attribute": "traits.customProperties.fields.properties.040978ed-224a-40c9-ac11-fdf6ca4f9d9a.value.valueId",
    "operator": "NotIn",
    "value": [
           "8c55079c-f488-4bae-bbce-08bc829ec3b9"
    ]
}

ValueCascading:

a json string array, save a json object, inlcude value cascading logic rules of custom property. For each custom property, have at most one value cascading. The value cascading is available, only when type of controller and current custom property are "multi-select" or "single-select". ValueCascading logic rules is used to control what values in current custom propery are visible based on a controlling property’s selections.

Notes: This is advanced feature, only for Premier and Enterprise Plus users.
Example 1 CustomProperty-003

CustomProperty-003

{
    "continuationToken": "",
    "cursor": "",
    "kind": "List",
    "count": 1,
    "totalCount": 1,
    "items": [
        {
            "kind": "CustomProperty",
            "name": "CustomProperty-003",
            "propertyType": "single-select",
            "order": 203,
            "hint": null,
            "domainOfValues": [
                {
                    "id": "77e6c316-5b80-405a-9b89-679eef012700",
                    "value": "A",
                    "order": 1
                },
                {
                    "id": "bc41d610-d24d-45ea-adbc-de0d0f814bc0",
                    "value": "B",
                    "order": 2
                }
            ],
            "settings": {
                "showInFilter": true,
                "showInDocCenter": false,
                "showInDocCenterFilter": false,
                "suggestionsEnabled": false,
                "searchFacetOrder": 0,
                "IsSearchable": false,
                "editability": "Editable"
            },
            "scopes": {
                "content": {
                    "isRequired": false,
                    "isRequiredForPublishing": true,
                    "isVisibleInRequestForm": false
                }
            },
            "teamSites": {
                "1": {
                    "order": 0,
                    "isVisibleInDocCenter": true
                }
            },
            "lastUpdateUserId": "wVK7B9gstXpzseMkUH3Xpw",
            "lastUpdateDateTime": "2023-02-13T07:43:00.7442875",
            "valueCascading": [
                "{\"id\":\"d5d97016-cdb1-4690-8a7e-bab5bf7b79e2\",\"name\":\"logic 1\",\"controllerId\":\"b19fbf80-ef6d-46f0-be63-716d303dcac3\",\"isAutoSelect\":true,\"matches\":[{\"match\":{\"conditions\":[{\"attribute\":\"traits.customProperties.fields.properties.c540b9e5-8bc0-4545-b4eb-7fa237c69c7f.value.valueId\",\"operator\":\"Equal\",\"value\":\"91741140-a6ca-430d-9982-8b366c298ab1\"}],\"filters\":[],\"operator\":\"And\"},\"possibleValueIds\":[\"77e6c316-5b80-405a-9b89-679eef012700\"]},{\"match\":{\"conditions\":[{\"attribute\":\"traits.customProperties.fields.properties.c540b9e5-8bc0-4545-b4eb-7fa237c69c7f.value.valueId\",\"operator\":\"Equal\",\"value\":\"a0f31056-f87d-485d-9792-cf6937675af3\"}],\"filters\":[],\"operator\":\"And\"},\"possibleValueIds\":[\"bc41d610-d24d-45ea-adbc-de0d0f814bc0\"]}]}"
            ],
            "tenantId": "db6f0b99-6b2b-4ace-84e1-7aec5db297c6",
            "id": "e9fe9afe-e7f0-461b-8780-f3ce048414a7",
            "etag": "9mAvsX0yFUCLGKKppsvPMA",
            "timestamp": "2023-02-13T07:43:00.7710000Z"
        }
    ]
}

CustomProperty-003 's valueCascading

"valueCascading": [
"{\"id\":\"d5d97016-cdb1-4690-8a7e-bab5bf7b79e2\",\"name\":\"logic 1\",\"controllerId\":\"b19fbf80-ef6d-46f0-be63-716d303dcac3\",\"isAutoSelect\":true,\"matches\":[{\"match\":{\"conditions\":[{\"attribute\":\"traits.customProperties.fields.properties.c540b9e5-8bc0-4545-b4eb-7fa237c69c7f.value.valueId\",\"operator\":\"Equal\",\"value\":\"91741140-a6ca-430d-9982-8b366c298ab1\"}],\"filters\":[],\"operator\":\"And\"},\"possibleValueIds\":[\"77e6c316-5b80-405a-9b89-679eef012700\"]},{\"match\":{\"conditions\":[{\"attribute\":\"traits.customProperties.fields.properties.c540b9e5-8bc0-4545-b4eb-7fa237c69c7f.value.valueId\",\"operator\":\"Equal\",\"value\":\"a0f31056-f87d-485d-9792-cf6937675af3\"}],\"filters\":[],\"operator\":\"And\"},\"possibleValueIds\":[\"bc41d610-d24d-45ea-adbc-de0d0f814bc0\"]}]}"
],

Remove Escape Character - get a valid json object. Please note that we add comments for each metadata of valueCascading.

{
    "id": "d5d97016-cdb1-4690-8a7e-bab5bf7b79e2",   /* valueCascading id, don't allow dupicated. */
    "name": "logic 1", /* valueCascading rule name, don't allow dupicated. */
    "controllerId": "b19fbf80-ef6d-46f0-be63-716d303dcac3", /* controller custom property id */
    /* When controller custom property value chagne and meet rule, if need to change current proeprty value automatically*/
    "isAutoSelect": true,   
    "matches": [  /* logic rules */
        {
            "match": {
                "conditions": [
                    {
                        /* "traits.customProperties.fields.properties" is prefix */
                        /* "c540b9e5-8bc0-4545-b4eb-7fa237c69c7f" is controller custom property id */
                        /* "value.valueId" is meanings to use custom property value id. */
                        "attribute": "traits.customProperties.fields.properties.c540b9e5-8bc0-4545-b4eb-7fa237c69c7f.value.valueId",
                        "operator": "Equal",
                        /* custom property value Id that difined in DomainOfValues of controller custom property */
                        "value": "91741140-a6ca-430d-9982-8b366c298ab1"
                    }
                ],
                "filters": [],
                "operator": "And"
            },
            /* custom property value Id that difined in DomainOfValues of current custom property */
            "possibleValueIds": [
                "77e6c316-5b80-405a-9b89-679eef012700"
            ]
        },
        {
            "match": {
                "conditions": [
                    {
                        /* "traits.customProperties.fields.properties" is prefix */
                        /* "c540b9e5-8bc0-4545-b4eb-7fa237c69c7f" is controller custom property id */
                        /* "value.valueId" is meanings to use custom property value id. */
                        "attribute": "traits.customProperties.fields.properties.c540b9e5-8bc0-4545-b4eb-7fa237c69c7f.value.valueId",
                        "operator": "Equal",
                        "value": "a0f31056-f87d-485d-9792-cf6937675af3"
                    }
                ],
                "filters": [],
                "operator": "And"
            },
            /* custom property value Id that difined in DomainOfValues of current custom property */
            "possibleValueIds": [
                "bc41d610-d24d-45ea-adbc-de0d0f814bc0"
            ]
        }
    ]
}

On Seismic UI, we can see like below picture for "CustomProperty-003".

In Example 3, when controller custom property "activity-multi" select value "MM1", then current custom property "CustomProperty-003" only appear value "A".

when controller custom property "activity-multi" select value "MM2", then current custom property "CustomProperty-003" only appear value "B".

when controller custom property "activity-multi" select other value, then current custom property "CustomProperty-003" show nothing.

NOTES: There some limits for ValueCascading and PropertyDependency

The max count of "possibleValueIds" is 1000

The max count of "match" is 1000.

The max max of "condition is 32.

\uD83D\uDCD8 Info

For PropertyDependency and ValueCascading, you can get a custom property with similar logic rules created by Seismic UI, then replace value according to your requirement. It is better to send Seismc to review.

For date time value, use UTC time, the format like 2023-01-04T00:00:00.0000000Z

Body Params

POST /custom-property/v1/customProperties creates a custom property with a JSON body where required fields are kind="CustomProperty", name (string <50), propertyType (one of multi-select|single-select|string|date|integer|float|tag|boolean), scopes (object with project|request|content|task flags), teamSites (object keyed by teamSiteId with order and isVisibleInDocCenter; at least one site if scopes only contains content), lastUpdateUserId (string GUID or integer); optional fields include order (int), hint (string <=255), settings (showInFilter, showInDocCenter, showInDocCenterFilter with constraint, suggestionsEnabled, searchFacetOrder, IsSearchable, editability), domainOfValues (required when propertyType is single-/multi-select; each value has id GUID, value string <=255, order int), propertyDependency (array of escaped JSON rules; max 32), valueCascading (array of escaped JSON rules; max 1).

string

Resource kind; always 'CustomProperty'. Use to verify response type when parsing.

string

name of current custom property, the property name length need to less than 50 words.

string

type of current custom property, you can use only one value from type list (multi-select, single-select, string, date, integer, float, tag, boolean)

number

under in property list show on front-end UI

string

tips of property usage, help user to understand how to use this property.

domainOfValues
array of objects

List of allowed values for the property. Each item includes id (GUID), value (string <=255 chars) and order (integer >=0) used for sorting. When propertyType is single-select, multi-select or tag, it need include domianOfValues.

domainOfValues
settings
object
scopes
object
teamSites
object

In Seismic Custom Properties, teamSites defines where a property is available and whether it’s visible in Doc Center per teamsite. It is a JSON object keyed by teamSiteId (GUID), where each entry has order (integer) and isVisibleInDocCenter (boolean). If scopes only contains content, at least one teamsite is required. Provide teamSites in POST/PUT; the same structure is returned by GET. Use the Find API filter with attribute teamSites and operator ArrayContains to fetch properties enabled for a given teamsite. Global Doc Center settings live under settings (showInDocCenter, showInDocCenterFilter and their constraint), while teamSites.{id}.isVisibleInDocCenter toggles visibility for that specific site. Keep order values unique and meaningful for UI ordering, and only include sites that should use the property.

string

save a user Id which is from UMS service when the user create, update or delete this custom property.

date-time

UTC timestamp of the latest change to this property; RFC 3339 format. Example shows seven fractional seconds used by the service.

propertyDependency
array of strings

In Seismic Custom Properties, propertyDependency defines how one or more controlling custom properties drive behavior of the current property. It is an array of JSON strings (escaped JSON) in the API payload; unescape each string to view or edit the JSON rule. A rule includes id (unique GUID), name (unique), ruleType (currently RuleWithOneOrNControllingProperties), match (boolean logic with conditions, optional filters, and an And/Or operator), and options (actions applied when the match is satisfied). Each condition targets a controlling property via attribute traits.customProperties.fields.properties.{controllerPropertyId}.value.valueId for single-/multi-select controllers or .value.value for non-select types (string, integer, date, boolean), with operators such as Equal, NotEqual, In, NotIn, LessThan, GreaterThan, and ArrayContainsAny (for multi-select); the value is a scalar or array as required by the operator. Options control UI and behavior: isVisible (show/hide), isRequiredForPublish, isAutoSelect, selectValueIds (required when isAutoSelect is true; IDs must exist in the current property’s domainOfValues), and appendMapInfos (null for this ruleType). Each custom property can have up to 32 dependency rules, and a rule can include up to 32 conditions; use UTC timestamps (e.g., 2023-01-04T00:00:00.0000000Z) for date comparisons. This is an advanced feature available to Premier and Enterprise Plus; a practical approach is to GET a UI-created property with similar rules, unescape and adjust IDs/values, then POST/PUT the updated rules and, if needed, submit to Seismic for review.

propertyDependency
valueCascading
array of strings

In Seismic Custom Properties, valueCascading controls which values of the current property are visible (and optionally auto-selected) based on a controlling property’s selections; it only applies when both the controller and the current property are single-select or multi-select. In the API payload, valueCascading is an array of escaped JSON strings; unescape each to view or edit. Each rule contains id (unique GUID), name (unique), controllerId (the controlling property), isAutoSelect (whether to auto-set the current property), and matches (an array of match blocks). Each match block has match (boolean logic with conditions, optional filters, and And/Or operator) and possibleValueIds (the allowed value IDs from the current property’s domainOfValues when the match is satisfied). Conditions reference the controller’s selection via attribute traits.customProperties.fields.properties.{controllerPropertyId}.value.valueId and operators such as Equal, In, NotIn, ArrayContainsAny; since it’s select-only, valueId is used rather than value. At runtime, when controller selections meet a match, the current property’s visible choices are filtered to the union of the matched possibleValueIds; if nothing matches, no value is shown; if isAutoSelect is true, the current property is set to the specified values. Limits: up to 1000 matches per rule, up to 1000 possibleValueIds per match. up to 1 valuecascading rule. This is an advanced feature (Premier/Enterprise Plus); best practice is to GET a UI-created rule, unescape and adjust IDs/values, then POST/PUT the result for use.

valueCascading
Responses

Language
Credentials
Header
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json