> ## Documentation Index
> Fetch the complete documentation index at: https://docs.parable.work/llms.txt
> Use this file to discover all available pages before exploring further.

# Contentful

> Sync content entries and assets from Contentful

Sync content entries and assets from Contentful.

<Tabs>
  <Tab title="Overview">
    Connect Parable to Contentful Content Management API for content data access.

    #### Content

    Entries, content types, assets

    #### Space Management

    Spaces, environments, users

    ## Data streams

    This Provider Plugin defines 46 data streams.

    | Stream                           | Description                                              | Sync        |
    | -------------------------------- | -------------------------------------------------------- | ----------- |
    | `spaces`                         | Contentful spaces accessible to the authenticated token  | full        |
    | `environments`                   | Environments within a Contentful space                   | full        |
    | `entries`                        | Content entries within a Contentful environment          | incremental |
    | `assets`                         | Media assets within a Contentful environment             | incremental |
    | `content_types`                  | Content type definitions within a Contentful environment | full        |
    | `api_keys`                       | Contentful api keys                                      | full        |
    | `app_definitions`                | Contentful app definitions                               | full        |
    | `app_installations`              | Contentful app installations                             | full        |
    | `assets_all`                     | Contentful assets all                                    | full        |
    | `bulk_actions`                   | Contentful bulk actions                                  | full        |
    | `cma_assets`                     | Contentful cma assets                                    | full        |
    | `cma_content_types`              | Contentful cma content types                             | full        |
    | `cma_entries`                    | Contentful cma entries                                   | full        |
    | `cma_locales`                    | Contentful cma locales                                   | full        |
    | `cma_tags`                       | Contentful cma tags                                      | full        |
    | `comments`                       | Contentful comments                                      | full        |
    | `content_type_snapshots`         | Contentful content type snapshots                        | full        |
    | `editor_interfaces`              | Contentful editor interfaces                             | full        |
    | `entries_all`                    | Contentful entries all                                   | full        |
    | `entry_snapshots`                | Contentful entry snapshots                               | full        |
    | `environment_aliases`            | Contentful environment aliases                           | full        |
    | `extensions`                     | Contentful extensions                                    | full        |
    | `locales`                        | Contentful locales                                       | full        |
    | `organization_memberships`       | Contentful organization memberships                      | full        |
    | `organization_periodic_usages`   | Contentful organization periodic usages                  | full        |
    | `organization_space_memberships` | Contentful organization space memberships                | full        |
    | `organization_users`             | Contentful organization users                            | full        |
    | `organizations`                  | Contentful organizations                                 | full        |
    | `releases`                       | Contentful releases                                      | full        |
    | `roles`                          | Contentful roles                                         | full        |
    | `scheduled_actions`              | Contentful scheduled actions                             | full        |
    | `space_memberships`              | Contentful space memberships                             | full        |
    | `space_usages`                   | Contentful space usages                                  | full        |
    | `sync_initial`                   | Contentful sync initial                                  | full        |
    | `tags`                           | Contentful tags                                          | full        |
    | `tasks`                          | Contentful tasks                                         | full        |
    | `taxonomy_concept_schemes`       | Contentful taxonomy concept schemes                      | full        |
    | `taxonomy_concepts`              | Contentful taxonomy concepts                             | full        |
    | `team_memberships`               | Contentful team memberships                              | full        |
    | `team_space_memberships`         | Contentful team space memberships                        | full        |
    | `teams`                          | Contentful teams                                         | full        |
    | `ui_extensions`                  | Contentful ui extensions                                 | full        |
    | `usage_periods`                  | Contentful usage periods                                 | full        |
    | `webhook_call_details`           | Contentful webhook call details                          | full        |
    | `webhook_calls`                  | Contentful webhook calls                                 | full        |
    | `webhooks`                       | Contentful webhooks                                      | full        |
  </Tab>

  <Tab title="Setup Guide">
    ### API token

    #### What You'll Need

    | Credential   | What it is                                |
    | ------------ | ----------------------------------------- |
    | **Token**    | CMA personal access token from Contentful |
    | **Space ID** | Your Contentful space identifier          |

    > **Info:** **Setup access in Contentful.** These steps require **Administrator**, or a colleague with equivalent permissions who can create credentials for you.
    >
    > If that is not you, ask your Contentful administrator.

    * **Admin** role in the Contentful space
    * Permission to create API tokens

    #### Step 1: Access Settings

    1. Log in to Contentful
    2. Go to **Settings** → **API keys**
    3. Navigate to **Content Management tokens** tab

    #### Step 2: Generate Personal Access Token

    1. Click **Generate personal token**
    2. Name: `Parable Integration`
    3. Click **Generate**

    > **Warning:** **Copy your personal access token now!**
    >
    > This is the only time it will be displayed. Store it in a secure password manager before closing this page.

    #### Step 3: Note Your Space ID

    Find your Space ID in:

    * **Settings** → **General settings** → **Space ID**
    * Or in the URL: `app.contentful.com/spaces/{SPACE_ID}/...`

    #### Step 4: Enter values in the form

    1. **Token** and **Space ID**: Paste your Content Management API token and space identifier.
    2. Click **Save & test connection**.

    ```bash Test Authentication theme={null}
    curl -H "Authorization: Bearer YOUR_TOKEN" \
      "https://api.contentful.com/spaces"
    ```

    ```bash List Entries theme={null}
    curl -H "Authorization: Bearer YOUR_TOKEN" \
      "https://api.contentful.com/spaces/YOUR_SPACE_ID/environments/master/entries?limit=5"
    ```

    > **Success:** **Success!** If you received a `200 OK` response with valid data, your credentials are configured correctly. You can now configure this Provider in Parable.

    > **Tip:** **Rate Limits:** Contentful enforces rate limits of **CMA: 7 requests/second; CDA: 55 requests/second (default, varies by plan)**.
    >
    > Parable handles rate limiting automatically with exponential backoff, but initial syncs of large datasets may take longer due to these limits.
  </Tab>

  <Tab title="Permissions">
    <AccordionGroup>
      <Accordion id="provider-permission-tap-contentful-api-keys-4b5f44cbd42d" title="API Keys" icon="user-shield" iconType="sharp-duotone-solid">
        Developer identifier: `api_keys`

        API Keys contain the Contentful API keys collection returned by the configured operation.

        * **Enables:** inventory API-key metadata without treating a key record as evidence that its secret is available.
        * **Scope:** Reads the declared collection through `GET /api-keys` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-api-keys-id-bb5523888e46" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `api_keys.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful api key source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful api key record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-app-definitions-c079714310f3" title="App Definitions" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `app_definitions`

        App Definitions contain the Contentful app definitions collection returned by the configured operation.

        * **Enables:** review the Contentful extension or application configuration represented by app definitions.
        * **Scope:** Reads the declared collection through `GET /app-definitions` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-app-definitions-id-ceb58efda146" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `app_definitions.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful app definition source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful app definition record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-app-installations-6a36084b1c54" title="App Installations" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `app_installations`

        App Installations contain the Contentful app installations collection returned by the configured operation.

        * **Enables:** review the Contentful extension or application configuration represented by app installations.
        * **Scope:** Reads the declared collection through `GET /app-installations` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-app-installations-id-6ba49e7124d1" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `app_installations.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful app installation source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful app installation record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-assets-670a850dec30" title="Assets" icon="folder-open" iconType="sharp-duotone-solid">
        Developer identifier: `assets`

        Assets contain media assets within a Contentful environment.

        * **Enables:** catalog media assets and their file metadata within an environment.
        * **Scope:** Reads provider changes through `GET /spaces/{space_id}/environments/{environment_id}/assets` using the declared incremental request boundary. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-assets-synthetic-primary-key-bcbb1ebdaa1f" title="Synthetic Primary Key" icon="calendar-clock" iconType="sharp-duotone-solid">
            Developer identifier: `assets._synthetic_primary_key`

            Synthetic Primary Key identifies synthetic primary key computed by the ingestor from `space_id`, `environment_id`, and sys.id. Not part of the upstream API response; written into each row at bronze ingestion time. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful asset source row before constructing its represented state.
            * **Interpretation:** Parable generates `_synthetic_primary_key` at one value per contentful asset record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-assets-environment-id-830b0ae733b1" title="Environment ID" icon="calendar-clock" iconType="sharp-duotone-solid">
            Developer identifier: `assets.environment_id`

            Environment ID identifies parent sys.id injected by the ingestor from the environments to assets traversal `parentContextFields`. Not part of the upstream API response; written into each row at bronze ingestion time. It is needed to resolve references that repeat the same provider identifier.

            * **Enables:** match asset records to provider records that carry the same environment ID, without assuming that this field alone makes every row unique.
            * **Interpretation:** The provider supplies `environment_id` as a record-level identifier on `ContentfulAsset`. It is not a uniqueness guarantee unless a connector directive says so.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-assets-fields-c1b382d244f7" title="Fields" icon="comment" iconType="sharp-duotone-solid">
            Developer identifier: `assets.fields`

            Fields records asset fields including title, description, and file details. It retains configured attributes whose keys or shape are not fixed by this base schema.

            * **Enables:** interpret fields according to the provider and Workspace configuration that produced each asset record.
            * **Interpretation:** Contentful entry field keys and localized value shapes follow the customer's content model and environment locale configuration; they are not fixed by this base schema.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-assets-fields-description-e0ab9885de97" title="Description" icon="comment" iconType="sharp-duotone-solid">
            Developer identifier: `assets.fields.description`

            Description records localized description of the asset. It keeps the exact text, label, or authored value needed to interpret the record.

            * **Enables:** inspect the exact description returned for each Contentful asset record.
            * **Interpretation:** The value covers only the assets content returned by this Contentful operation; omitted locales and fields are not inferred.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-assets-fields-file-679e72a04503" title="File" icon="globe" iconType="sharp-duotone-solid">
            Developer identifier: `assets.fields.file`

            File records localized file details including URL, content type, and dimensions. It preserves the configuration or technical value needed to explain how the provider object is defined.

            * **Enables:** inspect the exact file when validating the configuration or technical definition of a contentful asset field record.
            * **Interpretation:** The provider supplies `file` as configuration or technical metadata on `ContentfulAssetFields`; consumers must preserve the exact syntax and documented vocabulary.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-assets-fields-title-84d4553eb00e" title="Title" icon="comment" iconType="sharp-duotone-solid">
            Developer identifier: `assets.fields.title`

            Title records localized title of the asset. It keeps the exact text, label, or authored value needed to interpret the record.

            * **Enables:** inspect the exact title returned for each Contentful asset record.
            * **Interpretation:** The value covers only the assets content returned by this Contentful operation; omitted locales and fields are not inferred.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-assets-space-id-53d21e1cb7c1" title="Space ID" icon="calendar-clock" iconType="sharp-duotone-solid">
            Developer identifier: `assets.space_id`

            Space ID identifies parent `space_id` injected by the ingestor from the environments to assets traversal `parentContextFields`. Not part of the upstream API response; written into each row at bronze ingestion time. It is needed to resolve references that repeat the same provider identifier.

            * **Enables:** match asset records to provider records that carry the same space ID, without assuming that this field alone makes every row unique.
            * **Interpretation:** The provider supplies `space_id` as a record-level identifier on `ContentfulAsset`. It is not a uniqueness guarantee unless a connector directive says so.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-assets-sys-ae58d1bc8824" title="Sys" icon="folder-open" iconType="sharp-duotone-solid">
            Developer identifier: `assets.sys`

            Sys records system metadata for the asset. It preserves the containing or referenced object needed to reconstruct the provider relationship.

            * **Enables:** expand the nested sys object into its declared child fields for each contentful asset record.
            * **Interpretation:** The provider returns `sys` as a nested object or reference on `ContentfulAsset`; an absent value does not prove that no related object exists outside the credential's visibility.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-assets-sys-createdat-383b6c94cded" title="Created At" icon="calendar-clock" iconType="sharp-duotone-solid">
            Developer identifier: `assets.sys.createdAt`

            Created At records creation timestamp. It anchors the named event or boundary on the record's timeline.

            * **Enables:** place asset records on a timeline by created at and select the records within an explicit reporting window.
            * **Interpretation:** The provider supplies `createdAt` per contentful asset sys metadata record as a timestamp at the precision returned by the provider; missing values mean the event or boundary was not reported.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-assets-sys-id-8eabac085338" title="ID" icon="folder-open" iconType="sharp-duotone-solid">
            Developer identifier: `assets.sys.id`

            ID identifies asset unique identifier. It is needed to resolve references that repeat the same provider identifier.

            * **Enables:** match asset records to provider records that carry the same ID, without assuming that this field alone makes every row unique.
            * **Interpretation:** The provider supplies `id` as a record-level identifier on `ContentfulAssetSysMetadata`. It is not a uniqueness guarantee unless a connector directive says so.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-assets-sys-publishedat-e10eabe4d619" title="Published At" icon="calendar-clock" iconType="sharp-duotone-solid">
            Developer identifier: `assets.sys.publishedAt`

            Published At records last publish timestamp. It anchors the named event or boundary on the record's timeline.

            * **Enables:** place asset records on a timeline by published at and select the records within an explicit reporting window.
            * **Interpretation:** The provider supplies `publishedAt` per contentful asset sys metadata record as a timestamp at the precision returned by the provider; missing values mean the event or boundary was not reported.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-assets-sys-revision-5bfd43f6e26d" title="Revision" icon="clock-rotate-left" iconType="sharp-duotone-solid">
            Developer identifier: `assets.sys.revision`

            Revision identifies the asset's provider-managed published revision. It correlates a captured asset with the publication state visible to delivery consumers.

            * **Enables:** distinguish newly published asset revisions and relate publication changes to the asset version.
            * **Interpretation:** The provider supplies `revision` as a publication sequence scoped to one asset; missing means no published revision was reported.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-assets-sys-type-31c706ff0e24" title="Type" icon="sliders" iconType="sharp-duotone-solid">
            Developer identifier: `assets.sys.type`

            Type states resource type. It preserves the provider's current classification of this record.

            * **Enables:** separate asset records by the exact provider-reported type value when describing their recorded state.
            * **Interpretation:** The provider supplies `type` per contentful asset sys metadata record using its own state vocabulary; unknown and missing values must remain distinct.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-assets-sys-updatedat-32e3f3c3654e" title="Updated At" icon="clock-rotate-left" iconType="sharp-duotone-solid">
            Developer identifier: `assets.sys.updatedAt`

            Updated At records last update timestamp. It anchors the named event or boundary on the record's timeline.

            * **Enables:** place asset records on a timeline by updated at and select the records within an explicit reporting window.
            * **Interpretation:** The provider supplies `updatedAt` per contentful asset sys metadata record as a timestamp at the precision returned by the provider; missing values mean the event or boundary was not reported.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-assets-sys-version-a06d78ca81bc" title="Version" icon="clock-rotate-left" iconType="sharp-duotone-solid">
            Developer identifier: `assets.sys.version`

            Version identifies the current provider-managed version of the asset, including unpublished changes. It correlates a captured asset with the content change that produced it.

            * **Enables:** detect edits between snapshots of the same asset and distinguish its current version from its published revision.
            * **Interpretation:** The provider supplies `version` as a sequence scoped to one asset, not a measure comparable across different assets.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-assets-all-4a80262b1753" title="Assets All" icon="folder-open" iconType="sharp-duotone-solid">
        Developer identifier: `assets_all`

        Assets All contains the Contentful assets all collection returned by the configured operation.

        * **Enables:** catalog media-asset records and file metadata returned by assets all.
        * **Scope:** Reads the declared collection through `GET /assets-all` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-assets-all-id-fc2c67814120" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `assets_all.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful assets all source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful assets all record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-bulk-actions-eced1aa6665f" title="Bulk Actions" icon="list-check" iconType="sharp-duotone-solid">
        Developer identifier: `bulk_actions`

        Bulk Actions contain the Contentful bulk actions collection returned by the configured operation.

        * **Enables:** track Contentful bulk operations by action type, status, and target entities.
        * **Scope:** Reads the declared collection through `GET /bulk-actions` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-bulk-actions-id-acecd0b4cb97" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `bulk_actions.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful bulk action source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful bulk action record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-cma-assets-aaeca764dbcf" title="Cma Assets" icon="folder-open" iconType="sharp-duotone-solid">
        Developer identifier: `cma_assets`

        Cma Assets contain the Contentful Management API assets collection returned by the configured operation.

        * **Enables:** catalog media-asset records and file metadata returned by cma assets.
        * **Scope:** Reads the declared collection through `GET /cma-assets` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-cma-assets-id-b32e3340b848" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `cma_assets.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful cma asset source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful cma asset record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-cma-content-types-1264a7f66189" title="Cma Content Types" icon="brackets-curly" iconType="sharp-duotone-solid">
        Developer identifier: `cma_content_types`

        Cma Content Types contain the Contentful Management API content types collection returned by the configured operation.

        * **Enables:** interpret entry structure using the cma content types definitions.
        * **Scope:** Reads the declared collection through `GET /cma-content-types` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-cma-content-types-id-e42dcbfcee06" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `cma_content_types.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful cma content type source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful cma content type record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-cma-entries-1d16efdbb85f" title="Cma Entries" icon="folder-open" iconType="sharp-duotone-solid">
        Developer identifier: `cma_entries`

        Cma Entries contain the Contentful Management API entries collection returned by the configured operation.

        * **Enables:** inspect the content-entry field maps and system metadata returned by cma entries.
        * **Scope:** Reads the declared collection through `GET /cma-entries` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-cma-entries-id-d32abe5e53db" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `cma_entries.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful cma entry source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful cma entry record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-cma-locales-bdeafd0dcd74" title="Cma Locales" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `cma_locales`

        Cma Locales contain the Contentful Management API locales collection returned by the configured operation.

        * **Enables:** interpret locale codes, names, and fallback relationships from cma locales.
        * **Scope:** Reads the declared collection through `GET /cma-locales` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-cma-locales-id-a3afda0fc33e" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `cma_locales.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful cma locale source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful cma locale record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-cma-tags-f7389db456ca" title="Cma Tags" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `cma_tags`

        Cma Tags contain the Contentful Management API tags collection returned by the configured operation.

        * **Enables:** categorize Contentful resources using the cma tags records they reference.
        * **Scope:** Reads the declared collection through `GET /cma-tags` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-cma-tags-id-1176af164fb6" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `cma_tags.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful cma tag source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful cma tag record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-comments-83bcde7e4bd3" title="Comments" icon="comments" iconType="sharp-duotone-solid">
        Developer identifier: `comments`

        Comments contain the Contentful comments collection returned by the configured operation.

        * **Enables:** review Contentful comment text with its author and target resource.
        * **Scope:** Reads the declared collection through `GET /comments` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-comments-id-aaf40883f062" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `comments.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful comment source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful comment record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-content-type-snapshots-e004c8874599" title="Content Type Snapshots" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `content_type_snapshots`

        Content Type Snapshots contain the Contentful content type snapshots collection returned by the configured operation.

        * **Enables:** review historical content type snapshots captured by Contentful.
        * **Scope:** Reads the declared collection through `GET /content-type-snapshots` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-content-type-snapshots-id-bce7370db592" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `content_type_snapshots.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful content type snapshot source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful content type snapshot record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-content-types-5f43743a6cbe" title="Content Types" icon="brackets-curly" iconType="sharp-duotone-solid">
        Developer identifier: `content_types`

        Content Types contain content type definitions within a Contentful environment.

        * **Enables:** interpret entry fields against their Contentful content-type definitions.
        * **Scope:** Reads the declared collection through `GET /spaces/{space_id}/environments/{environment_id}/content_types` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-content-types-synthetic-primary-key-03936c207f11" title="Synthetic Primary Key" icon="calendar-clock" iconType="sharp-duotone-solid">
            Developer identifier: `content_types._synthetic_primary_key`

            Synthetic Primary Key identifies synthetic primary key computed by the ingestor from `space_id`, `environment_id`, and sys.id. Not part of the upstream API response; written into each row at bronze ingestion time. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful content type source row before constructing its represented state.
            * **Interpretation:** Parable generates `_synthetic_primary_key` at one value per contentful content type record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-content-types-description-f81392743658" title="Description" icon="comment" iconType="sharp-duotone-solid">
            Developer identifier: `content_types.description`

            Description records description of the content type. It keeps the exact text, label, or authored value needed to interpret the record.

            * **Enables:** inspect the exact description returned for each Contentful content type record.
            * **Interpretation:** The value covers only the content types content returned by this Contentful operation; omitted locales and fields are not inferred.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-content-types-displayfield-854c7424609f" title="Display Field" icon="comment" iconType="sharp-duotone-solid">
            Developer identifier: `content_types.displayField`

            Display Field states ID of the field used as the display title for entries of this type. It preserves the provider's current classification of this record.

            * **Enables:** separate content type records by the exact provider-reported display field value when describing their recorded state.
            * **Interpretation:** The provider supplies `displayField` per contentful content type record using its own state vocabulary; unknown and missing values must remain distinct.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-content-types-environment-id-11967b257443" title="Environment ID" icon="comment" iconType="sharp-duotone-solid">
            Developer identifier: `content_types.environment_id`

            Environment ID identifies parent sys.id injected by the ingestor from the environments to `content_types` traversal `parentContextFields`. Not part of the upstream API response; written into each row at bronze ingestion time. It is needed to resolve references that repeat the same provider identifier.

            * **Enables:** match content type records to provider records that carry the same environment ID, without assuming that this field alone makes every row unique.
            * **Interpretation:** The provider supplies `environment_id` as a record-level identifier on `ContentfulContentType`. It is not a uniqueness guarantee unless a connector directive says so.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-content-types-fields-ca8f63d1f0db" title="Fields" icon="comment" iconType="sharp-duotone-solid">
            Developer identifier: `content_types.fields`

            Fields records field definitions for this content type. It retains configured attributes whose keys or shape are not fixed by this base schema.

            * **Enables:** interpret fields according to the provider and Workspace configuration that produced each content type record.
            * **Interpretation:** Contentful entry field keys and localized value shapes follow the customer's content model and environment locale configuration; they are not fixed by this base schema.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-content-types-fields-disabled-676972da97cd" title="Disabled" icon="circle-check" iconType="sharp-duotone-solid">
            Developer identifier: `content_types.fields.disabled`

            Disabled indicates whether the field is disabled in the UI. It preserves the provider-reported yes-or-no condition for this record.

            * **Enables:** select content type records for which the provider reports disabled as true or false.
            * **Interpretation:** The provider supplies `disabled` as a boolean per contentful field definition record; false and missing are distinct when the field is optional.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-content-types-fields-id-71bec69de0c4" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `content_types.fields.id`

            ID identifies field identifier used in the API. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful field definition source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful field definition record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-content-types-fields-localized-67ea3b918574" title="Localized" icon="circle-check" iconType="sharp-duotone-solid">
            Developer identifier: `content_types.fields.localized`

            Localized indicates whether the field supports localization. It preserves the provider-reported yes-or-no condition for this record.

            * **Enables:** select content type records for which the provider reports localized as true or false.
            * **Interpretation:** The provider supplies `localized` as a boolean per contentful field definition record; false and missing are distinct when the field is optional.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-content-types-fields-name-e4f5f5ae0ad3" title="Name" icon="comment" iconType="sharp-duotone-solid">
            Developer identifier: `content_types.fields.name`

            Name records human-readable field name. It keeps the exact text, label, or authored value needed to interpret the record.

            * **Enables:** inspect the exact name returned for each Contentful content type record.
            * **Interpretation:** The value covers only the content types content returned by this Contentful operation; omitted locales and fields are not inferred.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-content-types-fields-omitted-37ee707b13dc" title="Omitted" icon="route" iconType="sharp-duotone-solid">
            Developer identifier: `content_types.fields.omitted`

            Omitted indicates whether the field is omitted from API responses. It preserves the provider-reported yes-or-no condition for this record.

            * **Enables:** select content type records for which the provider reports omitted as true or false.
            * **Interpretation:** The provider supplies `omitted` as a boolean per contentful field definition record; false and missing are distinct when the field is optional.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-content-types-fields-required-eaf8915ddb9d" title="Required" icon="circle-check" iconType="sharp-duotone-solid">
            Developer identifier: `content_types.fields.required`

            Required indicates whether the field is required. It preserves the provider-reported yes-or-no condition for this record.

            * **Enables:** select content type records for which the provider reports required as true or false.
            * **Interpretation:** The provider supplies `required` as a boolean per contentful field definition record; false and missing are distinct when the field is optional.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-content-types-fields-type-076a1bee48cd" title="Type" icon="globe" iconType="sharp-duotone-solid">
            Developer identifier: `content_types.fields.type`

            Type states field data type (Symbol, Text, Integer, Number, Date, Boolean, Object, Location, Array, Link, RichText). It preserves the provider's current classification of this record.

            * **Enables:** separate content type records by the exact provider-reported type value when describing their recorded state.
            * **Interpretation:** The provider supplies `type` per contentful field definition record using its own state vocabulary; unknown and missing values must remain distinct.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-content-types-name-2eae8358693a" title="Name" icon="comment" iconType="sharp-duotone-solid">
            Developer identifier: `content_types.name`

            Name records human-readable name of the content type. It keeps the exact text, label, or authored value needed to interpret the record.

            * **Enables:** inspect the exact name returned for each Contentful content type record.
            * **Interpretation:** The value covers only the content types content returned by this Contentful operation; omitted locales and fields are not inferred.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-content-types-space-id-ca13a7740fb6" title="Space ID" icon="comment" iconType="sharp-duotone-solid">
            Developer identifier: `content_types.space_id`

            Space ID identifies parent `space_id` injected by the ingestor from the environments to `content_types` traversal `parentContextFields`. Not part of the upstream API response; written into each row at bronze ingestion time. It is needed to resolve references that repeat the same provider identifier.

            * **Enables:** match content type records to provider records that carry the same space ID, without assuming that this field alone makes every row unique.
            * **Interpretation:** The provider supplies `space_id` as a record-level identifier on `ContentfulContentType`. It is not a uniqueness guarantee unless a connector directive says so.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-content-types-sys-312152563694" title="Sys" icon="comment" iconType="sharp-duotone-solid">
            Developer identifier: `content_types.sys`

            Sys states system metadata for the content type. It preserves the provider's current classification of this record.

            * **Enables:** separate content type records by the exact provider-reported sys value when describing their recorded state.
            * **Interpretation:** The provider supplies `sys` per contentful content type record using its own state vocabulary; unknown and missing values must remain distinct.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-content-types-sys-createdat-82d7cc8c3ac1" title="Created At" icon="calendar-clock" iconType="sharp-duotone-solid">
            Developer identifier: `content_types.sys.createdAt`

            Created At records creation timestamp. It anchors the named event or boundary on the record's timeline.

            * **Enables:** place content type records on a timeline by created at and select the records within an explicit reporting window.
            * **Interpretation:** The provider supplies `createdAt` per contentful content type sys metadata record as a timestamp at the precision returned by the provider; missing values mean the event or boundary was not reported.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-content-types-sys-id-34df352cfc93" title="ID" icon="comment" iconType="sharp-duotone-solid">
            Developer identifier: `content_types.sys.id`

            ID identifies content type unique identifier. It is needed to resolve references that repeat the same provider identifier.

            * **Enables:** match content type records to provider records that carry the same ID, without assuming that this field alone makes every row unique.
            * **Interpretation:** The provider supplies `id` as a record-level identifier on `ContentfulContentTypeSysMetadata`. It is not a uniqueness guarantee unless a connector directive says so.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-content-types-sys-type-2acb36155d85" title="Type" icon="sliders" iconType="sharp-duotone-solid">
            Developer identifier: `content_types.sys.type`

            Type states resource type. It preserves the provider's current classification of this record.

            * **Enables:** separate content type records by the exact provider-reported type value when describing their recorded state.
            * **Interpretation:** The provider supplies `type` per contentful content type sys metadata record using its own state vocabulary; unknown and missing values must remain distinct.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-content-types-sys-updatedat-b1ea58f62035" title="Updated At" icon="clock-rotate-left" iconType="sharp-duotone-solid">
            Developer identifier: `content_types.sys.updatedAt`

            Updated At records last update timestamp. It anchors the named event or boundary on the record's timeline.

            * **Enables:** place content type records on a timeline by updated at and select the records within an explicit reporting window.
            * **Interpretation:** The provider supplies `updatedAt` per contentful content type sys metadata record as a timestamp at the precision returned by the provider; missing values mean the event or boundary was not reported.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-content-types-sys-version-c9eedd0760ca" title="Version" icon="clock-rotate-left" iconType="sharp-duotone-solid">
            Developer identifier: `content_types.sys.version`

            Version identifies the current provider-managed version of the content-type definition. It correlates schema snapshots with the definition change that produced them.

            * **Enables:** detect content-model changes and order snapshots of the same content type.
            * **Interpretation:** The provider supplies `version` as a sequence scoped to one content type, not a measure comparable across different definitions.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-editor-interfaces-238e8b767328" title="Editor Interfaces" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `editor_interfaces`

        Editor Interfaces contain the Contentful editor interfaces collection returned by the configured operation.

        * **Enables:** review field-control and editor-layout configuration for content types.
        * **Scope:** Reads the declared collection through `GET /editor-interfaces` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-editor-interfaces-id-c519c987711a" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `editor_interfaces.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful editor interface source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful editor interface record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-entries-748610e00716" title="Entries" icon="folder-open" iconType="sharp-duotone-solid">
        Developer identifier: `entries`

        Entries contain content entries within a Contentful environment.

        * **Enables:** inspect content-entry fields and system metadata returned for an environment.
        * **Scope:** Reads provider changes through `GET /spaces/{space_id}/environments/{environment_id}/entries` using the declared incremental request boundary. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-entries-synthetic-primary-key-26951841b5ff" title="Synthetic Primary Key" icon="calendar-clock" iconType="sharp-duotone-solid">
            Developer identifier: `entries._synthetic_primary_key`

            Synthetic Primary Key identifies synthetic primary key computed by the ingestor from `space_id`, `environment_id`, and sys.id. Not part of the upstream API response; written into each row at bronze ingestion time. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful entry source row before constructing its represented state.
            * **Interpretation:** Parable generates `_synthetic_primary_key` at one value per contentful entry record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-entries-environment-id-780e9df7539e" title="Environment ID" icon="calendar-clock" iconType="sharp-duotone-solid">
            Developer identifier: `entries.environment_id`

            Environment ID identifies parent sys.id injected by the ingestor from the environments to entries traversal `parentContextFields`. Not part of the upstream API response; written into each row at bronze ingestion time. It is needed to resolve references that repeat the same provider identifier.

            * **Enables:** match entry records to provider records that carry the same environment ID, without assuming that this field alone makes every row unique.
            * **Interpretation:** The provider supplies `environment_id` as a record-level identifier on `ContentfulEntry`. It is not a uniqueness guarantee unless a connector directive says so.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-entries-fields-6df7a85762ea" title="Fields" icon="comment" iconType="sharp-duotone-solid">
            Developer identifier: `entries.fields`

            Fields records dynamic content fields defined by the content type. It retains configured attributes whose keys or shape are not fixed by this base schema.

            * **Enables:** interpret fields according to the provider and Workspace configuration that produced each entry record.
            * **Interpretation:** Contentful entry field keys and localized value shapes follow the customer's content model and environment locale configuration; they are not fixed by this base schema.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-entries-space-id-cb3a5c7d5441" title="Space ID" icon="calendar-clock" iconType="sharp-duotone-solid">
            Developer identifier: `entries.space_id`

            Space ID identifies parent `space_id` injected by the ingestor from the environments to entries traversal `parentContextFields`. Not part of the upstream API response; written into each row at bronze ingestion time. It is needed to resolve references that repeat the same provider identifier.

            * **Enables:** match entry records to provider records that carry the same space ID, without assuming that this field alone makes every row unique.
            * **Interpretation:** The provider supplies `space_id` as a record-level identifier on `ContentfulEntry`. It is not a uniqueness guarantee unless a connector directive says so.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-entries-sys-a5f0c2903fc7" title="Sys" icon="cube" iconType="sharp-duotone-solid">
            Developer identifier: `entries.sys`

            Sys records system metadata for the entry. It preserves the containing or referenced object needed to reconstruct the provider relationship.

            * **Enables:** enumerate the nested sys records contained by each contentful entry record.
            * **Interpretation:** The provider returns `sys` as a nested object or reference on `ContentfulEntry`; an absent value does not prove that no related object exists outside the credential's visibility.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-entries-sys-contenttype-a371309d026d" title="Content Type" icon="globe" iconType="sharp-duotone-solid">
            Developer identifier: `entries.sys.contentType`

            Content Type states link to the content type that defines this entry's schema. It preserves the provider's current classification of this record.

            * **Enables:** separate entry records by the exact provider-reported content type value when describing their recorded state.
            * **Interpretation:** The provider supplies `contentType` per contentful entry sys metadata record using its own state vocabulary; unknown and missing values must remain distinct.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-entries-sys-contenttype-sys-ac6286b7e1c2" title="Sys" icon="globe" iconType="sharp-duotone-solid">
            Developer identifier: `entries.sys.contentType.sys`

            Sys records system link metadata. It preserves the containing or referenced object needed to reconstruct the provider relationship.

            * **Enables:** expand the nested sys object into its declared child fields for each contentful content type link record.
            * **Interpretation:** The provider returns `sys` as a nested object or reference on `ContentfulContentTypeLink`; an absent value does not prove that no related object exists outside the credential's visibility.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-entries-sys-contenttype-sys-id-c9e5878a24f1" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `entries.sys.contentType.sys.id`

            ID identifies linked resource identifier. It is needed to resolve references that repeat the same provider identifier.

            * **Enables:** match entry records to provider records that carry the same ID, without assuming that this field alone makes every row unique.
            * **Interpretation:** The provider supplies `id` as a record-level identifier on `ContentfulLinkSysSimple`. It is not a uniqueness guarantee unless a connector directive says so.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-entries-sys-contenttype-sys-linktype-1fe8dda87946" title="Link Type" icon="globe" iconType="sharp-duotone-solid">
            Developer identifier: `entries.sys.contentType.sys.linkType`

            Link Type captures the type of the linked resource. It preserves the provider's current classification of this record.

            * **Enables:** separate entry records by the exact provider-reported link type value when describing their recorded state.
            * **Interpretation:** The provider supplies `linkType` per contentful link sys simple record using its own state vocabulary; unknown and missing values must remain distinct.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-entries-sys-contenttype-sys-type-455d0011ce47" title="Type" icon="globe" iconType="sharp-duotone-solid">
            Developer identifier: `entries.sys.contentType.sys.type`

            Type states always 'Link'. It preserves the provider's current classification of this record.

            * **Enables:** separate entry records by the exact provider-reported type value when describing their recorded state.
            * **Interpretation:** The provider supplies `type` per contentful link sys simple record using its own state vocabulary; unknown and missing values must remain distinct.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-entries-sys-createdat-d160bf28dc85" title="Created At" icon="calendar-clock" iconType="sharp-duotone-solid">
            Developer identifier: `entries.sys.createdAt`

            Created At records creation timestamp. It anchors the named event or boundary on the record's timeline.

            * **Enables:** place entry records on a timeline by created at and select the records within an explicit reporting window.
            * **Interpretation:** The provider supplies `createdAt` per contentful entry sys metadata record as a timestamp at the precision returned by the provider; missing values mean the event or boundary was not reported.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-entries-sys-id-619516bfae3b" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `entries.sys.id`

            ID identifies entry unique identifier. It is needed to resolve references that repeat the same provider identifier.

            * **Enables:** match entry records to provider records that carry the same ID, without assuming that this field alone makes every row unique.
            * **Interpretation:** The provider supplies `id` as a record-level identifier on `ContentfulEntrySysMetadata`. It is not a uniqueness guarantee unless a connector directive says so.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-entries-sys-publishedat-865f7e127093" title="Published At" icon="calendar-clock" iconType="sharp-duotone-solid">
            Developer identifier: `entries.sys.publishedAt`

            Published At records last publish timestamp. It anchors the named event or boundary on the record's timeline.

            * **Enables:** place entry records on a timeline by published at and select the records within an explicit reporting window.
            * **Interpretation:** The provider supplies `publishedAt` per contentful entry sys metadata record as a timestamp at the precision returned by the provider; missing values mean the event or boundary was not reported.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-entries-sys-revision-41661ffffaab" title="Revision" icon="clock-rotate-left" iconType="sharp-duotone-solid">
            Developer identifier: `entries.sys.revision`

            Revision identifies the entry's provider-managed published revision. It correlates a captured entry with the publication state visible to delivery consumers.

            * **Enables:** distinguish newly published entry revisions and relate publication changes to the entry version.
            * **Interpretation:** The provider supplies `revision` as a publication sequence scoped to one entry; missing means no published revision was reported.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-entries-sys-type-d6547c97568c" title="Type" icon="sliders" iconType="sharp-duotone-solid">
            Developer identifier: `entries.sys.type`

            Type states resource type. It preserves the provider's current classification of this record.

            * **Enables:** separate entry records by the exact provider-reported type value when describing their recorded state.
            * **Interpretation:** The provider supplies `type` per contentful entry sys metadata record using its own state vocabulary; unknown and missing values must remain distinct.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-entries-sys-updatedat-e43d7e02f052" title="Updated At" icon="clock-rotate-left" iconType="sharp-duotone-solid">
            Developer identifier: `entries.sys.updatedAt`

            Updated At records last update timestamp. It anchors the named event or boundary on the record's timeline.

            * **Enables:** place entry records on a timeline by updated at and select the records within an explicit reporting window.
            * **Interpretation:** The provider supplies `updatedAt` per contentful entry sys metadata record as a timestamp at the precision returned by the provider; missing values mean the event or boundary was not reported.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-entries-sys-version-4845f07bd68c" title="Version" icon="clock-rotate-left" iconType="sharp-duotone-solid">
            Developer identifier: `entries.sys.version`

            Version identifies the current provider-managed version of the entry, including unpublished changes. It correlates a captured entry with the content change that produced it.

            * **Enables:** detect edits between snapshots of the same entry and distinguish its current version from its published revision.
            * **Interpretation:** The provider supplies `version` as a sequence scoped to one entry, not a measure comparable across different entries.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-entries-all-92281a5ba410" title="Entries All" icon="folder-open" iconType="sharp-duotone-solid">
        Developer identifier: `entries_all`

        Entries All contains the Contentful entries all collection returned by the configured operation.

        * **Enables:** inspect the content-entry field maps and system metadata returned by entries all.
        * **Scope:** Reads the declared collection through `GET /entries-all` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-entries-all-id-6456002c12df" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `entries_all.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful entries all source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful entries all record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-entry-snapshots-e28a54d66b19" title="Entry Snapshots" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `entry_snapshots`

        Entry Snapshots contain the Contentful entry snapshots collection returned by the configured operation.

        * **Enables:** review historical entry snapshots captured by Contentful.
        * **Scope:** Reads the declared collection through `GET /entry-snapshots` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-entry-snapshots-id-6bd5ac0dff2c" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `entry_snapshots.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful entry snapshot source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful entry snapshot record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-environment-aliases-aef0c53c8fe1" title="Environment Aliases" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `environment_aliases`

        Environment Aliases contain the Contentful environment aliases collection returned by the configured operation.

        * **Enables:** resolve an environment alias to the environment it currently targets.
        * **Scope:** Reads the declared collection through `GET /environment-aliases` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-environment-aliases-id-962426e800c9" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `environment_aliases.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful environment alias source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful environment alias record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-environments-d75cdaafb12e" title="Environments" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `environments`

        Environments contain environments within a Contentful space.

        * **Enables:** map Contentful content to the environment that contains it.
        * **Scope:** Reads the declared collection through `GET /spaces/{space_id}/environments` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-environments-synthetic-primary-key-ae3786310be2" title="Synthetic Primary Key" icon="calendar-clock" iconType="sharp-duotone-solid">
            Developer identifier: `environments._synthetic_primary_key`

            Synthetic Primary Key identifies synthetic primary key computed by the ingestor from `space_id` and sys.id. Not part of the upstream API response; written into each row at bronze ingestion time. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful environment source row before constructing its represented state.
            * **Interpretation:** Parable generates `_synthetic_primary_key` at one value per contentful environment record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-environments-name-7876ead33a45" title="Name" icon="comment" iconType="sharp-duotone-solid">
            Developer identifier: `environments.name`

            Name records human-readable name of the environment. It keeps the exact text, label, or authored value needed to interpret the record.

            * **Enables:** inspect the exact name returned for each Contentful environment record.
            * **Interpretation:** The value covers only the environments content returned by this Contentful operation; omitted locales and fields are not inferred.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-environments-space-id-ab7254526dd4" title="Space ID" icon="calendar-clock" iconType="sharp-duotone-solid">
            Developer identifier: `environments.space_id`

            Space ID identifies parent sys.id injected by the ingestor from the spaces to environments traversal `parentContextFields`. Not part of the upstream API response; written into each row at bronze ingestion time. It is needed to resolve references that repeat the same provider identifier.

            * **Enables:** match environment records to provider records that carry the same space ID, without assuming that this field alone makes every row unique.
            * **Interpretation:** The provider supplies `space_id` as a record-level identifier on `ContentfulEnvironment`. It is not a uniqueness guarantee unless a connector directive says so.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-environments-sys-28dc3c490b89" title="Sys" icon="cube" iconType="sharp-duotone-solid">
            Developer identifier: `environments.sys`

            Sys states system metadata for the environment. It preserves the provider's current classification of this record.

            * **Enables:** separate environment records by the exact provider-reported sys value when describing their recorded state.
            * **Interpretation:** The provider supplies `sys` per contentful environment record using its own state vocabulary; unknown and missing values must remain distinct.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-environments-sys-createdat-845ebb750fba" title="Created At" icon="calendar-clock" iconType="sharp-duotone-solid">
            Developer identifier: `environments.sys.createdAt`

            Created At records creation timestamp. It anchors the named event or boundary on the record's timeline.

            * **Enables:** place environment records on a timeline by created at and select the records within an explicit reporting window.
            * **Interpretation:** The provider supplies `createdAt` per contentful environment sys metadata record as a timestamp at the precision returned by the provider; missing values mean the event or boundary was not reported.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-environments-sys-id-c06dc1b4f742" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `environments.sys.id`

            ID identifies environment unique identifier. It is needed to resolve references that repeat the same provider identifier.

            * **Enables:** match environment records to provider records that carry the same ID, without assuming that this field alone makes every row unique.
            * **Interpretation:** The provider supplies `id` as a record-level identifier on `ContentfulEnvironmentSysMetadata`. It is not a uniqueness guarantee unless a connector directive says so.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-environments-sys-status-420de8516d95" title="Status" icon="globe" iconType="sharp-duotone-solid">
            Developer identifier: `environments.sys.status`

            Status states link to the environment status. It preserves the provider's current classification of this record.

            * **Enables:** separate environment records by the exact provider-reported status value when describing their recorded state.
            * **Interpretation:** The provider supplies `status` per contentful environment sys metadata record using its own state vocabulary; unknown and missing values must remain distinct.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-environments-sys-status-sys-6ef092159daf" title="Sys" icon="globe" iconType="sharp-duotone-solid">
            Developer identifier: `environments.sys.status.sys`

            Sys records system link metadata. It preserves the containing or referenced object needed to reconstruct the provider relationship.

            * **Enables:** expand the nested sys object into its declared child fields for each contentful environment status link record.
            * **Interpretation:** The provider returns `sys` as a nested object or reference on `ContentfulEnvironmentStatusLink`; an absent value does not prove that no related object exists outside the credential's visibility.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-environments-sys-status-sys-id-bf0747f01938" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `environments.sys.status.sys.id`

            ID identifies linked resource identifier. It is needed to resolve references that repeat the same provider identifier.

            * **Enables:** match environment records to provider records that carry the same ID, without assuming that this field alone makes every row unique.
            * **Interpretation:** The provider supplies `id` as a record-level identifier on `ContentfulLinkSys`. It is not a uniqueness guarantee unless a connector directive says so.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-environments-sys-status-sys-linktype-d5035d10028a" title="Link Type" icon="globe" iconType="sharp-duotone-solid">
            Developer identifier: `environments.sys.status.sys.linkType`

            Link Type captures the type of the linked resource. It preserves the provider's current classification of this record.

            * **Enables:** separate environment records by the exact provider-reported link type value when describing their recorded state.
            * **Interpretation:** The provider supplies `linkType` per contentful link sy record using its own state vocabulary; unknown and missing values must remain distinct.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-environments-sys-status-sys-type-48792f513bc3" title="Type" icon="globe" iconType="sharp-duotone-solid">
            Developer identifier: `environments.sys.status.sys.type`

            Type states always 'Link' for link references. It preserves the provider's current classification of this record.

            * **Enables:** separate environment records by the exact provider-reported type value when describing their recorded state.
            * **Interpretation:** The provider supplies `type` per contentful link sy record using its own state vocabulary; unknown and missing values must remain distinct.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-environments-sys-type-3c5a092975bc" title="Type" icon="sliders" iconType="sharp-duotone-solid">
            Developer identifier: `environments.sys.type`

            Type states resource type. It preserves the provider's current classification of this record.

            * **Enables:** separate environment records by the exact provider-reported type value when describing their recorded state.
            * **Interpretation:** The provider supplies `type` per contentful environment sys metadata record using its own state vocabulary; unknown and missing values must remain distinct.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-environments-sys-updatedat-2094006a7247" title="Updated At" icon="clock-rotate-left" iconType="sharp-duotone-solid">
            Developer identifier: `environments.sys.updatedAt`

            Updated At records last update timestamp. It anchors the named event or boundary on the record's timeline.

            * **Enables:** place environment records on a timeline by updated at and select the records within an explicit reporting window.
            * **Interpretation:** The provider supplies `updatedAt` per contentful environment sys metadata record as a timestamp at the precision returned by the provider; missing values mean the event or boundary was not reported.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-environments-sys-version-765aa517e61a" title="Version" icon="clock-rotate-left" iconType="sharp-duotone-solid">
            Developer identifier: `environments.sys.version`

            Version identifies the current provider-managed version of the environment metadata. It correlates successive snapshots with the configuration revision they represent.

            * **Enables:** detect intervening environment changes and order snapshots of the same environment.
            * **Interpretation:** The provider supplies `version` as a sequence scoped to one Contentful resource, not a measure comparable across different environments.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-extensions-4fe8dde3685b" title="Extensions" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `extensions`

        Extensions contain the Contentful extensions collection returned by the configured operation.

        * **Enables:** review the Contentful extension or application configuration represented by extensions.
        * **Scope:** Reads the declared collection through `GET /extensions` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-extensions-id-0048f8db0d2b" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `extensions.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful extension source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful extension record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-locales-9d657f7cf3bd" title="Locales" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `locales`

        Locales contain the Contentful locales collection returned by the configured operation.

        * **Enables:** interpret localized entry values using environment locale definitions.
        * **Scope:** Reads the declared collection through `GET /locales` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-locales-id-cdc28b647a03" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `locales.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful locale source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful locale record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-organization-memberships-d6ba3e78b56b" title="Organization Memberships" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `organization_memberships`

        Organization Memberships contain the Contentful organization memberships collection returned by the configured operation.

        * **Enables:** map organization memberships to the organizations, spaces, teams, roles, or accounts named by each membership record.
        * **Scope:** Reads the declared collection through `GET /organization-memberships` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-organization-memberships-id-57347fb76274" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `organization_memberships.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful organization membership source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful organization membership record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-organization-periodic-usages-b363d752a937" title="Organization Periodic Usages" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `organization_periodic_usages`

        Organization Periodic Usages contain the Contentful organization periodic usages collection returned by the configured operation.

        * **Enables:** measure the provider-reported organization periodic usages values within their stated periods and units.
        * **Scope:** Reads the declared collection through `GET /organization-periodic-usages` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-organization-periodic-usages-id-ebf062c79ed7" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `organization_periodic_usages.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful organization periodic usage source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful organization periodic usage record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-organization-space-memberships-565122be0929" title="Organization Space Memberships" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `organization_space_memberships`

        Organization Space Memberships contain the Contentful organization space memberships collection returned by the configured operation.

        * **Enables:** map organization space memberships to the organizations, spaces, teams, roles, or accounts named by each membership record.
        * **Scope:** Reads the declared collection through `GET /organization-space-memberships` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-organization-space-memberships-id-40252583c073" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `organization_space_memberships.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful organization space membership source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful organization space membership record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-organization-users-be8b4e0eca9e" title="Organization Users" icon="people-group" iconType="sharp-duotone-solid">
        Developer identifier: `organization_users`

        Organization Users contain the Contentful organization users collection returned by the configured operation.

        * **Enables:** resolve identities represented by organization users records.
        * **Scope:** Reads the declared collection through `GET /organization-users` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-organization-users-id-9e7c3094c726" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `organization_users.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful organization user source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful organization user record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-organizations-43d164ed74a1" title="Organizations" icon="sitemap" iconType="sharp-duotone-solid">
        Developer identifier: `organizations`

        Organizations contain the Contentful organizations collection returned by the configured operation.

        * **Enables:** catalog Contentful organizations used as membership and content-administration containers.
        * **Scope:** Reads the declared collection through `GET /organizations` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-organizations-id-adbc7cd43d42" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `organizations.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful organization source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful organization record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-releases-2b5de2565d0d" title="Releases" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `releases`

        Releases contain the Contentful releases collection returned by the configured operation.

        * **Enables:** review which content entities are grouped into Contentful release records.
        * **Scope:** Reads the declared collection through `GET /releases` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-releases-id-3297c7226921" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `releases.id`

            ID identifies the release record. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same Contentful release before constructing its represented state.
            * **Interpretation:** The provider supplies `id` once per Contentful release, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-roles-ff0a36752c52" title="Roles" icon="user-shield" iconType="sharp-duotone-solid">
        Developer identifier: `roles`

        Roles contain the Contentful roles collection returned by the configured operation.

        * **Enables:** interpret membership assignments using the permissions encoded in Contentful role records.
        * **Scope:** Reads the declared collection through `GET /roles` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-roles-id-381129bd8177" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `roles.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful role source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful role record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-scheduled-actions-9783ba4f8c22" title="Scheduled Actions" icon="list-check" iconType="sharp-duotone-solid">
        Developer identifier: `scheduled_actions`

        Scheduled Actions contain the Contentful scheduled actions collection returned by the configured operation.

        * **Enables:** review scheduled publishing or unpublishing actions and their target times.
        * **Scope:** Reads the declared collection through `GET /scheduled-actions` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-scheduled-actions-id-5038bc59679f" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `scheduled_actions.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful scheduled action source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful scheduled action record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-space-memberships-25bc16db65a7" title="Space Memberships" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `space_memberships`

        Space Memberships contain the Contentful space memberships collection returned by the configured operation.

        * **Enables:** map space memberships to the organizations, spaces, teams, roles, or accounts named by each membership record.
        * **Scope:** Reads the declared collection through `GET /space-memberships` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-space-memberships-id-d5e1eefa26c7" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `space_memberships.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful space membership source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful space membership record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-space-usages-b992a2ba86ab" title="Space Usages" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `space_usages`

        Space Usages contain the Contentful space usages collection returned by the configured operation.

        * **Enables:** measure the provider-reported space usages values within their stated periods and units.
        * **Scope:** Reads the declared collection through `GET /space-usages` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-space-usages-id-e0d512b43a4e" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `space_usages.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful space usage source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful space usage record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-spaces-f38dd5ca18ae" title="Spaces" icon="sitemap" iconType="sharp-duotone-solid">
        Developer identifier: `spaces`

        Spaces contain Contentful spaces accessible to the authenticated token.

        * **Enables:** enumerate token-visible Contentful spaces before loading environment-scoped content.
        * **Scope:** Reads the declared collection through `GET /spaces` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-spaces-synthetic-primary-key-353f318c69ff" title="Synthetic Primary Key" icon="calendar-clock" iconType="sharp-duotone-solid">
            Developer identifier: `spaces._synthetic_primary_key`

            Synthetic Primary Key identifies synthetic primary key computed by the ingestor from sys.id. Not part of the upstream API response; written into each row at bronze ingestion time. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful space source row before constructing its represented state.
            * **Interpretation:** Parable generates `_synthetic_primary_key` at one value per contentful space record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-spaces-name-f280df53a106" title="Name" icon="comment" iconType="sharp-duotone-solid">
            Developer identifier: `spaces.name`

            Name records human-readable name of the space. It keeps the exact text, label, or authored value needed to interpret the record.

            * **Enables:** inspect the exact name returned for each Contentful space record.
            * **Interpretation:** The value covers only the spaces content returned by this Contentful operation; omitted locales and fields are not inferred.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-spaces-sys-93064ec41f43" title="Sys" icon="cube" iconType="sharp-duotone-solid">
            Developer identifier: `spaces.sys`

            Sys records system metadata for the space. It preserves the containing or referenced object needed to reconstruct the provider relationship.

            * **Enables:** expand the nested sys object into its declared child fields for each contentful space record.
            * **Interpretation:** The provider returns `sys` as a nested object or reference on `ContentfulSpace`; an absent value does not prove that no related object exists outside the credential's visibility.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-spaces-sys-createdat-d804bd5cff24" title="Created At" icon="calendar-clock" iconType="sharp-duotone-solid">
            Developer identifier: `spaces.sys.createdAt`

            Created At records creation timestamp. It anchors the named event or boundary on the record's timeline.

            * **Enables:** place space records on a timeline by created at and select the records within an explicit reporting window.
            * **Interpretation:** The provider supplies `createdAt` per contentful sys metadata record as a timestamp at the precision returned by the provider; missing values mean the event or boundary was not reported.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-spaces-sys-id-a67de3820ae1" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `spaces.sys.id`

            ID identifies resource unique identifier. It is needed to resolve references that repeat the same provider identifier.

            * **Enables:** match space records to provider records that carry the same ID, without assuming that this field alone makes every row unique.
            * **Interpretation:** The provider supplies `id` as a record-level identifier on `ContentfulSysMetadata`. It is not a uniqueness guarantee unless a connector directive says so.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-spaces-sys-type-2204141c5496" title="Type" icon="sliders" iconType="sharp-duotone-solid">
            Developer identifier: `spaces.sys.type`

            Type states resource type. It preserves the provider's current classification of this record.

            * **Enables:** separate space records by the exact provider-reported type value when describing their recorded state.
            * **Interpretation:** The provider supplies `type` per contentful sys metadata record using its own state vocabulary; unknown and missing values must remain distinct.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-spaces-sys-updatedat-ac0ab8500bef" title="Updated At" icon="clock-rotate-left" iconType="sharp-duotone-solid">
            Developer identifier: `spaces.sys.updatedAt`

            Updated At records last update timestamp. It anchors the named event or boundary on the record's timeline.

            * **Enables:** place space records on a timeline by updated at and select the records within an explicit reporting window.
            * **Interpretation:** The provider supplies `updatedAt` per contentful sys metadata record as a timestamp at the precision returned by the provider; missing values mean the event or boundary was not reported.
          </Accordion>

          <Accordion id="provider-permission-field-contentful-spaces-sys-version-f87a9ee24cfe" title="Version" icon="clock-rotate-left" iconType="sharp-duotone-solid">
            Developer identifier: `spaces.sys.version`

            Version identifies the current provider-managed version of the space metadata. It correlates successive snapshots with the configuration revision they represent.

            * **Enables:** detect intervening space changes and order snapshots of the same space.
            * **Interpretation:** The provider supplies `version` as a sequence scoped to one Contentful resource, not a measure comparable across different spaces.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-sync-initial-ddd9c6e33200" title="Sync Initial" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `sync_initial`

        Sync Initial contains the Contentful sync initial collection returned by the configured operation.

        * **Enables:** capture the initial Contentful synchronization collection and continuation token.
        * **Scope:** Reads the declared collection through `GET /sync-initial` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-sync-initial-id-6bac81e238a4" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `sync_initial.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful sync initial source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful sync initial record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-tags-582d4208daa4" title="Tags" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `tags`

        Tags contain the Contentful tags collection returned by the configured operation.

        * **Enables:** categorize Contentful resources using the tags records they reference.
        * **Scope:** Reads the declared collection through `GET /tags` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-tags-id-ca629cbd7f3e" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `tags.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful tag source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful tag record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-tasks-3237ac24c842" title="Tasks" icon="list-check" iconType="sharp-duotone-solid">
        Developer identifier: `tasks`

        Tasks contain the Contentful tasks collection returned by the configured operation.

        * **Enables:** review content-management tasks, assignments, status, and target entity.
        * **Scope:** Reads the declared collection through `GET /tasks` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-tasks-id-d381c482045c" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `tasks.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful task source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful task record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-taxonomy-concept-schemes-fd97fb5e8c58" title="Taxonomy Concept Schemes" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `taxonomy_concept_schemes`

        Taxonomy Concept Schemes contain the Contentful taxonomy concept schemes collection returned by the configured operation.

        * **Enables:** catalog the concept schemes that organize Contentful taxonomy concepts.
        * **Scope:** Reads the declared collection through `GET /taxonomy-concept-schemes` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-taxonomy-concept-schemes-id-bb425ce98caf" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `taxonomy_concept_schemes.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful taxonomy concept scheme source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful taxonomy concept scheme record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-taxonomy-concepts-ccf6537316e1" title="Taxonomy Concepts" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `taxonomy_concepts`

        Taxonomy Concepts contain the Contentful taxonomy concepts collection returned by the configured operation.

        * **Enables:** catalog taxonomy concepts and their parent or related concepts.
        * **Scope:** Reads the declared collection through `GET /taxonomy-concepts` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-taxonomy-concepts-id-e8a4823ccb32" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `taxonomy_concepts.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful taxonomy concept source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful taxonomy concept record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-team-memberships-00503911dc6a" title="Team Memberships" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `team_memberships`

        Team Memberships contain the Contentful team memberships collection returned by the configured operation.

        * **Enables:** map team memberships to the organizations, spaces, teams, roles, or accounts named by each membership record.
        * **Scope:** Reads the declared collection through `GET /team-memberships` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-team-memberships-id-e839879ed72f" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `team_memberships.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful team membership source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful team membership record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-team-space-memberships-e537046e8121" title="Team Space Memberships" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `team_space_memberships`

        Team Space Memberships contain the Contentful team space memberships collection returned by the configured operation.

        * **Enables:** map team space memberships to the organizations, spaces, teams, roles, or accounts named by each membership record.
        * **Scope:** Reads the declared collection through `GET /team-space-memberships` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-team-space-memberships-id-2d97fb2af478" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `team_space_memberships.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful team space membership source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful team space membership record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-teams-c89747d9e517" title="Teams" icon="sitemap" iconType="sharp-duotone-solid">
        Developer identifier: `teams`

        Teams contain the Contentful teams collection returned by the configured operation.

        * **Enables:** catalog Contentful teams used as membership and content-administration containers.
        * **Scope:** Reads the declared collection through `GET /teams` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-teams-id-f5d760b7327b" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `teams.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful team source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful team record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-ui-extensions-b91d8ebc4a6a" title="UI Extensions" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `ui_extensions`

        UI Extensions contain the Contentful UI extensions collection returned by the configured operation.

        * **Enables:** review the Contentful extension or application configuration represented by ui extensions.
        * **Scope:** Reads the declared collection through `GET /ui-extensions` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-ui-extensions-id-2e46347ee933" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `ui_extensions.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful ui extension source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful ui extension record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-usage-periods-eac8874aa5bd" title="Usage Periods" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `usage_periods`

        Usage Periods contain the Contentful usage periods collection returned by the configured operation.

        * **Enables:** interpret usage measurements against their reported billing period boundaries.
        * **Scope:** Reads the declared collection through `GET /usage-periods` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-usage-periods-id-24ccf7a53d5b" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `usage_periods.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful usage period source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful usage period record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-webhook-call-details-ce92ef6265ab" title="Webhook Call Details" icon="webhook" iconType="sharp-duotone-solid">
        Developer identifier: `webhook_call_details`

        Webhook Call Details contain the Contentful webhook call details collection returned by the configured operation.

        * **Enables:** inspect request and response details recorded for a webhook delivery.
        * **Scope:** Reads the declared collection through `GET /webhook-call-details` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-webhook-call-details-id-42ae80174ab1" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `webhook_call_details.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful webhook call detail source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful webhook call detail record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-webhook-calls-f0e69efc2c74" title="Webhook Calls" icon="webhook" iconType="sharp-duotone-solid">
        Developer identifier: `webhook_calls`

        Webhook Calls contain the Contentful webhook calls collection returned by the configured operation.

        * **Enables:** track webhook delivery attempts by status and timestamp.
        * **Scope:** Reads the declared collection through `GET /webhook-calls` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-webhook-calls-id-1d0d3dad60e8" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `webhook_calls.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful webhook call source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful webhook call record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>

      <Accordion id="provider-permission-tap-contentful-webhooks-979ea063c3a9" title="Webhooks" icon="box-open" iconType="sharp-duotone-solid">
        Developer identifier: `webhooks`

        Webhooks contain the Contentful webhooks collection returned by the configured operation.

        * **Enables:** review webhook targets, event filters, headers, and enabled state.
        * **Scope:** Reads the declared collection through `GET /webhooks` as a full snapshot. Results contain only records the configured Contentful token can retrieve; inaccessible spaces, environments, and content are absent.

        <AccordionGroup>
          <Accordion id="provider-permission-field-contentful-webhooks-id-3f796c4c5a07" title="ID" icon="badge-check" iconType="sharp-duotone-solid">
            Developer identifier: `webhooks.id`

            ID identifies record identifier. It supplies the declared record identity used when repeated ingestions represent the same source row.

            * **Enables:** recognize repeated ingestions of the same contentful webhook source row before constructing its represented state.
            * **Interpretation:** The provider supplies `id` at one value per contentful webhook record, and `x-transformDedupKey` explicitly marks it as the record key.
          </Accordion>
        </AccordionGroup>
      </Accordion>
    </AccordionGroup>
  </Tab>

  <Tab title="Troubleshooting">
    | Error                | Meaning                 | Solution                |
    | -------------------- | ----------------------- | ----------------------- |
    | `AccessTokenInvalid` | Invalid token           | Verify token is correct |
    | `NotFound`           | Wrong space/environment | Check Space ID          |
    | `RateLimitExceeded`  | Too many requests       | Implement backoff       |

    **[Contentful API](https://www.contentful.com/developers/docs/references/content-management-api/)** — Official API documentation
  </Tab>
</Tabs>
