{
  "ab_internal": {
    "isEnterprise": false,
    "ql": 400,
    "requireVersionIncrementsInPullRequests": true,
    "sl": 300
  },
  "allowedHosts": {
    "hosts": [
      "api.airtable.com",
      "airtable.com"
    ]
  },
  "connectorBuildOptions": {
    "baseImage": "docker.io/airbyte/source-declarative-manifest:7.39.0.post5.dev39879313492@sha256:a45420a851310e75d893c93c73e8a353d610bc214788c39384f7bd776b614d7f"
  },
  "connectorTestSuitesOptions": [
    {
      "suite": "liveTests",
      "testConnections": [
        {
          "id": "40988f9d-286c-4297-b39b-648bf87418a3",
          "name": "airtable_config_dev_null"
        }
      ]
    },
    {
      "suite": "unitTests"
    },
    {
      "suite": "acceptanceTests",
      "testSecrets": [
        {
          "fileName": "config_oauth.json",
          "name": "SECRET_SOURCE-AIRTABLE_OAUTH__CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "config.json",
          "name": "SECRET_SOURCE-AIRTABLE__CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        }
      ]
    }
  ],
  "custom": false,
  "dockerImageTag": "4.6.44-preview.5b074ea",
  "dockerRepository": "airbyte/source-airtable",
  "documentationUrl": "https://docs.airbyte.com/integrations/sources/airtable",
  "externalDocumentationUrls": [
    {
      "title": "Changelog",
      "type": "api_release_history",
      "url": "https://airtable.com/developers/web/api/changelog"
    },
    {
      "title": "Community blog",
      "url": "https://community.airtable.com/development-apis-11"
    },
    {
      "title": "OAuth reference",
      "url": "https://airtable.com/developers/web/api/oauth-reference#authorization-request"
    },
    {
      "title": "API Deprecation Guidelines",
      "type": "api_deprecations",
      "url": "https://support.airtable.com/docs/airtable-api-deprecation-guidelines"
    }
  ],
  "generated": {
    "git": {
      "commit_author": "Devin AI",
      "commit_author_email": "158243242+devin-ai-integration[bot]@users.noreply.github.com",
      "commit_sha": "5b074ea8ac139687dd2d71fb061647aeba7393cf",
      "commit_timestamp": "2026-10-23T00:44:29+00:00"
    },
    "release": {
      "attributed_to": "devin-ai-integration",
      "attributed_to_kind": "bot",
      "merge_commit_sha": "5b074ea8ac139687dd2d71fb061647aeba7393cf",
      "merged_at": "2026-10-23T00:44:29Z",
      "pr_author_association": "CONTRIBUTOR",
      "pr_author_id": 158243242,
      "pr_author_login": "devin-ai-integration",
      "pr_author_type": "Bot",
      "pr_merged_by_login": null,
      "pr_merged_by_type": "Unknown",
      "pr_number": 89693,
      "pr_url": "https://github.com/airbytehq/airbyte/pull/89693",
      "released_at": "2026-10-23T00:44:29Z",
      "source": "publish"
    },
    "sbomUrl": "https://connectors.airbyte.com/files/sbom/airbyte/source-airtable/4.6.44-preview.5b074ea.spdx.json",
    "source_file_info": {
      "metadata_bucket_name": "prod-airbyte-cloud-connector-metadata-service",
      "metadata_file_path": "metadata/airbyte/source-airtable/4.6.44-preview.5b074ea/metadata.yaml",
      "metadata_last_modified": "2026-10-23T01:17:05.365141+00:00",
      "registry_entry_generated_at": "2026-10-23T01:17:05.365141+00:00"
    }
  },
  "githubIssueLabel": "source-airtable",
  "icon": "airtable.svg",
  "iconUrl": "https://connectors.airbyte.com/files/metadata/airbyte/source-airtable/latest/icon.svg",
  "language": "manifest-only",
  "license": "ELv2",
  "maxSecondsBetweenMessages": 5400,
  "name": "Airtable",
  "packageInfo": {},
  "public": true,
  "releaseStage": "generally_available",
  "releases": {
    "breakingChanges": {
      "4.0.0": {
        "message": "This release introduces changes to columns with formula to parse values directly from `array` to `string` or `number` (where it is possible). Users should refresh the source schema and reset affected streams after upgrading to ensure uninterrupted syncs.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/airtable-migrations#4.0.0",
        "upgradeDeadline": "2023-10-23"
      }
    },
    "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/airtable-migrations",
    "rolloutConfiguration": {
      "advanceDelayMinutes": 10,
      "autopilotConfig": {
        "autoPromoteStages": true,
        "autoStart": true,
        "strategy": "fast"
      },
      "defaultRolloutMode": "autopilot",
      "enableProgressiveRollout": false,
      "initialPercentage": 0,
      "maxPercentage": 50
    }
  },
  "remoteRegistries": {
    "pypi": {
      "enabled": false,
      "packageName": "airbyte-source-airtable"
    }
  },
  "resourceRequirements": {
    "jobSpecific": [
      {
        "jobType": "check_connection",
        "resourceRequirements": {
          "memory_limit": "1536Mi",
          "memory_request": "1536Mi"
        }
      },
      {
        "jobType": "discover_schema",
        "resourceRequirements": {
          "memory_limit": "3072Mi",
          "memory_request": "3072Mi"
        }
      }
    ]
  },
  "sourceDefinitionId": "14c6e7ea-97ed-4f5e-a7b5-25e9a80b8212",
  "sourceType": "api",
  "spec": {
    "advanced_auth": {
      "auth_flow_type": "oauth2.0",
      "oauth_config_specification": {
        "complete_oauth_output_specification": {
          "properties": {
            "access_token": {
              "path_in_connector_config": [
                "credentials",
                "access_token"
              ],
              "type": "string"
            },
            "refresh_token": {
              "path_in_connector_config": [
                "credentials",
                "refresh_token"
              ],
              "type": "string"
            },
            "token_expiry_date": {
              "format": "date-time",
              "path_in_connector_config": [
                "credentials",
                "token_expiry_date"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "complete_oauth_server_input_specification": {
          "properties": {
            "client_id": {
              "type": "string"
            },
            "client_secret": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "complete_oauth_server_output_specification": {
          "properties": {
            "client_id": {
              "path_in_connector_config": [
                "credentials",
                "client_id"
              ],
              "type": "string"
            },
            "client_secret": {
              "path_in_connector_config": [
                "credentials",
                "client_secret"
              ],
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "predicate_key": [
        "credentials",
        "auth_method"
      ],
      "predicate_value": "oauth2.0"
    },
    "connectionSpecification": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": true,
      "properties": {
        "add_base_id_to_stream_name": {
          "default": false,
          "description": "When enabled, includes the base ID in stream names to ensure uniqueness. Use this if you have cloned Airtable bases with duplicate table names. Note that enabling this will change stream names and require a full refresh.",
          "order": 1,
          "title": "Add Base ID to Stream Name",
          "type": "boolean"
        },
        "credentials": {
          "oneOf": [
            {
              "properties": {
                "access_token": {
                  "airbyte_secret": true,
                  "description": "Access Token for making authenticated requests.",
                  "type": "string"
                },
                "auth_method": {
                  "const": "oauth2.0",
                  "type": "string"
                },
                "client_id": {
                  "airbyte_secret": true,
                  "description": "The client ID of the Airtable developer application.",
                  "title": "Client ID",
                  "type": "string"
                },
                "client_secret": {
                  "airbyte_secret": true,
                  "description": "The client secret of the Airtable developer application.",
                  "title": "Client Secret",
                  "type": "string"
                },
                "refresh_token": {
                  "airbyte_secret": true,
                  "description": "The key to refresh the expired access token.",
                  "title": "Refresh token",
                  "type": "string"
                },
                "token_expiry_date": {
                  "description": "The date-time when the access token should be refreshed.",
                  "format": "date-time",
                  "type": "string"
                }
              },
              "required": [
                "client_id",
                "client_secret",
                "refresh_token"
              ],
              "title": "OAuth2.0",
              "type": "object"
            },
            {
              "properties": {
                "api_key": {
                  "airbyte_secret": true,
                  "description": "The Personal Access Token for the Airtable account. See the <a href=\"https://airtable.com/developers/web/guides/personal-access-tokens\">Support Guide</a> for more information on how to obtain this token.",
                  "examples": [
                    "key1234567890"
                  ],
                  "title": "Personal Access Token",
                  "type": "string"
                },
                "auth_method": {
                  "const": "api_key",
                  "type": "string"
                }
              },
              "required": [
                "api_key"
              ],
              "title": "Personal Access Token",
              "type": "object"
            }
          ],
          "order": 0,
          "title": "Authentication",
          "type": "object"
        },
        "num_workers": {
          "default": 5,
          "description": "Number of concurrent threads for syncing. Higher values can speed up syncs but may hit rate limits. Airtable limits to 5 requests per second per base.",
          "maximum": 40,
          "minimum": 2,
          "title": "Number of Concurrent Threads",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "supportsDBT": false,
    "supportsNormalization": false
  },
  "supportLevel": "certified",
  "supportsDataActivation": false,
  "supportsFileTransfer": false,
  "tags": [
    "language:manifest-only",
    "cdk:low-code"
  ],
  "tombstone": false
}
