Expected Behavior
Creating a github_repository_ruleset with required_reviewers containing a team reviewer should succeed and be tracked in state.
Actual Behavior
The GitHub API returns the reviewer id as a string ("id":"3827094"), but the provider's Go struct expects an int64. This causes JSON unmarshaling to fail after the API call succeeds (HTTP 201), meaning:
The ruleset is created on GitHub (confirmed via UI and API response)
The provider crashes trying to parse the response
The resource is never written to state
Subsequent applies create duplicate rulesets since Terraform doesn't know they exist, eventually resulting in 422 Validation Failed - Name must be unique errors
Terraform Version
Terraform v1.5.0
- provider registry.terraform.io/integrations/github v6.11.1
Affected Resource(s)
github_repository_ruleset
Likely also github_organization_ruleset
Terraform Configuration Files
Steps to Reproduce
resource "github_repository_ruleset" "example" {
name = "Example rule"
repository = "my-repo"
target = "branch"
enforcement = "active"
conditions {
ref_name {
include = ["~DEFAULT_BRANCH"]
exclude = []
}
}
rules {
pull_request {
allowed_merge_methods = ["squash"]
dismiss_stale_reviews_on_push = true
require_code_owner_review = false
require_last_push_approval = true
required_approving_review_count = 1
required_review_thread_resolution = false
required_reviewers {
minimum_approvals = 1
file_patterns = ["*"]
reviewer {
id = 3827094 # Team ID (sent as int, returned as string by API)
type = "Team"
}
}
}
non_fast_forward = true
}
}
Debug Output
f_http_req_body="{"name":"Rule for Engineers 1 approval - platform-automations", ...
"required_reviewers":[{"minimum_approvals":1,"file_patterns":["*"],"reviewer":{"id":3827094,"type":"Team"}}] ...}"
GitHub API responds with 201 Created, but returns id as a string:
tf_http_res_status_code=201
tf_http_res_body="{"id":13056455, ...
"required_reviewers":[{"minimum_approvals":1,"file_patterns":["*"],"reviewer":{"id":"3827094","type":"Team"}}] ...}"
[ERROR] provider.terraform-provider-github_v6.11.1: Response contains error diagnostic:
diagnostic_severity=ERROR
diagnostic_summary="json: cannot unmarshal string into Go struct field RepositoryRuleset.rules.required_reviewers.reviewer.id of type int64"
tf_resource_type=github_repository_ruleset
Panic Output
Code of Conduct