Skip to content
Go to Micro

Create a property definition

prism.properties.create(Literal["comment", "deal", "engagement", 9 more]object_type, PropertyCreateParams**kwargs) -> PropertyDefinition
POST/v2/prism/{teamId}/{objectType}/properties

Define a new property on this object type, scoped to the calling team. Search the existing properties first (GET this path with term) and reuse a match instead of defining a second property for the same fact. Pass list_id in the body to scope the definition to one list/app; without it the property is workspace-global and appears on every list. A name already used in that scope, an explicitly requested slug already taken, or a slug that a shared property already owns all return 409 naming the definition to use instead. The property’s display format is resolved from type automatically — pass role_id only to override it. For select_str and multiselect_str types you may pre-seed the choices via options.

ParametersExpand Collapse
team_id: Optional[str]
formatuuid
object_type: Literal["comment", "deal", "engagement", 9 more]
One of the following:
"comment"
"deal"
"engagement"
"identity"
"ai_chat_thread"
"ai_chat_message"
"agent_site"
"document"
"action"
"event"
"organization"
"contact"
name: str

Human-readable name, unique within the scope the definition is created in. A name already taken in that scope returns 409; the message names the existing definition’s id, slug and type so you can write to it instead.

type: Literal["num", "str", "bool", 34 more]

Storage type for a property definition. Determines which per-type table holds the values, and which display formats the property can take.

One of the following:
"num"
"str"
"bool"
"date"
"text"
"byte"
"select_str"
"multi_str"
"multiselect_str"
"jsonb"
"ref_identity"
"ref_user"
"ref_organization"
"ref_contact"
"ref_thread"
"ref_message"
"ref_event"
"ref_account"
"ref_ai_chat_thread"
"ref_ai_chat_message"
"multiref_ai_chat_message"
"multiref_agent_site"
"multiref_action"
"multiref_comment"
"multiref_contact"
"multiref_label"
"multiref_thread"
"multiref_messages"
"multiref_document"
"multiref_identity"
"multiref_organization"
"multiref_engagement"
"multiref_attendee"
"multiref_meeting_entry"
"multiref_read_receipt"
"multiref_account"
"multiref_source"
icon: Optional[str]
list_id: Optional[str]

Scopes the definition to one list/app. Omit it only for a property that genuinely belongs to the whole workspace: a definition created without list_id is workspace-global and surfaces on every list of this object type.

formatuuid
options: Optional[Iterable[Option]]

Only honored when type is select_str or multiselect_str.

value: str
color_scheme: Optional[str]
description: Optional[str]
icon: Optional[str]
option_group: Optional[str]
slug: Optional[str]
sort_index: Optional[int]
required: Optional[bool]

When true, records must carry a non-empty value for this property on create. Defaults to false.

role_id: Optional[str]

Optional display format for the property, drawn from the workspace’s property roles. Omit it and the canonical role for type is applied (plain text, plain number, checkbox). Supply it only to pick a narrower format such as email, URL or currency; the role’s data type must match type.

formatuuid
slug: Optional[str]

URL-safe identifier. When omitted it defaults to a slugified name and is disambiguated with a numeric suffix on conflict. When supplied explicitly it is treated as part of your write contract and is never silently renamed — a collision returns 409 instead.

idempotency_key: Optional[str]
minLength1
maxLength255
ReturnsExpand Collapse
class PropertyDefinition:

Definition for a single property on an object type. Definitions with team_id and crm_id null are shared defaults; values may be scoped to a team and/or list (crm).

id: str
formatuuid
slug: str
type: Literal["num", "str", "bool", 34 more]

Storage type for a property definition. Determines which per-type table holds the values, and which display formats the property can take.

One of the following:
"num"
"str"
"bool"
"date"
"text"
"byte"
"select_str"
"multi_str"
"multiselect_str"
"jsonb"
"ref_identity"
"ref_user"
"ref_organization"
"ref_contact"
"ref_thread"
"ref_message"
"ref_event"
"ref_account"
"ref_ai_chat_thread"
"ref_ai_chat_message"
"multiref_ai_chat_message"
"multiref_agent_site"
"multiref_action"
"multiref_comment"
"multiref_contact"
"multiref_label"
"multiref_thread"
"multiref_messages"
"multiref_document"
"multiref_identity"
"multiref_organization"
"multiref_engagement"
"multiref_attendee"
"multiref_meeting_entry"
"multiref_read_receipt"
"multiref_account"
"multiref_source"
alias: Optional[Literal["app_stage"]]

Reserved alias naming this definition, or null. app_stage marks the list pipeline stage definition. Resolve stages by this field rather than by name, slug, or team_id: a superseded native status definition can coexist with the pipeline one and is otherwise identical on the wire.

crm_id: Optional[str]

Identifier of the list this definition is scoped to, when applicable.

formatuuid
list_id: Optional[str]

Canonical identifier of the list this definition is scoped to.

formatuuid
locked: Optional[bool]
name: Optional[str]
native: Optional[bool]
options: Optional[List[PropertyOption]]

Present only for select_str and multiselect_str types.

id: str
formatuuid
slug: str
color_scheme: Optional[str]
Deprecatedcrm_id: Optional[str]
formatuuid
description: Optional[str]
icon: Optional[str]
list_id: Optional[str]
formatuuid
option_group: Optional[str]
sort_index: Optional[int]
value: Optional[str]

Display value for the option.

required: Optional[bool]

When true, records of this object type must carry a non-empty value for this property on create, and a patch may not clear it.

role_id: Optional[str]

The property’s display format. Always populated on definitions created through this API; a null here means the definition predates that and will render as an unknown format until it is patched.

formatuuid
team_id: Optional[str]
formatuuid

Create a property definition

import os
from micro_so import Micro

client = Micro(
    api_key=os.environ.get("MICRO_API_KEY"),  # This is the default and can be omitted
)
property_definition = client.prism.properties.create(
    object_type="comment",
    name="name",
    type="num",
)
print(property_definition.id)
{
  "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
  "slug": "slug",
  "type": "num",
  "alias": "app_stage",
  "crm_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
  "list_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
  "locked": true,
  "name": "name",
  "native": true,
  "options": [
    {
      "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
      "slug": "slug",
      "color_scheme": "color_scheme",
      "crm_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
      "description": "description",
      "icon": "icon",
      "list_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
      "option_group": "option_group",
      "sort_index": 0,
      "value": "value"
    }
  ],
  "required": true,
  "role_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
  "team_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
}
Returns Examples
{
  "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
  "slug": "slug",
  "type": "num",
  "alias": "app_stage",
  "crm_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
  "list_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
  "locked": true,
  "name": "name",
  "native": true,
  "options": [
    {
      "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
      "slug": "slug",
      "color_scheme": "color_scheme",
      "crm_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
      "description": "description",
      "icon": "icon",
      "list_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
      "option_group": "option_group",
      "sort_index": 0,
      "value": "value"
    }
  ],
  "required": true,
  "role_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
  "team_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
}