# Terraform Cloud

Terraform Cloud: workspaces, runs, state versions, variables, projects. Exposes **45 actions** covering the API surface an agent needs - read and write.

## What it can do

| Method | What it does |
| --- | --- |
| `terraformcloud_organizations_list` | List organizations - GET /organizations. |
| `terraformcloud_organization_get` | Get one organization - GET /organizations/&#123;name&#125;. |
| `terraformcloud_organization_create` | Create an organization - POST /organizations. |
| `terraformcloud_organization_update` | Update an organization - PATCH /organizations/&#123;name&#125;. |
| `terraformcloud_organization_delete` | Delete an organization - DELETE /organizations/&#123;name&#125;. |
| `terraformcloud_workspaces_list` | List workspaces in an organization - GET /organizations/&#123;org_name&#125;/workspaces. |
| `terraformcloud_workspace_get` | Get one workspace - GET /organizations/&#123;org_name&#125;/workspaces/&#123;workspace_name&#125;. |
| `terraformcloud_workspace_create` | Create a workspace - POST /organizations/&#123;org_name&#125;/workspaces. |
| `terraformcloud_workspace_update` | Update a workspace - PATCH /organizations/&#123;org_name&#125;/workspaces/&#123;workspace_name&#125;. |
| `terraformcloud_workspace_delete` | Delete a workspace - DELETE /organizations/&#123;org_name&#125;/workspaces/&#123;workspace_name&#125;. |
| `terraformcloud_workspace_lock` | Lock a workspace - POST /workspaces/&#123;workspace_id&#125;/actions/lock. |
| `terraformcloud_workspace_unlock` | Unlock a workspace - DELETE /organizations/&#123;org_name&#125;/workspaces/&#123;workspace_name&#125;/actions/lock. |
| `terraformcloud_workspace_force_unlock` | Force unlock a workspace - DELETE /organizations/&#123;org_name&#125;/workspaces/&#123;workspace_name&#125;/actions/force-unlock. |
| `terraformcloud_runs_list` | List runs for a workspace - GET /organizations/&#123;org_name&#125;/workspaces/&#123;workspace_name&#125;/runs. |
| `terraformcloud_run_get` | Get one run by ID - GET /runs/&#123;run_id&#125;. |
| `terraformcloud_run_create` | Create a new run (start plan) - POST /organizations/&#123;org_name&#125;/workspaces/&#123;workspace_name&#125;/runs. |
| `terraformcloud_run_apply` | Apply a run (execute plan) - POST /runs/&#123;run_id&#125;/actions/apply. |
| `terraformcloud_run_discard` | Discard a run - POST /runs/&#123;run_id&#125;/actions/discard. |
| `terraformcloud_run_cancel` | Cancel a run - POST /runs/&#123;run_id&#125;/actions/cancel. |
| `terraformcloud_variables_list` | List variables for a workspace - GET /organizations/&#123;org_name&#125;/workspaces/&#123;workspace_name&#125;/vars. |
| `terraformcloud_variable_get` | Get one variable - GET /organizations/&#123;org_name&#125;/workspaces/&#123;workspace_name&#125;/vars/&#123;variable_id&#125;. |
| `terraformcloud_variable_create` | Create a variable - POST /organizations/&#123;org_name&#125;/workspaces/&#123;workspace_name&#125;/vars. |
| `terraformcloud_variable_update` | Update a variable - PATCH /organizations/&#123;org_name&#125;/workspaces/&#123;workspace_name&#125;/vars/&#123;variable_id&#125;. |
| `terraformcloud_variable_delete` | Delete a variable - DELETE /organizations/&#123;org_name&#125;/workspaces/&#123;workspace_name&#125;/vars/&#123;variable_id&#125;. |
| `terraformcloud_state_versions_list` | List state versions for a workspace - GET /organizations/&#123;org_name&#125;/workspaces/&#123;workspace_name&#125;/state-versions. |
| `terraformcloud_state_version_get` | Get one state version - GET /state-versions/&#123;state_version_id&#125;. |
| `terraformcloud_state_version_current_get` | Get current state version - GET /organizations/&#123;org_name&#125;/workspaces/&#123;workspace_name&#125;/current-state-version. |
| `terraformcloud_config_versions_list` | List configuration versions for a workspace - GET /organizations/&#123;org_name&#125;/workspaces/&#123;workspace_name&#125;/configuration-versions. |
| `terraformcloud_config_version_get` | Get one configuration version - GET /configuration-versions/&#123;config_version_id&#125;. |
| `terraformcloud_teams_list` | List teams in an organization - GET /organizations/&#123;org_name&#125;/teams. |
| `terraformcloud_team_get` | Get one team - GET /organizations/&#123;org_name&#125;/teams/&#123;team_name&#125;. |
| `terraformcloud_team_create` | Create a team - POST /organizations/&#123;org_name&#125;/teams. |
| `terraformcloud_team_update` | Update a team - PATCH /organizations/&#123;org_name&#125;/teams/&#123;team_id&#125;. |
| `terraformcloud_team_delete` | Delete a team - DELETE /organizations/&#123;org_name&#125;/teams/&#123;team_id&#125;. |
| `terraformcloud_projects_list` | List projects in an organization - GET /organizations/&#123;org_name&#125;/projects. |
| `terraformcloud_project_get` | Get one project - GET /projects/&#123;project_id&#125;. |
| `terraformcloud_project_create` | Create a project - POST /organizations/&#123;org_name&#125;/projects. |
| `terraformcloud_project_update` | Update a project - PATCH /projects/&#123;project_id&#125;. |
| `terraformcloud_project_delete` | Delete a project - DELETE /projects/&#123;project_id&#125;. |
| `terraformcloud_policy_sets_list` | List policy sets in an organization - GET /organizations/&#123;org_name&#125;/policy-sets. |
| `terraformcloud_policy_sets_kind_list` | List policy sets by kind (e.g. |
| `terraformcloud_policy_set_get` | Get one policy set - GET /organizations/&#123;org_name&#125;/policy-sets/&#123;policy_set_id&#125;. |
| `terraformcloud_registry_modules_list` | List registry modules in an organization - GET /organizations/&#123;org_name&#125;/registry-modules. |
| `terraformcloud_registry_module_get` | Get one registry module - GET /registry-modules/&#123;namespace&#125;/&#123;name&#125;/&#123;provider&#125;. |
| `terraformcloud_registry_modules_search` | Search registry modules - GET /registry-modules/search. |

## How to get credentials

This connector uses an **API key / token**. Create one in the provider
dashboard, then paste it into FlyMyAI:

- **`TERRAFORM_API_TOKEN`** - HCP Terraform - User Settings - Tokens. (https://app.terraform.io/app/settings/tokens)

## Fields to fill in FlyMyAI

| FlyMyAI field | Where it comes from |
| --- | --- |
| `TERRAFORM_API_TOKEN` | HCP Terraform - User Settings - Tokens. |

## Troubleshooting

- **`401 Unauthorized` / `403 Forbidden`** - the token is wrong, expired, or missing a required scope; regenerate it.
- **`429 Too Many Requests`** - provider rate limit; retry after a short backoff.
- **Unexpected `4xx` on writes** - double-check required fields; the agent confirms before write actions.

## Links

- [Terraform Cloud API documentation](https://developer.hashicorp.com/terraform/cloud-docs/api-docs)
