facebookbusiness 0.8.0.4 → 0.9.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/facebook_ads/ad_objects/ad_account.rb +8 -0
- data/lib/facebook_ads/ad_objects/ad_account_targeting_unified.rb +1 -0
- data/lib/facebook_ads/ad_objects/ad_asset_feed_spec.rb +1 -0
- data/lib/facebook_ads/ad_objects/ad_campaign_activity.rb +2 -0
- data/lib/facebook_ads/ad_objects/ad_creative.rb +3 -0
- data/lib/facebook_ads/ad_objects/ad_creative_link_data_call_to_action.rb +1 -0
- data/lib/facebook_ads/ad_objects/ad_video.rb +1 -0
- data/lib/facebook_ads/ad_objects/adgroup_activity.rb +2 -0
- data/lib/facebook_ads/ad_objects/business.rb +4 -9
- data/lib/facebook_ads/ad_objects/business_unit.rb +0 -1
- data/lib/facebook_ads/ad_objects/campaign.rb +7 -0
- data/lib/facebook_ads/ad_objects/extended_credit.rb +0 -1
- data/lib/facebook_ads/ad_objects/group.rb +1 -0
- data/lib/facebook_ads/ad_objects/page.rb +1 -0
- data/lib/facebook_ads/ad_objects/post.rb +1 -1
- data/lib/facebook_ads/ad_objects/product_catalog.rb +1 -0
- data/lib/facebook_ads/ad_objects/product_item.rb +1 -0
- data/lib/facebook_ads/ad_objects/server_side/content.rb +23 -4
- data/lib/facebook_ads/ad_objects/system_user.rb +0 -20
- data/lib/facebook_ads/ad_objects/user.rb +1 -5
- data/lib/facebook_ads/version.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b65eb9667af0fc7eb2f9c86e67515d083b436660bfea5b637e5cebc22fc5ab7e
|
4
|
+
data.tar.gz: 295bb79900331447bac7cc4f555203e0dd8660b4f22360b74c1f9dafec4390de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb658bda72e696aab26910d5d7a8ec2bae62c0bc0f7d9a0c1c9c4991b53cdc66dd5026b6e5301d46409a2d2edba7eefe30dbb32433adf4925a7131bb988db580
|
7
|
+
data.tar.gz: 9f4f715f3162cb914650677fe17b661717b66393e3804d0fb89a233bf4451e65aa09109086e28fa1bd0b0c158525d1452fb7ebdb3e73f069e41f91aa7e4078e6
|
@@ -268,6 +268,7 @@ module FacebookAds
|
|
268
268
|
api.has_param :image_url, 'string'
|
269
269
|
api.has_param :instagram_actor_id, 'string'
|
270
270
|
api.has_param :instagram_permalink_url, 'string'
|
271
|
+
api.has_param :instagram_user_id, 'string'
|
271
272
|
api.has_param :instant_checkout_setting, { enum: -> { AdCreative::INSTANT_CHECKOUT_SETTING }}
|
272
273
|
api.has_param :interactive_components_spec, 'hash'
|
273
274
|
api.has_param :is_dco_internal, 'bool'
|
@@ -285,6 +286,7 @@ module FacebookAds
|
|
285
286
|
api.has_param :portrait_customizations, 'hash'
|
286
287
|
api.has_param :product_set_id, 'string'
|
287
288
|
api.has_param :recommender_settings, 'hash'
|
289
|
+
api.has_param :source_instagram_media_id, 'string'
|
288
290
|
api.has_param :template_url, 'string'
|
289
291
|
api.has_param :template_url_spec, 'object'
|
290
292
|
api.has_param :thumbnail_url, 'string'
|
@@ -556,6 +558,7 @@ module FacebookAds
|
|
556
558
|
api.has_param :sales_promo_id, 'int'
|
557
559
|
api.has_param :slideshow_spec, 'hash'
|
558
560
|
api.has_param :source, 'file'
|
561
|
+
api.has_param :source_instagram_media_id, 'string'
|
559
562
|
api.has_param :spherical, 'bool'
|
560
563
|
api.has_param :start_offset, 'int'
|
561
564
|
api.has_param :swap_mode, { enum: -> { AdVideo::SWAP_MODE }}
|
@@ -679,6 +682,7 @@ module FacebookAds
|
|
679
682
|
api.has_param :objective, { enum: -> { Campaign::OBJECTIVE }}
|
680
683
|
api.has_param :pacing_type, { list: 'string' }
|
681
684
|
api.has_param :promoted_object, 'object'
|
685
|
+
api.has_param :smart_promotion_type, { enum: -> { Campaign::SMART_PROMOTION_TYPE }}
|
682
686
|
api.has_param :source_campaign_id, 'string'
|
683
687
|
api.has_param :special_ad_categories, { list: { enum: -> { Campaign::SPECIAL_AD_CATEGORIES }} }
|
684
688
|
api.has_param :special_ad_category_country, { list: { enum: -> { Campaign::SPECIAL_AD_CATEGORY_COUNTRY }} }
|
@@ -696,6 +700,10 @@ module FacebookAds
|
|
696
700
|
end
|
697
701
|
end
|
698
702
|
|
703
|
+
has_edge :connected_instagram_accounts do |edge|
|
704
|
+
edge.get 'IgUser'
|
705
|
+
end
|
706
|
+
|
699
707
|
has_edge :content_delivery_report do |edge|
|
700
708
|
edge.get 'ContentDeliveryReport' do |api|
|
701
709
|
api.has_param :end_date, 'datetime'
|
@@ -177,6 +177,8 @@ module FacebookAds
|
|
177
177
|
field :stop_time_old, 'datetime'
|
178
178
|
field :targeting_expansion_new, 'object'
|
179
179
|
field :targeting_expansion_old, 'object'
|
180
|
+
field :targeting_new, 'object'
|
181
|
+
field :targeting_old, 'object'
|
180
182
|
field :updated_time_new, 'datetime'
|
181
183
|
field :updated_time_old, 'datetime'
|
182
184
|
has_no_post
|
@@ -83,6 +83,7 @@ module FacebookAds
|
|
83
83
|
"SHOP_NOW",
|
84
84
|
"SIGN_UP",
|
85
85
|
"SOTTO_SUBSCRIBE",
|
86
|
+
"START_ORDER",
|
86
87
|
"SUBSCRIBE",
|
87
88
|
"SWIPE_UP_PRODUCT",
|
88
89
|
"SWIPE_UP_SHOP",
|
@@ -182,6 +183,7 @@ module FacebookAds
|
|
182
183
|
field :instagram_actor_id, 'string'
|
183
184
|
field :instagram_permalink_url, 'string'
|
184
185
|
field :instagram_story_id, 'string'
|
186
|
+
field :instagram_user_id, 'string'
|
185
187
|
field :interactive_components_spec, 'AdCreativeInteractiveComponentsSpec'
|
186
188
|
field :link_deep_link_url, 'string'
|
187
189
|
field :link_destination_display_url, 'string'
|
@@ -201,6 +203,7 @@ module FacebookAds
|
|
201
203
|
field :portrait_customizations, 'AdCreativePortraitCustomizations'
|
202
204
|
field :product_set_id, 'string'
|
203
205
|
field :recommender_settings, 'AdCreativeRecommenderSettings'
|
206
|
+
field :source_instagram_media_id, 'string'
|
204
207
|
field :status, { enum: -> { STATUS }}
|
205
208
|
field :template_url, 'string'
|
206
209
|
field :template_url_spec, 'AdCreativeTemplateUrlSpec'
|
@@ -304,6 +304,7 @@ module FacebookAds
|
|
304
304
|
field :replace_video_id, 'string'
|
305
305
|
field :sales_promo_id, 'int'
|
306
306
|
field :slideshow_spec, 'hash'
|
307
|
+
field :source_instagram_media_id, 'string'
|
307
308
|
field :start_offset, 'int'
|
308
309
|
field :swap_mode, { enum: -> { SWAP_MODE }}
|
309
310
|
field :text_format_metadata, 'string'
|
@@ -113,6 +113,8 @@ module FacebookAds
|
|
113
113
|
field :stop_time_old, 'datetime'
|
114
114
|
field :target_spec_id_new, 'string'
|
115
115
|
field :target_spec_id_old, 'string'
|
116
|
+
field :targets_spec_new, 'object'
|
117
|
+
field :targets_spec_old, 'object'
|
116
118
|
field :tracking_pixel_ids_new, { list: 'string' }
|
117
119
|
field :tracking_pixel_ids_old, { list: 'string' }
|
118
120
|
field :tracking_specs_new, { list: 'object' }
|
@@ -258,10 +258,6 @@ module FacebookAds
|
|
258
258
|
|
259
259
|
has_edge :business_users do |edge|
|
260
260
|
edge.get 'BusinessUser'
|
261
|
-
edge.post 'BusinessUser' do |api|
|
262
|
-
api.has_param :email, 'string'
|
263
|
-
api.has_param :role, { enum: -> { BusinessUser::ROLE }}
|
264
|
-
end
|
265
261
|
end
|
266
262
|
|
267
263
|
has_edge :claim_custom_conversions do |edge|
|
@@ -402,6 +398,10 @@ module FacebookAds
|
|
402
398
|
edge.get 'InstagramUser'
|
403
399
|
end
|
404
400
|
|
401
|
+
has_edge :instagram_business_accounts do |edge|
|
402
|
+
edge.get 'IgUser'
|
403
|
+
end
|
404
|
+
|
405
405
|
has_edge :managed_businesses do |edge|
|
406
406
|
edge.delete do |api|
|
407
407
|
api.has_param :existing_client_business_id, 'string'
|
@@ -570,11 +570,6 @@ module FacebookAds
|
|
570
570
|
|
571
571
|
has_edge :system_users do |edge|
|
572
572
|
edge.get 'SystemUser'
|
573
|
-
edge.post 'SystemUser' do |api|
|
574
|
-
api.has_param :name, 'string'
|
575
|
-
api.has_param :role, { enum: -> { SystemUser::ROLE }}
|
576
|
-
api.has_param :system_user_id, 'int'
|
577
|
-
end
|
578
573
|
end
|
579
574
|
|
580
575
|
has_edge :third_party_measurement_report_dataset do |edge|
|
@@ -93,6 +93,7 @@ module FacebookAds
|
|
93
93
|
"LOCAL_AWARENESS",
|
94
94
|
"MESSAGES",
|
95
95
|
"OFFER_CLAIMS",
|
96
|
+
"OUTCOME_LEADS",
|
96
97
|
"PAGE_LIKES",
|
97
98
|
"POST_ENGAGEMENT",
|
98
99
|
"PRODUCT_CATALOG_SALES",
|
@@ -101,6 +102,11 @@ module FacebookAds
|
|
101
102
|
"VIDEO_VIEWS",
|
102
103
|
]
|
103
104
|
|
105
|
+
SMART_PROMOTION_TYPE = [
|
106
|
+
"GUIDED_CREATION",
|
107
|
+
"SMART_APP_PROMOTION",
|
108
|
+
]
|
109
|
+
|
104
110
|
SPECIAL_AD_CATEGORIES = [
|
105
111
|
"CREDIT",
|
106
112
|
"EMPLOYMENT",
|
@@ -421,6 +427,7 @@ module FacebookAds
|
|
421
427
|
field :adbatch, { list: 'object' }
|
422
428
|
field :execution_options, { list: { enum: -> { EXECUTION_OPTIONS }} }
|
423
429
|
field :iterative_split_test_configs, { list: 'object' }
|
430
|
+
field :smart_promotion_type, { enum: -> { SMART_PROMOTION_TYPE }}
|
424
431
|
field :upstream_events, 'hash'
|
425
432
|
|
426
433
|
has_edge :ad_studies do |edge|
|
@@ -34,7 +34,6 @@ module FacebookAds
|
|
34
34
|
field :id, 'string'
|
35
35
|
field :is_access_revoked, 'bool'
|
36
36
|
field :is_automated_experience, 'bool'
|
37
|
-
field :last_payment_time, 'datetime'
|
38
37
|
field :legal_entity_name, 'string'
|
39
38
|
field :liable_biz_name, 'string'
|
40
39
|
field :max_balance, 'CurrencyAmount'
|
@@ -528,6 +528,7 @@ module FacebookAds
|
|
528
528
|
api.has_param :scheduled_publish_time, 'int'
|
529
529
|
api.has_param :slideshow_spec, 'hash'
|
530
530
|
api.has_param :source, 'string'
|
531
|
+
api.has_param :source_instagram_media_id, 'string'
|
531
532
|
api.has_param :spherical, 'bool'
|
532
533
|
api.has_param :start_offset, 'int'
|
533
534
|
api.has_param :swap_mode, { enum: -> { AdVideo::SWAP_MODE }}
|
@@ -1430,6 +1430,7 @@ module FacebookAds
|
|
1430
1430
|
api.has_param :slideshow_spec, 'hash'
|
1431
1431
|
api.has_param :social_actions, 'bool'
|
1432
1432
|
api.has_param :source, 'string'
|
1433
|
+
api.has_param :source_instagram_media_id, 'string'
|
1433
1434
|
api.has_param :specified_dialect, 'string'
|
1434
1435
|
api.has_param :spherical, 'bool'
|
1435
1436
|
api.has_param :sponsor_id, 'string'
|
@@ -225,7 +225,7 @@ module FacebookAds
|
|
225
225
|
api.has_param :audience_id, 'string'
|
226
226
|
api.has_param :bid_amount, 'int'
|
227
227
|
api.has_param :budget, 'int'
|
228
|
-
api.has_param :cta_type, { enum: %w{ADD_TO_CART APPLY_NOW BOOK_TRAVEL BUY BUY_NOW BUY_TICKETS CALL CALL_ME CONTACT CONTACT_US DONATE DONATE_NOW DOWNLOAD EVENT_RSVP FIND_A_GROUP FIND_YOUR_GROUPS FOLLOW_NEWS_STORYLINE FOLLOW_PAGE FOLLOW_USER GET_DIRECTIONS GET_OFFER GET_OFFER_VIEW GET_QUOTE GET_SHOWTIMES INSTALL_APP INSTALL_MOBILE_APP LEARN_MORE LIKE_PAGE LISTEN_MUSIC LISTEN_NOW MESSAGE_PAGE MOBILE_DOWNLOAD MOMENTS NO_BUTTON OPEN_LINK ORDER_NOW PAY_TO_ACCESS PLAY_GAME PURCHASE_GIFT_CARDS RECORD_NOW REFER_FRIENDS REQUEST_TIME SAY_THANKS SEE_MORE SELL_NOW SEND_A_GIFT SHARE SHOP_NOW SIGN_UP SOTTO_SUBSCRIBE SUBSCRIBE SWIPE_UP_PRODUCT SWIPE_UP_SHOP UPDATE_APP USE_APP USE_MOBILE_APP VIDEO_ANNOTATION VISIT_PAGES_FEED WATCH_MORE WATCH_VIDEO WHATSAPP_MESSAGE WOODHENGE_SUPPORT }}
|
228
|
+
api.has_param :cta_type, { enum: %w{ADD_TO_CART APPLY_NOW BOOK_TRAVEL BUY BUY_NOW BUY_TICKETS CALL CALL_ME CONTACT CONTACT_US DONATE DONATE_NOW DOWNLOAD EVENT_RSVP FIND_A_GROUP FIND_YOUR_GROUPS FOLLOW_NEWS_STORYLINE FOLLOW_PAGE FOLLOW_USER GET_DIRECTIONS GET_OFFER GET_OFFER_VIEW GET_QUOTE GET_SHOWTIMES INSTALL_APP INSTALL_MOBILE_APP LEARN_MORE LIKE_PAGE LISTEN_MUSIC LISTEN_NOW MESSAGE_PAGE MOBILE_DOWNLOAD MOMENTS NO_BUTTON OPEN_LINK ORDER_NOW PAY_TO_ACCESS PLAY_GAME PURCHASE_GIFT_CARDS RECORD_NOW REFER_FRIENDS REQUEST_TIME SAY_THANKS SEE_MORE SELL_NOW SEND_A_GIFT SHARE SHOP_NOW SIGN_UP SOTTO_SUBSCRIBE START_ORDER SUBSCRIBE SWIPE_UP_PRODUCT SWIPE_UP_SHOP UPDATE_APP USE_APP USE_MOBILE_APP VIDEO_ANNOTATION VISIT_PAGES_FEED WATCH_MORE WATCH_VIDEO WHATSAPP_MESSAGE WOODHENGE_SUPPORT }}
|
229
229
|
api.has_param :currency, 'string'
|
230
230
|
api.has_param :flow_id, 'string'
|
231
231
|
api.has_param :placement, 'string'
|
@@ -349,6 +349,7 @@ module FacebookAds
|
|
349
349
|
edge.post 'ProductItem' do |api|
|
350
350
|
api.has_param :additional_image_files, { list: 'file' }
|
351
351
|
api.has_param :additional_image_urls, { list: 'string' }
|
352
|
+
api.has_param :additional_uploaded_image_ids, { list: 'string' }
|
352
353
|
api.has_param :additional_variant_attributes, 'hash'
|
353
354
|
api.has_param :android_app_name, 'string'
|
354
355
|
api.has_param :android_class, 'string'
|
@@ -344,6 +344,7 @@ module FacebookAds
|
|
344
344
|
field :url, 'string'
|
345
345
|
field :visibility, { enum: -> { VISIBILITY }}
|
346
346
|
field :additional_image_files, { list: 'file' }
|
347
|
+
field :additional_uploaded_image_ids, { list: 'string' }
|
347
348
|
field :android_app_name, 'string'
|
348
349
|
field :android_class, 'string'
|
349
350
|
field :android_package, 'string'
|
@@ -28,7 +28,8 @@ module FacebookAds
|
|
28
28
|
:title,
|
29
29
|
:description,
|
30
30
|
:brand,
|
31
|
-
:category
|
31
|
+
:category,
|
32
|
+
:delivery_category
|
32
33
|
|
33
34
|
# Initializes the object
|
34
35
|
# @param [String] product_id
|
@@ -38,7 +39,8 @@ module FacebookAds
|
|
38
39
|
# @param [String] description
|
39
40
|
# @param [String] brand
|
40
41
|
# @param [String] category
|
41
|
-
|
42
|
+
# @param [String] delivery_category
|
43
|
+
def initialize(product_id: nil, quantity: nil, item_price: nil, title: nil, description: nil, brand: nil, category: nil, delivery_category: nil)
|
42
44
|
unless product_id.nil?
|
43
45
|
self.product_id = String(product_id)
|
44
46
|
end
|
@@ -60,6 +62,9 @@ module FacebookAds
|
|
60
62
|
unless category.nil?
|
61
63
|
self.category = String(category)
|
62
64
|
end
|
65
|
+
unless delivery_category.nil?
|
66
|
+
self.delivery_category = String(delivery_category)
|
67
|
+
end
|
63
68
|
end
|
64
69
|
|
65
70
|
# build the object using the input hash
|
@@ -97,6 +102,10 @@ module FacebookAds
|
|
97
102
|
if attributes.has_key?(:'category')
|
98
103
|
self.category = attributes[:'category']
|
99
104
|
end
|
105
|
+
|
106
|
+
if attributes.has_key?(:'delivery_category')
|
107
|
+
self.delivery_category = attributes[:'delivery_category']
|
108
|
+
end
|
100
109
|
end
|
101
110
|
|
102
111
|
# Checks equality by comparing each attribute.
|
@@ -108,7 +117,8 @@ module FacebookAds
|
|
108
117
|
title == o.title &&
|
109
118
|
description == o.description &&
|
110
119
|
brand == o.brand &&
|
111
|
-
category == o.category
|
120
|
+
category == o.category &&
|
121
|
+
delivery_category == o.delivery_category
|
112
122
|
end
|
113
123
|
|
114
124
|
# @see the `==` method
|
@@ -126,7 +136,8 @@ module FacebookAds
|
|
126
136
|
title,
|
127
137
|
description,
|
128
138
|
brand,
|
129
|
-
category
|
139
|
+
category,
|
140
|
+
delivery_category
|
130
141
|
].hash
|
131
142
|
end
|
132
143
|
|
@@ -156,6 +167,9 @@ module FacebookAds
|
|
156
167
|
unless category.nil?
|
157
168
|
hash['category'] = category
|
158
169
|
end
|
170
|
+
unless delivery_category.nil?
|
171
|
+
hash['delivery_category'] = delivery_category
|
172
|
+
end
|
159
173
|
hash.to_s
|
160
174
|
end
|
161
175
|
|
@@ -183,6 +197,11 @@ module FacebookAds
|
|
183
197
|
unless category.nil?
|
184
198
|
hash['category'] = category
|
185
199
|
end
|
200
|
+
unless delivery_category.nil?
|
201
|
+
hash['delivery_category'] = FacebookAds::ServerSide::Util.normalize_delivery_category(
|
202
|
+
delivery_category
|
203
|
+
)
|
204
|
+
end
|
186
205
|
hash
|
187
206
|
end
|
188
207
|
end
|
@@ -26,24 +26,6 @@ module FacebookAds
|
|
26
26
|
# pull request for this class.
|
27
27
|
|
28
28
|
class SystemUser < AdObject
|
29
|
-
ROLE = [
|
30
|
-
"ADMIN",
|
31
|
-
"ADS_RIGHTS_REVIEWER",
|
32
|
-
"DEFAULT",
|
33
|
-
"DEVELOPER",
|
34
|
-
"EMPLOYEE",
|
35
|
-
"FINANCE_ANALYST",
|
36
|
-
"FINANCE_EDIT",
|
37
|
-
"FINANCE_EDITOR",
|
38
|
-
"FINANCE_VIEW",
|
39
|
-
"MANAGE",
|
40
|
-
"PARTNER_CENTER_ADMIN",
|
41
|
-
"PARTNER_CENTER_ANALYST",
|
42
|
-
"PARTNER_CENTER_EDUCATION",
|
43
|
-
"PARTNER_CENTER_MARKETING",
|
44
|
-
"PARTNER_CENTER_OPERATIONS",
|
45
|
-
]
|
46
|
-
|
47
29
|
|
48
30
|
field :created_by, 'User'
|
49
31
|
field :created_time, 'datetime'
|
@@ -51,8 +33,6 @@ module FacebookAds
|
|
51
33
|
field :id, 'string'
|
52
34
|
field :ip_permission, 'string'
|
53
35
|
field :name, 'string'
|
54
|
-
field :role, { enum: -> { ROLE }}
|
55
|
-
field :system_user_id, 'int'
|
56
36
|
has_no_post
|
57
37
|
has_no_delete
|
58
38
|
|
@@ -109,11 +109,6 @@ module FacebookAds
|
|
109
109
|
|
110
110
|
has_edge :access_tokens do |edge|
|
111
111
|
edge.delete
|
112
|
-
edge.post 'User' do |api|
|
113
|
-
api.has_param :business_app, 'int'
|
114
|
-
api.has_param :page_id, 'string'
|
115
|
-
api.has_param :scope, { list: 'Permission' }
|
116
|
-
end
|
117
112
|
end
|
118
113
|
|
119
114
|
has_edge :accounts do |edge|
|
@@ -680,6 +675,7 @@ module FacebookAds
|
|
680
675
|
api.has_param :sales_promo_id, 'int'
|
681
676
|
api.has_param :slideshow_spec, 'hash'
|
682
677
|
api.has_param :source, 'string'
|
678
|
+
api.has_param :source_instagram_media_id, 'string'
|
683
679
|
api.has_param :spherical, 'bool'
|
684
680
|
api.has_param :sponsor_id, 'string'
|
685
681
|
api.has_param :start_offset, 'int'
|
data/lib/facebook_ads/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: facebookbusiness
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Facebook
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-11-
|
11
|
+
date: 2020-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|