{"id":13643462,"url":"https://github.com/hashicorp/terraform-plugin-sdk","last_synced_at":"2025-04-23T20:51:37.526Z","repository":{"id":37675972,"uuid":"191249732","full_name":"hashicorp/terraform-plugin-sdk","owner":"hashicorp","description":"Terraform Plugin SDK enables building plugins (providers) to manage any service providers or custom in-house solutions","archived":false,"fork":false,"pushed_at":"2025-04-22T15:20:28.000Z","size":14933,"stargazers_count":456,"open_issues_count":179,"forks_count":238,"subscribers_count":29,"default_branch":"main","last_synced_at":"2025-04-22T16:37:34.917Z","etag":null,"topics":["grpc","grpc-go","sdk","terraform","terraform-provider"],"latest_commit_sha":null,"homepage":"https://developer.hashicorp.com/terraform/plugin","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hashicorp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":".github/SUPPORT.md","governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-06-10T21:42:20.000Z","updated_at":"2025-04-21T10:55:18.000Z","dependencies_parsed_at":"2023-09-29T11:15:57.486Z","dependency_job_id":"976b3274-22e1-4ba0-b319-3861470f4413","html_url":"https://github.com/hashicorp/terraform-plugin-sdk","commit_stats":{"total_commits":5355,"total_committers":240,"mean_commits":22.3125,"dds":0.6754435107376284,"last_synced_commit":"47fc83b187ed009dab8f82c4c730421ef93bf48e"},"previous_names":["hashicorp/terraform-provider-sdk"],"tags_count":81,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashicorp%2Fterraform-plugin-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashicorp%2Fterraform-plugin-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashicorp%2Fterraform-plugin-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashicorp%2Fterraform-plugin-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hashicorp","download_url":"https://codeload.github.com/hashicorp/terraform-plugin-sdk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250514755,"owners_count":21443208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["grpc","grpc-go","sdk","terraform","terraform-provider"],"created_at":"2024-08-02T01:01:47.937Z","updated_at":"2025-04-23T20:51:37.506Z","avatar_url":"https://github.com/hashicorp.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"[![PkgGoDev](https://pkg.go.dev/badge/github.com/hashicorp/terraform-plugin-sdk/v2)](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-sdk/v2)\n\n# Terraform Plugin SDK\n\nThis SDK enables building Terraform plugin which allows Terraform's users to manage existing and popular service providers as well as custom in-house solutions. The SDK is stable and broadly used across the provider ecosystem.\n\nFor new provider development it is recommended to investigate [`terraform-plugin-framework`](https://github.com/hashicorp/terraform-plugin-framework), which is a reimagined provider SDK that supports additional capabilities. Refer to the [Which SDK Should I Use?](https://terraform.io/docs/plugin/which-sdk.html) documentation for more information about differences between SDKs.\n\nTerraform itself is a tool for building, changing, and versioning infrastructure safely and efficiently. You can find more about Terraform on its [website](https://www.terraform.io) and [its GitHub repository](https://github.com/hashicorp/terraform).\n\n## Terraform CLI Compatibility\n\nTerraform 0.12.0 or later is needed for version 2.0.0 and later of the Plugin SDK.\n\nWhen running provider tests, Terraform 0.12.26 or later is needed for version 2.0.0 and later of the Plugin SDK. Users can still use any version after 0.12.0.\n\n## Go Compatibility\n\nThis project follows the [support policy](https://golang.org/doc/devel/release.html#policy) of Go as its support policy. The two latest major releases of Go are supported by the project.\n\nCurrently, that means Go **1.23** or later must be used when including this project as a dependency.\n\n## Getting Started\n\nSee the [Call APIs with Terraform Providers](https://learn.hashicorp.com/collections/terraform/providers) guide on [learn.hashicorp.com](https://learn.hashicorp.com) for a guided tour of provider development.\n\n## Documentation\n\nSee [Extending Terraform](https://www.terraform.io/docs/extend/index.html) section on the website.\n\n## Scope (Providers VS Core)\n\n### Terraform Core\n\n - acts as gRPC _client_\n - interacts with the user\n - parses (HCL/JSON) configuration\n - manages state as whole, asks **Provider(s)** to mutate provider-specific parts of state\n - handles backends \u0026 provisioners\n - handles inputs, outputs, modules, and functions\n - discovers **Provider(s)** and their versions per configuration\n - manages **Provider(s)** lifecycle (i.e. spins up \u0026 tears down provider process)\n - passes relevant parts of parsed (valid JSON/HCL) and interpolated configuration to **Provider(s)**\n - decides ordering of (Create, Read, Update, Delete) operations on resources and data sources\n - ...\n\n### Terraform Provider (via this SDK)\n\n - acts as gRPC _server_\n - executes any domain-specific logic based on received parsed configuration\n   - (Create, Read, Update, Delete, Import, Validate) a Resource\n   - Read a Data Source\n - tests domain-specific logic via provided acceptance test framework\n - provides **Core** updated state of a resource or data source and/or appropriate feedback in the form of validation or other errors\n\n## Migrating to SDK v1 from built-in SDK\n\nMigrating to the standalone SDK v1 is covered on the [Plugin SDK section](https://www.terraform.io/docs/extend/guides/v1-upgrade-guide.html) of the website.\n\n## Migrating to SDK v2 from SDK v1\n\nMigrating to the v2 release of the SDK is covered in the [v2 Upgrade Guide](https://www.terraform.io/docs/extend/guides/v2-upgrade-guide.html) of the website.\n\n## Versioning\n\nThe Terraform Plugin SDK is a [Go module](https://github.com/golang/go/wiki/Modules) versioned using [semantic versioning](https://semver.org/). See [SUPPORT.md](https://github.com/hashicorp/terraform-plugin-sdk/blob/main/SUPPORT.md) for information on our support policies.\n\n## Contributing\n\nSee [`.github/CONTRIBUTING.md`](https://github.com/hashicorp/terraform-plugin-sdk/blob/main/.github/CONTRIBUTING.md)\n\n## License\n\n[Mozilla Public License v2.0](https://github.com/hashicorp/terraform-plugin-sdk/blob/main/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhashicorp%2Fterraform-plugin-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhashicorp%2Fterraform-plugin-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhashicorp%2Fterraform-plugin-sdk/lists"}