feat: Add GraphQL API support for security attributes and categories

Description

Adds GraphQL API support for Security Attributes and Security Categories to unblock the Terraform provider for GitLab.

This MR implements two new services:

SecurityCategoriesService — 3 mutations:

  • CreateSecurityCategory — creates a new security category under a namespace
  • UpdateSecurityCategory — updates an existing security category's name or description
  • DestroySecurityCategory — deletes a security category and all its associated attributes

SecurityAttributesService — 5 mutations:

  • CreateSecurityAttributes — creates one or more attributes under a security category
  • UpdateSecurityAttribute — updates an existing attribute's name, description, or color
  • DestroySecurityAttribute — deletes a security attribute
  • ProjectUpdateSecurityAttribute — adds or removes attributes on a project
  • BulkUpdateSecurityAttributes — adds, removes, or replaces attributes across multiple groups and projects

Both services follow the established GraphQL pattern in this codebase (two-layer struct pattern with xGQL internal types and unwrap() conversion, map[string]any for mutation inputs, GenericGraphQLErrors embedding).

Closes #2252 (closed)

Edited by Caleb Madara

Merge request reports

Loading