# List the versions of the Terraform and OpenTofu provider

> Page: https://docs.plotwork.dev/api/get-meta-terraform-provider-versions. Index of every page: https://docs.plotwork.dev/llms.txt

Every version of `plotwork-official/plotwork` the Terraform Registry lists, newest first, each with its channel (`beta` for a pre-release) and when it was published, and `latest`, the newest stable version (the newest beta while no stable version exists).

`GET /meta/terraform-provider/versions`

## TL;DR

| Question | Answer |
|---|---|
| What does it do? | List the versions of the Terraform and OpenTofu provider. |
| What does it take? | Nothing. |
| What does it return? | Status 200 with a body of type [`ProviderVersions`](https://docs.plotwork.dev/api/schemas.md#providerversions). |
| What can go wrong? | `429` too many requests. Every failure uses the one error envelope. |

## What it does

Every version of `plotwork-official/plotwork` the Terraform Registry lists, newest first, each with its channel (`beta` for a pre-release) and when it was published, and `latest`, the newest stable version (the newest beta while no stable version exists). The Registry is read at most once every ten minutes; when it cannot be read the answer is the release this build was made with, with `source` `fallback`. Only versions, dates and channels are answered. Public and cacheable for ten minutes.

## Responses

| Status | Meaning | Body |
|---|---|---|
| 200 | The versions, newest first. | [`ProviderVersions`](https://docs.plotwork.dev/api/schemas.md#providerversions) |
| 429 | Too many requests. | [`ErrorResponse`](https://docs.plotwork.dev/api/schemas.md#errorresponse) |

## Response body

A 200 answer has the type [`ProviderVersions`](https://docs.plotwork.dev/api/schemas.md#providerversions).

| Field | Type | Required | Description |
|---|---|---|---|
| `source` | `"registry" \| "fallback"` | yes | `registry` when the list is the Terraform Registry's; `fallback` when the Registry could not be read and the list is the one release this build was made with. |
| `latest` | `string` | yes | The newest stable version, or the newest beta while no stable version exists. at most 64 characters. |
| `items` | `ProviderVersion[]` | yes | Every version the Registry lists, newest first, at most 100. |
| `items[].version` | `string` | yes | The version, as `required_providers` names it. at most 64 characters. |
| `items[].channel` | `"stable" \| "beta"` | yes | `beta` for a pre-release (a version with a suffix such as `-beta.3`), which a version range never picks; `stable` otherwise. |
| `items[].publishedAt` | `string \| null` | yes | When the Registry published it, as an ISO 8601 time, or null when that is not known (the committed fallback). at most 40 characters. |

## See also

| Doc | Why |
|---|---|
| [API reference](https://docs.plotwork.dev/api/reference.md) | Every endpoint, and the error envelope |
| [Schemas](https://docs.plotwork.dev/api/schemas.md) | Every request and response type |
| [Tool reference](https://docs.plotwork.dev/mcp/tools.md) | The operations as callable tools |
