diff --git a/airbyte-integrations/connectors/source-instagram/erd/discovered_catalog.json b/airbyte-integrations/connectors/source-instagram/erd/discovered_catalog.json index a8437473546b7..d306aa4ad9aa3 100644 --- a/airbyte-integrations/connectors/source-instagram/erd/discovered_catalog.json +++ b/airbyte-integrations/connectors/source-instagram/erd/discovered_catalog.json @@ -61,6 +61,16 @@ } } }, + "boost_eligibility_info": { + "description": "The field provides information about boosting eligibility of a Instagram instagram media as an ad and additional details if not eligible.", + "type": ["null", "object"], + "properties": { + "eligible_to_boost": { + "description": "The field indicates eligibility to boost.", + "type": ["null", "boolean"] + } + } + }, "permalink": { "description": "The permanent link to the media item on Instagram.", "type": ["null", "string"] @@ -226,6 +236,10 @@ "profile_visits": { "description": "The number of times the profile has been visited.", "type": ["null", "integer"] + }, + "views": { + "description": "Total number of times the video IG Media has been seen.", + "type": ["null", "integer"] } }, "required": ["id"] diff --git a/airbyte-integrations/connectors/source-instagram/erd/source.dbml b/airbyte-integrations/connectors/source-instagram/erd/source.dbml index adeca3e93e787..eb631759f4223 100644 --- a/airbyte-integrations/connectors/source-instagram/erd/source.dbml +++ b/airbyte-integrations/connectors/source-instagram/erd/source.dbml @@ -17,6 +17,7 @@ Table "media" { "timestamp" string "username" string "children" array + "boost_eligibility_info" object } Table "media_insights" { @@ -38,6 +39,7 @@ Table "media_insights" { "clips_replays_count" integer "follows" integer "profile_visits" integer + "views" integer } Table "users" { diff --git a/airbyte-integrations/connectors/source-instagram/metadata.yaml b/airbyte-integrations/connectors/source-instagram/metadata.yaml index dcf6548a983f8..90f619536c167 100644 --- a/airbyte-integrations/connectors/source-instagram/metadata.yaml +++ b/airbyte-integrations/connectors/source-instagram/metadata.yaml @@ -7,7 +7,7 @@ data: connectorSubtype: api connectorType: source definitionId: 6acf6b55-4f1e-4fca-944e-1a3caef8aba8 - dockerImageTag: 3.1.7 + dockerImageTag: 3.1.8 dockerRepository: airbyte/source-instagram githubIssueLabel: source-instagram icon: instagram.svg diff --git a/airbyte-integrations/connectors/source-instagram/pyproject.toml b/airbyte-integrations/connectors/source-instagram/pyproject.toml index 4d63e021c24cb..332b67ced1514 100644 --- a/airbyte-integrations/connectors/source-instagram/pyproject.toml +++ b/airbyte-integrations/connectors/source-instagram/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "3.1.7" +version = "3.1.8" name = "source-instagram" description = "Source implementation for Instagram." authors = [ "Airbyte ",] diff --git a/airbyte-integrations/connectors/source-instagram/source_instagram/manifest.yaml b/airbyte-integrations/connectors/source-instagram/source_instagram/manifest.yaml index 8409482e7894a..47dcd442cfd20 100644 --- a/airbyte-integrations/connectors/source-instagram/source_instagram/manifest.yaml +++ b/airbyte-integrations/connectors/source-instagram/source_instagram/manifest.yaml @@ -22,7 +22,7 @@ definitions: http_method: GET request_parameters: fields: >- - caption,comments_count,id,ig_id,is_comment_enabled,like_count,media_type,media_product_type,media_url,owner,permalink,shortcode,thumbnail_url,timestamp,username,children + caption,comments_count,id,ig_id,is_comment_enabled,like_count,media_type,media_product_type,media_url,owner,permalink,shortcode,thumbnail_url,timestamp,username,children,boost_eligibility_info error_handler: type: CompositeErrorHandler error_handlers: @@ -119,11 +119,11 @@ definitions: metric: >- {% if stream_partition.media_insights_info.media_product_type == "REELS" %}{{ - 'comments,ig_reels_avg_watch_time,ig_reels_video_view_total_time,likes,plays,reach,saved,shares,ig_reels_aggregated_all_plays_count,clips_replays_count' + 'comments,ig_reels_avg_watch_time,ig_reels_video_view_total_time,likes,plays,reach,saved,shares,ig_reels_aggregated_all_plays_count,clips_replays_count,views,total_interactions' }}{% elif stream_partition.media_insights_info.media_type == "VIDEO" and stream_partition.media_insights_info.media_product_type == "FEED" - %}{{ 'impressions,reach,saved'}}{% elif + %}{{ 'impressions,reach,saved,views,total_interactions'}}{% elif stream_partition.media_insights_info.media_type == "VIDEO" %}{{ 'impressions,reach,saved,likes,comments,shares,follows,profile_visits' }}{%elif stream_partition.media_insights_info.media_type == @@ -683,6 +683,17 @@ schemas: type: - "null" - string + boost_eligibility_info: + description: The field provides information about boosting eligibility of a Instagram instagram media as an ad and additional details if not eligible. + type: + - "null" + - object + properties: + eligible_to_boost: + description: A boolean value which indicates eligibility boost. + type: + - "null" + - boolean permalink: description: The permanent link to the media item on Instagram. type: @@ -814,6 +825,11 @@ schemas: type: - "null" - integer + views: + description: Total number of times the video IG Media has been seen.. + type: + - "null" + - integer reach: description: The number of unique users who have seen the media. type: diff --git a/airbyte-integrations/connectors/source-instagram/source_instagram/schemas/media_insights.json b/airbyte-integrations/connectors/source-instagram/source_instagram/schemas/media_insights.json index 4e40ddc80e529..28ff9d3f911dc 100644 --- a/airbyte-integrations/connectors/source-instagram/source_instagram/schemas/media_insights.json +++ b/airbyte-integrations/connectors/source-instagram/source_instagram/schemas/media_insights.json @@ -68,6 +68,10 @@ "profile_visits": { "description": "The number of times the profile has been visited.", "type": ["null", "integer"] + }, + "views": { + "description": "Total number of times the video IG Media has been seen.", + "type": ["null", "integer"] } } } diff --git a/airbyte-integrations/connectors/source-instagram/unit_tests/integration/test_media.py b/airbyte-integrations/connectors/source-instagram/unit_tests/integration/test_media.py index 9319563fb463c..5900f5eb9cfe5 100644 --- a/airbyte-integrations/connectors/source-instagram/unit_tests/integration/test_media.py +++ b/airbyte-integrations/connectors/source-instagram/unit_tests/integration/test_media.py @@ -41,6 +41,7 @@ "timestamp", "username", "children", + "boost_eligibility_info", ] _CHILDREN_FIELDS = ["id", "ig_id", "media_type", "media_url", "owner", "permalink", "shortcode", "thumbnail_url", "timestamp", "username"] diff --git a/airbyte-integrations/connectors/source-instagram/unit_tests/integration/test_media_insights.py b/airbyte-integrations/connectors/source-instagram/unit_tests/integration/test_media_insights.py index 09e8331291558..6b44e7059a0ca 100644 --- a/airbyte-integrations/connectors/source-instagram/unit_tests/integration/test_media_insights.py +++ b/airbyte-integrations/connectors/source-instagram/unit_tests/integration/test_media_insights.py @@ -43,6 +43,7 @@ "timestamp", "username", "children", + "boost_eligibility_info", ] _PARENT_STREAM_NAME = "media" _STREAM_NAME = "media_insights" @@ -88,8 +89,10 @@ "shares", "ig_reels_aggregated_all_plays_count", "clips_replays_count", + "views", + "total_interactions", ], - MEDIA_ID_VIDEO_FEED: ["impressions", "reach", "saved"], + MEDIA_ID_VIDEO_FEED: ["impressions", "reach", "saved", "views", "total_interactions"], MEDIA_ID_VIDEO: ["impressions", "reach", "saved", "likes", "comments", "shares", "follows", "profile_visits"], MEDIA_ID_CAROUSEL_ALBUM: ["impressions", "reach", "saved", "shares", "follows", "profile_visits"], MEDIA_ID_GENERAL_MEDIA: METRICS_GENERAL_MEDIA, diff --git a/airbyte-integrations/connectors/source-instagram/unit_tests/resource/http/response/media.json b/airbyte-integrations/connectors/source-instagram/unit_tests/resource/http/response/media.json index b05faa0912f58..f285b58de3f87 100644 --- a/airbyte-integrations/connectors/source-instagram/unit_tests/resource/http/response/media.json +++ b/airbyte-integrations/connectors/source-instagram/unit_tests/resource/http/response/media.json @@ -17,7 +17,10 @@ "shortcode": "HGagdsy38", "thumbnail_url": "https://fakecontent.cdninstagram.com/v/somepath/", "timestamp": "2023-06-12T19:20:02+0000", - "username": "username" + "username": "username", + "boost_eligibility_info": { + "eligible_to_boost": true + } }, { "caption": "a caption", diff --git a/airbyte-integrations/connectors/source-instagram/unit_tests/resource/http/response/media_for_reels.json b/airbyte-integrations/connectors/source-instagram/unit_tests/resource/http/response/media_for_reels.json index 865accb47c09c..a0fe3556b6603 100644 --- a/airbyte-integrations/connectors/source-instagram/unit_tests/resource/http/response/media_for_reels.json +++ b/airbyte-integrations/connectors/source-instagram/unit_tests/resource/http/response/media_for_reels.json @@ -17,7 +17,10 @@ "shortcode": "HGagdsy38", "thumbnail_url": "https://fakecontent.cdninstagram.com/v/somepath/", "timestamp": "2023-06-12T19:20:02+0000", - "username": "username" + "username": "username", + "boost_eligibility_info": { + "eligible_to_boost": true + } }, { "caption": "a caption", @@ -36,7 +39,10 @@ "shortcode": "HGagdsy38", "thumbnail_url": "https://fakecontent.cdninstagram.com/v/somepath/", "timestamp": "2022-09-15T11:33:25+0000", - "username": "username" + "username": "username", + "boost_eligibility_info": { + "eligible_to_boost": true + } }, { "caption": "a caption", @@ -55,7 +61,10 @@ "shortcode": "HGagdsy38", "thumbnail_url": "https://fakecontent.cdninstagram.com/v/somepath/", "timestamp": "2023-04-28T20:32:08+0000", - "username": "username" + "username": "username", + "boost_eligibility_info": { + "eligible_to_boost": true + } }, { "caption": "a caption", @@ -107,7 +116,10 @@ "permalink": "https://instagram.com/permalink/123", "shortcode": "HGagdsy38", "timestamp": "2019-05-02T11:42:01+0000", - "username": "username" + "username": "username", + "boost_eligibility_info": { + "eligible_to_boost": true + } } ], "paging": { diff --git a/airbyte-integrations/connectors/source-instagram/unit_tests/resource/http/response/media_insights_for_reels.json b/airbyte-integrations/connectors/source-instagram/unit_tests/resource/http/response/media_insights_for_reels.json index 6b4b2a37717da..58152a27b5e77 100644 --- a/airbyte-integrations/connectors/source-instagram/unit_tests/resource/http/response/media_insights_for_reels.json +++ b/airbyte-integrations/connectors/source-instagram/unit_tests/resource/http/response/media_insights_for_reels.json @@ -119,6 +119,30 @@ "title": "Clip Replays Count title", "description": "Clip Replays Count description.", "id": "84386203808767123/insights/clips_replays_count/lifetime" + }, + { + "name": "views", + "period": "lifetime", + "values": [ + { + "value": 10 + } + ], + "title": "views title", + "description": "Total number of times the video IG Media has been seen.", + "id": "84386203808767123/insights/views/lifetime" + }, + { + "name": "total_interactions", + "period": "lifetime", + "values": [ + { + "value": 10 + } + ], + "title": "total interactions", + "description": "Number of likes, saves, comments, and shares on the reel, minus the number of unlikes, unsaves, and deleted comments. Metric in development.", + "id": "84386203808767123/insights/total_interactions/lifetime" } ] } diff --git a/airbyte-integrations/connectors/source-instagram/unit_tests/resource/http/response/media_insights_for_video_feed.json b/airbyte-integrations/connectors/source-instagram/unit_tests/resource/http/response/media_insights_for_video_feed.json index 660cdf9c70abd..dbc34a60ca9dd 100644 --- a/airbyte-integrations/connectors/source-instagram/unit_tests/resource/http/response/media_insights_for_video_feed.json +++ b/airbyte-integrations/connectors/source-instagram/unit_tests/resource/http/response/media_insights_for_video_feed.json @@ -47,6 +47,30 @@ "title": "Video Views", "description": "The number of times your video was viewed.", "id": "90014330517797123/insights/video_views/lifetime" + }, + { + "name": "views", + "period": "lifetime", + "values": [ + { + "value": 10 + } + ], + "title": "views title", + "description": "Total number of times the video IG Media has been seen.", + "id": "84386203808767123/insights/views/lifetime" + }, + { + "name": "total_interactions", + "period": "lifetime", + "values": [ + { + "value": 10 + } + ], + "title": "total interactions", + "description": "Number of likes, saves, comments, and shares on the reel, minus the number of unlikes, unsaves, and deleted comments. Metric in development.", + "id": "84386203808767123/insights/total_interactions/lifetime" } ] } diff --git a/docs/integrations/sources/instagram.md b/docs/integrations/sources/instagram.md index 305394d611e8b..7f6e17381ddd8 100644 --- a/docs/integrations/sources/instagram.md +++ b/docs/integrations/sources/instagram.md @@ -146,6 +146,7 @@ for more information. | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------| +| 3.1.8 | 2025-02-12 | [53214](https://github.com/airbytehq/airbyte/pull/53214) | New fields in media and mediainsights | | 3.1.7 | 2025-02-15 | [53846](https://github.com/airbytehq/airbyte/pull/53846) | Update dependencies | | 3.1.6 | 2025-02-08 | [53291](https://github.com/airbytehq/airbyte/pull/53291) | Update dependencies | | 3.1.5 | 2025-02-06 | [53171](https://github.com/airbytehq/airbyte/pull/53171) | Fix missing OAuth fields |