twitter-ads 5.0.0 → 5.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE +1 -1
  3. data/README.md +3 -4
  4. data/Rakefile +1 -2
  5. data/lib/twitter-ads.rb +10 -11
  6. data/lib/twitter-ads/account.rb +12 -12
  7. data/lib/twitter-ads/audiences/audience_intelligence.rb +3 -3
  8. data/lib/twitter-ads/audiences/tailored_audience.rb +12 -156
  9. data/lib/twitter-ads/campaign/app_list.rb +5 -5
  10. data/lib/twitter-ads/campaign/campaign.rb +7 -11
  11. data/lib/twitter-ads/campaign/funding_instrument.rb +6 -5
  12. data/lib/twitter-ads/campaign/iab_category.rb +2 -2
  13. data/lib/twitter-ads/campaign/line_item.rb +18 -21
  14. data/lib/twitter-ads/campaign/organic_tweet.rb +1 -5
  15. data/lib/twitter-ads/campaign/promotable_user.rb +5 -5
  16. data/lib/twitter-ads/campaign/targeting_criteria.rb +7 -7
  17. data/lib/twitter-ads/campaign/tweet.rb +7 -11
  18. data/lib/twitter-ads/client.rb +3 -4
  19. data/lib/twitter-ads/creative/account_media.rb +5 -5
  20. data/lib/twitter-ads/creative/cards_fetch.rb +8 -6
  21. data/lib/twitter-ads/creative/image_app_download_card.rb +5 -5
  22. data/lib/twitter-ads/creative/image_conversation_card.rb +5 -5
  23. data/lib/twitter-ads/creative/media_creative.rb +6 -5
  24. data/lib/twitter-ads/creative/media_library.rb +5 -5
  25. data/lib/twitter-ads/creative/poll_cards.rb +5 -5
  26. data/lib/twitter-ads/creative/promoted_account.rb +5 -9
  27. data/lib/twitter-ads/creative/promoted_tweet.rb +5 -9
  28. data/lib/twitter-ads/creative/scheduled_tweet.rb +7 -7
  29. data/lib/twitter-ads/creative/tweet_previews.rb +36 -0
  30. data/lib/twitter-ads/creative/video_app_download_card.rb +5 -5
  31. data/lib/twitter-ads/creative/video_conversation_card.rb +5 -5
  32. data/lib/twitter-ads/creative/video_website_card.rb +4 -4
  33. data/lib/twitter-ads/creative/website_card.rb +3 -3
  34. data/lib/twitter-ads/cursor.rb +2 -2
  35. data/lib/twitter-ads/enum.rb +128 -122
  36. data/lib/twitter-ads/error.rb +2 -2
  37. data/lib/twitter-ads/http/request.rb +6 -5
  38. data/lib/twitter-ads/http/response.rb +1 -1
  39. data/lib/twitter-ads/legacy.rb +1 -1
  40. data/lib/twitter-ads/measurement/app_event_tag.rb +3 -3
  41. data/lib/twitter-ads/measurement/web_event_tag.rb +3 -3
  42. data/lib/twitter-ads/resources/analytics.rb +38 -8
  43. data/lib/twitter-ads/resources/batch.rb +4 -4
  44. data/lib/twitter-ads/resources/dsl.rb +1 -1
  45. data/lib/twitter-ads/resources/persistence.rb +1 -1
  46. data/lib/twitter-ads/resources/resource.rb +2 -2
  47. data/lib/twitter-ads/settings/tax.rb +3 -3
  48. data/lib/twitter-ads/settings/user.rb +3 -3
  49. data/lib/twitter-ads/targeting/reach_estimate.rb +1 -1
  50. data/lib/twitter-ads/targeting_criteria/app_store_category.rb +3 -3
  51. data/lib/twitter-ads/targeting_criteria/behavior.rb +3 -3
  52. data/lib/twitter-ads/targeting_criteria/behavior_taxonomy.rb +3 -3
  53. data/lib/twitter-ads/targeting_criteria/device.rb +3 -3
  54. data/lib/twitter-ads/targeting_criteria/event.rb +3 -3
  55. data/lib/twitter-ads/targeting_criteria/interest.rb +3 -3
  56. data/lib/twitter-ads/targeting_criteria/language.rb +3 -3
  57. data/lib/twitter-ads/targeting_criteria/location.rb +3 -3
  58. data/lib/twitter-ads/targeting_criteria/network_operator.rb +3 -3
  59. data/lib/twitter-ads/targeting_criteria/platform.rb +3 -3
  60. data/lib/twitter-ads/targeting_criteria/platform_version.rb +3 -3
  61. data/lib/twitter-ads/targeting_criteria/tv_market.rb +3 -3
  62. data/lib/twitter-ads/targeting_criteria/tv_show.rb +3 -3
  63. data/lib/twitter-ads/utils.rb +2 -2
  64. data/lib/twitter-ads/version.rb +2 -2
  65. data/spec/quality_spec.rb +2 -2
  66. data/spec/shared/properties.rb +1 -1
  67. data/spec/spec_helper.rb +9 -8
  68. data/spec/support/helpers.rb +1 -1
  69. data/spec/twitter-ads/account_spec.rb +1 -1
  70. data/spec/twitter-ads/audiences/tailored_audience_spec.rb +1 -1
  71. data/spec/twitter-ads/campaign/app_list_spec.rb +1 -1
  72. data/spec/twitter-ads/campaign/line_item_spec.rb +1 -1
  73. data/spec/twitter-ads/campaign/reach_estimate_spec.rb +1 -1
  74. data/spec/twitter-ads/campaign/targeting_criteria_spec.rb +1 -1
  75. data/spec/twitter-ads/campaign/tweet_spec.rb +1 -1
  76. data/spec/twitter-ads/client_spec.rb +1 -1
  77. data/spec/twitter-ads/creative/account_media_spec.rb +1 -1
  78. data/spec/twitter-ads/creative/image_app_download_card_spec.rb +1 -1
  79. data/spec/twitter-ads/creative/image_conversation_card_spec.rb +1 -1
  80. data/spec/twitter-ads/creative/media_creative_spec.rb +1 -1
  81. data/spec/twitter-ads/creative/promoted_account_spec.rb +1 -1
  82. data/spec/twitter-ads/creative/promoted_tweet_spec.rb +1 -1
  83. data/spec/twitter-ads/creative/video_app_download_card_spec.rb +1 -1
  84. data/spec/twitter-ads/creative/video_conversation_card_spec.rb +1 -1
  85. data/spec/twitter-ads/creative/website_card_spec.rb +1 -1
  86. data/spec/twitter-ads/cursor_spec.rb +1 -1
  87. data/spec/twitter-ads/placements_spec.rb +1 -1
  88. data/spec/twitter-ads/utils_spec.rb +1 -1
  89. data/twitter-ads.gemspec +10 -6
  90. metadata +10 -25
  91. data/lib/twitter-ads/http/ton_upload.rb +0 -156
  92. data/spec/twitter-ads/http/ton_upload_spec.rb +0 -96
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- # Copyright (C) 2015 Twitter, Inc.
2
+ # Copyright (C) 2019 Twitter, Inc.
3
3
 
