facebook_ads 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +3 -0
- data/.travis.yml +8 -0
- data/Gemfile +16 -0
- data/Gemfile.lock +129 -0
- data/README.markdown +380 -0
- data/bin/console +13 -0
- data/facebook_ads.gemspec +26 -0
- data/lib/facebook_ads.rb +46 -0
- data/lib/facebook_ads/ad.rb +34 -0
- data/lib/facebook_ads/ad_account.rb +126 -0
- data/lib/facebook_ads/ad_campaign.rb +54 -0
- data/lib/facebook_ads/ad_creative.rb +66 -0
- data/lib/facebook_ads/ad_image.rb +28 -0
- data/lib/facebook_ads/ad_insight.rb +24 -0
- data/lib/facebook_ads/ad_set.rb +35 -0
- data/lib/facebook_ads/ad_targeting.rb +61 -0
- data/lib/facebook_ads/base.rb +151 -0
- data/spec/ad_account_spec.rb +78 -0
- data/spec/ad_campaign_spec.rb +13 -0
- data/spec/ad_creative_spec.rb +14 -0
- data/spec/ad_image_spec.rb +11 -0
- data/spec/ad_insight_spec.rb +11 -0
- data/spec/ad_set_spec.rb +13 -0
- data/spec/ad_spec.rb +13 -0
- data/spec/ad_targeting_spec.rb +4 -0
- data/spec/spec_helper.rb +15 -0
- data/spec/support/fixtures.sh +17 -0
- data/spec/support/fixtures/6057330925170.json +1 -0
- data/spec/support/fixtures/6057810634370.json +1 -0
- data/spec/support/fixtures/6057810946970.json +1 -0
- data/spec/support/fixtures/6057824295570.json +1 -0
- data/spec/support/fixtures/act_861827983860489.json +1 -0
- data/spec/support/fixtures/act_861827983860489/adcreatives.json +1 -0
- data/spec/support/fixtures/act_861827983860489/adimages.json +1 -0
- data/spec/support/fixtures/act_861827983860489/ads.json +1 -0
- data/spec/support/fixtures/act_861827983860489/adsets.json +1 -0
- data/spec/support/fixtures/act_861827983860489/campaigns.json +1 -0
- data/spec/support/fixtures/me/adaccounts.json +1 -0
- data/spec/support/rack_facebook.rb +22 -0
- metadata +127 -0
@@ -0,0 +1,61 @@
|
|
1
|
+
# https://developers.facebook.com/docs/marketing-api/targeting-specs
|
2
|
+
module FacebookAds
|
3
|
+
class AdTargeting
|
4
|
+
|
5
|
+
MEN = 1
|
6
|
+
WOMEN = 2
|
7
|
+
GENDERS = [MEN, WOMEN]
|
8
|
+
ANDROID_OS = 'Android'
|
9
|
+
APPLE_OS = 'iOS'
|
10
|
+
OSES = [ANDROID_OS, APPLE_OS]
|
11
|
+
ANDROID_DEVICES = %w(Android_Smartphone Android_Tablet)
|
12
|
+
APPLE_DEVICES = %w(iPhone iPad iPod)
|
13
|
+
DEVICES = ANDROID_DEVICES + APPLE_DEVICES
|
14
|
+
INSTALLED = 'installed'
|
15
|
+
NOT_INSTALLED = 'not_installed'
|
16
|
+
APP_INSTALL_STATES = [INSTALLED, NOT_INSTALLED]
|
17
|
+
|
18
|
+
attr_accessor :genders, :age_min, :age_max, :countries, :user_os, :user_device, :app_install_state
|
19
|
+
|
20
|
+
def initialize
|
21
|
+
# self.genders = [WOMEN] # If nil, defaults to all genders.
|
22
|
+
# self.age_min = 18 # If nil, defaults to 18.
|
23
|
+
# self.age_max = 65 # If nil, defaults to 65+.
|
24
|
+
self.countries = ['US']
|
25
|
+
# self.user_os = [ANDROID_OS]
|
26
|
+
# self.user_device = ANDROID_DEVICES
|
27
|
+
# self.app_install_state = NOT_INSTALLED
|
28
|
+
end
|
29
|
+
|
30
|
+
def validate!
|
31
|
+
{ gender: genders, countries: countries, user_os: user_os, user_device: user_device }.each_pair do |key, array|
|
32
|
+
if array.present? && !array.is_a?(Array)
|
33
|
+
raise Exception, "#{self.class.name}: #{key} must be an array"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
{ genders: [genders, GENDERS], user_os: [user_os, OSES], user_device: [user_device, DEVICES] }.each_pair do |key, provided_and_acceptable|
|
38
|
+
provided, acceptable = provided_and_acceptable
|
39
|
+
|
40
|
+
if provided.present? && (invalid = provided.detect { |value| !acceptable.include?(value) }).present?
|
41
|
+
raise Exception, "#{self.class.name}: #{bad} is an invalid #{key}"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
true
|
46
|
+
end
|
47
|
+
|
48
|
+
def to_hash
|
49
|
+
{
|
50
|
+
genders: genders,
|
51
|
+
age_min: age_min,
|
52
|
+
age_max: age_max,
|
53
|
+
geo_locations: { countries: countries },
|
54
|
+
user_os: user_os,
|
55
|
+
user_device: user_device,
|
56
|
+
app_install_state: app_install_state
|
57
|
+
}.compact
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,151 @@
|
|
1
|
+
module FacebookAds
|
2
|
+
class Base < Hashie::Mash
|
3
|
+
|
4
|
+
class << self
|
5
|
+
|
6
|
+
def find(id)
|
7
|
+
get("/#{id}", objectify: true)
|
8
|
+
end
|
9
|
+
|
10
|
+
def get(path, query: {}, objectify:)
|
11
|
+
query = pack(query, objectify) # Adds access token, fields, etc.
|
12
|
+
FacebookAds.logger.debug "GET #{FacebookAds.base_uri}#{path}?#{query.to_query}"
|
13
|
+
response = HTTParty.get("#{FacebookAds.base_uri}#{path}", query: query).parsed_response
|
14
|
+
response = unpack(response, objectify: objectify)
|
15
|
+
end
|
16
|
+
|
17
|
+
def post(path, query: {}, objectify:)
|
18
|
+
query = pack(query, objectify)
|
19
|
+
FacebookAds.logger.debug "POST #{FacebookAds.base_uri}#{path}?#{query.to_query}"
|
20
|
+
response = HTTMultiParty.post("#{FacebookAds.base_uri}#{path}", query: query).parsed_response
|
21
|
+
response = unpack(response, objectify: objectify)
|
22
|
+
end
|
23
|
+
|
24
|
+
def delete(path, query: {})
|
25
|
+
query = pack(query, false)
|
26
|
+
FacebookAds.logger.debug "DELETE #{FacebookAds.base_uri}#{path}?#{query.to_query}"
|
27
|
+
response = HTTParty.delete("#{FacebookAds.base_uri}#{path}", query: query).parsed_response
|
28
|
+
response = unpack(response, objectify: false)
|
29
|
+
end
|
30
|
+
|
31
|
+
def paginate(path, query: {})
|
32
|
+
response = get(path, query: query.merge(fields: self::FIELDS.join(',')), objectify: false)
|
33
|
+
data = response['data'].present? ? response['data'] : []
|
34
|
+
|
35
|
+
while (paging = response['paging']).present? && (url = paging['next']).present?
|
36
|
+
FacebookAds.logger.debug "GET #{url}"
|
37
|
+
response = HTTParty.get(url).parsed_response # This should be raw since the URL has the host already.
|
38
|
+
data += response['data'] if response['data'].present?
|
39
|
+
end
|
40
|
+
|
41
|
+
if data.present?
|
42
|
+
data.map { |hash| instantiate(hash) }
|
43
|
+
else
|
44
|
+
[]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def instantiate(hash)
|
51
|
+
object = new
|
52
|
+
|
53
|
+
hash.each_pair do |key, value|
|
54
|
+
# https://github.com/intridea/hashie/blob/master/lib/hashie/mash.rb#L111
|
55
|
+
object.custom_writer(key, value, false)
|
56
|
+
end
|
57
|
+
|
58
|
+
object
|
59
|
+
end
|
60
|
+
|
61
|
+
def pack(hash, objectify)
|
62
|
+
hash = hash.merge(access_token: FacebookAds.access_token)
|
63
|
+
hash = hash.merge(fields: self::FIELDS.join(',')) if objectify
|
64
|
+
hash.compact
|
65
|
+
end
|
66
|
+
|
67
|
+
def unpack(response, objectify:)
|
68
|
+
if response.nil? || !response.is_a?(Hash)
|
69
|
+
raise Exception, "Invalid response: #{response.inspect}"
|
70
|
+
end
|
71
|
+
|
72
|
+
if response['error'].present?
|
73
|
+
# Let's have different Exception subclasses for different error codes.
|
74
|
+
raise Exception, "#{response['error']['code']}: #{response['error']['message']} | #{response.inspect}"
|
75
|
+
end
|
76
|
+
|
77
|
+
if objectify
|
78
|
+
if response.key?('data') && (data = response['data']).is_a?(Array)
|
79
|
+
data.map { |hash| instantiate(hash) }
|
80
|
+
else
|
81
|
+
instantiate(response)
|
82
|
+
end
|
83
|
+
else
|
84
|
+
response
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
def update(data)
|
91
|
+
if data.present?
|
92
|
+
response = self.class.post("/#{id}", query: data, objectify: false)
|
93
|
+
|
94
|
+
if response.is_a?(Hash) && response.key?('success')
|
95
|
+
response['success']
|
96
|
+
else
|
97
|
+
raise Exception, "Invalid response from update: #{response.inspect}"
|
98
|
+
end
|
99
|
+
else
|
100
|
+
false
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def save
|
105
|
+
if changes.present?
|
106
|
+
data = {}
|
107
|
+
changes.keys.each { |key| data[key] = self[key] }
|
108
|
+
|
109
|
+
if update(data)
|
110
|
+
self.class.find(id)
|
111
|
+
else
|
112
|
+
nil
|
113
|
+
end
|
114
|
+
else
|
115
|
+
nil
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def destroy(path: nil, query: {})
|
120
|
+
response = self.class.delete(path || "/#{id}", query: query)
|
121
|
+
|
122
|
+
if response.key?('success')
|
123
|
+
response['success']
|
124
|
+
else
|
125
|
+
raise Exception, "Invalid response from destroy: #{response.inspect}"
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
protected
|
130
|
+
|
131
|
+
attr_accessor :changes
|
132
|
+
|
133
|
+
private
|
134
|
+
|
135
|
+
def []=(key, value)
|
136
|
+
old_value = self[key]
|
137
|
+
new_value = super(key, value)
|
138
|
+
|
139
|
+
self.changes ||= {}
|
140
|
+
|
141
|
+
if old_value != new_value
|
142
|
+
self.changes[key] = [old_value, new_value]
|
143
|
+
else
|
144
|
+
self.changes.delete(key)
|
145
|
+
end
|
146
|
+
|
147
|
+
new_values
|
148
|
+
end
|
149
|
+
|
150
|
+
end
|
151
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FacebookAds::AdAccount do
|
4
|
+
|
5
|
+
describe '.all' do
|
6
|
+
it 'Lists all AdAccount instances' do
|
7
|
+
accounts = FacebookAds::AdAccount.all
|
8
|
+
expect(accounts.length).to eql(7)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '.find' do
|
13
|
+
it 'Finds an AdAccount by id' do
|
14
|
+
id = 'act_861827983860489'
|
15
|
+
account = FacebookAds::AdAccount.find(id)
|
16
|
+
expect(account.id).to eql(id)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '.find_by' do
|
21
|
+
it 'Finds an AdAccount by name' do
|
22
|
+
name = 'Android'
|
23
|
+
account = FacebookAds::AdAccount.find_by(name: name)
|
24
|
+
expect(account.name).to eql(name)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '.ad_campaigns' do
|
29
|
+
it 'Lists AdCampaign instances' do
|
30
|
+
ad_campaigns = account.ad_campaigns
|
31
|
+
ad_campaign = ad_campaigns.first
|
32
|
+
expect(ad_campaign.account_id).to eql(account_id)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '.ad_images' do
|
37
|
+
it 'Lists AdImage instances' do
|
38
|
+
ad_images = account.ad_images
|
39
|
+
ad_image = ad_images.first
|
40
|
+
expect(ad_image.account_id).to eql(account_id)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '.ad_creatives' do
|
45
|
+
it 'Lists AdCreative instances' do
|
46
|
+
ad_creatives = account.ad_creatives
|
47
|
+
ad_creative = ad_creatives.first
|
48
|
+
expect(ad_creative.id).to eql('6057824295570')
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe '.ad_sets' do
|
53
|
+
it 'Lists AdSet instances' do
|
54
|
+
ad_sets = account.ad_sets
|
55
|
+
ad_set = ad_sets.first
|
56
|
+
expect(ad_set.account_id).to eql(account_id)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe '.ads' do
|
61
|
+
it 'Lists Ad instances' do
|
62
|
+
ads = account.ads
|
63
|
+
ad = ads.first
|
64
|
+
expect(ad.account_id).to eql(account_id)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
private
|
69
|
+
|
70
|
+
def account
|
71
|
+
FacebookAds::AdAccount.find_by(account_id: account_id)
|
72
|
+
end
|
73
|
+
|
74
|
+
def account_id
|
75
|
+
'861827983860489'
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FacebookAds::AdCreative do
|
4
|
+
|
5
|
+
describe '.find' do
|
6
|
+
it 'Finds an AdCreative instance' do
|
7
|
+
id = '6057824295570'
|
8
|
+
creative = FacebookAds::AdCreative.find(id)
|
9
|
+
expect(creative.id).to eql(id)
|
10
|
+
expect(creative.object_story_spec.class).to eql(Hash)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
data/spec/ad_set_spec.rb
ADDED
data/spec/ad_spec.rb
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'coveralls'
|
2
|
+
Coveralls.wear!
|
3
|
+
|
4
|
+
require 'webmock/rspec'
|
5
|
+
WebMock.disable_net_connect!(allow_localhost: true)
|
6
|
+
|
7
|
+
require 'support/rack_facebook'
|
8
|
+
RSpec.configure do |config|
|
9
|
+
config.before(:each) do
|
10
|
+
stub_request(:any, /graph.facebook.com/).to_rack(RackFacebook)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
require 'facebook_ads'
|
15
|
+
FacebookAds.access_token = 'FAKE_ACCESS_TOKEN'
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
# Run with TOKEN=`cat test_access_token` bash spec/support/fixtures.sh
|
4
|
+
|
5
|
+
curl "https://graph.facebook.com/v2.6/me/adaccounts?access_token=$TOKEN&fields=id%2Caccount_id%2Caccount_status%2Cage%2Ccreated_time%2Ccurrency%2Cname%2Clast_used_time" > spec/support/fixtures/me/adaccounts.json
|
6
|
+
|
7
|
+
curl "https://graph.facebook.com/v2.6/act_861827983860489?access_token=$TOKEN&fields=id%2Caccount_id%2Caccount_status%2Cage%2Ccreated_time%2Ccurrency%2Cname%2Clast_used_time" > spec/support/fixtures/act_861827983860489.json
|
8
|
+
curl "https://graph.facebook.com/v2.6/6057330925170?access_token=$TOKEN&fields=id%2Caccount_id%2Cbuying_type%2Ccan_use_spend_cap%2Cconfigured_status%2Ccreated_time%2Ceffective_status%2Cname%2Cobjective%2Cstart_time%2Cstop_time%2Cupdated_time%2Cspend_cap" > spec/support/fixtures/6057330925170.json
|
9
|
+
curl "https://graph.facebook.com/v2.6/6057824295570?access_token=$TOKEN&fields=id%2Cname%2Cobject_story_id%2Cobject_story_spec%2Cobject_type%2Cthumbnail_url%2Crun_status" > spec/support/fixtures/6057824295570.json
|
10
|
+
curl "https://graph.facebook.com/v2.6/6057810946970?access_token=$TOKEN&fields=id%2Caccount_id%2Ccampaign_id%2Cadlabels%2Cadset_schedule%2Cbid_amount%2Cbid_info%2Cbilling_event%2Cconfigured_status%2Ccreated_time%2Ccreative_sequence%2Ceffective_status%2Cend_time%2Cfrequency_cap%2Cfrequency_cap_reset_period%2Cfrequency_control_specs%2Cis_autobid%2Clifetime_frequency_cap%2Clifetime_imps%2Cname%2Coptimization_goal%2Cpromoted_object%2Crf_prediction_id%2Crtb_flag%2Cstart_time%2Ctargeting%2Cupdated_time%2Cuse_new_app_click%2Cpacing_type%2Cbudget_remaining%2Cdaily_budget%2Clifetime_budget" > spec/support/fixtures/6057810946970.json
|
11
|
+
curl "https://graph.facebook.com/v2.6/6057810634370?access_token=$TOKEN&fields=id%2Caccount_id%2Ccampaign_id%2Cadset_id%2Cadlabels%2Cbid_amount%2Cbid_info%2Cbid_type%2Cconfigured_status%2Cconversion_specs%2Ccreated_time%2Ccreative%2Ceffective_status%2Clast_updated_by_app_id%2Cname%2Ctracking_specs%2Cupdated_time%2Cad_review_feedback" > spec/support/fixtures/6057810634370.json
|
12
|
+
|
13
|
+
curl "https://graph.facebook.com/v2.6/act_861827983860489/campaigns?access_token=$TOKEN&effective_status%5B%5D=ACTIVE&fields=id%2Caccount_id%2Cbuying_type%2Ccan_use_spend_cap%2Cconfigured_status%2Ccreated_time%2Ceffective_status%2Cname%2Cobjective%2Cstart_time%2Cstop_time%2Cupdated_time%2Cspend_cap&limit=10" > spec/support/fixtures/act_861827983860489/campaigns.json
|
14
|
+
curl "https://graph.facebook.com/v2.6/act_861827983860489/adimages?access_token=$TOKEN&fields=id%2Chash%2Caccount_id%2Cname%2Cpermalink_url%2Coriginal_width%2Coriginal_height&limit=10" > spec/support/fixtures/act_861827983860489/adimages.json
|
15
|
+
curl "https://graph.facebook.com/v2.6/act_861827983860489/adcreatives?access_token=$TOKEN&fields=id%2Cname%2Cobject_story_id%2Cobject_story_spec%2Cobject_type%2Cthumbnail_url%2Crun_status&limit=10" > spec/support/fixtures/act_861827983860489/adcreatives.json
|
16
|
+
curl "https://graph.facebook.com/v2.6/act_861827983860489/adsets?access_token=$TOKEN&effective_status%5B%5D=ACTIVE&fields=id%2Caccount_id%2Ccampaign_id%2Cadlabels%2Cadset_schedule%2Cbid_amount%2Cbid_info%2Cbilling_event%2Cconfigured_status%2Ccreated_time%2Ccreative_sequence%2Ceffective_status%2Cend_time%2Cfrequency_cap%2Cfrequency_cap_reset_period%2Cfrequency_control_specs%2Cis_autobid%2Clifetime_frequency_cap%2Clifetime_imps%2Cname%2Coptimization_goal%2Cpromoted_object%2Crf_prediction_id%2Crtb_flag%2Cstart_time%2Ctargeting%2Cupdated_time%2Cuse_new_app_click%2Cpacing_type%2Cbudget_remaining%2Cdaily_budget%2Clifetime_budget&limit=10" > spec/support/fixtures/act_861827983860489/adsets.json
|
17
|
+
curl "https://graph.facebook.com/v2.6/act_861827983860489/ads?access_token=$TOKEN&effective_status%5B%5D=ACTIVE&fields=id%2Caccount_id%2Ccampaign_id%2Cadset_id%2Cadlabels%2Cbid_amount%2Cbid_info%2Cbid_type%2Cconfigured_status%2Cconversion_specs%2Ccreated_time%2Ccreative%2Ceffective_status%2Clast_updated_by_app_id%2Cname%2Ctracking_specs%2Cupdated_time%2Cad_review_feedback&limit=10" > spec/support/fixtures/act_861827983860489/ads.json
|
@@ -0,0 +1 @@
|
|
1
|
+
{"id":"6057330925170","account_id":"861827983860489","buying_type":"AUCTION","can_use_spend_cap":true,"configured_status":"ACTIVE","created_time":"2016-08-30T11:06:36-0700","effective_status":"ACTIVE","name":"2016-08-30|android|ACHIEVEMENT_UNLOCKED|CATEGORY|Beauty","objective":"MOBILE_APP_INSTALLS","start_time":"2016-08-30T11:14:57-0700","updated_time":"2016-08-30T11:06:36-0700"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"id":"6057810634370","account_id":"861827983860489","campaign_id":"6056189814370","adset_id":"6057810632770","bid_type":"ABSOLUTE_OCPM","configured_status":"ACTIVE","conversion_specs":[{"action.type":["mobile_app_install_conversion"],"application":["295802707128640"]}],"created_time":"2016-09-06T10:09:04-0700","creative":{"id":"6057824295570"},"effective_status":"ACTIVE","last_updated_by_app_id":"624541620938530","name":"7ee84b9fcb644c8c5695f2ecabfe7534","tracking_specs":[{"action.type":["mobile_app_install"],"application":["295802707128640"]},{"action.type":["app_custom_event"],"application":["295802707128640"]},{"action.type":["app_custom_event"],"application":["295802707128640"]},{"action.type":["post_engagement"],"page":["300664329976860"],"post":["1138229826220302"]}],"updated_time":"2016-09-06T13:22:53-0700"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"id":"6057810946970","account_id":"861827983860489","campaign_id":"6056535031970","billing_event":"IMPRESSIONS","configured_status":"ACTIVE","created_time":"2016-09-06T10:13:27-0700","effective_status":"ACTIVE","frequency_cap_reset_period":0,"is_autobid":true,"lifetime_imps":0,"name":"64903d00c5006db8bc4c8ea9ea199baf","optimization_goal":"OFFSITE_CONVERSIONS","promoted_object":{"application_id":"295802707128640","custom_event_type":"PURCHASE","object_store_url":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter"},"rtb_flag":false,"start_time":"2016-09-06T10:13:27-0700","targeting":{"age_max":65,"age_min":18,"app_install_state":"not_installed","excluded_custom_audiences":[{"id":"6068994792257","name":"All-Users-2016-08-30"}],"flexible_spec":[{"interests":[{"id":"6003348604581","name":"Fashion accessories"}]}],"genders":[2],"geo_locations":{"countries":["US"],"location_types":["home","recent"]},"user_device":["Android_Smartphone","Android_Tablet"],"user_os":["Android_ver_4.0_and_above"],"page_types":["mobileexternal","mobilefeed"]},"updated_time":"2016-09-06T10:13:27-0700","use_new_app_click":false,"pacing_type":["standard"],"budget_remaining":"3485","daily_budget":"30000","lifetime_budget":"0"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"id":"6057824295570","name":"Ad from a Page post #6,057,824,295,570","object_story_id":"300664329976860_1138229826220302","object_story_spec":{"page_id":"300664329976860","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"f15361294f1a62e56d0586811e2a2b55","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"b1135df6da4fe449ffc1685350ca0f23","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"a1269f4f4b770b283bd4b62d4a1e6fd8","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"88d01a6680881d23c701e9985ff3bb02","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"5ca662bcb95d458f7d5a642467b4f7e1","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBhvAStAnFeL864&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQLLGw-wAWYI2hHK-8UKqhvl98NNt7nPjpRBfe5Aw4dfXPJ5upilSOUptG_i-WToAFxGPWHIkVOslMBxPCDUWevBOeRK8clwcjWLz_yxvy4pTWj9zIB6MQ5fNnKU55wO3ZDSokxUD2ReZdQnkQW4rUWb&cfs=1","run_status":"ACTIVE"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"id":"act_861827983860489","account_id":"861827983860489","account_status":1,"age":512.10546296296,"created_time":"2015-04-09T16:54:58-0700","currency":"USD","name":"Android"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"data":[{"id":"6057824295570","name":"Ad from a Page post #6,057,824,295,570","object_story_id":"300664329976860_1138229826220302","object_story_spec":{"page_id":"300664329976860","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"f15361294f1a62e56d0586811e2a2b55","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"b1135df6da4fe449ffc1685350ca0f23","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"a1269f4f4b770b283bd4b62d4a1e6fd8","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"88d01a6680881d23c701e9985ff3bb02","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"5ca662bcb95d458f7d5a642467b4f7e1","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBhvAStAnFeL864&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQLLGw-wAWYI2hHK-8UKqhvl98NNt7nPjpRBfe5Aw4dfXPJ5upilSOUptG_i-WToAFxGPWHIkVOslMBxPCDUWevBOeRK8clwcjWLz_yxvy4pTWj9zIB6MQ5fNnKU55wO3ZDSokxUD2ReZdQnkQW4rUWb&cfs=1","run_status":"ACTIVE"},{"id":"6057824290170","name":"Ad from a Page post #6,057,824,290,170","object_story_id":"300664329976860_1138229846220300","object_story_spec":{"page_id":"300664329976860","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"d58ac2d40af2d0f02a5012ebc1bb513c","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"c4cf364832b70e2d02da13d02f7f9fc4","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"892fb13cdb2ddbcbca05ec2ab8af2472","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"8853675ff56a5848f22ef8138644eff9","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"117484208ec6e92ffa5c0a0c74c3dc2d","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBaF0MuolbDSAQm&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQLLLrSOxBbTmlgAYy0CetJQo_72Kldma9RcC4x850ZAMBCqtNztB_jc_IVeAY66nf7-3GPg1fHH43ukI4SaEp9SfVQ7HKpQBudRJXprQ4-W5kQDrlWgEc66SROz2beL67mKxSyooqF2cHnJbX6rc0HH&cfs=1","run_status":"ACTIVE"},{"id":"6057824289970","name":"Ad from a Page post #6,057,824,289,970","object_story_id":"300664329976860_1138229842886967","object_story_spec":{"page_id":"300664329976860","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"c97cbd17e4d7590eeda77a4df97ac9ef","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"8a2b076819d09cef1ab94b008be791eb","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"8213245b78e0f43f09f3799cf301f79d","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"6329cec31f7a9052111a268b1ce6b139","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"05617fdce276de1890519274b61d8c71","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQC2ADsSNB7B2WBT&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQJm-A-hBkOD8vRT5MVqvcc34o6sMLJJx4QC5kMDgB9OHZHlLIoqa-Un21fDubPfBVe3FzK5k1yCU4Ji-YAIAgTuCbBpl-HTZetbSkPmyivpWPyV6gHR38yKprLyztvvQGnln5-iU4W6rPd5RLXYxIfF&cfs=1","run_status":"ACTIVE"},{"id":"6057810944970","name":"bdcd18485ab593ef6d907208a2f85456","object_story_id":"300664329976860_1138090379567580","object_story_spec":{"page_id":"300664329976860","instagram_actor_id":"503391023081924","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"a8cc20b1c81b7b85f504e3f4bd432cac","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"490eaf0874c13e0d5a4057195f0ad7be","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"3f42fd4f3dff0e03785f3c5727e27787","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"9e8763f02bb6864f0f3ea8073053e3fd","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"586d7aff4f62018ec1d1386094c36527","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQA-zbOrVqSeSrqB&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQKcY53JIlVNPWhwFavWNdNi90dnWMxThIkaL9_8m76iSNm4tQ9Ql3favLR6TS2hPYtkNqxAiMTYhiBchZ31OR3h-udMaIwF4nRWUug68o3YykzHYdh1I5MoA-U7W-IyeVtscKhLHpnVLmXMtb6WDkuM&cfs=1","run_status":"ACTIVE"},{"id":"6057810933570","name":"2787515d6c36791163039e1d2c73d6ab","object_story_id":"300664329976860_1138089849567633","object_story_spec":{"page_id":"300664329976860","instagram_actor_id":"503391023081924","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"8213245b78e0f43f09f3799cf301f79d","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"6329cec31f7a9052111a268b1ce6b139","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"8853675ff56a5848f22ef8138644eff9","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"e9832a29b435bad468809fec4e3fc189","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"53db26ffff1b0002120b64fe7d973448","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQDLwlMZuwUwuOeX&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQKW55sZfDCgmedwhQuvQCz6muUrhgcXixqzPfXe0IrRQaksKF-7xOg-fFVFJOFyjEFoyNjnBovfmC1olj27kQ2FUECAMFHTZyEAobyyydQbBghxKtOUgLJM-7zktnS-5i-Who0IHcFQMJfm7qTSNk6M&cfs=1","run_status":"ACTIVE"},{"id":"6057810924370","name":"64903d00c5006db8bc4c8ea9ea199baf","object_story_id":"300664329976860_1138089649567653","object_story_spec":{"page_id":"300664329976860","instagram_actor_id":"503391023081924","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"f15361294f1a62e56d0586811e2a2b55","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"a1269f4f4b770b283bd4b62d4a1e6fd8","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"88d01a6680881d23c701e9985ff3bb02","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"c97cbd17e4d7590eeda77a4df97ac9ef","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"8a2b076819d09cef1ab94b008be791eb","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQCs7BsYHQvCfRcg&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQKo84s7JKU0cu3b0TVTJ3curnYcw9T67hPXaOT0zyDbnATgGd7j07RAJyGhTvP-2lNi--mtRg8LivtMpZv7DuLhUXWRf6c-kAhUlCQSfIXB_ivETXW1tufe0ZQvj_23sjWqTUX9ow-6qMcdLX3S8pcE&cfs=1","run_status":"ACTIVE"},{"id":"6057810631970","name":"47f3ad8f25cf4b19e1bc74e73458e2cb","object_story_id":"300664329976860_1138084799568138","object_story_spec":{"page_id":"300664329976860","instagram_actor_id":"503391023081924","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"d58ac2d40af2d0f02a5012ebc1bb513c","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"c4cf364832b70e2d02da13d02f7f9fc4","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"892fb13cdb2ddbcbca05ec2ab8af2472","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"8853675ff56a5848f22ef8138644eff9","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"117484208ec6e92ffa5c0a0c74c3dc2d","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQDb1mALYRmOcNcq&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQIB9NvcntfsReQEJdmJAEhJOdFQM1lJ1G3t4DmjVuUfCQhgiM9IEQpZnhkoDvFtwWbXBV-a6Cut3nqbkwPT5uPfCxdwDdBEUh4asgr8pId03wTkE4toTu85Bbnbtn6uUqoHpsq-XnpNczJz5Pgbu4we&cfs=1","run_status":"ACTIVE"},{"id":"6057810608970","name":"df3e41dd4ae57a597aaafeba02797dab","object_story_id":"300664329976860_1138084679568150","object_story_spec":{"page_id":"300664329976860","instagram_actor_id":"503391023081924","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"c97cbd17e4d7590eeda77a4df97ac9ef","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"8a2b076819d09cef1ab94b008be791eb","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"8213245b78e0f43f09f3799cf301f79d","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"6329cec31f7a9052111a268b1ce6b139","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"05617fdce276de1890519274b61d8c71","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBWzAyNrPOiSOrX&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQIF1kz0NvpFLCIHv7ahAY3djJ2X7d_E1ItaddzjaM_2fL5RFKKGzicCgLnDovgo37VolquV9gH-BDniTNm9eaC-ZZMxcs6S1_EiYD6m82wQyUmfZCuHCgLR5Cw-yyDM_91-moLMiNBuovwHRNiFBWg3&cfs=1","run_status":"ACTIVE"},{"id":"6057810601970","name":"7ee84b9fcb644c8c5695f2ecabfe7534","object_story_id":"300664329976860_1138084586234826","object_story_spec":{"page_id":"300664329976860","instagram_actor_id":"503391023081924","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"f15361294f1a62e56d0586811e2a2b55","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"b1135df6da4fe449ffc1685350ca0f23","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"a1269f4f4b770b283bd4b62d4a1e6fd8","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"88d01a6680881d23c701e9985ff3bb02","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"5ca662bcb95d458f7d5a642467b4f7e1","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQDquUMhGQku4OgA&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQKcKm70kMaO_36VjQRYrPBrajisc-eImvKzmzBfV1BGS9cpVisjUVa9oat1GiqU0i2lkHsR-H5zUTLSB2IQGlHUEc2Q4J5-WYE6Mc2bv0IqT83hpZtnAH6NTZ0MxFZkMr20RfK4pdWud5EIoCeKQlSO&cfs=1","run_status":"ACTIVE"},{"id":"6057412226970","name":"Ad from a Page post #6,057,412,226,970","object_story_id":"300664329976860_1132794240097194","object_story_spec":{"page_id":"300664329976860","link_data":{"link":"https:\/\/itunes.apple.com\/app\/id619460348&ad_hash=3221615c45fbce2b8d32dc3892358ea1","message":"Find hot deals up to 80\u0025 off with Tophatter! Use promo code FB2.","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"https:\/\/itunes.apple.com\/app\/id619460348&ad_hash=3221615c45fbce2b8d32dc3892358ea1","image_hash":"e3b8cd2e4c2440551b01943c250b3289","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"https:\/\/itunes.apple.com\/app\/id619460348&ad_hash=3221615c45fbce2b8d32dc3892358ea1","image_hash":"a283498fd97cc818f491b56c5b5e43ef","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"https:\/\/itunes.apple.com\/app\/id619460348&ad_hash=3221615c45fbce2b8d32dc3892358ea1","image_hash":"20644fa81119550fb466cdd808b6ba26","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"https:\/\/itunes.apple.com\/app\/id619460348&ad_hash=3221615c45fbce2b8d32dc3892358ea1","image_hash":"4722fa5b7e43689a21daef1126990094","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"https:\/\/itunes.apple.com\/app\/id619460348&ad_hash=3221615c45fbce2b8d32dc3892358ea1","image_hash":"46673d7835a58e7f094f869af9b90ee8","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBltCh-Ln7fui9I&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQIIADWqgVtPt1cQzHoJDMa5a7AtTbfqxiYm1JAcu35jjoKAmy0S0t7izGu4JeLKCsBVzShWM-acC61x1XIU3D_NkkKQXe3XImDOc1j39QPy2NihSxiTPRLSI_nmLrYq6Lj1TwOkMmf4YoDWu6SXNPjj&cfs=1","run_status":"ACTIVE"}]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"data":[{"id":"861827983860489:9e8763f02bb6864f0f3ea8073053e3fd","hash":"9e8763f02bb6864f0f3ea8073053e3fd","account_id":"861827983860489","name":"ec745d2671f2c69292c2f1590d7409c6.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQKP_s3oX9-RfkS03CqQIh-C1H9UAPXjLkGhL5dBdpoaTapXfc3UJdVlMF4DihorVkEDToVpkKDXebof3TJVswimw-5TglITWnxVydIz5VPr4ZSaHOBF2rkMCazlVQqVBBDUzUv21U9MsGlhmN9tMtjD","original_width":1128,"original_height":1206},{"id":"861827983860489:586d7aff4f62018ec1d1386094c36527","hash":"586d7aff4f62018ec1d1386094c36527","account_id":"861827983860489","name":"62334cd7ec4b472a87b2cfde90f1b016.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQLShQw4Du_k3wOQ4KXm-5irbUGVELsALMzonxuNaUwsbryxiXG30t1k_wgBZeoRbXvn48LlILt9vHrPeiL-zav4npF9LG7pQzMqPXx024HA1EhylQZ60_0o48L4a062OdKqniNMfm2kG-GG6UFb0mXQ","original_width":600,"original_height":600},{"id":"861827983860489:5473d72075a6fa2f6d1182dba7934478","hash":"5473d72075a6fa2f6d1182dba7934478","account_id":"861827983860489","name":"1246671fdf1defe8ab39107503109266.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQIMvsWvFFQ_1Qph6WmsoT5YdyTPyPgCi4TgAXL1COkX7eUg5Mn9-A7T6LsP3sJRdaA_Lrgw-xObFg7yJ3H-GTmhQbeq6Ppekx8fVMQunaPcyzxML4XJ5hnZ0QlmDcGeDKRcUEYnbGJExfdTtUCZpOsu","original_width":800,"original_height":800},{"id":"861827983860489:490eaf0874c13e0d5a4057195f0ad7be","hash":"490eaf0874c13e0d5a4057195f0ad7be","account_id":"861827983860489","name":"92add20abe85453f545fece1cdf5fe96.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQLLMj8lv4tUbr8GXsTtvGg4xJCFXAh7MMDhekfVdyh47w9UqgouuMPK4sIuZPmz0F1htK-VJpjlKx0io-S7wzv1gXuquqeWllt0YfFT2i2Rr7F93b5vQanmZDIISv0RxF5aviHMLt6A4rimEaTzAPwP","original_width":1000,"original_height":813},{"id":"861827983860489:3f42fd4f3dff0e03785f3c5727e27787","hash":"3f42fd4f3dff0e03785f3c5727e27787","account_id":"861827983860489","name":"cc7909a6ab41acda03b9bfed45874361.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQJNsinCXN0y2kaqQbN9HNgfJF80L44QwQprdcRIl5n_emUr4e90RL6H7gEsoIXJPfvLvZSUWLFgY6faAf4CC7dCp3WQIcMo02z6Y0erOI6nwjHac4gw6EbbCKar0_PuGpLhe12-uw9WeyQODeH9PYFb","original_width":750,"original_height":747},{"id":"861827983860489:e9832a29b435bad468809fec4e3fc189","hash":"e9832a29b435bad468809fec4e3fc189","account_id":"861827983860489","name":"13239ab9735581554bf1b6ab5612ca77.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQKApR8S0G8fNKIrZ1To_NvUyZYTb_F7gtGSCRC94l6ttjmHX4psSTgoNRryx-4xR0gEZABPdOkDvR-tPyeP7ttfpZrVTuazNNzzuEpPUbfNMFFHbG6KLWFDbFumEtOvxKjOtUEFsh8h-k0-XI4Fe80v","original_width":1000,"original_height":889},{"id":"861827983860489:a8cc20b1c81b7b85f504e3f4bd432cac","hash":"a8cc20b1c81b7b85f504e3f4bd432cac","account_id":"861827983860489","name":"2efa2efbe75a4a79415050b8fe35e516.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQKODK8XQhmLY4ALaUx1FPs-79ty439fS0rqsnGXFM15JukDQfPMEu2wP9_RfKNaBjV9wvGEa_Y2NIBFJs9gY1UfBAdsiWborfqFIfzOzYKLQIxk9zic4ECGoSuvgdNKgsYQPh0AFaeE12Pjk0k_v5PG","original_width":1000,"original_height":1000},{"id":"861827983860489:53db26ffff1b0002120b64fe7d973448","hash":"53db26ffff1b0002120b64fe7d973448","account_id":"861827983860489","name":"8fa0097aaf51edcf3e002c75ba4b7353.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQI3tMnjwXRN9CBlNYJbJPfGDqUZiQsGqgK1kLKTK519a_j4bbS7q2PFy2_5zgG2b28rEc8zzJAyWBujcdbgdEuexKN1r-bClzE5e8v1x7Tuna8hkce2JWsKYuBHavTBPoPhVeFg2tPsg1YWqzv-fIhh","original_width":600,"original_height":600},{"id":"861827983860489:9cef5e8a6f66c3e609f256cd9ff0cfc1","hash":"9cef5e8a6f66c3e609f256cd9ff0cfc1","account_id":"861827983860489","name":"6b625771951d142ff78e83f49430c751.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQLOaBuPxlYwsWZpErXhUVkcmjzjojZHzpdgeiQzFgZEUAF5SgB9jzZhrIwAymlHBeLStYdLkfhBzByBXwQIPLfbeAUZym_NyKQ0mAxpAjgwa_iuLxcai2y_NI7zkT3b0qzEV-C-Ut3gyNtj5mAZoDjo","original_width":1200,"original_height":1200},{"id":"861827983860489:d58ac2d40af2d0f02a5012ebc1bb513c","hash":"d58ac2d40af2d0f02a5012ebc1bb513c","account_id":"861827983860489","name":"9198b7efafb5b65bbcebe4f8b7bce3f9.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQI4T2RVzrYsWq21hedBR8dTamz8LDVY4T31frGVpnVN5uTjDqwDbrYmsmimnsRI99OIVaNqo4V_BkMAphLt36Juv1diXR8LrmdAYlur9SfIFCwCvvE7qhXQrTAZpOrFqFp3w6Rwdv73U-cUHCQ8_9Qu","original_width":800,"original_height":800}]}
|