MailChimp API v3的Python客户端
项目描述
python-mailchimp-api
使用requests >= 2.7.0的简单Python客户端,用于MailChimp API v3。
入门
安装
此客户端在PyPi上以mailchimp3为名托管,要安装它,只需运行
pip install mailchimp3
从v2.x升级
从2.1.0开始,初始化Mailchimp API的参数顺序已反转,因为用户名是基本认证的可选参数。请反转参数顺序或完全删除用户名参数。认证参数的名称也已从mc_secret更改为mc_api。
从v1.x升级
2.x的安装程序与之前相同,但是在此包装器内部的命名约定以及某些方法调用的方式有大量的变化。请仔细阅读以下文档,了解新结构和扩展功能的信息。在此版本中,所有文档化的端点都已实现,所有端点方法都可用。
历史记录
与变更日志中列出的功能保持更新,直至2017年3月3日。
初始化
从您的Mailchimp账户(账户 > 额外 > API密钥)获取您的API密钥。《YOUR_USERNAME》是您用于登录网站的名称,为可选。
from mailchimp3 import MailChimp client = MailChimp(mc_api='YOUR_API_KEY', mc_user='YOUR_USERNAME')
OAuth支持
除了HTTP基本身份验证外,MailChimp还支持通过OAuth2进行身份验证。有关获取适当访问密钥的信息,请参阅此处。
分页
只需在您的函数中添加count和offset参数。count是要返回的记录数,offset是要跳过的记录数。对于允许分页参数的端点,all()方法还有一个额外的布尔参数get_all,该参数将循环遍历所有记录,直到API不再返回任何记录,以获取所有记录而无需手动执行额外的查询。默认情况下,count为10,offset为0。all()方法上的get_all参数默认为false,这遵循调用中提供的值,使用get_all=True将忽略提供的偏移量,以确保返回所有记录。当使用get_all时,count除非另有指定,否则为500。强烈建议避免使用小的count值来获取大量记录,因为这会淹没系统。大count值不应影响预期返回非常少量记录的调用,并且应提高调用性能,在这些调用中,获取500条记录只会提供一小部分,从而防止大量请求的延迟。
client.lists.members.all('123456', count=100, offset=0)
字段
许多端点允许您从所有可用字段中选择要返回的字段(例如,仅成员的email_address)。只需在您的函数中添加fields参数。以下示例仅显示列表123456中每个成员的email_address和id。
client.lists.members.all('123456', get_all=True, fields="members.email_address,members.id")
示例
# returns all the lists (only name and id) client.lists.all(get_all=True, fields="lists.name,lists.id") # returns all members inside list '123456' client.lists.members.all('123456', get_all=True) # return the first 100 member's email addresses for the list with id 123456 client.lists.members.all('123456', count=100, offset=0, fields="members.email_address") # returns the list matching id '123456' client.lists.get('123456') # add John Doe with email john.doe@example.com to list matching id '123456' client.lists.members.create('123456', { 'email_address': 'john.doe@example.com', 'status': 'subscribed', 'merge_fields': { 'FNAME': 'John', 'LNAME': 'Doe', }, }) # returns all the campaigns client.campaigns.all(get_all=True) # You can also disable at runtime with the optional ``enabled`` parameter. # Every API call will return None client = MailChimp('YOUR SECRET KEY', enabled=False) # You are encouraged to specify a value in seconds for the ``timeout`` # parameter to avoid hanging requests. client = MailChimp('YOUR SECRET KEY', timeout=10.0) # You are encouraged to specify a User-Agent for requests to the MailChimp # API. Headers can be specified using the ``request_headers`` parameter. headers = requests.utils.default_headers() headers['User-Agent'] = 'Example (example@example.com)' client = MailChimp('YOUR SECRET KEY', request_headers=headers)
API结构
所有端点都遵循官方MailChimp API v3文档中列出的结构。结构将列在下面,然后是可用的方法。
MailChimp +- Root +- Authorized Apps +- Automations | +- Actions | +- Emails | | +- Actions | | +- Queues | +- Removed Subscribers +- Batch Operations +- Batch Webhooks +- Campaign Folders +- Campaigns | +- Actions | +- Content | +- Feedback | +- Send Checklist +- Conversations | +- Messages +- Customer Journeys +- Stores | +- Carts | | +- Lines | +- Customers | +- Orders | | +- Lines | +- Products | +- Images | +- Variants | +- Promo Rules | +- Promo Codes +- File Manager Files +- File Manager Folders +- Landing Pages | +- Actions | +- Content +- Lists | +- Abuse Reports | +- Activity | +- Clients | +- Growth History | +- Interest Categories | | +- Interests | +- Members | | +- Activity | | +- Events | | +- Goals | | +- Notes | | +- Tags | +- Merge Fields | +- Segments | | +- Segment Members | +- Signup Forms | +- Twitter Lead Generation Carts | +- Webhooks +- Ping +- Reports | +- Campaign Abuse | +- Campaign Advice | +- Campaign Open reports | +- Click Reports | | +- Members | +- Domain Performance | +- EepURL Reports | +- Email Activity | +- Google Analytics | +- Location | +- Sent To | +- Sub-Reports | +- Unsubscribes +- Search Campaigns +- Search Members +- Template Folders +- Templates +- Default Content
API端点
以下是所有端点的列表以及可以对它们调用的方法。任何具有接受ID参数的方法的端点(例如,在authorized_apps端点中的app_id或在list members端点中的subscriber_hash)都将记录传递的所有ID以及仅返回单个结果的方法(例如,某些端点上的create()方法)生成的ID。这些存储的属性仅在它们传递或创建的级别上可用,并且必须再次传递才能与较低或较高级别的级别交互,例如访问列表然后是成员。以下代码假定您已按上述方式使用client名称初始化了MailChimp类。
根
根
client.root.get()
自动化
自动化
client.automations.all(get_all=False) client.automations.get(workflow_id='')
自动化操作
client.automations.actions.pause(workflow_id='') client.automations.actions.start(workflow_id='')
自动化电子邮件
client.automations.emails.all(workflow_id='') client.automations.emails.get(workflow_id='', email_id='')
自动化电子邮件操作
client.automations.emails.actions.pause(workflow_id='', email_id='') client.automations.emails.actions.start(workflow_id='', email_id='')
自动化电子邮件队列
client.automations.emails.queues.create(workflow_id='', email_id='', data={}) client.automations.emails.queues.all(workflow_id='', email_id='') client.automations.emails.queues.get(workflow_id='', email_id='', subscriber_hash='')
自动化移除订阅者
client.automations.removed_subscribers.create(workflow_id='', data={}) client.automations.removed_subscribers.all(workflow_id='')
批量操作
批量操作
client.batch_operations.create(data={}) client.batch_operations.all(get_all=False) client.batch_operations.get(batch_id='') client.batch_operations.delete(batch_id='')
批量Webhook
批量Webhook
client.batch_webhooks.create(data={}) client.batch_webhooks.all(get_all=False) client.batch_webhooks.get(batch_webhook_id='') client.batch_webhooks.update(batch_webhook_id='', data={}) client.batch_webhooks.delete(batch_webhook_id='')
活动
文件夹
client.campaign_folders.create(data={}) client.campaign_folders.all(get_all=False) client.campaign_folders.get(folder_id='') client.campaign_folders.update(folder_id='', data={}) client.campaign_folders.delete(folder_id='')
活动
client.campaigns.create(data={}) client.campaigns.all(get_all=False) client.campaigns.get(campaign_id='') client.campaigns.update(campaign_id='') client.campaigns.delete(campaign_id='')
活动操作
client.campaigns.actions.cancel(campaign_id='') client.campaigns.actions.pause(campaign_id='') client.campaigns.actions.replicate(campaign_id='') client.campaigns.actions.resume(campaign_id='') client.campaigns.actions.schedule(campaign_id='', data={}) client.campaigns.actions.send(campaign_id='') client.campaigns.actions.resend(campaign_id='') client.campaigns.actions.test(campaign_id='', data={}) client.campaigns.actions.unschedule(campaign_id='')
活动内容
client.campaigns.content.get(campaign_id='') client.campaigns.content.update(campaign_id='', data={})
活动反馈
client.campaigns.feedback.create(campaign_id='', data={}) client.campaigns.feedback.all(campaign_id='', get_all=False) client.campaigns.feedback.get(campaign_id='', feedback_id='') client.campaigns.feedback.update(campaign_id='', feedback_id='', data={}) client.campaigns.feedback.delete(campaign_id='', feedback_id='')
活动发送清单
client.campaigns.send_checklist.get(campaign_id='')
对话
对话
client.conversations.all(get_all=False) client.conversations.get(conversation_id='')
对话消息
client.conversations.messages.create(conversation_id='', data={}) client.conversations.messages.all(conversation_id='') client.conversations.messages.get(conversation_id='', message_id='')
客户旅程
客户旅程
client.customer_journeys.trigger(journey_id='', step_id='', data={})
电子商务
商店
client.stores.create(data={}) client.stores.all(get_all=False) client.stores.get(store_id='') client.stores.update(store_id='', data={}) client.stores.delete(store_id='')
商店购物车
client.stores.carts.create(store_id='', data={}) client.stores.carts.all(store_id='', get_all=False) client.stores.carts.get(store_id='', cart_id='') client.stores.carts.update(store_id='', cart_id='', data={}) client.stores.carts.delete(store_id='', cart_id='')
商店购物车行
client.stores.carts.lines.create(store_id='', cart_id='', data={}) client.stores.carts.lines.all(store_id='', cart_id='', get_all=False) client.stores.carts.lines.get(store_id='', cart_id='', line_id='') client.stores.carts.lines.update(store_id='', cart_id='', line_id='', data={}) client.stores.carts.lines.delete(store_id='', cart_id='', line_id='')
存储客户
client.stores.customers.create(store_id='', data={}) client.stores.customers.all(store_id='', get_all=False) client.stores.customers.get(store_id='', customer_id='') client.stores.customers.update(store_id='', customer_id='', data={}) client.stores.customers.create_or_update(store_id='', customer_id='', data={}) client.stores.customers.delete(store_id='', customer_id='')
存储订单
client.stores.orders.create(store_id='', data={}) client.stores.orders.all(store_id='', get_all=False) client.stores.orders.get(store_id='', order_id='') client.stores.orders.update(store_id='', order_id='', data={}) client.stores.orders.delete(store_id='', order_id='')
存储订单行
client.stores.orders.lines.create(store_id='', order_id='', data={}) client.stores.orders.lines.all(store_id='', order_id='', get_all=False) client.stores.orders.lines.get(store_id='', order_id='', line_id='') client.stores.orders.lines.update(store_id='', order_id='', line_id='', data={}) client.stores.orders.lines.delete(store_id='', order_id='', line_id='')
存储产品
client.stores.products.create(store_id='', data={}) client.stores.products.all(store_id='', get_all=False) client.stores.products.get(store_id='', product_id='') client.stores.products.update(store_id='', product_id='') client.stores.products.delete(store_id='', product_id='')
存储产品图片
client.stores.products.images.create(store_id='', product_id='', data={}) client.stores.products.images.all(store_id='', product_id='', get_all=False) client.stores.products.images.get(store_id='', product_id='', image_id='') client.stores.products.images.update(store_id='', product_id='', image_id='', data={}) client.stores.products.images.delete(store_id='', product_id='', image_id='')
存储产品变体
client.stores.products.variants.create(store_id='', product_id='', data={}) client.stores.products.variants.all(store_id='', product_id='', get_all=False) client.stores.products.variants.get(store_id='', product_id='', variant_id='') client.stores.products.variants.update(store_id='', product_id='', variant_id='', data={}) client.stores.products.variants.create_or_update(store_id='', product_id='', variant_id='', data={}) client.stores.products.variants.delete(store_id='', product_id='', variant_id='')
文件管理器
文件
client.files.create(data={}) client.files.all(get_all=False) client.files.get(file_id='') client.files.update(file_id='', data={}) client.files.delete(file_id='')
文件夹
client.folders.create(data={}) client.folders.all(get_all=False) client.folders.get(folder_id='') client.folders.update(folder_id='', data={}) client.folders.delete(folder_id='')
着陆页
着陆页
client.landing_pages.create(data={}) client.landing_pages.all() client.landing_pages.all(fields='') client.landing_pages.get(page_id='') client.landing_pages.update(page_id='', data={}) client.landing_pages.delete(page_id='')
着陆页操作
client.landing_pages.actions.publish(page_id='') client.landing_pages.actions.unpublish(page_id='')
着陆页内容
client.landing_pages.content.get(page_id='')
列表
列表
client.lists.create(data={}) client.lists.update_members(list_id='', data={}) client.lists.all(get_all=False) client.lists.get(list_id='') client.lists.update(list_id='', data={}) client.lists.delete(list_id='')
列表滥用报告
client.lists.abuse_reports.all(list_id='', get_all=False) client.lists.abuse_reports.get(list_id='', report_id='')
列表活动
client.lists.activity.all(list_id='', subscriber_hash='') client.lists.activity.feed(list_id='', subscriber_hash='')
客户列表
client.lists.clients.all(list_id='')
增长历史列表
client.lists.growth_history.all(list_id='', get_all=False) client.lists.growth_history.get(list_id='', month='')
兴趣类别列表
client.lists.interest_categories.create(list_id='', data={}) client.lists.interest_categories.all(list_id='', get_all=False) client.lists.interest_categories.get(list_id='', category_id='') client.lists.interest_categories.update(list_id='', category_id='', data={}) client.lists.interest_categories.delete(list_id='', category_id='')
兴趣类别兴趣列表
client.lists.interest_categories.interests.create(list_id='', category_id='', data={}) client.lists.interest_categories.interests.all(list_id='', category_id='', get_all=False) client.lists.interest_categories.interests.get(list_id='', category_id='', interest_id='') client.lists.interest_categories.interests.update(list_id='', category_id='', interest_id='', data={}) client.lists.interest_categories.interests.delete(list_id='', category_id='', interest_id='')
成员列表
client.lists.members.create(list_id='', data={}) client.lists.members.all(list_id='', get_all=False) client.lists.members.get(list_id='', subscriber_hash='') client.lists.members.update(list_id='', subscriber_hash='', data={}) client.lists.members.create_or_update(list_id='', subscriber_hash='', data={}) client.lists.members.delete(list_id='', subscriber_hash='') client.lists.members.delete_permanent(list_id='', subscriber_hash='')
成员活动列表
client.lists.members.activity.all(list_id='', subscriber_hash='')
成员事件列表
client.lists.members.events.create(list_id='', subscriber_hash='', data={}) client.lists.members.events.all(list_id='', subscriber_hash='', get_all=False)
成员目标列表
client.lists.members.goals.all(list_id='', subscriber_hash='')
成员笔记列表
client.lists.members.notes.create(list_id='', subscriber_hash='', data={}) client.lists.members.notes.all(list_id='', subscriber_hash='', get_all=False) client.lists.members.notes.get(list_id='', subscriber_hash='', note_id='') client.lists.members.notes.update(list_id='', subscriber_hash='', note_id='', data={}) client.lists.members.notes.delete(list_id='', subscriber_hash='', note_id='')
合并字段列表
client.lists.merge_fields.create(list_id='', data={}) client.lists.merge_fields.all(list_id='', get_all=False) client.lists.merge_fields.get(list_id='', merge_id='') client.lists.merge_fields.update(list_id='', merge_id='', data={}) client.lists.merge_fields.delete(list_id='', merge_id='')
段列表
client.lists.segments.create(list_id='', data={}) client.lists.segments.all(list_id='', get_all=False) client.lists.segments.get(list_id='', segment_id='') client.lists.segments.update(list_id='', segment_id='', data={}) client.lists.segments.update_members(list_id='', segment_id='', data={}) client.lists.segments.delete(list_id='', segment_id='')
段成员列表
client.lists.segments.members.create(list_id='', segment_id='', data={}) client.lists.segments.members.all(list_id='', segment_id='', get_all=False) client.lists.segments.members.delete(list_id='', segment_id='', subscriber_hash='')
注册表单列表
client.lists.signup_forms.create(list_id='', data={}) client.lists.signup_forms.all(list_id='')
Webhooks 列表
client.lists.webhooks.create(list_id='', data={}) client.lists.webhooks.all(list_id='') client.lists.webhooks.get(list_id='', webhook_id='') client.lists.webhooks.update(list_id='', webhook_id='', data={}) client.lists.webhooks.delete(list_id='', webhook_id='')
报告
报告
client.reports.all(get_all=False) client.reports.get(campaign_id='')
活动滥用报告
client.reports.abuse_reports.all(campaign_id='') client.reports.abuse_reports.get(campaign_id='', report_id='')
活动建议
client.reports.advice.all(campaign_id='')
点击详情报告
client.reports.click_details.all(campaign_id='', get_all=False) client.reports.click_details.get(campaign_id='', link_id='')
点击详情报告成员
client.reports.click_details.members.all(campaign_id='', link_id='', get_all=False) client.reports.click_details.members.get(campaign_id='', link_id='', subscriber_hash='')
域名性能报告
client.reports.domain_performance.all(campaign_id='')
EepURL 报告
client.reports.eepurl.all(camnpaign_id='')
电子邮件活动报告
client.reports.email_activity.all(campaign_id='', get_all=False) client.reports.email_activity.get(campaign_id='', subscriber_hash='')
位置报告
client.reports.locations.all(campaign_id='', get_all=False)
已发送报告
client.reports.sent_to.all(campaign_id='', get_all=False) client.reports.sent_to.get(campaign_id='', subscriber_hash='')
子报告
client.reports.subreports.all(campaign_id='')
退订
client.reports.unsubscribes.all(campaign_id='', get_all=False) client.reports.unsubscribes.get(campaign_id='', subscriber_hash='')
搜索
活动
client.search_campaigns.get()
成员
client.search_members.get()
模板
文件夹
client.template_folders.create(data={}) client.template_folders.all(get_all=False) client.template_folders.get(folder_id='') client.template_folders.update(folder_id='', data={}) client.template_folders.delete(folder_id='')
模板
client.templates.create(data={}) client.templates.all(get_all=False) client.templates.get(template_id='') client.templates.update(template_id='', data={}) client.templates.delete(template_id='')
默认内容
client.templates.default_content.all(template_id='')
日志记录
MailChimp 客户端会将请求/响应详情记录到 mailchimp3.client 日志命名空间中。以下是一个用于开始日志记录的示例片段:
import logging
fh = logging.FileHandler('/path/to/some/log.log')
logger = logging.getLogger('mailchimp3.client')
logger.addHandler(fh)
# use the client normally
client.lists.all(**{'fields': 'lists.date_created'})
请求/响应详情将被追加到 /path/to/some/log.log
GET Request: https://us15.api.mailchimp.com/3.0/lists?fields=lists.date_created GET Response: 200 {"lists":[{"date_created":"2017-05-10T13:53:05+00:00"},{"date_created":"2017-08-22T20:27:56+00:00"},{"date_created":"2017-05-12T21:22:15+00:00"},{"date_created":"2017-04-27T17:42:04+00:00"},{"date_created":"2017-05-10T14:14:49+00:00"},{"date_created":"2017-05-10T13:52:37+00:00"},{"date_created":"2017-05-10T13:51:40+00:00"}]}
有关 Python 日志包的更多信息,请参阅 文档。
支持
如果您遇到问题,请告诉我们或提交一个拉取请求。
许可证
本项目采用 MIT 许可证。
项目详情
下载文件
下载您平台的文件。如果您不确定要选择哪一个,请了解更多关于 安装包 的信息。