4
4
  module TwitterAds
5
5
  module Creative
@@ -31,12 +31,12 @@ module TwitterAds
31
31
  property :scheduled_at, type: :time
32
32
  property :text
33
33
 
34
- RESOURCE_COLLECTION = "/#{TwitterAds::API_VERSION}/" +
35
- 'accounts/%{account_id}/scheduled_tweets'.freeze # @api private
36
- RESOURCE = "/#{TwitterAds::API_VERSION}/" +
37
- 'accounts/%{account_id}/scheduled_tweets/%{id}'.freeze # @api private
38
- PREVIEW = "/#{TwitterAds::API_VERSION}/" +
39
- 'accounts/%{account_id}/scheduled_tweets/preview/%{id}'.freeze # @api private
34
+ RESOURCE_COLLECTION = "/#{TwitterAds::API_VERSION}/" \
35
+ 'accounts/%{account_id}/scheduled_tweets' # @api private
36
+ RESOURCE = "/#{TwitterAds::API_VERSION}/" \
37
+ 'accounts/%{account_id}/scheduled_tweets/%{id}' # @api private
38
+ PREVIEW = "/#{TwitterAds::API_VERSION}/" \
39
+ 'accounts/%{account_id}/scheduled_tweets/preview/%{id}' # @api private
40
40
 
