github.com/akamai/AkamaiOPEN-edgegrid-golang/v2@v2.17.0/pkg/appsec/siem_settings.go (about) 1 package appsec 2 3 import ( 4 "context" 5 "fmt" 6 "net/http" 7 8 validation "github.com/go-ozzo/ozzo-validation/v4" 9 ) 10 11 type ( 12 // The SiemSettings interface supports retrieving, modifying and removing the SIEM settings for a configuration. 13 // 14 // https://developer.akamai.com/api/cloud_security/application_security/v1.html#siem 15 SiemSettings interface { 16 // https://developer.akamai.com/api/cloud_security/application_security/v1.html#getsiemsettings 17 GetSiemSettings(ctx context.Context, params GetSiemSettingsRequest) (*GetSiemSettingsResponse, error) 18 19 // https://developer.akamai.com/api/cloud_security/application_security/v1.html#putsiemsettings 20 UpdateSiemSettings(ctx context.Context, params UpdateSiemSettingsRequest) (*UpdateSiemSettingsResponse, error) 21 22 // https://developer.akamai.com/api/cloud_security/application_security/v1.html#putsiemsettings 23 // Deprecated: this method will be removed in a future release. 24 RemoveSiemSettings(ctx context.Context, params RemoveSiemSettingsRequest) (*RemoveSiemSettingsResponse, error) 25 } 26 27 // GetSiemSettingsRequest is used to retrieve the SIEM settings for a configuration. 28 GetSiemSettingsRequest struct { 29 ConfigID int `json:"-"` 30 Version int `json:"-"` 31 } 32 33 // GetSiemSettingsResponse is returned from a call to GetSiemSettings. 34 GetSiemSettingsResponse struct { 35 EnableForAllPolicies bool `json:"enableForAllPolicies"` 36 EnableSiem bool `json:"enableSiem"` 37 EnabledBotmanSiemEvents bool `json:"enabledBotmanSiemEvents"` 38 SiemDefinitionID int `json:"siemDefinitionId"` 39 FirewallPolicyIds []string `json:"firewallPolicyIds"` 40 } 41 42 // GetSiemSettingRequest is used to retrieve the SIEM settings for a configuration. 43 GetSiemSettingRequest struct { 44 ConfigID int `json:"-"` 45 Version int `json:"-"` 46 } 47 48 // GetSiemSettingResponse is returned from a call to GetSiemSettings. 49 GetSiemSettingResponse struct { 50 EnableForAllPolicies bool `json:"enableForAllPolicies"` 51 EnableSiem bool `json:"enableSiem"` 52 EnabledBotmanSiemEvents bool `json:"enabledBotmanSiemEvents"` 53 SiemDefinitionID int `json:"siemDefinitionId"` 54 FirewallPolicyIds []string `json:"firewallPolicyIds"` 55 } 56 57 // UpdateSiemSettingsRequest is used to modify the SIEM settings for a configuration. 58 UpdateSiemSettingsRequest struct { 59 ConfigID int `json:"-"` 60 Version int `json:"-"` 61 EnableForAllPolicies bool `json:"enableForAllPolicies"` 62 EnableSiem bool `json:"enableSiem"` 63 EnabledBotmanSiemEvents bool `json:"enabledBotmanSiemEvents"` 64 SiemDefinitionID int `json:"siemDefinitionId"` 65 FirewallPolicyIds []string `json:"firewallPolicyIds"` 66 } 67 68 // UpdateSiemSettingsResponse is returned from a call to UpdateSiemSettings. 69 UpdateSiemSettingsResponse struct { 70 EnableForAllPolicies bool `json:"enableForAllPolicies"` 71 EnableSiem bool `json:"enableSiem"` 72 EnabledBotmanSiemEvents bool `json:"enabledBotmanSiemEvents"` 73 SiemDefinitionID int `json:"siemDefinitionId"` 74 FirewallPolicyIds []string `json:"firewallPolicyIds"` 75 } 76 77 // RemoveSiemSettingsRequest is used to remove the SIEM settings for a configuration. 78 // Deprecated: this struct will be removed in a future release. 79 RemoveSiemSettingsRequest struct { 80 ConfigID int `json:"-"` 81 Version int `json:"-"` 82 EnableForAllPolicies bool `json:"-"` 83 EnableSiem bool `json:"enableSiem"` 84 EnabledBotmanSiemEvents bool `json:"-"` 85 SiemDefinitionID int `json:"-"` 86 FirewallPolicyIds []string `json:"-"` 87 } 88 89 // RemoveSiemSettingsResponse is returned from a call to RemoveSiemSettings. 90 // Deprecated: this struct will be removed in a future release. 91 RemoveSiemSettingsResponse struct { 92 EnableForAllPolicies bool `json:"enableForAllPolicies"` 93 EnableSiem bool `json:"enableSiem"` 94 EnabledBotmanSiemEvents bool `json:"enabledBotmanSiemEvents"` 95 SiemDefinitionID int `json:"siemDefinitionId"` 96 FirewallPolicyIds []string `json:"firewallPolicyIds"` 97 } 98 ) 99 100 // Validate validates a GetSiemSettingsRequest. 101 func (v GetSiemSettingsRequest) Validate() error { 102 return validation.Errors{ 103 "ConfigID": validation.Validate(v.ConfigID, validation.Required), 104 "Version": validation.Validate(v.Version, validation.Required), 105 }.Filter() 106 } 107 108 // Validate validates an UpdateSiemSettingsRequest. 109 func (v UpdateSiemSettingsRequest) Validate() error { 110 return validation.Errors{ 111 "ConfigID": validation.Validate(v.ConfigID, validation.Required), 112 "Version": validation.Validate(v.Version, validation.Required), 113 }.Filter() 114 } 115 116 // Validate validates a RemoveSiemSettingsRequest. 117 // Deprecated: this method will be removed in a future release. 118 func (v RemoveSiemSettingsRequest) Validate() error { 119 return validation.Errors{ 120 "ConfigID": validation.Validate(v.ConfigID, validation.Required), 121 "Version": validation.Validate(v.Version, validation.Required), 122 }.Filter() 123 } 124 125 func (p *appsec) GetSiemSettings(ctx context.Context, params GetSiemSettingsRequest) (*GetSiemSettingsResponse, error) { 126 logger := p.Log(ctx) 127 logger.Debug("GetSiemSettings") 128 129 if err := params.Validate(); err != nil { 130 return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) 131 } 132 133 uri := fmt.Sprintf( 134 "/appsec/v1/configs/%d/versions/%d/siem", 135 params.ConfigID, 136 params.Version, 137 ) 138 139 req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil) 140 if err != nil { 141 return nil, fmt.Errorf("failed to create GetSiemSettings request: %w", err) 142 } 143 144 var result GetSiemSettingsResponse 145 resp, err := p.Exec(req, &result) 146 if err != nil { 147 return nil, fmt.Errorf("get siem settings request failed: %w", err) 148 } 149 if resp.StatusCode != http.StatusOK { 150 return nil, p.Error(resp) 151 } 152 153 return &result, nil 154 } 155 156 func (p *appsec) UpdateSiemSettings(ctx context.Context, params UpdateSiemSettingsRequest) (*UpdateSiemSettingsResponse, error) { 157 logger := p.Log(ctx) 158 logger.Debug("UpdateSiemSettings") 159 160 if err := params.Validate(); err != nil { 161 return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) 162 } 163 164 uri := fmt.Sprintf( 165 "/appsec/v1/configs/%d/versions/%d/siem", 166 params.ConfigID, 167 params.Version, 168 ) 169 170 req, err := http.NewRequestWithContext(ctx, http.MethodPut, uri, nil) 171 if err != nil { 172 return nil, fmt.Errorf("failed to create UpdateSiemSettings request: %w", err) 173 } 174 175 var result UpdateSiemSettingsResponse 176 resp, err := p.Exec(req, &result, params) 177 if err != nil { 178 return nil, fmt.Errorf("update siem settings request failed: %w", err) 179 } 180 if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { 181 return nil, p.Error(resp) 182 } 183 184 return &result, nil 185 } 186 187 // Deprecated: this method will be removed in a future release. 188 func (p *appsec) RemoveSiemSettings(ctx context.Context, params RemoveSiemSettingsRequest) (*RemoveSiemSettingsResponse, error) { 189 logger := p.Log(ctx) 190 logger.Debug("RemoveSiemSettings") 191 192 if err := params.Validate(); err != nil { 193 return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) 194 } 195 196 uri := fmt.Sprintf( 197 "/appsec/v1/configs/%d/versions/%d/siem", 198 params.ConfigID, 199 params.Version, 200 ) 201 202 req, err := http.NewRequestWithContext(ctx, http.MethodPut, uri, nil) 203 if err != nil { 204 return nil, fmt.Errorf("failed to create RemoveSiemSettings request: %w", err) 205 } 206 207 var result RemoveSiemSettingsResponse 208 resp, err := p.Exec(req, &result, params) 209 if err != nil { 210 return nil, fmt.Errorf("remove siem settings request failed: %w", err) 211 } 212 if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { 213 return nil, p.Error(resp) 214 } 215 216 return &result, nil 217 }