Skip to main content

Loading Data from Pinterest to Azure Cloud Storage with dlt in Python

Need help deploying these pipelines, or figuring out how to run them in your data stack?

Join our Slack community or book a call with our support engineer Violetta.

Loading data from Pinterest to Azure Cloud Storage involves transferring images, animated GIFs, and videos from the popular social media platform to Microsoft's cloud storage service. This process can be efficiently managed using the open-source Python library, dlt. dlt enables seamless data extraction and loading, ensuring that your data is stored in Azure Cloud Storage in formats like JSONL, Parquet, or CSV. This setup allows for the creation of robust data lakes on Azure, facilitating advanced data analysis and management. For more details about Pinterest, visit Pinterest's website.

dlt Key Features

  • Pipeline Metadata: dlt pipelines leverage metadata to provide governance capabilities, including load IDs for tracking data loads and facilitating data lineage and traceability. Read more about lineage.
  • Schema Enforcement and Curation: Enforce and curate schemas to ensure data consistency and quality. Schemas define the structure of normalized data and guide the processing and loading of data. Read more about adjusting schemas.
  • Schema Evolution: dlt enables proactive governance by alerting users to schema changes, allowing necessary actions such as reviewing and validating changes, updating downstream processes, or performing impact analysis. Learn more.
  • Scaling and Finetuning: Offers several mechanisms and configuration options to scale up and finetune pipelines, including running extraction, normalization, and load in parallel. Read more about performance.
  • Advanced Features: dlt is a constantly growing library that supports many features and use cases needed by the community. Join our Slack to find recent releases or discuss what you can build with dlt. Build a pipeline tutorial.

Getting started with your pipeline locally

OpenAPI Source Generator dlt-init-openapi

This walkthrough makes use of the dlt-init-openapi generator cli tool. You can read more about it here. The code generated by this tool uses the dlt rest_api verified source, docs for this are here.

0. Prerequisites

dlt and dlt-init-openapi requires Python 3.9 or higher. Additionally, you need to have the pip package manager installed, and we recommend using a virtual environment to manage your dependencies. You can learn more about preparing your computer for dlt in our installation reference.

1. Install dlt and dlt-init-openapi

First you need to install the dlt-init-openapi cli tool.

pip install dlt-init-openapi

The dlt-init-openapi cli is a powerful generator which you can use to turn any OpenAPI spec into a dlt source to ingest data from that api. The quality of the generator source is dependent on how well the API is designed and how accurate the OpenAPI spec you are using is. You may need to make tweaks to the generated code, you can learn more about this here.

# generate pipeline
# NOTE: add_limit adds a global limit, you can remove this later
# NOTE: you will need to select which endpoints to render, you
# can just hit Enter and all will be rendered.
dlt-init-openapi pinterest --url https://raw.githubusercontent.com/dlt-hub/openapi-specs/main/open_api_specs/Business/pinterest.yaml --global-limit 2
cd pinterest_pipeline
# install generated requirements
pip install -r requirements.txt

The last command will install the required dependencies for your pipeline. The dependencies are listed in the requirements.txt:

dlt>=0.4.12

You now have the following folder structure in your project:

pinterest_pipeline/
├── .dlt/
│ ├── config.toml # configs for your pipeline
│ └── secrets.toml # secrets for your pipeline
├── rest_api/ # The rest api verified source
│ └── ...
├── pinterest/
│ └── __init__.py # TODO: possibly tweak this file
├── pinterest_pipeline.py # your main pipeline script
├── requirements.txt # dependencies for your pipeline
└── .gitignore # ignore files for git (not required)

1.1. Tweak pinterest/__init__.py

This file contains the generated configuration of your rest_api. You can continue with the next steps and leave it as is, but you might want to come back here and make adjustments if you need your rest_api source set up in a different way. The generated file for the pinterest source will look like this:

Click to view full file (2212 lines)

from typing import List

import dlt
from dlt.extract.source import DltResource
from rest_api import rest_api_source
from rest_api.typing import RESTAPIConfig


@dlt.source(name="pinterest_source", max_table_nesting=2)
def pinterest_source(
base_url: str = dlt.config.value,
) -> List[DltResource]:

