A Terraform provider for declarative HTTP API interactions, enabling infrastructure teams to manage any REST service as Terraform resources.
TerraCurl is a flexible Terraform provider that enables infrastructure and platform teams to make declarative HTTP API calls directly from Terraform configurations. It solves the problem of managing third-party APIs, internal services, and bespoke platforms that lack native Terraform providers by treating HTTP endpoints as first-class Terraform resources. This allows teams to integrate virtually any REST or HTTP-based service into their Terraform workflows without resorting to external scripts or workarounds.
Infrastructure engineers, platform teams, and DevOps practitioners who need to manage APIs and services through Terraform, especially when dealing with systems that don't have official Terraform providers.
Developers choose TerraCurl because it provides a reliable, declarative way to manage arbitrary HTTP APIs within Terraform's ecosystem, complete with state reconciliation, drift detection, and lifecycle management. Unlike workarounds like null_resource, it offers proper resource management with create/read/update/delete operations, making API interactions as robust and maintainable as traditional infrastructure resources.
A flexible Terraform provider for making API calls
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables defining create, read, update, and delete operations as HTTP requests with full Terraform state management, replacing brittle null_resource hacks with a first-class provider for consistent automation.
Supports custom headers, authentication, TLS certificates, retries, and response parsing, as shown in the code examples for handling REST or HTTP-based services with various configurations.
Handles drift detection, idempotency, and triggers resource recreation when remote state diverges from expected responses, ensuring reliability and correctness in API interactions.
Works with multipart and form-based APIs, ephemeral resources, and services lacking native Terraform providers, making it versatile for integrating diverse platforms into Terraform workflows.
Requires building the provider with Go, as per the 'Building The Provider' section, which adds overhead compared to pre-built, plug-and-play Terraform providers.
Introduces Terraform's state management and plan-apply cycle for API calls, which can be slower and more resource-intensive than direct HTTP requests or lightweight scripts for high-frequency operations.
Only supports HTTP-based APIs, excluding other protocols like WebSockets or gRPC, which might be necessary for modern, real-time services or microservices architectures.