41
41
  def preview(account, opts = {})
42
42
  if @id
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2019 Twitter, Inc.
3
+
4
+ module TwitterAds
5
+ module Creative
6
+
7
+ class TweetPreview
8
+
9
+ include TwitterAds::DSL
10
+ include TwitterAds::Resource
11
+
12
+ attr_reader :account
13
+
14
+ property :preview, read_only: true
15
+ property :tweet_id, read_only: true
16
+
17
+ RESOURCE_COLLECTION = "/#{TwitterAds::API_VERSION}/" +
18
+ 'accounts/%{account_id}/tweet_previews' # @api private
19
+
20
+ def load(account, tweet_ids:, tweet_type:)
21
+ params = { tweet_ids: Array(tweet_ids).join(',') }
22
+ params[:tweet_type] = tweet_type
23
+ resource = RESOURCE_COLLECTION % { account_id: account.id }
24
+ request = Request.new(account.client, :get, resource, params: params)
25
+ Cursor.new(self.class, request, init_with: [account])
26
+ end
27
+
28
+ def initialize(account)
29
+ @account = account
30
+ self
31
+ end
32
+
33
+ end
34
+
35
+ end
36
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- # Copyright (C) 2015 Twitter, Inc.
2
+ # Copyright (C) 2019 Twitter, Inc.
3
3
 
4
4
  module TwitterAds
5
5
  module Creative
@@ -36,10 +36,10 @@ module TwitterAds
36
36
  property :name
37
37
  property :video_id
38
38
 
39
- RESOURCE_COLLECTION = "/#{TwitterAds::API_VERSION}/" +
40
- 'accounts/%{account_id}/cards/video_app_download'.freeze # @api private
41
- RESOURCE = "/#{TwitterAds::API_VERSION}/" +
42
- 'accounts/%{account_id}/cards/video_app_download/%{id}'.freeze # @api private
39
+ RESOURCE_COLLECTION = "/#{TwitterAds::API_VERSION}/" \
40
+ 'accounts/%{account_id}/cards/video_app_download' # @api private
41
+ RESOURCE = "/#{TwitterAds::API_VERSION}/" \
42
+ 'accounts/%{account_id}/cards/video_app_download/%{id}' # @api private
43
43
 
44
44
  def initialize(account)
45
45
  @account = account
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- # Copyright (C) 2015 Twitter, Inc.
2
+ # Copyright (C) 2019 Twitter, Inc.
3
3
 
4
4
  module TwitterAds
5
5
  module Creative
@@ -38,10 +38,10 @@ module TwitterAds
38
38
  property :title
39
39
  property :video_id
40
40
 
41
- RESOURCE_COLLECTION = "/#{TwitterAds::API_VERSION}/" +
42
- 'accounts/%{account_id}/cards/video_conversation'.freeze # @api private
43
- RESOURCE = "/#{TwitterAds::API_VERSION}/" +
44
- 'accounts/%{account_id}/cards/video_conversation/%{id}'.freeze # @api private
41
+ RESOURCE_COLLECTION = "/#{TwitterAds::API_VERSION}/" \
42
+ 'accounts/%{account_id}/cards/video_conversation' # @api private
43
+ RESOURCE = "/#{TwitterAds::API_VERSION}/" \
44
+ 'accounts/%{account_id}/cards/video_conversation/%{id}' # @api private
45
45
 
46
46
  def initialize(account)
47
47
  @account = account
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- # Copyright (C) 2015 Twitter, Inc.
2
+ # Copyright (C) 2019 Twitter, Inc.
3
3
 
4
4
  module TwitterAds
5
5
  module Creative
@@ -37,9 +37,9 @@ module TwitterAds
37
37
  property :website_url
38
38
 
39
39
  RESOURCE_COLLECTION = "/#{TwitterAds::API_VERSION}/accounts/%{account_id}/cards/video_website"
40
- .freeze # @api private
41
- RESOURCE = "/#{TwitterAds::API_VERSION}/" +
42
- 'accounts/%{account_id}/cards/video_website/%{id}'.freeze # @api private
40
+ # @api private
41
+ RESOURCE = "/#{TwitterAds::API_VERSION}/" \
42
+ 'accounts/%{account_id}/cards/video_website/%{id}' # @api private
43
43
 
