cURL
curl -X POST "$EXSITED_BASE_URL/api/v4/custom_feature/cmp_4b7d2e9a1c3f4e8a9b6d5c2e1f0a3b7d" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"configuration": {
"settings": {
"form_layout": "TWO_COLS"
},
"column_1": {
"attributes": [
{
"type": "ATTRIBUTE",
"name": "contract_tier",
"required": "false",
"show_in_list_view": "true"
}
]
},
"column_2": {
"attributes": [
{
"type": "LABEL",
"name": "Contract details"
}
]
}
}
}'from exsited import build_client
client = build_client()
response = client.custom_features.create_custom_feature_by_id(
"cmp_4b7d2e9a1c3f4e8a9b6d5c2e1f0a3b7d",
{
"configuration": {
"settings": {"form_layout": "TWO_COLS"},
"column_1": {
"attributes": [
{
"type": "ATTRIBUTE",
"name": "contract_tier",
"required": "false",
"show_in_list_view": "true",
}
]
},
"column_2": {"attributes": [{"type": "LABEL", "name": "Contract details"}]},
}
},
)
print(response.data)
import {buildClient} from 'exsited';
const client = await buildClient();
const response = await client.customFeatures.createCustomFeatureById('cmp_4b7d2e9a1c3f4e8a9b6d5c2e1f0a3b7d', {
configuration: {
settings: {form_layout: 'TWO_COLS'},
column_1: {
attributes: [{type: 'ATTRIBUTE', name: 'contract_tier', required: 'false', show_in_list_view: 'true'}],
},
column_2: {attributes: [{type: 'LABEL', name: 'Contract details'}]},
},
});
console.log(response.data);
use Exsited\Client\ClientRegistry;
$client = ClientRegistry::buildClient();
$response = $client->customFeatures->createCustomFeatureById(
'cmp_4b7d2e9a1c3f4e8a9b6d5c2e1f0a3b7d',
[
'configuration' => [
'settings' => ['form_layout' => 'TWO_COLS'],
'column_1' => [
'attributes' => [
[
'type' => 'ATTRIBUTE',
'name' => 'contract_tier',
'required' => 'false',
'show_in_list_view' => 'true',
],
],
],
'column_2' => ['attributes' => [['type' => 'LABEL', 'name' => 'Contract details']]],
],
],
);
print_r($response->data);
import com.exsited.client.ApiResponse;
import com.exsited.client.ClientRegistry;
import com.exsited.client.ExsitedClient;
import com.exsited.resources.custom_features.custom_features_dto.CustomFeaturesDto.CustomFeature;
import java.util.List;
import java.util.Map;
ExsitedClient client = ClientRegistry.buildClient();
ApiResponse<CustomFeature> response = client.customFeatures().createCustomFeatureById(
"cmp_4b7d2e9a1c3f4e8a9b6d5c2e1f0a3b7d",
Map.of(
"configuration", Map.of(
"settings", Map.of("form_layout", "TWO_COLS"),
"column_1", Map.of(
"attributes", List.of(
Map.of(
"type", "ATTRIBUTE",
"name", "contract_tier",
"required", "false",
"show_in_list_view", "true"))),
"column_2", Map.of(
"attributes", List.of(
Map.of("type", "LABEL", "name", "Contract details"))))));
System.out.println(response.getMap());
using Exsited.Client;
await using var client = ExsitedClient.BuildClient();
var response = await client.CustomFeatures.CreateCustomFeatureByIdAsync(
"cmp_4b7d2e9a1c3f4e8a9b6d5c2e1f0a3b7d",
new Dictionary<string, object?>
{
["configuration"] = new Dictionary<string, object?>
{
["settings"] = new Dictionary<string, object?>
{
["form_layout"] = "TWO_COLS",
},
["column_1"] = new Dictionary<string, object?>
{
["attributes"] = new List<object?>
{
new Dictionary<string, object?>
{
["type"] = "ATTRIBUTE",
["name"] = "contract_tier",
["required"] = "false",
["show_in_list_view"] = "true",
},
},
},
["column_2"] = new Dictionary<string, object?>
{
["attributes"] = new List<object?>
{
new Dictionary<string, object?>
{
["type"] = "LABEL",
["name"] = "Contract details",
},
},
},
},
});
Console.WriteLine(response.Json);
import 'package:exsited/exsited.dart';
final client = buildClient();
final response = await client.customFeatures.createCustomFeatureById(
'cmp_4b7d2e9a1c3f4e8a9b6d5c2e1f0a3b7d',
{
'configuration': {
'settings': {'form_layout': 'TWO_COLS'},
'column_1': {
'attributes': [
{
'type': 'ATTRIBUTE',
'name': 'contract_tier',
'required': 'false',
'show_in_list_view': 'true',
},
],
},
'column_2': {
'attributes': [
{'type': 'LABEL', 'name': 'Contract details'},
],
},
},
},
);
print(response.map);
import (
"context"
"fmt"
"log"
exsited "github.com/exsited/exsited-sdk-go/v4"
)
client, err := exsited.BuildClient(nil)
if err != nil {
log.Fatal(err)
}
defer client.Close()
response, err := client.CustomFeatures().CreateCustomFeatureByID(context.Background(), "cmp_4b7d2e9a1c3f4e8a9b6d5c2e1f0a3b7d", map[string]any{
"configuration": map[string]any{
"settings": map[string]any{"form_layout": "TWO_COLS"},
"column_1": map[string]any{
"attributes": []any{
map[string]any{
"type": "ATTRIBUTE",
"name": "contract_tier",
"required": "false",
"show_in_list_view": "true",
},
},
},
"column_2": map[string]any{
"attributes": []any{
map[string]any{"type": "LABEL", "name": "Contract details"},
},
},
},
}, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println(response.Map)
{
"custom_feature": {
"object": "<string>",
"id": "<string>",
"status": "<string>",
"name": "<string>",
"display_name": "<string>",
"description": "<string>",
"use_in": "<string>",
"relation": "<string>",
"custom_component": "<unknown>",
"custom_objects": [
{}
],
"custom_forms": [
{
"configuration": {
"settings": {
"custom_form": "<string>",
"form_layout": "<string>"
},
"column_1": {
"attributes": [
{
"data_type": "<string>",
"display_name": "<string>",
"name": "<string>",
"show_in_list_view": true,
"type": "<string>"
}
]
},
"column_2": {
"attributes": [
{
"name": "<string>",
"type": "<string>"
}
]
}
}
}
],
"child_custom_components": [
{}
],
"activity_logs": [
{}
],
"created_on": "<string>",
"last_updated_on": "<string>",
"created_by": "<unknown>",
"last_updated_by": "<unknown>",
"version": 123,
"href": "<string>"
},
"message": "<string>"
}Custom features
Set a custom feature's form layout and attributes
Sets the form layout of a custom feature and the attributes in each column, and returns the feature.
POST
/
custom_feature
/
{custom_feature_id}
cURL
curl -X POST "$EXSITED_BASE_URL/api/v4/custom_feature/cmp_4b7d2e9a1c3f4e8a9b6d5c2e1f0a3b7d" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"configuration": {
"settings": {
"form_layout": "TWO_COLS"
},
"column_1": {
"attributes": [
{
"type": "ATTRIBUTE",
"name": "contract_tier",
"required": "false",
"show_in_list_view": "true"
}
]
},
"column_2": {
"attributes": [
{
"type": "LABEL",
"name": "Contract details"
}
]
}
}
}'from exsited import build_client
client = build_client()
response = client.custom_features.create_custom_feature_by_id(
"cmp_4b7d2e9a1c3f4e8a9b6d5c2e1f0a3b7d",
{
"configuration": {
"settings": {"form_layout": "TWO_COLS"},
"column_1": {
"attributes": [
{
"type": "ATTRIBUTE",
"name": "contract_tier",
"required": "false",
"show_in_list_view": "true",
}
]
},
"column_2": {"attributes": [{"type": "LABEL", "name": "Contract details"}]},
}
},
)
print(response.data)
import {buildClient} from 'exsited';
const client = await buildClient();
const response = await client.customFeatures.createCustomFeatureById('cmp_4b7d2e9a1c3f4e8a9b6d5c2e1f0a3b7d', {
configuration: {
settings: {form_layout: 'TWO_COLS'},
column_1: {
attributes: [{type: 'ATTRIBUTE', name: 'contract_tier', required: 'false', show_in_list_view: 'true'}],
},
column_2: {attributes: [{type: 'LABEL', name: 'Contract details'}]},
},
});
console.log(response.data);
use Exsited\Client\ClientRegistry;
$client = ClientRegistry::buildClient();
$response = $client->customFeatures->createCustomFeatureById(
'cmp_4b7d2e9a1c3f4e8a9b6d5c2e1f0a3b7d',
[
'configuration' => [
'settings' => ['form_layout' => 'TWO_COLS'],
'column_1' => [
'attributes' => [
[
'type' => 'ATTRIBUTE',
'name' => 'contract_tier',
'required' => 'false',
'show_in_list_view' => 'true',
],
],
],
'column_2' => ['attributes' => [['type' => 'LABEL', 'name' => 'Contract details']]],
],
],
);
print_r($response->data);
import com.exsited.client.ApiResponse;
import com.exsited.client.ClientRegistry;
import com.exsited.client.ExsitedClient;
import com.exsited.resources.custom_features.custom_features_dto.CustomFeaturesDto.CustomFeature;
import java.util.List;
import java.util.Map;
ExsitedClient client = ClientRegistry.buildClient();
ApiResponse<CustomFeature> response = client.customFeatures().createCustomFeatureById(
"cmp_4b7d2e9a1c3f4e8a9b6d5c2e1f0a3b7d",
Map.of(
"configuration", Map.of(
"settings", Map.of("form_layout", "TWO_COLS"),
"column_1", Map.of(
"attributes", List.of(
Map.of(
"type", "ATTRIBUTE",
"name", "contract_tier",
"required", "false",
"show_in_list_view", "true"))),
"column_2", Map.of(
"attributes", List.of(
Map.of("type", "LABEL", "name", "Contract details"))))));
System.out.println(response.getMap());
using Exsited.Client;
await using var client = ExsitedClient.BuildClient();
var response = await client.CustomFeatures.CreateCustomFeatureByIdAsync(
"cmp_4b7d2e9a1c3f4e8a9b6d5c2e1f0a3b7d",
new Dictionary<string, object?>
{
["configuration"] = new Dictionary<string, object?>
{
["settings"] = new Dictionary<string, object?>
{
["form_layout"] = "TWO_COLS",
},
["column_1"] = new Dictionary<string, object?>
{
["attributes"] = new List<object?>
{
new Dictionary<string, object?>
{
["type"] = "ATTRIBUTE",
["name"] = "contract_tier",
["required"] = "false",
["show_in_list_view"] = "true",
},
},
},
["column_2"] = new Dictionary<string, object?>
{
["attributes"] = new List<object?>
{
new Dictionary<string, object?>
{
["type"] = "LABEL",
["name"] = "Contract details",
},
},
},
},
});
Console.WriteLine(response.Json);
import 'package:exsited/exsited.dart';
final client = buildClient();
final response = await client.customFeatures.createCustomFeatureById(
'cmp_4b7d2e9a1c3f4e8a9b6d5c2e1f0a3b7d',
{
'configuration': {
'settings': {'form_layout': 'TWO_COLS'},
'column_1': {
'attributes': [
{
'type': 'ATTRIBUTE',
'name': 'contract_tier',
'required': 'false',
'show_in_list_view': 'true',
},
],
},
'column_2': {
'attributes': [
{'type': 'LABEL', 'name': 'Contract details'},
],
},
},
},
);
print(response.map);
import (
"context"
"fmt"
"log"
exsited "github.com/exsited/exsited-sdk-go/v4"
)
client, err := exsited.BuildClient(nil)
if err != nil {
log.Fatal(err)
}
defer client.Close()
response, err := client.CustomFeatures().CreateCustomFeatureByID(context.Background(), "cmp_4b7d2e9a1c3f4e8a9b6d5c2e1f0a3b7d", map[string]any{
"configuration": map[string]any{
"settings": map[string]any{"form_layout": "TWO_COLS"},
"column_1": map[string]any{
"attributes": []any{
map[string]any{
"type": "ATTRIBUTE",
"name": "contract_tier",
"required": "false",
"show_in_list_view": "true",
},
},
},
"column_2": map[string]any{
"attributes": []any{
map[string]any{"type": "LABEL", "name": "Contract details"},
},
},
},
}, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println(response.Map)
{
"custom_feature": {
"object": "<string>",
"id": "<string>",
"status": "<string>",
"name": "<string>",
"display_name": "<string>",
"description": "<string>",
"use_in": "<string>",
"relation": "<string>",
"custom_component": "<unknown>",
"custom_objects": [
{}
],
"custom_forms": [
{
"configuration": {
"settings": {
"custom_form": "<string>",
"form_layout": "<string>"
},
"column_1": {
"attributes": [
{
"data_type": "<string>",
"display_name": "<string>",
"name": "<string>",
"show_in_list_view": true,
"type": "<string>"
}
]
},
"column_2": {
"attributes": [
{
"name": "<string>",
"type": "<string>"
}
]
}
}
}
],
"child_custom_components": [
{}
],
"activity_logs": [
{}
],
"created_on": "<string>",
"last_updated_on": "<string>",
"created_by": "<unknown>",
"last_updated_by": "<unknown>",
"version": 123,
"href": "<string>"
},
"message": "<string>"
}Sets the form of an existing feature. Send
configuration with settings.form_layout, such as TWO_COLS, and the entries of column_1 and column_2: each entry is an ATTRIBUTE, named by a custom attribute’s name, or a LABEL. The feature comes back under custom_feature.
The SDK samples get their client from credentials your app registers once when it starts, as shown in Authentication. To try the call here, click Try it, set
host to your Exsited API host name and paste an access token from Get an access token. To send a raw JSON body instead of filling in fields, copy the cURL sample and edit its -d payload.Authorizations
An access token from POST /api/v4/oauth2/token. The SDKs get and renew it for you.
Path Parameters
The custom feature's id, which starts with cmp_.
Body
application/json
Show child attributes
Show child attributes