Skip to content
POST /member-attribute

Defines a per-person field a toolbox entry can read as `{{caller.attributes.<key>}}`. A value can only be set for a defined key. A `scim` field needs a `scim_path` and type `text`, and a `manual` one none (400 `attribute_scim_path_invalid`). 409 `attribute_key_taken`, `attribute_scim_path_taken` (one field per SCIM attribute) or `attribute_definition_limit` (50 per organization). Requires `member:manage`.

Request Body

descriptionstring,null
keystring
labelstring
scim_pathstring,null
Possible values:
employeeNumberdepartmentcostCenterdivisionorganizationmanager.valuetitlenull
sourcestring
Possible values:
manualscim
typestring
Possible values:
textnumberbooleantext_list

Response Body

can_manageboolean

You hold member:manage: you may edit or delete this field.

can_set_valuesboolean

can_manage and the field is manual. False for a SCIM field even for an admin.

created_atstring · date-time
descriptionstring,null
idstring

Member field id (mad_…).

keystring

What placeholders name: {{caller.attributes.<key>}}. Immutable.

labelstring
member_countinteger,null

How many current members the organization has (the set GET /member lists). Null unless you hold member:manage.

scim_pathstring,null

For source: scim: the SCIM User attribute it mirrors (enterprise extension, or core title).

Possible values:
employeeNumberdepartmentcostCenterdivisionorganizationmanager.valuetitlenull
sourcestring

manual: an admin types the values. scim: your identity provider fills them; nobody can type one.

Possible values:
manualscim
typestring

Immutable.

Possible values:
textnumberbooleantext_list
updated_atstring · date-time
value_countinteger,null

How many current members hold a value for this field. Null unless you hold member:manage. The members without one: GET /member?attribute_missing=<key>.

curl -X POST 'https://api.elaichi.ai/member-attribute' \
  -H 'Authorization: Bearer $ELAICHI_API_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"key":"your_key","label":"your_label","type":"text","source":"manual","scim_path":"employeeNumber"}'
const body = {
  "key": "your_key",
  "label": "your_label",
  "type": "text",
  "source": "manual",
  "scim_path": "employeeNumber"
};

const response = await fetch('https://api.elaichi.ai/member-attribute', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ' + process.env.ELAICHI_API_TOKEN,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(body),
});

const data = await response.json();
console.log(data);
import os
import requests

url = "https://api.elaichi.ai/member-attribute"
headers = {
    "Authorization": f"Bearer {os.environ['ELAICHI_API_TOKEN']}",
    "Content-Type": "application/json",
}
payload = {
    "key": "your_key",
    "label": "your_label",
    "type": "text",
    "source": "manual",
    "scim_path": "employeeNumber"
}

response = requests.post(url, headers=headers, json=payload)
print(response.json())