44
44
  def initialize(account)
45
45
  @account = account
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- # Copyright (C) 2015 Twitter, Inc.
2
+ # Copyright (C) 2019 Twitter, Inc.
3
3
 
4
4
  module TwitterAds
5
5
  module Creative
@@ -30,9 +30,9 @@ module TwitterAds
30
30
  property :website_url
31
31
 
32
32
  RESOURCE_COLLECTION = "/#{TwitterAds::API_VERSION}/accounts/%{account_id}/cards/website"
33
- .freeze # @api private
33
+ # @api private
34
34
  RESOURCE = "/#{TwitterAds::API_VERSION}/accounts/%{account_id}/cards/website/%{id}"
35
- .freeze # @api private
35
+ # @api private
36
36
 
37
37
  def initialize(account)
38
38
  @account = account
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- # Copyright (C) 2015 Twitter, Inc.
2
+ # Copyright (C) 2019 Twitter, Inc.
3
3
 
4
4
  module TwitterAds
5
5
  class Cursor
@@ -113,7 +113,7 @@ module TwitterAds
113
113
  @next_cursor = response.body[:next_cursor]
114
114
  @total_count = response.body[:total_count].to_i if response.body.key?(:total_count)
115
115
  response.body.fetch(:data, []).each do |object|
116
- @collection << if @klass && @klass.method_defined?(:from_response)
116
+ @collection << if @klass&.method_defined?(:from_response)
117
117
  @klass.new(
118
118
  *@options[:init_with]).from_response(object)
119
119
  else
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- # Copyright (C) 2015 Twitter, Inc.
2
+ # Copyright (C) 2019 Twitter, Inc.
3
3
 
4
4
  # Copyright (Cend 2015 Twitter, Inc.
5
5
 
@@ -7,27 +7,27 @@ module TwitterAds
7
7
  module Enum
8
8
 
9
9
  module Objective
10
- APP_ENGAGEMENTS = 'APP_ENGAGEMENTS'.freeze
11
- APP_INSTALLS = 'APP_INSTALLS'.freeze
12
- FOLLOWERS = 'FOLLOWERS'.freeze
13
- LEAD_GENERATION = 'LEAD_GENERATION'.freeze
14
- TWEET_ENGAGEMENTS = 'TWEET_ENGAGEMENTS'.freeze
15
- VIDEO_VIEWS = 'VIDEO_VIEWS'.freeze
16
- WEBSITE_CLICKS = 'WEBSITE_CLICKS'.freeze
17
- WEBSITE_CONVERSIONS = 'WEBSITE_CONVERSIONS'.freeze
10
+ APP_ENGAGEMENTS = 'APP_ENGAGEMENTS'
11
+ APP_INSTALLS = 'APP_INSTALLS'
12
+ FOLLOWERS = 'FOLLOWERS'
13
+ LEAD_GENERATION = 'LEAD_GENERATION'
14
+ TWEET_ENGAGEMENTS = 'TWEET_ENGAGEMENTS'
15
+ VIDEO_VIEWS = 'VIDEO_VIEWS'
16
+ WEBSITE_CLICKS = 'WEBSITE_CLICKS'
17
+ WEBSITE_CONVERSIONS = 'WEBSITE_CONVERSIONS'
18
18
 
19
19
  end
20
20
 
21
21
  module Product
22
- PROMOTED_ACCOUNT = 'PROMOTED_ACCOUNT'.freeze
23
- PROMOTED_TWEETS = 'PROMOTED_TWEETS'.freeze
22
+ PROMOTED_ACCOUNT = 'PROMOTED_ACCOUNT'
23
+ PROMOTED_TWEETS = 'PROMOTED_TWEETS'
24
24
  end
25
25
 
26
26
  module Placement
