AckdbAttributeDefinition
An attribute definition (standard or custom) — a trait_definitions row shaped for the Attributes API.
Properties
keystringrequiredlabelstringrequiredDisplay label — a field_label_overrides value, or a prettified key.
scopestringrequiredWhat the fact is ABOUT: company = the account; person = the HUMAN (survives job changes); contact = one person-at-one-company affiliation.
"company""contact""person"typestringrequired"string""number""boolean""date""string_array"originstringrequired"standard" = shipped by ackDB (never deletable; only its enum is editable, see editableFields); "custom" = user-created via POST /attributes.
"standard""custom"descriptionstring (nullable)Read by the AI agent for semantic understanding.
allowedValuesarray ofEnum constraint (string type only).
editablebooleanrequiredAlways true — every attribute's values may be set.
editableFieldsarray ofrequiredWhich DEFINITION fields PATCH accepts (#487) — the authoritative list, so a client never has to infer the rules. Custom: label + description (+ allowedValues when type is "string", + scope when contact-scope). Standard: `["allowedValues"]` when it ships an enum, otherwise empty (read-only).
"label""description""allowedValues""scope"deletablebooleanrequiredtrue only for custom attributes.
userModifiedbooleanrequiredThis deployment has edited the definition, so the boot loader no longer re-asserts the shipped metadata (#487). On a standard attribute it means the tenant owns this enum now.
valueCountnumberrequiredActive records currently holding a value.
createdAtstring <date-time>requiredExample
{
"key": "string",
"label": "string",
"scope": "company",
"type": "string",
"origin": "standard",
"description": "string",
"allowedValues": [
"string"
],
"editable": false,
"editableFields": [
"label"
],
"deletable": false,
"userModified": false,
"valueCount": 0,
"createdAt": "1970-01-01T00:00:00.000Z"
}