pinterest_sdk 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 (488) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +9 -0
  3. data/Gemfile.lock +70 -0
  4. data/README.md +319 -0
  5. data/Rakefile +10 -0
  6. data/bin/bundle +114 -0
  7. data/bin/byebug +27 -0
  8. data/bin/coderay +27 -0
  9. data/bin/htmldiff +27 -0
  10. data/bin/ldiff +27 -0
  11. data/bin/pry +27 -0
  12. data/bin/rake +27 -0
  13. data/bin/rspec +27 -0
  14. data/bin/rubocop +27 -0
  15. data/bin/ruby-parse +27 -0
  16. data/bin/ruby-rewrite +27 -0
  17. data/docs/Account.md +24 -0
  18. data/docs/ActionType.md +15 -0
  19. data/docs/AdAccount.md +26 -0
  20. data/docs/AdAccountOwner.md +18 -0
  21. data/docs/AdAccountsApi.md +929 -0
  22. data/docs/AdGroupResponse.md +62 -0
  23. data/docs/AdGroupResponseAllOf.md +48 -0
  24. data/docs/AdGroupResponseAllOf1.md +30 -0
  25. data/docs/AdGroupSummaryStatus.md +15 -0
  26. data/docs/AdResponse.md +70 -0
  27. data/docs/AdResponseAllOf.md +48 -0
  28. data/docs/AdResponseAllOf1.md +38 -0
  29. data/docs/AdsAnalyticsCreateAsyncRequest.md +62 -0
  30. data/docs/AdsAnalyticsCreateAsyncRequestAllOf.md +32 -0
  31. data/docs/AdsAnalyticsCreateAsyncRequestAllOf1.md +22 -0
  32. data/docs/AdsAnalyticsCreateAsyncResponse.md +22 -0
  33. data/docs/AdsAnalyticsFilterColumn.md +15 -0
  34. data/docs/AdsAnalyticsFilterOperator.md +15 -0
  35. data/docs/AdsAnalyticsGetAsyncResponse.md +22 -0
  36. data/docs/AdsAnalyticsMetricsFilter.md +22 -0
  37. data/docs/AdsAnalyticsTargetingType.md +15 -0
  38. data/docs/AnalyticsMetricsResponse.md +20 -0
  39. data/docs/AnalyticsMetricsResponseDailyMetrics.md +22 -0
  40. data/docs/AvailabilityFilter.md +18 -0
  41. data/docs/BatchOperation.md +15 -0
  42. data/docs/BatchOperationStatus.md +15 -0
  43. data/docs/Board.md +26 -0
  44. data/docs/BoardOwner.md +18 -0
  45. data/docs/BoardSection.md +20 -0
  46. data/docs/BoardUpdate.md +22 -0
  47. data/docs/BoardsApi.md +811 -0
  48. data/docs/BrandFilter.md +18 -0
  49. data/docs/CampaignCommon.md +34 -0
  50. data/docs/CampaignResponse.md +44 -0
  51. data/docs/CampaignResponseAllOf.md +18 -0
  52. data/docs/CampaignResponseAllOf1.md +24 -0
  53. data/docs/CampaignSummaryStatus.md +15 -0
  54. data/docs/CatalogsApi.md +939 -0
  55. data/docs/CatalogsDbItem.md +22 -0
  56. data/docs/CatalogsFeed.md +42 -0
  57. data/docs/CatalogsFeedCredentials.md +20 -0
  58. data/docs/CatalogsFeedIngestionDetails.md +20 -0
  59. data/docs/CatalogsFeedIngestionErrors.md +26 -0
  60. data/docs/CatalogsFeedIngestionInfo.md +22 -0
  61. data/docs/CatalogsFeedProcessingResult.md +30 -0
  62. data/docs/CatalogsFeedProcessingResultFields.md +24 -0
  63. data/docs/CatalogsFeedProcessingSchedule.md +20 -0
  64. data/docs/CatalogsFeedProcessingStatus.md +15 -0
  65. data/docs/CatalogsFeedProductCounts.md +18 -0
  66. data/docs/CatalogsFeedValidationDetails.md +20 -0
  67. data/docs/CatalogsFeedValidationErrors.md +84 -0
  68. data/docs/CatalogsFeedValidationWarnings.md +106 -0
  69. data/docs/CatalogsFeedsCreateRequest.md +34 -0
  70. data/docs/CatalogsFeedsUpdateRequest.md +32 -0
  71. data/docs/CatalogsFormat.md +15 -0
  72. data/docs/CatalogsItems.md +18 -0
  73. data/docs/CatalogsItemsBatch.md +26 -0
  74. data/docs/CatalogsItemsBatchRequest.md +24 -0
  75. data/docs/CatalogsProductGroup.md +34 -0
  76. data/docs/CatalogsProductGroupCreateRequest.md +24 -0
  77. data/docs/CatalogsProductGroupCurrencyCriteria.md +20 -0
  78. data/docs/CatalogsProductGroupFilterKeys.md +68 -0
  79. data/docs/CatalogsProductGroupFilters.md +20 -0
  80. data/docs/CatalogsProductGroupFiltersAllOf.md +18 -0
  81. data/docs/CatalogsProductGroupFiltersAnyOf.md +18 -0
  82. data/docs/CatalogsProductGroupMultipleStringCriteria.md +20 -0
  83. data/docs/CatalogsProductGroupMultipleStringListCriteria.md +20 -0
  84. data/docs/CatalogsProductGroupPricingCriteria.md +22 -0
  85. data/docs/CatalogsProductGroupStatus.md +15 -0
  86. data/docs/CatalogsProductGroupType.md +15 -0
  87. data/docs/CatalogsProductGroupUpdateRequest.md +24 -0
  88. data/docs/CatalogsStatus.md +15 -0
  89. data/docs/ConditionFilter.md +18 -0
  90. data/docs/ConversionAttributionWindowDays.md +15 -0
  91. data/docs/ConversionReportAttributionType.md +15 -0
  92. data/docs/ConversionReportTimeType.md +15 -0
  93. data/docs/Country.md +15 -0
  94. data/docs/Currency.md +15 -0
  95. data/docs/CurrencyFilter.md +18 -0
  96. data/docs/CustomLabel0Filter.md +18 -0
  97. data/docs/CustomLabel1Filter.md +18 -0
  98. data/docs/CustomLabel2Filter.md +18 -0
  99. data/docs/CustomLabel3Filter.md +18 -0
  100. data/docs/CustomLabel4Filter.md +18 -0
  101. data/docs/DataOutputFormat.md +15 -0
  102. data/docs/EntityStatus.md +15 -0
  103. data/docs/Error.md +20 -0
  104. data/docs/FeedFields.md +36 -0
  105. data/docs/GenderFilter.md +18 -0
  106. data/docs/GoogleProductCategory0Filter.md +18 -0
  107. data/docs/GoogleProductCategory1Filter.md +18 -0
  108. data/docs/GoogleProductCategory2Filter.md +18 -0
  109. data/docs/GoogleProductCategory3Filter.md +18 -0
  110. data/docs/GoogleProductCategory4Filter.md +18 -0
  111. data/docs/GoogleProductCategory5Filter.md +18 -0
  112. data/docs/GoogleProductCategory6Filter.md +18 -0
  113. data/docs/Granularity.md +15 -0
  114. data/docs/ImageDetails.md +22 -0
  115. data/docs/ItemAttributes.md +104 -0
  116. data/docs/ItemBatchRecord.md +20 -0
  117. data/docs/ItemGroupIdFilter.md +18 -0
  118. data/docs/ItemIdFilter.md +18 -0
  119. data/docs/ItemProcessingRecord.md +24 -0
  120. data/docs/ItemProcessingStatus.md +15 -0
  121. data/docs/ItemValidationEvent.md +22 -0
  122. data/docs/Language.md +15 -0
  123. data/docs/MaxPriceFilter.md +18 -0
  124. data/docs/MediaApi.md +221 -0
  125. data/docs/MediaUpload.md +24 -0
  126. data/docs/MediaUploadAllOf.md +24 -0
  127. data/docs/MediaUploadAllOfUploadParameters.md +32 -0
  128. data/docs/MediaUploadDetails.md +22 -0
  129. data/docs/MediaUploadRequest.md +18 -0
  130. data/docs/MediaUploadStatus.md +15 -0
  131. data/docs/MediaUploadType.md +15 -0
  132. data/docs/MetricsReportingLevel.md +15 -0
  133. data/docs/MinPriceFilter.md +18 -0
  134. data/docs/NonNullableCatalogsCurrency.md +15 -0
  135. data/docs/NullableCurrency.md +15 -0
  136. data/docs/OauthAccessTokenRequest.md +18 -0
  137. data/docs/OauthAccessTokenRequestCode.md +20 -0
  138. data/docs/OauthAccessTokenRequestCodeAllOf.md +20 -0
  139. data/docs/OauthAccessTokenRequestRefresh.md +20 -0
  140. data/docs/OauthAccessTokenRequestRefreshAllOf.md +20 -0
  141. data/docs/OauthAccessTokenResponse.md +26 -0
  142. data/docs/OauthAccessTokenResponseCode.md +20 -0
  143. data/docs/OauthAccessTokenResponseCodeAllOf.md +20 -0
  144. data/docs/OauthAccessTokenResponseRefresh.md +15 -0
  145. data/docs/OauthApi.md +72 -0
  146. data/docs/ObjectiveType.md +15 -0
  147. data/docs/PacingDeliveryType.md +15 -0
  148. data/docs/Paginated.md +20 -0
  149. data/docs/Pin.md +38 -0
  150. data/docs/PinMedia.md +18 -0
  151. data/docs/PinMediaSource.md +81 -0
  152. data/docs/PinMediaSourceImageBase64.md +22 -0
  153. data/docs/PinMediaSourceImageURL.md +20 -0
  154. data/docs/PinMediaSourceVideoID.md +22 -0
  155. data/docs/PinMediaWithImage.md +18 -0
  156. data/docs/PinMediaWithImageAllOf.md +18 -0
  157. data/docs/PinPromotionSummaryStatus.md +15 -0
  158. data/docs/PinsApi.md +304 -0
  159. data/docs/PlacementGroupType.md +15 -0
  160. data/docs/ProductAvailabilityType.md +15 -0
  161. data/docs/ProductGroupSummaryStatus.md +15 -0
  162. data/docs/ProductType0Filter.md +18 -0
  163. data/docs/ProductType1Filter.md +18 -0
  164. data/docs/ProductType2Filter.md +18 -0
  165. data/docs/ProductType3Filter.md +18 -0
  166. data/docs/ProductType4Filter.md +18 -0
  167. data/docs/ReportingColumnAsync.md +15 -0
  168. data/docs/TargetingTypeFilter.md +18 -0
  169. data/docs/TrackingUrls.md +26 -0
  170. data/docs/UserAccountApi.md +165 -0
  171. data/git_push.sh +57 -0
  172. data/lib/pinterest_sdk/api/ad_accounts_api.rb +1287 -0
  173. data/lib/pinterest_sdk/api/boards_api.rb +888 -0
  174. data/lib/pinterest_sdk/api/catalogs_api.rb +965 -0
  175. data/lib/pinterest_sdk/api/media_api.rb +229 -0
  176. data/lib/pinterest_sdk/api/oauth_api.rb +96 -0
  177. data/lib/pinterest_sdk/api/pins_api.rb +330 -0
  178. data/lib/pinterest_sdk/api/user_account_api.rb +201 -0
  179. data/lib/pinterest_sdk/api_client.rb +390 -0
  180. data/lib/pinterest_sdk/api_error.rb +57 -0
  181. data/lib/pinterest_sdk/configuration.rb +285 -0
  182. data/lib/pinterest_sdk/models/account.rb +280 -0
  183. data/lib/pinterest_sdk/models/action_type.rb +39 -0
  184. data/lib/pinterest_sdk/models/ad_account.rb +254 -0
  185. data/lib/pinterest_sdk/models/ad_account_owner.rb +219 -0
  186. data/lib/pinterest_sdk/models/ad_group_response.rb +555 -0
  187. data/lib/pinterest_sdk/models/ad_group_response_all_of.rb +427 -0
  188. data/lib/pinterest_sdk/models/ad_group_response_all_of1.rb +329 -0
  189. data/lib/pinterest_sdk/models/ad_group_summary_status.rb +41 -0
  190. data/lib/pinterest_sdk/models/ad_response.rb +640 -0
  191. data/lib/pinterest_sdk/models/ad_response_all_of.rb +455 -0
  192. data/lib/pinterest_sdk/models/ad_response_all_of1.rb +409 -0
  193. data/lib/pinterest_sdk/models/ads_analytics_create_async_request.rb +831 -0
  194. data/lib/pinterest_sdk/models/ads_analytics_create_async_request_all_of.rb +356 -0
  195. data/lib/pinterest_sdk/models/ads_analytics_create_async_request_all_of1.rb +253 -0
  196. data/lib/pinterest_sdk/models/ads_analytics_create_async_response.rb +237 -0
  197. data/lib/pinterest_sdk/models/ads_analytics_filter_column.rb +37 -0
  198. data/lib/pinterest_sdk/models/ads_analytics_filter_operator.rb +37 -0
  199. data/lib/pinterest_sdk/models/ads_analytics_get_async_response.rb +238 -0
  200. data/lib/pinterest_sdk/models/ads_analytics_metrics_filter.rb +254 -0
  201. data/lib/pinterest_sdk/models/ads_analytics_targeting_type.rb +48 -0
  202. data/lib/pinterest_sdk/models/analytics_metrics_response.rb +233 -0
  203. data/lib/pinterest_sdk/models/analytics_metrics_response_daily_metrics.rb +275 -0
  204. data/lib/pinterest_sdk/models/availability_filter.rb +223 -0
  205. data/lib/pinterest_sdk/models/batch_operation.rb +38 -0
  206. data/lib/pinterest_sdk/models/batch_operation_status.rb +37 -0
  207. data/lib/pinterest_sdk/models/board.rb +301 -0
  208. data/lib/pinterest_sdk/models/board_owner.rb +218 -0
  209. data/lib/pinterest_sdk/models/board_section.rb +252 -0
  210. data/lib/pinterest_sdk/models/board_update.rb +272 -0
  211. data/lib/pinterest_sdk/models/brand_filter.rb +223 -0
  212. data/lib/pinterest_sdk/models/campaign_common.rb +352 -0
  213. data/lib/pinterest_sdk/models/campaign_response.rb +435 -0
  214. data/lib/pinterest_sdk/models/campaign_response_all_of.rb +245 -0
  215. data/lib/pinterest_sdk/models/campaign_response_all_of1.rb +248 -0
  216. data/lib/pinterest_sdk/models/campaign_summary_status.rb +41 -0
  217. data/lib/pinterest_sdk/models/catalogs_db_item.rb +236 -0
  218. data/lib/pinterest_sdk/models/catalogs_feed.rb +368 -0
  219. data/lib/pinterest_sdk/models/catalogs_feed_credentials.rb +240 -0
  220. data/lib/pinterest_sdk/models/catalogs_feed_ingestion_details.rb +237 -0
  221. data/lib/pinterest_sdk/models/catalogs_feed_ingestion_errors.rb +288 -0
  222. data/lib/pinterest_sdk/models/catalogs_feed_ingestion_info.rb +236 -0
  223. data/lib/pinterest_sdk/models/catalogs_feed_processing_result.rb +296 -0
  224. data/lib/pinterest_sdk/models/catalogs_feed_processing_result_fields.rb +261 -0
  225. data/lib/pinterest_sdk/models/catalogs_feed_processing_schedule.rb +291 -0
  226. data/lib/pinterest_sdk/models/catalogs_feed_processing_status.rb +43 -0
  227. data/lib/pinterest_sdk/models/catalogs_feed_product_counts.rb +220 -0
  228. data/lib/pinterest_sdk/models/catalogs_feed_validation_details.rb +237 -0
  229. data/lib/pinterest_sdk/models/catalogs_feed_validation_errors.rb +515 -0
  230. data/lib/pinterest_sdk/models/catalogs_feed_validation_warnings.rb +614 -0
  231. data/lib/pinterest_sdk/models/catalogs_feeds_create_request.rb +313 -0
  232. data/lib/pinterest_sdk/models/catalogs_feeds_update_request.rb +288 -0
  233. data/lib/pinterest_sdk/models/catalogs_format.rb +38 -0
  234. data/lib/pinterest_sdk/models/catalogs_items.rb +222 -0
  235. data/lib/pinterest_sdk/models/catalogs_items_batch.rb +262 -0
  236. data/lib/pinterest_sdk/models/catalogs_items_batch_request.rb +249 -0
  237. data/lib/pinterest_sdk/models/catalogs_product_group.rb +345 -0
  238. data/lib/pinterest_sdk/models/catalogs_product_group_create_request.rb +284 -0
  239. data/lib/pinterest_sdk/models/catalogs_product_group_currency_criteria.rb +237 -0
  240. data/lib/pinterest_sdk/models/catalogs_product_group_filter_keys.rb +617 -0
  241. data/lib/pinterest_sdk/models/catalogs_product_group_filters.rb +252 -0
  242. data/lib/pinterest_sdk/models/catalogs_product_group_filters_all_of.rb +220 -0
  243. data/lib/pinterest_sdk/models/catalogs_product_group_filters_any_of.rb +220 -0
  244. data/lib/pinterest_sdk/models/catalogs_product_group_multiple_string_criteria.rb +239 -0
  245. data/lib/pinterest_sdk/models/catalogs_product_group_multiple_string_list_criteria.rb +239 -0
  246. data/lib/pinterest_sdk/models/catalogs_product_group_pricing_criteria.rb +251 -0
  247. data/lib/pinterest_sdk/models/catalogs_product_group_status.rb +37 -0
  248. data/lib/pinterest_sdk/models/catalogs_product_group_type.rb +42 -0
  249. data/lib/pinterest_sdk/models/catalogs_product_group_update_request.rb +284 -0
  250. data/lib/pinterest_sdk/models/catalogs_status.rb +37 -0
  251. data/lib/pinterest_sdk/models/condition_filter.rb +223 -0
  252. data/lib/pinterest_sdk/models/conversion_attribution_window_days.rb +39 -0
  253. data/lib/pinterest_sdk/models/conversion_report_attribution_type.rb +37 -0
  254. data/lib/pinterest_sdk/models/conversion_report_time_type.rb +37 -0
  255. data/lib/pinterest_sdk/models/country.rb +282 -0
  256. data/lib/pinterest_sdk/models/currency.rb +60 -0
  257. data/lib/pinterest_sdk/models/currency_filter.rb +223 -0
  258. data/lib/pinterest_sdk/models/custom_label0_filter.rb +223 -0
  259. data/lib/pinterest_sdk/models/custom_label1_filter.rb +223 -0
  260. data/lib/pinterest_sdk/models/custom_label2_filter.rb +223 -0
  261. data/lib/pinterest_sdk/models/custom_label3_filter.rb +223 -0
  262. data/lib/pinterest_sdk/models/custom_label4_filter.rb +223 -0
  263. data/lib/pinterest_sdk/models/data_output_format.rb +37 -0
  264. data/lib/pinterest_sdk/models/entity_status.rb +38 -0
  265. data/lib/pinterest_sdk/models/error.rb +237 -0
  266. data/lib/pinterest_sdk/models/feed_fields.rb +332 -0
  267. data/lib/pinterest_sdk/models/gender_filter.rb +223 -0
  268. data/lib/pinterest_sdk/models/google_product_category0_filter.rb +223 -0
  269. data/lib/pinterest_sdk/models/google_product_category1_filter.rb +223 -0
  270. data/lib/pinterest_sdk/models/google_product_category2_filter.rb +223 -0
  271. data/lib/pinterest_sdk/models/google_product_category3_filter.rb +223 -0
  272. data/lib/pinterest_sdk/models/google_product_category4_filter.rb +223 -0
  273. data/lib/pinterest_sdk/models/google_product_category5_filter.rb +223 -0
  274. data/lib/pinterest_sdk/models/google_product_category6_filter.rb +223 -0
  275. data/lib/pinterest_sdk/models/granularity.rb +40 -0
  276. data/lib/pinterest_sdk/models/image_details.rb +281 -0
  277. data/lib/pinterest_sdk/models/item_attributes.rb +833 -0
  278. data/lib/pinterest_sdk/models/item_batch_record.rb +229 -0
  279. data/lib/pinterest_sdk/models/item_group_id_filter.rb +223 -0
  280. data/lib/pinterest_sdk/models/item_id_filter.rb +223 -0
  281. data/lib/pinterest_sdk/models/item_processing_record.rb +253 -0
  282. data/lib/pinterest_sdk/models/item_processing_status.rb +38 -0
  283. data/lib/pinterest_sdk/models/item_validation_event.rb +240 -0
  284. data/lib/pinterest_sdk/models/language.rb +96 -0
  285. data/lib/pinterest_sdk/models/max_price_filter.rb +223 -0
  286. data/lib/pinterest_sdk/models/media_upload.rb +255 -0
  287. data/lib/pinterest_sdk/models/media_upload_all_of.rb +247 -0
  288. data/lib/pinterest_sdk/models/media_upload_all_of_upload_parameters.rb +282 -0
  289. data/lib/pinterest_sdk/models/media_upload_details.rb +254 -0
  290. data/lib/pinterest_sdk/models/media_upload_request.rb +224 -0
  291. data/lib/pinterest_sdk/models/media_upload_status.rb +39 -0
  292. data/lib/pinterest_sdk/models/media_upload_type.rb +36 -0
  293. data/lib/pinterest_sdk/models/metrics_reporting_level.rb +47 -0
  294. data/lib/pinterest_sdk/models/min_price_filter.rb +223 -0
  295. data/lib/pinterest_sdk/models/non_nullable_catalogs_currency.rb +198 -0
  296. data/lib/pinterest_sdk/models/nullable_currency.rb +199 -0
  297. data/lib/pinterest_sdk/models/oauth_access_token_request_code.rb +272 -0
  298. data/lib/pinterest_sdk/models/oauth_access_token_request_code_all_of.rb +237 -0
  299. data/lib/pinterest_sdk/models/oauth_access_token_request_refresh.rb +267 -0
  300. data/lib/pinterest_sdk/models/oauth_access_token_request_refresh_all_of.rb +232 -0
  301. data/lib/pinterest_sdk/models/oauth_access_token_response.rb +316 -0
  302. data/lib/pinterest_sdk/models/oauth_access_token_response_code.rb +272 -0
  303. data/lib/pinterest_sdk/models/oauth_access_token_response_code_all_of.rb +237 -0
  304. data/lib/pinterest_sdk/models/oauth_access_token_response_refresh.rb +243 -0
  305. data/lib/pinterest_sdk/models/objective_type.rb +43 -0
  306. data/lib/pinterest_sdk/models/pacing_delivery_type.rb +37 -0
  307. data/lib/pinterest_sdk/models/paginated.rb +235 -0
  308. data/lib/pinterest_sdk/models/pin.rb +359 -0
  309. data/lib/pinterest_sdk/models/pin_media.rb +224 -0
  310. data/lib/pinterest_sdk/models/pin_media_source.rb +58 -0
  311. data/lib/pinterest_sdk/models/pin_media_source_image_base64.rb +319 -0
  312. data/lib/pinterest_sdk/models/pin_media_source_image_url.rb +272 -0
  313. data/lib/pinterest_sdk/models/pin_media_source_video_id.rb +307 -0
  314. data/lib/pinterest_sdk/models/pin_media_with_image.rb +233 -0
  315. data/lib/pinterest_sdk/models/pin_media_with_image_all_of.rb +220 -0
  316. data/lib/pinterest_sdk/models/pin_promotion_summary_status.rb +41 -0
  317. data/lib/pinterest_sdk/models/placement_group_type.rb +39 -0
  318. data/lib/pinterest_sdk/models/product_availability_type.rb +39 -0
  319. data/lib/pinterest_sdk/models/product_group_summary_status.rb +39 -0
  320. data/lib/pinterest_sdk/models/product_type0_filter.rb +223 -0
  321. data/lib/pinterest_sdk/models/product_type1_filter.rb +223 -0
  322. data/lib/pinterest_sdk/models/product_type2_filter.rb +223 -0
  323. data/lib/pinterest_sdk/models/product_type3_filter.rb +223 -0
  324. data/lib/pinterest_sdk/models/product_type4_filter.rb +223 -0
  325. data/lib/pinterest_sdk/models/reporting_column_async.rb +549 -0
  326. data/lib/pinterest_sdk/models/targeting_type_filter.rb +245 -0
  327. data/lib/pinterest_sdk/models/tracking_urls.rb +340 -0
  328. data/lib/pinterest_sdk/version.rb +15 -0
  329. data/lib/pinterest_sdk.rb +192 -0
  330. data/pinterest_sdk.gemspec +38 -0
  331. data/spec/api/ad_accounts_api_spec.rb +234 -0
  332. data/spec/api/boards_api_spec.rb +181 -0
  333. data/spec/api/catalogs_api_spec.rb +200 -0
  334. data/spec/api/media_api_spec.rb +72 -0
  335. data/spec/api/oauth_api_spec.rb +47 -0
  336. data/spec/api/pins_api_spec.rb +90 -0
  337. data/spec/api/user_account_api_spec.rb +66 -0
  338. data/spec/api_client_spec.rb +226 -0
  339. data/spec/configuration_spec.rb +42 -0
  340. data/spec/models/account_spec.rb +56 -0
  341. data/spec/models/action_type_spec.rb +28 -0
  342. data/spec/models/ad_account_owner_spec.rb +34 -0
  343. data/spec/models/ad_account_spec.rb +58 -0
  344. data/spec/models/ad_group_response_all_of1_spec.rb +70 -0
  345. data/spec/models/ad_group_response_all_of_spec.rb +132 -0
  346. data/spec/models/ad_group_response_spec.rb +174 -0
  347. data/spec/models/ad_group_summary_status_spec.rb +28 -0
  348. data/spec/models/ad_response_all_of1_spec.rb +102 -0
  349. data/spec/models/ad_response_all_of_spec.rb +128 -0
  350. data/spec/models/ad_response_spec.rb +202 -0
  351. data/spec/models/ads_analytics_create_async_request_all_of1_spec.rb +46 -0
  352. data/spec/models/ads_analytics_create_async_request_all_of_spec.rb +76 -0
  353. data/spec/models/ads_analytics_create_async_request_spec.rb +166 -0
  354. data/spec/models/ads_analytics_create_async_response_spec.rb +46 -0
  355. data/spec/models/ads_analytics_filter_column_spec.rb +28 -0
  356. data/spec/models/ads_analytics_filter_operator_spec.rb +28 -0
  357. data/spec/models/ads_analytics_get_async_response_spec.rb +46 -0
  358. data/spec/models/ads_analytics_metrics_filter_spec.rb +46 -0
  359. data/spec/models/ads_analytics_targeting_type_spec.rb +28 -0
  360. data/spec/models/analytics_metrics_response_daily_metrics_spec.rb +50 -0
  361. data/spec/models/analytics_metrics_response_spec.rb +40 -0
  362. data/spec/models/availability_filter_spec.rb +34 -0
  363. data/spec/models/batch_operation_spec.rb +28 -0
  364. data/spec/models/batch_operation_status_spec.rb +28 -0
  365. data/spec/models/board_owner_spec.rb +34 -0
  366. data/spec/models/board_section_spec.rb +40 -0
  367. data/spec/models/board_spec.rb +62 -0
  368. data/spec/models/board_update_spec.rb +50 -0
  369. data/spec/models/brand_filter_spec.rb +34 -0
  370. data/spec/models/campaign_common_spec.rb +82 -0
  371. data/spec/models/campaign_response_all_of1_spec.rb +52 -0
  372. data/spec/models/campaign_response_all_of_spec.rb +34 -0
  373. data/spec/models/campaign_response_spec.rb +112 -0
  374. data/spec/models/campaign_summary_status_spec.rb +28 -0
  375. data/spec/models/catalogs_db_item_spec.rb +46 -0
  376. data/spec/models/catalogs_feed_credentials_spec.rb +40 -0
  377. data/spec/models/catalogs_feed_ingestion_details_spec.rb +40 -0
  378. data/spec/models/catalogs_feed_ingestion_errors_spec.rb +62 -0
  379. data/spec/models/catalogs_feed_ingestion_info_spec.rb +46 -0
  380. data/spec/models/catalogs_feed_processing_result_fields_spec.rb +52 -0
  381. data/spec/models/catalogs_feed_processing_result_spec.rb +70 -0
  382. data/spec/models/catalogs_feed_processing_schedule_spec.rb +44 -0
  383. data/spec/models/catalogs_feed_processing_status_spec.rb +28 -0
  384. data/spec/models/catalogs_feed_product_counts_spec.rb +34 -0
  385. data/spec/models/catalogs_feed_spec.rb +106 -0
  386. data/spec/models/catalogs_feed_validation_details_spec.rb +40 -0
  387. data/spec/models/catalogs_feed_validation_errors_spec.rb +232 -0
  388. data/spec/models/catalogs_feed_validation_warnings_spec.rb +298 -0
  389. data/spec/models/catalogs_feeds_create_request_spec.rb +82 -0
  390. data/spec/models/catalogs_feeds_update_request_spec.rb +76 -0
  391. data/spec/models/catalogs_format_spec.rb +28 -0
  392. data/spec/models/catalogs_items_batch_request_spec.rb +52 -0
  393. data/spec/models/catalogs_items_batch_spec.rb +58 -0
  394. data/spec/models/catalogs_items_spec.rb +34 -0
  395. data/spec/models/catalogs_product_group_create_request_spec.rb +52 -0
  396. data/spec/models/catalogs_product_group_currency_criteria_spec.rb +40 -0
  397. data/spec/models/catalogs_product_group_filter_keys_spec.rb +184 -0
  398. data/spec/models/catalogs_product_group_filters_all_of_spec.rb +34 -0
  399. data/spec/models/catalogs_product_group_filters_any_of_spec.rb +34 -0
  400. data/spec/models/catalogs_product_group_filters_spec.rb +40 -0
  401. data/spec/models/catalogs_product_group_multiple_string_criteria_spec.rb +40 -0
  402. data/spec/models/catalogs_product_group_multiple_string_list_criteria_spec.rb +40 -0
  403. data/spec/models/catalogs_product_group_pricing_criteria_spec.rb +46 -0
  404. data/spec/models/catalogs_product_group_spec.rb +82 -0
  405. data/spec/models/catalogs_product_group_status_spec.rb +28 -0
  406. data/spec/models/catalogs_product_group_type_spec.rb +28 -0
  407. data/spec/models/catalogs_product_group_update_request_spec.rb +52 -0
  408. data/spec/models/catalogs_status_spec.rb +28 -0
  409. data/spec/models/condition_filter_spec.rb +34 -0
  410. data/spec/models/conversion_attribution_window_days_spec.rb +28 -0
  411. data/spec/models/conversion_report_attribution_type_spec.rb +28 -0
  412. data/spec/models/conversion_report_time_type_spec.rb +28 -0
  413. data/spec/models/country_spec.rb +28 -0
  414. data/spec/models/currency_filter_spec.rb +34 -0
  415. data/spec/models/currency_spec.rb +28 -0
  416. data/spec/models/custom_label0_filter_spec.rb +34 -0
  417. data/spec/models/custom_label1_filter_spec.rb +34 -0
  418. data/spec/models/custom_label2_filter_spec.rb +34 -0
  419. data/spec/models/custom_label3_filter_spec.rb +34 -0
  420. data/spec/models/custom_label4_filter_spec.rb +34 -0
  421. data/spec/models/data_output_format_spec.rb +28 -0
  422. data/spec/models/entity_status_spec.rb +28 -0
  423. data/spec/models/error_spec.rb +40 -0
  424. data/spec/models/feed_fields_spec.rb +88 -0
  425. data/spec/models/gender_filter_spec.rb +34 -0
  426. data/spec/models/google_product_category0_filter_spec.rb +34 -0
  427. data/spec/models/google_product_category1_filter_spec.rb +34 -0
  428. data/spec/models/google_product_category2_filter_spec.rb +34 -0
  429. data/spec/models/google_product_category3_filter_spec.rb +34 -0
  430. data/spec/models/google_product_category4_filter_spec.rb +34 -0
  431. data/spec/models/google_product_category5_filter_spec.rb +34 -0
  432. data/spec/models/google_product_category6_filter_spec.rb +34 -0
  433. data/spec/models/granularity_spec.rb +28 -0
  434. data/spec/models/image_details_spec.rb +46 -0
  435. data/spec/models/item_attributes_spec.rb +292 -0
  436. data/spec/models/item_batch_record_spec.rb +40 -0
  437. data/spec/models/item_group_id_filter_spec.rb +34 -0
  438. data/spec/models/item_id_filter_spec.rb +34 -0
  439. data/spec/models/item_processing_record_spec.rb +52 -0
  440. data/spec/models/item_processing_status_spec.rb +28 -0
  441. data/spec/models/item_validation_event_spec.rb +46 -0
  442. data/spec/models/language_spec.rb +28 -0
  443. data/spec/models/max_price_filter_spec.rb +34 -0
  444. data/spec/models/media_upload_all_of_spec.rb +52 -0
  445. data/spec/models/media_upload_all_of_upload_parameters_spec.rb +76 -0
  446. data/spec/models/media_upload_details_spec.rb +46 -0
  447. data/spec/models/media_upload_request_spec.rb +34 -0
  448. data/spec/models/media_upload_spec.rb +52 -0
  449. data/spec/models/media_upload_status_spec.rb +28 -0
  450. data/spec/models/media_upload_type_spec.rb +28 -0
  451. data/spec/models/metrics_reporting_level_spec.rb +28 -0
  452. data/spec/models/min_price_filter_spec.rb +34 -0
  453. data/spec/models/non_nullable_catalogs_currency_spec.rb +28 -0
  454. data/spec/models/nullable_currency_spec.rb +28 -0
  455. data/spec/models/oauth_access_token_request_code_all_of_spec.rb +40 -0
  456. data/spec/models/oauth_access_token_request_code_spec.rb +40 -0
  457. data/spec/models/oauth_access_token_request_refresh_all_of_spec.rb +40 -0
  458. data/spec/models/oauth_access_token_request_refresh_spec.rb +40 -0
  459. data/spec/models/oauth_access_token_request_spec.rb +38 -0
  460. data/spec/models/oauth_access_token_response_code_all_of_spec.rb +40 -0
  461. data/spec/models/oauth_access_token_response_code_spec.rb +40 -0
  462. data/spec/models/oauth_access_token_response_refresh_spec.rb +28 -0
  463. data/spec/models/oauth_access_token_response_spec.rb +62 -0
  464. data/spec/models/objective_type_spec.rb +28 -0
  465. data/spec/models/pacing_delivery_type_spec.rb +28 -0
  466. data/spec/models/paginated_spec.rb +40 -0
  467. data/spec/models/pin_media_source_image_base64_spec.rb +54 -0
  468. data/spec/models/pin_media_source_image_url_spec.rb +44 -0
  469. data/spec/models/pin_media_source_spec.rb +43 -0
  470. data/spec/models/pin_media_source_video_id_spec.rb +50 -0
  471. data/spec/models/pin_media_spec.rb +34 -0
  472. data/spec/models/pin_media_with_image_all_of_spec.rb +34 -0
  473. data/spec/models/pin_media_with_image_spec.rb +34 -0
  474. data/spec/models/pin_promotion_summary_status_spec.rb +28 -0
  475. data/spec/models/pin_spec.rb +94 -0
  476. data/spec/models/placement_group_type_spec.rb +28 -0
  477. data/spec/models/product_availability_type_spec.rb +28 -0
  478. data/spec/models/product_group_summary_status_spec.rb +28 -0
  479. data/spec/models/product_type0_filter_spec.rb +34 -0
  480. data/spec/models/product_type1_filter_spec.rb +34 -0
  481. data/spec/models/product_type2_filter_spec.rb +34 -0
  482. data/spec/models/product_type3_filter_spec.rb +34 -0
  483. data/spec/models/product_type4_filter_spec.rb +34 -0
  484. data/spec/models/reporting_column_async_spec.rb +28 -0
  485. data/spec/models/targeting_type_filter_spec.rb +34 -0
  486. data/spec/models/tracking_urls_spec.rb +58 -0
  487. data/spec/spec_helper.rb +111 -0
  488. metadata +726 -0
@@ -0,0 +1,555 @@
1
+ =begin
2
+ #Pinterest REST API
3
+
4
+ #Pinterest's REST API
5
+
6
+ The version of the OpenAPI document: 5.3.0
7
+ Contact: pinterest-api@pinterest.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 5.4.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module PinterestSdkClient
17
+ class AdGroupResponse
18
+ # Ad group name.
19
+ attr_accessor :name
20
+
21
+ # Ad group/entity status.
22
+ attr_accessor :status
23
+
24
+ # Budget in micro currency. This field is **REQUIRED** for non-CBO (campaign budget optimization) campaigns. A CBO campaign automatically generates ad group budgets from its campaign budget to maximize campaign outcome. A CBO campaign is limited to 70 or less ad groups.
25
+ attr_accessor :budget_in_micro_currency
26
+
27
+ # Bid price in micro currency. This field is **REQUIRED** for the following campaign objective_type/billable_event combinations: AWARENESS/IMPRESSION, CONSIDERATION/CLICKTHROUGH, CATALOG_SALES/CLICKTHROUGH, VIDEO_VIEW/VIDEO_V_50_MRC.
28
+ attr_accessor :bid_in_micro_currency
29
+
30
+ # Budget type. If DAILY, an ad group's daily spend will not exceed the budget parameter value. If LIFETIME, the end_time parameter is **REQUIRED**, and the ad group spend is spread evenly between the ad group `start_time` and `end_time` range. A CBO campaign automatically generates ad group budgets from its campaign budget to maximize campaign outcome.
31
+ attr_accessor :budget_type
32
+
33
+ # Ad group start time. Unix timestamp in seconds. Defaults to current time.
34
+ attr_accessor :start_time
35
+
36
+ # Ad group end time. Unix timestamp in seconds.
37
+ attr_accessor :end_time
38
+
39
+ # Ad group targeting specification defining the ad group target audience. For example, '{\"APPTYPE\":[\"iphone\"], \"GENDER\":[\"male\"], \"LOCALE\":[\"en-US\"], \"LOCATION\":[\"501\"], \"AGE_BUCKET\":[\"25-34\"]}'
40
+ attr_accessor :targeting_spec
41
+
42
+ # Set a limit to the number of times a promoted pin from this campaign can be impressed by a pinner within the past rolling 30 days. Only available for CPM (cost per mille (1000 impressions)) ad groups. A CPM ad group has an IMPRESSION <a href=\\\"/docs/redoc/#section/Billable-event\\\">billable_event</a> value. This field **REQUIRES** the `end_time` field.
43
+ attr_accessor :lifetime_frequency_cap
44
+
45
+ # Third-party tracking URLs.<br> JSON object with the format: {\"<a href=\"https://developers.pinterest.com/docs/redoc/#section/Tracking-URL-event\">Tracking event enum</a>\":[URL string array],...}<br> For example: {\"impression\": [\"URL1\", \"URL2\"], \"click\": [\"URL1\", \"URL2\", \"URL3\"]}.<br>Up to three tracking URLs are supported for each event type. Tracking URLs set at the ad group or ad level can override those set at the campaign level. May be null. Pass in an empty object - {} - to remove tracking URLs.<br><br> For more information, see <a href=\"https://help.pinterest.com/en/business/article/third-party-and-dynamic-tracking\" target=\"_blank\">Third-party and dynamic tracking</a>.
46
+ attr_accessor :tracking_urls
47
+
48
+ # Enable auto-targeting for ad group. Also known as <a href=\"https://help.pinterest.com/en/business/article/expanded-targeting\" target=\"_blank\">\"expanded targeting\"</a>.
49
+ attr_accessor :auto_targeting_enabled
50
+
51
+ # <a href=\\\"/docs/redoc/#section/Placement-group\\\">Placement group</a>.
52
+ attr_accessor :placement_group
53
+
54
+ # Pacing delivery type. With ACCELERATED, an ad group budget is spent as fast as possible. With STANDARD, an ad group budget is spent smoothly over a day.
55
+ attr_accessor :pacing_delivery_type
56
+
57
+ # oCPM learn mode
58
+ attr_accessor :conversion_learning_mode_type
59
+
60
+ # Ad group summary status.
61
+ attr_accessor :summary_status
62
+
63
+ # Feed Profile ID associated to the adgroup.
64
+ attr_accessor :feed_profile_id
65
+
66
+ # Campaign ID of the ad group.
67
+ attr_accessor :campaign_id
68
+
69
+ attr_accessor :billable_event
70
+
71
+ # Ad group ID.
72
+ attr_accessor :id
73
+
74
+ # Always \"adgroup\".
75
+ attr_accessor :type
76
+
77
+ # Advertiser ID.
78
+ attr_accessor :ad_account_id
79
+
80
+ # Ad group creation time. Unix timestamp in seconds.
81
+ attr_accessor :created_time
82
+
83
+ # Ad group last update time. Unix timestamp in seconds.
84
+ attr_accessor :updated_time
85
+
86
+ class EnumAttributeValidator
87
+ attr_reader :datatype
88
+ attr_reader :allowable_values
89
+
90
+ def initialize(datatype, allowable_values)
91
+ @allowable_values = allowable_values.map do |value|
92
+ case datatype.to_s
93
+ when /Integer/i
94
+ value.to_i
95
+ when /Float/i
96
+ value.to_f
97
+ else
98
+ value
99
+ end
100
+ end
101
+ end
102
+
103
+ def valid?(value)
104
+ !value || allowable_values.include?(value)
105
+ end
106
+ end
107
+
108
+ # Attribute mapping from ruby-style variable name to JSON key.
109
+ def self.attribute_map
110
+ {
111
+ :'name' => :'name',
112
+ :'status' => :'status',
113
+ :'budget_in_micro_currency' => :'budget_in_micro_currency',
114
+ :'bid_in_micro_currency' => :'bid_in_micro_currency',
115
+ :'budget_type' => :'budget_type',
116
+ :'start_time' => :'start_time',
117
+ :'end_time' => :'end_time',
118
+ :'targeting_spec' => :'targeting_spec',
119
+ :'lifetime_frequency_cap' => :'lifetime_frequency_cap',
120
+ :'tracking_urls' => :'tracking_urls',
121
+ :'auto_targeting_enabled' => :'auto_targeting_enabled',
122
+ :'placement_group' => :'placement_group',
123
+ :'pacing_delivery_type' => :'pacing_delivery_type',
124
+ :'conversion_learning_mode_type' => :'conversion_learning_mode_type',
125
+ :'summary_status' => :'summary_status',
126
+ :'feed_profile_id' => :'feed_profile_id',
127
+ :'campaign_id' => :'campaign_id',
128
+ :'billable_event' => :'billable_event',
129
+ :'id' => :'id',
130
+ :'type' => :'type',
131
+ :'ad_account_id' => :'ad_account_id',
132
+ :'created_time' => :'created_time',
133
+ :'updated_time' => :'updated_time'
134
+ }
135
+ end
136
+
137
+ # Returns all the JSON keys this model knows about
138
+ def self.acceptable_attributes
139
+ attribute_map.values
140
+ end
141
+
142
+ # Attribute type mapping.
143
+ def self.openapi_types
144
+ {
145
+ :'name' => :'String',
146
+ :'status' => :'EntityStatus',
147
+ :'budget_in_micro_currency' => :'Integer',
148
+ :'bid_in_micro_currency' => :'Integer',
149
+ :'budget_type' => :'String',
150
+ :'start_time' => :'Integer',
151
+ :'end_time' => :'Integer',
152
+ :'targeting_spec' => :'Hash<String, Array<String>>',
153
+ :'lifetime_frequency_cap' => :'Integer',
154
+ :'tracking_urls' => :'TrackingUrls',
155
+ :'auto_targeting_enabled' => :'Boolean',
156
+ :'placement_group' => :'PlacementGroupType',
157
+ :'pacing_delivery_type' => :'PacingDeliveryType',
158
+ :'conversion_learning_mode_type' => :'String',
159
+ :'summary_status' => :'AdGroupSummaryStatus',
160
+ :'feed_profile_id' => :'String',
161
+ :'campaign_id' => :'String',
162
+ :'billable_event' => :'ActionType',
163
+ :'id' => :'String',
164
+ :'type' => :'String',
165
+ :'ad_account_id' => :'String',
166
+ :'created_time' => :'Integer',
167
+ :'updated_time' => :'Integer'
168
+ }
169
+ end
170
+
171
+ # List of attributes with nullable: true
172
+ def self.openapi_nullable
173
+ Set.new([
174
+ :'budget_in_micro_currency',
175
+ :'bid_in_micro_currency',
176
+ :'start_time',
177
+ :'end_time',
178
+ :'tracking_urls',
179
+ :'auto_targeting_enabled',
180
+ :'conversion_learning_mode_type',
181
+ ])
182
+ end
183
+
184
+ # List of class defined in allOf (OpenAPI v3)
185
+ def self.openapi_all_of
186
+ [
187
+ :'AdGroupResponseAllOf',
188
+ :'AdGroupResponseAllOf1'
189
+ ]
190
+ end
191
+
192
+ # Initializes the object
193
+ # @param [Hash] attributes Model attributes in the form of hash
194
+ def initialize(attributes = {})
195
+ if (!attributes.is_a?(Hash))
196
+ fail ArgumentError, "The input argument (attributes) must be a hash in `PinterestSdkClient::AdGroupResponse` initialize method"
197
+ end
198
+
199
+ # check to see if the attribute exists and convert string to symbol for hash key
200
+ attributes = attributes.each_with_object({}) { |(k, v), h|
201
+ if (!self.class.attribute_map.key?(k.to_sym))
202
+ fail ArgumentError, "`#{k}` is not a valid attribute in `PinterestSdkClient::AdGroupResponse`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
203
+ end
204
+ h[k.to_sym] = v
205
+ }
206
+
207
+ if attributes.key?(:'name')
208
+ self.name = attributes[:'name']
209
+ end
210
+
211
+ if attributes.key?(:'status')
212
+ self.status = attributes[:'status']
213
+ end
214
+
215
+ if attributes.key?(:'budget_in_micro_currency')
216
+ self.budget_in_micro_currency = attributes[:'budget_in_micro_currency']
217
+ end
218
+
219
+ if attributes.key?(:'bid_in_micro_currency')
220
+ self.bid_in_micro_currency = attributes[:'bid_in_micro_currency']
221
+ end
222
+
223
+ if attributes.key?(:'budget_type')
224
+ self.budget_type = attributes[:'budget_type']
225
+ end
226
+
227
+ if attributes.key?(:'start_time')
228
+ self.start_time = attributes[:'start_time']
229
+ end
230
+
231
+ if attributes.key?(:'end_time')
232
+ self.end_time = attributes[:'end_time']
233
+ end
234
+
235
+ if attributes.key?(:'targeting_spec')
236
+ if (value = attributes[:'targeting_spec']).is_a?(Hash)
237
+ self.targeting_spec = value
238
+ end
239
+ end
240
+
241
+ if attributes.key?(:'lifetime_frequency_cap')
242
+ self.lifetime_frequency_cap = attributes[:'lifetime_frequency_cap']
243
+ end
244
+
245
+ if attributes.key?(:'tracking_urls')
246
+ if (value = attributes[:'tracking_urls']).is_a?(Hash)
247
+ self.tracking_urls = value
248
+ end
249
+ self.tracking_urls = attributes[:'tracking_urls']
250
+ end
251
+
252
+ if attributes.key?(:'auto_targeting_enabled')
253
+ self.auto_targeting_enabled = attributes[:'auto_targeting_enabled']
254
+ end
255
+
256
+ if attributes.key?(:'placement_group')
257
+ self.placement_group = attributes[:'placement_group']
258
+ end
259
+
260
+ if attributes.key?(:'pacing_delivery_type')
261
+ self.pacing_delivery_type = attributes[:'pacing_delivery_type']
262
+ end
263
+
264
+ if attributes.key?(:'conversion_learning_mode_type')
265
+ self.conversion_learning_mode_type = attributes[:'conversion_learning_mode_type']
266
+ end
267
+
268
+ if attributes.key?(:'summary_status')
269
+ self.summary_status = attributes[:'summary_status']
270
+ end
271
+
272
+ if attributes.key?(:'feed_profile_id')
273
+ self.feed_profile_id = attributes[:'feed_profile_id']
274
+ end
275
+
276
+ if attributes.key?(:'campaign_id')
277
+ self.campaign_id = attributes[:'campaign_id']
278
+ end
279
+
280
+ if attributes.key?(:'billable_event')
281
+ self.billable_event = attributes[:'billable_event']
282
+ end
283
+
284
+ if attributes.key?(:'id')
285
+ self.id = attributes[:'id']
286
+ end
287
+
288
+ if attributes.key?(:'type')
289
+ self.type = attributes[:'type']
290
+ end
291
+
292
+ if attributes.key?(:'ad_account_id')
293
+ self.ad_account_id = attributes[:'ad_account_id']
294
+ end
295
+
296
+ if attributes.key?(:'created_time')
297
+ self.created_time = attributes[:'created_time']
298
+ end
299
+
300
+ if attributes.key?(:'updated_time')
301
+ self.updated_time = attributes[:'updated_time']
302
+ end
303
+ end
304
+
305
+ # Show invalid properties with the reasons. Usually used together with valid?
306
+ # @return Array for valid properties with the reasons
307
+ def list_invalid_properties
308
+ invalid_properties = Array.new
309
+ pattern = Regexp.new(/^\d+$/)
310
+ if !@campaign_id.nil? && @campaign_id !~ pattern
311
+ invalid_properties.push("invalid value for \"campaign_id\", must conform to the pattern #{pattern}.")
312
+ end
313
+
314
+ pattern = Regexp.new(/^\d+$/)
315
+ if !@id.nil? && @id !~ pattern
316
+ invalid_properties.push("invalid value for \"id\", must conform to the pattern #{pattern}.")
317
+ end
318
+
319
+ pattern = Regexp.new(/^\d+$/)
320
+ if !@ad_account_id.nil? && @ad_account_id !~ pattern
321
+ invalid_properties.push("invalid value for \"ad_account_id\", must conform to the pattern #{pattern}.")
322
+ end
323
+
324
+ invalid_properties
325
+ end
326
+
327
+ # Check to see if the all the properties in the model are valid
328
+ # @return true if the model is valid
329
+ def valid?
330
+ budget_type_validator = EnumAttributeValidator.new('String', ["DAILY", "LIFETIME", "CBO_ADGROUP"])
331
+ return false unless budget_type_validator.valid?(@budget_type)
332
+ conversion_learning_mode_type_validator = EnumAttributeValidator.new('String', ["NOT_ACTIVE", "ACTIVE", "null"])
333
+ return false unless conversion_learning_mode_type_validator.valid?(@conversion_learning_mode_type)
334
+ return false if !@campaign_id.nil? && @campaign_id !~ Regexp.new(/^\d+$/)
335
+ return false if !@id.nil? && @id !~ Regexp.new(/^\d+$/)
336
+ return false if !@ad_account_id.nil? && @ad_account_id !~ Regexp.new(/^\d+$/)
337
+ true
338
+ end
339
+
340
+ # Custom attribute writer method checking allowed values (enum).
341
+ # @param [Object] budget_type Object to be assigned
342
+ def budget_type=(budget_type)
343
+ validator = EnumAttributeValidator.new('String', ["DAILY", "LIFETIME", "CBO_ADGROUP"])
344
+ unless validator.valid?(budget_type)
345
+ fail ArgumentError, "invalid value for \"budget_type\", must be one of #{validator.allowable_values}."
346
+ end
347
+ @budget_type = budget_type
348
+ end
349
+
350
+ # Custom attribute writer method checking allowed values (enum).
351
+ # @param [Object] conversion_learning_mode_type Object to be assigned
352
+ def conversion_learning_mode_type=(conversion_learning_mode_type)
353
+ validator = EnumAttributeValidator.new('String', ["NOT_ACTIVE", "ACTIVE", "null"])
354
+ unless validator.valid?(conversion_learning_mode_type)
355
+ fail ArgumentError, "invalid value for \"conversion_learning_mode_type\", must be one of #{validator.allowable_values}."
356
+ end
357
+ @conversion_learning_mode_type = conversion_learning_mode_type
358
+ end
359
+
360
+ # Custom attribute writer method with validation
361
+ # @param [Object] campaign_id Value to be assigned
362
+ def campaign_id=(campaign_id)
363
+ pattern = Regexp.new(/^\d+$/)
364
+ if !campaign_id.nil? && campaign_id !~ pattern
365
+ fail ArgumentError, "invalid value for \"campaign_id\", must conform to the pattern #{pattern}."
366
+ end
367
+
368
+ @campaign_id = campaign_id
369
+ end
370
+
371
+ # Custom attribute writer method with validation
372
+ # @param [Object] id Value to be assigned
373
+ def id=(id)
374
+ pattern = Regexp.new(/^\d+$/)
375
+ if !id.nil? && id !~ pattern
376
+ fail ArgumentError, "invalid value for \"id\", must conform to the pattern #{pattern}."
377
+ end
378
+
379
+ @id = id
380
+ end
381
+
382
+ # Custom attribute writer method with validation
383
+ # @param [Object] ad_account_id Value to be assigned
384
+ def ad_account_id=(ad_account_id)
385
+ pattern = Regexp.new(/^\d+$/)
386
+ if !ad_account_id.nil? && ad_account_id !~ pattern
387
+ fail ArgumentError, "invalid value for \"ad_account_id\", must conform to the pattern #{pattern}."
388
+ end
389
+
390
+ @ad_account_id = ad_account_id
391
+ end
392
+
393
+ # Checks equality by comparing each attribute.
394
+ # @param [Object] Object to be compared
395
+ def ==(o)
396
+ return true if self.equal?(o)
397
+ self.class == o.class &&
398
+ name == o.name &&
399
+ status == o.status &&
400
+ budget_in_micro_currency == o.budget_in_micro_currency &&
401
+ bid_in_micro_currency == o.bid_in_micro_currency &&
402
+ budget_type == o.budget_type &&
403
+ start_time == o.start_time &&
404
+ end_time == o.end_time &&
405
+ targeting_spec == o.targeting_spec &&
406
+ lifetime_frequency_cap == o.lifetime_frequency_cap &&
407
+ tracking_urls == o.tracking_urls &&
408
+ auto_targeting_enabled == o.auto_targeting_enabled &&
409
+ placement_group == o.placement_group &&
410
+ pacing_delivery_type == o.pacing_delivery_type &&
411
+ conversion_learning_mode_type == o.conversion_learning_mode_type &&
412
+ summary_status == o.summary_status &&
413
+ feed_profile_id == o.feed_profile_id &&
414
+ campaign_id == o.campaign_id &&
415
+ billable_event == o.billable_event &&
416
+ id == o.id &&
417
+ type == o.type &&
418
+ ad_account_id == o.ad_account_id &&
419
+ created_time == o.created_time &&
420
+ updated_time == o.updated_time
421
+ end
422
+
423
+ # @see the `==` method
424
+ # @param [Object] Object to be compared
425
+ def eql?(o)
426
+ self == o
427
+ end
428
+
429
+ # Calculates hash code according to all attributes.
430
+ # @return [Integer] Hash code
431
+ def hash
432
+ [name, status, budget_in_micro_currency, bid_in_micro_currency, budget_type, start_time, end_time, targeting_spec, lifetime_frequency_cap, tracking_urls, auto_targeting_enabled, placement_group, pacing_delivery_type, conversion_learning_mode_type, summary_status, feed_profile_id, campaign_id, billable_event, id, type, ad_account_id, created_time, updated_time].hash
433
+ end
434
+
435
+ # Builds the object from hash
436
+ # @param [Hash] attributes Model attributes in the form of hash
437
+ # @return [Object] Returns the model itself
438
+ def self.build_from_hash(attributes)
439
+ new.build_from_hash(attributes)
440
+ end
441
+
442
+ # Builds the object from hash
443
+ # @param [Hash] attributes Model attributes in the form of hash
444
+ # @return [Object] Returns the model itself
445
+ def build_from_hash(attributes)
446
+ return nil unless attributes.is_a?(Hash)
447
+ self.class.openapi_types.each_pair do |key, type|
448
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
449
+ self.send("#{key}=", nil)
450
+ elsif type =~ /\AArray<(.*)>/i
451
+ # check to ensure the input is an array given that the attribute
452
+ # is documented as an array but the input is not
453
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
454
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
455
+ end
456
+ elsif !attributes[self.class.attribute_map[key]].nil?
457
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
458
+ end
459
+ end
460
+
461
+ self
462
+ end
463
+
464
+ # Deserializes the data based on type
465
+ # @param string type Data type
466
+ # @param string value Value to be deserialized
467
+ # @return [Object] Deserialized data
468
+ def _deserialize(type, value)
469
+ case type.to_sym
470
+ when :Time
471
+ Time.parse(value)
472
+ when :Date
473
+ Date.parse(value)
474
+ when :String
475
+ value.to_s
476
+ when :Integer
477
+ value.to_i
478
+ when :Float
479
+ value.to_f
480
+ when :Boolean
481
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
482
+ true
483
+ else
484
+ false
485
+ end
486
+ when :Object
487
+ # generic object (usually a Hash), return directly
488
+ value
489
+ when /\AArray<(?<inner_type>.+)>\z/
490
+ inner_type = Regexp.last_match[:inner_type]
491
+ value.map { |v| _deserialize(inner_type, v) }
492
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
493
+ k_type = Regexp.last_match[:k_type]
494
+ v_type = Regexp.last_match[:v_type]
495
+ {}.tap do |hash|
496
+ value.each do |k, v|
497
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
498
+ end
499
+ end
500
+ else # model
501
+ # models (e.g. Pet) or oneOf
502
+ klass = PinterestSdkClient.const_get(type)
503
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
504
+ end
505
+ end
506
+
507
+ # Returns the string representation of the object
508
+ # @return [String] String presentation of the object
509
+ def to_s
510
+ to_hash.to_s
511
+ end
512
+
513
+ # to_body is an alias to to_hash (backward compatibility)
514
+ # @return [Hash] Returns the object in the form of hash
515
+ def to_body
516
+ to_hash
517
+ end
518
+
519
+ # Returns the object in the form of hash
520
+ # @return [Hash] Returns the object in the form of hash
521
+ def to_hash
522
+ hash = {}
523
+ self.class.attribute_map.each_pair do |attr, param|
524
+ value = self.send(attr)
525
+ if value.nil?
526
+ is_nullable = self.class.openapi_nullable.include?(attr)
527
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
528
+ end
529
+
530
+ hash[param] = _to_hash(value)
531
+ end
532
+ hash
533
+ end
534
+
535
+ # Outputs non-array value in the form of hash
536
+ # For object, use to_hash. Otherwise, just return the value
537
+ # @param [Object] value Any valid value
538
+ # @return [Hash] Returns the value in the form of hash
539
+ def _to_hash(value)
540
+ if value.is_a?(Array)
541
+ value.compact.map { |v| _to_hash(v) }
542
+ elsif value.is_a?(Hash)
543
+ {}.tap do |hash|
544
+ value.each { |k, v| hash[k] = _to_hash(v) }
545
+ end
546
+ elsif value.respond_to? :to_hash
547
+ value.to_hash
548
+ else
549
+ value
550
+ end
551
+ end
552
+
553
+ end
554
+
555
+ end