{"id":34222067,"url":"https://github.com/aep-dev/terraform-provider-aep","last_synced_at":"2026-04-04T01:03:10.966Z","repository":{"id":260696653,"uuid":"871709750","full_name":"aep-dev/terraform-provider-aep","owner":"aep-dev","description":"Terraform Provider that configures itself at runtime based on an AEP API","archived":false,"fork":false,"pushed_at":"2025-05-16T21:21:48.000Z","size":39029,"stargazers_count":1,"open_issues_count":10,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-12-19T04:36:21.627Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"dikhan/terraform-provider-openapi","license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aep-dev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"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":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-10-12T18:09:08.000Z","updated_at":"2025-05-16T21:21:51.000Z","dependencies_parsed_at":"2025-02-14T20:22:08.996Z","dependency_job_id":"75e72efb-53b7-4f04-a2b3-b1db7de0c7e4","html_url":"https://github.com/aep-dev/terraform-provider-aep","commit_stats":null,"previous_names":["aep-dev/terraform-provider-aep"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/aep-dev/terraform-provider-aep","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aep-dev%2Fterraform-provider-aep","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aep-dev%2Fterraform-provider-aep/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aep-dev%2Fterraform-provider-aep/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aep-dev%2Fterraform-provider-aep/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aep-dev","download_url":"https://codeload.github.com/aep-dev/terraform-provider-aep/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aep-dev%2Fterraform-provider-aep/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30328251,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T05:25:20.737Z","status":"ssl_error","status_checked_at":"2026-03-10T05:25:17.430Z","response_time":106,"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":[],"created_at":"2025-12-15T23:29:39.976Z","updated_at":"2026-04-04T01:03:10.957Z","avatar_url":"https://github.com/aep-dev.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AEP Terraform Provider\n\nThe AEP Terraform Provider generates a run-time Terraform provider for use with AEP-compliant APIs. This allows API developers who have created AEP-compliant APIs to create or extend a Terraform provider with new resources with near-zero additional development time.\n\nFor more information about the AEP project, visit [aep.dev](https://aep.dev).\n\n## Requirements\n\n- [Terraform](https://developer.hashicorp.com/terraform/downloads) \u003e= 1.0\n- [Go](https://golang.org/doc/install) \u003e= 1.22 (only needed for building from source or library usage)\n\n## Using the Provider\n\n### Installation\n\nAdd the provider to your Terraform configuration:\n\n```hcl\nterraform {\n  required_providers {\n    aep = {\n      source = \"aep-dev/aep\"\n    }\n  }\n}\n```\n\n### Configuration\n\nThe provider reads your AEP-compliant OpenAPI spec at startup and dynamically generates Terraform resources for each API resource it finds.\n\n#### Environment Variables\n\n| Variable | Required | Description |\n|---|---|---|\n| `AEP_OPENAPI` | Yes | URL or file path to your OpenAPI spec (e.g. `http://localhost:8081/openapi.json`) |\n| `AEP_PATH_PREFIX` | No | A path prefix prepended to all API methods. Use this if all your OpenAPI paths share a common prefix (e.g. `/cloud/v2`). |\n\n#### Provider Block\n\n```hcl\nprovider \"aep\" {\n  headers = {\n    \"Authorization\" = \"Bearer your-token-here\"\n    \"X-API-Key\"     = \"your-api-key\"\n  }\n}\n```\n\nThe `headers` attribute sets custom HTTP headers sent with every API request. This is the primary way to configure authentication.\n\n### Resources and Data Sources\n\nThe provider automatically generates its schema from the OpenAPI spec. Run `terraform providers schema -json` to see the available resources and their attributes.\n\nResources are named `aep_\u003cresource\u003e`, and collection data sources are named `aep_\u003cresource\u003es`.\n\n#### Example\n\nGiven an OpenAPI spec that defines a `publishers` resource with a nested `books` resource:\n\n```hcl\nresource \"aep_publisher\" \"example\" {\n  description = \"Example publisher\"\n}\n\nresource \"aep_book\" \"example\" {\n  publisher_id = aep_publisher.example.id\n  isbn         = \"978-0-13-468599-1\"\n  title        = \"The Go Programming Language\"\n}\n```\n\n## Using as a Library\n\nThis provider can also be embedded into your own Terraform provider binary. This is useful if you want to customize the provider name, set a fixed OpenAPI path, or bundle it with additional resources.\n\nSee `examples/main.go` for a complete example. The key steps are:\n\n```go\npackage main\n\nimport (\n    \"github.com/aep-dev/terraform-provider-aep/config\"\n    \"github.com/aep-dev/terraform-provider-aep/provider\"\n)\n\nfunc main() {\n    cfg := config.NewProviderConfigWithOptions(\n        \"http://localhost:8081/openapi.json\",          // openAPIPath\n        \"\",                                            // pathPrefix\n        \"registry.terraform.io/your-org/your-provider\", // registryURL\n        \"yourprovider\",                                // providerPrefix\n    )\n\n    c := client.NewClient(http.DefaultClient)\n    p, err := provider.NewProvider(\u0026cfg, c, \"1.0.0\")\n    // ... serve with providerserver.Serve()\n}\n```\n\nWhen used as a library, resources will be named `yourprovider_\u003cresource\u003e` based on the prefix you choose.\n\n## Developing the Provider\n\n```sh\n# Build\ngo build -v ./...\n\n# Install locally\ngo install -v ./...\n\n# Run tests\ngo test -v -cover -timeout=120s -parallel=10 ./...\n\n# Run acceptance tests\nTF_ACC=1 go test -v -cover -timeout 120m ./...\n```\n\nTo point the Terraform CLI at your local build, create a CLI config file:\n\n```hcl\nprovider_installation {\n  dev_overrides {\n    \"aep-dev/aep\" = \"/your/gopath/bin\"\n  }\n}\n```\n\nThen set `TF_CLI_CONFIG_FILE` to the path of that file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faep-dev%2Fterraform-provider-aep","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faep-dev%2Fterraform-provider-aep","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faep-dev%2Fterraform-provider-aep/lists"}