diff --git a/pkg/cmd/cookie-pattern/list/list.go b/pkg/cmd/cookie-pattern/list/list.go index e92edcabf..8bf90018f 100644 --- a/pkg/cmd/cookie-pattern/list/list.go +++ b/pkg/cmd/cookie-pattern/list/list.go @@ -37,6 +37,7 @@ query($id: ID!, $first: Int, $after: CursorKey) { matchType displayName source + excluded } } pageInfo { @@ -55,6 +56,7 @@ type cookiePattern struct { MatchType string `json:"matchType"` DisplayName string `json:"displayName"` Source string `json:"source"` + Excluded bool `json:"excluded"` } func NewCmdList(f *cmdutil.Factory) *cobra.Command { @@ -133,10 +135,14 @@ func NewCmdList(f *cmdutil.Factory) *cobra.Command { rows := make([][]string, 0, len(patterns)) for _, p := range patterns { - rows = append(rows, []string{p.ID, p.Pattern, p.MatchType, p.DisplayName, p.Source}) + excluded := "" + if p.Excluded { + excluded = "yes" + } + rows = append(rows, []string{p.ID, p.Pattern, p.MatchType, p.DisplayName, p.Source, excluded}) } - t := cmdutil.NewTable("ID", "PATTERN", "MATCH TYPE", "DISPLAY NAME", "SOURCE").Rows(rows...) + t := cmdutil.NewTable("ID", "PATTERN", "MATCH TYPE", "DISPLAY NAME", "SOURCE", "EXCLUDED").Rows(rows...) _, _ = fmt.Fprintln(f.IOStreams.Out, t) if totalCount > len(patterns) { diff --git a/pkg/cmd/cookie-pattern/update/update.go b/pkg/cmd/cookie-pattern/update/update.go index 9d27315c1..0fb0ea5c5 100644 --- a/pkg/cmd/cookie-pattern/update/update.go +++ b/pkg/cmd/cookie-pattern/update/update.go @@ -51,6 +51,7 @@ func NewCmdUpdate(f *cmdutil.Factory) *cobra.Command { flagDisplayName string flagDescription string flagMaxAge int + flagExcluded bool ) cmd := &cobra.Command{ @@ -87,6 +88,9 @@ func NewCmdUpdate(f *cmdutil.Factory) *cobra.Command { if cmd.Flags().Changed("max-age-seconds") { input["maxAgeSeconds"] = flagMaxAge } + if cmd.Flags().Changed("excluded") { + input["excluded"] = flagExcluded + } if len(input) == 1 { return fmt.Errorf("at least one field must be specified for update") @@ -112,6 +116,7 @@ func NewCmdUpdate(f *cmdutil.Factory) *cobra.Command { cmd.Flags().StringVar(&flagDisplayName, "display-name", "", "Display name") cmd.Flags().StringVar(&flagDescription, "description", "", "Description") cmd.Flags().IntVar(&flagMaxAge, "max-age-seconds", 0, "Maximum age in seconds") + cmd.Flags().BoolVar(&flagExcluded, "excluded", false, "Exclude pattern from consent banner") return cmd } diff --git a/pkg/cmd/cookie-pattern/view/view.go b/pkg/cmd/cookie-pattern/view/view.go index 8c7920ad1..c242c3b2f 100644 --- a/pkg/cmd/cookie-pattern/view/view.go +++ b/pkg/cmd/cookie-pattern/view/view.go @@ -36,6 +36,7 @@ query($id: ID!) { maxAgeSeconds description source + excluded createdAt updatedAt } @@ -53,6 +54,7 @@ type viewResponse struct { MaxAgeSeconds *int `json:"maxAgeSeconds"` Description *string `json:"description"` Source string `json:"source"` + Excluded bool `json:"excluded"` CreatedAt string `json:"createdAt"` UpdatedAt string `json:"updatedAt"` } `json:"node"` @@ -117,6 +119,7 @@ func NewCmdView(f *cmdutil.Factory) *cobra.Command { _, _ = fmt.Fprintf(out, "%s%s\n", label.Render("Pattern:"), v.Pattern) _, _ = fmt.Fprintf(out, "%s%s\n", label.Render("Match Type:"), v.MatchType) _, _ = fmt.Fprintf(out, "%s%s\n", label.Render("Source:"), v.Source) + _, _ = fmt.Fprintf(out, "%s%v\n", label.Render("Excluded:"), v.Excluded) if v.MaxAgeSeconds != nil { _, _ = fmt.Fprintf(out, "%s%d\n", label.Render("Max Age (seconds):"), *v.MaxAgeSeconds) } diff --git a/pkg/server/api/mcp/v1/schema.resolvers.go b/pkg/server/api/mcp/v1/schema.resolvers.go index f98e628e7..de110adfd 100644 --- a/pkg/server/api/mcp/v1/schema.resolvers.go +++ b/pkg/server/api/mcp/v1/schema.resolvers.go @@ -5093,6 +5093,9 @@ func (r *Resolver) UpdateCookiePatternTool(ctx context.Context, req *mcp.CallToo if v := UnwrapOmittable(input.Description); v != nil && *v != nil { updateReq.Description = *v } + if v := UnwrapOmittable(input.Excluded); v != nil && *v != nil { + updateReq.Excluded = *v + } pattern, err := r.cookieBanner.UpdateCookiePattern(ctx, scope, updateReq) if err != nil { return nil, types.UpdateCookiePatternOutput{}, fmt.Errorf("cannot update cookie pattern: %w", err) diff --git a/pkg/server/api/mcp/v1/specification.yaml b/pkg/server/api/mcp/v1/specification.yaml index 52d1026db..c7bb627d5 100644 --- a/pkg/server/api/mcp/v1/specification.yaml +++ b/pkg/server/api/mcp/v1/specification.yaml @@ -9320,6 +9320,7 @@ components: - display_name - description - source + - excluded - created_at - updated_at properties: @@ -9357,6 +9358,9 @@ components: type: string enum: [SCRIPT, PRE_EXISTING] description: How the pattern was discovered + excluded: + type: boolean + description: Whether this pattern is excluded from the consent banner created_at: type: string format: date-time @@ -9889,6 +9893,11 @@ components: - string - "null" go.probo.inc/mcpgen/omittable: true + excluded: + type: + - boolean + - "null" + go.probo.inc/mcpgen/omittable: true UpdateCookiePatternOutput: type: object diff --git a/pkg/server/api/mcp/v1/types/cookie_pattern.go b/pkg/server/api/mcp/v1/types/cookie_pattern.go index 727709654..0e9a9eede 100644 --- a/pkg/server/api/mcp/v1/types/cookie_pattern.go +++ b/pkg/server/api/mcp/v1/types/cookie_pattern.go @@ -31,6 +31,7 @@ func NewCookiePattern(p *coredata.CookiePattern) *CookiePattern { MaxAgeSeconds: p.MaxAgeSeconds, Description: p.Description, Source: CookiePatternSource(p.Source), + Excluded: p.Excluded, CreatedAt: p.CreatedAt, UpdatedAt: p.UpdatedAt, }