{
  "ab_internal": {
    "isEnterprise": false,
    "ql": 400,
    "requireVersionIncrementsInPullRequests": true,
    "sl": 300
  },
  "allowedHosts": {
    "hosts": [
      "linkedin.com",
      "api.linkedin.com"
    ]
  },
  "connectorBuildOptions": {
    "baseImage": "docker.io/airbyte/source-declarative-manifest:7.9.2@sha256:94ddf0cfd5acf1179e7830e9b5da7affc7f697c3a1581a55895b16384b39cc8a"
  },
  "connectorTestSuitesOptions": [
    {
      "suite": "liveTests",
      "testConnections": [
        {
          "id": "105e4dcd-6c79-461d-8b2b-9bbf0424d5b7",
          "name": "linkedin-ads_config_multiple_account_ids_dev_null"
        },
        {
          "id": "3d35a758-f9ba-4b40-9ebd-454fe21f389d",
          "name": "linkedin-ads_config_dev_null"
        },
        {
          "id": "42888b02-5f06-4ccd-b86b-2620d7f87b61",
          "name": "linkedin-ads_config_oauth_dev_null"
        },
        {
          "id": "a9ae94ba-24e6-406a-b02d-b100e6ffacda",
          "name": "linkedin-ads_config_token_dev_null"
        }
      ]
    },
    {
      "suite": "unitTests"
    },
    {
      "suite": "acceptanceTests",
      "testSecrets": [
        {
          "fileName": "config_oauth.json",
          "name": "SECRET_SOURCE-LINKEDIN_ADS_OAUTH2_CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "config_multiple_account_ids.json",
          "name": "SECRET_SOURCE-LINKEDIN_ADS_OAUTH2_MULTIPLE_IDS__CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "config.json",
          "name": "SECRET_SOURCE-LINKEDIN_ADS_OLD_CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "config_token.json",
          "name": "SECRET_SOURCE-LINKEDIN_ADS_TOKEN_CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        }
      ]
    }
  ],
  "custom": false,
  "dockerImageTag": "5.6.5-preview.5d7bfae",
  "dockerRepository": "airbyte/source-linkedin-ads",
  "documentationUrl": "https://docs.airbyte.com/integrations/sources/linkedin-ads",
  "externalDocumentationUrls": [
    {
      "title": "Changelog",
      "type": "api_release_history",
      "url": "https://learn.microsoft.com/en-us/linkedin/marketing/integrations/recent-changes?view=li-lms-2024-10"
    }
  ],
  "generated": {
    "git": {
      "commit_author": "Devin AI",
      "commit_author_email": "158243242+devin-ai-integration[bot]@users.noreply.github.com",
      "commit_sha": "c37a43474f78bd0cd5b7275a6795b13b108ca671",
      "commit_timestamp": "2026-03-06T13:00:15+00:00"
    },
    "sbomUrl": "https://connectors.airbyte.com/files/sbom/airbyte/source-linkedin-ads/5.6.5-preview.5d7bfae.spdx.json",
    "source_file_info": {
      "metadata_bucket_name": "prod-airbyte-cloud-connector-metadata-service",
      "metadata_file_path": "metadata/airbyte/source-linkedin-ads/5.6.5-preview.5d7bfae/metadata.yaml",
      "metadata_last_modified": "2026-05-29T07:05:15.388166+00:00",
      "registry_entry_generated_at": "2026-05-29T07:05:15.388166+00:00"
    }
  },
  "githubIssueLabel": "source-linkedin-ads",
  "icon": "linkedin.svg",
  "iconUrl": "https://connectors.airbyte.com/files/metadata/airbyte/source-linkedin-ads/latest/icon.svg",
  "language": "manifest-only",
  "license": "ELv2",
  "maxSecondsBetweenMessages": 86400,
  "name": "LinkedIn Ads",
  "packageInfo": {},
  "public": true,
  "releaseStage": "generally_available",
  "releases": {
    "breakingChanges": {
      "1.0.0": {
        "message": "This upgrade brings changes in primary key to *-analytics streams.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/linkedin-ads-migrations#1.0.0",
        "scopedImpact": [
          {
            "impactedScopes": [
              "ad_campaign_analytics",
              "ad_creative_analytics",
              "ad_impression_device_analytics",
              "ad_member_company_size_analytics",
              "ad_member_country_analytics",
              "ad_member_job_function_analytics",
              "ad_member_job_title_analytics",
              "ad_member_industry_analytics",
              "ad_member_seniority_analytics",
              "ad_member_region_analytics",
              "ad_member_company_analytics"
            ],
            "scopeType": "stream"
          }
        ],
        "upgradeDeadline": "2024-04-30"
      },
      "2.0.0": {
        "message": "This upgrade changes primary key for *-analytics streams from pivotValues[array of strings] to string_of_pivot_values[string] so that it is compatible with more destination types.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/linkedin-ads-migrations#2.0.0",
        "scopedImpact": [
          {
            "impactedScopes": [
              "ad_campaign_analytics",
              "ad_creative_analytics",
              "ad_impression_device_analytics",
              "ad_member_company_size_analytics",
              "ad_member_country_analytics",
              "ad_member_job_function_analytics",
              "ad_member_job_title_analytics",
              "ad_member_industry_analytics",
              "ad_member_seniority_analytics",
              "ad_member_region_analytics",
              "ad_member_company_analytics"
            ],
            "scopeType": "stream"
          }
        ],
        "upgradeDeadline": "2024-05-14"
      },
      "3.0.0": {
        "message": "This release introduces updated format of state for incremental streams and changes primary key for AccountUsers streams from account to account. Users will need to reset affected streams after upgrading. Please see migration guide for more details.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/linkedin-ads-migrations#3.0.0",
        "scopedImpact": [
          {
            "impactedScopes": [
              "account_users",
              "campaigns",
              "creatives",
              "campaign_groups",
              "conversions"
            ],
            "scopeType": "stream"
          }
        ],
        "upgradeDeadline": "2024-08-20"
      },
      "4.0.0": {
        "message": "This release introduces updated format of state for incremental streams and changes primary key for AccountUsers streams from composite key - [account, user] to key - account. Users using 3.X.X of the connector will need to reset affected streams after upgrading. Please see migration guide for more details.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/linkedin-ads-migrations#4.0.0",
        "scopedImpact": [
          {
            "impactedScopes": [
              "account_users",
              "campaigns",
              "creatives",
              "campaign_groups",
              "conversions"
            ],
            "scopeType": "stream"
          }
        ],
        "upgradeDeadline": "2024-08-21"
      },
      "5.0.0": {
        "deadlineAction": "auto_upgrade",
        "message": "We would like to inform you that the Primary Key (PK) for ad_campaign_analytics and Custom Ad Analytics Reports streams has been changed from [string_of_pivot_values, end_date] to [string_of_pivot_values, end_date, sponsoredCampaign] and Primary Key (PK) for account_users stream has been changed from [account] to [account, user]. This update is intended to improve data integrity and ensure optimal performance. Upgrade LinkedIn Ads to apply these changes immediately. Otherwise, LinkedIn Ads will be upgraded automatically on 2024-12-10.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/linkedin-ads-migrations#5.0.0",
        "upgradeDeadline": "2024-12-10"
      }
    },
    "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/linkedin-ads-migrations",
    "rolloutConfiguration": {
      "advanceDelayMinutes": 10,
      "enableProgressiveRollout": false,
      "initialPercentage": 0,
      "maxPercentage": 50
    }
  },
  "remoteRegistries": {
    "pypi": {
      "enabled": false,
      "packageName": "airbyte-source-linkedin-ads"
    }
  },
  "sourceDefinitionId": "137ece28-5434-455c-8f34-69dc3782f451",
  "sourceType": "api",
  "spec": {
    "advanced_auth": {
      "auth_flow_type": "oauth2.0",
      "oauth_config_specification": {
        "complete_oauth_output_specification": {
          "properties": {
            "refresh_token": {
              "path_in_connector_config": [
                "credentials",
                "refresh_token"
              ],
              "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": {
        "account_ids": {
          "default": [],
          "description": "Specify the account IDs to pull data from, separated by a space. Leave this field empty if you want to pull the data from all accounts accessible by the authenticated user. See the <a href=\"https://www.linkedin.com/help/linkedin/answer/a424270/find-linkedin-ads-account-details?lang=en\">LinkedIn docs</a> to locate these IDs.",
          "examples": [
            123456789
          ],
          "items": {
            "type": "integer"
          },
          "title": "Account IDs",
          "type": "array"
        },
        "ad_analytics_reports": {
          "default": [],
          "items": {
            "description": "Config for custom ad Analytics Report",
            "properties": {
              "name": {
                "description": "The name for the custom report.",
                "title": "Report Name",
                "type": "string"
              },
              "pivot_by": {
                "description": "Choose a category to pivot your analytics report around. This selection will organize your data based on the chosen attribute, allowing you to analyze trends and performance from different perspectives.",
                "enum": [
                  "COMPANY",
                  "ACCOUNT",
                  "SHARE",
                  "CAMPAIGN",
                  "CREATIVE",
                  "CAMPAIGN_GROUP",
                  "CONVERSION",
                  "CONVERSATION_NODE",
                  "CONVERSATION_NODE_OPTION_INDEX",
                  "SERVING_LOCATION",
                  "CARD_INDEX",
                  "MEMBER_COMPANY_SIZE",
                  "MEMBER_INDUSTRY",
                  "MEMBER_SENIORITY",
                  "MEMBER_JOB_TITLE",
                  "MEMBER_JOB_FUNCTION",
                  "MEMBER_COUNTRY_V2",
                  "MEMBER_REGION_V2",
                  "MEMBER_COMPANY",
                  "PLACEMENT_NAME",
                  "IMPRESSION_DEVICE_TYPE"
                ],
                "title": "Pivot Category",
                "type": "string"
              },
              "time_granularity": {
                "description": "Choose how to group the data in your report by time. The options are:<br>- 'ALL': A single result summarizing the entire time range.<br>- 'DAILY': Group results by each day.<br>- 'MONTHLY': Group results by each month.<br>- 'YEARLY': Group results by each year.<br>Selecting a time grouping helps you analyze trends and patterns over different time periods.",
                "enum": [
                  "ALL",
                  "DAILY",
                  "MONTHLY",
                  "YEARLY"
                ],
                "title": "Time Granularity",
                "type": "string"
              }
            },
            "required": [
              "name",
              "pivot_by",
              "time_granularity"
            ],
            "title": "Ad Analytics Report Configuration",
            "type": "object"
          },
          "title": "Custom Ad Analytics Reports",
          "type": "array"
        },
        "credentials": {
          "oneOf": [
            {
              "properties": {
                "auth_method": {
                  "const": "oAuth2.0",
                  "type": "string"
                },
                "client_id": {
                  "airbyte_secret": true,
                  "description": "The client ID of your developer application. Refer to our <a href='https://docs.airbyte.com/integrations/sources/linkedin-ads#setup-guide'>documentation</a> for more information.",
                  "title": "Client ID",
                  "type": "string"
                },
                "client_secret": {
                  "airbyte_secret": true,
                  "description": "The client secret of your developer application. Refer to our <a href='https://docs.airbyte.com/integrations/sources/linkedin-ads#setup-guide'>documentation</a> for more information.",
                  "title": "Client Secret",
                  "type": "string"
                },
                "refresh_token": {
                  "airbyte_secret": true,
                  "description": "The key to refresh the expired access token. Refer to our <a href='https://docs.airbyte.com/integrations/sources/linkedin-ads#setup-guide'>documentation</a> for more information.",
                  "title": "Refresh Token",
                  "type": "string"
                }
              },
              "required": [
                "client_id",
                "client_secret",
                "refresh_token"
              ],
              "title": "OAuth2.0",
              "type": "object"
            },
            {
              "properties": {
                "access_token": {
                  "airbyte_secret": true,
                  "description": "The access token generated for your developer application. Refer to our <a href='https://docs.airbyte.com/integrations/sources/linkedin-ads#setup-guide'>documentation</a> for more information.",
                  "title": "Access Token",
                  "type": "string"
                },
                "auth_method": {
                  "const": "access_token",
                  "type": "string"
                }
              },
              "required": [
                "access_token"
              ],
              "title": "Access Token",
              "type": "object"
            }
          ],
          "title": "Authentication",
          "type": "object"
        },
        "lookback_window": {
          "default": 0,
          "description": "How far into the past to look for records. (in days)",
          "minimum": 0,
          "title": "Lookback Window",
          "type": "integer"
        },
        "num_workers": {
          "default": 3,
          "description": "The number of workers to use for the connector. This is used to limit the number of concurrent requests to the LinkedIn Ads API. If not set, the default is 3 workers.",
          "maximum": 50,
          "minimum": 2,
          "title": "Number of Workers",
          "type": "integer"
        },
        "start_date": {
          "description": "UTC date in the format YYYY-MM-DD. Any data before this date will not be replicated.",
          "examples": [
            "2021-05-17"
          ],
          "format": "date",
          "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
          "pattern_descriptor": "YYYY-MM-DD",
          "title": "Start Date",
          "type": "string"
        }
      },
      "required": [
        "start_date"
      ],
      "title": "Linkedin Ads Spec",
      "type": "object"
    },
    "supportsDBT": false,
    "supportsNormalization": false
  },
  "suggestedStreams": {
    "streams": [
      "accounts",
      "account_users",
      "ad_campaign_analytics",
      "ad_creative_analytics",
      "campaigns",
      "campaign_groups",
      "creatives"
    ]
  },
  "supportLevel": "certified",
  "supportsDataActivation": false,
  "supportsFileTransfer": false,
  "tags": [
    "cdk:low-code",
    "language:manifest-only"
  ],
  "tombstone": false
}