# source configuration
source_config: RESTAPIConfig = {
"client": {
"base_url": base_url,
},
"resources":
[
# Get account information for the "operation user_account" - By default, the "operation user_account" is the token user_account. If using Business Access: Specify an ad_account_id to use the owner of that ad_account as the "operation user_account". See <a href='/docs/reference/business-access/'>Understanding Business Access</a> for more information.
{
"name": "user_accountget",
"table_name": "account",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/user_account",
"params": {
# the parameters below can optionally be configured
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get an ad account
{
"name": "ad_accountsget",
"table_name": "ad_account",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter

},
"paginator": "auto",
}
},
# Get the advertiser's list of lead ads subscriptions. - Only requests for the OWNER or ADMIN of the ad_account will be allowed. <strong>This endpoint is currently in beta and not available to all apps. <a href='/docs/new/about-beta-access/'>Learn more</a>.</strong>
{
"name": "ad_accounts_subscriptionsget_list",
"table_name": "ad_account_get_subscription_response",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/ad_accounts/{ad_account_id}/leads/subscriptions",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "page_size": "25",
# "bookmark": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get a specific lead ads subscription record. - Only requests for the OWNER or ADMIN of the ad_account will be allowed. <strong>This endpoint is currently in beta and not available to all apps. <a href='/docs/new/about-beta-access/'>Learn more</a>.</strong>
{
"name": "ad_accounts_subscriptionsget_by_id",
"table_name": "ad_account_get_subscription_response",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/leads/subscriptions/{subscription_id}",
"params": {
"subscription_id": {
"type": "resolve",
"resource": "ad_accounts_subscriptionsget_list",
"field": "id",
},
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter

},
"paginator": "auto",
}
},
# Get Ad Accounts countries
{
"name": "ad_account_countriesget",
"table_name": "ad_accounts_country_response_data",
"endpoint": {
"data_selector": "items",
"path": "/resources/ad_account_countries",
"paginator": "auto",
}
},
# List ad groups based on provided campaign IDs or ad group IDs.(campaign_ids or ad_group_ids). <p/> <strong>Note:</strong><p/> Provide only campaign_id or ad_group_id. Do not provide both.
{
"name": "ad_groupslist",
"table_name": "ad_group_response",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/ad_accounts/{ad_account_id}/ad_groups",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "campaign_ids": "OPTIONAL_CONFIG",
# "ad_group_ids": "OPTIONAL_CONFIG",
# "entity_statuses": "['ACTIVE', 'PAUSED']",
# "page_size": "25",
# "order": "OPTIONAL_CONFIG",
# "bookmark": "OPTIONAL_CONFIG",
# "translate_interests_to_names": "false",

},
"paginator": "auto",
}
},
# Get a specific ad given the ad ID. If your pin is rejected, rejected_reasons will contain additional information from the Ad Review process. For more information about our policies and rejection reasons see the <a href="https://www.pinterest.com/_/_/policy/advertising-guidelines/" target="_blank">Pinterest advertising standards</a>.
{
"name": "ad_groupsget",
"table_name": "ad_group_response",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/ad_groups/{ad_group_id}",
"params": {
"ad_group_id": {
"type": "resolve",
"resource": "ad_groupslist",
"field": "id",
},
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter

},
"paginator": "auto",
}
},
# List ads that meet the filters provided: - Listed campaign ids or ad group ids or ad ids - Listed entity statuses <p/> If no filter is provided, all ads in the ad account are returned. <p/> <strong>Note:</strong><p/> Provide only campaign_id or ad_group_id or ad_id. Do not provide more than one type. <p/> Review status is provided for each ad; if review_status is REJECTED, the rejected_reasons field will contain additional information. For more, see <a href="https://policy.pinterest.com/en/advertising-guidelines">Pinterest advertising standards</a>.
{
"name": "adslist",
"table_name": "ad_response",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/ad_accounts/{ad_account_id}/ads",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "campaign_ids": "OPTIONAL_CONFIG",
# "ad_group_ids": "OPTIONAL_CONFIG",
# "ad_ids": "OPTIONAL_CONFIG",
# "entity_statuses": "['ACTIVE', 'PAUSED']",
# "page_size": "25",
# "order": "OPTIONAL_CONFIG",
# "bookmark": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get a specific ad given the ad ID. If your pin is rejected, rejected_reasons will contain additional information from the Ad Review process. For more information about our policies and rejection reasons see the <a href="https://www.pinterest.com/_/_/policy/advertising-guidelines/" target="_blank">Pinterest advertising standards</a>.
{
"name": "adsget",
"table_name": "ad_response",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/ads/{ad_id}",
"params": {
"ad_id": {
"type": "resolve",
"resource": "adslist",
"field": "id",
},
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter

},
"paginator": "auto",
}
},
# This returns a URL to an analytics report given a token returned from the post request report creation call. You can use the URL to download the report. The link is valid for five minutes and the report is valid for one hour. - The token's user_account must either be the Owner of the specified ad account, or have one of the necessary roles granted to them via <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a>: Admin, Analyst, Campaign Manager.
{
"name": "analyticsget_report",
"table_name": "ads_analytics_get_async_response",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/reports",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
"token": "FILL_ME_IN", # TODO: fill in required query parameter

},
"paginator": "auto",
}
},
# Returns the list of discounts applied to the account. <strong>This endpoint might not be available to all apps. <a href='/docs/new/about-beta-access/'>Learn more</a>.</strong>
{
"name": "ads_credits_discountsget",
"table_name": "ads_credit_discounts_response",
"endpoint": {
"data_selector": "items",
"path": "/ad_accounts/{ad_account_id}/ads_credit/discounts",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",

},
"paginator": "auto",
}
},
# Get analytics for the specified ad groups in the specified <code>ad_account_id</code>, filtered by the specified options. - The token's user_account must either be the Owner of the specified ad account, or have one of the necessary roles granted to them via <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a>: Admin, Analyst, Campaign Manager. - If granularity is not HOUR, the furthest back you can are allowed to pull data is 90 days before the current date in UTC time and the max time range supported is 90 days. - If granularity is HOUR, the furthest back you can are allowed to pull data is 8 days before the current date in UTC time and the max time range supported is 3 days.
{
"name": "ad_groupsanalytics",
"table_name": "analytic",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/ad_groups/analytics",
"params": {
"ad_account_id": {
"type": "resolve",
"resource": "ad_groupslist",
"field": "ad_account_id",
},
"start_date": "FILL_ME_IN", # TODO: fill in required query parameter
"end_date": "FILL_ME_IN", # TODO: fill in required query parameter
"ad_group_ids": "FILL_ME_IN", # TODO: fill in required query parameter
"columns": "FILL_ME_IN", # TODO: fill in required query parameter
"granularity": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "click_window_days": "30",
# "engagement_window_days": "30",
# "view_window_days": "1",
# "conversion_report_time": "TIME_OF_AD_ACTION",

},
"paginator": "auto",
}
},
# Get analytics for the specified ads in the specified <code>ad_account_id</code>, filtered by the specified options. - The token's user_account must either be the Owner of the specified ad account, or have one of the necessary roles granted to them via <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a>: Admin, Analyst, Campaign Manager. - If granularity is not HOUR, the furthest back you can are allowed to pull data is 90 days before the current date in UTC time and the max time range supported is 90 days. - If granularity is HOUR, the furthest back you can are allowed to pull data is 8 days before the current date in UTC time and the max time range supported is 3 days.
{
"name": "adsanalytics",
"table_name": "analytic",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/ads/analytics",
"params": {
"ad_account_id": {
"type": "resolve",
"resource": "adslist",
"field": "ad_account_id",
},
"start_date": "FILL_ME_IN", # TODO: fill in required query parameter
"end_date": "FILL_ME_IN", # TODO: fill in required query parameter
"ad_ids": "FILL_ME_IN", # TODO: fill in required query parameter
"columns": "FILL_ME_IN", # TODO: fill in required query parameter
"granularity": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "click_window_days": "30",
# "engagement_window_days": "30",
# "view_window_days": "1",
# "conversion_report_time": "TIME_OF_AD_ACTION",

},
"paginator": "auto",
}
},
# Get analytics for the specified <code>ad_account_id</code>, filtered by the specified options. - The token's user_account must either be the Owner of the specified ad account, or have one of the necessary roles granted to them via <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a>: Admin, Analyst, Campaign Manager. - If granularity is not HOUR, the furthest back you can are allowed to pull data is 90 days before the current date in UTC time and the max time range supported is 90 days. - If granularity is HOUR, the furthest back you can are allowed to pull data is 8 days before the current date in UTC time.
{
"name": "ad_accountanalytics",
"table_name": "analytic",
"primary_key": "AD_ACCOUNT_ID",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/analytics",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
"start_date": "FILL_ME_IN", # TODO: fill in required query parameter
"end_date": "FILL_ME_IN", # TODO: fill in required query parameter
"columns": "FILL_ME_IN", # TODO: fill in required query parameter
"granularity": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "click_window_days": "30",
# "engagement_window_days": "30",
# "view_window_days": "1",
# "conversion_report_time": "TIME_OF_AD_ACTION",

},
"paginator": "auto",
}
},
# Get analytics for the specified campaigns in the specified <code>ad_account_id</code>, filtered by the specified options. - The token's user_account must either be the Owner of the specified ad account, or have one of the necessary roles granted to them via <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a>: Admin, Analyst, Campaign Manager. - If granularity is not HOUR, the furthest back you can are allowed to pull data is 90 days before the current date in UTC time and the max time range supported is 90 days. - If granularity is HOUR, the furthest back you can are allowed to pull data is 8 days before the current date in UTC time and the max time range supported is 3 days.
{
"name": "campaignsanalytics",
"table_name": "analytic",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/campaigns/analytics",
"params": {
"ad_account_id": {
"type": "resolve",
"resource": "campaignslist",
"field": "ad_account_id",
},
"start_date": "FILL_ME_IN", # TODO: fill in required query parameter
"end_date": "FILL_ME_IN", # TODO: fill in required query parameter
"campaign_ids": "FILL_ME_IN", # TODO: fill in required query parameter
"columns": "FILL_ME_IN", # TODO: fill in required query parameter
"granularity": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "click_window_days": "30",
# "engagement_window_days": "30",
# "view_window_days": "1",
# "conversion_report_time": "TIME_OF_AD_ACTION",

},
"paginator": "auto",
}
},
# Get analytics for the specified product groups in the specified <code>ad_account_id</code>, filtered by the specified options. - The token's user_account must either be the Owner of the specified ad account, or have one of the necessary roles granted to them via <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a>: Admin, Analyst, Campaign Manager. - If granularity is not HOUR, the furthest back you can are allowed to pull data is 90 days before the current date in UTC time and the max time range supported is 90 days. - If granularity is HOUR, the furthest back you can are allowed to pull data is 8 days before the current date in UTC time and the max time range supported is 3 days.
{
"name": "product_groupsanalytics",
"table_name": "analytic",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/product_groups/analytics",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
"start_date": "FILL_ME_IN", # TODO: fill in required query parameter
"end_date": "FILL_ME_IN", # TODO: fill in required query parameter
"product_group_ids": "FILL_ME_IN", # TODO: fill in required query parameter
"columns": "FILL_ME_IN", # TODO: fill in required query parameter
"granularity": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "click_window_days": "30",
# "engagement_window_days": "30",
# "view_window_days": "1",
# "conversion_report_time": "TIME_OF_AD_ACTION",

},
"paginator": "auto",
}
},
# Get analytics for the "operation user_account" - By default, the "operation user_account" is the token user_account. Optional: Business Access: Specify an ad_account_id to use the owner of that ad_account as the "operation user_account".
{
"name": "user_accountanalytics",
"table_name": "analytics_response",
"endpoint": {
"data_selector": "$",
"path": "/user_account/analytics",
"params": {
"start_date": "FILL_ME_IN", # TODO: fill in required query parameter
"end_date": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "from_claimed_content": "BOTH",
# "pin_format": "ALL",
# "app_types": "ALL",
# "content_type": "ALL",
# "source": "ALL",
# "metric_types": "OPTIONAL_CONFIG",
# "split_field": "NO_SPLIT",
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get assets on which you assigned asset permissions to the given member. Can be used to: - get all assets, regardless of asset type or - get assets of one asset type by using the asset_type query. The return response will include the permissions the member has to that asset and the asset type.
{
"name": "business_member_assetsget",
"table_name": "asset_id_permissions",
"primary_key": "asset_id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/businesses/{business_id}/members/{member_id}/assets",
"params": {
"member_id": {
"type": "resolve",
"resource": "getbusiness_members",
"field": "id",
},
"business_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "asset_type": "AD_ACCOUNT",
# "start_index": "0",
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",

},
"paginator": "auto",
}
},
# Get list of audiences for the ad account.
{
"name": "audienceslist",
"table_name": "audience",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/ad_accounts/{ad_account_id}/audiences",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "order": "OPTIONAL_CONFIG",
# "page_size": "25",
# "ownership_type": "OWNED",

},
"paginator": "auto",
}
},
# Get a specific audience given the audience ID.
{
"name": "audiencesget",
"table_name": "audience",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/audiences/{audience_id}",
"params": {
"audience_id": {
"type": "resolve",
"resource": "audienceslist",
"field": "id",
},
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter

},
"paginator": "auto",
}
},
# Get Audience Insights for an ad account. The response will return insights for 3 types of audiences: the ad account's engaged audience on Pinterest, the ad account's total audience on Pinterest and Pinterest's total audience.<p/> <a href="https://help.pinterest.com/en/business/article/audience-insights" target="_blank">Learn more about Audience Insights</a>.
{
"name": "audience_insightsget",
"table_name": "audience_category",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "categories",
"path": "/ad_accounts/{ad_account_id}/audience_insights",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
"audience_insight_type": "YOUR_TOTAL_AUDIENCE", # TODO: fill in required query parameter

},
"paginator": "auto",
}
},
# Get the scope and type of available audiences, which along with a date, is an audience that has recently had an interaction (referred to here as a type) on pins. Interacted pins can belong to at least the most common **partner** or **Pinterest** scopes. This means that user interactions made on advertiser or partner pins will have the **partner** scope. You can also have user interactions performed in general on Pinterest with the **Pinterest** scope. In that case, you can then use the returned type and scope values together on requests to other endpoints to retrieve insight metrics for a desired audience.
{
"name": "audience_insights_scope_and_typeget",
"table_name": "audience_definition",
"endpoint": {
"data_selector": "items",
"path": "/ad_accounts/{ad_account_id}/insights/audiences",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter

},
"paginator": "auto",
}
},
# Get billing profiles in the advertiser account. <strong>This endpoint might not be available to all apps. <a href='/docs/new/about-beta-access/'>Learn more</a>.</strong>
{
"name": "billing_profilesget",
"table_name": "billing_profiles_response",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/ad_accounts/{ad_account_id}/billing_profiles",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
"is_active": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",

},
"paginator": "auto",
}
},
# Get a board owned by the operation user_account - or a group board that has been shared with this account. - Optional: Business Access: Specify an ad_account_id to use the owner of that ad_account as the "operation user_account". - By default, the "operation user_account" is the token user_account.
{
"name": "boardsget",
"table_name": "board",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/boards/{board_id}",
"params": {
"board_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get a list of the boards a user follows. The request returns a board summary object array.
{
"name": "boards_user_followslist",
"table_name": "board",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/user_account/following/boards",
"params": {
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",
# "explicit_following": "false",
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Learn whether conversion or non-conversion metrics are finalized and ready to query.
{
"name": "metrics_ready_stateget",
"table_name": "book_closed_response",
"endpoint": {
"data_selector": "$",
"path": "/resources/metrics_ready_state",
"params": {
"date": "FILL_ME_IN", # TODO: fill in required query parameter

},
"paginator": "auto",
}
},
# <strong>This endpoint is currently in beta and not available to all apps. <a href='/docs/new/about-beta-access/'>Learn more</a>.</strong> Get analytics for multiple pins owned by the "operation user_account" - or on a group board that has been shared with this account. - The maximum number of pins supported in a single request is 100. - By default, the "operation user_account" is the token user_account. Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href="https://developers.pinterest.com/docs/api/v5/#operation/ad_accounts/list">List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account: - For Pins on public or protected boards: Admin, Analyst. - For Pins on secret boards: Admin. If Pin was created before <code>2023-03-20</code> lifetime metrics will only be available for Video and Idea Pin formats. Lifetime metrics are available for all Pin formats since then.
{
"name": "multi_pinsanalytics",
"table_name": "bulk_pin_analytics_response",
"endpoint": {
"data_selector": "$",
"path": "/pins/analytics",
"params": {
"start_date": "FILL_ME_IN", # TODO: fill in required query parameter
"end_date": "FILL_ME_IN", # TODO: fill in required query parameter
"metric_types": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "pin_ids": "OPTIONAL_CONFIG",
# "app_types": "ALL",
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get the status of a bulk request by <code>request_id</code>, along with a download URL that will allow you to download the new or updated entity data (campaigns, ad groups, product groups, ads, or keywords).
{
"name": "bulk_requestget",
"table_name": "bulk_upsert_status_response",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/bulk/{bulk_request_id}",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
"bulk_request_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "include_details": "false",

},
"paginator": "auto",
}
},
# Get a list of the campaigns in the specified <code>ad_account_id</code>, filtered by the specified options. - The token's user_account must either be the Owner of the specified ad account, or have one of the necessary roles granted to them via <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a>: Admin, Analyst, Campaign Manager.
{
"name": "campaignslist",
"table_name": "campaign_response",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/ad_accounts/{ad_account_id}/campaigns",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "campaign_ids": "OPTIONAL_CONFIG",
# "entity_statuses": "['ACTIVE', 'PAUSED']",
# "page_size": "25",
# "order": "OPTIONAL_CONFIG",
# "bookmark": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get a specific campaign given the campaign ID.
{
"name": "campaignsget",
"table_name": "campaign_response",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/campaigns/{campaign_id}",
"params": {
"campaign_id": {
"type": "resolve",
"resource": "campaignslist",
"field": "id",
},
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter

},
"paginator": "auto",
}
},
# Fetch catalogs owned by the "operation user_account". - By default, the "operation user_account" is the token user_account. Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href='/docs/api/v5/#operation/ad_accounts/list'>List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account: Owner, Admin, Catalogs Manager. <a href='/docs/shopping/catalog/'>Learn more</a>
{
"name": "catalogslist",
"table_name": "catalog",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/catalogs",
"params": {
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# This endpoint is completely deprecated. Please use <a href='/docs/api/v5/#operation/catalogs_product_groups/list'>List product groups</a> from Catalogs API instead.
{
"name": "ad_accounts_catalogs_product_groupslist",
"table_name": "catalog_product_group",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/ad_accounts/{ad_account_id}/product_groups/catalogs",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "feed_profile_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Fetch feeds owned by the "operation user_account". - By default, the "operation user_account" is the token user_account. Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href='/docs/api/v5/#operation/ad_accounts/list'>List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account: Owner, Admin, Catalogs Manager. For Retail partners, refer to <a href='https://help.pinterest.com/en/business/article/before-you-get-started-with-catalogs'>Before you get started with Catalogs</a>. For Hotel parterns, refer to <a href='/docs/shopping/catalog/'>Pinterest API for shopping</a>.
{
"name": "feedslist",
"table_name": "catalogs_feed",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/catalogs/feeds",
"params": {
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",
# "catalog_id": "OPTIONAL_CONFIG",
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get a single feed owned by the "operation user_account". - By default, the "operation user_account" is the token user_account. Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href='/docs/api/v5/#operation/ad_accounts/list'>List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account: Owner, Admin, Catalogs Manager. For Retail partners, refer to <a href='https://help.pinterest.com/en/business/article/before-you-get-started-with-catalogs'>Before you get started with Catalogs</a>. For Hotel parterns, refer to <a href='/docs/shopping/catalog/'>Pinterest API for shopping</a>.
{
"name": "feedsget",
"table_name": "catalogs_feed",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/catalogs/feeds/{feed_id}",
"params": {
"feed_id": {
"type": "resolve",
"resource": "feedslist",
"field": "id",
},
# the parameters below can optionally be configured
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Fetch a feed processing results owned by the "operation user_account". Please note that for now the bookmark parameter is not functional and only the first page will be available until it is implemented in some release in the near future. - By default, the "operation user_account" is the token user_account. Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href='/docs/api/v5/#operation/ad_accounts/list'>List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account: Owner, Admin, Catalogs Manager. <a href='/docs/shopping/catalog/'>Learn more</a>
{
"name": "feed_processing_resultslist",
"table_name": "catalogs_feed_processing_result",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/catalogs/feeds/{feed_id}/processing_results",
"params": {
"feed_id": {
"type": "resolve",
"resource": "feedslist",
"field": "id",
},
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# List item validation issues for a given feed processing result owned by the "operation user_account". Up to 20 random samples of affected items are returned for each error and warning code. Please note that for now query parameters 'item_numbers' and 'item_validation_issue' cannot be used simultaneously until it is implemented in some release in the future. - By default, the "operation user_account" is the token user_account. Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href='/docs/api/v5/#operation/ad_accounts/list'>List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account: Owner, Admin, Catalogs Manager. <a href='/docs/shopping/catalog/'>Learn more</a>
{
"name": "items_issueslist",
"table_name": "catalogs_item_validation_issues",
"endpoint": {
"data_selector": "items",
"path": "/catalogs/processing_results/{processing_result_id}/item_issues",
"params": {
"processing_result_id": {
"type": "resolve",
"resource": "catalogslist",
"field": "id",
},
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",
# "item_numbers": "OPTIONAL_CONFIG",
# "item_validation_issue": "OPTIONAL_CONFIG",
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get a single catalogs items batch owned by the "operating user_account". <a href="/docs/shopping/catalog/#Update%20items%20in%20batch" target="_blank">See detailed documentation here.</a> - By default, the "operation user_account" is the token user_account. Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href='/docs/api/v5/#operation/ad_accounts/list'>List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account: Owner, Admin, Catalogs Manager.
{
"name": "items_batchget",
"table_name": "catalogs_items_batch",
"primary_key": "batch_id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/catalogs/items/batch/{batch_id}",
"params": {
"batch_id": {
"type": "resolve",
"resource": "itemsget",
"field": "item_id",
},
# the parameters below can optionally be configured
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get a product counts for a given Catalogs Product Group owned by the "operation user_account". - By default, the "operation user_account" is the token user_account. Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href='/docs/api/v5/#operation/ad_accounts/list'>List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account: Owner, Admin, Catalogs Manager. Note: This endpoint only supports RETAIL catalog at the moment. <a href='/docs/shopping/catalog/'>Learn more</a>
{
"name": "catalogs_product_groupsproduct_counts_get",
"table_name": "catalogs_product_group_product_counts",
"endpoint": {
"data_selector": "$",
"path": "/catalogs/product_groups/{product_group_id}/product_counts",
"params": {
"product_group_id": {
"type": "resolve",
"resource": "catalogs_product_groupslist",
"field": "id",
},
# the parameters below can optionally be configured
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# This returns a URL to a report given a token returned from <a href='/docs/api/v5/#operation/reports/create'>Build catalogs report</a>. You can use the URL to download the report. - By default, the "operation user_account" is the token user_account. Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href='/docs/api/v5/#operation/ad_accounts/list'>List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account: Owner, Admin, Catalogs Manager.
{
"name": "reportsget",
"table_name": "catalogs_report",
"endpoint": {
"data_selector": "$",
"path": "/catalogs/reports",
"params": {
"token": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# List aggregated numbers of issues for a catalog owned by the "operation user_account". - By default, the "operation user_account" is the token user_account. Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href='/docs/api/v5/#operation/ad_accounts/list'>List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account: Owner, Admin, Catalogs Manager.
{
"name": "reportsstats",
"table_name": "catalogs_report_stats",
"endpoint": {
"data_selector": "items",
"path": "/catalogs/reports/stats",
"params": {
"parameters": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "ad_account_id": "OPTIONAL_CONFIG",
# "page_size": "25",
# "bookmark": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get a list of product groups for a given Catalogs Feed Id owned by the "operation user_account". - By default, the "operation user_account" is the token user_account. Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href='/docs/api/v5/#operation/ad_accounts/list'>List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account: Owner, Admin, Catalogs Manager. <a href='/docs/shopping/catalog/'>Learn more</a>
{
"name": "catalogs_product_groupslist",
"table_name": "catalogs_vertical_product_group",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/catalogs/product_groups",
"params": {
# the parameters below can optionally be configured
# "id": "OPTIONAL_CONFIG",
# "feed_id": "OPTIONAL_CONFIG",
# "catalog_id": "OPTIONAL_CONFIG",
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get a singe product group for a given Catalogs Product Group Id owned by the "operation user_account". - By default, the "operation user_account" is the token user_account. Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href='/docs/api/v5/#operation/ad_accounts/list'>List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account: Owner, Admin, Catalogs Manager. <a href='/docs/shopping/catalog/'>Learn more</a>
{
"name": "catalogs_product_groupsget",
"table_name": "catalogs_vertical_product_group",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/catalogs/product_groups/{product_group_id}",
"params": {
"product_group_id": {
"type": "resolve",
"resource": "catalogs_product_groupslist",
"field": "id",
},
# the parameters below can optionally be configured
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get all page visit conversion tag events for an ad account.
{
"name": "page_visit_conversion_tagsget",
"table_name": "conversion_event_response",
"primary_key": "ad_account_id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/ad_accounts/{ad_account_id}/conversion_tags/page_visit",
"params": {
"ad_account_id": {
"type": "resolve",
"resource": "conversion_tagslist",
"field": "ad_account_id",
},
# the parameters below can optionally be configured
# "page_size": "25",
# "order": "OPTIONAL_CONFIG",
# "bookmark": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# List conversion tags associated with an ad account.
{
"name": "conversion_tagslist",
"table_name": "conversion_tag_response",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/ad_accounts/{ad_account_id}/conversion_tags",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "filter_deleted": "false",

},
"paginator": "auto",
}
},
# Get information about an existing conversion tag.
{
"name": "conversion_tagsget",
"table_name": "conversion_tag_response",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/conversion_tags/{conversion_tag_id}",
"params": {
"conversion_tag_id": {
"type": "resolve",
"resource": "conversion_tagslist",
"field": "id",
},
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter

},
"paginator": "auto",
}
},
# Get Ocpm eligible conversion tag events for an ad account.
{
"name": "ocpm_eligible_conversion_tagsget",
"table_name": "conversion_tags_ocpm_eligible_response",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/conversion_tags/ocpm_eligible",
"params": {
"ad_account_id": {
"type": "resolve",
"resource": "conversion_tagslist",
"field": "ad_account_id",
},

},
"paginator": "auto",
}
},
# <p>Get a set of customer lists including id and name based on the filters provided.</p> <p>(Customer lists are a type of audience.) For more information, see <a href="https://help.pinterest.com/en/business/article/audience-targeting" target="_blank">Audience targeting</a> or the <a href="/docs/ads/targeting/#Audiences" target="_blank">Audiences</a> section of the ads management guide.</p>
{
"name": "customer_listslist",
"table_name": "customer_list",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/ad_accounts/{ad_account_id}/customer_lists",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "page_size": "25",
# "order": "OPTIONAL_CONFIG",
# "bookmark": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Gets a specific customer list given the customer list ID.
{
"name": "customer_listsget",
"table_name": "customer_list",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/customer_lists/{customer_list_id}",
"params": {
"customer_list_id": {
"type": "resolve",
"resource": "customer_listslist",
"field": "id",
},
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter

},
"paginator": "auto",
}
},
# Get the definitions for ads and organic metrics available across both synchronous and asynchronous report endpoints. The `display_name` attribute will match how the metric is named in our native tools like Ads Manager. See <a href='/docs/content/analytics/'>Organic Analytics</a> and <a href='/docs/ads/ad-analytics-reporting/'>Ads Analytics</a> for more information.
{
"name": "delivery_metricsget",
"table_name": "delivery_metric",
"endpoint": {
"data_selector": "items",
"path": "/resources/delivery_metrics",
"params": {
# the parameters below can optionally be configured
# "report_type": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get all the assets the requesting business has access to. This includes assets the business owns and assets the business has access to through partnerships.
{
"name": "business_assetsget",
"table_name": "get_business_assets_response",
"primary_key": "asset_id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/businesses/{business_id}/assets",
"params": {
"business_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "permissions": "OPTIONAL_CONFIG",
# "asset_type": "AD_ACCOUNT",
# "start_index": "0",
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",

},
"paginator": "auto",
}
},
# Get an mmm report for an ad account. This returns a URL to an mmm metrics report given a token returned from the create mmm report endpoint.
{
"name": "analyticsget_mmm_report",
"table_name": "get_mmm_report_response",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/mmm_reports",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
"token": "FILL_ME_IN", # TODO: fill in required query parameter

},
"paginator": "auto",
}
},
# Can be used to get the business assets your partner has granted you access to or the business assets you have granted your partner access to. If you specify: - partner_type=INTERNAL, you will retrieve your business assets that the partner has access to. - partner_type=EXTERNAL, you will retrieve the partner's business assets that the partner has granted you access to.
{
"name": "business_partner_asset_accessget",
"table_name": "get_partner_assets_response",
"primary_key": "asset_id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/businesses/{business_id}/partners/{partner_id}/assets",
"params": {
"partner_id": {
"type": "resolve",
"resource": "getbusiness_partners",
"field": "id",
},
"business_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "partner_type": "OPTIONAL_CONFIG",
# "asset_type": "AD_ACCOUNT",
# "start_index": "0",
# "page_size": "25",
# "bookmark": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get commerce integration metadata associated with the given external business ID. Note: If you're interested in joining the beta, please reach out to your Pinterest account manager.
{
"name": "integrations_commerceget",
"table_name": "integration_metadata",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/integrations/commerce/{external_business_id}",
"params": {
"external_business_id": {
"type": "resolve",
"resource": "integrationsget_list",
"field": "external_business_id",
},

},
"paginator": "auto",
}
},
# Get integration metadata list. Note: If you're interested in joining the beta, please reach out to your Pinterest account manager.
{
"name": "integrationsget_list",
"table_name": "integration_record",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/integrations",
"params": {
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",

},
"paginator": "auto",
}
},
# Get integration metadata by ID. Note: If you're interested in joining the beta, please reach out to your Pinterest account manager.
{
"name": "integrationsget_by_id",
"table_name": "integration_record",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/integrations/{id}",
"params": {
"id": {
"type": "resolve",
"resource": "integrationsget_list",
"field": "id",
},

},
"paginator": "auto",
}
},
# Get a list of a user's following interests in one place.
{
"name": "user_accountfollowed_interests",
"table_name": "interest",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/users/{username}/interests/follow",
"params": {
"username": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",

},
"paginator": "auto",
}
},
# Get the membership/partnership invites and/or requests for the authorized user.
{
"name": "getinvites",
"table_name": "invite_response",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/businesses/{business_id}/invites",
"params": {
"business_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "is_member": "true",
# "invite_status": "OPTIONAL_CONFIG",
# "invite_type": "OPTIONAL_CONFIG",
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",

},
"paginator": "auto",
}
},
# Get the items of the catalog owned by the "operation user_account". <a href="/docs/shopping/catalog/#Update%20items%20in%20batch" target="_blank">See detailed documentation here.</a> - By default, the "operation user_account" is the token user_account. Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href='/docs/api/v5/#operation/ad_accounts/list'>List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account: Owner, Admin, Catalogs Manager. Note: The catalog type of Creative Assets is only allowed in the <a href='https://api-sandbox.pinterest.com/v5'>Pinterest API Sandbox</a>. If access is required, please contact your partner manager.
{
"name": "itemsget",
"table_name": "item_response",
"primary_key": "item_id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/catalogs/items",
"params": {
"country": "FILL_ME_IN", # TODO: fill in required query parameter
"language": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "ad_account_id": "OPTIONAL_CONFIG",
# "item_ids": "OPTIONAL_CONFIG",
# "filters": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# <p>Get a list of keywords based on the filters provided. If no filter is provided, it will default to the ad_account_id filter, which means it will only return keywords that specifically have parent_id set to the ad_account_id. Note: Keywords can have ad_account_ids, campaign_ids, and ad_group_ids set as their parent_ids. Keywords created through Ads Manager will have their parent_id set to an ad_group_id, not ad_account_id.</p> <p>For more information, see <a target="_blank" href="https://help.pinterest.com/en/business/article/keyword-targeting">Keyword targeting</a>.</p> <p><b>Notes:</b></p> <ul style="list-style-type: square;"> <li>Advertisers and campaigns can only be assigned keywords with excluding ('_NEGATIVE').</li> <li>All keyword match types are available for ad groups.</li> </ul> <p>For more information on match types, see <a target="_blank" href="/docs/ads/targeting/#Match%20type%20and%20targeting%20level">match type enums</a>.</p> <p><b>Returns:</b></p> <ul style="list-style-type: square;"> <li><p>A successful call returns an object containing an array of new keyword objects and an empty &quot;errors&quot; object array.</p></li> <li><p>An unsuccessful call returns an empty keywords array, and, instead, inserts the entire object with nulled/negated properties into the &quot;errors&quot; object array:</p> <pre class="last literal-block"> { "keywords": [], "errors": [ { "data": { "archived": null, "match_type": "EXACT", "parent_type": null, "value": "foobar", "parent_id": null, "type": "keyword", "id": null }, "error_messages": [ "Advertisers and Campaigns only accept excluded targeting attributes." ] } } </pre></li> </ul>
{
"name": "keywordsget",
"table_name": "keyword",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/ad_accounts/{ad_account_id}/keywords",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "campaign_id": "OPTIONAL_CONFIG",
# "ad_group_id": "OPTIONAL_CONFIG",
# "match_types": "OPTIONAL_CONFIG",
# "page_size": "25",
# "bookmark": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# See keyword metrics for a specified country, aggregated across all of Pinterest. (Definitions are available from the "Get delivery metrics definitions" <a href="/docs/api/v5/#operation/delivery_metrics/get">API endpoint</a>).
{
"name": "country_keywords_metricsget",
"table_name": "keyword_metrics_response",
"endpoint": {
"data_selector": "data",
"path": "/ad_accounts/{ad_account_id}/keywords/metrics",
"params": {
"ad_account_id": {
"type": "resolve",
"resource": "keywordsget",
"field": "id",
},
"country_code": "FILL_ME_IN", # TODO: fill in required query parameter
"keywords": "FILL_ME_IN", # TODO: fill in required query parameter

},
"paginator": "auto",
}
},
# Get a list of all lead form question type names. Some questions might not be used. <strong>This endpoint is currently in beta and not available to all apps. <a href='/docs/new/about-beta-access/'>Learn more</a>.</strong>
{
"name": "lead_form_questionsget",
"table_name": "lead_form_question",
"endpoint": {
"path": "/resources/lead_form_questions",
"paginator": "auto",
}
},
# <strong>This feature is currently in beta and not available to all apps, if you're interested in joining the beta, please reach out to your Pinterest account manager.</strong> Gets all Lead Forms associated with an ad account ID. For more, see <a class="reference external" href="https://help.pinterest.com/en/business/article/lead-ads">Lead ads</a>.
{
"name": "lead_formslist",
"table_name": "lead_form_response",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/ad_accounts/{ad_account_id}/lead_forms",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "page_size": "25",
# "order": "OPTIONAL_CONFIG",
# "bookmark": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# <strong>This feature is currently in beta and not available to all apps, if you're interested in joining the beta, please reach out to your Pinterest account manager.</strong> Gets a lead form given it's ID. It must also be associated with the provided ad account ID. For more, see <a class="reference external" href="https://help.pinterest.com/en/business/article/lead-ads">Lead ads</a>.
{
"name": "lead_formget",
"table_name": "lead_form_response",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/lead_forms/{lead_form_id}",
"params": {
"lead_form_id": {
"type": "resolve",
"resource": "lead_formslist",
"field": "id",
},
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter

},
"paginator": "auto",
}
},
# Get a list of your linked business accounts.
{
"name": "linked_business_accountsget",
"table_name": "linked_business",
"endpoint": {
"data_selector": "$",
"path": "/user_account/businesses",
"paginator": "auto",
}
},
# Get details for a registered media upload, including its current status. <strong><a href='/docs/content/content-creation/#Creating%20video%20Pins'>Learn more</a></strong> about video Pin creation.
{
"name": "mediaget",
"table_name": "media_upload_details",
"primary_key": "media_id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/media/{media_id}",
"params": {
"media_id": "FILL_ME_IN", # TODO: fill in required path parameter

},
"paginator": "auto",
}
},
# List existing order lines associated with an ad account.
{
"name": "order_lineslist",
"table_name": "order_line",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/ad_accounts/{ad_account_id}/order_lines",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "page_size": "25",
# "order": "OPTIONAL_CONFIG",
# "bookmark": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get a specific existing order line associated with an ad account.
{
"name": "order_linesget",
"table_name": "order_line",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/order_lines/{order_line_id}",
"params": {
"order_line_id": {
"type": "resolve",
"resource": "order_lineslist",
"field": "id",
},
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter

},
"paginator": "auto",
}
},
# Get a list of the ad_accounts that the "operation user_account" has access to. - This includes ad_accounts they own and ad_accounts that are owned by others who have granted them <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a>.
{
"name": "ad_accountslist",
"table_name": "paginated",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts",
"params": {
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",
# "include_shared_accounts": "true",

},
"paginator": "auto",
}
},
# Get insertion order status for account id <code>ad_account_id</code>. - The token's user_account must either be the Owner of the specified ad account, or have one of the necessary roles granted to them via <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a>: Admin, Finance, Campaign.
{
"name": "ssio_insertion_orders_statusget_by_ad_account",
"table_name": "paginated",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/ssio/insertion_orders/status",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",

},
"paginator": "auto",
}
},
# Get Salesforce order lines for account id <code>ad_account_id</code>. - The token's user_account must either be the Owner of the specified ad account, or have one of the necessary roles granted to them via <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a>: Admin, Finance, Campaign.
{
"name": "ssio_order_linesget_by_ad_account",
"table_name": "paginated",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/ssio/order_lines",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",
# "pin_order_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get a list of the boards owned by the "operation user_account" + group boards where this account is a collaborator Optional: Business Access: Specify an ad_account_id to use the owner of that ad_account as the "operation user_account". Optional: Specify a privacy type (public, protected, or secret) to indicate which boards to return. - If no privacy is specified, all boards that can be returned (based on the scopes of the token and ad_account role if applicable) will be returned.
{
"name": "boardslist",
"table_name": "paginated",
"endpoint": {
"data_selector": "$",
"path": "/boards",
"params": {
# the parameters below can optionally be configured
# "ad_account_id": "OPTIONAL_CONFIG",
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",
# "privacy": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get a list of the Pins on a board owned by the "operation user_account" - or on a group board that has been shared with this account. - Optional: Business Access: Specify an ad_account_id to use the owner of that ad_account as the "operation user_account". - By default, the "operation user_account" is the token user_account.
{
"name": "boardslist_pins",
"table_name": "paginated",
"endpoint": {
"data_selector": "$",
"path": "/boards/{board_id}/pins",
"params": {
"board_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",
# "creative_types": "OPTIONAL_CONFIG",
# "ad_account_id": "OPTIONAL_CONFIG",
# "pin_metrics": "false",

},
"paginator": "auto",
}
},
# Get a list of all board sections from a board owned by the "operation user_account" - or a group board that has been shared with this account. Optional: Business Access: Specify an ad_account_id to use the owner of that ad_account as the "operation user_account". - By default, the "operation user_account" is the token user_account.
{
"name": "board_sectionslist",
"table_name": "paginated",
"endpoint": {
"data_selector": "$",
"path": "/boards/{board_id}/sections",
"params": {
"board_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "ad_account_id": "OPTIONAL_CONFIG",
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",

},
"paginator": "auto",
}
},
# Get a list of the Pins on a board section of a board owned by the "operation user_account" - or on a group board that has been shared with this account. Optional: Business Access: Specify an ad_account_id to use the owner of that ad_account as the "operation user_account". - By default, the "operation user_account" is the token user_account.
{
"name": "board_sectionslist_pins",
"table_name": "paginated",
"endpoint": {
"data_selector": "$",
"path": "/boards/{board_id}/sections/{section_id}/pins",
"params": {
"board_id": "FILL_ME_IN", # TODO: fill in required path parameter
"section_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "ad_account_id": "OPTIONAL_CONFIG",
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",

},
"paginator": "auto",
}
},
# Get a list of product pins for a given Catalogs Product Group Id owned by the "operation user_account". - By default, the "operation user_account" is the token user_account. Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href='/docs/api/v5/#operation/ad_accounts/list'>List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account: Owner, Admin, Catalogs Manager. Note: This endpoint only supports RETAIL catalog at the moment. <a href='/docs/shopping/catalog/'>Learn more</a>
{
"name": "catalogs_product_group_pinslist",
"table_name": "paginated",
"endpoint": {
"data_selector": "$",
"path": "/catalogs/product_groups/{product_group_id}/products",
"params": {
"product_group_id": {
"type": "resolve",
"resource": "catalogs_product_groupslist",
"field": "id",
},
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# List media uploads filtered by given parameters. <strong><a href='/docs/content/content-creation/#Creating%20video%20Pins'>Learn more</a></strong> about video Pin creation.
{
"name": "medialist",
"table_name": "paginated",
"endpoint": {
"data_selector": "$",
"path": "/media",
"params": {
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",

},
"paginator": "auto",
}
},
# Search for boards for the "operation user_account". This includes boards of all board types. - By default, the "operation user_account" is the token user_account. If using Business Access: Specify an ad_account_id to use the owner of that ad_account as the "operation user_account". See <a href='/docs/reference/business-access/'>Understanding Business Access</a> for more information.
{
"name": "search_user_boardsget",
"table_name": "paginated",
"endpoint": {
"data_selector": "$",
"path": "/search/boards",
"params": {
# the parameters below can optionally be configured
# "ad_account_id": "OPTIONAL_CONFIG",
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",
# "query": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get a list of who a certain user follows.
{
"name": "user_followingget",
"table_name": "paginated",
"endpoint": {
"data_selector": "$",
"path": "/user_account/following",
"params": {
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",
# "feed_type": "ALL",
# "explicit_following": "false",
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get a list of the Pins owned by the "operation user_account". - By default, the "operation user_account" is the token user_account. - All Pins owned by the "operation user_account" are included, regardless of who owns the board they are on. Optional: Business Access: Specify an ad_account_id to use the owner of that ad_account as the "operation user_account". Disclaimer: there are known performance issues when filtering by field <code>creative_type</code> and including protected pins. If your request is timing out in this scenario we encourage you to use <a href='/docs/api/v5/#operation/boards/list_pins'>GET List Pins on Board</a>.
{
"name": "pinslist",
"table_name": "pin",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/pins",
"params": {
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",
# "pin_filter": "OPTIONAL_CONFIG",
# "include_protected_pins": "false",
# "pin_type": "OPTIONAL_CONFIG",
# "creative_types": "OPTIONAL_CONFIG",
# "ad_account_id": "OPTIONAL_CONFIG",
# "pin_metrics": "false",

},
"paginator": "auto",
}
},
# Get a Pin owned by the "operation user_account" - or on a group board that has been shared with this account. - By default, the "operation user_account" is the token user_account. Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href='/docs/api/v5/#operation/ad_accounts/list'>List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account: - For Pins on public or protected boards: Owner, Admin, Analyst, Campaign Manager. - For Pins on secret boards: Owner, Admin.
{
"name": "pinsget",
"table_name": "pin",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/pins/{pin_id}",
"params": {
"pin_id": {
"type": "resolve",
"resource": "pinslist",
"field": "id",
},
# the parameters below can optionally be configured
# "pin_metrics": "false",
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Search for pins for the "operation user_account". - By default, the "operation user_account" is the token user_account. If using Business Access: Specify an ad_account_id to use the owner of that ad_account as the "operation user_account". See <a href='/docs/reference/business-access/'>Understanding Business Access</a> for more information.
{
"name": "search_user_pinslist",
"table_name": "pin",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/search/pins",
"params": {
"query": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "ad_account_id": "OPTIONAL_CONFIG",
# "bookmark": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get analytics for a Pin owned by the "operation user_account" - or on a group board that has been shared with this account. - By default, the "operation user_account" is the token user_account. Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href="https://developers.pinterest.com/docs/api/v5/#operation/ad_accounts/list">List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account: - For Pins on public or protected boards: Admin, Analyst. - For Pins on secret boards: Admin. If Pin was created before <code>2023-03-20</code> lifetime metrics will only be available for Video and Idea Pin formats. Lifetime metrics are available for all Pin formats since then.
{
"name": "pinsanalytics",
"table_name": "pin_analytics_response",
"endpoint": {
"data_selector": "$",
"path": "/pins/{pin_id}/analytics",
"params": {
"pin_id": {
"type": "resolve",
"resource": "pinslist",
"field": "id",
},
"start_date": "FILL_ME_IN", # TODO: fill in required query parameter
"end_date": "FILL_ME_IN", # TODO: fill in required query parameter
"metric_types": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "app_types": "ALL",
# "split_field": "NO_SPLIT",
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get a product group promotion by id
{
"name": "product_group_promotionsget",
"table_name": "product_group_promotion_response",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/product_group_promotions/{product_group_promotion_id}",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
"product_group_promotion_id": "FILL_ME_IN", # TODO: fill in required path parameter

},
"paginator": "auto",
}
},
# List existing product group promotions associated with an ad account. Include either ad_group_id or product_group_promotion_ids in your request. <b>Note:</b> ad_group_ids and product_group_promotion_ids are mutually exclusive parameters. Only provide one. If multiple options are provided, product_group_promotion_ids takes precedence over ad_group_ids. If none are provided, the endpoint returns an error.
{
"name": "product_group_promotionslist",
"table_name": "product_group_promotion_response_item",
"endpoint": {
"data_selector": "items",
"path": "/ad_accounts/{ad_account_id}/product_group_promotions",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "product_group_promotion_ids": "OPTIONAL_CONFIG",
# "entity_statuses": "['ACTIVE', 'PAUSED']",
# "ad_group_id": "OPTIONAL_CONFIG",
# "page_size": "25",
# "order": "OPTIONAL_CONFIG",
# "bookmark": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get a list of terms logically related to each input term. <p/> Example: the term 'workout' would list related terms like 'one song workout', 'yoga workout', 'workout motivation', etc.
{
"name": "terms_relatedlist",
"table_name": "related",
"endpoint": {
"data_selector": "related_terms_list",
"path": "/terms/related",
"params": {
"terms": "FILL_ME_IN", # TODO: fill in required query parameter

},
"paginator": "auto",
}
},
# <p>Get details of a specific interest given interest ID.</p> <p>Click <a href="https://docs.google.com/spreadsheets/d/1HxL-0Z3p2fgxis9YBP2HWC3tvPrs1hAuHDRtH-NJTIM/edit#gid=118370875" target="_blank">here</a> for a spreadsheet listing interests and their IDs.</p>
{
"name": "interest_targeting_optionsget",
"table_name": "single_interest_targeting_option_response",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/resources/targeting/interests/{interest_id}",
"params": {
"interest_id": "FILL_ME_IN", # TODO: fill in required path parameter

},
"paginator": "auto",
}
},
# Get Salesforce account details including bill-to information to be used in insertion orders process for <code>ad_account_id</code>. - The token's user_account must either be the Owner of the specified ad account, or have one of the necessary roles granted to them via <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a>: Admin, Finance, Campaign.
{
"name": "ssio_accountsget",
"table_name": "ssio_account_item",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "billto_infos",
"path": "/ad_accounts/{ad_account_id}/ssio/accounts",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter

},
"paginator": "auto",
}
},
# Get insertion order status for pin order id <code>pin_order_id</code>. - The token's user_account must either be the Owner of the specified ad account, or have one of the necessary roles granted to them via <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a>: Admin, Finance, Campaign.
{
"name": "ssio_insertion_orders_statusget_by_pin_order_id",
"table_name": "ssio_insertion_order_status_response",
"primary_key": "pin_order_id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/ssio/insertion_orders/{pin_order_id}/status",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
"pin_order_id": "FILL_ME_IN", # TODO: fill in required path parameter

},
"paginator": "auto",
}
},
# Get popular search terms that begin with your input term. <p/> Example: 'sport' would return popular terms like 'sports bar' and 'sportswear', but not 'motor sports' since the phrase does not begin with the given term.
{
"name": "terms_suggestedlist",
"table_name": "suggested",
"endpoint": {
"data_selector": "$",
"path": "/terms/suggested",
"params": {
"term": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "limit": "4",

},
"paginator": "auto",
}
},
# <strong>This endpoint is currently in beta and not available to all apps. <a href='/docs/new/about-beta-access/'>Learn more</a>.</strong> Get the top 10 Pins by a given search term.
{
"name": "search_partner_pins",
"table_name": "summary_pin",
"endpoint": {
"data_selector": "items",
"path": "/search/partner/pins",
"params": {
"term": "FILL_ME_IN", # TODO: fill in required query parameter
"country_code": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "locale": "OPTIONAL_CONFIG",
# "limit": "10",

},
"paginator": "auto",
}
},
# <p>You can use targeting values in ads placement to define your intended audience. </p> <p>Targeting metrics are organized around targeting specifications.</p> <p>For more information on ads targeting, see <a class="reference external" href="https://help.pinterest.com/en/business/article/audience-targeting" target="_blank">Audience targeting</a>.</p> <p><b>Sample return:</b></p> <pre class="literal-block"> [{&quot;36313&quot;: &quot;Australia: Moreton Bay - North&quot;, &quot;124735&quot;: &quot;Canada: North Battleford&quot;, &quot;36109&quot;: &quot;Australia: Murray&quot;, &quot;36108&quot;: &quot;Australia: Mid North Coast&quot;, &quot;36101&quot;: &quot;Australia: Capital Region&quot;, &quot;811&quot;: &quot;U.S.: Reno&quot;, &quot;36103&quot;: &quot;Australia: Central West&quot;, &quot;36102&quot;: &quot;Australia: Central Coast&quot;, &quot;36105&quot;: &quot;Australia: Far West and Orana&quot;, &quot;36104&quot;: &quot;Australia: Coffs Harbour - Grafton&quot;, &quot;36107&quot;: &quot;Australia: Illawarra&quot;, &quot;36106&quot;: &quot;Australia: Hunter Valley Exc Newcastle&quot;, &quot;554017&quot;: &quot;New Zealand: Wanganui&quot;, &quot;554016&quot;: &quot;New Zealand: Marlborough&quot;, &quot;554015&quot;: &quot;New Zealand: Gisborne&quot;, &quot;554014&quot;: &quot;New Zealand: Tararua&quot;, &quot;554013&quot;: &quot;New Zealand: Invercargill&quot;, &quot;GR&quot;: &quot;Greece&quot;, &quot;554011&quot;: &quot;New Zealand: Whangarei&quot;, &quot;554010&quot;: &quot;New Zealand: Far North&quot;, &quot;717&quot;: &quot;U.S.: Quincy-Hannibal-Keokuk&quot;, &quot;716&quot;: &quot;U.S.: Baton Rouge&quot;,...}] </pre>
{
"name": "targeting_optionsget",
"table_name": "targeting",
"endpoint": {
"data_selector": "$",
"path": "/resources/targeting/{targeting_type}",
"params": {
"targeting_type": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "client_id": "OPTIONAL_CONFIG",
# "oauth_signature": "OPTIONAL_CONFIG",
# "timestamp": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get targeting analytics for one or more ad groups. For the requested ad group(s) and metrics, the response will include the requested metric information (e.g. SPEND_IN_DOLLAR) for the requested target type (e.g. "age_bucket") for applicable values (e.g. "45-49"). <p/> - The token's user_account must either be the Owner of the specified ad account, or have one of the necessary roles granted to them via <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a>: Admin, Analyst, Campaign Manager. - If granularity is not HOUR, the furthest back you can are allowed to pull data is 90 days before the current date in UTC time and the max time range supported is 90 days. - If granularity is HOUR, the furthest back you can are allowed to pull data is 8 days before the current date in UTC time and the max time range supported is 3 days.
{
"name": "ad_groups_targeting_analyticsget",
"table_name": "targeting_analytic",
"endpoint": {
"data_selector": "data",
"path": "/ad_accounts/{ad_account_id}/ad_groups/targeting_analytics",
"params": {
"ad_account_id": {
"type": "resolve",
"resource": "ad_groupslist",
"field": "ad_account_id",
},
"ad_group_ids": "FILL_ME_IN", # TODO: fill in required query parameter
"start_date": "FILL_ME_IN", # TODO: fill in required query parameter
"end_date": "FILL_ME_IN", # TODO: fill in required query parameter
"targeting_types": "FILL_ME_IN", # TODO: fill in required query parameter
"columns": "FILL_ME_IN", # TODO: fill in required query parameter
"granularity": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "click_window_days": "30",
# "engagement_window_days": "30",
# "view_window_days": "1",
# "conversion_report_time": "TIME_OF_AD_ACTION",
# "attribution_types": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get targeting analytics for one or more ads. For the requested ad(s) and metrics, the response will include the requested metric information (e.g. SPEND_IN_DOLLAR) for the requested target type (e.g. "age_bucket") for applicable values (e.g. "45-49"). <p/> - The token's user_account must either be the Owner of the specified ad account, or have one of the necessary roles granted to them via <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a>: Admin, Analyst, Campaign Manager. - If granularity is not HOUR, the furthest back you can are allowed to pull data is 90 days before the current date in UTC time and the max time range supported is 90 days. - If granularity is HOUR, the furthest back you can are allowed to pull data is 8 days before the current date in UTC time and the max time range supported is 3 days.
{
"name": "ad_targeting_analyticsget",
"table_name": "targeting_analytic",
"endpoint": {
"data_selector": "data",
"path": "/ad_accounts/{ad_account_id}/ads/targeting_analytics",
"params": {
"ad_account_id": {
"type": "resolve",
"resource": "adslist",
"field": "ad_account_id",
},
"ad_ids": "FILL_ME_IN", # TODO: fill in required query parameter
"start_date": "FILL_ME_IN", # TODO: fill in required query parameter
"end_date": "FILL_ME_IN", # TODO: fill in required query parameter
"targeting_types": "FILL_ME_IN", # TODO: fill in required query parameter
"columns": "FILL_ME_IN", # TODO: fill in required query parameter
"granularity": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "click_window_days": "30",
# "engagement_window_days": "30",
# "view_window_days": "1",
# "conversion_report_time": "TIME_OF_AD_ACTION",
# "attribution_types": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get targeting analytics for one or more campaigns. For the requested account and metrics, the response will include the requested metric information (e.g. SPEND_IN_DOLLAR) for the requested target type (e.g. "age_bucket") for applicable values (e.g. "45-49"). <p/> - The token's user_account must either be the Owner of the specified ad account, or have one of the necessary roles granted to them via <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a>: Admin, Analyst, Campaign Manager. - If granularity is not HOUR, the furthest back you can are allowed to pull data is 90 days before the current date in UTC time and the max time range supported is 90 days. - If granularity is HOUR, the furthest back you can are allowed to pull data is 8 days before the current date in UTC time and the max time range supported is 3 days.
{
"name": "campaign_targeting_analyticsget",
"table_name": "targeting_analytic",
"endpoint": {
"data_selector": "data",
"path": "/ad_accounts/{ad_account_id}/campaigns/targeting_analytics",
"params": {
"ad_account_id": {
"type": "resolve",
"resource": "campaignslist",
"field": "ad_account_id",
},
"campaign_ids": "FILL_ME_IN", # TODO: fill in required query parameter
"start_date": "FILL_ME_IN", # TODO: fill in required query parameter
"end_date": "FILL_ME_IN", # TODO: fill in required query parameter
"targeting_types": "FILL_ME_IN", # TODO: fill in required query parameter
"columns": "FILL_ME_IN", # TODO: fill in required query parameter
"granularity": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "click_window_days": "30",
# "engagement_window_days": "30",
# "view_window_days": "1",
# "conversion_report_time": "TIME_OF_AD_ACTION",
# "attribution_types": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get targeting analytics for an ad account. For the requested account and metrics, the response will include the requested metric information (e.g. SPEND_IN_DOLLAR) for the requested target type (e.g. "age_bucket") for applicable values (e.g. "45-49"). <p/> - The token's user_account must either be the Owner of the specified ad account, or have one of the necessary roles granted to them via <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a>: Admin, Analyst, Campaign Manager. - If granularity is not HOUR, the furthest back you can are allowed to pull data is 90 days before the current date in UTC time and the max time range supported is 90 days. - If granularity is HOUR, the furthest back you can are allowed to pull data is 8 days before the current date in UTC time and the max time range supported is 3 days.
{
"name": "ad_account_targeting_analyticsget",
"table_name": "targeting_analytic",
"endpoint": {
"data_selector": "data",
"path": "/ad_accounts/{ad_account_id}/targeting_analytics",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
"start_date": "FILL_ME_IN", # TODO: fill in required query parameter
"end_date": "FILL_ME_IN", # TODO: fill in required query parameter
"targeting_types": "FILL_ME_IN", # TODO: fill in required query parameter
"columns": "FILL_ME_IN", # TODO: fill in required query parameter
"granularity": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "click_window_days": "30",
# "engagement_window_days": "30",
# "view_window_days": "1",
# "conversion_report_time": "TIME_OF_AD_ACTION",
# "attribution_types": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get a list of the targeting templates in the specified <code>ad_account_id</code>
{
"name": "targeting_templatelist",
"table_name": "targeting_template_response_data",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/ad_accounts/{ad_account_id}/targeting_templates",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "order": "OPTIONAL_CONFIG",
# "include_sizing": "false",
# "search_query": "OPTIONAL_CONFIG",
# "page_size": "25",
# "bookmark": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Gets all Templates associated with an ad account ID.
{
"name": "templateslist",
"table_name": "template_response",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/ad_accounts/{ad_account_id}/templates",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "page_size": "25",
# "order": "OPTIONAL_CONFIG",
# "bookmark": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get the text of the terms of service and see whether the advertiser has accepted the terms of service.
{
"name": "terms_of_serviceget",
"table_name": "terms_of_service",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "$",
"path": "/ad_accounts/{ad_account_id}/terms_of_service",
"params": {
"ad_account_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "include_html": "false",
# "tos_type": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Gets analytics data about a user's top pins (limited to the top 50). - By default, the "operation user_account" is the token user_account. Optional: Business Access: Specify an ad_account_id to use the owner of that ad_account as the "operation user_account".
{
"name": "user_accountanalyticstop_pins",
"table_name": "top_pin",
"endpoint": {
"data_selector": "pins",
"path": "/user_account/analytics/top_pins",
"params": {
"start_date": "FILL_ME_IN", # TODO: fill in required query parameter
"end_date": "FILL_ME_IN", # TODO: fill in required query parameter
"sort_by": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "from_claimed_content": "BOTH",
# "pin_format": "ALL",
# "app_types": "ALL",
# "content_type": "ALL",
# "source": "ALL",
# "metric_types": "OPTIONAL_CONFIG",
# "num_of_pins": "10",
# "created_in_last_n_days": "OPTIONAL_CONFIG",
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Gets analytics data about a user's top video pins (limited to the top 50). - By default, the "operation user_account" is the token user_account. Optional: Business Access: Specify an ad_account_id to use the owner of that ad_account as the "operation user_account".
{
"name": "user_accountanalyticstop_video_pins",
"table_name": "top_video_pin",
"endpoint": {
"data_selector": "pins",
"path": "/user_account/analytics/top_video_pins",
"params": {
"start_date": "FILL_ME_IN", # TODO: fill in required query parameter
"end_date": "FILL_ME_IN", # TODO: fill in required query parameter
"sort_by": "FILL_ME_IN", # TODO: fill in required query parameter
# the parameters below can optionally be configured
# "from_claimed_content": "BOTH",
# "pin_format": "ALL",
# "app_types": "ALL",
# "content_type": "ALL",
# "source": "ALL",
# "metric_types": "OPTIONAL_CONFIG",
# "num_of_pins": "10",
# "created_in_last_n_days": "OPTIONAL_CONFIG",
# "ad_account_id": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# <p>Get the top trending search keywords among the Pinterest user audience.</p> <p>Trending keywords can be used to inform ad targeting, budget strategy, and creative decisions about which products and Pins will resonate with your audience.</p> <p>Geographic, demographic and interest-based filters are available to narrow down to the top trends among a specific audience. Multiple trend types are supported that can be used to identify newly-popular, evergreen or seasonal keywords.</p> <p>For an interactive way to explore this data, please visit <a href="https://trends.pinterest.com">trends.pinterest.com</a>.
{
"name": "trending_keywordslist",
"table_name": "trending_keywords_response",
"endpoint": {
"data_selector": "$",
"path": "/trends/keywords/{region}/top/{trend_type}",
"params": {
"region": "FILL_ME_IN", # TODO: fill in required path parameter
"trend_type": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "interests": "OPTIONAL_CONFIG",
# "genders": "OPTIONAL_CONFIG",
# "ages": "OPTIONAL_CONFIG",
# "include_keywords": "OPTIONAL_CONFIG",
# "normalize_against_group": "false",
# "limit": "50",

},
"paginator": "auto",
}
},
# Get all of the viewing user's business employers.
{
"name": "getbusiness_employers",
"table_name": "user_business_role_binding",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/businesses/employers",
"params": {
# the parameters below can optionally be configured
# "page_size": "25",
# "bookmark": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get all members of the specified business. The return response will include the member's business_role and assets they have access to if assets_summary=TRUE
{
"name": "getbusiness_members",
"table_name": "user_business_role_binding",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/businesses/{business_id}/members",
"params": {
"business_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "assets_summary": "false",
# "business_roles": "OPTIONAL_CONFIG",
# "member_ids": "OPTIONAL_CONFIG",
# "start_index": "0",
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",

},
"paginator": "auto",
}
},
# Get all partners of the specified business. If the assets_summary=TRUE and: - partner_type=INTERNAL, the business assets returned are your business assets the partner has access to. - partner_type=EXTERNAL, the business assets returned are your partner's business assets the partner has granted you access to.
{
"name": "getbusiness_partners",
"table_name": "user_business_role_binding",
"primary_key": "id",
"write_disposition": "merge",
"endpoint": {
"data_selector": "items",
"path": "/businesses/{business_id}/partners",
"params": {
"business_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "assets_summary": "false",
# "partner_type": "OPTIONAL_CONFIG",
# "partner_ids": "OPTIONAL_CONFIG",
# "start_index": "0",
# "page_size": "25",
# "bookmark": "OPTIONAL_CONFIG",

},
"paginator": "auto",
}
},
# Get all the members the requesting business has granted access to on the given asset.
{
"name": "business_asset_membersget",
"table_name": "user_single_asset_binding",
"endpoint": {
"data_selector": "items",
"path": "/businesses/{business_id}/assets/{asset_id}/members",
"params": {
"asset_id": {
"type": "resolve",
"resource": "business_assetsget",
"field": "asset_id",
},
"business_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",
# "start_index": "0",

},
"paginator": "auto",
}
},
# Get all the partners the requesting business has granted access to on the given asset. Note: If the asset has been shared with you, an empty array will be returned. This is because an asset shared with you cannot be shared with a different partner.
{
"name": "business_asset_partnersget",
"table_name": "user_single_asset_binding",
"endpoint": {
"data_selector": "items",
"path": "/businesses/{business_id}/assets/{asset_id}/partners",
"params": {
"asset_id": {
"type": "resolve",
"resource": "business_assetsget",
"field": "asset_id",
},
"business_id": "FILL_ME_IN", # TODO: fill in required path parameter
# the parameters below can optionally be configured
# "start_index": "0",
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",

},
"paginator": "auto",
}
},
# Get a list of your followers.
{
"name": "followerslist",
"table_name": "user_summary",
"endpoint": {
"data_selector": "items",
"path": "/user_account/followers",
"params": {
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",

},
"paginator": "auto",
}
},
# Get user websites, claimed or not
{
"name": "user_websitesget",
"table_name": "user_website_summary",
"endpoint": {
"data_selector": "items",
"path": "/user_account/websites",
"params": {
# the parameters below can optionally be configured
# "bookmark": "OPTIONAL_CONFIG",
# "page_size": "25",

},
"paginator": "auto",
}
},
# Get verification code for user to install on the website to claim it.
{
"name": "website_verificationget",
"table_name": "user_website_verification_code",
"endpoint": {
"data_selector": "$",
"path": "/user_account/websites/verification",
"paginator": "auto",
}
},
]
}

return rest_api_source(source_config)

2. Configuring your source and destination credentials

info

dlt-init-openapi will try to detect which authentication mechanism (if any) is used by the API in question and add a placeholder in your secrets.toml.

  • If you know your API needs authentication, but none was detected, you can learn more about adding authentication to the rest_api here.
  • OAuth detection currently is not supported, but you can supply your own authentication mechanism as outlined here.

The dlt cli will have created a .dlt directory in your project folder. This directory contains a config.toml file and a secrets.toml file that you can use to configure your pipeline. The automatically created version of these files look like this:

generated config.toml


[runtime]
log_level="INFO"

[sources.pinterest]
# Base URL for the API
base_url = "https://api.pinterest.com/v5"

generated secrets.toml


[sources.pinterest]
# secrets for your pinterest source
# example_api_key = "example value"

2.1. Adjust the generated code to your usecase

Further help setting up your source and destinations

At this time, the dlt-init-openapi cli tool will always create pipelines that load to a local duckdb instance. Switching to a different destination is trivial, all you need to do is change the destination parameter in pinterest_pipeline.py to filesystem and supply the credentials as outlined in the destination doc linked below.

  • Read more about setting up the rest_api source in our docs.
  • Read more about setting up the Azure Cloud Storage destination in our docs.

The default filesystem destination is configured to connect to AWS S3. To load to Azure Cloud Storage, update the [destination.filesystem.credentials] section in your secrets.toml.

[destination.filesystem.credentials]
azure_storage_account_name="Please set me up!"
azure_storage_account_key="Please set me up!"

By default, the filesystem destination will store your files as JSONL. You can tell your pipeline to choose a different format with the loader_file_format property that you can set directly on the pipeline or via your config.toml. Available values are jsonl, parquet and csv:

[pipeline] # in ./dlt/config.toml
loader_file_format="parquet"

3. Running your pipeline for the first time

The dlt cli has also created a main pipeline script for you at pinterest_pipeline.py, as well as a folder pinterest that contains additional python files for your source. These files are your local copies which you can modify to fit your needs. In some cases you may find that you only need to do small changes to your pipelines or add some configurations, in other cases these files can serve as a working starting point for your code, but will need to be adjusted to do what you need them to do.

The main pipeline script will look something like this:


import dlt

from pinterest import pinterest_source


if __name__ == "__main__":
pipeline = dlt.pipeline(
pipeline_name="pinterest_pipeline",
destination='duckdb',
dataset_name="pinterest_data",
progress="log",
export_schema_path="schemas/export"
)
source = pinterest_source()
info = pipeline.run(source)
print(info)

Provided you have set up your credentials, you can run your pipeline like a regular python script with the following command:

python pinterest_pipeline.py

4. Inspecting your load result

You can now inspect the state of your pipeline with the dlt cli:

dlt pipeline pinterest_pipeline info

You can also use streamlit to inspect the contents of your Azure Cloud Storage destination for this:

# install streamlit
pip install streamlit
# run the streamlit app for your pipeline with the dlt cli:
dlt pipeline pinterest_pipeline show

5. Next steps to get your pipeline running in production

One of the beauties of dlt is, that we are just a plain Python library, so you can run your pipeline in any environment that supports Python >= 3.8. We have a couple of helpers and guides in our docs to get you there:

The Deploy section will show you how to deploy your pipeline to

  • Deploy with GitHub Actions: Learn how to deploy a pipeline using GitHub Actions, a CI/CD runner that you can use for free. Follow the guide here.
  • Deploy with Airflow and Google Composer: Discover how to deploy a pipeline using Airflow and Google Composer, a managed Airflow environment provided by Google. Follow the guide here.
  • Deploy with Google Cloud Functions: Find out how to deploy a pipeline using Google Cloud Functions, a serverless execution environment for building and connecting cloud services. Follow the guide here.
  • Explore other deployment options: Check out other guides and resources for deploying pipelines with dlt here.

The running in production section will teach you about:

  • How to Monitor your pipeline: Learn how to effectively monitor your dlt pipeline to ensure smooth operation and identify issues promptly. Read more
  • Set up alerts: Configure alerts to get notified about important events and issues in your dlt pipeline, helping you to react quickly and maintain pipeline health. Read more
  • Set up tracing: Implement tracing in your dlt pipeline to gain insights into the data flow and performance, making it easier to debug and optimize. Read more

Available Sources and Resources

For this verified source the following sources and resources are available

Source Pinterest

Pinterest source for accessing business, marketing, and user engagement data.

Resource NameWrite DispositionDescription
catalog_product_groupappendGroups of products in the catalog.
catalogs_items_batchappendBatch of items in the catalog.
user_business_role_bindingappendBindings of user roles to businesses.
ad_accounts_country_response_dataappendResponse data for ad accounts by country.
catalogs_reportappendReports for catalogs.
ad_responseappendResponses for ads.
billing_profiles_responseappendResponses for billing profiles.
user_single_asset_bindingappendBindings of single assets to users.
customer_listappendList of customers.
catalogs_vertical_product_groupappendVertical groups of products in the catalog.
ssio_insertion_order_status_responseappendResponses for insertion order statuses in SSIO.
ssio_account_itemappendItems in SSIO accounts.
top_pinappendTop pins on Pinterest.
suggestedappendSuggested content on Pinterest.
trending_keywords_responseappendResponses for trending keywords.
user_website_verification_codeappendVerification codes for user websites.
bulk_pin_analytics_responseappendBulk analytics responses for pins.
get_partner_assets_responseappendResponses for partner assets.
audience_definitionappendDefinitions of audiences.
lead_form_responseappendResponses for lead forms.
pin_analytics_responseappendAnalytics responses for pins.
targeting_analyticappendAnalytics for targeting.
catalogs_report_statsappendStatistics for catalogs reports.
catalogappendCatalog of products.
audienceappendDefinitions of audiences.
ad_group_responseappendResponses for ad groups.
invite_responseappendResponses for invitations.
get_mmm_report_responseappendResponses for MMM reports.
keyword_metrics_responseappendMetrics responses for keywords.
analyticappendGeneral analytics data.
ads_credit_discounts_responseappendResponses for ad credit discounts.
catalogs_feedappendFeeds for catalogs.
catalogs_feed_processing_resultappendProcessing results for catalogs feeds.
conversion_event_responseappendResponses for conversion events.
accountappendAccount details.
media_upload_detailsappendDetails for media uploads.
summary_pinappendSummary of pins.
targetingappendTargeting data.
single_interest_targeting_option_responseappendResponses for single interest targeting options.
template_responseappendResponses for templates.
boardappendBoards on Pinterest.
product_group_promotion_responseappendResponses for product group promotions.
item_responseappendResponses for items.
catalogs_item_validation_issuesappendValidation issues for catalog items.
top_video_pinappendTop video pins on Pinterest.
interestappendInterests on Pinterest.
campaign_responseappendResponses for campaigns.
catalogs_product_group_product_countsappendProduct counts for catalog product groups.
integration_recordappendRecords of integrations.
asset_id_permissionsappendPermissions for asset IDs.
order_lineappendOrder line details.
ad_accountappendDetails for ad accounts.
relatedappendRelated content on Pinterest.
bulk_upsert_status_responseappendStatus responses for bulk upserts.
audience_categoryappendCategories of audiences.
get_business_assets_responseappendResponses for business assets.
paginatedappendPaginated data.
linked_businessappendLinked businesses.
product_group_promotion_response_itemappendResponse items for product group promotions.
lead_form_questionappendQuestions in lead forms.
book_closed_responseappendResponses for closed books.
conversion_tag_responseappendResponses for conversion tags.
targeting_template_response_dataappendResponse data for targeting templates.
user_summaryappendSummary of user data.
ad_account_get_subscription_responseappendSubscription responses for ad accounts.
conversion_tags_ocpm_eligible_responseappendResponses for OCPM eligible conversion tags.
analytics_responseappendGeneral analytics responses.
integration_metadataappendMetadata for integrations.
delivery_metricappendMetrics for delivery.
ads_analytics_get_async_responseappendAsynchronous analytics responses for ads.
terms_of_serviceappendTerms of service details.
keywordappendKeywords on Pinterest.
pinappendPins on Pinterest.
user_website_summaryappendSummary of user websites.

Additional pipeline guides

This demo works on codespaces. Codespaces is a development environment available for free to anyone with a Github account. You'll be asked to fork the demo repository and from there the README guides you with further steps.
The demo uses the Continue VSCode extension.

Off to codespaces!

DHelp

Ask a question

Welcome to "Codex Central", your next-gen help center, driven by OpenAI's GPT-4 model. It's more than just a forum or a FAQ hub – it's a dynamic knowledge base where coders can find AI-assisted solutions to their pressing problems. With GPT-4's powerful comprehension and predictive abilities, Codex Central provides instantaneous issue resolution, insightful debugging, and personalized guidance. Get your code running smoothly with the unparalleled support at Codex Central - coding help reimagined with AI prowess.