27
- ALL_ON_TWITTER = 'ALL_ON_TWITTER'.freeze
28
- TWITTER_SEARCH = 'TWITTER_SEARCH'.freeze
29
- TWITTER_TIMELINE = 'TWITTER_TIMELINE'.freeze
30
- PUBLISHER_NETWORK = 'PUBLISHER_NETWORK'.freeze
27
+ ALL_ON_TWITTER = 'ALL_ON_TWITTER'
28
+ TWITTER_SEARCH = 'TWITTER_SEARCH'
29
+ TWITTER_TIMELINE = 'TWITTER_TIMELINE'
30
+ PUBLISHER_NETWORK = 'PUBLISHER_NETWORK'
31
31
  end
32
32
 
33
33
  module Placement
@@ -56,176 +56,182 @@ module TwitterAds
56
56
  end
57
57
 
58
58
  module BidUnit
59
- APP_CLICK = 'APP_CLICK'.freeze
60
- APP_INSTALL = 'APP_INSTALL'.freeze
61
- ENGAGEMENT = 'ENGAGEMENT'.freeze
62
- FOLLOW = 'FOLLOW'.freeze
63
- LEAD = 'LEAD'.freeze
64
- LINK_CLICK = 'LINK_CLICK'.freeze
65
- VIEW = 'VIEW'.freeze
66
- VIEW_3S_100PCT = 'VIEW_3S_100PCT'.freeze
59
+ APP_CLICK = 'APP_CLICK'
60
+ APP_INSTALL = 'APP_INSTALL'
61
+ ENGAGEMENT = 'ENGAGEMENT'
62
+ FOLLOW = 'FOLLOW'
63
+ LEAD = 'LEAD'
64
+ LINK_CLICK = 'LINK_CLICK'
65
+ VIEW = 'VIEW'
66
+ VIEW_3S_100PCT = 'VIEW_3S_100PCT'
67
67
  end
68
68
 
69
69
  module BidType
70
- MAX = 'MAX'.freeze
71
- AUTO = 'AUTO'.freeze
72
- TARGET = 'TARGET'.freeze
70
+ MAX = 'MAX'
71
+ AUTO = 'AUTO'
72
+ TARGET = 'TARGET'
73
73
  end
74
74
 
75
75
  module ChargeBy
76
- APP_CLICK = 'APP_CLICK'.freeze
77
- APP_INSTALL = 'APP_INSTALL'.freeze
78
- ENGAGEMENT = 'ENGAGEMENT'.freeze
79
- FOLLOW = 'FOLLOW'.freeze
80
- LEAD = 'LEAD'.freeze
81
- LINK_CLICK = 'LINK_CLICK'.freeze
82
- VIEW = 'VIEW'.freeze
83
- VIEW_3S_100PCT = 'VIEW_3S_100PCT'.freeze
76
+ APP_CLICK = 'APP_CLICK'
77
+ APP_INSTALL = 'APP_INSTALL'
78
+ ENGAGEMENT = 'ENGAGEMENT'
79
+ FOLLOW = 'FOLLOW'
80
+ LEAD = 'LEAD'
81
+ LINK_CLICK = 'LINK_CLICK'
82
+ VIEW = 'VIEW'
83
+ VIEW_3S_100PCT = 'VIEW_3S_100PCT'
84
84
  end
85
85
 
86
86
  module MetricGroup
87
- ENGAGEMENT = 'ENGAGEMENT'.freeze
88
- WEB_CONVERSION = 'WEB_CONVERSION'.freeze
89
- MOBILE_CONVERSION = 'MOBILE_CONVERSION'.freeze
90
- MEDIA = 'MEDIA'.freeze
91
- VIDEO = 'VIDEO'.freeze
92
- BILLING = 'BILLING'.freeze
93
- LIFE_TIME_VALUE_MOBILE_CONVERSION = 'LIFE_TIME_VALUE_MOBILE_CONVERSION'.freeze
87
+ ENGAGEMENT = 'ENGAGEMENT'
88
+ WEB_CONVERSION = 'WEB_CONVERSION'
89
+ MOBILE_CONVERSION = 'MOBILE_CONVERSION'
90
+ MEDIA = 'MEDIA'
91
+ VIDEO = 'VIDEO'
92
+ BILLING = 'BILLING'
93
+ LIFE_TIME_VALUE_MOBILE_CONVERSION = 'LIFE_TIME_VALUE_MOBILE_CONVERSION'
94
94
  end
95
95
 
96
96
  module JobStatus
