# Contentful

Manage Contentful CMS: entries, assets, content types, locales, environments. Exposes **43 actions** covering the full API surface
the agent needs - read and write.

## What it can do

| Method | What it does |
| --- | --- |
| `contentful_me` | Get authenticated user info - GET /users/me. |
| `contentful_spaces_list` | List all spaces - GET /spaces. |
| `contentful_space_get` | Get one space by ID - GET /spaces/&#123;space_id&#125;. |
| `contentful_environments_list` | List environments in a space - GET /spaces/&#123;space_id&#125;/environments. |
| `contentful_environment_get` | Get one environment - GET /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;. |
| `contentful_environment_create` | Create an environment - PUT /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;. |
| `contentful_environment_delete` | Delete an environment - DELETE /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;?version=&#123;version&#125;. |
| `contentful_content_types_list` | List content types in an environment - GET /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/content_types. |
| `contentful_content_type_get` | Get one content type - GET /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/content_types/&#123;content_type_id&#125;. |
| `contentful_content_type_create` | Create a content type - PUT /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/content_types/&#123;content_type_id&#125;. |
| `contentful_content_type_update` | Update a content type - PATCH /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/content_types/&#123;content_type_id&#125;. |
| `contentful_content_type_publish` | Publish a content type - PUT /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/content_types/&#123;content_type_id&#125;/published. |
| `contentful_content_type_unpublish` | Unpublish a content type - DELETE /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/content_types/&#123;content_type_id&#125;/published. |
| `contentful_content_type_delete` | Delete a content type - DELETE /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/content_types/&#123;content_type_id&#125;?version=&#123;version&#125;. |
| `contentful_entries_list` | List entries - GET /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/entries. |
| `contentful_entry_get` | Get one entry - GET /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/entries/&#123;entry_id&#125;. |
| `contentful_entry_create` | Create an entry - POST /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/entries. |
| `contentful_entry_update` | Update an entry - PATCH /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/entries/&#123;entry_id&#125;. |
| `contentful_entry_publish` | Publish an entry - PUT /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/entries/&#123;entry_id&#125;/published. |
| `contentful_entry_unpublish` | Unpublish an entry - DELETE /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/entries/&#123;entry_id&#125;/published. |
| `contentful_entry_delete` | Delete an entry - DELETE /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/entries/&#123;entry_id&#125;?version=&#123;version&#125;. |
| `contentful_assets_list` | List assets - GET /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/assets. |
| `contentful_asset_get` | Get one asset - GET /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/assets/&#123;asset_id&#125;. |
| `contentful_asset_create` | Create an asset - POST /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/assets. |
| `contentful_asset_process` | Process an asset file - PUT /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/assets/&#123;asset_id&#125;/files/&#123;locale&#125;/process. |
| `contentful_asset_publish` | Publish an asset - PUT /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/assets/&#123;asset_id&#125;/published. |
| `contentful_asset_unpublish` | Unpublish an asset - DELETE /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/assets/&#123;asset_id&#125;/published. |
| `contentful_asset_delete` | Delete an asset - DELETE /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/assets/&#123;asset_id&#125;?version=&#123;version&#125;. |
| `contentful_locales_list` | List locales in an environment - GET /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/locales. |
| `contentful_locale_get` | Get one locale - GET /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/locales/&#123;locale_code&#125;. |
| `contentful_locale_create` | Create a locale - POST /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/locales. |
| `contentful_locale_update` | Update a locale - PATCH /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/locales/&#123;locale_code&#125;. |
| `contentful_locale_delete` | Delete a locale - DELETE /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/locales/&#123;locale_code&#125;?version=&#123;version&#125;. |
| `contentful_webhooks_list` | List webhooks in a space - GET /spaces/&#123;space_id&#125;/webhook_definitions. |
| `contentful_webhook_get` | Get one webhook - GET /spaces/&#123;space_id&#125;/webhook_definitions/&#123;webhook_id&#125;. |
| `contentful_webhook_create` | Create a webhook - POST /spaces/&#123;space_id&#125;/webhook_definitions. |
| `contentful_webhook_update` | Update a webhook - PATCH /spaces/&#123;space_id&#125;/webhook_definitions/&#123;webhook_id&#125;. |
| `contentful_webhook_delete` | Delete a webhook - DELETE /spaces/&#123;space_id&#125;/webhook_definitions/&#123;webhook_id&#125;?version=&#123;version&#125;. |
| `contentful_roles_list` | List roles in a space - GET /spaces/&#123;space_id&#125;/roles. |
| `contentful_role_get` | Get one role - GET /spaces/&#123;space_id&#125;/roles/&#123;role_id&#125;. |
| `contentful_api_keys_list` | List API keys in a space - GET /spaces/&#123;space_id&#125;/api_keys. |
| `contentful_api_key_get` | Get one API key - GET /spaces/&#123;space_id&#125;/api_keys/&#123;api_key_id&#125;. |
| `contentful_snapshots_list` | List snapshots (version history) - GET /spaces/&#123;space_id&#125;/environments/&#123;environment_id&#125;/snapshots. |

## How to get credentials

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

- **`CONTENTFUL_CMA_TOKEN`** - Content management API token. (https://app.contentful.com/account/profile/cma_tokens)
- **`CONTENTFUL_SPACE_ID`** - Contentful - Settings - General settings - Space ID. (https://app.contentful.com/)
- **`CONTENTFUL_ENVIRONMENT`** *(optional)* - Environment id, default 'master'.

## Fields to fill in FlyMyAI

| FlyMyAI field | Where it comes from |
| --- | --- |
| `CONTENTFUL_CMA_TOKEN` | Content management API token. |
| `CONTENTFUL_SPACE_ID` | Contentful - Settings - General settings - Space ID. |
| `CONTENTFUL_ENVIRONMENT` | Environment id, default 'master'. |

## Troubleshooting

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

## Links

- [Contentful API documentation](https://www.contentful.com/developers/docs/references/content-management-api/)
