v2.3.8
[v2.3.8] - 2026-05-01
Schema actualisation against API ground truth, zero-value pointer fixes, plan-time validator for
enumerated_parameters, full rule-test harness migration. Bumpswallarm-goto v0.12.1.
Upgrade Steps
- [ACTION REQUIRED]
wallarm_rule_rate_limit: addrsp_status = <400..599>(typical429) — now Required. - [ACTION REQUIRED]
wallarm_rule_file_upload_size_limit: addsize = N— now Required. - [ACTION REQUIRED]
wallarm_rule_brute/_bola/_enumin regexp mode: set bothname_regexpsandvalue_regexps(use[""]to skip a filter). - Direct callers of
wallarm-goActionCreate:Rate/Burst/Delay/OverlimitTimeare*int— wrap zero withlo.ToPtr(0).
Breaking Changes
- schema(rule): dropped
Computed: truefromset,title,enumerated_parameters.{name_regexps,value_regexps},reaction.{block_by_session,block_by_ip,graylist_by_ip}— masked SDKv2 zero-value updates. Imports may produce a one-time clearing diff. - schema(rule_rate_limit):
rsp_statusOptional → Required;burst/time_unitRequired → Optional+Computed. - schema(rule_overlimit_res_settings):
modeRequired → Optional+Computed. - schema(rule_file_upload_size_limit):
sizeOptional → Required;mode/size_unit/pointRequired → Optional+Computed.
Bug Fixes
- resourcerule.Create:
activedefaulted tofalsefor 7 mitigation controls; nowtrue. May produce a one-timefalse → trueplan diff for legacy rules. - rule_rate_limit, rule_overlimit_res_settings: user-typed
rate=0/burst=0/delay=0/overlimit_time=0now reach the API (bumpswallarm-goto v0.12.1 for*int+omitempty). - rule_graphql_detection:
max_depth,max_value_size_kb,max_doc_size_kb,max_doc_per_batch,introspection,debug_enabled→ Optional+Computed; Update used to zero API-defaulted ints. - rule_brute, rule_bola, rule_enum: new plan-time validator rejects
enumerated_parametersfields that don't apply to the chosen mode; regexp mode also requires bothname_regexpsandvalue_regexps. - enumerated_parameters:
additional_parameters/plain_parametersare Optional+Computed; previousDefault: falsecorrupted regexp-mode imports. - mapper_tftoapi: regexp-mode
name_regexps/value_regexps = [""]now reaches the API (was dropped bycty.NullValnormalization). - arbitrary_conditions: mapper now re-chunks the flat-stored
pointper paired/simple element rules instead of wrapping it as a single sub-array — fixes a force-replacement diff every plan. - action_helpers:
existingHintForActionpaginatesActionList— previously missed page-2+ collisions on tenants with >500 actions of a given hint type. - test/rule_*: 12
CheckDestroyhad invertedif err != nil &&; replaced with sharedtestAccCheckHintDestroyedhelper.
Documentation
- rules_import: new
filter_rules_in_statevariable (defaulttrue) skips rules whoserule_idis already in state, preventing duplicate state entries. - examples: added minimal HCL for
wallarm_rule_graphql_detection,_brute,_bola,_enum,_forced_browsing,_rate_limit_enum,_bola_counter.
Other Changes
- 26 rule acceptance test files migrated to v2.3.5 patterns (
ProtoV5ProviderFactories,testAccNewAPIClient);-racere-enabled onmake testacc. - New unit tests:
existingHintForAction,CachedClient.HintCreate/HintDeletecache cycles,validateEnumeratedParamsBlock,ArbitraryConditionsToTF,isFieldSetInRawConfig. - New acc tests:
enumerated_parameters.mode = "exact"for bola/brute,ActionScopeCustomizeDiffvalid/invalid scopes. - Shared
testAccCheckHintDestroyedextracted; ~700 LoC removed.