97
- QUEUED = 'QUEUED'.freeze
98
- PROCESSING = 'PROCESSING'.freeze
99
- UPLOADING = 'UPLOADING'.freeze
100
- SUCCESS = 'SUCCESS'.freeze
101
- FAILED = 'FAILED'.freeze
97
+ QUEUED = 'QUEUED'
98
+ PROCESSING = 'PROCESSING'
99
+ UPLOADING = 'UPLOADING'
100
+ SUCCESS = 'SUCCESS'
101
+ FAILED = 'FAILED'
102
102
  end
103
103
 
104
104
  module Entity
105
- ACCOUNT = 'ACCOUNT'.freeze
106
- FUNDING_INSTRUMENT = 'FUNDING_INSTRUMENT'.freeze
107
- CAMPAIGN = 'CAMPAIGN'.freeze
108
- LINE_ITEM = 'LINE_ITEM'.freeze
109
- PROMOTED_TWEET = 'PROMOTED_TWEET'.freeze
110
- ORGANIC_TWEET = 'ORGANIC_TWEET'.freeze
111
- MEDIA_CREATIVE = 'MEDIA_CREATIVE'.freeze
105
+ ACCOUNT = 'ACCOUNT'
106
+ FUNDING_INSTRUMENT = 'FUNDING_INSTRUMENT'
107
+ CAMPAIGN = 'CAMPAIGN'
108
+ LINE_ITEM = 'LINE_ITEM'
109
+ PROMOTED_TWEET = 'PROMOTED_TWEET'
110
+ ORGANIC_TWEET = 'ORGANIC_TWEET'
111
+ MEDIA_CREATIVE = 'MEDIA_CREATIVE'
112
112
  end
113
113
 
114
114
  module EntityStatus
115
- ACTIVE = 'ACTIVE'.freeze
116
- DRAFT = 'DRAFT'.freeze
117
- PAUSED = 'PAUSED'.freeze
115
+ ACTIVE = 'ACTIVE'
116
+ DRAFT = 'DRAFT'
117
+ PAUSED = 'PAUSED'
118
118
  end
119
119
 
120
120
  module CreativeType
121
- BANNER = 'BANNER'.freeze
122
- INTERSTITIAL = 'INTERSTITIAL'.freeze
123
- PREROLL = 'PREROLL'.freeze
124
- VAST_PREROLL = 'VAST_PREROLL'.freeze
125
- MEDIUM_RECTANGLE = 'MEDIUM_RECTANGLE'.freeze
126
- BANNER_TABLET = 'BANNER_TABLET'.freeze
127
- INTERSTITIAL_LANDSCAPE = 'INTERSTITIAL_LANDSCAPE'.freeze
128
- INTERSTITIAL_TABLET = 'INTERSTITIAL_TABLET'.freeze
129
- INTERSTITIAL_LANDSCAPE_TABLET = 'INTERSTITIAL_LANDSCAPE_TABLET'.freeze
121
+ BANNER = 'BANNER'
122
+ INTERSTITIAL = 'INTERSTITIAL'
123
+ PREROLL = 'PREROLL'
124
+ VAST_PREROLL = 'VAST_PREROLL'
125
+ MEDIUM_RECTANGLE = 'MEDIUM_RECTANGLE'
126
+ BANNER_TABLET = 'BANNER_TABLET'
127
+ INTERSTITIAL_LANDSCAPE = 'INTERSTITIAL_LANDSCAPE'
128
+ INTERSTITIAL_TABLET = 'INTERSTITIAL_TABLET'
129
+ INTERSTITIAL_LANDSCAPE_TABLET = 'INTERSTITIAL_LANDSCAPE_TABLET'
130
130
  end
131
131
 
132
132
  module MediaCategory
133
- AMPLIFY_VIDEO = 'AMPLIFY_VIDEO'.freeze
134
- TWEET_GIF = 'TWEET_GIF'.freeze
135
- TWEET_IMAGE = 'TWEET_IMAGE'.freeze
136
- TWEET_VIDEO = 'TWEET_VIDEO'.freeze
133
+ AMPLIFY_VIDEO = 'AMPLIFY_VIDEO'
134
+ TWEET_GIF = 'TWEET_GIF'
135
+ TWEET_IMAGE = 'TWEET_IMAGE'
136
+ TWEET_VIDEO = 'TWEET_VIDEO'
137
137
  end
