"use strict";(self.webpackChunkdocu=self.webpackChunkdocu||[]).push([[39024],{49035:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>c});var s=r(11527),n=r(67541);const i={},l="Apple Search Ads",a={id:"integrations/sources/apple-search-ads",title:"Apple Search Ads",description:"This page contains the setup guide and reference information for the Apple Search Ads source connector.",source:"@site/../docs/integrations/sources/apple-search-ads.md",sourceDirName:"integrations/sources",slug:"/integrations/sources/apple-search-ads",permalink:"/integrations/sources/apple-search-ads",draft:!1,unlisted:!1,editUrl:"https://github.com/airbytehq/airbyte/blob/master/docs/../docs/integrations/sources/apple-search-ads.md",tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Appfollow Migration Guide",permalink:"/integrations/sources/appfollow-migrations"},next:{title:"AppsFlyer",permalink:"/integrations/sources/appsflyer"}},d={},c=[{value:"Setup guide",id:"setup-guide",level:2},{value:"Step 1: Set up Apple Search Ads",id:"step-1-set-up-apple-search-ads",level:3},{value:"Step 2: Set up the source connector in Airbyte",id:"step-2-set-up-the-source-connector-in-airbyte",level:3},{value:"For Airbyte Open Source",id:"for-airbyte-open-source",level:4},{value:"Supported sync modes",id:"supported-sync-modes",level:2},{value:"Supported Streams",id:"supported-streams",level:2},{value:"Base streams",id:"base-streams",level:3},{value:"Report Streams",id:"report-streams",level:3},{value:"Report aggregation",id:"report-aggregation",level:3},{value:"Reference",id:"reference",level:2},{value:"Changelog",id:"changelog",level:2}];function o(e){const t={a:"a",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,n.a)(),...e.components},{Details:r,HeaderDecoration:i,SpecSchema:l}=t;return r||p("Details",!0),i||p("HeaderDecoration",!0),l||p("SpecSchema",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i,{isOss:"true",isCloud:"false",isPypiPublished:"true",supportLevel:"community",dockerImageTag:"0.1.7",iconUrl:"https://connectors.airbyte.com/files/metadata/airbyte/source-apple-search-ads/latest/icon.svg",github_url:"https://github.com/airbytehq/airbyte/blob/master/airbyte-integrations/connectors/source-apple-search-ads",issue_url:"https://github.com/airbytehq/airbyte/issues?q=is:open+is:issue+label:connectors/source/apple-search-ads",originalTitle:"Apple Search Ads",originalId:"apple-search-ads",cdkVersion:"1.0.0",isLatestCDKString:"FALSE",cdkVersionUrl:"https://pypi.org/project/airbyte-cdk/1.0.0/",syncSuccessRate:"medium",usageRate:"high",lastUpdated:"2024-07-11T01:04:36.588000+00:00"}),"\n",(0,s.jsx)(t.p,{children:"This page contains the setup guide and reference information for the Apple Search Ads source connector."}),"\n",(0,s.jsx)(t.h2,{id:"setup-guide",children:"Setup guide"}),"\n",(0,s.jsx)(t.h3,{id:"step-1-set-up-apple-search-ads",children:"Step 1: Set up Apple Search Ads"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["With an administrator account, ",(0,s.jsx)(t.a,{href:"https://developer.apple.com/documentation/apple_search_ads/implementing_oauth_for_the_apple_search_ads_api",children:"create an API user role"})," from the Apple Search Ads UI."]}),"\n",(0,s.jsxs)(t.li,{children:["Then ",(0,s.jsx)(t.a,{href:"https://developer.apple.com/documentation/apple_search_ads/implementing_oauth_for_the_apple_search_ads_api",children:"implement OAuth for your API user"})," in order to the required Client Secret and Client Id."]}),"\n"]}),"\n",(0,s.jsx)(t.h3,{id:"step-2-set-up-the-source-connector-in-airbyte",children:"Step 2: Set up the source connector in Airbyte"}),"\n",(0,s.jsx)(t.h4,{id:"for-airbyte-open-source",children:"For Airbyte Open Source"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:"Log in to your Airbyte Open Source account."}),"\n",(0,s.jsxs)(t.li,{children:["Click ",(0,s.jsx)(t.strong,{children:"Sources"})," and then click ",(0,s.jsx)(t.strong,{children:"+ New source"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:["On the Set up the source page, select ",(0,s.jsx)(t.strong,{children:"Apple Search Ads"})," from the ",(0,s.jsx)(t.strong,{children:"Source type"})," dropdown."]}),"\n",(0,s.jsx)(t.li,{children:"Enter a name for your source."}),"\n",(0,s.jsxs)(t.li,{children:["For ",(0,s.jsx)(t.strong,{children:"Org Id"}),", enter the Id of your organization (found in the Apple Search Ads UI)."]}),"\n",(0,s.jsxs)(t.li,{children:["Enter the ",(0,s.jsx)(t.strong,{children:"Client ID"})," and the ",(0,s.jsx)(t.strong,{children:"Client Secret"})," from ",(0,s.jsx)(t.a,{href:"#step-1-set-up-apple-search-ads",children:"Step 1"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:["For ",(0,s.jsx)(t.strong,{children:"Start Date"})," and ",(0,s.jsx)(t.strong,{children:"End Date"}),", enter the date in YYYY-MM-DD format. For DAILY reports, the Start Date can't be earlier than 90 days from today. If the End Date field is left blank, Airbyte will replicate data to today."]}),"\n",(0,s.jsxs)(t.li,{children:["Click ",(0,s.jsx)(t.strong,{children:"Set up source"}),"."]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"supported-sync-modes",children:"Supported sync modes"}),"\n",(0,s.jsxs)(t.p,{children:["The Apple Search Ads source connector supports the following ",(0,s.jsx)(t.a,{href:"https://docs.airbyte.com/cloud/core-concepts#connection-sync-modes",children:"sync modes"}),":"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.airbyte.com/understanding-airbyte/glossary#full-refresh-sync",children:"Full Refresh - Overwrite"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.airbyte.com/understanding-airbyte/connections/full-refresh-append",children:"Full Refresh - Append"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.airbyte.com/understanding-airbyte/connections/incremental-append",children:"Incremental - Append"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.airbyte.com/understanding-airbyte/connections/incremental-append-deduped",children:"Incremental - Append + Deduped"})}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"supported-streams",children:"Supported Streams"}),"\n",(0,s.jsxs)(t.p,{children:["The Apple Ads source connector supports the following streams. For more information, see the ",(0,s.jsx)(t.a,{href:"https://developer.apple.com/documentation/apple_search_ads",children:"Apple Search Ads API"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"base-streams",children:"Base streams"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://developer.apple.com/documentation/apple_search_ads/get_all_campaigns",children:"campaigns"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://developer.apple.com/documentation/apple_search_ads/get_all_ad_groups",children:"adgroups"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://developer.apple.com/documentation/apple_search_ads/get_all_targeting_keywords_in_an_ad_group",children:"keywords"})}),"\n"]}),"\n",(0,s.jsx)(t.h3,{id:"report-streams",children:"Report Streams"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://developer.apple.com/documentation/apple_search_ads/get_campaign-level_reports",children:"campaigns_report_daily"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://developer.apple.com/documentation/apple_search_ads/get__ad_group-level_reports",children:"adgroups_report_daily"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://developer.apple.com/documentation/apple_search_ads/get_keyword-level_reports",children:"keywords_report_daily"})}),"\n"]}),"\n",(0,s.jsx)(t.h3,{id:"report-aggregation",children:"Report aggregation"}),"\n",(0,s.jsxs)(t.p,{children:["The Apple Search Ads currently offers ",(0,s.jsx)(t.a,{href:"https://developer.apple.com/documentation/apple_search_ads/reportingrequest",children:"aggregation"})," at hourly, daily, weekly, or monthly level."]}),"\n",(0,s.jsx)(t.p,{children:"However, at this moment and as indicated in the stream names, the connector only offers data with daily aggregation."}),"\n",(0,s.jsx)(t.h2,{id:"reference",children:"Reference"}),"\n",(0,s.jsx)(l,{connector:"source-apple-search-ads",specJSON:'{"$schema":"http://json-schema.org/draft-07/schema#","title":"Apple Search Ads Spec","type":"object","required":["org_id","client_id","client_secret","start_date"],"additionalProperties":true,"properties":{"org_id":{"type":"integer","title":"Org Id","description":"The identifier of the organization that owns the campaign. Your Org Id is the same as your account in the Apple Search Ads UI."},"client_id":{"type":"string","title":"Client Id","description":"A user identifier for the token request. See <a href=\\"https://developer.apple.com/documentation/apple_search_ads/implementing_oauth_for_the_apple_search_ads_api\\">here</a>","airbyte_secret":true},"client_secret":{"type":"string","title":"Client Secret","description":"A string that authenticates the user\u2019s setup request. See <a href=\\"https://developer.apple.com/documentation/apple_search_ads/implementing_oauth_for_the_apple_search_ads_api\\">here</a>","airbyte_secret":true},"start_date":{"type":"string","title":"Start Date","description":"Start getting data from that date.","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$","examples":["2020-01-01"]},"end_date":{"type":"string","title":"End Date","description":"Data is retrieved until that date (included)","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$","examples":["2021-01-01"]}}}'}),"\n",(0,s.jsx)(t.h2,{id:"changelog",children:"Changelog"}),"\n",(0,s.jsxs)(r,{children:[(0,s.jsx)("summary",{children:"Expand to review"}),(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{style:{textAlign:"left"},children:"Version"}),(0,s.jsx)(t.th,{style:{textAlign:"left"},children:"Date"}),(0,s.jsx)(t.th,{style:{textAlign:"left"},children:"Pull Request"}),(0,s.jsx)(t.th,{style:{textAlign:"left"},children:"Subject"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"0.1.7"}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"2024-07-10"}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:(0,s.jsx)(t.a,{href:"https://github.com/airbytehq/airbyte/pull/41546",children:"41546"})}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"Update dependencies"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"0.1.6"}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"2024-07-09"}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:(0,s.jsx)(t.a,{href:"https://github.com/airbytehq/airbyte/pull/40832",children:"40832"})}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"Update dependencies"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"0.1.5"}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"2024-06-25"}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:(0,s.jsx)(t.a,{href:"https://github.com/airbytehq/airbyte/pull/40364",children:"40364"})}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"Update dependencies"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"0.1.4"}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"2024-06-22"}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:(0,s.jsx)(t.a,{href:"https://github.com/airbytehq/airbyte/pull/40186",children:"40186"})}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"Update dependencies"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"0.1.3"}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"2024-06-04"}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:(0,s.jsx)(t.a,{href:"https://github.com/airbytehq/airbyte/pull/38967",children:"38967"})}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"[autopull] Upgrade base image to v1.2.1"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"0.1.2"}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"2024-05-21"}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:(0,s.jsx)(t.a,{href:"https://github.com/airbytehq/airbyte/pull/38502",children:"38502"})}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"[autopull] base image + poetry + up_to_date"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"0.1.1"}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"2023-07-11"}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:(0,s.jsx)(t.a,{href:"https://github.com/airbytehq/airbyte/pull/28153",children:"28153"})}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"Fix manifest duplicate key (no change in behavior for the syncs)"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"0.1.0"}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"2022-11-17"}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:(0,s.jsx)(t.a,{href:"https://github.com/airbytehq/airbyte/pull/19557",children:"19557"})}),(0,s.jsx)(t.td,{style:{textAlign:"left"},children:"Initial release with campaigns, adgroups & keywords streams (base and daily reports)"})]})]})]})]})]})}function h(e={}){const{wrapper:t}={...(0,n.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(o,{...e})}):o(e)}function p(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},67541:(e,t,r)=>{r.d(t,{Z:()=>a,a:()=>l});var s=r(50959);const n={},i=s.createContext(n);function l(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:l(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]);