Terraform Genesys Provider: for_each with YAML queue definitions breaking on special characters

I’m trying to DRY up our Genesys Cloud infrastructure code by defining multiple queues in a YAML file and using for_each to create the resources. The idea is to have a queues.yaml file that lists the queue names and descriptions, then load that into HCL to drive the genesyscloud_queue resource.

Here is the basic structure I’m using. First, the YAML file queues.yaml:

queues:
 - name: "Support Tier 1"
 description: "First line support"
 - name: "Billing & Inquiries"
 description: "Handle billing questions"

Then in the Terraform module, I load it like this:

locals {
 queue_data = yamldecode(file("${path.module}/queues.yaml"))
}

resource "genesyscloud_queue" "queues" {
 for_each = { for q in local.queue_data.queues : q.name => q }

 name = each.value.name
 description = each.value.description
}

The plan works fine for the first queue. The second one fails during apply with a 400 Bad Request from the Genesys API. The error message says Invalid character in name: &.

I’ve tried wrapping the name in quotes in the YAML, escaping the ampersand, and even using replace(each.value.name, "&", "and") in the HCL, but nothing seems to stick. The API docs for /api/v2/iam/queues don’t explicitly list forbidden characters, but it seems like the Terraform provider or the API itself is choking on the &.

Is there a way to sanitize the input before it hits the provider, or do I need to switch to a count index loop and manually map the names? I’d rather not go back to hardcoding if I can help it. The error log just shows the raw YAML value being sent, so the sanitization function isn’t being called at the right time in the dependency graph apparently.