138
138
 
139
139
  module MediaType
140
- GIF = 'GIF'.freeze
141
- IMAGE = 'IMAGE'.freeze
142
- VIDEO = 'VIDEO'.freeze
140
+ GIF = 'GIF'
141
+ IMAGE = 'IMAGE'
142
+ VIDEO = 'VIDEO'
143
143
  end
144
144
 
145
145
  module Optimizations
146
- DEFAULT = 'DEFAULT'.freeze
147
- WEBSITE_CONVERSIONS = 'WEBSITE_CONVERSIONS'.freeze
146
+ DEFAULT = 'DEFAULT'
147
+ WEBSITE_CONVERSIONS = 'WEBSITE_CONVERSIONS'
148
148
  end
149
149
 
150
150
  module Granularity
151
- HOUR = 'HOUR'.freeze
152
- DAY = 'DAY'.freeze
153
- TOTAL = 'TOTAL'.freeze
151
+ HOUR = 'HOUR'
152
+ DAY = 'DAY'
153
+ TOTAL = 'TOTAL'
154
154
  end
155
155
 
156
156
  module AgeBucket
157
- AGE_13_TO_24 = 'AGE_13_TO_24'.freeze
158
- AGE_13_TO_34 = 'AGE_13_TO_34'.freeze
159
- AGE_13_TO_49 = 'AGE_13_TO_49'.freeze
160
- AGE_13_TO_54 = 'AGE_13_TO_54'.freeze
161
- AGE_OVER_13 = 'AGE_OVER_13'.freeze
162
- AGE_18_TO_34 = 'AGE_18_TO_34'.freeze
163
- AGE_18_TO_49 = 'AGE_18_TO_49'.freeze
164
- AGE_18_TO_54 = 'AGE_18_TO_54'.freeze
165
- AGE_OVER_18 = 'AGE_OVER_18'.freeze
166
- AGE_21_TO_34 = 'AGE_21_TO_34'.freeze
167
- AGE_21_TO_49 = 'AGE_21_TO_49'.freeze
168
- AGE_21_TO_54 = 'AGE_21_TO_54'.freeze
169
- AGE_OVER_21 = 'AGE_OVER_21'.freeze
170
- AGE_25_TO_49 = 'AGE_25_TO_49'.freeze
171
- AGE_25_TO_54 = 'AGE_25_TO_54'.freeze
172
- AGE_OVER_25 = 'AGE_OVER_25'.freeze
173
- AGE_35_TO_49 = 'AGE_35_TO_49'.freeze
174
- AGE_35_TO_54 = 'AGE_35_TO_54'.freeze
175
- AGE_OVER_35 = 'AGE_OVER_35'.freeze
176
- AGE_OVER_50 = 'AGE_OVER_50'.freeze
157
+ AGE_13_TO_24 = 'AGE_13_TO_24'
158
+ AGE_13_TO_34 = 'AGE_13_TO_34'
159
+ AGE_13_TO_49 = 'AGE_13_TO_49'
160
+ AGE_13_TO_54 = 'AGE_13_TO_54'
161
+ AGE_OVER_13 = 'AGE_OVER_13'
162
+ AGE_18_TO_34 = 'AGE_18_TO_34'
163
+ AGE_18_TO_49 = 'AGE_18_TO_49'
164
+ AGE_18_TO_54 = 'AGE_18_TO_54'
165
+ AGE_OVER_18 = 'AGE_OVER_18'
166
+ AGE_21_TO_34 = 'AGE_21_TO_34'
167
+ AGE_21_TO_49 = 'AGE_21_TO_49'
168
+ AGE_21_TO_54 = 'AGE_21_TO_54'
169
+ AGE_OVER_21 = 'AGE_OVER_21'
170
+ AGE_25_TO_49 = 'AGE_25_TO_49'
171
+ AGE_25_TO_54 = 'AGE_25_TO_54'
172
+ AGE_OVER_25 = 'AGE_OVER_25'
173
+ AGE_35_TO_49 = 'AGE_35_TO_49'
174
+ AGE_35_TO_54 = 'AGE_35_TO_54'
175
+ AGE_OVER_35 = 'AGE_OVER_35'
176
+ AGE_OVER_50 = 'AGE_OVER_50'
177
177
  end
178
178
 
179
179
  module Events
180
- MUSIC_AND_ENTERTAINMENT = 'MUSIC_AND_ENTERTAINMENT'.freeze
181
- SPORTS = 'SPORTS'.freeze
182
- HOLIDAY = 'HOLIDAY'.freeze
183
- CONFERENCE = 'CONFERENCE'.freeze
184
- OTHER = 'OTHER'.freeze
180
+ MUSIC_AND_ENTERTAINMENT = 'MUSIC_AND_ENTERTAINMENT'
181
+ SPORTS = 'SPORTS'
182
+ HOLIDAY = 'HOLIDAY'
183
+ CONFERENCE = 'CONFERENCE'
184
+ OTHER = 'OTHER'
185
185
  end
186
186
 
187
187
  module Sentiment
188
- ALL = 'ALL'.freeze
189
- POSITIVE_ONLY = 'POSITIVE_ONLY'.freeze
188
+ ALL = 'ALL'
189
+ POSITIVE_ONLY = 'POSITIVE_ONLY'
190
190
  end
191
191
 
192
192
  module TAListTypes
193
- EMAIL = 'EMAIL'.freeze
194
- DEVICE_ID = 'DEVICE_ID'.freeze
195
- TWITTER_ID = 'TWITTER_ID'.freeze
196
- HANDLE = 'HANDLE'.freeze
197
- PHONE_NUMBER = 'PHONE_NUMBER'.freeze
193
+ EMAIL = 'EMAIL'
194
+ DEVICE_ID = 'DEVICE_ID'
195
+ TWITTER_ID = 'TWITTER_ID'
196
+ HANDLE = 'HANDLE'
197
+ PHONE_NUMBER = 'PHONE_NUMBER'
198
198
  end
199
199
 
200
200
  module TAOperations
201
- ADD = 'ADD'.freeze
202
- REMOVE = 'REMOVE'.freeze
203
- REPLACE = 'REPLACE'.freeze
201
+ ADD = 'ADD'
202
+ REMOVE = 'REMOVE'
203
+ REPLACE = 'REPLACE'
204
204
  end
205
205
 
206
206
  module PermissionLevel
207
- READ_ONLY = 'READ_ONLY'.freeze
208
- READ_WRITE = 'READ_WRITE'.freeze
207
+ READ_ONLY = 'READ_ONLY'
208
+ READ_WRITE = 'READ_WRITE'
209
209
  end
210
210
 
211
211
  module TrackingPartner
212
- DOUBLE_CLICK = 'DOUBLE_CLICK'.freeze
212
+ DOUBLE_CLICK = 'DOUBLE_CLICK'
213
213
  end
214
214
 
215
215
  module ConversationType
216
- EVENT = 'EVENT'.freeze
217
- HANDLE = 'HANDLE'.freeze
218
- HASHTAG = 'HASHTAG'.freeze
216
+ EVENT = 'EVENT'
217
+ HANDLE = 'HANDLE'
218
+ HASHTAG = 'HASHTAG'
219
219
  end
220
220
 
221
221
  module AudienceDefinition
222
- TARGETING_CRITERIA = 'TARGETING_CRITERIA'.freeze
223
- KEYWORD_AUDIENCE = 'KEYWORD_AUDIENCE'.freeze
222
+ TARGETING_CRITERIA = 'TARGETING_CRITERIA'
223
+ KEYWORD_AUDIENCE = 'KEYWORD_AUDIENCE'
224
224
  end
225
225
 
226
226
  module LookalikeExpansion
227
- DEFINED = 'DEFINED'.freeze
228
- EXPANDED = 'EXPANDED'.freeze
227
+ DEFINED = 'DEFINED'
228
+ EXPANDED = 'EXPANDED'
229
+ end
230
+
231
+ module TweetType
232
+ DRAFT = 'DRAFT'
233
+ PUBLISHED = 'PUBLISHED'
234
+ SCHEDULED = 'SCHEDULED'
229
235
  end
230
236
  end
231
237
  end