Mail-Chimp3/lib/Mail/Chimp3.pm
package Mail::Chimp3;
use 5.010001;
use Moo;
use strictures 2;
use namespace::autoclean 0.16;
use Types::Standard qw/ Num Str /;
with 'Web::API';
# ABSTRACT: An interface to mailchimp.com's RESTful Web API v3 using WEB::API
our $VERSION = '0.08'; # VERSION: generated by DZP::OurPkgVersion
has endpoints => (
is => 'rw',
default => sub {
{
root => { path => '/' },
# authorized apps
authorized_apps => { path => 'authorized-apps' },
authorized_app => { path => 'authorized-apps/:app_id' },
add_authorized_app => {
method => 'POST',
path => 'authorized-apps',
mandatory => [ 'client_id', 'client_secret', ],
},
# automations
automations => { path => 'automations' },
automation => { path => 'automations/:workflow_id' },
pause_automation => {
method => 'POST',
path => 'automations/:workflow_id/actions/pause-all-emails',
},
start_automation => {
method => 'POST',
path => 'automations/:workflow_id/actions/start-all-emails',
},
# automation emails
automation_emails => { path => 'automations/:workflow_id/emails' },
automation_email => { path => 'automations/:workflow_id/emails/:workflow_email_id' },
pause_automation_email => {
method => 'POST',
path => 'automations/:workflow_id/emails/:workflow_email_id/actions/pause',
},
start_automation_email => {
method => 'POST',
path => 'automations/:workflow_id/emails/:workflow_email_id/actions/start',
},
add_automation_subscriber => {
method => 'POST',
path => 'automations/:workflow_id/emails/:workflow_email_id/queue',
mandatory => ['email_address'],
},
automation_subscribers => {
path => 'automations/:workflow_id/emails/:workflow_email_id/queue',
},
automation_subscriber => {
path => 'automations/:workflow_id/emails/:workflow_email_id/queue/:subscriber_hash',
},
remove_automation_subscriber => {
method => 'POST',
path => 'automations/:workflow_id/removed-subscribers',
mandatory => ['email_address'],
},
removed_automation_subscribers => { path => 'automations/:workflow_id/removed-subscribers' },
# batch
batches => { path => 'batches' },
batch => { path => 'batches/:batch_id' },
add_batch => {
method => 'POST',
path => 'batches',
mandatory => ['operations'],
},
delete_batch => {
method => 'DELETE',
path => 'batches/:batch_id',
},
# batch webhooks
batch_webhooks => { path => 'batch-webhooks' },
batch_webhook => { path => 'batch-webhooks/:batch_webhook_id' },
add_batch_webhook => {
method => 'POST',
path => 'batch-webhooks',
mandatory => ['url'],
},
update_batch_webhook => {
method => 'PATCH',
path => 'batch-webhooks/:batch_webhook_id',
mandatory => ['url'],
},
delete_batch_webhook => {
method => 'DELETE',
path => 'batch-webhooks/:batch_webhook_id',
},
# campaign folders
campaign_folders => { path => 'campaign-folders' },
campaign_folder => { path => 'campaign-folders/:folder_id' },
add_campaign_folder => {
method => 'POST',
path => 'campaign-folders',
mandatory => ['name'],
},
update_campaign_folder => {
method => 'PATCH',
path => 'campaign-folders/:folder_id',
mandatory => ['name'],
},
delete_campaign_folder => {
method => 'DELETE',
path => 'campaign-folders/:folder_id',
},
# campaigns
campaigns => { path => 'campaigns' },
campaign => { path => 'campaigns/:campaign_id' },
add_campaign => {
method => 'POST',
path => 'campaigns',
mandatory => [ 'type', 'settings' ],
},
update_campaign => {
method => 'PATCH',
path => 'campaigns/:campaign_id',
mandatory => [ 'type', 'settings' ],
},
delete_campaign => {
method => 'DELETE',
path => 'campaigns/:campaign_id',
},
cancel_campaign => {
method => 'POST',
path => 'campaigns/:campaign_id/actions/cancel-send',
},
pause_campaign => {
method => 'POST',
path => 'campaigns/:campaign_id/actions/pause',
},
replicate_campaign => {
method => 'POST',
path => 'campaigns/:campaign_id/actions/replicate',
},
resume_campaign => {
method => 'POST',
path => 'campaigns/:campaign_id/actions/resume',
},
schedule_campaign => {
method => 'POST',
path => 'campaigns/:campaign_id/actions/schedule',
mandatory => ['schedule_time'],
},
send_campaign => {
method => 'POST',
path => 'campaigns/:campaign_id/actions/send',
},
test_campaign => {
method => 'POST',
path => 'campaigns/:campaign_id/actions/test',
mandatory => [ 'test_emails', 'send_type' ],
},
unschedule_campaign => {
method => 'POST',
path => 'campaigns/:campaign_id/actions/unschedule',
},
campaign_content => { path => 'campaigns/:campaign_id/content' },
set_campaign_content => {
method => 'PUT',
path => 'campaigns/:campaign_id/content',
},
campaign_feedbacks => { path => 'campaigns/:campaign_id/feedback' },
campaign_feedback => { path => 'campaigns/:campaign_id/feedback/:feedback_id' },
add_campaign_feedback => {
method => 'POST',
path => 'campaigns/:campaign_id/feedback',
mandatory => ['message'],
},
update_campaign_feedback => {
method => 'PATCH',
path => 'campaigns/:campaign_id/feedback/:feedback_id',
mandatory => ['message'],
},
delete_campaign_feedback => {
method => 'DELETE',
path => 'campaigns/:campaign_id/feedback/:feedback_id',
},
campaign_send_checklist => { path => 'campaigns/:campaign_id/send-checklist' },
# connected sites
connected_sites => { path => 'connected-sites' },
connected_site => { path => 'connected-sites/:connected_site_id' },
add_connected_site => {
method => 'POST',
path => 'connected-sites',
mandatory => [
qw/
foreign_id
domain
/
],
},
delete_connected_site => {
method => 'DELETE',
path => 'connected-sites/:connected_site_id',
},
verify_connected_site => {
method => 'POST',
path => 'connected-sites/:connected_site_id/actions/verify-script-installation',
},
# conversations
conversations => { path => 'conversations' },
conversation => { path => 'conversations/:conversation_id' },
add_conversation_message => {
method => 'POST',
path => 'conversations/:conversation_id/messages',
mandatory => [ 'from_email', 'read' ],
},
conversation_messages => { path => 'conversation/:conversation_id/messages' },
conversation_message => { path => 'conversation/:conversation_id/messages/:message_id' },
# ecommerce stores
stores => { path => 'ecommerce/stores' },
store => { path => 'ecommerce/stores/:store_id' },
add_store => {
method => 'POST',
path => 'ecommerce/stores',
mandatory => [ 'id', 'list_id', 'name', 'currency_code', ],
},
update_store => {
method => 'PATCH',
path => 'ecommerce/stores/:store_id',
},
delete_store => {
method => 'DELETE',
path => 'ecommerce/stores/:store_id',
},
# ecommerce carts
carts => { path => 'ecommerce/stores/:store_id/carts' },
cart => { path => 'ecommerce/stores/:store_id/carts/:cart_id' },
add_cart => {
method => 'POST',
path => 'ecommerce/stores/:store_id/carts',
mandatory => ['customer'],
},
update_cart => {
method => 'PATCH',
path => 'ecommerce/stores/:store_id/carts/:cart_id',
},
delete_cart => {
method => 'DELETE',
path => 'ecommerce/stores/:store_id/carts/:cart_id',
},
# ecommerce cart lines
cart_lines => { path => 'ecommerce/stores/:store_id/carts/:cart_id/lines' },
cart_line => { path => 'ecommerce/stores/:store_id/carts/:cart_id/lines/:line_id' },
add_cart_line => {
method => 'POST',
path => 'ecommerce/stores/:store_id/carts/:cart_id/lines',
mandatory => [
qw/
id
product_id
product_variant_id
quantity
price
/
],
},
update_cart_line => {
method => 'PATCH',
path => 'ecommerce/stores/:store_id/carts/:cart_id/lines/:line_id',
},
delete_cart_line => {
method => 'DELETE',
path => 'ecommerce/stores/:store_id/carts/:cart_id/lines/:line_id',
},
# ecommerce customers
customers => { path => 'ecommerce/stores/:store_id/customers' },
customer => { path => 'ecommerce/stores/:store_id/customers/:customer_id' },
add_customer => {
method => 'POST',
path => 'ecommerce/stores/:store_id/customers',
mandatory => [
qw/
id
email_address
opt_in_status
/
],
},
update_customer => {
method => 'PATCH',
path => 'ecommerce/stores/:store_id/customers/:customer_id',
},
upsert_customer => {
method => 'PUT',
path => 'ecommerce/stores/:store_id/customers/:customer_id',
mandatory => [
qw/
id
email_address
opt_in_status
/
],
},
delete_customer => {
method => 'DELETE',
path => 'ecommerce/stores/:store_id/customers/:customer_id',
},
# ecommerce orders
orders => { path => 'ecommerce/stores/:store_id/orders' },
order => { path => 'ecommerce/stores/:store_id/orders/:order_id' },
add_order => {
method => 'POST',
path => 'ecommerce/stores/:store_id/orders',
mandatory => [
qw/
id
customer
currency_code
order_total
lines
/
],
},
update_order => {
method => 'PATCH',
path => 'ecommerce/stores/:store_id/orders/:order_id',
},
delete_order => {
method => 'DELETE',
path => 'ecommerce/stores/:store_id/orders/:order_id',
},
# ecommerce order lines
order_lines => { path => 'ecommerce/stores/:store_id/orders/:order_id/lines' },
order_line => { path => 'ecommerce/stores/:store_id/orders/:order_id/lines/:line_id' },
add_order_line => {
method => 'POST',
path => 'ecommerce/stores/:store_id/orders/:order_id/lines',
mandatory => [
qw/
id
product_id
product_variant_id
quantity
price
/
],
},
update_order_line => {
method => 'PATCH',
path => 'ecommerce/stores/:store_id/orders/:order_id/lines/:line_id',
},
delete_order_line => {
method => 'DELETE',
path => 'ecommerce/stores/:store_id/orders/:order_id/lines/:line_id',
},
# ecommerce products
products => { path => 'ecommerce/stores/:store_id/products' },
product => { path => 'ecommerce/stores/:store_id/products/:product_id' },
add_product => {
method => 'POST',
path => 'ecommerce/stores/:store_id/products',
mandatory => [ 'id', 'title', 'variants', ],
},
update_product => {
method => 'PATCH',
path => 'ecommerce/stores/:store_id/products/:product_id',
},
delete_product => {
method => 'DELETE',
path => 'ecommerce/stores/:store_id/products/:product_id',
},
# ecommerce product variants
variants => { path => 'ecommerce/stores/:store_id/products/:product_id/variants' },
variant => { path => 'ecommerce/stores/:store_id/products/:product_id/variants/:variant_id' },
add_variant => {
method => 'POST',
path => 'ecommerce/stores/:store_id/products/:product_id/variants',
mandatory => [ 'id', 'title', ],
},
update_variant => {
method => 'PATCH',
path => 'ecommerce/stores/:store_id/products/:product_id/variants/:variant_id',
},
upsert_variant => {
method => 'PUT',
path => 'ecommerce/stores/:store_id/products/:product_id/variants/:variant_id',
mandatory => [ 'id', 'title', ],
},
delete_variant => {
method => 'DELETE',
path => 'ecommerce/stores/:store_id/products/:product_id/variants/:variant_id',
},
# facebook ads
facebook_ads => { path => 'facebook-ads' },
facebook_ad => { path => 'facebook-ads/:outreach_id' },
# file manager files
file_manager_files => { path => 'file-manager/files' },
file_manager_file => { path => 'file-manager/files/:file_id' },
add_file_manager_file => {
method => 'POST',
path => 'file-manager/files',
mandatory => [ 'name', 'file_data' ],
},
update_file_manager_file => {
method => 'PATCH',
path => 'file-manager/files/:file_id',
mandatory => [ 'name', 'file_data' ],
},
delete_file_manager_file => {
method => 'DELETE',
path => 'file-manager/files/:file_id',
},
# file manager folders
file_manager_folders => { path => 'file-manager/folders' },
file_manager_folder => { path => 'file-manager/folders/:folder_id' },
add_file_manager_folder => {
method => 'POST',
path => 'file-manager/folders',
mandatory => ['name'],
},
update_file_manager_folder => {
method => 'PATCH',
path => 'file-manager/folders/:folder_id',
mandatory => ['name'],
},
delete_file_manager_folder => {
method => 'DELETE',
path => 'file-manager/folders/:folder_id',
},
# google ads
google_ads => { path => 'google-ads' },
google_ads_instance => { path => 'google-ads/:outreach_id' },
# landing pages
landing_pages => { path => 'landing_pages' },
landing_page => { path => 'landing_pages/:page_id' },
landing_page_content => { path => 'landing_pages/:page_id/content' },
add_landing_page => {
method => 'POST',
path => 'landing_pages',
mandatory => [
qw/
list_id
type
/
],
},
update_landing_page => {
method => 'PATCH',
path => 'landing_pages/:page_id',
},
delete_landing_page => {
method => 'DELETE',
path => 'landing_pages/:page_id',
},
publish_landing_page => {
method => 'POST',
path => 'landing_pages/:page_id/actions/publish',
mandatory => ['id'],
},
unpublish_landing_page => {
method => 'POST',
path => 'landing_pages/:page_id/actions/unpublish',
mandatory => ['id'],
},
# lists
lists => { path => 'lists' },
list => { path => 'lists/:list_id' },
add_list => {
method => 'POST',
path => 'lists',
mandatory => [
qw/
name
contact
permission_reminder
campaign_defaults
email_type_option
/
],
},
update_list => {
method => 'PATCH',
path => 'lists/:list_id',
mandatory => [
qw/
name
contact
permission_reminder
campaign_defaults
email_type_option
/
],
},
delete_list => {
method => 'DELETE',
path => 'lists/:list_id',
},
batch_list => {
method => 'POST',
path => 'lists/:list_id',
mandatory => ['members'],
},
abuse_reports => { path => 'lists/:list_id/abuse-reports' },
abuse_report => { path => 'lists/:list_id/abuse-reports/:report_id' },
list_activity => { path => 'lists/:list_id/activity' },
list_clients => { path => 'lists/:list_id/clients' },
growth_history => { path => 'lists/:list_id/growth-history' },
growth_history_month => { path => 'lists/:list_id/growth-history/:month' },
# list interests
interest_categories => { path => 'lists/:list_id/interest-categories' },
interest_category => { path => 'lists/:list_id/interest-categories/:interest_category_id' },
add_interest_category => {
method => 'POST',
path => 'lists/:list_id/interest-categories',
mandatory => [ 'title', 'type' ],
},
update_interest_category => {
method => 'PATCH',
path => 'lists/:list_id/interest-categories/:interest_category_id',
mandatory => [ 'title', 'type' ],
},
delete_interest_category => {
method => 'DELETE',
path => 'lists/:list_id/interest-categories/:interest_category_id',
},
interests => { path => 'lists/:list_id/interest-categories/:interest_category_id/interests' },
interest => { path => 'lists/:list_id/interest-categories/:interest_category_id/interests/:interest_id' },
add_interest => {
method => 'POST',
path => 'lists/:list_id/interest-categories/:interest_category_id/interests',
mandatory => ['name'],
},
update_interest => {
method => 'PATCH',
path => 'lists/:list_id/interest-categories/:interest_category_id/interests/:interest_id',
mandatory => ['name'],
},
delete_interest => {
method => 'DELETE',
path => 'lists/:list_id/interest-categories/:interest_category_id/interests/:interest_id',
},
# list members
members => { path => 'lists/:list_id/members' },
member => { path => 'lists/:list_id/members/:subscriber_hash' },
add_member => {
method => 'POST',
path => 'lists/:list_id/members',
mandatory => [ 'status', 'email_address', ],
},
update_member => {
method => 'PATCH',
path => 'lists/:list_id/members/:subscriber_hash',
},
upsert_member => {
method => 'PUT',
path => 'lists/:list_id/members/:subscriber_hash',
mandatory => [
qw/
email_address
status_if_new
/
],
},
delete_member => {
method => 'DELETE',
path => 'lists/:list_id/members/:subscriber_hash',
},
member_activity => { path => 'lists/:list_id/members/:subscriber_hash/activity' },
member_goals => { path => 'lists/:list_id/members/:subscriber_hash/goals' },
# list member notes
member_notes => { path => 'lists/:list_id/members/:subscriber_hash/notes' },
member_note => { path => 'lists/:list_id/members/:subscriber_hash/notes/:note_id' },
add_member_note => {
method => 'POST',
path => 'lists/:list_id/members/:subscriber_hash/notes',
mandatory => ['note'],
},
update_member_note => {
method => 'POST',
path => 'lists/:list_id/members/:subscriber_hash/notes/:note_id',
mandatory => ['note'],
},
delete_member_note => {
method => 'DELETE',
path => 'lists/:list_id/members/:subscriber_hash/notes/:note_id',
},
# list member tags
member_tags => { path => 'lists/:list_id/members/:subscriber_hash/tags' },
add_member_tag => {
method => 'POST',
path => 'lists/:list_id/members/:subscriber_hash/tags',
mandatory => ['tags'],
},
update_member_tag => {
method => 'POST',
path => 'lists/:list_id/members/:subscriber_hash/tags',
mandatory => ['tags'],
},
# list merge fields
merge_fields => { path => 'lists/:list_id/merge-fields' },
merge_field => { path => 'lists/:list_id/merge-fields/:merge_id' },
add_merge_field => {
method => 'POST',
path => 'lists/:list_id/merge-fields',
mandatory => [ 'name', 'type', ],
},
update_merge_field => {
method => 'PATCH',
path => 'lists/:list_id/merge-fields/:merge_id',
},
delete_merge_field => {
method => 'DELETE',
path => 'lists/:list_id/merge-fields/:merge_id',
},
# list segments
segments => { path => 'lists/:list_id/segments' },
segment => { path => 'lists/:list_id/segments/:segment_id' },
add_segment => {
method => 'POST',
path => 'lists/:list_id/segments',
mandatory => ['name'],
},
update_segment => {
method => 'PATCH',
path => 'lists/:list_id/segments/:segment_id',
},
delete_segment => {
method => 'DELETE',
path => 'lists/:list_id/segments/:segment_id',
},
segment_members => { path => 'lists/:list_id/segments/:segment_id/members' },
add_segment_member => {
method => 'POST',
path => 'lists/:list_id/segments/:segment_id/members'
},
delete_segment_member => {
method => 'DELETE',
path => 'lists/:list_id/segments/:segment_id/members/:subscriber_hash'
},
batch_segment => {
method => 'POST',
path => 'lists/:list_id/segments/:segment_id',
},
# list other
twitter_cards => { path => 'lists/:list_id/twitter-lead-gen-cards' },
twitter_card => { path => 'lists/:list_id/twitter-lead-gen-cards/:twitter_card_id' },
add_twitter_card => {
method => 'POST',
path => 'lists/:list_id/twitter-lead-gen-cards',
mandatory => [
qw/
name
title
cta_text
privacy_policy_url
image_url
twitter_account_id
/
],
},
webhooks => { path => 'lists/:list_id/webhooks' },
webhook => { path => 'lists/:list_id/webhooks/:webhook_id' },
add_webhook => {
method => 'POST',
path => 'lists/:list_id/webhooks'
},
delete_webhook => {
method => 'DELETE',
path => 'lists/:list_id/webhooks/:webhook_id'
},
# ping
ping => { path => 'ping' },
# reporting
reporting => { path => 'reporting' },
reporting_facebook_ads => { path => 'reporting/facebook-ads' },
reporting_facebook_ad => { path => 'reporting/facebook-ads/:outreach_id' },
reporting_facebook_ad_ecommerce => { path => 'reporting/facebook-ads/:outreach_id/ecommerce-product-activity' },
reporting_google_ads => { path => 'reporting/google-ads' },
reporting_google_ad => { path => 'reporting/google-ads/:outreach_id' },
reporting_google_ad_ecommerce => { path => 'reporting/google-ads/:outreach_id/ecommerce-product-activity' },
reporting_landing_pages => { path => 'reporting/landing-pages' },
reporting_landing_page => { path => 'reporting/landing-pages/:outreach_id' },
# reports
reports => { path => 'reports' },
report => { path => 'reports/:campaign_id' },
abuse_reports => { path => 'reports/:campaign_id/abuse-reports' },
abuse_report => { path => 'reports/:campaign_id/abuse-reports/:report_id' },
advice => { path => 'reports/:campaign_id/advice' },
click_details => { path => 'reports/:campaign_id/click-details' },
click_detail => { path => 'reports/:campaign_id/click-details/:link_id' },
click_details_members => { path => 'reports/:campaign_id/click-details/:link_id/members' },
click_details_member => { path => 'reports/:campaign_id/click-details/:link_id/members/:subscriber_hash' },
domain_performance => { path => 'reports/:campaign_id/domain-performance' },
eepurl => { path => 'reports/:campaign_id/eepurl' },
email_activity => { path => 'reports/:campaign_id/email-activity' },
member_email_activity => { path => 'reports/:campaign_id/email-activity/:subscriber_hash' },
locations => { path => 'reports/:campaign_id/locations' },
sent_to => { path => 'reports/:campaign_id/sent-to' },
member_sent_to => { path => 'reports/:campaign_id/sent-to/:subscriber_hash' },
sub_reports => { path => 'reports/:campaign_id/sub-reports' },
unsubscribed => { path => 'reports/:campaign_id/unsubscribed' },
member_unsubscribed => { path => 'reports/:campaign_id/unsubscribed/:subscriber_hash' },
# search campaigns
search_campaigns => { path => 'search-campaigns' },
# search members
search_members => { path => 'search-members' },
# template folders
template_folders => { path => 'template-folders' },
template_folder => { path => 'template-folders/:folder_id' },
add_template_folder => {
method => 'POST',
path => 'template-folders',
mandatory => ['name'],
},
update_template_folder => {
method => 'PATCH',
path => 'template-folders/:folder_id',
mandatory => ['name'],
},
delete_template_folder => {
method => 'DELETE',
path => 'template-folders/:folder_id',
},
# templates
templates => { path => 'templates' },
template => { path => 'templates/:template_id' },
add_template => {
method => 'POST',
path => 'templates',
mandatory => [ 'name', 'html' ],
},
update_template => {
method => 'PATCH',
path => 'templates/:template_id',
mandatory => [ 'name', 'html' ],
},
delete_template => {
method => 'DELETE',
path => 'templates/:template_id',
},
template_default_content => { path => 'templates/:template_id/default-content' },
# verified domains
verified_domains => { path => 'verified_domains' },
verified_domain_name => { path => 'verified_domains/:domain_name' },
add_domain_name => {
method => 'POST',
path => 'verified_domains',
},
delete_domain_name => {
method => 'DELETE',
path => 'verified_domains/:domain_name',
},
verify_domain_name => {
method => 'POST',
path => 'verified_domains/:domain_name/actions/verify',
},
};
},
);
has chimp_api_version => (
is => 'ro',
isa => Num,
default => sub { '3.0' },
);
has chimp_datacenter => (
is => 'lazy',
isa => Str,
default => sub {
my $self = shift;
if ($self->api_key) {
my ($dc) = ( $self->api_key =~ /\-(\w+)$/ );
return $dc;
}
else {
return 'us1';
}
},
);
has '+decoder' => (
builder => 1,
);
sub _build_decoder {
my $self = shift;
return sub {
my ($content, $content_type) = @_;
my $data = {};
return $data unless $content;
for ($content_type) {
/plain/ and do {
chomp $content;
$data = { text => $content };
};
/urlencoded/ and do {
for (split /&/, $content) {
my ($key, $value) = split /=/;
$data->{ uri_unescape($key) } = uri_unescape($value);
}
};
/json/ and $data = $self->json->decode($content);
/(xml|html)/ and $data = $self->xml->XMLin( $content, NoAttr => 0 );
}
return $data;
};
}
sub commands {
my ($self) = @_;
return $self->endpoints;
}
sub BUILD {
my ($self) = @_;
$self->user_agent( __PACKAGE__ . ' ' . ($Mail::Chimp3::VERSION || '') );
$self->base_url( 'https://' . $self->chimp_datacenter . '.api.mailchimp.com/' . $self->chimp_api_version );
$self->auth_type('basic');
$self->user('anystring');
$self->content_type('application/json');
return $self;
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Mail::Chimp3 - An interface to mailchimp.com's RESTful Web API v3 using WEB::API
=head1 VERSION
version 0.08
=head1 SYNOPSIS
This is for the MailChimp API v3.0.
Please refer to the API documentation at
L<http://developer.mailchimp.com/documentation/mailchimp/reference/overview/>
use Mail::Chimp3;
my $mailchimp = Mail::Chimp3->new(
api_key => $apikey,
);
my $response = $mailchimp->add_store(
store_id => '123',
cart_id => '456',
);
=head1 METHODS
=over
=item abuse_report
=item abuse_reports
=item add_authorized_app
=item add_automation_subscriber
=item add_batch
=item add_batch_webhook
=item add_campaign
=item add_campaign_feedback
=item add_campaign_folder
=item add_cart
=item add_cart_line
=item add_connected_site
=item add_conversation_message
=item add_customer
=item add_domain_name
=item add_file_manager_file
=item add_file_manager_folder
=item add_interest
=item add_interest_category
=item add_landing_page
=item add_list
=item add_member
=item add_member_note
=item add_member_tag
=item add_merge_field
=item add_order
=item add_order_line
=item add_product
=item add_segment
=item add_segment_member
=item add_store
=item add_template
=item add_template_folder
=item add_twitter_card
=item add_variant
=item add_webhook
=item advice
=item authorized_app
=item authorized_apps
=item automation
=item automation_email
=item automation_emails
=item automation_subscriber
=item automation_subscribers
=item automations
=item batch
=item batches
=item batch_list
=item batch_segment
=item batch_webhooks
=item batch_webhook
=item campaign
=item campaign_content
=item campaign_feedback
=item campaign_feedbacks
=item campaign_folder
=item campaign_folders
=item campaign_send_checklist
=item campaigns
=item cancel_campaign
=item cart
=item cart_line
=item cart_lines
=item carts
=item click_detail
=item click_details
=item click_details_member
=item click_details_members
=item connected_sites
=item connected_site
=item conversation
=item conversation_message
=item conversation_messages
=item conversations
=item customer
=item customers
=item delete_batch
=item delete_batch_webhook
=item delete_campaign
=item delete_campaign_feedback
=item delete_campaign_folder
=item delete_cart
=item delete_cart_line
=item delete_connected_site
=item delete_customer
=item delete_domain_name
=item delete_file_manager_file
=item delete_file_manager_folder
=item delete_interest
=item delete_interest_category
=item delete_landing_page
=item delete_list
=item delete_member
=item delete_member_note
=item delete_merge_field
=item delete_order
=item delete_order_line
=item delete_product
=item delete_segment
=item delete_segment_member
=item delete_store
=item delete_template
=item delete_template_folder
=item delete_variant
=item delete_webhook
=item domain_performance
=item eepurl
=item email_activity
=item facebook_ad
=item facebook_ads
=item file_manager_file
=item file_manager_files
=item file_manager_folder
=item file_manager_folders
=item growth_history
=item growth_history_month
=item google_ads
=item google_ads_instance
=item interest
=item interest_categories
=item interest_category
=item interests
=item landing_page
=item landing_page_content
=item landing_pages
=item list
=item list_activity
=item list_clients
=item lists
=item locations
=item member
=item member_activity
=item member_email_activity
=item member_goals
=item member_note
=item member_notes
=item member_tags
=item member_sent_to
=item member_unsubscribed
=item members
=item merge_field
=item merge_fields
=item order
=item order_line
=item order_lines
=item orders
=item pause_automation
=item pause_automation_email
=item pause_campaign
=item ping
=item product
=item products
=item publish_landing_page
=item remove_automation_subscriber
=item removed_automation_subscribers
=item replicate_campaign
=item report
=item reports
=item reporting
=item reporting_facebook_ad
=item reporting_facebook_ad_ecommerce
=item reporting_facebook_ads
=item reporting_google_ad
=item reporting_google_ad_ecommerce
=item reporting_google_ads
=item reporting_landing_page
=item reporting_landing_pages
=item resume_campaign
=item root
=item schedule_campaign
=item search_campaigns
=item search_members
=item segment
=item segment_members
=item segments
=item send_campaign
=item sent_to
=item set_campaign_content
=item start_automation
=item start_automation_email
=item store
=item stores
=item sub_reports
=item template
=item template_default_content
=item template_folder
=item template_folders
=item templates
=item test_campaign
=item twitter_card
=item twitter_cards
=item unpublish_landing_page
=item unschedule_campaign
=item unsubscribed
=item update_batch_webhook
=item update_campaign
=item update_campaign_feedback
=item update_campaign_folder
=item update_cart
=item update_cart_line
=item update_customer
=item update_file_manager_file
=item update_file_manager_folder
=item update_interest
=item update_interest_category
=item update_landing_page
=item update_list
=item update_member
=item update_member_note
=item update_merge_field
=item update_order
=item update_order_line
=item update_product
=item update_segment
=item update_store
=item update_template
=item update_template_folder
=item update_variant
=item upsert_customer
=item upsert_member
=item upsert_variant
=item variant
=item variants
=item verified_domains
=item verified_domain_name
=item verify_connected_site
=item verify_domain_name
=item webhook
=item webhooks
=back
=head1 INTERNALS
=over
=item commands
Required by Web::API
=back
=head2 BUILD
basic configuration for the client API happens usually in the BUILD method when using Web::API
=head1 BUGS
Please report any bugs or feature requests on GitHub's issue tracker L<https://github.com/jdigory/p5-Mail-Chimp3/issues>.
=head1 SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Mail::Chimp3
You can also look for information at:
=over 4
=item * GitHub repository
L<https://github.com/jdigory/p5-Mail-Chimp3>
=back
=head1 CONTRIBUTORS
Peter Karman (pkarman)
=head1 AUTHOR
Josh Lavin <digory@cpan.org>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2016 by Josh Lavin.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut