twitter-ads 0.3.4 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/lib/twitter-ads.rb +18 -0
  5. data/lib/twitter-ads/account.rb +20 -5
  6. data/lib/twitter-ads/audiences/tailored_audience.rb +4 -4
  7. data/lib/twitter-ads/campaign/app_list.rb +2 -2
  8. data/lib/twitter-ads/campaign/campaign.rb +4 -3
  9. data/lib/twitter-ads/campaign/funding_instrument.rb +2 -2
  10. data/lib/twitter-ads/campaign/line_item.rb +12 -14
  11. data/lib/twitter-ads/campaign/promotable_user.rb +2 -2
  12. data/lib/twitter-ads/campaign/targeting_criteria.rb +2 -2
  13. data/lib/twitter-ads/campaign/tweet.rb +5 -4
  14. data/lib/twitter-ads/creative/account_media.rb +36 -0
  15. data/lib/twitter-ads/creative/app_download_card.rb +2 -2
  16. data/lib/twitter-ads/creative/image_app_download_card.rb +2 -2
  17. data/lib/twitter-ads/creative/image_conversation_card.rb +2 -2
  18. data/lib/twitter-ads/creative/lead_gen_card.rb +2 -2
  19. data/lib/twitter-ads/creative/media_creative.rb +37 -0
  20. data/lib/twitter-ads/creative/promoted_account.rb +4 -3
  21. data/lib/twitter-ads/creative/promoted_tweet.rb +4 -3
  22. data/lib/twitter-ads/creative/video.rb +2 -2
  23. data/lib/twitter-ads/creative/video_app_download_card.rb +2 -2
  24. data/lib/twitter-ads/creative/video_conversation_card.rb +2 -2
  25. data/lib/twitter-ads/creative/website_card.rb +2 -2
  26. data/lib/twitter-ads/enum.rb +49 -2
  27. data/lib/twitter-ads/http/request.rb +2 -2
  28. data/lib/twitter-ads/resources/analytics.rb +129 -24
  29. data/lib/twitter-ads/resources/dsl.rb +1 -1
  30. data/lib/twitter-ads/targeting/reach_estimate.rb +17 -10
  31. data/lib/twitter-ads/targeting_criteria/app_store_category.rb +22 -0
  32. data/lib/twitter-ads/targeting_criteria/behavior.rb +26 -0
  33. data/lib/twitter-ads/targeting_criteria/behavior_taxonomy.rb +23 -0
  34. data/lib/twitter-ads/targeting_criteria/device.rb +24 -0
  35. data/lib/twitter-ads/targeting_criteria/event.rb +32 -0
  36. data/lib/twitter-ads/targeting_criteria/interest.rb +22 -0
  37. data/lib/twitter-ads/targeting_criteria/language.rb +21 -0
  38. data/lib/twitter-ads/targeting_criteria/location.rb +22 -0
  39. data/lib/twitter-ads/targeting_criteria/network_operator.rb +22 -0
  40. data/lib/twitter-ads/targeting_criteria/platform.rb +22 -0
  41. data/lib/twitter-ads/targeting_criteria/platform_version.rb +23 -0
  42. data/lib/twitter-ads/targeting_criteria/tv_channel.rb +20 -0
  43. data/lib/twitter-ads/targeting_criteria/tv_genre.rb +20 -0
  44. data/lib/twitter-ads/targeting_criteria/tv_market.rb +22 -0
  45. data/lib/twitter-ads/targeting_criteria/tv_show.rb +22 -0
  46. data/lib/twitter-ads/version.rb +1 -1
  47. data/spec/spec_helper.rb +1 -1
  48. data/spec/twitter-ads/campaign/app_list_spec.rb +1 -1
  49. data/spec/twitter-ads/campaign/line_item_spec.rb +0 -22
  50. data/spec/twitter-ads/campaign/reach_estimate_spec.rb +16 -11
  51. data/spec/twitter-ads/campaign/tweet_spec.rb +2 -2
  52. data/spec/twitter-ads/client_spec.rb +1 -1
  53. data/spec/twitter-ads/creative/account_media_spec.rb +32 -0
  54. data/spec/twitter-ads/creative/media_creative_spec.rb +32 -0
  55. metadata +44 -22
  56. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c2a9baebef194bb1afe3d158260acac82197b4a9
4
- data.tar.gz: 683bc57423beae4e79a1f41ecd58b0063b98a66b
3
+ metadata.gz: 9a50bc00ab21ca3c398e31b761134e6ec380f364
4
+ data.tar.gz: bb364bf536c4d0263ceb9cbb344b6f92b7dd970f
5
5
  SHA512:
6
- metadata.gz: 642dc745353d0f378aefa9a3dadde2820ddb6cec1d79c72f54e26d0958607fa6f4acf2235328d8e3e20b6a4af11a73288e4e0202f03887599c457e600986bfac
7
- data.tar.gz: 51ccabfa2fdd681462f649ea6bd478e472760efa0290658b3e48b1f0851a240b2b035dc5763fa34e4949741c8a8dea125f78c9c48a5eca702333d254dd054f7c
6
+ metadata.gz: 72b852ad83d11e5ec80fbffff9bc89d5a19da8825075eeccd78e9ae9353cad4e281a85822925d52f3521ef61e0fdedb65e886d96d015b33a97ab914392567c9d
7
+ data.tar.gz: b13816066362a49a23d8ddb31b57faf58b4eceb7be3e5afcf51c088cbbaae9a4e5c2159c313f8a1a12815cd0771f6a6bedb36bb93bc95ba5a251b3eee483b416
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -38,10 +38,28 @@ require 'twitter-ads/campaign/tweet'
38
38
 
39
39
  require 'twitter-ads/enum'
40
40
 
41
+ require 'twitter-ads/targeting_criteria/tv_market'
42
+ require 'twitter-ads/targeting_criteria/tv_channel'
43
+ require 'twitter-ads/targeting_criteria/tv_genre'
44
+ require 'twitter-ads/targeting_criteria/tv_show'
45
+ require 'twitter-ads/targeting_criteria/event'
46
+ require 'twitter-ads/targeting_criteria/device'
47
+ require 'twitter-ads/targeting_criteria/platform'
48
+ require 'twitter-ads/targeting_criteria/platform_version'
49
+ require 'twitter-ads/targeting_criteria/network_operator'
50
+ require 'twitter-ads/targeting_criteria/location'
51
+ require 'twitter-ads/targeting_criteria/interest'
52
+ require 'twitter-ads/targeting_criteria/language'
53
+ require 'twitter-ads/targeting_criteria/behavior'
54
+ require 'twitter-ads/targeting_criteria/behavior_taxonomy'
55
+ require 'twitter-ads/targeting_criteria/app_store_category'
56
+
41
57
  require 'twitter-ads/creative/app_download_card'
58
+ require 'twitter-ads/creative/account_media'
42
59
  require 'twitter-ads/creative/image_app_download_card'
43
60
  require 'twitter-ads/creative/image_conversation_card'
44
61
  require 'twitter-ads/creative/lead_gen_card'
62
+ require 'twitter-ads/creative/media_creative'
45
63
  require 'twitter-ads/creative/promoted_account'
46
64
  require 'twitter-ads/creative/promoted_tweet'
47
65
  require 'twitter-ads/creative/video_app_download_card'
@@ -17,11 +17,11 @@ module TwitterAds
17
17
  property :updated_at, type: :time, read_only: true
18
18
  property :deleted, type: :bool, read_only: true
19
19
 
20
- RESOURCE_COLLECTION = '/0/accounts'.freeze # @api private
21
- RESOURCE = '/0/accounts/%{id}'.freeze # @api private
22
- FEATURES = '/0/accounts/%{id}/features'.freeze # @api private
23
- SCOPED_TIMELINE = '/0/accounts/%{id}/scoped_timeline'.freeze # @api private
24
- AUTHENTICATED_USER_ACCESS = '/0/accounts/%{id}/authenticated_user_access'.freeze # @api private
20
+ RESOURCE_COLLECTION = '/1/accounts'.freeze # @api private
21
+ RESOURCE = '/1/accounts/%{id}'.freeze # @api private
22
+ FEATURES = '/1/accounts/%{id}/features'.freeze # @api private
23
+ SCOPED_TIMELINE = '/1/accounts/%{id}/scoped_timeline'.freeze # @api private
24
+ AUTHENTICATED_USER_ACCESS = '/1/accounts/%{id}/authenticated_user_access'.freeze # @api private
25
25
 
26
26
  def initialize(client)
27
27
  @client = client
@@ -103,6 +103,21 @@ module TwitterAds
103
103
  load_resource(PromotableUser, id, opts)
104
104
  end
105
105
 
106
+ # Returns a collection of promoted tweets available to the current account.
107
+ #
108
+ # @param id [String] The PromotedTweet ID value.
109
+ # @param opts [Hash] A Hash of extended options.
110
+ # @option opts [String] :line_item_ids Scope the result to collection of line item IDs.
111
+ # @option opts [Boolean] :with_deleted Indicates if deleted items should be included.
112
+ # @option opts [String] :sort_by The object param to sort the API response by.
113
+ #
114
+ # @return A Cursor or object instance.
115
+ #
116
+ # @since 1.0.0
117
+ def promotable_tweets(id = nil, opts = {})
118
+ load_resource(Creative::PromotedTweet, id, opts)
119
+ end
120
+
106
121
  # Returns a collection of funding instruments available to the current account.
107
122
  #
108
123
  # @param id [String] The FundingInstrument ID value.
@@ -25,11 +25,11 @@ module TwitterAds
25
25
  property :targetable, type: :bool, read_only: true
26
26
  property :targetable_types, read_only: true
27
27
 
28
- RESOURCE_COLLECTION = '/0/accounts/%{account_id}/tailored_audiences'.freeze # @api private
29
- RESOURCE = '/0/accounts/%{account_id}/tailored_audiences/%{id}'.freeze # @api private
30
- RESOURCE_UPDATE = '/0/accounts/%{account_id}/tailored_audience_changes'.freeze # @api private
28
+ RESOURCE_COLLECTION = '/1/accounts/%{account_id}/tailored_audiences'.freeze # @api private
29
+ RESOURCE = '/1/accounts/%{account_id}/tailored_audiences/%{id}'.freeze # @api private
30
+ RESOURCE_UPDATE = '/1/accounts/%{account_id}/tailored_audience_changes'.freeze # @api private
31
31
  GLOBAL_OPT_OUT =
32
- '/0/accounts/%{account_id}/tailored_audiences/global_opt_out'.freeze # @api private
32
+ '/1/accounts/%{account_id}/tailored_audiences/global_opt_out'.freeze # @api private
33
33
 
34
34
  LIST_TYPES = %w(
35
35
  EMAIL
@@ -13,8 +13,8 @@ module TwitterAds
13
13
  property :apps, read_only: true
14
14
  property :name, read_only: true
15
15
 
16
- RESOURCE_COLLECTION = '/0/accounts/%{account_id}/app_lists'.freeze # @api private
17
- RESOURCE = '/0/accounts/%{account_id}/app_lists/%{id}'.freeze # @api private
16
+ RESOURCE_COLLECTION = '/1/accounts/%{account_id}/app_lists'.freeze # @api private
17
+ RESOURCE = '/1/accounts/%{account_id}/app_lists/%{id}'.freeze # @api private
18
18
 
19
19
  def initialize(account)
20
20
  @account = account
@@ -27,9 +27,10 @@ module TwitterAds
27
27
  property :daily_budget_amount_local_micro
28
28
  property :total_budget_amount_local_micro
29
29
 
30
- RESOURCE_COLLECTION = '/0/accounts/%{account_id}/campaigns'.freeze # @api private
31
- RESOURCE_STATS = '/0/stats/accounts/%{account_id}/campaigns'.freeze # @api private
32
- RESOURCE = '/0/accounts/%{account_id}/campaigns/%{id}'.freeze # @api private
30
+ RESOURCE_COLLECTION = '/1/accounts/%{account_id}/campaigns'.freeze # @api private
31
+ RESOURCE_STATS = '/1/stats/accounts/%{account_id}'.freeze # @api private
32
+ RESOURCE_ASYNC_STATS = '/1/stats/jobs/accounts/%{account_id}'.freeze # @api private
33
+ RESOURCE = '/1/accounts/%{account_id}/campaigns/%{id}'.freeze # @api private
33
34
 
34
35
  def initialize(account)
35
36
  @account = account
@@ -21,8 +21,8 @@ module TwitterAds
21
21
  property :updated_at, type: :time, read_only: true
22
22
  property :deleted, type: :bool, read_only: true
23
23
 
24
- RESOURCE_COLLECTION = '/0/accounts/%{account_id}/funding_instruments'.freeze # @api private
25
- RESOURCE = '/0/accounts/%{account_id}/funding_instruments/%{id}'.freeze # @api private
24
+ RESOURCE_COLLECTION = '/1/accounts/%{account_id}/funding_instruments'.freeze # @api private
25
+ RESOURCE = '/1/accounts/%{account_id}/funding_instruments/%{id}'.freeze # @api private
26
26
 
27
27
  def initialize(account)
28
28
  @account = account
@@ -33,24 +33,22 @@ module TwitterAds
33
33
  property :bid_amount_local_micro
34
34
  property :total_budget_amount_local_micro
35
35
 
36
- RESOURCE_COLLECTION = '/0/accounts/%{account_id}/line_items'.freeze # @api private
37
- RESOURCE_STATS = '/0/stats/accounts/%{account_id}/line_items'.freeze # @api private
38
- RESOURCE = '/0/accounts/%{account_id}/line_items/%{id}'.freeze # @api private
36
+ # beta (not yet generally available)
37
+ property :advertiser_user_id
38
+ property :bid_type
39
+ property :tracking_tags
40
+
41
+ RESOURCE_COLLECTION = '/1/accounts/%{account_id}/line_items'.freeze # @api private
42
+ RESOURCE_STATS = '/1/stats/accounts/%{account_id}'.freeze # @api private
43
+ RESOURCE_ASYNC_STATS = '/1/stats/jobs/accounts/%{account_id}'.freeze # @api private
44
+ RESOURCE = '/1/accounts/%{account_id}/line_items/%{id}'.freeze # @api private
45
+ RESOURCE_PLACEMENTS = '/1/line_items/placements'.freeze # @api private
39
46
 
40
47
  def initialize(account)
41
48
  @account = account
42
49
  self
43
50
  end
44
51
 
45
- # Overload for CUSTOM objective deprecation warning.
46
- # @private
47
- def objective=(value)
48
- if value == TwitterAds::Objective::CUSTOM
49
- TwitterAds::Utils.deprecated('TwitterAds::Objective::CUSTOM')
50
- end
51
- @objective = value
52
- end
53
-
54
52
  class << self
55
53
 
56
54
  # Helper method to return a list a valid placement combinations by Product.
@@ -65,9 +63,9 @@ module TwitterAds
65
63
  # @since 0.3.2
66
64
  # @see https://dev.twitter.com/ads/reference/get/line_items/placements
67
65
  def placements(client, product_type = nil)
68
- resource = '/0/line_items/placements'
69
66
  params = { product_type: product_type } if product_type
70
- response = TwitterAds::Request.new(client, :get, resource, params: params).perform
67
+ response = TwitterAds::Request.new(client, :get,
68
+ RESOURCE_PLACEMENTS, params: params).perform
71
69
  response.body[:data][0][:placements]
72
70
  end
73
71
 
@@ -16,8 +16,8 @@ module TwitterAds
16
16
  property :updated_at, type: :time, read_only: true
17
17
  property :deleted, type: :bool, read_only: true
18
18
 
19
- RESOURCE_COLLECTION = '/0/accounts/%{account_id}/promotable_users'.freeze # @api private
20
- RESOURCE = '/0/accounts/%{account_id}/promotable_users/%{id}'.freeze # @api private
19
+ RESOURCE_COLLECTION = '/1/accounts/%{account_id}/promotable_users'.freeze # @api private
20
+ RESOURCE = '/1/accounts/%{account_id}/promotable_users/%{id}'.freeze # @api private
21
21
 
22
22
  def initialize(account)
23
23
  @account = account
@@ -23,8 +23,8 @@ module TwitterAds
23
23
  property :tailored_audience_expansion, type: :bool
24
24
  property :tailored_audience_type
25
25
 
26
- RESOURCE_COLLECTION = '/0/accounts/%{account_id}/targeting_criteria'.freeze # @api private
27
- RESOURCE = '/0/accounts/%{account_id}/targeting_criteria/%{id}'.freeze # @api private
26
+ RESOURCE_COLLECTION = '/1/accounts/%{account_id}/targeting_criteria'.freeze # @api private
27
+ RESOURCE = '/1/accounts/%{account_id}/targeting_criteria/%{id}'.freeze # @api private
28
28
 
29
29
  def initialize(account)
30
30
  @account = account
@@ -7,10 +7,11 @@ module TwitterAds
7
7
  # cannot instaniate Tweet, only including class methods for stats
8
8
  extend TwitterAds::Analytics::ClassMethods
9
9
 
10
- RESOURCE_COLLECTION = '/0/accounts/%{account_id}/tweet/preview'.freeze # @api private
11
- RESOURCE_STATS = '/0/stats/accounts/%{account_id}/organic_tweets'.freeze # @api private
12
- RESOURCE = '/0/accounts/%{account_id}/tweet/preview/%{id}'.freeze # @api private
13
- RESOURCE_CREATE = '/0/accounts/%{account_id}/tweet'.freeze # @api private
10
+ RESOURCE_COLLECTION = '/1/accounts/%{account_id}/tweet/preview'.freeze # @api private
11
+ RESOURCE_STATS = '/1/stats/accounts/%{account_id}'.freeze # @api private
12
+ RESOURCE_ASYNC_STATS = '/1/stats/jobs/accounts/%{account_id}'.freeze # @api private
13
+ RESOURCE = '/1/accounts/%{account_id}/tweet/preview/%{id}'.freeze # @api private
14
+ RESOURCE_CREATE = '/1/accounts/%{account_id}/tweet'.freeze # @api private
14
15
 
15
16
  class << self
16
17
 
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2015 Twitter, Inc.
3
+
4
+ module TwitterAds
5
+ module Creative
6
+
7
+ class AccountMedia
8
+
9
+ include TwitterAds::DSL
10
+ include TwitterAds::Resource
11
+ include TwitterAds::Persistence
12
+
13
+ attr_reader :account
14
+
15
+ property :id, read_only: true
16
+ property :deleted, type: :bool, read_only: true
17
+ property :created_at, type: :time, read_only: true
18
+ property :updated_at, type: :time, read_only: true
19
+ property :media_url, read_only: true
20
+
21
+ property :media_id
22
+ property :creative_type
23
+ property :video_id
24
+
25
+ RESOURCE_COLLECTION = '/1/accounts/%{account_id}/account_media'.freeze # @api private
26
+ RESOURCE = '/1/accounts/%{account_id}/account_media/%{id}'.freeze # @api private
27
+
28
+ def initialize(account)
29
+ @account = account
30
+ self
31
+ end
32
+
33
+ end
34
+
35
+ end
36
+ end
@@ -30,8 +30,8 @@ module TwitterAds
30
30
  property :custom_icon_media_id
31
31
  property :custom_app_description
32
32
 
33
- RESOURCE_COLLECTION = '/0/accounts/%{account_id}/cards/app_download'.freeze # @api private
34
- RESOURCE = '/0/accounts/%{account_id}/cards/app_download/%{id}'.freeze # @api private
33
+ RESOURCE_COLLECTION = '/1/accounts/%{account_id}/cards/app_download'.freeze # @api private
34
+ RESOURCE = '/1/accounts/%{account_id}/cards/app_download/%{id}'.freeze # @api private
35
35
 
36
36
  def initialize(account)
37
37
  @account = account
@@ -30,8 +30,8 @@ module TwitterAds
30
30
  property :wide_app_image_media_id
31
31
 
32
32
  RESOURCE_COLLECTION =
33
- '/0/accounts/%{account_id}/cards/image_app_download'.freeze # @api private
34
- RESOURCE = '/0/accounts/%{account_id}/cards/image_app_download/%{id}'.freeze # @api private
33
+ '/1/accounts/%{account_id}/cards/image_app_download'.freeze # @api private
34
+ RESOURCE = '/1/accounts/%{account_id}/cards/image_app_download/%{id}'.freeze # @api private
35
35
 
36
36
  def initialize(account)
37
37
  @account = account
@@ -30,8 +30,8 @@ module TwitterAds
30
30
  property :image_media_id
31
31
 
32
32
  RESOURCE_COLLECTION =
33
- '/0/accounts/%{account_id}/cards/image_conversation'.freeze # @api private
34
- RESOURCE = '/0/accounts/%{account_id}/cards/image_conversation/%{id}'.freeze # @api private
33
+ '/1/accounts/%{account_id}/cards/image_conversation'.freeze # @api private
34
+ RESOURCE = '/1/accounts/%{account_id}/cards/image_conversation/%{id}'.freeze # @api private
35
35
 
36
36
  def initialize(account)
37
37
  @account = account
@@ -32,8 +32,8 @@ module TwitterAds
32
32
  property :custom_key_name
33
33
  property :custom_key_email
34
34
 
35
- RESOURCE_COLLECTION = '/0/accounts/%{account_id}/cards/lead_gen'.freeze # @api private
36
- RESOURCE = '/0/accounts/%{account_id}/cards/lead_gen/%{id}'.freeze # @api private
35
+ RESOURCE_COLLECTION = '/1/accounts/%{account_id}/cards/lead_gen'.freeze # @api private
36
+ RESOURCE = '/1/accounts/%{account_id}/cards/lead_gen/%{id}'.freeze # @api private
37
37
 
38
38
  def initialize(account)
39
39
  @account = account
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2015 Twitter, Inc.
3
+
4
+ module TwitterAds
5
+ module Creative
6
+
7
+ class MediaCreative
8
+
9
+ include TwitterAds::DSL
10
+ include TwitterAds::Resource
11
+ include TwitterAds::Persistence
12
+
13
+ attr_reader :account
14
+
15
+ property :id, read_only: true
16
+ property :deleted, type: :bool, read_only: true
17
+ property :created_at, type: :time, read_only: true
18
+ property :updated_at, type: :time, read_only: true
19
+ property :approval_status, read_only: true
20
+ property :serving_status, read_only: true
21
+
22
+ property :line_item_id
23
+ property :account_media_id
24
+ property :landing_url
25
+
26
+ RESOURCE_COLLECTION = '/1/accounts/%{account_id}/media_creatives'.freeze # @api private
27
+ RESOURCE = '/1/accounts/%{account_id}/media_creatives/%{id}'.freeze # @api private
28
+
29
+ def initialize(account)
30
+ @account = account
31
+ self
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+ end
@@ -23,9 +23,10 @@ module TwitterAds
23
23
  property :user_id
24
24
  property :paused, type: :bool
25
25
 
26
- RESOURCE_COLLECTION = '/0/accounts/%{account_id}/promoted_accounts'.freeze # @api private
27
- RESOURCE_STATS = '/0/stats/accounts/%{account_id}/promoted_accounts'.freeze # @api private
28
- RESOURCE = '/0/accounts/%{account_id}/promoted_accounts/%{id}'.freeze # @api private
26
+ RESOURCE_COLLECTION = '/1/accounts/%{account_id}/promoted_accounts'.freeze # @api private
27
+ RESOURCE_STATS = '/1/stats/accounts/%{account_id}'.freeze # @api private
28
+ RESOURCE_ASYNC_STATS = '/1/stats/jobs/accounts/%{account_id}'.freeze # @api private
29
+ RESOURCE = '/1/accounts/%{account_id}/promoted_accounts/%{id}'.freeze # @api private
29
30
 
30
31
  def initialize(account)
31
32
  @account = account
@@ -23,9 +23,10 @@ module TwitterAds
23
23
  property :tweet_id
24
24
  property :paused, type: :bool
25
25
 
26
- RESOURCE_COLLECTION = '/0/accounts/%{account_id}/promoted_tweets'.freeze # @api private
27
- RESOURCE_STATS = '/0/stats/accounts/%{account_id}/promoted_tweets'.freeze # @api private
28
- RESOURCE = '/0/accounts/%{account_id}/promoted_tweets/%{id}'.freeze # @api private
26
+ RESOURCE_COLLECTION = '/1/accounts/%{account_id}/promoted_tweets'.freeze # @api private
27
+ RESOURCE_STATS = '/1/stats/accounts/%{account_id}'.freeze # @api private
28
+ RESOURCE_ASYNC_STATS = '/1/stats/jobs/accounts/%{account_id}'.freeze # @api private
29
+ RESOURCE = '/1/accounts/%{account_id}/promoted_tweets/%{id}'.freeze # @api private
29
30
 
30
31
  def initialize(account)
31
32
  @account = account
@@ -26,8 +26,8 @@ module TwitterAds
26
26
  property :description
27
27
  property :video_media_id
28
28
 
29
- RESOURCE_COLLECTION = '/0/accounts/%{account_id}/videos'.freeze # @api private
30
- RESOURCE = '/0/accounts/%{account_id}/videos/%{id}'.freeze # @api private
29
+ RESOURCE_COLLECTION = '/1/accounts/%{account_id}/videos'.freeze # @api private
30
+ RESOURCE = '/1/accounts/%{account_id}/videos/%{id}'.freeze # @api private
31
31
 
32
32
  def initialize(account)
33
33
  @account = account
@@ -33,8 +33,8 @@ module TwitterAds
33
33
  property :video_id
34
34
 
35
35
  RESOURCE_COLLECTION =
36
- '/0/accounts/%{account_id}/cards/video_app_download'.freeze # @api private
37
- RESOURCE = '/0/accounts/%{account_id}/cards/video_app_download/%{id}'.freeze # @api private
36
+ '/1/accounts/%{account_id}/cards/video_app_download'.freeze # @api private
37
+ RESOURCE = '/1/accounts/%{account_id}/cards/video_app_download/%{id}'.freeze # @api private
38
38
 
39
39
  def initialize(account)
40
40
  @account = account
@@ -32,8 +32,8 @@ module TwitterAds
32
32
  property :video_id
33
33
 
34
34
  RESOURCE_COLLECTION =
35
- '/0/accounts/%{account_id}/cards/video_conversation'.freeze # @api private
36
- RESOURCE = '/0/accounts/%{account_id}/cards/video_conversation/%{id}'.freeze # @api private
35
+ '/1/accounts/%{account_id}/cards/video_conversation'.freeze # @api private
36
+ RESOURCE = '/1/accounts/%{account_id}/cards/video_conversation/%{id}'.freeze # @api private
37
37
 
38
38
  def initialize(account)
39
39
  @account = account
@@ -26,8 +26,8 @@ module TwitterAds
26
26
  property :website_cta
27
27
  property :image_media_id
28
28
 
29
- RESOURCE_COLLECTION = '/0/accounts/%{account_id}/cards/website'.freeze # @api private
30
- RESOURCE = '/0/accounts/%{account_id}/cards/website/%{id}'.freeze # @api private
29
+ RESOURCE_COLLECTION = '/1/accounts/%{account_id}/cards/website'.freeze # @api private
30
+ RESOURCE = '/1/accounts/%{account_id}/cards/website/%{id}'.freeze # @api private
31
31
 
32
32
  def initialize(account)
33
33
  @account = account
@@ -15,8 +15,6 @@ module TwitterAds
15
15
  VIDEO_VIEWS = 'VIDEO_VIEWS'.freeze
16
16
  WEBSITE_CLICKS = 'WEBSITE_CLICKS'.freeze
17
17
 
18
- # @deprecated
19
- CUSTOM = 'CUSTOM'.freeze
20
18
  end
21
19
 
22
20
  module Product
@@ -64,6 +62,13 @@ module TwitterAds
64
62
  LEAD = 'LEAD'.freeze
65
63
  LINK_CLICK = 'LINK_CLICK'.freeze
66
64
  VIEW = 'VIEW'.freeze
65
+ VIEW_3S_100PCT = 'VIEW_3S_100PCT'.freeze
66
+ end
67
+
68
+ module BidType
69
+ MAX = 'MAX'.freeze
70
+ AUTO = 'AUTO'.freeze
71
+ TARGET = 'TARGET'.freeze
67
72
  end
68
73
 
69
74
  module ChargeBy
@@ -74,6 +79,39 @@ module TwitterAds
74
79
  LEAD = 'LEAD'.freeze
75
80
  LINK_CLICK = 'LINK_CLICK'.freeze
76
81
  VIEW = 'VIEW'.freeze
82
+ VIEW_3S_100PCT = 'VIEW_3S_100PCT'.freeze
83
+ end
84
+
85
+ module MetricGroup
86
+ ENGAGEMENT = 'ENGAGEMENT'.freeze
87
+ WEB_CONVERSION = 'WEB_CONVERSION'.freeze
88
+ MOBILE_CONVERSION = 'MOBILE_CONVERSION'.freeze
89
+ MEDIA = 'MEDIA'.freeze
90
+ VIDEO = 'VIDEO'.freeze
91
+ BILLING = 'BILLING'.freeze
92
+ LIFE_TIME_VALUE_MOBILE_CONVERSION = 'LIFE_TIME_VALUE_MOBILE_CONVERSION'.freeze
93
+ end
94
+
95
+ module JobStatus
96
+ QUEUED = 'QUEUED'.freeze
97
+ PROCESSING = 'PROCESSING'.freeze
98
+ UPLOADING = 'UPLOADING'.freeze
99
+ SUCCESS = 'SUCCESS'.freeze
100
+ FAILED = 'FAILED'.freeze
101
+ end
102
+
103
+ module Entity
104
+ ACCOUNT = 'ACCOUNT'.freeze
105
+ FUNDING_INSTRUMENT = 'FUNDING_INSTRUMENT'.freeze
106
+ CAMPAIGN = 'CAMPAIGN'.freeze
107
+ LINE_ITEM = 'LINE_ITEM'.freeze
108
+ PROMOTED_TWEET = 'PROMOTED_TWEET'.freeze
109
+ ORGANIC_TWEET = 'ORGANIC_TWEET'.freeze
110
+ end
111
+
112
+ module CreativeType
113
+ BANNER = 'BANNER'.freeze
114
+ INTERSTITIAL = 'INTERSTITIAL'.freeze
77
115
  end
78
116
 
79
117
  module Optimizations
@@ -131,5 +169,14 @@ module TwitterAds
131
169
  REPLACE = 'REPLACE'.freeze
132
170
  end
133
171
 
172
+ module PermissionLevel
173
+ READ_ONLY = 'READ_ONLY'.freeze
174
+ READ_WRITE = 'READ_WRITE'.freeze
175
+ end
176
+
177
+ module TrackingPartner
178
+ DOUBLE_CLICK = 'DOUBLE_CLICK'.freeze
179
+ end
180
+
134
181
  end
135
182
  end