Get property fields
GET/api/v4/properties/groups/:group_name/:object_type/fields
Get a list of property fields for a specific group and object type. Uses cursor-based pagination.
Scope modes (mutually exclusive):
-
Hierarchical scope (
channel_idand/orteam_id): returns fields scoped to the named resource and every ancestor scope above it. System-level rows are always included; team-level rows are included whenteam_idis set; channel-level rows are included only whenchannel_idis set. Whenchannel_idis provided, the channel's team is resolved server-side, so anyteam_idthe caller passes is ignored. For DM and GM channels there is no parent team, so the hierarchy collapses tosystem → channeland no team-scoped rows are returned. Requires the caller to haveread_channelfor the channel and/orview_teamfor the team. -
Single-target scope (
target_type+target_id): returns fields scoped to exactly one resource.target_typemust besystem,team, orchannel;target_idis required forteamandchannel.
Mixing the two modes (any of channel_id/team_id together with any of target_type/target_id) returns 400. Omitting both modes also returns 400, except for the system case below.
System-object: when object_type is system, the endpoint always resolves to target_type=system and ignores any channel_id, team_id, target_type, or target_id the caller may have passed. System-object fields can only live at the system scope by invariant, so any other scope is a semantic no-op rather than an error.
Delta sync via since: When since > 0, the endpoint returns rows whose update_at is greater than or equal to the cutoff, including tombstoned rows (delete_at > 0). The inclusive boundary lets clients safely re-use the highest update_at seen on a previous page as the next since value without missing rows that happened to share that millisecond. Rows within a delta page are ordered by (update_at, id) and the cursor disambiguates same-millisecond rows across pages.
Cursor source: the client owns the cursor. The initial delta-sync request omits since (or sends since=0). For subsequent requests the client persists the update_at and id of the last row in the response and passes them back as cursor_update_at and cursor_id alongside the same since value. This mirrors the cursor convention used by the shared-channel post-sync API.
Cursor key must match the active ordering: in delta mode (since > 0) the endpoint orders by update_at and pagination requires cursor_update_at; otherwise it orders by create_at and pagination requires cursor_create_at. Passing the wrong key for the active mode returns 400.
Request
Responses
- 200
- 400
- 401
- 403
- 404
Property fields retrieval successful
Invalid or missing parameters in URL or request body
No access token provided
Do not have appropriate permissions
Resource not found