# Views ## Create a view bundle (view + select/filter/sort) **post** `/v2/prism/{teamId}/{viewObjectType}/views` Create a view bundle (view + select/filter/sort) ### Path Parameters - `teamId: optional string` - `viewObjectType: "action" or "deal" or "document" or 3 more` - `"action"` - `"deal"` - `"document"` - `"event"` - `"identity"` - `"organization"` ### Header Parameters - `"Idempotency-Key": optional string` ### Body Parameters - `name: string` - `view_type: string` - `id: optional string` - `aggregation_prop_def_id: optional string` - `aggregation_type: optional string` - `column_layout: optional map[unknown]` - `combinator: optional "AND" or "OR"` - `"AND"` - `"OR"` - `created_at: optional string` - `filter: optional array of map[unknown]` Each entry is { slug: { comparator: value } } - `group_by: optional string` Property slug to group by - `group_hidden_option_ids: optional array of unknown or unknown` - `array of unknown` - `unknown` - `group_hide_empty: optional boolean` - `group_sort: optional string` - `icon: optional string` - `list_id: optional string` - `select: optional array of string` Property slugs (dot-paths permitted for refs) - `sort: optional array of map[unknown]` Each entry is { slug: 'asc' | 'desc' } - `sort_order: optional number` - `team_id: optional string` - `updated_at: optional string` - `user_id: optional string` ### Returns - `name: string` - `view_type: string` - `id: optional string` - `aggregation_prop_def_id: optional string` - `aggregation_type: optional string` - `column_layout: optional map[unknown]` - `combinator: optional "AND" or "OR"` - `"AND"` - `"OR"` - `created_at: optional string` - `filter: optional array of map[unknown]` Each entry is { slug: { comparator: value } } - `group_by: optional string` Property slug to group by - `group_hidden_option_ids: optional array of unknown or unknown` - `array of unknown` - `unknown` - `group_hide_empty: optional boolean` - `group_sort: optional string` - `icon: optional string` - `list_id: optional string` - `select: optional array of string` Property slugs (dot-paths permitted for refs) - `sort: optional array of map[unknown]` Each entry is { slug: 'asc' | 'desc' } - `sort_order: optional number` - `team_id: optional string` - `updated_at: optional string` - `user_id: optional string` ### Example ```http curl https://developers.micro.so/v2/prism/$TEAM_ID/$VIEW_OBJECT_TYPE/views \ -H 'Content-Type: application/json' \ -H "x-api-key: $MICRO_API_KEY" \ -d '{ "name": "name", "view_type": "view_type" }' ``` #### Response ```json { "name": "name", "view_type": "view_type", "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "aggregation_prop_def_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "aggregation_type": "aggregation_type", "column_layout": { "foo": "bar" }, "combinator": "AND", "created_at": "created_at", "filter": [ { "foo": "bar" } ], "group_by": "group_by", "group_hidden_option_ids": [ {} ], "group_hide_empty": true, "group_sort": "group_sort", "icon": "icon", "list_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "select": [ "string" ], "sort": [ { "foo": "bar" } ], "sort_order": 0, "team_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "updated_at": "updated_at", "user_id": "user_id" } ``` ## Read a view bundle **get** `/v2/prism/{teamId}/{viewObjectType}/views/{viewId}` Returns the view bundle. Pass `?include=records` to also fetch a page of records selected by the view in the same call; the response is then wrapped as `{view, records}`. ### Path Parameters - `teamId: optional string` - `viewObjectType: "action" or "deal" or "document" or 3 more` - `"action"` - `"deal"` - `"document"` - `"event"` - `"identity"` - `"organization"` - `viewId: string` ### Query Parameters - `cursor: optional string` Forwarded to the records sub-resource when `include=records`. - `include: optional string` Comma-separated list of optional sub-resources to inline. Currently the only recognized value is `records` — when present, the response is `{view, records}` rather than the bare view bundle. - `limit: optional number` Forwarded to the records sub-resource when `include=records`. - `page: optional number` Forwarded to the records sub-resource when `include=records`. ### Returns - `ViewBundle object { name, view_type, id, 18 more }` A view (saved configuration for displaying records of a given object type) plus its select/filter/sort children. Properties in select/filter/sort are referenced by slug. - `name: string` - `view_type: string` - `id: optional string` - `aggregation_prop_def_id: optional string` - `aggregation_type: optional string` - `column_layout: optional map[unknown]` - `combinator: optional "AND" or "OR"` - `"AND"` - `"OR"` - `created_at: optional string` - `filter: optional array of map[unknown]` Each entry is { slug: { comparator: value } } - `group_by: optional string` Property slug to group by - `group_hidden_option_ids: optional array of unknown or unknown` - `array of unknown` - `unknown` - `group_hide_empty: optional boolean` - `group_sort: optional string` - `icon: optional string` - `list_id: optional string` - `select: optional array of string` Property slugs (dot-paths permitted for refs) - `sort: optional array of map[unknown]` Each entry is { slug: 'asc' | 'desc' } - `sort_order: optional number` - `team_id: optional string` - `updated_at: optional string` - `user_id: optional string` - `ViewBundleWithRecords object { records, view }` Returned by `GET /views/{viewId}?include=records`. Same `records` shape as the standalone list-view-records endpoint. - `records: object { data, has_more, next_cursor }` - `data: array of map[unknown]` - `has_more: boolean` - `next_cursor: optional string` - `view: object { name, view_type, id, 18 more }` A view (saved configuration for displaying records of a given object type) plus its select/filter/sort children. Properties in select/filter/sort are referenced by slug. - `name: string` - `view_type: string` - `id: optional string` - `aggregation_prop_def_id: optional string` - `aggregation_type: optional string` - `column_layout: optional map[unknown]` - `combinator: optional "AND" or "OR"` - `"AND"` - `"OR"` - `created_at: optional string` - `filter: optional array of map[unknown]` Each entry is { slug: { comparator: value } } - `group_by: optional string` Property slug to group by - `group_hidden_option_ids: optional array of unknown or unknown` - `array of unknown` - `unknown` - `group_hide_empty: optional boolean` - `group_sort: optional string` - `icon: optional string` - `list_id: optional string` - `select: optional array of string` Property slugs (dot-paths permitted for refs) - `sort: optional array of map[unknown]` Each entry is { slug: 'asc' | 'desc' } - `sort_order: optional number` - `team_id: optional string` - `updated_at: optional string` - `user_id: optional string` ### Example ```http curl https://developers.micro.so/v2/prism/$TEAM_ID/$VIEW_OBJECT_TYPE/views/$VIEW_ID \ -H "x-api-key: $MICRO_API_KEY" ``` #### Response ```json { "name": "name", "view_type": "view_type", "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "aggregation_prop_def_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "aggregation_type": "aggregation_type", "column_layout": { "foo": "bar" }, "combinator": "AND", "created_at": "created_at", "filter": [ { "foo": "bar" } ], "group_by": "group_by", "group_hidden_option_ids": [ {} ], "group_hide_empty": true, "group_sort": "group_sort", "icon": "icon", "list_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "select": [ "string" ], "sort": [ { "foo": "bar" } ], "sort_order": 0, "team_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "updated_at": "updated_at", "user_id": "user_id" } ``` ## Update a view bundle (select/filter/sort arrays are replaced wholesale when supplied) **patch** `/v2/prism/{teamId}/{viewObjectType}/views/{viewId}` Update a view bundle (select/filter/sort arrays are replaced wholesale when supplied) ### Path Parameters - `teamId: optional string` - `viewObjectType: "action" or "deal" or "document" or 3 more` - `"action"` - `"deal"` - `"document"` - `"event"` - `"identity"` - `"organization"` - `viewId: string` ### Header Parameters - `"Idempotency-Key": optional string` ### Body Parameters - `aggregation_prop_def_id: optional string` - `aggregation_type: optional string` - `column_layout: optional map[unknown]` - `combinator: optional "AND" or "OR"` - `"AND"` - `"OR"` - `filter: optional array of map[unknown]` - `group_by: optional string` - `group_hidden_option_ids: optional array of unknown or unknown` - `array of unknown` - `unknown` - `group_hide_empty: optional boolean` - `group_sort: optional string` - `icon: optional string` - `list_id: optional string` - `name: optional string` - `select: optional array of string` - `sort: optional array of map[unknown]` - `sort_order: optional number` - `team_id: optional string` - `user_id: optional string` - `view_type: optional string` ### Returns - `name: string` - `view_type: string` - `id: optional string` - `aggregation_prop_def_id: optional string` - `aggregation_type: optional string` - `column_layout: optional map[unknown]` - `combinator: optional "AND" or "OR"` - `"AND"` - `"OR"` - `created_at: optional string` - `filter: optional array of map[unknown]` Each entry is { slug: { comparator: value } } - `group_by: optional string` Property slug to group by - `group_hidden_option_ids: optional array of unknown or unknown` - `array of unknown` - `unknown` - `group_hide_empty: optional boolean` - `group_sort: optional string` - `icon: optional string` - `list_id: optional string` - `select: optional array of string` Property slugs (dot-paths permitted for refs) - `sort: optional array of map[unknown]` Each entry is { slug: 'asc' | 'desc' } - `sort_order: optional number` - `team_id: optional string` - `updated_at: optional string` - `user_id: optional string` ### Example ```http curl https://developers.micro.so/v2/prism/$TEAM_ID/$VIEW_OBJECT_TYPE/views/$VIEW_ID \ -X PATCH \ -H 'Content-Type: application/json' \ -H "x-api-key: $MICRO_API_KEY" \ -d '{}' ``` #### Response ```json { "name": "name", "view_type": "view_type", "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "aggregation_prop_def_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "aggregation_type": "aggregation_type", "column_layout": { "foo": "bar" }, "combinator": "AND", "created_at": "created_at", "filter": [ { "foo": "bar" } ], "group_by": "group_by", "group_hidden_option_ids": [ {} ], "group_hide_empty": true, "group_sort": "group_sort", "icon": "icon", "list_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "select": [ "string" ], "sort": [ { "foo": "bar" } ], "sort_order": 0, "team_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "updated_at": "updated_at", "user_id": "user_id" } ``` ## Delete a view bundle **delete** `/v2/prism/{teamId}/{viewObjectType}/views/{viewId}` Delete a view bundle ### Path Parameters - `teamId: optional string` - `viewObjectType: "action" or "deal" or "document" or 3 more` - `"action"` - `"deal"` - `"document"` - `"event"` - `"identity"` - `"organization"` - `viewId: string` ### Example ```http curl https://developers.micro.so/v2/prism/$TEAM_ID/$VIEW_OBJECT_TYPE/views/$VIEW_ID \ -X DELETE \ -H "x-api-key: $MICRO_API_KEY" ``` ## Domain Types ### View Create Response - `ViewCreateResponse object { name, view_type, id, 18 more }` A view (saved configuration for displaying records of a given object type) plus its select/filter/sort children. Properties in select/filter/sort are referenced by slug. - `name: string` - `view_type: string` - `id: optional string` - `aggregation_prop_def_id: optional string` - `aggregation_type: optional string` - `column_layout: optional map[unknown]` - `combinator: optional "AND" or "OR"` - `"AND"` - `"OR"` - `created_at: optional string` - `filter: optional array of map[unknown]` Each entry is { slug: { comparator: value } } - `group_by: optional string` Property slug to group by - `group_hidden_option_ids: optional array of unknown or unknown` - `array of unknown` - `unknown` - `group_hide_empty: optional boolean` - `group_sort: optional string` - `icon: optional string` - `list_id: optional string` - `select: optional array of string` Property slugs (dot-paths permitted for refs) - `sort: optional array of map[unknown]` Each entry is { slug: 'asc' | 'desc' } - `sort_order: optional number` - `team_id: optional string` - `updated_at: optional string` - `user_id: optional string` ### View Get Response - `ViewGetResponse = object { name, view_type, id, 18 more } or object { records, view }` A view (saved configuration for displaying records of a given object type) plus its select/filter/sort children. Properties in select/filter/sort are referenced by slug. - `ViewBundle object { name, view_type, id, 18 more }` A view (saved configuration for displaying records of a given object type) plus its select/filter/sort children. Properties in select/filter/sort are referenced by slug. - `name: string` - `view_type: string` - `id: optional string` - `aggregation_prop_def_id: optional string` - `aggregation_type: optional string` - `column_layout: optional map[unknown]` - `combinator: optional "AND" or "OR"` - `"AND"` - `"OR"` - `created_at: optional string` - `filter: optional array of map[unknown]` Each entry is { slug: { comparator: value } } - `group_by: optional string` Property slug to group by - `group_hidden_option_ids: optional array of unknown or unknown` - `array of unknown` - `unknown` - `group_hide_empty: optional boolean` - `group_sort: optional string` - `icon: optional string` - `list_id: optional string` - `select: optional array of string` Property slugs (dot-paths permitted for refs) - `sort: optional array of map[unknown]` Each entry is { slug: 'asc' | 'desc' } - `sort_order: optional number` - `team_id: optional string` - `updated_at: optional string` - `user_id: optional string` - `ViewBundleWithRecords object { records, view }` Returned by `GET /views/{viewId}?include=records`. Same `records` shape as the standalone list-view-records endpoint. - `records: object { data, has_more, next_cursor }` - `data: array of map[unknown]` - `has_more: boolean` - `next_cursor: optional string` - `view: object { name, view_type, id, 18 more }` A view (saved configuration for displaying records of a given object type) plus its select/filter/sort children. Properties in select/filter/sort are referenced by slug. - `name: string` - `view_type: string` - `id: optional string` - `aggregation_prop_def_id: optional string` - `aggregation_type: optional string` - `column_layout: optional map[unknown]` - `combinator: optional "AND" or "OR"` - `"AND"` - `"OR"` - `created_at: optional string` - `filter: optional array of map[unknown]` Each entry is { slug: { comparator: value } } - `group_by: optional string` Property slug to group by - `group_hidden_option_ids: optional array of unknown or unknown` - `array of unknown` - `unknown` - `group_hide_empty: optional boolean` - `group_sort: optional string` - `icon: optional string` - `list_id: optional string` - `select: optional array of string` Property slugs (dot-paths permitted for refs) - `sort: optional array of map[unknown]` Each entry is { slug: 'asc' | 'desc' } - `sort_order: optional number` - `team_id: optional string` - `updated_at: optional string` - `user_id: optional string` ### View Update Response - `ViewUpdateResponse object { name, view_type, id, 18 more }` A view (saved configuration for displaying records of a given object type) plus its select/filter/sort children. Properties in select/filter/sort are referenced by slug. - `name: string` - `view_type: string` - `id: optional string` - `aggregation_prop_def_id: optional string` - `aggregation_type: optional string` - `column_layout: optional map[unknown]` - `combinator: optional "AND" or "OR"` - `"AND"` - `"OR"` - `created_at: optional string` - `filter: optional array of map[unknown]` Each entry is { slug: { comparator: value } } - `group_by: optional string` Property slug to group by - `group_hidden_option_ids: optional array of unknown or unknown` - `array of unknown` - `unknown` - `group_hide_empty: optional boolean` - `group_sort: optional string` - `icon: optional string` - `list_id: optional string` - `select: optional array of string` Property slugs (dot-paths permitted for refs) - `sort: optional array of map[unknown]` Each entry is { slug: 'asc' | 'desc' } - `sort_order: optional number` - `team_id: optional string` - `updated_at: optional string` - `user_id: optional string` # Records ## List records selected by a view (filters and sorts applied; pinned record_order overlaid first) **get** `/v2/prism/{teamId}/{viewObjectType}/views/{viewId}/records` List records selected by a view (filters and sorts applied; pinned record_order overlaid first) ### Path Parameters - `teamId: optional string` - `viewObjectType: "action" or "deal" or "document" or 3 more` - `"action"` - `"deal"` - `"document"` - `"event"` - `"identity"` - `"organization"` - `viewId: string` ### Query Parameters - `cursor: optional string` Opaque cursor from a previous response's `next_cursor`. Pass it back unchanged to fetch the next page. When set, `page` and `limit` are derived from the cursor. - `limit: optional number` - `page: optional number` Page number (1-based). Prefer `cursor`. ### Returns - `data: array of map[unknown]` - `has_more: boolean` True if more records exist beyond this page. - `next_cursor: optional string` Opaque cursor for the next page; null when `has_more` is false. ### Example ```http curl https://developers.micro.so/v2/prism/$TEAM_ID/$VIEW_OBJECT_TYPE/views/$VIEW_ID/records \ -H "x-api-key: $MICRO_API_KEY" ``` #### Response ```json { "data": [ { "foo": "bar" } ], "has_more": true, "next_cursor": "next_cursor" } ``` ## Bulk reorder pinned records **patch** `/v2/prism/{teamId}/{viewObjectType}/views/{viewId}/records` Bulk reorder pinned records ### Path Parameters - `teamId: optional string` - `viewObjectType: "action" or "deal" or "document" or 3 more` - `"action"` - `"deal"` - `"document"` - `"event"` - `"identity"` - `"organization"` - `viewId: string` ### Header Parameters - `"Idempotency-Key": optional string` ### Body Parameters - `object_ids: array of string` ### Example ```http curl https://developers.micro.so/v2/prism/$TEAM_ID/$VIEW_OBJECT_TYPE/views/$VIEW_ID/records \ -X PATCH \ -H 'Content-Type: application/json' \ -H "x-api-key: $MICRO_API_KEY" \ -d '{ "object_ids": [ "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" ] }' ``` ## Pin a record to the view (append to record_order) **post** `/v2/prism/{teamId}/{viewObjectType}/views/{viewId}/records/{objectId}` Pin a record to the view (append to record_order) ### Path Parameters - `teamId: optional string` - `viewObjectType: "action" or "deal" or "document" or 3 more` - `"action"` - `"deal"` - `"document"` - `"event"` - `"identity"` - `"organization"` - `viewId: string` - `objectId: string` ### Header Parameters - `"Idempotency-Key": optional string` ### Example ```http curl https://developers.micro.so/v2/prism/$TEAM_ID/$VIEW_OBJECT_TYPE/views/$VIEW_ID/records/$OBJECT_ID \ -X POST \ -H "x-api-key: $MICRO_API_KEY" ``` ## Unpin a record from the view **delete** `/v2/prism/{teamId}/{viewObjectType}/views/{viewId}/records/{objectId}` Unpin a record from the view ### Path Parameters - `teamId: optional string` - `viewObjectType: "action" or "deal" or "document" or 3 more` - `"action"` - `"deal"` - `"document"` - `"event"` - `"identity"` - `"organization"` - `viewId: string` - `objectId: string` ### Example ```http curl https://developers.micro.so/v2/prism/$TEAM_ID/$VIEW_OBJECT_TYPE/views/$VIEW_ID/records/$OBJECT_ID \ -X DELETE \ -H "x-api-key: $MICRO_API_KEY" ``` ## Domain Types ### Record List Response - `RecordListResponse object { data, has_more, next_cursor }` - `data: array of map[unknown]` - `has_more: boolean` True if more records exist beyond this page. - `next_cursor: optional string` Opaque cursor for the next page; null when `has_more` is false.