Releases: wallarm/terraform-provider-wallarm
Release list
v2.3.10
[v2.3.10] - 2026-05-12
Adds the
wallarm_api_discovery_configresource, fixes a default-app instance-condition mismatch indata.wallarm_hits, and ships an internal lint/reference-data refactor.
New Features
- feat(api_discovery_config): new singleton resource managing the API Discovery configuration (Settings → API Discovery) — editable enabled flag, protocols (REST/GraphQL/SOAP/GRPC/MCP), content-type filter, endpoint-stability thresholds, parameter-type and PII detection thresholds, disabled-apps list. Read-only attributes mirror the rest of the API response for drift visibility. Bumps
wallarm-goto v0.13.0 to add theAPIDiscoveryinterface.
Bug Fixes
- fix(data.wallarm_hits): emit
instancecondition for default-app (poolID=-1) hits — resolves 4-vs-5 condition hash mismatch on instance-included API clients.
Other Changes
- refactor(repo): add 13 reference docs,
spec/point_map.json,spec/actions_examples.json, andscripts/fetch_point_refs.pyto the repo; dedupespec/actions_examples.json(343 → 82 unique shapes); scrub real domains toexample.com; drop deadinit-pluginMakefile target andplugindircheck.sh. - refactor(lint):
interface{}→anyacrosswallarm/andscripts/(~990 sites);WriteString(fmt.Sprintf)→fmt.Fprintf(25 sites); 2 tagged-switch conversions. No behavior change.
v2.3.9
[v2.3.9] - 2026-05-04
Rules polish batch — naming cleanup, schema-shape audit (symmetric remove-restores-default), safety hardening, test gap fills. Bumps
wallarm-goto v0.12.2.Migration note: the
Optional+Computed→Optional+Default(<value>)flips below cover ~13 fields. Resources whose API value differs from the new schema default will produce a one-time plan diff after upgrade — reviewterraform planoutput before applying. Affectsactive(all resources),additional_parameters/plain_parameters(brute/bola/enum),introspection/debug_enabled/max_depth/max_value_size_kb/max_doc_size_kb/max_doc_per_batch/max_aliases(graphql_detection),mode(overlimit_res_settings, file_upload_size_limit),time_unit(rate_limit).
Upgrade Steps
- [ACTION REQUIRED]
wallarm_rule_graphql_detection: renamemax_alias_size_kb→max_aliasesin HCL.
Breaking Changes
wallarm_rule_graphql_detection.max_alias_size_kbrenamed tomax_aliases(count, not size; wire JSON tag unchanged).mitigation(all rule resources) nowComputedonly (wasOptional+Computed); HCL setting it now fails validation.wallarm_rule_regex.experimentaldefault behaviour: HCL omitting the field now creates a regularregexrule (wasexperimental_regex).
Bug Fixes
wallarm_rule_graphql_detection.introspection/.debug_enablednowOptional+Default(true)— symmetric remove-restores-default.active(all rule resources) nowOptional+Default(true)— same.enumerated_parameters.additional_parameters/.plain_parametersnowOptional+Default(false)(rule_brute/_bola/_enum) — same.wallarm_rule_graphql_detectionint fields nowOptional+Default(<API default>)—max_depth,max_value_size_kb(range1..100validator added),max_doc_size_kb,max_doc_per_batch.wallarm_rule_graphql_detection.max_aliasesnowOptional+Default(5)(wasOptional+Computed+ForceNew); mutates in place. Addswallarm-go.HintUpdateV3Params.MaxAliases+resourcerule.WithMaxAliases.wallarm_rule_overlimit_res_settings.modenowOptional+Default("monitoring").wallarm_rule_rate_limit.time_unitnowOptional+Default("rps").wallarm_rule_file_upload_size_limit.modenowOptional+Default("monitoring");sizegainsIntAtLeast(1)validator.wallarm_rule_regex.experimentalnowOptional+Computed+ForceNew(wasOptional+Default(true)+ForceNew; ForceNew retained); Read derives fromrule_type. Prevents destroy-on-import for regularregexrules.findActionByConditionsHash200-page pagination cap — bounds previously unbounded loop.setIfExistspanic-swallow removed — replaced with explicit cty guards inrawStateHasKey.- Plan-time enum validators added:
attack_typeon rule_disable_attack_type/vpatch (17 values each), rule_regex (16);block_by_session/ip+graylist_by_ipaccept0(unset, dropped on wire) OR600..315569520— preservesterraform import+-generate-config-outround-trip on partially-set reactions;threshold.count/.periodIntAtLeast(1)— surfaces API constraint at plan time. - Generic helper
resourcerule.GetPointerIfConfigured[T any]replaces type-specific variants — used by rate_limitdelay/burstwhere 0 is meaningful.
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.
v2.3.7
[v2.3.7] - 2026-04-28
Rule lifecycle stability: 45 schema fields go mutable so
planreports update-in-place instead of destroy+recreate, several long-standing false-diff sources are fixed, and counter / empty-body destroy semantics are clarified.
Upgrade Steps
- Bump the provider to
v2.3.7. No HCL migration required. - [ACTION REQUIRED] Provider developers consuming
wallarm-godirectly:wallarm.API.HintDelete(...)now returns*HintDeleteResp{Status, Body}(waserroronly). Update call sites. End users writing only HCL are unaffected.
Bug Fixes
- fix(rule):
terraform planreports update-in-place (instead of destroy+recreate) for 45 rule fields whose API supports PUT updates. Existing state remains compatible. - fix(action_scope):
iequalaction conditions no longer perpetually drift on mixed-case values; covers bothvaluefield and value-bearing point keys (action_name,action_ext,method,instance,proto,scheme,uri). - fix(action_scope): action conditions no longer perpetually drift on header-name case (API uppercases header names regardless of
type). - fix(rule_overlimit_res_settings): Create now returns
ImportAsExistsErrorwhen a same-scope rule already exists, matchingwallarm_rule_mode/_api_abuse_modebehaviour. - fix(rule_credential_stuffing):
data.wallarm_rulesno longer double-counts credential_stuffing rules within the sameterraform apply— completes the v2.3.2 dedup at the missedHintCache.Insertsite. - fix(rule_counters):
terraform destroyofbruteforce_counter/dirbust_counter/bola_counteris state-only; counters auto-clean ~30s after their last trigger reference is removed. - fix(rule_counters):
title,active,setare nowComputedso counters don't surface phantom diffs after Create. - fix(rule): Delete emits a
[WARN]when the API returns an empty body (rule already absent server-side).
Other Changes
- build(deps): bump
wallarm-gotov0.12.0(typedHintDeleteresponse, extendedHintUpdateV3Paramswith ~30 mutable-field pointers). - refactor(rule): shared
resourcerule.Deletefactory (21 rule resources). - refactor(rule):
resourcerule.Updateaccepts variadicUpdateCustomizers; newWith*helper library wires per-resource Update in one line. - test(rule): in-place Update acceptance tests for every mutable rule resource; ported pinterest-scope (
api_abuse_mode) and multi-vpatch-per-action smokes to acc; unit tests for Update customizers andHintCache.LoadAll/All. - docs(api_spec): moved
wallarm_api_specandwallarm_api_spec_policyto theCommonsubcategory. - build(makefile): dropped
-racefrommake testaccuntil remaining rule tests migrate to the v2.3.5 pattern; unit tests still run under-race.
v2.3.6
[v2.3.6] - 2026-04-24
Full Terraform support for Wallarm's API Specification Enforcement: expanded
wallarm_api_specschema, newwallarm_api_spec_policyresource for per-violation block/monitor/ignore controls, and wallarm-go v0.11.0 with the backing endpoints.
Upgrade Steps
- Bump the provider to
v2.3.6. No HCL migration is required — existingwallarm_api_specconfigurations continue to apply unchanged. wallarm_api_spec.domainsandwallarm_api_spec.instanceschanged from Required to Optional. If you relied on Terraform failing fast when these were missing, addvalidationblocks on your input variables instead.- [ACTION REQUIRED] Provider developers consuming
wallarm-godirectly must update imports: theApi*prefix is gone. RenameApiSpec→APISpec,ApiSpecBody→APISpecBody,ApiDetection→APIDetection, etc. JSON tags are unchanged, so API payloads are wire-compatible. End users writing only HCL are unaffected.
New Features
- New resource
wallarm_api_spec_policy— manages the API Specification Enforcement policy attached to an uploaded spec. Six violation modes (undefined_endpoint_mode,undefined_parameter_mode,missing_parameter_mode,invalid_parameter_value_mode,missing_auth_mode,invalid_request_mode), two threshold modes (timeout_mode,max_request_size_mode, Computed-only — require elevated permissions to change), and a repeatableconditionblock that reuses the rule action-scope schema. Destroy is a soft-delete (PUTenabled: false) — the policy record is removed only when the parent spec is deleted. Import ID format:{client_id}/{api_spec_id}/policy. wallarm_api_spec: extended schema withauth_headers(list of{key, value}blocks, sensitive values) used when Wallarm fetches the spec URL, plus API-computed attributes —status,spec_version,openapi_version,endpoints_count,shadow_endpoints_count,orphan_endpoints_count,zombie_endpoints_count,format,version,node_sync_version,last_synced_at,last_compared_at,updated_at,created_at,file_changed_at, and a nestedfileblock (name,signed_url,checksum,mime_type,version).file.signed_urlis Sensitive and regenerates on every Read (short-lived, ~10 min).wallarm_api_spec:title,description,file_remote_url,regular_file_update,api_detection,domains,instancesare now mutable (no moreForceNew). Edits apply as an in-place PUT via the newAPISpecUpdatepath instead of destroy/recreate.client_idremainsForceNew.
Other Changes
- build(deps): bump
wallarm-gotov0.11.0— addsAPISpecReadByID,APISpecUpdate,APISpecPolicyPutendpoints; extendsAPISpecBodywithAuthHeadersand the new computed fields; renamesApi*Go identifiers toAPI*for idiomatic Go initialisms (JSON tags unchanged). - refactor(api_spec):
domainsandinstancesrelaxed from Required to Optional. The Wallarm console hides these legacy fields and Wallarm computes the applicable scope from other signals, so forcing a value in HCL was misleading. - test(api_spec): acceptance-test suite migrated to v2.3.5 patterns (
ProtoV5ProviderFactories,testAccNewAPIClient, unique per-testtitle). Added Update-in-place, Import-round-trip, andauth_headerslifecycle coverage. - test(api_spec_policy): new
resource_api_spec_policy_test.gocovers Create, Update-mode-flip, scopedconditionblocks, soft-delete, import, and a regression-gate_ConditionsLifecycletest (0→1→2→1→0 condition blocks). - docs(api_spec): resource doc rewritten against the v2.3.6 schema — full attribute list including the nested
fileblock withsigned_urlcaveat; example updated. - docs(api_spec_policy): new resource doc with Example Usage, Argument Reference split into Scope / Violation Modes / Threshold Limits, Import (3-part ID), and a Limitations section documenting soft-delete behaviour and the one-policy-per-spec constraint.
- docs(examples): new
examples/wallarm_api_spec_policy.tfwith three scenarios (observation-mode rollout, block on undefined endpoints with host scope, paused policy preserving settings). - docs(readme): added
wallarm_api_spec_policyto the Infrastructure & Tooling table; resource count bumped 11 → 12. - chore(schema): added
Descriptionstrings to 15+ previously-undocumentedwallarm_api_specfields soterraform providers schemaand registry docs surface helpful text.
v2.3.5
[v2.3.5] - 2026-04-22
Adds
wallarm_rule_api_abuse_modefor toggling API Abuse Prevention per request scope, and fixes a hint-cache stale-read issue that surfaced as "dangling resource" errors in fast create/delete cycles.
New Features
- feat(rule_api_abuse_mode): New rule resource enables or disables API Abuse Prevention for requests matching an action scope. Primary use case: allowlist trusted crawlers (Pinterest, Google, monitoring agents) with
mode = "disabled".modeisenabledordisabled; changing it destroys and recreates the rule.
Bug Fixes
- fix(hint_cache): Invalidate cache on
HintDelete. Previously, a quick create → delete cycle (common in CI or destroyed test runs) could return a stale cached rule on the next read, surfacing as "resource still exists" errors.
Performance Improvements
- refactor(action_helpers): Duplicate-rule detection on Create now uses the server-canonical
ConditionsHashinstead of a hand-rolled per-field comparison — faster and immune to ordering or whitespace differences.
Other Changes
- refactor(resourcerule): Shared
existingHintForActionhelper replaces per-resource collision checks inwallarm_rule_modeandwallarm_rule_api_abuse_mode. - docs(rule_api_abuse_mode): New resource doc and HCL example. README Rules table updated (20 → 21 entries).
v2.3.4
Released: April 20, 2026
Fixes terraform import for wallarm_api_spec and wallarm_user, bumps
wallarm-go to v0.10.0, removes an unused provider argument.
Bug Fixes
- Import now works for
wallarm_api_specandwallarm_user— replaced
passthrough import with real ID parsers so the required fields get
populated. data.wallarm_security_issuesno longer panics when an issue has no
vpatch mitigation (now nil-checked).wallarm_api_specimport ID aligned to{client_id}/{api_spec_id}for
consistency with other 2-entity resources. Existing state unaffected.
Improvements
wallarm-gov0.10.0: new Attack, Activity Log, and Security Issues
APIs; cursor pagination onAttackRead; nil-input guards; IP-list search
encoding fix.- Shared rule Import + Update helpers in
resourcerule— 42 rule
resources migrated, ~850 net LOC removed. - Test coverage:
resourcerule55.7% → 69.3%.
Breaking Changes
ignore_existingprovider argument removed (the field was never read
by any code). Drop it from yourprovider "wallarm" {}block and the
WALLARM_IGNORE_EXISTING_RESOURCESenv var if set.
Documentation
## Importsections added toapi_spec,node,tenant,user.integration_ms_teams.mdrenamed tointegration_teams.md.
v2.3.3
Wallarm Terraform Provider v2.3.3
Released: April 19, 2026
Fixes counter-resource imports and ships an internal code reorganization.
No HCL changes required.
Bug Fixes
- Counter resources now import cleanly.
wallarm_rule_bola_counter,
wallarm_rule_bruteforce_counter, andwallarm_rule_dirbust_counterno
longer fail with HTTP 403 duringterraform import. Counters are now
immutable:commentandvariativity_disabledare computed-only. vuln_prefixremoved from tenant creation — the field was dropped from
the Wallarm API and now returns an error if sent.
Improvements
wallarm-goupgraded to v0.9.1 (79.5% test coverage, dead code removed).- ~50 new unit tests;
resourcerulecoverage now 55.7%. - Acceptance-test CI provisions a dedicated tenant per run.
Documentation
docs/index.md: documentedhint_prefetchandrequire_explicit_client_id
provider arguments; correctedmax_backoffdefault from 30 to 5.README.md: Terraform minimum version raised to>= 1.5.
Internal
Refactored source tree for clarity (collapsed wallarm/common/, split
resource_rule.go, dissolved utils.go, several file renames). Added
make dev / make dev-clean targets. No user-visible behavior change.
v2.3.2
IMPROVEMENTS
- Instance action conditions now preserve
type="equal"in state instead of clearing to empty string, enabling futuretype="regex"support - Added
admin_extrole towallarm_userresource for Administrator (extended) support
BUG FIXES
- Fixed credential stuffing rules appearing twice in
data.wallarm_ruleswhen API token has elevated permissions - Fixed instance condition
typefield lost after resource Read, causing perpetual drift when explicitly set - Fixed wrong field name
resource_type→terraform_resourcein 5 resource docs andrules_importguide - Fixed incorrect
rule_typeexamples inrule_bola,rule_brute,rule_forced_browsing,rule_graphql_detection,rule_rate_limit_enumdocs
DOCUMENTATION
- Rewrote
rules_importguide with complete configuration, all workflows (native import, generator fallback), sync status, and filtering - Added
terraform {}block withrequired_version >= 1.5to provider example - Added Administrator (extended) role documentation to provider and user resource docs
- Fixed
actionguide:typefield documented as optional (was incorrectly marked required), added missing common fields (title,active,set) - Fixed
mitigation_controlsguide: corrected file upload parameters (sizenotmax_size, removed non-existentfile_types), clarifiedsafe_blockingisrule_modeonly
v2.3.1
v2.3.1
Patch for the hits-to-rules workflow: stamps grouped per attack type, rule_types filter fix, CI test fix.
Improvements
- Stamps grouped per attack type for traceability — each group has
attack_typealways set - New
disable_attack_typebool field in aggregated groups — controls rule creation, decoupled from key rule_typesfilter correctly controls both stamp and attack_type rule creation
Bug Fixes
- Fixed
rule_types = ["disable_stamp"]still creatingdisable_attack_typerules - Fixed nil stamps for stampless types (
xxe,invalid_xml) causing HCL null errors - Fixed stamp group key truncation dropping attack_type suffix
- Fixed
TestReverseMapRealExamplesfailing in CI (moved fixtures totestdata/)