diff --git a/airbyte-integrations/connectors/source-facebook-marketing/Dockerfile b/airbyte-integrations/connectors/source-facebook-marketing/Dockerfile index a307f733811d..c545db106890 100644 --- a/airbyte-integrations/connectors/source-facebook-marketing/Dockerfile +++ b/airbyte-integrations/connectors/source-facebook-marketing/Dockerfile @@ -13,5 +13,5 @@ ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py" ENTRYPOINT ["python", "/airbyte/integration_code/main.py"] -LABEL io.airbyte.version=1.1.1 +LABEL io.airbyte.version=1.1.2 LABEL io.airbyte.name=airbyte/source-facebook-marketing diff --git a/airbyte-integrations/connectors/source-facebook-marketing/integration_tests/spec.json b/airbyte-integrations/connectors/source-facebook-marketing/integration_tests/spec.json index 0324ab907136..eb6296d944e2 100644 --- a/airbyte-integrations/connectors/source-facebook-marketing/integration_tests/spec.json +++ b/airbyte-integrations/connectors/source-facebook-marketing/integration_tests/spec.json @@ -1,411 +1,456 @@ { - "documentationUrl": "https://docs.airbyte.com/integrations/sources/facebook-marketing", - "changelogUrl": "https://docs.airbyte.com/integrations/sources/facebook-marketing", - "connectionSpecification": { - "title": "Source Facebook Marketing", - "type": "object", - "properties": { - "account_id": { - "title": "Account ID", - "description": "The Facebook Ad account ID to use when pulling data from the Facebook Marketing API. Open your Meta Ads Manager. The Ad account ID number is in the account dropdown menu or in your browser's address bar. See the docs for more information.", - "order": 0, - "pattern": "^[0-9]+$", - "pattern_descriptor": "1234567890", - "examples": ["111111111111111"], - "type": "string" - }, - "start_date": { - "title": "Start Date", - "description": "The date from which you'd like to replicate data for all incremental streams, in the format YYYY-MM-DDT00:00:00Z. All data generated after this date will be replicated.", - "order": 1, - "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$", - "examples": ["2017-01-25T00:00:00Z"], - "type": "string", - "format": "date-time" - }, - "end_date": { - "title": "End Date", - "description": "The date until which you'd like to replicate data for all incremental streams, in the format YYYY-MM-DDT00:00:00Z. All data generated between the start date and this end date will be replicated. Not setting this option will result in always syncing the latest data.", - "order": 2, - "pattern": "^$|^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$", - "examples": ["2017-01-26T00:00:00Z"], - "type": "string", - "format": "date-time" - }, - "access_token": { - "title": "Access Token", - "description": "The value of the generated access token. From your App’s Dashboard, click on \"Marketing API\" then \"Tools\". Select permissions ads_management, ads_read, read_insights, business_management. Then click on \"Get token\". See the docs for more information.", - "order": 3, - "airbyte_secret": true, - "type": "string" - }, - "include_deleted": { - "title": "Include Deleted Campaigns, Ads, and AdSets", - "description": "Set to active if you want to include data from deleted Campaigns, Ads, and AdSets.", - "default": false, - "order": 4, - "type": "boolean" - }, - "fetch_thumbnail_images": { - "title": "Fetch Thumbnail Images from Ad Creative", - "description": "Set to active if you want to fetch the thumbnail_url and store the result in thumbnail_data_url for each Ad Creative.", - "default": false, - "order": 5, - "type": "boolean" - }, - "custom_insights": { - "title": "Custom Insights", - "description": "A list which contains ad statistics entries, each entry must have a name and can contains fields, breakdowns or action_breakdowns. Click on \"add\" to fill this field.", - "order": 6, - "type": "array", - "items": { - "title": "InsightConfig", - "description": "Config for custom insights", - "type": "object", - "properties": { - "name": { - "title": "Name", - "description": "The name value of insight", - "type": "string" - }, - "level": { - "title": "Level", - "description": "Chosen level for API", - "default": "ad", - "enum": ["ad", "adset", "campaign", "account"], - "type": "string" + "documentationUrl": "https://docs.airbyte.com/integrations/sources/facebook-marketing", + "changelogUrl": "https://docs.airbyte.com/integrations/sources/facebook-marketing", + "connectionSpecification": { + "title": "Source Facebook Marketing", + "type": "object", + "properties": { + "account_id": { + "title": "Account ID", + "description": "The Facebook Ad account ID to use when pulling data from the Facebook Marketing API. Open your Meta Ads Manager. The Ad account ID number is in the account dropdown menu or in your browser's address bar. See the docs for more information.", + "order": 0, + "pattern": "^[0-9]+$", + "pattern_descriptor": "1234567890", + "examples": [ + "111111111111111" + ], + "type": "string" }, - "fields": { - "title": "Fields", - "description": "A list of chosen fields for fields parameter", - "default": [], - "type": "array", - "items": { - "title": "ValidEnums", - "description": "Generic enumeration.\n\nDerive from this class to define new enumerations.", - "enum": [ - "account_currency", - "account_id", - "account_name", - "action_values", - "actions", - "ad_click_actions", - "ad_id", - "ad_impression_actions", - "ad_name", - "adset_end", - "adset_id", - "adset_name", - "adset_start", - "age_targeting", - "attribution_setting", - "auction_bid", - "auction_competitiveness", - "auction_max_competitor_bid", - "buying_type", - "campaign_id", - "campaign_name", - "canvas_avg_view_percent", - "canvas_avg_view_time", - "catalog_segment_actions", - "catalog_segment_value", - "catalog_segment_value_mobile_purchase_roas", - "catalog_segment_value_omni_purchase_roas", - "catalog_segment_value_website_purchase_roas", - "clicks", - "conversion_rate_ranking", - "conversion_values", - "conversions", - "converted_product_quantity", - "converted_product_value", - "cost_per_15_sec_video_view", - "cost_per_2_sec_continuous_video_view", - "cost_per_action_type", - "cost_per_ad_click", - "cost_per_conversion", - "cost_per_dda_countby_convs", - "cost_per_estimated_ad_recallers", - "cost_per_inline_link_click", - "cost_per_inline_post_engagement", - "cost_per_one_thousand_ad_impression", - "cost_per_outbound_click", - "cost_per_thruplay", - "cost_per_unique_action_type", - "cost_per_unique_click", - "cost_per_unique_conversion", - "cost_per_unique_inline_link_click", - "cost_per_unique_outbound_click", - "cpc", - "cpm", - "cpp", - "created_time", - "creative_media_type", - "ctr", - "date_start", - "date_stop", - "dda_countby_convs", - "dda_results", - "engagement_rate_ranking", - "estimated_ad_recall_rate", - "estimated_ad_recall_rate_lower_bound", - "estimated_ad_recall_rate_upper_bound", - "estimated_ad_recallers", - "estimated_ad_recallers_lower_bound", - "estimated_ad_recallers_upper_bound", - "frequency", - "full_view_impressions", - "full_view_reach", - "gender_targeting", - "impressions", - "inline_link_click_ctr", - "inline_link_clicks", - "inline_post_engagement", - "instagram_upcoming_event_reminders_set", - "instant_experience_clicks_to_open", - "instant_experience_clicks_to_start", - "instant_experience_outbound_clicks", - "interactive_component_tap", - "labels", - "location", - "mobile_app_purchase_roas", - "objective", - "optimization_goal", - "outbound_clicks", - "outbound_clicks_ctr", - "place_page_name", - "purchase_roas", - "qualifying_question_qualify_answer_rate", - "quality_ranking", - "quality_score_ectr", - "quality_score_ecvr", - "quality_score_organic", - "reach", - "social_spend", - "spend", - "total_postbacks", - "total_postbacks_detailed", - "total_postbacks_detailed_v4", - "unique_actions", - "unique_clicks", - "unique_conversions", - "unique_ctr", - "unique_inline_link_click_ctr", - "unique_inline_link_clicks", - "unique_link_clicks_ctr", - "unique_outbound_clicks", - "unique_outbound_clicks_ctr", - "unique_video_continuous_2_sec_watched_actions", - "unique_video_view_15_sec", - "updated_time", - "video_15_sec_watched_actions", - "video_30_sec_watched_actions", - "video_avg_time_watched_actions", - "video_continuous_2_sec_watched_actions", - "video_p100_watched_actions", - "video_p25_watched_actions", - "video_p50_watched_actions", - "video_p75_watched_actions", - "video_p95_watched_actions", - "video_play_actions", - "video_play_curve_actions", - "video_play_retention_0_to_15s_actions", - "video_play_retention_20_to_60s_actions", - "video_play_retention_graph_actions", - "video_thruplay_watched_actions", - "video_time_watched_actions", - "website_ctr", - "website_purchase_roas", - "wish_bid" - ] - } + "start_date": { + "title": "Start Date", + "description": "The date from which you'd like to replicate data for all incremental streams, in the format YYYY-MM-DDT00:00:00Z. All data generated after this date will be replicated.", + "order": 1, + "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$", + "examples": [ + "2017-01-25T00:00:00Z" + ], + "type": "string", + "format": "date-time" }, - "breakdowns": { - "title": "Breakdowns", - "description": "A list of chosen breakdowns for breakdowns", - "default": [], - "type": "array", - "items": { - "title": "ValidBreakdowns", - "description": "Generic enumeration.\n\nDerive from this class to define new enumerations.", - "enum": [ - "ad_format_asset", - "age", - "app_id", - "body_asset", - "call_to_action_asset", - "coarse_conversion_value", - "country", - "description_asset", - "device_platform", - "dma", - "fidelity_type", - "frequency_value", - "gender", - "hourly_stats_aggregated_by_advertiser_time_zone", - "hourly_stats_aggregated_by_audience_time_zone", - "hsid", - "image_asset", - "impression_device", - "is_conversion_id_modeled", - "link_url_asset", - "mmm", - "place_page_id", - "platform_position", - "postback_sequence_index", - "product_id", - "publisher_platform", - "redownload", - "region", - "skan_campaign_id", - "skan_conversion_id", - "title_asset", - "video_asset" - ] - } + "end_date": { + "title": "End Date", + "description": "The date until which you'd like to replicate data for all incremental streams, in the format YYYY-MM-DDT00:00:00Z. All data generated between the start date and this end date will be replicated. Not setting this option will result in always syncing the latest data.", + "order": 2, + "pattern": "^$|^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$", + "examples": [ + "2017-01-26T00:00:00Z" + ], + "type": "string", + "format": "date-time" }, - "action_breakdowns": { - "title": "Action Breakdowns", - "description": "A list of chosen action_breakdowns for action_breakdowns", - "default": [], - "type": "array", - "items": { - "title": "ValidActionBreakdowns", - "description": "Generic enumeration.\n\nDerive from this class to define new enumerations.", - "enum": [ - "action_canvas_component_name", - "action_carousel_card_id", - "action_carousel_card_name", - "action_destination", - "action_device", - "action_reaction", - "action_target_id", - "action_type", - "action_video_sound", - "action_video_type" - ] - } + "access_token": { + "title": "Access Token", + "description": "The value of the generated access token. From your App\u2019s Dashboard, click on \"Marketing API\" then \"Tools\". Select permissions ads_management, ads_read, read_insights, business_management. Then click on \"Get token\". See the docs for more information.", + "order": 3, + "airbyte_secret": true, + "type": "string" }, - "action_report_time": { - "title": "Action Report Time", - "description": "Determines the report time of action stats. For example, if a person saw the ad on Jan 1st but converted on Jan 2nd, when you query the API with action_report_time=impression, you see a conversion on Jan 1st. When you query the API with action_report_time=conversion, you see a conversion on Jan 2nd.", - "default": "mixed", - "enum": ["conversion", "impression", "mixed"], - "type": "string" + "include_deleted": { + "title": "Include Deleted Campaigns, Ads, and AdSets", + "description": "Set to active if you want to include data from deleted Campaigns, Ads, and AdSets.", + "default": false, + "order": 4, + "type": "boolean" }, - "time_increment": { - "title": "Time Increment", - "description": "Time window in days by which to aggregate statistics. The sync will be chunked into N day intervals, where N is the number of days you specified. For example, if you set this value to 7, then all statistics will be reported as 7-day aggregates by starting from the start_date. If the start and end dates are October 1st and October 30th, then the connector will output 5 records: 01 - 06, 07 - 13, 14 - 20, 21 - 27, and 28 - 30 (3 days only).", - "default": 1, - "exclusiveMaximum": 90, - "exclusiveMinimum": 0, - "type": "integer" + "fetch_thumbnail_images": { + "title": "Fetch Thumbnail Images from Ad Creative", + "description": "Set to active if you want to fetch the thumbnail_url and store the result in thumbnail_data_url for each Ad Creative.", + "default": false, + "order": 5, + "type": "boolean" }, - "start_date": { - "title": "Start Date", - "description": "The date from which you'd like to replicate data for this stream, in the format YYYY-MM-DDT00:00:00Z.", - "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$", - "examples": ["2017-01-25T00:00:00Z"], - "type": "string", - "format": "date-time" + "custom_insights": { + "title": "Custom Insights", + "description": "A list which contains ad statistics entries, each entry must have a name and can contains fields, breakdowns or action_breakdowns. Click on \"add\" to fill this field.", + "order": 6, + "type": "array", + "items": { + "title": "InsightConfig", + "description": "Config for custom insights", + "type": "object", + "properties": { + "name": { + "title": "Name", + "description": "The name value of insight", + "type": "string" + }, + "level": { + "title": "Level", + "description": "Chosen level for API", + "default": "ad", + "enum": [ + "ad", + "adset", + "campaign", + "account" + ], + "type": "string" + }, + "fields": { + "title": "Fields", + "description": "A list of chosen fields for fields parameter", + "default": [], + "type": "array", + "items": { + "title": "ValidEnums", + "description": "An enumeration.", + "enum": [ + "account_currency", + "account_id", + "account_name", + "action_values", + "actions", + "ad_click_actions", + "ad_id", + "ad_impression_actions", + "ad_name", + "adset_end", + "adset_id", + "adset_name", + "adset_start", + "age_targeting", + "attribution_setting", + "auction_bid", + "auction_competitiveness", + "auction_max_competitor_bid", + "buying_type", + "campaign_id", + "campaign_name", + "canvas_avg_view_percent", + "canvas_avg_view_time", + "catalog_segment_actions", + "catalog_segment_value", + "catalog_segment_value_mobile_purchase_roas", + "catalog_segment_value_omni_purchase_roas", + "catalog_segment_value_website_purchase_roas", + "clicks", + "conversion_rate_ranking", + "conversion_values", + "conversions", + "converted_product_quantity", + "converted_product_value", + "cost_per_15_sec_video_view", + "cost_per_2_sec_continuous_video_view", + "cost_per_action_type", + "cost_per_ad_click", + "cost_per_conversion", + "cost_per_dda_countby_convs", + "cost_per_estimated_ad_recallers", + "cost_per_inline_link_click", + "cost_per_inline_post_engagement", + "cost_per_one_thousand_ad_impression", + "cost_per_outbound_click", + "cost_per_thruplay", + "cost_per_unique_action_type", + "cost_per_unique_click", + "cost_per_unique_conversion", + "cost_per_unique_inline_link_click", + "cost_per_unique_outbound_click", + "cpc", + "cpm", + "cpp", + "created_time", + "creative_media_type", + "ctr", + "date_start", + "date_stop", + "dda_countby_convs", + "dda_results", + "engagement_rate_ranking", + "estimated_ad_recall_rate", + "estimated_ad_recall_rate_lower_bound", + "estimated_ad_recall_rate_upper_bound", + "estimated_ad_recallers", + "estimated_ad_recallers_lower_bound", + "estimated_ad_recallers_upper_bound", + "frequency", + "full_view_impressions", + "full_view_reach", + "gender_targeting", + "impressions", + "inline_link_click_ctr", + "inline_link_clicks", + "inline_post_engagement", + "instagram_upcoming_event_reminders_set", + "instant_experience_clicks_to_open", + "instant_experience_clicks_to_start", + "instant_experience_outbound_clicks", + "interactive_component_tap", + "labels", + "location", + "mobile_app_purchase_roas", + "objective", + "optimization_goal", + "outbound_clicks", + "outbound_clicks_ctr", + "place_page_name", + "purchase_roas", + "qualifying_question_qualify_answer_rate", + "quality_ranking", + "quality_score_ectr", + "quality_score_ecvr", + "quality_score_organic", + "reach", + "social_spend", + "spend", + "total_postbacks", + "total_postbacks_detailed", + "total_postbacks_detailed_v4", + "unique_actions", + "unique_clicks", + "unique_conversions", + "unique_ctr", + "unique_inline_link_click_ctr", + "unique_inline_link_clicks", + "unique_link_clicks_ctr", + "unique_outbound_clicks", + "unique_outbound_clicks_ctr", + "unique_video_continuous_2_sec_watched_actions", + "unique_video_view_15_sec", + "updated_time", + "video_15_sec_watched_actions", + "video_30_sec_watched_actions", + "video_avg_time_watched_actions", + "video_continuous_2_sec_watched_actions", + "video_p100_watched_actions", + "video_p25_watched_actions", + "video_p50_watched_actions", + "video_p75_watched_actions", + "video_p95_watched_actions", + "video_play_actions", + "video_play_curve_actions", + "video_play_retention_0_to_15s_actions", + "video_play_retention_20_to_60s_actions", + "video_play_retention_graph_actions", + "video_thruplay_watched_actions", + "video_time_watched_actions", + "website_ctr", + "website_purchase_roas", + "wish_bid" + ] + } + }, + "breakdowns": { + "title": "Breakdowns", + "description": "A list of chosen breakdowns for breakdowns", + "default": [], + "type": "array", + "items": { + "title": "ValidBreakdowns", + "description": "An enumeration.", + "enum": [ + "ad_format_asset", + "age", + "app_id", + "body_asset", + "call_to_action_asset", + "coarse_conversion_value", + "country", + "description_asset", + "device_platform", + "dma", + "fidelity_type", + "frequency_value", + "gender", + "hourly_stats_aggregated_by_advertiser_time_zone", + "hourly_stats_aggregated_by_audience_time_zone", + "hsid", + "image_asset", + "impression_device", + "is_conversion_id_modeled", + "link_url_asset", + "mmm", + "place_page_id", + "platform_position", + "postback_sequence_index", + "product_id", + "publisher_platform", + "redownload", + "region", + "skan_campaign_id", + "skan_conversion_id", + "title_asset", + "video_asset" + ] + } + }, + "action_breakdowns": { + "title": "Action Breakdowns", + "description": "A list of chosen action_breakdowns for action_breakdowns", + "default": [], + "type": "array", + "items": { + "title": "ValidActionBreakdowns", + "description": "An enumeration.", + "enum": [ + "action_canvas_component_name", + "action_carousel_card_id", + "action_carousel_card_name", + "action_destination", + "action_device", + "action_reaction", + "action_target_id", + "action_type", + "action_video_sound", + "action_video_type" + ] + } + }, + "action_report_time": { + "title": "Action Report Time", + "description": "Determines the report time of action stats. For example, if a person saw the ad on Jan 1st but converted on Jan 2nd, when you query the API with action_report_time=impression, you see a conversion on Jan 1st. When you query the API with action_report_time=conversion, you see a conversion on Jan 2nd.", + "default": "mixed", + "enum": [ + "conversion", + "impression", + "mixed" + ], + "type": "string" + }, + "time_increment": { + "title": "Time Increment", + "description": "Time window in days by which to aggregate statistics. The sync will be chunked into N day intervals, where N is the number of days you specified. For example, if you set this value to 7, then all statistics will be reported as 7-day aggregates by starting from the start_date. If the start and end dates are October 1st and October 30th, then the connector will output 5 records: 01 - 06, 07 - 13, 14 - 20, 21 - 27, and 28 - 30 (3 days only).", + "default": 1, + "exclusiveMaximum": 90, + "exclusiveMinimum": 0, + "type": "integer" + }, + "start_date": { + "title": "Start Date", + "description": "The date from which you'd like to replicate data for this stream, in the format YYYY-MM-DDT00:00:00Z.", + "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$", + "examples": [ + "2017-01-25T00:00:00Z" + ], + "type": "string", + "format": "date-time" + }, + "end_date": { + "title": "End Date", + "description": "The date until which you'd like to replicate data for this stream, in the format YYYY-MM-DDT00:00:00Z. All data generated between the start date and this end date will be replicated. Not setting this option will result in always syncing the latest data.", + "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$", + "examples": [ + "2017-01-26T00:00:00Z" + ], + "type": "string", + "format": "date-time" + }, + "insights_lookback_window": { + "title": "Custom Insights Lookback Window", + "description": "The attribution window", + "default": 28, + "maximum": 28, + "mininum": 1, + "exclusiveMinimum": 0, + "type": "integer" + } + }, + "required": [ + "name" + ] + } }, - "end_date": { - "title": "End Date", - "description": "The date until which you'd like to replicate data for this stream, in the format YYYY-MM-DDT00:00:00Z. All data generated between the start date and this end date will be replicated. Not setting this option will result in always syncing the latest data.", - "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$", - "examples": ["2017-01-26T00:00:00Z"], - "type": "string", - "format": "date-time" + "page_size": { + "title": "Page Size of Requests", + "description": "Page size used when sending requests to Facebook API to specify number of records per page when response has pagination. Most users do not need to set this field unless they specifically need to tune the connector to address specific issues or use cases.", + "default": 100, + "order": 7, + "exclusiveMinimum": 0, + "type": "integer" }, "insights_lookback_window": { - "title": "Custom Insights Lookback Window", - "description": "The attribution window", - "default": 28, - "maximum": 28, - "mininum": 1, - "exclusiveMinimum": 0, - "type": "integer" + "title": "Insights Lookback Window", + "description": "The attribution window. Facebook freezes insight data 28 days after it was generated, which means that all data from the past 28 days may have changed since we last emitted it, so you can retrieve refreshed insights from the past by setting this parameter. If you set a custom lookback window value in Facebook account, please provide the same value here.", + "default": 28, + "order": 8, + "maximum": 28, + "mininum": 1, + "exclusiveMinimum": 0, + "type": "integer" + }, + "max_batch_size": { + "title": "Maximum size of Batched Requests", + "description": "Maximum batch size used when sending batch requests to Facebook API. Most users do not need to set this field unless they specifically need to tune the connector to address specific issues or use cases.", + "default": 50, + "order": 9, + "exclusiveMinimum": 0, + "type": "integer" + }, + "action_breakdowns_allow_empty": { + "title": "Action Breakdowns Allow Empty", + "description": "Allows action_breakdowns to be an empty list", + "default": true, + "airbyte_hidden": true, + "type": "boolean" + }, + "client_id": { + "title": "Client Id", + "description": "The Client Id for your OAuth app", + "airbyte_secret": true, + "airbyte_hidden": true, + "type": "string" + }, + "client_secret": { + "title": "Client Secret", + "description": "The Client Secret for your OAuth app", + "airbyte_secret": true, + "airbyte_hidden": true, + "type": "string" } - }, - "required": ["name"] - } - }, - "page_size": { - "title": "Page Size of Requests", - "description": "Page size used when sending requests to Facebook API to specify number of records per page when response has pagination. Most users do not need to set this field unless they specifically need to tune the connector to address specific issues or use cases.", - "default": 100, - "order": 7, - "exclusiveMinimum": 0, - "type": "integer" - }, - "insights_lookback_window": { - "title": "Insights Lookback Window", - "description": "The attribution window. Facebook freezes insight data 28 days after it was generated, which means that all data from the past 28 days may have changed since we last emitted it, so you can retrieve refreshed insights from the past by setting this parameter. If you set a custom lookback window value in Facebook account, please provide the same value here.", - "default": 28, - "order": 8, - "maximum": 28, - "mininum": 1, - "exclusiveMinimum": 0, - "type": "integer" - }, - "max_batch_size": { - "title": "Maximum size of Batched Requests", - "description": "Maximum batch size used when sending batch requests to Facebook API. Most users do not need to set this field unless they specifically need to tune the connector to address specific issues or use cases.", - "default": 50, - "order": 9, - "exclusiveMinimum": 0, - "type": "integer" - }, - "action_breakdowns_allow_empty": { - "title": "Action Breakdowns Allow Empty", - "description": "Allows action_breakdowns to be an empty list", - "default": true, - "airbyte_hidden": true, - "type": "boolean" - } + }, + "required": [ + "account_id", + "start_date", + "access_token" + ] }, - "required": ["account_id", "start_date", "access_token"] - }, - "supportsIncremental": true, - "supported_destination_sync_modes": ["append"], - "advanced_auth": { - "auth_flow_type": "oauth2.0", - "oauth_config_specification": { - "complete_oauth_output_specification": { - "type": "object", - "properties": { - "access_token": { - "type": "string", - "path_in_connector_config": [ - "access_token" - ] - } - } - }, - "complete_oauth_server_input_specification": { - "type": "object", - "properties": { - "client_id": { - "type": "string" - }, - "client_secret": { - "type": "string" - } + "supportsIncremental": true, + "supported_destination_sync_modes": [ + "append" + ], + "advanced_auth": { + "auth_flow_type": "oauth2.0", + "oauth_config_specification": { + "complete_oauth_output_specification": { + "type": "object", + "properties": { + "access_token": { + "type": "string", + "path_in_connector_config": [ + "access_token" + ] + } + } + }, + "complete_oauth_server_input_specification": { + "type": "object", + "properties": { + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string" + } + } + }, + "complete_oauth_server_output_specification": { + "type": "object", + "additionalProperties": true, + "properties": { + "client_id": { + "type": "string", + "path_in_connector_config": [ + "client_id" + ] + }, + "client_secret": { + "type": "string", + "path_in_connector_config": [ + "client_secret" + ] + } + } + } } - }, - "complete_oauth_server_output_specification": { - "type": "object", - "additionalProperties": true, - "properties": { - "client_id": { - "type": "string", - "path_in_connector_config": ["client_id"] - }, - "client_secret": { - "type": "string", - "path_in_connector_config": ["client_secret"] - } - } - } } - } } diff --git a/airbyte-integrations/connectors/source-facebook-marketing/metadata.yaml b/airbyte-integrations/connectors/source-facebook-marketing/metadata.yaml index 2783ab5cbed0..244aa519899b 100644 --- a/airbyte-integrations/connectors/source-facebook-marketing/metadata.yaml +++ b/airbyte-integrations/connectors/source-facebook-marketing/metadata.yaml @@ -5,7 +5,7 @@ data: connectorSubtype: api connectorType: source definitionId: e7778cfc-e97c-4458-9ecb-b4f2bba8946c - dockerImageTag: 1.1.1 + dockerImageTag: 1.1.2 dockerRepository: airbyte/source-facebook-marketing githubIssueLabel: source-facebook-marketing icon: facebook.svg diff --git a/airbyte-integrations/connectors/source-facebook-marketing/source_facebook_marketing/spec.py b/airbyte-integrations/connectors/source-facebook-marketing/source_facebook_marketing/spec.py index 901451dfffbc..5ddbffada530 100644 --- a/airbyte-integrations/connectors/source-facebook-marketing/source_facebook_marketing/spec.py +++ b/airbyte-integrations/connectors/source-facebook-marketing/source_facebook_marketing/spec.py @@ -216,3 +216,15 @@ class Config: default=True, airbyte_hidden=True, ) + + client_id: Optional[str] = Field( + description="The Client Id for your OAuth app", + airbyte_secret=True, + airbyte_hidden=True, + ) + + client_secret: Optional[str] = Field( + description="The Client Secret for your OAuth app", + airbyte_secret=True, + airbyte_hidden=True, + ) diff --git a/docs/integrations/sources/facebook-marketing.md b/docs/integrations/sources/facebook-marketing.md index 95b5a2861862..adf01c4fef82 100644 --- a/docs/integrations/sources/facebook-marketing.md +++ b/docs/integrations/sources/facebook-marketing.md @@ -168,6 +168,7 @@ Please be informed that the connector uses the `lookback_window` parameter to pe | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 1.1.2 | 2023-08-03 | [29042](https://github.com/airbytehq/airbyte/pull/29042) | Fix broken `advancedAuth` references for `spec` | | 1.1.1 | 2023-07-26 | [27996](https://github.com/airbytehq/airbyte/pull/27996) | remove reference to authSpecification | | 1.1.0 | 2023-07-11 | [26345](https://github.com/airbytehq/airbyte/pull/26345) | add new `action_report_time` attribute to `AdInsights` class | | 1.0.1 | 2023-07-07 | [27979](https://github.com/airbytehq/airbyte/pull/27979) | Added the ability to restore the reduced request record limit after the successful retry, and handle the `unknown error` (code 99) with the retry strategy |