mencoro 1.0.1 → 2.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 (260) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +41 -5
  3. data/docs/AccountApi.md +1 -1
  4. data/docs/AnalyticsApi.md +96 -86
  5. data/docs/AsyncJobResource.md +3 -1
  6. data/docs/AsyncJobResourceError.md +20 -0
  7. data/docs/BillingApi.md +1 -1
  8. data/docs/CitedSourceRow.md +32 -0
  9. data/docs/CitedSourcesResponse.md +20 -0
  10. data/docs/ClusterBreakdownRow.md +82 -0
  11. data/docs/ClustersApi.md +74 -0
  12. data/docs/CompetitorCoOccurrenceResponse.md +18 -0
  13. data/docs/CompetitorCoOccurrenceRow.md +36 -0
  14. data/docs/CompetitorShareOfVoice.md +20 -0
  15. data/docs/CreateInvitation201Response.md +4 -0
  16. data/docs/CreateInvitationRequest.md +3 -1
  17. data/docs/CreateInvitationRequestProjectAccess.md +20 -0
  18. data/docs/DiscoveryApi.md +1 -1
  19. data/docs/GetMeStats200ResponseProjects.md +1 -1
  20. data/docs/GetOrganizationOverview200ResponseAggregate.md +1 -1
  21. data/docs/GetOrganizationOverview200ResponseProjectsInner.md +8 -2
  22. data/docs/GetOrganizationStats200ResponseInvitations.md +1 -1
  23. data/docs/GetOrganizationStats200ResponseMembers.md +1 -1
  24. data/docs/GetOrganizationStats200ResponseProjects.md +1 -1
  25. data/docs/InvitationResource.md +5 -1
  26. data/docs/JobsApi.md +1 -1
  27. data/docs/KeywordListingResource.md +12 -10
  28. data/docs/KeywordListingResourceCarriedPositions.md +24 -0
  29. data/docs/KeywordListingResourceCarriedPositionsSerp.md +20 -0
  30. data/docs/ListProjects200Response.md +1 -1
  31. data/docs/MemberResource.md +5 -1
  32. data/docs/MembersApi.md +78 -0
  33. data/docs/MentionMatchResource.md +44 -0
  34. data/docs/MentionSampleResponse.md +46 -0
  35. data/docs/MentionTypeCounts.md +26 -0
  36. data/docs/OrganizationsApi.md +3 -3
  37. data/docs/PerCompetitorSentiment.md +30 -0
  38. data/docs/PerEngineSentiment.md +28 -0
  39. data/docs/PerEntityMetrics.md +32 -0
  40. data/docs/PositionDistributionBucket.md +20 -0
  41. data/docs/ProjectMentionMixResponse.md +22 -0
  42. data/docs/ProjectMentionSamplesResponse.md +20 -0
  43. data/docs/ProjectRankTrackingClusterBreakdown.md +20 -0
  44. data/docs/ProjectRankTrackingStats.md +96 -0
  45. data/docs/ProjectRankTrackingTimeSeries.md +20 -0
  46. data/docs/ProjectSentimentBreakdown.md +20 -0
  47. data/docs/ProjectedMonthlyChecksResource.md +2 -2
  48. data/docs/ProjectsApi.md +76 -2
  49. data/docs/SearchTrackedQueryMentionMatches200Response.md +20 -0
  50. data/docs/SearchTrackedQuerySerpMatches200Response.md +20 -0
  51. data/docs/SerpMatchResource.md +30 -0
  52. data/docs/SetMemberProjectAccessRequest.md +20 -0
  53. data/docs/SubscriptionResource.md +1 -1
  54. data/docs/TimeSeriesPoint.md +22 -0
  55. data/docs/TrackedQueriesApi.md +175 -3
  56. data/docs/TrackedQueryCountResource.md +1 -1
  57. data/docs/TrackedQueryMoverRow.md +58 -0
  58. data/docs/TrackedQueryMoversResponse.md +22 -0
  59. data/docs/TrackedQueryRankTrackingTimeSeries.md +20 -0
  60. data/docs/TrackedQueryUsageResource.md +1 -1
  61. data/lib/mencoro/api/account_api.rb +3 -3
  62. data/lib/mencoro/api/analytics_api.rb +103 -85
  63. data/lib/mencoro/api/billing_api.rb +3 -3
  64. data/lib/mencoro/api/captures_api.rb +2 -2
  65. data/lib/mencoro/api/clusters_api.rb +76 -1
  66. data/lib/mencoro/api/discovery_api.rb +3 -3
  67. data/lib/mencoro/api/invitations_api.rb +1 -1
  68. data/lib/mencoro/api/jobs_api.rb +3 -3
  69. data/lib/mencoro/api/members_api.rb +95 -1
  70. data/lib/mencoro/api/organization_operations_api.rb +1 -1
  71. data/lib/mencoro/api/organizations_api.rb +7 -7
  72. data/lib/mencoro/api/projects_api.rb +80 -5
  73. data/lib/mencoro/api/tracked_queries_api.rb +220 -8
  74. data/lib/mencoro/api_client.rb +2 -2
  75. data/lib/mencoro/api_error.rb +1 -1
  76. data/lib/mencoro/api_model_base.rb +1 -1
  77. data/lib/mencoro/configuration.rb +1 -1
  78. data/lib/mencoro/models/accepted_job_resource.rb +1 -1
  79. data/lib/mencoro/models/ai_response_report_resource.rb +1 -1
  80. data/lib/mencoro/models/ai_response_resource.rb +1 -1
  81. data/lib/mencoro/models/apply_clustering_job_outcome.rb +1 -1
  82. data/lib/mencoro/models/apply_clustering_job_outcome_clusters_inner.rb +1 -1
  83. data/lib/mencoro/models/apply_clustering_job_outcome_failed_inner.rb +1 -1
  84. data/lib/mencoro/models/apply_clustering_job_outcome_skipped_clusters_inner.rb +1 -1
  85. data/lib/mencoro/models/apply_clustering_job_outcome_successful_inner.rb +1 -1
  86. data/lib/mencoro/models/async_job_resource.rb +17 -7
  87. data/lib/mencoro/models/async_job_resource_error.rb +217 -0
  88. data/lib/mencoro/models/batch_change_tracked_query_check_frequency_request_data.rb +1 -1
  89. data/lib/mencoro/models/batch_change_tracked_query_passes_request_data.rb +1 -1
  90. data/lib/mencoro/models/batch_create_query_clusters_outcome.rb +1 -1
  91. data/lib/mencoro/models/batch_create_query_clusters_outcome_failed_inner.rb +1 -1
  92. data/lib/mencoro/models/batch_create_query_clusters_outcome_successful_inner.rb +1 -1
  93. data/lib/mencoro/models/batch_create_query_clusters_request_data.rb +1 -1
  94. data/lib/mencoro/models/batch_create_tracked_queries_request_data.rb +1 -1
  95. data/lib/mencoro/models/batch_create_tracked_queries_result_resource.rb +1 -1
  96. data/lib/mencoro/models/batch_create_tracked_queries_result_resource_failed_inner.rb +1 -1
  97. data/lib/mencoro/models/batch_create_tracked_queries_result_resource_successful_inner.rb +1 -1
  98. data/lib/mencoro/models/batch_force_check_tracked_queries200_response.rb +1 -1
  99. data/lib/mencoro/models/batch_force_check_tracked_queries200_response_failed_inner.rb +1 -1
  100. data/lib/mencoro/models/batch_pause_tracked_queries200_response.rb +1 -1
  101. data/lib/mencoro/models/batch_pause_tracked_queries200_response_failed_inner.rb +1 -1
  102. data/lib/mencoro/models/batch_pause_tracked_queries200_response_successful_inner.rb +1 -1
  103. data/lib/mencoro/models/batch_resume_tracked_queries200_response.rb +1 -1
  104. data/lib/mencoro/models/batch_targets_request_data.rb +1 -1
  105. data/lib/mencoro/models/batch_write_outcome.rb +1 -1
  106. data/lib/mencoro/models/batch_write_outcome_failed_inner.rb +1 -1
  107. data/lib/mencoro/models/brand_profile_resource.rb +1 -1
  108. data/lib/mencoro/models/bulk_add_clusters_to_tracked_queries200_response.rb +1 -1
  109. data/lib/mencoro/models/bulk_add_clusters_to_tracked_queries_request.rb +1 -1
  110. data/lib/mencoro/models/bulk_remove_clusters_from_tracked_queries200_response.rb +1 -1
  111. data/lib/mencoro/models/bulk_remove_clusters_from_tracked_queries_request.rb +1 -1
  112. data/lib/mencoro/models/change_member_role_request.rb +1 -1
  113. data/lib/mencoro/models/change_tracked_query_check_frequency_request_data.rb +1 -1
  114. data/lib/mencoro/models/change_tracked_query_passes_request_data.rb +1 -1
  115. data/lib/mencoro/models/citation_resource.rb +1 -1
  116. data/lib/mencoro/models/cited_source_row.rb +298 -0
  117. data/lib/mencoro/models/cited_sources_response.rb +192 -0
  118. data/lib/mencoro/models/cluster_breakdown_row.rb +580 -0
  119. data/lib/mencoro/models/cluster_membership_request_data.rb +1 -1
  120. data/lib/mencoro/models/competitor_co_occurrence_response.rb +166 -0
  121. data/lib/mencoro/models/competitor_co_occurrence_row.rb +318 -0
  122. data/lib/mencoro/models/competitor_resource.rb +1 -1
  123. data/lib/mencoro/models/competitor_share_of_voice.rb +174 -0
  124. data/lib/mencoro/models/create_competitor_request.rb +1 -1
  125. data/lib/mencoro/models/create_invitation200_response.rb +1 -1
  126. data/lib/mencoro/models/create_invitation201_response.rb +60 -2
  127. data/lib/mencoro/models/create_invitation_request.rb +15 -5
  128. data/lib/mencoro/models/create_invitation_request_project_access.rb +201 -0
  129. data/lib/mencoro/models/create_organization201_response.rb +1 -1
  130. data/lib/mencoro/models/create_organization_request.rb +1 -1
  131. data/lib/mencoro/models/create_project_request.rb +1 -1
  132. data/lib/mencoro/models/create_project_request_competitors_inner.rb +1 -1
  133. data/lib/mencoro/models/create_query_cluster409_response.rb +1 -1
  134. data/lib/mencoro/models/create_query_cluster_request.rb +1 -1
  135. data/lib/mencoro/models/delete_query_cluster200_response.rb +1 -1
  136. data/lib/mencoro/models/entitlements_resource.rb +1 -1
  137. data/lib/mencoro/models/get_available_filters200_response.rb +1 -1
  138. data/lib/mencoro/models/get_available_filters200_response_clusters_inner.rb +1 -1
  139. data/lib/mencoro/models/get_me_stats200_response.rb +1 -1
  140. data/lib/mencoro/models/get_me_stats200_response_organizations.rb +1 -1
  141. data/lib/mencoro/models/get_me_stats200_response_projects.rb +2 -2
  142. data/lib/mencoro/models/get_membership_stats200_response.rb +1 -1
  143. data/lib/mencoro/models/get_mention_samples400_response.rb +1 -1
  144. data/lib/mencoro/models/get_mention_samples400_response_details_value_inner.rb +1 -1
  145. data/lib/mencoro/models/get_metric_glossary200_response.rb +1 -1
  146. data/lib/mencoro/models/get_metric_glossary200_response_metrics_inner.rb +1 -1
  147. data/lib/mencoro/models/get_organization_overview200_response.rb +1 -1
  148. data/lib/mencoro/models/get_organization_overview200_response_aggregate.rb +2 -2
  149. data/lib/mencoro/models/get_organization_overview200_response_projects_inner.rb +34 -3
  150. data/lib/mencoro/models/get_organization_stats200_response.rb +1 -1
  151. data/lib/mencoro/models/get_organization_stats200_response_invitations.rb +4 -7
  152. data/lib/mencoro/models/get_organization_stats200_response_members.rb +4 -7
  153. data/lib/mencoro/models/get_organization_stats200_response_projects.rb +2 -2
  154. data/lib/mencoro/models/get_share_of_voice_formula200_response.rb +1 -1
  155. data/lib/mencoro/models/get_tracking_coverage200_response.rb +1 -1
  156. data/lib/mencoro/models/get_tracking_coverage200_response_sample_inner.rb +1 -1
  157. data/lib/mencoro/models/invitation_resource.rb +64 -6
  158. data/lib/mencoro/models/keyword_listing_resource.rb +40 -14
  159. data/lib/mencoro/models/keyword_listing_resource_carried_positions.rb +187 -0
  160. data/lib/mencoro/models/keyword_listing_resource_carried_positions_serp.rb +192 -0
  161. data/lib/mencoro/models/keyword_listing_resource_mention_type_counts.rb +1 -1
  162. data/lib/mencoro/models/list_ai_responses200_response.rb +1 -1
  163. data/lib/mencoro/models/list_competitors200_response.rb +1 -1
  164. data/lib/mencoro/models/list_invitations200_response.rb +1 -1
  165. data/lib/mencoro/models/list_keyword_listings200_response.rb +1 -1
  166. data/lib/mencoro/models/list_members200_response.rb +1 -1
  167. data/lib/mencoro/models/list_organizations200_response.rb +1 -1
  168. data/lib/mencoro/models/list_projects200_response.rb +2 -2
  169. data/lib/mencoro/models/list_query_clusters200_response.rb +1 -1
  170. data/lib/mencoro/models/list_search_snapshots200_response.rb +1 -1
  171. data/lib/mencoro/models/list_shopping_snapshots200_response.rb +1 -1
  172. data/lib/mencoro/models/me_resource.rb +1 -1
  173. data/lib/mencoro/models/member_resource.rb +63 -5
  174. data/lib/mencoro/models/mention_match_resource.rb +432 -0
  175. data/lib/mencoro/models/mention_sample_response.rb +450 -0
  176. data/lib/mencoro/models/mention_type_counts.rb +268 -0
  177. data/lib/mencoro/models/operation_effect.rb +1 -1
  178. data/lib/mencoro/models/organization_resource.rb +1 -1
  179. data/lib/mencoro/models/per_competitor_sentiment.rb +304 -0
  180. data/lib/mencoro/models/per_engine_sentiment.rb +278 -0
  181. data/lib/mencoro/models/per_entity_metrics.rb +218 -0
  182. data/lib/mencoro/models/position_distribution_bucket.rb +190 -0
  183. data/lib/mencoro/models/preview_organization_operation200_response.rb +1 -1
  184. data/lib/mencoro/models/preview_organization_operation200_response_organization.rb +1 -1
  185. data/lib/mencoro/models/preview_organization_operation_request.rb +3 -3
  186. data/lib/mencoro/models/project_detail_resource.rb +1 -1
  187. data/lib/mencoro/models/project_detail_resource_competitors_inner.rb +1 -1
  188. data/lib/mencoro/models/project_mention_mix_response.rb +222 -0
  189. data/lib/mencoro/models/project_mention_samples_response.rb +192 -0
  190. data/lib/mencoro/models/project_rank_tracking_cluster_breakdown.rb +176 -0
  191. data/lib/mencoro/models/project_rank_tracking_stats.rb +718 -0
  192. data/lib/mencoro/models/project_rank_tracking_time_series.rb +176 -0
  193. data/lib/mencoro/models/project_resource.rb +1 -1
  194. data/lib/mencoro/models/project_sentiment_breakdown.rb +194 -0
  195. data/lib/mencoro/models/projected_monthly_checks_resource.rb +3 -3
  196. data/lib/mencoro/models/query_cluster_resource.rb +1 -1
  197. data/lib/mencoro/models/report_ai_response_request.rb +1 -1
  198. data/lib/mencoro/models/search_result_resource.rb +1 -1
  199. data/lib/mencoro/models/search_snapshot_resource.rb +1 -1
  200. data/lib/mencoro/models/search_tracked_queries200_response.rb +1 -1
  201. data/lib/mencoro/models/search_tracked_query_mention_matches200_response.rb +158 -0
  202. data/lib/mencoro/models/search_tracked_query_serp_matches200_response.rb +158 -0
  203. data/lib/mencoro/models/serp_match_resource.rb +314 -0
  204. data/lib/mencoro/models/set_member_project_access_request.rb +200 -0
  205. data/lib/mencoro/models/shopping_offer_resource.rb +1 -1
  206. data/lib/mencoro/models/shopping_snapshot_resource.rb +1 -1
  207. data/lib/mencoro/models/start_brand_discovery_job_request.rb +1 -1
  208. data/lib/mencoro/models/start_brand_name_suggestion_job_request.rb +1 -1
  209. data/lib/mencoro/models/start_clustering_job_request_data.rb +1 -1
  210. data/lib/mencoro/models/start_keyword_discovery_job_request.rb +1 -1
  211. data/lib/mencoro/models/start_prompt_discovery_job_request.rb +1 -1
  212. data/lib/mencoro/models/submitted_checks_resource.rb +1 -1
  213. data/lib/mencoro/models/subscription_resource.rb +3 -3
  214. data/lib/mencoro/models/time_series_point.rb +218 -0
  215. data/lib/mencoro/models/tracked_query_count_resource.rb +3 -3
  216. data/lib/mencoro/models/tracked_query_detail_resource.rb +3 -3
  217. data/lib/mencoro/models/tracked_query_mover_row.rb +492 -0
  218. data/lib/mencoro/models/tracked_query_movers_response.rb +202 -0
  219. data/lib/mencoro/models/tracked_query_rank_tracking_time_series.rb +176 -0
  220. data/lib/mencoro/models/tracked_query_resource.rb +3 -3
  221. data/lib/mencoro/models/tracked_query_usage_resource.rb +2 -2
  222. data/lib/mencoro/models/update_organization_request.rb +1 -1
  223. data/lib/mencoro/models/update_project_brand_profile_request.rb +1 -1
  224. data/lib/mencoro/models/update_project_request.rb +1 -1
  225. data/lib/mencoro/version.rb +2 -2
  226. data/lib/mencoro.rb +32 -1
  227. data/mencoro.gemspec +2 -2
  228. data/spec/models/async_job_resource_error_spec.rb +46 -0
  229. data/spec/models/cited_source_row_spec.rb +78 -0
  230. data/spec/models/cited_sources_response_spec.rb +42 -0
  231. data/spec/models/cluster_breakdown_row_spec.rb +228 -0
  232. data/spec/models/competitor_co_occurrence_response_spec.rb +36 -0
  233. data/spec/models/competitor_co_occurrence_row_spec.rb +90 -0
  234. data/spec/models/competitor_share_of_voice_spec.rb +42 -0
  235. data/spec/models/create_invitation_request_project_access_spec.rb +46 -0
  236. data/spec/models/keyword_listing_resource_carried_positions_serp_spec.rb +42 -0
  237. data/spec/models/keyword_listing_resource_carried_positions_spec.rb +54 -0
  238. data/spec/models/mention_match_resource_spec.rb +114 -0
  239. data/spec/models/mention_sample_response_spec.rb +114 -0
  240. data/spec/models/mention_type_counts_spec.rb +60 -0
  241. data/spec/models/per_competitor_sentiment_spec.rb +72 -0
  242. data/spec/models/per_engine_sentiment_spec.rb +66 -0
  243. data/spec/models/per_entity_metrics_spec.rb +78 -0
  244. data/spec/models/position_distribution_bucket_spec.rb +42 -0
  245. data/spec/models/project_mention_mix_response_spec.rb +48 -0
  246. data/spec/models/project_mention_samples_response_spec.rb +42 -0
  247. data/spec/models/project_rank_tracking_cluster_breakdown_spec.rb +42 -0
  248. data/spec/models/project_rank_tracking_stats_spec.rb +270 -0
  249. data/spec/models/project_rank_tracking_time_series_spec.rb +42 -0
  250. data/spec/models/project_sentiment_breakdown_spec.rb +42 -0
  251. data/spec/models/search_tracked_query_mention_matches200_response_spec.rb +42 -0
  252. data/spec/models/search_tracked_query_serp_matches200_response_spec.rb +42 -0
  253. data/spec/models/serp_match_resource_spec.rb +72 -0
  254. data/spec/models/set_member_project_access_request_spec.rb +46 -0
  255. data/spec/models/time_series_point_spec.rb +48 -0
  256. data/spec/models/tracked_query_mover_row_spec.rb +156 -0
  257. data/spec/models/tracked_query_movers_response_spec.rb +48 -0
  258. data/spec/models/tracked_query_rank_tracking_time_series_spec.rb +42 -0
  259. data/spec/spec_helper.rb +1 -1
  260. metadata +235 -108
