## Create a view bundle (view + select/filter/sort) `client.Views.New(ctx, viewObjectType, params) (*ViewNewResponse, error)` **post** `/v2/prism/{teamId}/{viewObjectType}/views` Create a view bundle (view + select/filter/sort) ### Parameters - `viewObjectType ViewNewParamsViewObjectType` - `const ViewNewParamsViewObjectTypeAction ViewNewParamsViewObjectType = "action"` - `const ViewNewParamsViewObjectTypeDeal ViewNewParamsViewObjectType = "deal"` - `const ViewNewParamsViewObjectTypeDocument ViewNewParamsViewObjectType = "document"` - `const ViewNewParamsViewObjectTypeEvent ViewNewParamsViewObjectType = "event"` - `const ViewNewParamsViewObjectTypeIdentity ViewNewParamsViewObjectType = "identity"` - `const ViewNewParamsViewObjectTypeOrganization ViewNewParamsViewObjectType = "organization"` - `params ViewNewParams` - `PathTeamID param.Field[string]` Path param - `Name param.Field[string]` Body param - `ViewType param.Field[string]` Body param - `ID param.Field[string]` Body param - `AggregationPropDefID param.Field[string]` Body param - `AggregationType param.Field[string]` Body param - `ColumnLayout param.Field[map[string, unknown]]` Body param - `Combinator param.Field[ViewNewParamsCombinator]` Body param - `const ViewNewParamsCombinatorAnd ViewNewParamsCombinator = "AND"` - `const ViewNewParamsCombinatorOr ViewNewParamsCombinator = "OR"` - `CreatedAt param.Field[string]` Body param - `Filter param.Field[[]map[string, unknown]]` Body param: Each entry is { slug: { comparator: value } } - `GroupBy param.Field[string]` Body param: Property slug to group by - `GroupHiddenOptionIDs param.Field[[]unknown]` Body param - `[]unknown` - `GroupHideEmpty param.Field[bool]` Body param - `GroupSort param.Field[string]` Body param - `Icon param.Field[string]` Body param - `ListID param.Field[string]` Body param - `Select param.Field[[]string]` Body param: Property slugs (dot-paths permitted for refs) - `Sort param.Field[[]map[string, unknown]]` Body param: Each entry is { slug: 'asc' | 'desc' } - `SortOrder param.Field[int64]` Body param - `BodyTeamID param.Field[string]` Body param - `UpdatedAt param.Field[string]` Body param - `UserID param.Field[string]` Body param - `IdempotencyKey param.Field[string]` Header param: A unique key (UUID or any opaque string up to 255 chars) that identifies this logical request. The server caches the first response under this key for 24 hours and replays it on retry — safe to use on every POST/PUT/PATCH to make network retries deterministic. Reusing the same key with a different body returns 409 `idempotency_key_mismatch`. Replays include the `idempotent-replay: true` response header. ### Returns - `type ViewNewResponse struct{…}` 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` - `ViewType string` - `ID string` - `AggregationPropDefID string` - `AggregationType string` - `ColumnLayout map[string, unknown]` - `Combinator ViewNewResponseCombinator` - `const ViewNewResponseCombinatorAnd ViewNewResponseCombinator = "AND"` - `const ViewNewResponseCombinatorOr ViewNewResponseCombinator = "OR"` - `CreatedAt string` - `Filter []map[string, unknown]` Each entry is { slug: { comparator: value } } - `GroupBy string` Property slug to group by - `GroupHiddenOptionIDs []unknown` - `[]unknown` - `GroupHideEmpty bool` - `GroupSort string` - `Icon string` - `ListID string` - `Select []string` Property slugs (dot-paths permitted for refs) - `Sort []map[string, unknown]` Each entry is { slug: 'asc' | 'desc' } - `SortOrder int64` - `TeamID string` - `UpdatedAt string` - `UserID string` ### Example ```go package main import ( "context" "fmt" "github.com/micro-so/micro-sdk-go" "github.com/micro-so/micro-sdk-go/option" ) func main() { client := micro.NewClient( option.WithAPIKey("My API Key"), option.WithTeamID("My Team ID"), ) view, err := client.Views.New( context.TODO(), micro.ViewNewParamsViewObjectTypeAction, micro.ViewNewParams{ Name: micro.F("name"), ViewType: micro.F("view_type"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", view.ID) } ``` #### 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" } ```