{"id":13786742,"url":"https://github.com/dikhan/terraform-provider-openapi","last_synced_at":"2026-01-29T10:30:00.783Z","repository":{"id":27589255,"uuid":"107214823","full_name":"dikhan/terraform-provider-openapi","owner":"dikhan","description":"OpenAPI Terraform Provider that configures itself at runtime with the resources exposed by the service provider (defined in a swagger file)","archived":false,"fork":false,"pushed_at":"2023-11-10T02:45:09.000Z","size":38416,"stargazers_count":278,"open_issues_count":31,"forks_count":48,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-05-11T22:40:37.027Z","etag":null,"topics":["go","openapi","swagger","terraform"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dikhan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-10-17T03:47:09.000Z","updated_at":"2025-05-06T04:07:01.000Z","dependencies_parsed_at":"2024-01-08T16:09:50.480Z","dependency_job_id":"1a48dffe-702a-4bd5-a258-20b21464fe7c","html_url":"https://github.com/dikhan/terraform-provider-openapi","commit_stats":null,"previous_names":[],"tags_count":70,"template":false,"template_full_name":null,"purl":"pkg:github/dikhan/terraform-provider-openapi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dikhan%2Fterraform-provider-openapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dikhan%2Fterraform-provider-openapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dikhan%2Fterraform-provider-openapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dikhan%2Fterraform-provider-openapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dikhan","download_url":"https://codeload.github.com/dikhan/terraform-provider-openapi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dikhan%2Fterraform-provider-openapi/sbom","scorecard":{"id":342892,"data":{"date":"2025-08-11","repo":{"name":"github.com/dikhan/terraform-provider-openapi","commit":"53c058558db31f8ee3a73f855095d7a21fb96343"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":1,"reason":"Found 2/12 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v3.0.0 not signed: https://api.github.com/repos/dikhan/terraform-provider-openapi/releases/64692950","Warn: release artifact v2.2.0 not signed: https://api.github.com/repos/dikhan/terraform-provider-openapi/releases/48975729","Warn: release artifact v2.1.0 not signed: https://api.github.com/repos/dikhan/terraform-provider-openapi/releases/46275746","Warn: release artifact v2.0.6 not signed: https://api.github.com/repos/dikhan/terraform-provider-openapi/releases/44456951","Warn: release artifact v2.0.5 not signed: https://api.github.com/repos/dikhan/terraform-provider-openapi/releases/41090588","Warn: release artifact v3.0.0 does not have provenance: https://api.github.com/repos/dikhan/terraform-provider-openapi/releases/64692950","Warn: release artifact v2.2.0 does not have provenance: https://api.github.com/repos/dikhan/terraform-provider-openapi/releases/48975729","Warn: release artifact v2.1.0 does not have provenance: https://api.github.com/repos/dikhan/terraform-provider-openapi/releases/46275746","Warn: release artifact v2.0.6 does not have provenance: https://api.github.com/repos/dikhan/terraform-provider-openapi/releases/44456951","Warn: release artifact v2.0.5 does not have provenance: https://api.github.com/repos/dikhan/terraform-provider-openapi/releases/41090588"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating alpine:3.13 to alpine:3.13@sha256:469b6e04ee185740477efa44ed5bdd64a07bbdd6c7e5f5d169e540889597b911","Warn: containerImage not pinned by hash: examples/goa/api/Dockerfile:1: pin your Docker image by updating golang:latest to golang:latest@sha256:f5419b186fbcd8608c4d7a78293673f858bed4bb793aa2b413e89d1d52aecebc","Warn: containerImage not pinned by hash: examples/swaggercodegen/api/Dockerfile:1: pin your Docker image by updating golang:latest to golang:latest@sha256:f5419b186fbcd8608c4d7a78293673f858bed4bb793aa2b413e89d1d52aecebc","Warn: downloadThenRun not pinned by hash: Dockerfile:18","Warn: downloadThenRun not pinned by hash: Dockerfile:19","Info:   0 out of   2 downloadThenRun dependencies pinned","Info:   0 out of   3 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"19 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2020-0032 / GHSA-fjgq-224f-fq37","Warn: Project is vulnerable to: GO-2024-2961","Warn: Project is vulnerable to: GO-2023-2402 / GHSA-45x7-px36-x8w8","Warn: Project is vulnerable to: GO-2024-3321 / GHSA-v778-237x-gjrc","Warn: Project is vulnerable to: GO-2025-3487 / GHSA-hcg3-q754-cr77","Warn: Project is vulnerable to: GO-2022-0969 / GHSA-69cg-p879-7622","Warn: Project is vulnerable to: GO-2023-1495 / GHSA-fxg5-wq6x-vr4w","Warn: Project is vulnerable to: GO-2022-1144 / GHSA-xrjj-mj9h-534m","Warn: Project is vulnerable to: GO-2023-1571 / GHSA-vvpx-j8f3-3w6h","Warn: Project is vulnerable to: GO-2023-1988 / GHSA-2wrh-6pvc-2jm9","Warn: Project is vulnerable to: GO-2023-2102 / GHSA-4374-p667-p6c8","Warn: Project is vulnerable to: GO-2023-2153 / GHSA-m425-mq94-257g / GHSA-qppj-fm5r-hxr3","Warn: Project is vulnerable to: GO-2024-2687 / GHSA-4v7x-pqxf-cx7m","Warn: Project is vulnerable to: GO-2024-3333","Warn: Project is vulnerable to: GO-2025-3503 / GHSA-qxp5-gwg8-xv66","Warn: Project is vulnerable to: GO-2025-3595 / GHSA-vvgc-356p-c3xw","Warn: Project is vulnerable to: GO-2022-1059 / GHSA-69ch-w2m2-3vjp","Warn: Project is vulnerable to: GO-2024-2611 / GHSA-8r3f-844c-mc37","Warn: Project is vulnerable to: GO-2022-0603 / GHSA-hp87-p4gw-j4gq"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T06:19:32.384Z","repository_id":27589255,"created_at":"2025-08-18T06:19:32.384Z","updated_at":"2025-08-18T06:19:32.384Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28875454,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T09:47:23.353Z","status":"ssl_error","status_checked_at":"2026-01-29T09:47:19.357Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["go","openapi","swagger","terraform"],"created_at":"2024-08-03T19:01:32.614Z","updated_at":"2026-01-29T10:30:00.757Z","avatar_url":"https://github.com/dikhan.png","language":"Go","funding_links":[],"categories":["Software Packages","Go","软件包","Go 工具","Go Tools","DevOps Tools"],"sub_categories":["DevOps Tools","DevOps 工具","代码分析","devops 工具"],"readme":"# Terraform Provider OpenAPI [![Build Status][travis-image]][travis-url] [![GoDoc][godoc-badge]][godoc-url] [![GoReportCard][goreportcard-badge]][goreportcard-url] [![CodeCov][codecov-badge]][codecov-url]\n\nThis terraform provider aims to minimise as much as possible the efforts needed from service providers to create and\nmaintain custom terraform providers. This provider uses terraform as the engine that will orchestrate and manage the cycle\nof the resources and depends on a swagger file (hosted on a remote endpoint) to successfully configure itself dynamically at runtime.\n\n\u003ccenter\u003e\n    \u003ctable cellspacing=\"0\" cellpadding=\"0\" style=\"width:100%; border: none;\"\u003e\n      \u003ctr\u003e\n        \u003cth align=\"center\"\u003e\u003cimg src=\"https://www.datocms-assets.com/2885/1620155113-brandhcterraformprimaryattributedcolor.svg\" width=\"400px\"\u003e\u003c/th\u003e\n        \u003cth align=\"center\"\u003e\u003cimg src=\"https://www.openapis.org/wp-content/uploads/sites/3/2018/02/OpenAPI_Logo_Pantone-1.png\" width=\"400px\"\u003e\u003c/th\u003e \n      \u003c/tr\u003e\n      \u003ctr\u003e\n        \u003ctd align=\"center\"\u003e\u003cp\u003ePowered by \u003ca href=\"https://www.terraform.io\"\u003ehttps://www.terraform.io\u003c/a\u003e\u003c/p\u003e\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e\u003cp\u003eFollowing \u003ca href=\"https://github.com/OAI/OpenAPI-Specification\"\u003eThe OpenAPI Specification\u003c/a\u003e\u003c/td\u003e \n      \u003c/tr\u003e\n    \u003c/table\u003e\n\u003c/center\u003e\n\nWhat are the main pain points that this terraform provider tries to tackle?\n\n- As as service provider, you can focus on improving the service itself rather than the tooling around it.\n- Due to the dynamic nature of this terraform provider, the service provider can continue expanding the functionality\nof the different APIs by introducing new versions, and this terraform provider will be able to discover the new resource versions automatically without the need to add support for those as you would when mantining your own custom Terraform provider.\n- Find consistency across APIs provided by different teams encouraging the adoption of OpenAPI specification for\ndescribing, producing, consuming, and visualizing RESTful Web services.\n\n## Overview\n\nAPI terraform provider is a powerful full-fledged terraform provider that is able to configure itself at runtime based on \na [Swagger](https://swagger.io/) specification file containing the definitions of the APIs exposed. The dynamic nature of \nthis provider is what makes it very flexible and convenient for service providers as subsequent upgrades \nto their APIs will not require new compilations of this provider. \nThe service provider APIs are discovered on the fly and therefore the service providers can focus on their services\nrather than the tooling around it.\n\n### Pre-requirements\n\n- The service provider hosts APIs documented using [OpenApi 2.0 specification](https://swagger.io/specification/v2/) and the APIs\ncomply with the OpenAPI Terraform Provider [How to](docs/how_to.md) guidelines. The service provider API's OpenAPI document must also \nbe available via a discovery endpoint served through HTTP/s or the file system.\n\n### Requirements\n\n- [Terraform](https://www.terraform.io/downloads.html) \u003e= v0.12.0 (to execute the terraform provider plugin)\n  - If you are using Terraform 0.11, refer to the latest [OpenAPI Terraform provider v0.13.1 released](https://github.com/dikhan/terraform-provider-openapi/releases/tag/v0.31.1) compatible with Terraform 0.11.\n- [Go](https://golang.org/doc/install) \u003e= 1.17 (to build the provider plugin)\n  - This project uses [go modules](https://github.com/golang/go/wiki/Modules) for dependency management\n- [Docker](https://www.docker.com/) 17.09.0-ce (to run service provider example)\n- [Docker-compose](https://docs.docker.com/compose/) 1.16.1 (to run service provider example)\n\n\n## How to use Terraform Provider OpenAPI\n\n### Things to know regarding custom terraform providers\n\n- Terraform expects third party (in-house) providers to be manually installed in a specific directory. Refer to the [OpenAPI Terraform provider installation instructions](#openapi-terraform-provider-installation) to\nlearn more about this.\n- Terraform expects terraform provider names to follow a specific naming scheme. The naming scheme for plugins is \n``terraform-\u003ctype\u003e-\u003cname\u003e_vX.Y.Z``, where `\u003ctype\u003e` is either provider or provisioner, `\u003cname\u003e` is the provider's name and `X.Y.Z` is the version of the plugin.\n\nMore information about how terraform discovers third party terraform providers and naming conventions [here](https://www.terraform.io/docs/extend/how-terraform-works.html#discovery).\n\n### OpenAPI Terraform provider installation\n\nThere are multiple ways how the OpenAPI Terraform provider can be installed. Please refer to the [OpenAPI Terraform provider installation document](https://github.com/dikhan/terraform-provider-openapi/blob/master/docs/installing_openapi_provider.md)\nto learn more about it.\n\n### OpenAPI Terraform provider in action\n\nAfter having provisioned your environment with the OpenAPI Terraform provider you can now write Terraform configuration files using resources provided\nby the OpenAPI service. Refer to [Using the OpenAPI Terraform Provider doc](https://github.com/dikhan/terraform-provider-openapi/blob/master/docs/using_openapi_provider.md) for more details.\n\n### Terraform provider documentation\n\nYou can generate the Terraform documentation automatically given an already Terraform compatible OpenAPI document using the The [OpenAPI Terraform Documentation Renderer](https://github.com/dikhan/terraform-provider-openapi/tree/master/pkg/terraformdocsgenerator) \nlibrary. The OpenAPI document is the source of truth for both the OpenAPI Terraform provider as well as the user facing documentation.\n\n## How to publish the provider in the Terraform Registry\n\nThe [Publishing OpenAPI Terraform providers in the Terraform Registry](./docs/publishing_provider.md) document describes how\nservice providers can make use of the OpenAPI Terraform provider library to create their own Terraform provider and register it in \nthe [Terraform Registry](https://registry.terraform.io/).\n\n## References\n\nAdditionally, the following documents provide deep insight regarding OpenAPI and Terraform as well as frequently asked questions:\n\n- [How to](docs/how_to.md) document contains information about how to define a OpenAPI document following good practises that\nmake it work seamlessly with this terraform provider. Additionally, learn more about what is currently supported.\n- [Migrating to Terraform 0.12](./docs/terraform_version_upgrades/upgrading_to_terraform_0.12.md). This document describes\nhow to update configuration created using Terraform v0.11 to v0.12.\n- [FAQ](./docs/faq.md) document answers for the most frequently asked questions.\n\n## Contributing\n\nPlease follow the guidelines from:\n\n - [Contributor Guidelines](.github/CONTRIBUTING.md)\n - [How to set up the local environment?](./docs/local_environment.md)\n\n## References\n\n- [go-swagger](https://github.com/go-swagger/go-swagger): Api terraform provider makes extensive use of this library \nwhich offers a very convenient implementation to serialize and deserialize swagger specifications.\n- [JsonPath](https://github.com/oliveagle/jsonpath): Json path is used in\nthe plugin external configuration file to define values for provider schema\nproperties that are coming from external files.\n\n## Authors\n\n- Daniel I. Khan Ramiro\n \nSee also the list of [contributors](https://github.com/dikhan/terraform-provider-api/graphs/contributors) who participated in this project.\n\n\n[travis-url]: https://travis-ci.org/dikhan/terraform-provider-openapi\n[travis-image]: https://travis-ci.org/dikhan/terraform-provider-openapi.svg?branch=master\n\n[godoc-url]: https://godoc.org/github.com/dikhan/terraform-provider-openapi\n[godoc-badge]: http://img.shields.io/badge/godoc-reference-5272B4.svg?style=flat-square\n\n[goreportcard-url]: https://goreportcard.com/report/github.com/dikhan/terraform-provider-openapi\n[goreportcard-badge]: https://goreportcard.com/badge/github.com/dikhan/terraform-provider-openapi?style=flat-square\n\n[codecov-url]: https://codecov.io/gh/dikhan/terraform-provider-openapi\n[codecov-badge]: https://codecov.io/gh/dikhan/terraform-provider-openapi/branch/master/graph/badge.svg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdikhan%2Fterraform-provider-openapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdikhan%2Fterraform-provider-openapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdikhan%2Fterraform-provider-openapi/lists"}