@@ -0,0 +1,492 @@
1
+ =begin
2
+ #Mencoro API
3
+
4
+ #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`. Every write operation requires an `Idempotency-Key` header: a retry carrying the same key and body within 30 days is answered from the stored result without running again; after 30 days the key is forgotten and a retry runs as a new operation.
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: support@mencoro.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.24.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Mencoro
17
+ class TrackedQueryMoverRow < ApiModelBase
18
+ attr_accessor :tracked_query_id
19
+
20
+ attr_accessor :query_text
21
+
22
+ attr_accessor :engine
23
+
24
+ attr_accessor :country
25
+
26
+ attr_accessor :avg_serp_position
27
+
28
+ attr_accessor :trend_serp
29
+
30
+ attr_accessor :avg_shopping_position
31
+
32
+ attr_accessor :trend_shopping
33
+
34
+ attr_accessor :avg_mention_position
35
+
36
+ attr_accessor :trend_mention
37
+
38
+ attr_accessor :avg_link_position
39
+
40
+ attr_accessor :trend_link
41
+
42
+ attr_accessor :share_of_voice
43
+
44
+ attr_accessor :trend_share_of_voice
45
+
46
+ attr_accessor :positivity_index
47
+
48
+ attr_accessor :trend_positivity
49
+
50
+ attr_accessor :sentiment_positive
51
+
52
+ attr_accessor :sentiment_neutral
53
+
54
+ attr_accessor :sentiment_negative
55
+
56
+ attr_accessor :mention_count
57
+
58
+ attr_accessor :mention_type_counts
59
+
60
+ # Attribute mapping from ruby-style variable name to JSON key.
61
+ def self.attribute_map
62
+ {
63
+ :'tracked_query_id' => :'trackedQueryId',
64
+ :'query_text' => :'queryText',
65
+ :'engine' => :'engine',
66
+ :'country' => :'country',
67
+ :'avg_serp_position' => :'avgSerpPosition',
68
+ :'trend_serp' => :'trendSerp',
69
+ :'avg_shopping_position' => :'avgShoppingPosition',
70
+ :'trend_shopping' => :'trendShopping',
71
+ :'avg_mention_position' => :'avgMentionPosition',
72
+ :'trend_mention' => :'trendMention',
73
+ :'avg_link_position' => :'avgLinkPosition',
74
+ :'trend_link' => :'trendLink',
75
+ :'share_of_voice' => :'shareOfVoice',
76
+ :'trend_share_of_voice' => :'trendShareOfVoice',
77
+ :'positivity_index' => :'positivityIndex',
78
+ :'trend_positivity' => :'trendPositivity',
79
+ :'sentiment_positive' => :'sentimentPositive',
80
+ :'sentiment_neutral' => :'sentimentNeutral',
81
+ :'sentiment_negative' => :'sentimentNegative',
82
+ :'mention_count' => :'mentionCount',
83
+ :'mention_type_counts' => :'mentionTypeCounts'
84
+ }
85
+ end
86
+
87
+ # Returns attribute mapping this model knows about
88
+ def self.acceptable_attribute_map
89
+ attribute_map
90
+ end
91
+
92
+ # Returns all the JSON keys this model knows about
93
+ def self.acceptable_attributes
94
+ acceptable_attribute_map.values
95
+ end
96
+
97
+ # Attribute type mapping.
98
+ def self.openapi_types
99
+ {
100
+ :'tracked_query_id' => :'String',
101
+ :'query_text' => :'String',
102
+ :'engine' => :'String',
103
+ :'country' => :'String',
104
+ :'avg_serp_position' => :'Float',
105
+ :'trend_serp' => :'Float',
106
+ :'avg_shopping_position' => :'Float',
107
+ :'trend_shopping' => :'Float',
108
+ :'avg_mention_position' => :'Float',
109
+ :'trend_mention' => :'Float',
110
+ :'avg_link_position' => :'Float',
111
+ :'trend_link' => :'Float',
112
+ :'share_of_voice' => :'Float',
113
+ :'trend_share_of_voice' => :'Float',
114
+ :'positivity_index' => :'Integer',
115
+ :'trend_positivity' => :'Integer',
116
+ :'sentiment_positive' => :'Integer',
117
+ :'sentiment_neutral' => :'Integer',
118
+ :'sentiment_negative' => :'Integer',
119
+ :'mention_count' => :'Integer',
120
+ :'mention_type_counts' => :'MentionTypeCounts'
121
+ }
122
+ end
123
+
124
+ # List of attributes with nullable: true
125
+ def self.openapi_nullable
126
+ Set.new([
127
+ :'avg_serp_position',
128
+ :'trend_serp',
129
+ :'avg_shopping_position',
130
+ :'trend_shopping',
131
+ :'avg_mention_position',
132
+ :'trend_mention',
133
+ :'avg_link_position',
134
+ :'trend_link',
135
+ :'share_of_voice',
136
+ :'trend_share_of_voice',
137
+ :'positivity_index',
138
+ :'trend_positivity',
139
+ ])
140
+ end
141
+
142
+ # Initializes the object
143
+ # @param [Hash] attributes Model attributes in the form of hash
144
+ def initialize(attributes = {})
145
+ if (!attributes.is_a?(Hash))
146
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Mencoro::TrackedQueryMoverRow` initialize method"
147
+ end
148
+
149
+ # check to see if the attribute exists and convert string to symbol for hash key
150
+ acceptable_attribute_map = self.class.acceptable_attribute_map
151
+ attributes = attributes.each_with_object({}) { |(k, v), h|
152
+ if (!acceptable_attribute_map.key?(k.to_sym))
153
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Mencoro::TrackedQueryMoverRow`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
154
+ end
155
+ h[k.to_sym] = v
156
+ }
157
+
158
+ if attributes.key?(:'tracked_query_id')
159
+ self.tracked_query_id = attributes[:'tracked_query_id']
160
+ else
161
+ self.tracked_query_id = nil
162
+ end
163
+
164
+ if attributes.key?(:'query_text')
165
+ self.query_text = attributes[:'query_text']
166
+ else
167
+ self.query_text = nil
168
+ end
169
+
170
+ if attributes.key?(:'engine')
171
+ self.engine = attributes[:'engine']
172
+ else
173
+ self.engine = nil
174
+ end
175
+
176
+ if attributes.key?(:'country')
177
+ self.country = attributes[:'country']
178
+ else
179
+ self.country = nil
180
+ end
181
+
182
+ if attributes.key?(:'avg_serp_position')
183
+ self.avg_serp_position = attributes[:'avg_serp_position']
184
+ end
185
+
186
+ if attributes.key?(:'trend_serp')
187
+ self.trend_serp = attributes[:'trend_serp']
188
+ end
189
+
190
+ if attributes.key?(:'avg_shopping_position')
191
+ self.avg_shopping_position = attributes[:'avg_shopping_position']
192
+ end
193
+
194
+ if attributes.key?(:'trend_shopping')
195
+ self.trend_shopping = attributes[:'trend_shopping']
196
+ end
197
+
198
+ if attributes.key?(:'avg_mention_position')
199
+ self.avg_mention_position = attributes[:'avg_mention_position']
200
+ end
201
+
202
+ if attributes.key?(:'trend_mention')
203
+ self.trend_mention = attributes[:'trend_mention']
204
+ end
205
+
206
+ if attributes.key?(:'avg_link_position')
207
+ self.avg_link_position = attributes[:'avg_link_position']
208
+ end
209
+
210
+ if attributes.key?(:'trend_link')
211
+ self.trend_link = attributes[:'trend_link']
212
+ end
213
+
214
+ if attributes.key?(:'share_of_voice')
215
+ self.share_of_voice = attributes[:'share_of_voice']
216
+ end
217
+
218
+ if attributes.key?(:'trend_share_of_voice')
219
+ self.trend_share_of_voice = attributes[:'trend_share_of_voice']
220
+ end
221
+
222
+ if attributes.key?(:'positivity_index')
223
+ self.positivity_index = attributes[:'positivity_index']
224
+ end
225
+
226
+ if attributes.key?(:'trend_positivity')
227
+ self.trend_positivity = attributes[:'trend_positivity']
228
+ end
229
+
230
+ if attributes.key?(:'sentiment_positive')
231
+ self.sentiment_positive = attributes[:'sentiment_positive']
232
+ else
233
+ self.sentiment_positive = nil
234
+ end
235
+
236
+ if attributes.key?(:'sentiment_neutral')
237
+ self.sentiment_neutral = attributes[:'sentiment_neutral']
238
+ else
239
+ self.sentiment_neutral = nil
240
+ end
241
+
242
+ if attributes.key?(:'sentiment_negative')
243
+ self.sentiment_negative = attributes[:'sentiment_negative']
244
+ else
245
+ self.sentiment_negative = nil
246
+ end
247
+
248
+ if attributes.key?(:'mention_count')
249
+ self.mention_count = attributes[:'mention_count']
250
+ else
251
+ self.mention_count = nil
252
+ end
253
+
254
+ if attributes.key?(:'mention_type_counts')
255
+ self.mention_type_counts = attributes[:'mention_type_counts']
256
+ else
257
+ self.mention_type_counts = nil
258
+ end
259
+ end
260
+
261
+ # Show invalid properties with the reasons. Usually used together with valid?
262
+ # @return Array for valid properties with the reasons
263
+ def list_invalid_properties
264
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
265
+ invalid_properties = Array.new
266
+ if @tracked_query_id.nil?
267
+ invalid_properties.push('invalid value for "tracked_query_id", tracked_query_id cannot be nil.')
268
+ end
269
+
270
+ if @query_text.nil?
271
+ invalid_properties.push('invalid value for "query_text", query_text cannot be nil.')
272
+ end
273
+
274
+ if @engine.nil?
275
+ invalid_properties.push('invalid value for "engine", engine cannot be nil.')
276
+ end
277
+
278
+ if @country.nil?
279
+ invalid_properties.push('invalid value for "country", country cannot be nil.')
280
+ end
281
+
282
+ if @sentiment_positive.nil?
283
+ invalid_properties.push('invalid value for "sentiment_positive", sentiment_positive cannot be nil.')
284
+ end
285
+
286
+ if @sentiment_neutral.nil?
287
+ invalid_properties.push('invalid value for "sentiment_neutral", sentiment_neutral cannot be nil.')
288
+ end
289
+
290
+ if @sentiment_negative.nil?
291
+ invalid_properties.push('invalid value for "sentiment_negative", sentiment_negative cannot be nil.')
292
+ end
293
+
294
+ if @mention_count.nil?
295
+ invalid_properties.push('invalid value for "mention_count", mention_count cannot be nil.')
296
+ end
297
+
298
+ if @mention_type_counts.nil?
299
+ invalid_properties.push('invalid value for "mention_type_counts", mention_type_counts cannot be nil.')
300
+ end
301
+
302
+ invalid_properties
303
+ end
304
+
305
+ # Check to see if the all the properties in the model are valid
306
+ # @return true if the model is valid
307
+ def valid?
308
+ warn '[DEPRECATED] the `valid?` method is obsolete'
309
+ return false if @tracked_query_id.nil?
310
+ return false if @query_text.nil?
311
+ return false if @engine.nil?
312
+ return false if @country.nil?
313
+ return false if @sentiment_positive.nil?
314
+ return false if @sentiment_neutral.nil?
315
+ return false if @sentiment_negative.nil?
316
+ return false if @mention_count.nil?
317
+ return false if @mention_type_counts.nil?
318
+ true
319
+ end
320
+
321
+ # Custom attribute writer method with validation
322
+ # @param [Object] tracked_query_id Value to be assigned
323
+ def tracked_query_id=(tracked_query_id)
324
+ if tracked_query_id.nil?
325
+ fail ArgumentError, 'tracked_query_id cannot be nil'
326
+ end
327
+
328
+ @tracked_query_id = tracked_query_id
329
+ end
330
+
331
+ # Custom attribute writer method with validation
332
+ # @param [Object] query_text Value to be assigned
333
+ def query_text=(query_text)
334
+ if query_text.nil?
335
+ fail ArgumentError, 'query_text cannot be nil'
336
+ end
337
+
338
+ @query_text = query_text
339
+ end
340
+
341
+ # Custom attribute writer method with validation
342
+ # @param [Object] engine Value to be assigned
343
+ def engine=(engine)
344
+ if engine.nil?
345
+ fail ArgumentError, 'engine cannot be nil'
346
+ end
347
+
348
+ @engine = engine
349
+ end
350
+
351
+ # Custom attribute writer method with validation
352
+ # @param [Object] country Value to be assigned
353
+ def country=(country)
354
+ if country.nil?
355
+ fail ArgumentError, 'country cannot be nil'
356
+ end
357
+
358
+ @country = country
359
+ end
360
+
361
+ # Custom attribute writer method with validation
362
+ # @param [Object] sentiment_positive Value to be assigned
363
+ def sentiment_positive=(sentiment_positive)
364
+ if sentiment_positive.nil?
365
+ fail ArgumentError, 'sentiment_positive cannot be nil'
366
+ end
367
+
368
+ @sentiment_positive = sentiment_positive
369
+ end
370
+
371
+ # Custom attribute writer method with validation
372
+ # @param [Object] sentiment_neutral Value to be assigned
373
+ def sentiment_neutral=(sentiment_neutral)
374
+ if sentiment_neutral.nil?
375
+ fail ArgumentError, 'sentiment_neutral cannot be nil'
376
+ end
377
+
378
+ @sentiment_neutral = sentiment_neutral
379
+ end
380
+
381
+ # Custom attribute writer method with validation
382
+ # @param [Object] sentiment_negative Value to be assigned
383
+ def sentiment_negative=(sentiment_negative)
384
+ if sentiment_negative.nil?
385
+ fail ArgumentError, 'sentiment_negative cannot be nil'
386
+ end
387
+
388
+ @sentiment_negative = sentiment_negative
389
+ end
390
+
391
+ # Custom attribute writer method with validation
392
+ # @param [Object] mention_count Value to be assigned
393
+ def mention_count=(mention_count)
394
+ if mention_count.nil?
395
+ fail ArgumentError, 'mention_count cannot be nil'
396
+ end
397
+
398
+ @mention_count = mention_count
399
+ end
400
+
401
+ # Custom attribute writer method with validation
402
+ # @param [Object] mention_type_counts Value to be assigned
403
+ def mention_type_counts=(mention_type_counts)
404
+ if mention_type_counts.nil?
405
+ fail ArgumentError, 'mention_type_counts cannot be nil'
406
+ end
407
+
408
+ @mention_type_counts = mention_type_counts
409
+ end
410
+
411
+ # Checks equality by comparing each attribute.
412
+ # @param [Object] Object to be compared
413
+ def ==(o)
414
+ return true if self.equal?(o)
415
+ self.class == o.class &&
416
+ tracked_query_id == o.tracked_query_id &&
417
+ query_text == o.query_text &&
418
+ engine == o.engine &&
419
+ country == o.country &&
420
+ avg_serp_position == o.avg_serp_position &&
421
+ trend_serp == o.trend_serp &&
422
+ avg_shopping_position == o.avg_shopping_position &&
423
+ trend_shopping == o.trend_shopping &&
424
+ avg_mention_position == o.avg_mention_position &&
425
+ trend_mention == o.trend_mention &&
426
+ avg_link_position == o.avg_link_position &&
427
+ trend_link == o.trend_link &&
428
+ share_of_voice == o.share_of_voice &&
429
+ trend_share_of_voice == o.trend_share_of_voice &&
430
+ positivity_index == o.positivity_index &&
431
+ trend_positivity == o.trend_positivity &&
432
+ sentiment_positive == o.sentiment_positive &&
433
+ sentiment_neutral == o.sentiment_neutral &&
434
+ sentiment_negative == o.sentiment_negative &&
435
+ mention_count == o.mention_count &&
436
+ mention_type_counts == o.mention_type_counts
437
+ end
438
+
439
+ # @see the `==` method
440
+ # @param [Object] Object to be compared
441
+ def eql?(o)
442
+ self == o
443
+ end
444
+
445
+ # Calculates hash code according to all attributes.
446
+ # @return [Integer] Hash code
447
+ def hash
448
+ [tracked_query_id, query_text, engine, country, avg_serp_position, trend_serp, avg_shopping_position, trend_shopping, avg_mention_position, trend_mention, avg_link_position, trend_link, share_of_voice, trend_share_of_voice, positivity_index, trend_positivity, sentiment_positive, sentiment_neutral, sentiment_negative, mention_count, mention_type_counts].hash
449
+ end
450
+
451
+ # Builds the object from hash
452
+ # @param [Hash] attributes Model attributes in the form of hash
453
+ # @return [Object] Returns the model itself
454
+ def self.build_from_hash(attributes)
455
+ return nil unless attributes.is_a?(Hash)
456
+ attributes = attributes.transform_keys(&:to_sym)
457
+ transformed_hash = {}
458
+ openapi_types.each_pair do |key, type|
459
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
460
+ transformed_hash["#{key}"] = nil
461
+ elsif type =~ /\AArray<(.*)>/i
462
+ # check to ensure the input is an array given that the attribute
463
+ # is documented as an array but the input is not
464
+ if attributes[attribute_map[key]].is_a?(Array)
465
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
466
+ end
467
+ elsif !attributes[attribute_map[key]].nil?
468
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
469
+ end
470
+ end
471
+ new(transformed_hash)
472
+ end
473
+
474
+ # Returns the object in the form of hash
475
+ # @return [Hash] Returns the object in the form of hash
476
+ def to_hash
477
+ hash = {}
478
+ self.class.attribute_map.each_pair do |attr, param|
479
+ value = self.send(attr)
480
+ if value.nil?
481
+ is_nullable = self.class.openapi_nullable.include?(attr)
482
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
483
+ end
484
+
485
+ hash[param] = _to_hash(value)
486
+ end
487
+ hash
488
+ end
489
+
490
+ end
491
+
492
+ end
@@ -0,0 +1,202 @@
1
+ =begin
2
+ #Mencoro API
3
+
4
+ #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`. Every write operation requires an `Idempotency-Key` header: a retry carrying the same key and body within 30 days is answered from the stored result without running again; after 30 days the key is forgotten and a retry runs as a new operation.
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: support@mencoro.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.24.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Mencoro
17
+ class TrackedQueryMoversResponse < ApiModelBase
18
+ attr_accessor :rows
19
+
20
+ attr_accessor :total
21
+
22
+ attr_accessor :data_dirty_since
23
+
24
+ # Attribute mapping from ruby-style variable name to JSON key.
25
+ def self.attribute_map
26
+ {
27
+ :'rows' => :'rows',
28
+ :'total' => :'total',
29
+ :'data_dirty_since' => :'dataDirtySince'
30
+ }
31
+ end
32
+
33
+ # Returns attribute mapping this model knows about
34
+ def self.acceptable_attribute_map
35
+ attribute_map
36
+ end
37
+
38
+ # Returns all the JSON keys this model knows about
39
+ def self.acceptable_attributes
40
+ acceptable_attribute_map.values
41
+ end
42
+
43
+ # Attribute type mapping.
44
+ def self.openapi_types
45
+ {
46
+ :'rows' => :'Array<TrackedQueryMoverRow>',
47
+ :'total' => :'Integer',
48
+ :'data_dirty_since' => :'String'
49
+ }
50
+ end
51
+
52
+ # List of attributes with nullable: true
53
+ def self.openapi_nullable
54
+ Set.new([
55
+ :'data_dirty_since'
56
+ ])
57
+ end
58
+
59
+ # Initializes the object
60
+ # @param [Hash] attributes Model attributes in the form of hash
61
+ def initialize(attributes = {})
62
+ if (!attributes.is_a?(Hash))
63
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Mencoro::TrackedQueryMoversResponse` initialize method"
64
+ end
65
+
66
+ # check to see if the attribute exists and convert string to symbol for hash key
67
+ acceptable_attribute_map = self.class.acceptable_attribute_map
68
+ attributes = attributes.each_with_object({}) { |(k, v), h|
69
+ if (!acceptable_attribute_map.key?(k.to_sym))
70
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Mencoro::TrackedQueryMoversResponse`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
71
+ end
72
+ h[k.to_sym] = v
73
+ }
74
+
75
+ if attributes.key?(:'rows')
76
+ if (value = attributes[:'rows']).is_a?(Array)
77
+ self.rows = value
78
+ end
79
+ else
80
+ self.rows = nil
81
+ end
82
+
83
+ if attributes.key?(:'total')
84
+ self.total = attributes[:'total']
85
+ else
86
+ self.total = nil
87
+ end
88
+
89
+ if attributes.key?(:'data_dirty_since')
90
+ self.data_dirty_since = attributes[:'data_dirty_since']
91
+ end
92
+ end
93
+
94
+ # Show invalid properties with the reasons. Usually used together with valid?
95
+ # @return Array for valid properties with the reasons
96
+ def list_invalid_properties
97
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
98
+ invalid_properties = Array.new
99
+ if @rows.nil?
100
+ invalid_properties.push('invalid value for "rows", rows cannot be nil.')
101
+ end
102
+
103
+ if @total.nil?
104
+ invalid_properties.push('invalid value for "total", total cannot be nil.')
105
+ end
106
+
107
+ invalid_properties
108
+ end
109
+
110
+ # Check to see if the all the properties in the model are valid
111
+ # @return true if the model is valid
112
+ def valid?
113
+ warn '[DEPRECATED] the `valid?` method is obsolete'
114
+ return false if @rows.nil?
115
+ return false if @total.nil?
116
+ true
117
+ end
118
+
119
+ # Custom attribute writer method with validation
120
+ # @param [Object] rows Value to be assigned
121
+ def rows=(rows)
122
+ if rows.nil?
123
+ fail ArgumentError, 'rows cannot be nil'
124
+ end
125
+
126
+ @rows = rows
127
+ end
128
+
129
+ # Custom attribute writer method with validation
130
+ # @param [Object] total Value to be assigned
131
+ def total=(total)
132
+ if total.nil?
133
+ fail ArgumentError, 'total cannot be nil'
134
+ end
135
+
136
+ @total = total
137
+ end
138
+
139
+ # Checks equality by comparing each attribute.
140
+ # @param [Object] Object to be compared
141
+ def ==(o)
142
+ return true if self.equal?(o)
143
+ self.class == o.class &&
144
+ rows == o.rows &&
145
+ total == o.total &&
146
+ data_dirty_since == o.data_dirty_since
147
+ end
148
+
149
+ # @see the `==` method
150
+ # @param [Object] Object to be compared
151
+ def eql?(o)
152
+ self == o
153
+ end
154
+
155
+ # Calculates hash code according to all attributes.
156
+ # @return [Integer] Hash code
157
+ def hash
158
+ [rows, total, data_dirty_since].hash
159
+ end
160
+
161
+ # Builds the object from hash
162
+ # @param [Hash] attributes Model attributes in the form of hash
163
+ # @return [Object] Returns the model itself
164
+ def self.build_from_hash(attributes)
165
+ return nil unless attributes.is_a?(Hash)
166
+ attributes = attributes.transform_keys(&:to_sym)
167
+ transformed_hash = {}
168
+ openapi_types.each_pair do |key, type|
169
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
170
+ transformed_hash["#{key}"] = nil
171
+ elsif type =~ /\AArray<(.*)>/i
172
+ # check to ensure the input is an array given that the attribute
173
+ # is documented as an array but the input is not
174
+ if attributes[attribute_map[key]].is_a?(Array)
175
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
176
+ end
177
+ elsif !attributes[attribute_map[key]].nil?
178
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
179
+ end
180
+ end
181
+ new(transformed_hash)
182
+ end
183
+
184
+ # Returns the object in the form of hash
185
+ # @return [Hash] Returns the object in the form of hash
186
+ def to_hash
187
+ hash = {}
188
+ self.class.attribute_map.each_pair do |attr, param|
189
+ value = self.send(attr)
190
+ if value.nil?
191
+ is_nullable = self.class.openapi_nullable.include?(attr)
192
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
193
+ end
194
+
195
+ hash[param] = _to_hash(value)
196
+ end
197
+ hash
198
+ end
199
+
200
+ end
201
+
202
+ end