{
  "ab_internal": {
    "isEnterprise": false,
    "ql": 400,
    "requireVersionIncrementsInPullRequests": true,
    "sl": 300
  },
  "allowedHosts": {
    "hosts": [
      "sandbox-ads.tiktok.com",
      "business-api.tiktok.com"
    ]
  },
  "connectorBuildOptions": {
    "baseImage": "docker.io/airbyte/source-declarative-manifest:7.14.0@sha256:5b95dd9e71defeece4a1efb27688b15e482f18c82c745498611846466b72403e"
  },
  "connectorTestSuitesOptions": [
    {
      "suite": "liveTests",
      "testConnections": [
        {
          "id": "2a53fa01-351c-45af-84d8-a9f200a0c988",
          "name": "tiktok-marketing_prod_config_with_lifetime_granularity_dev_null"
        },
        {
          "id": "35e62f0f-903a-4fcd-afc6-98259a4f2fea",
          "name": "tiktok-marketing_prod_config_with_day_granularity_dev_null"
        },
        {
          "id": "36e6778b-a04d-4356-a670-e41123fe9596",
          "name": "tiktok-marketing_sandbox_config_dev_null"
        },
        {
          "id": "4da9b9c1-10bd-46c1-915b-bb3d1651153b",
          "name": "tiktok-marketing_config_dev_null"
        },
        {
          "id": "59935970-bbee-4122-88c9-219e97dae272",
          "name": "tiktok-marketing_new_config_prod_dev_null"
        },
        {
          "id": "5b364ce8-b98d-4ccf-9a43-56ebd53d481a",
          "name": "tiktok-marketing_prod_config_dev_null"
        },
        {
          "id": "60c12fbb-bc41-4df1-9b33-9a5455312b0e",
          "name": "tiktok-marketing_config_oauth_dev_null"
        },
        {
          "id": "9aab8bf6-b4cd-4bad-b319-ed39bcddfe2a",
          "name": "tiktok-marketing_new_config_sandbox_dev_null"
        },
        {
          "id": "bb8311bf-6def-4119-bf32-38c001a1e549",
          "name": "tiktok-marketing_prod_config_day_dev_null"
        }
      ]
    },
    {
      "suite": "unitTests",
      "testSecrets": [
        {
          "fileName": "sandbox_config.json",
          "name": "SECRET_SOURCE-TIKTOK-MARKETING_SANDBOX_CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "prod_config.json",
          "name": "SECRET_SOURCE-TIKTOK-MARKETING_PROD_CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "config.json",
          "name": "SECRET_SOURCE-TIKTOK-MARKETING_CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        }
      ]
    },
    {
      "suite": "acceptanceTests",
      "testSecrets": [
        {
          "fileName": "config.json",
          "name": "SECRET_SOURCE-TIKTOK-MARKETING_CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "new_config_sandbox.json",
          "name": "SECRET_SOURCE-TIKTOK-MARKETING_NEW_CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "new_config_prod.json",
          "name": "SECRET_SOURCE-TIKTOK-MARKETING_NEW_PROD_CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "config_oauth.json",
          "name": "SECRET_SOURCE-TIKTOK-MARKETING_OAUTH_CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "prod_config.json",
          "name": "SECRET_SOURCE-TIKTOK-MARKETING_PROD_CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "prod_config_with_day_granularity.json",
          "name": "SECRET_SOURCE-TIKTOK-MARKETING_PROD_CREDS_WITH_DAY_GRANULARITY",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "prod_config_with_lifetime_granularity.json",
          "name": "SECRET_SOURCE-TIKTOK-MARKETING_PROD_CREDS_WITH_LIFETIME_GRANULARITY",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "prod_config_day.json",
          "name": "SECRET_SOURCE-TIKTOK-MARKETING_PROD_DAY_CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "sandbox_config.json",
          "name": "SECRET_SOURCE-TIKTOK-MARKETING_SANDBOX_CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        }
      ]
    }
  ],
  "custom": false,
  "dockerImageTag": "5.0.6-preview.af8a636",
  "dockerRepository": "airbyte/source-tiktok-marketing",
  "documentationUrl": "https://docs.airbyte.com/integrations/sources/tiktok-marketing",
  "externalDocumentationUrls": [
    {
      "title": "Versioning docs",
      "type": "api_reference",
      "url": "https://business-api.tiktok.com/portal/docs?id=1740029169927169"
    },
    {
      "title": "Changelog",
      "type": "api_release_history",
      "url": "https://business-api.tiktok.com/portal/docs?id=1740029165513730"
    },
    {
      "title": "TikTok Business API Documentation",
      "type": "api_release_history",
      "url": "https://business-api.tiktok.com/portal/docs?id=1740302848670722"
    }
  ],
  "generated": {
    "git": {
      "commit_author": "Devin AI",
      "commit_author_email": "158243242+devin-ai-integration[bot]@users.noreply.github.com",
      "commit_sha": "03ab8f90007f757394caf3883530526cb157f1bf",
      "commit_timestamp": "2026-04-09T14:06:02+00:00"
    },
    "sbomUrl": "https://connectors.airbyte.com/files/sbom/airbyte/source-tiktok-marketing/5.0.6-preview.af8a636.spdx.json",
    "source_file_info": {
      "metadata_bucket_name": "prod-airbyte-cloud-connector-metadata-service",
      "metadata_file_path": "metadata/airbyte/source-tiktok-marketing/5.0.6-preview.af8a636/metadata.yaml",
      "metadata_last_modified": "2026-04-09T15:26:13.629788+00:00",
      "registry_entry_generated_at": "2026-04-09T15:26:13.629788+00:00"
    }
  },
  "githubIssueLabel": "source-tiktok-marketing",
  "icon": "tiktok.svg",
  "iconUrl": "https://connectors.airbyte.com/files/metadata/airbyte/source-tiktok-marketing/latest/icon.svg",
  "language": "manifest-only",
  "license": "ELv2",
  "maxSecondsBetweenMessages": 86400,
  "name": "TikTok Marketing",
  "packageInfo": {},
  "public": true,
  "releaseStage": "generally_available",
  "releases": {
    "breakingChanges": {
      "4.0.0": {
        "message": "The source TikTok Marketing connector is being migrated from the Python CDK to our declarative low-code CDK. Due to changes in the handling of state format for incremental substreams, this migration constitutes a breaking change for the following streams - ad_groups, ads, campaigns, creative_assets_images, creative_assets_videos, *_reports_daily, *_reports_hourly, *_reports_by_country_daily, *_reports_by_platform_daily. Also the schema for advertiser_ids stream was changed to use string type of advertiser_id field as API docs declares it. Users will need to reset source configuration, refresh the source schema and reset the impacted streams after upgrading. For more information, see our migration documentation for source TikTok Marketing.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/tiktok-marketing-migrations#4.0.0",
        "scopedImpact": [
          {
            "impactedScopes": [
              "advertiser_ids",
              "ad_group_audience_reports_by_country_daily",
              "ad_group_audience_reports_by_platform_daily",
              "ad_group_audience_reports_daily",
              "ad_groups",
              "ad_groups_reports_daily",
              "ad_groups_reports_hourly",
              "ads",
              "ads_audience_reports_by_country_daily",
              "ads_audience_reports_by_platform_daily",
              "ads_audience_reports_by_province_daily",
              "ads_audience_reports_daily",
              "ads_reports_daily",
              "ads_reports_hourly",
              "ads_reports_by_country_daily",
              "ads_reports_by_country_hourly",
              "advertisers_audience_reports_by_country_daily",
              "advertisers_audience_reports_by_platform_daily",
              "advertisers_audience_reports_daily",
              "advertisers_reports_daily",
              "advertisers_reports_hourly",
              "campaigns",
              "campaigns_audience_reports_by_country_daily",
              "campaigns_audience_reports_by_platform_daily",
              "campaigns_audience_reports_daily",
              "campaigns_reports_daily",
              "campaigns_reports_hourly",
              "creative_assets_images",
              "creative_assets_videos"
            ],
            "scopeType": "stream"
          }
        ],
        "upgradeDeadline": "2024-07-15"
      },
      "5.0.0": {
        "message": "The `currency` field in the `pixels` stream's `events` array has been corrected from `boolean` to `string` type. Users syncing the `pixels` stream will need to refresh the source schema and reset the stream after upgrading. For more information, see our migration documentation for source TikTok Marketing.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/tiktok-marketing-migrations#5.0.0",
        "scopedImpact": [
          {
            "impactedScopes": [
              "pixels"
            ],
            "scopeType": "stream"
          }
        ],
        "upgradeDeadline": "2026-03-03"
      }
    },
    "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/tiktok-marketing-migrations",
    "rolloutConfiguration": {
      "advanceDelayMinutes": 10,
      "enableProgressiveRollout": false,
      "initialPercentage": 0,
      "maxPercentage": 50
    }
  },
  "remoteRegistries": {
    "pypi": {
      "enabled": false,
      "packageName": "airbyte-source-tiktok-marketing"
    }
  },
  "sourceDefinitionId": "4bfac00d-ce15-44ff-95b9-9e3c3e8fbd35",
  "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"
              ],
              "title": "Access Token",
              "type": "string"
            }
          },
          "required": [
            "access_token"
          ],
          "title": "CompleteOauthOutputSpecification",
          "type": "object"
        },
        "complete_oauth_server_input_specification": {
          "properties": {
            "app_id": {
              "title": "App Id",
              "type": "string"
            },
            "secret": {
              "title": "Secret",
              "type": "string"
            }
          },
          "required": [
            "app_id",
            "secret"
          ],
          "title": "CompleteOauthServerInputSpecification",
          "type": "object"
        },
        "complete_oauth_server_output_specification": {
          "properties": {
            "app_id": {
              "path_in_connector_config": [
                "credentials",
                "app_id"
              ],
              "title": "App Id",
              "type": "string"
            },
            "secret": {
              "path_in_connector_config": [
                "credentials",
                "secret"
              ],
              "title": "Secret",
              "type": "string"
            }
          },
          "required": [
            "app_id",
            "secret"
          ],
          "title": "CompleteOauthServerOutputSpecification",
          "type": "object"
        }
      },
      "predicate_key": [
        "credentials",
        "auth_type"
      ],
      "predicate_value": "oauth2.0"
    },
    "connectionSpecification": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": true,
      "properties": {
        "attribution_window": {
          "default": 3,
          "description": "The attribution window in days.",
          "maximum": 364,
          "minimum": 0,
          "order": 3,
          "title": "Attribution Window",
          "type": "integer"
        },
        "credentials": {
          "default": {},
          "description": "Authentication method",
          "oneOf": [
            {
              "properties": {
                "access_token": {
                  "airbyte_secret": true,
                  "description": "Long-term Authorized Access Token.",
                  "title": "Access Token",
                  "type": "string"
                },
                "advertiser_id": {
                  "description": "The Advertiser ID to filter reports and streams. Let this empty to retrieve all.",
                  "title": "Advertiser ID",
                  "type": "string"
                },
                "app_id": {
                  "airbyte_secret": true,
                  "description": "The Developer Application App ID.",
                  "title": "App ID",
                  "type": "string"
                },
                "auth_type": {
                  "const": "oauth2.0",
                  "order": 0,
                  "title": "Auth Type",
                  "type": "string"
                },
                "secret": {
                  "airbyte_secret": true,
                  "description": "The Developer Application Secret.",
                  "title": "Secret",
                  "type": "string"
                }
              },
              "required": [
                "app_id",
                "secret",
                "access_token"
              ],
              "title": "OAuth2.0",
              "type": "object"
            },
            {
              "properties": {
                "access_token": {
                  "airbyte_secret": true,
                  "description": "The long-term authorized access token.",
                  "title": "Access Token",
                  "type": "string"
                },
                "advertiser_id": {
                  "description": "The Advertiser ID which generated for the developer's Sandbox application.",
                  "title": "Advertiser ID",
                  "type": "string"
                },
                "auth_type": {
                  "const": "sandbox_access_token",
                  "order": 0,
                  "title": "Auth Type",
                  "type": "string"
                }
              },
              "required": [
                "advertiser_id",
                "access_token"
              ],
              "title": "Sandbox Access Token",
              "type": "object"
            }
          ],
          "order": 0,
          "title": "Authentication Method",
          "type": "object"
        },
        "end_date": {
          "description": "The date until which you'd like to replicate data for all incremental streams, in the format YYYY-MM-DD. All data generated between start_date and this date will be replicated. Not setting this option will result in always syncing the data till the current date.",
          "format": "date",
          "order": 2,
          "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
          "title": "End Date",
          "type": "string"
        },
        "include_deleted": {
          "default": false,
          "description": "Set to active if you want to include deleted data in report based streams and Ads, Ad Groups and Campaign streams.",
          "order": 4,
          "title": "Include Deleted Data in Reports and Ads, Ad Groups and Campaign streams.",
          "type": "boolean"
        },
        "start_date": {
          "default": "2016-09-01",
          "description": "The Start Date in format: YYYY-MM-DD. Any data before this date will not be replicated. If this parameter is not set, all data will be replicated.",
          "format": "date",
          "order": 1,
          "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
          "title": "Replication Start Date",
          "type": "string"
        }
      },
      "title": "TikTok Marketing Source Spec",
      "type": "object"
    },
    "documentationUrl": "https://docs.airbyte.com/integrations/sources/tiktok-marketing",
    "supportsDBT": false,
    "supportsNormalization": false
  },
  "suggestedStreams": {
    "streams": [
      "ads_reports_daily",
      "ads",
      "campaigns",
      "campaigns_reports_daily",
      "ad_groups",
      "ad_groups_reports_daily",
      "advertisers_reports_daily"
    ]
  },
  "supportLevel": "certified",
  "supportsDataActivation": false,
  "supportsFileTransfer": false,
  "tags": [
    "cdk:low-code",
    "language:manifest-only"
  ],
  "tombstone": false
}
